1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// agent.ts
import { defineAgent } from '@kindgi/sdk/define'
export const triage = defineAgent({
id: 'claims-triage',
guardrails: [
'must-cite',
'no-delete-claim',
],
needs: ['structured_output'],
}) // guardrails/must-cite.ts
import { defineGuardrail } from '@kindgi/sdk/define'
import { z } from 'zod'
export default defineGuardrail({
id: 'must-cite',
kind: 'zero-llm',
configSchema: z.object({
min: z.number().default(1),
}),
evaluate: async ({ min }, trace) => {
const cites = trace.output.citations ?? []
return cites.length >= min
? { passed: true }
: { passed: false, reason: `${cites.length} < ${min}` }
},
action: { 'on-violation': 'halt' },
})