diff --git a/test/fixtures/agent-schema/invalid/persona/string-principles.agent.yaml b/test/fixtures/agent-schema/invalid/persona/string-principles.agent.yaml new file mode 100644 index 000000000..e03fb3cd5 --- /dev/null +++ b/test/fixtures/agent-schema/invalid/persona/string-principles.agent.yaml @@ -0,0 +1,26 @@ +# Test: Principles as block scalar string instead of array +# Expected: FAIL +# Error path: agent.persona.principles +# Error expected: array +# Error received: string + +agent: + metadata: + id: string-principles + name: String Principles + title: String Principles + icon: ❌ + hasSidecar: false + + persona: + role: Test agent + identity: Test identity + communication_style: Test style + principles: | + - This is a string, not an array + - Each line is part of one string + + menu: + - trigger: help + description: Show help + action: display_help diff --git a/tools/schema/agent.js b/tools/schema/agent.js index b6a36a985..c373286db 100644 --- a/tools/schema/agent.js +++ b/tools/schema/agent.js @@ -240,12 +240,9 @@ function buildPersonaSchema() { role: createNonEmptyString('agent.persona.role'), identity: createNonEmptyString('agent.persona.identity'), communication_style: createNonEmptyString('agent.persona.communication_style'), - principles: z.union([ - createNonEmptyString('agent.persona.principles'), - z - .array(createNonEmptyString('agent.persona.principles[]')) - .min(1, { message: 'agent.persona.principles must include at least one entry' }), - ]), + principles: z + .array(createNonEmptyString('agent.persona.principles[]')) + .min(1, { message: 'agent.persona.principles must include at least one entry' }), }) .strict(); }