Fix principles serialization in YAML→XML builder when list items are objects; escape principles in agent-party generator (#713)
This commit is contained in:
parent
940cc15751
commit
3aabf94905
|
|
@ -50,7 +50,7 @@ const AgentPartyGenerator = {
|
|||
<role>${this.escapeXml(agent.role || '')}</role>
|
||||
<identity>${this.escapeXml(agent.identity || '')}</identity>
|
||||
<communication_style>${this.escapeXml(agent.communicationStyle || '')}</communication_style>
|
||||
<principles>${agent.principles || ''}</principles>
|
||||
<principles>${this.escapeXml(agent.principles || '')}</principles>
|
||||
</persona>
|
||||
</agent>\n`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,13 +234,31 @@ class YamlXmlBuilder {
|
|||
}
|
||||
|
||||
if (persona.principles) {
|
||||
// Principles can be array or string
|
||||
let principlesText;
|
||||
if (Array.isArray(persona.principles)) {
|
||||
principlesText = persona.principles.join(' ');
|
||||
} else {
|
||||
principlesText = persona.principles;
|
||||
// Principles can be array, object, or string
|
||||
let principlesText = '';
|
||||
|
||||
const stringifyEntry = (entry) => {
|
||||
if (entry == null) return '';
|
||||
if (typeof entry === 'string') return entry;
|
||||
if (Array.isArray(entry)) return entry.map(stringifyEntry).filter(Boolean).join(' ');
|
||||
if (typeof entry === 'object') {
|
||||
const pairs = Object.entries(entry).map(([k, v]) => {
|
||||
const vStr = Array.isArray(v) ? v.map(String).join(' ') : String(v ?? '');
|
||||
return `${k}: ${vStr}`;
|
||||
});
|
||||
return pairs.join(' ');
|
||||
}
|
||||
return String(entry);
|
||||
};
|
||||
|
||||
if (Array.isArray(persona.principles)) {
|
||||
principlesText = persona.principles.map(stringifyEntry).filter(Boolean).join(' ');
|
||||
} else if (typeof persona.principles === 'object') {
|
||||
principlesText = stringifyEntry(persona.principles);
|
||||
} else {
|
||||
principlesText = String(persona.principles);
|
||||
}
|
||||
|
||||
xml += ` <principles>${this.escapeXml(principlesText)}</principles>\n`;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue