Skip to content

Commit 3aabf94

Browse files
committed
Fix principles serialization in YAML→XML builder when list items are objects; escape principles in agent-party generator (#713)
1 parent 940cc15 commit 3aabf94

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

tools/cli/lib/agent-party-generator.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const AgentPartyGenerator = {
5050
<role>${this.escapeXml(agent.role || '')}</role>
5151
<identity>${this.escapeXml(agent.identity || '')}</identity>
5252
<communication_style>${this.escapeXml(agent.communicationStyle || '')}</communication_style>
53-
<principles>${agent.principles || ''}</principles>
53+
<principles>${this.escapeXml(agent.principles || '')}</principles>
5454
</persona>
5555
</agent>\n`;
5656
}

tools/cli/lib/yaml-xml-builder.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,31 @@ class YamlXmlBuilder {
234234
}
235235

236236
if (persona.principles) {
237-
// Principles can be array or string
238-
let principlesText;
237+
// Principles can be array, object, or string
238+
let principlesText = '';
239+
240+
const stringifyEntry = (entry) => {
241+
if (entry == null) return '';
242+
if (typeof entry === 'string') return entry;
243+
if (Array.isArray(entry)) return entry.map(stringifyEntry).filter(Boolean).join(' ');
244+
if (typeof entry === 'object') {
245+
const pairs = Object.entries(entry).map(([k, v]) => {
246+
const vStr = Array.isArray(v) ? v.map(String).join(' ') : String(v ?? '');
247+
return `${k}: ${vStr}`;
248+
});
249+
return pairs.join(' ');
250+
}
251+
return String(entry);
252+
};
253+
239254
if (Array.isArray(persona.principles)) {
240-
principlesText = persona.principles.join(' ');
255+
principlesText = persona.principles.map(stringifyEntry).filter(Boolean).join(' ');
256+
} else if (typeof persona.principles === 'object') {
257+
principlesText = stringifyEntry(persona.principles);
241258
} else {
242-
principlesText = persona.principles;
259+
principlesText = String(persona.principles);
243260
}
261+
244262
xml += ` <principles>${this.escapeXml(principlesText)}</principles>\n`;
245263
}
246264

0 commit comments

Comments
 (0)