File size: 1,449 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import { z } from 'zod';
import { epochMsSchema, isoDateTimeSchema } from './base';
export const agentStatusSchema = z.enum(['idle', 'running', 'interrupted', 'completed', 'failed']);
export type AgentStatus = z.infer<typeof agentStatusSchema>;
export const agentStateOriginSchema = z.discriminatedUnion('kind', [
z.object({ kind: z.literal('btw') }),
z.object({ kind: z.literal('main') }),
z.object({
kind: z.literal('tool-swarm'),
tool_call_id: z.string().min(1),
swarm_index: z.number().int().nonnegative(),
parent_agent_id: z.string().min(1),
}),
z.object({
kind: z.literal('tool-agent'),
tool_call_id: z.string().min(1),
parent_agent_id: z.string().min(1),
}),
]);
export type AgentStateOrigin = z.infer<typeof agentStateOriginSchema>;
export const agentStateTurnSchema = z.object({
status: z.enum(['thinking', 'retrying', 'acting', 'aborting']),
});
export type AgentStateTurn = z.infer<typeof agentStateTurnSchema>;
export const agentStateMessageSchema = z.object({
type: z.literal('agent.state'),
session_id: z.string().min(1),
agent_id: z.string().min(1),
profile: z.object({ kind: z.string() }),
timestamp: epochMsSchema,
origin: agentStateOriginSchema,
created_at: isoDateTimeSchema,
ended_at: isoDateTimeSchema.optional(),
status: agentStatusSchema,
turn: agentStateTurnSchema.optional(),
});
export type AgentStateMessage = z.infer<typeof agentStateMessageSchema>;
|