fix(canvas): toYaml always emits tools: [] and serializes nested lists
Two bugs in yaml-utils.ts toYaml():
1. tools: [] was only emitted when config.tools.length > 0,
but the test asserts it's always present. Add blank-line
separator + unconditional list("tools", ...) so MINIMAL_CONFIG
with tools: [] renders correctly.
2. Nested list values (e.g. runtime_config.required_env: [KEY])
were serialized as " required_env: KEY" (stringification of the
array) instead of a YAML list block. Fix obj() to detect
Array.isArray(sv) and emit a list block with 4-space indent.
Closes #269.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
97fcb32840
commit
854803b3ee
@ -100,7 +100,14 @@ export function toYaml(config: ConfigData): string {
|
|||||||
if (!o) return;
|
if (!o) return;
|
||||||
lines.push(`${k}:`);
|
lines.push(`${k}:`);
|
||||||
Object.entries(o).forEach(([sk, sv]) => {
|
Object.entries(o).forEach(([sk, sv]) => {
|
||||||
if (sv !== undefined && sv !== null && sv !== "") lines.push(` ${sk}: ${sv}`);
|
if (sv === undefined || sv === null || sv === "") return;
|
||||||
|
if (Array.isArray(sv)) {
|
||||||
|
// Nested list block: e.g. required_env: [KEY, SECRET]
|
||||||
|
lines.push(` ${sk}:`);
|
||||||
|
sv.forEach((v) => lines.push(` - ${v}`));
|
||||||
|
} else {
|
||||||
|
lines.push(` ${sk}: ${sv}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -121,7 +128,7 @@ export function toYaml(config: ConfigData): string {
|
|||||||
if (config.task_budget && config.task_budget > 0) { simple("task_budget", config.task_budget); }
|
if (config.task_budget && config.task_budget > 0) { simple("task_budget", config.task_budget); }
|
||||||
if (config.prompt_files?.length) { lines.push(""); list("prompt_files", config.prompt_files); }
|
if (config.prompt_files?.length) { lines.push(""); list("prompt_files", config.prompt_files); }
|
||||||
lines.push(""); list("skills", config.skills);
|
lines.push(""); list("skills", config.skills);
|
||||||
if (config.tools?.length) { list("tools", config.tools); }
|
lines.push(""); list("tools", config.tools);
|
||||||
lines.push(""); obj("a2a", config.a2a as unknown as Record<string, unknown>);
|
lines.push(""); obj("a2a", config.a2a as unknown as Record<string, unknown>);
|
||||||
lines.push(""); obj("delegation", config.delegation as unknown as Record<string, unknown>);
|
lines.push(""); obj("delegation", config.delegation as unknown as Record<string, unknown>);
|
||||||
if (config.sandbox?.backend) { lines.push(""); obj("sandbox", config.sandbox as unknown as Record<string, unknown>); }
|
if (config.sandbox?.backend) { lines.push(""); obj("sandbox", config.sandbox as unknown as Record<string, unknown>); }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user