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>
|
<role>${this.escapeXml(agent.role || '')}</role>
|
||||||
<identity>${this.escapeXml(agent.identity || '')}</identity>
|
<identity>${this.escapeXml(agent.identity || '')}</identity>
|
||||||
<communication_style>${this.escapeXml(agent.communicationStyle || '')}</communication_style>
|
<communication_style>${this.escapeXml(agent.communicationStyle || '')}</communication_style>
|
||||||
<principles>${agent.principles || ''}</principles>
|
<principles>${this.escapeXml(agent.principles || '')}</principles>
|
||||||
</persona>
|
</persona>
|
||||||
</agent>\n`;
|
</agent>\n`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -234,13 +234,31 @@ class YamlXmlBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (persona.principles) {
|
if (persona.principles) {
|
||||||
// Principles can be array or string
|
// Principles can be array, object, or string
|
||||||
let principlesText;
|
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)) {
|
if (Array.isArray(persona.principles)) {
|
||||||
principlesText = persona.principles.join(' ');
|
principlesText = persona.principles.map(stringifyEntry).filter(Boolean).join(' ');
|
||||||
|
} else if (typeof persona.principles === 'object') {
|
||||||
|
principlesText = stringifyEntry(persona.principles);
|
||||||
} else {
|
} else {
|
||||||
principlesText = persona.principles;
|
principlesText = String(persona.principles);
|
||||||
}
|
}
|
||||||
|
|
||||||
xml += ` <principles>${this.escapeXml(principlesText)}</principles>\n`;
|
xml += ` <principles>${this.escapeXml(principlesText)}</principles>\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue