import { z } from 'zod';
// AgentActivityEvent is the JSON Schema shape; in TypeScript use the
// @glideco/schemas package for runtime validation.
const AgentActivityEvent = z.object({
schemaVersion: z.literal('v1').optional(),
eventType: z.string().min(1).max(64),
eventKind: z.enum([
'tool_call', 'reasoning_step', 'risk_verdict', 'anomaly_detected',
'consent_prompt', 'consent_granted', 'consent_denied',
'step_up_required', 'step_up_completed', 'policy_violation',
'grant_issued', 'grant_revoked', 'kill_switch_triggered',
]).optional(),
eventId: z.string().uuid().optional(),
timestamp: z.string().datetime(),
agentId: z.string().min(1).max(128),
principalId: z.string().uuid().nullable().optional(),
vaultId: z.string().uuid().nullable().optional(),
grantId: z.string().uuid().nullable().optional(),
toolCallId: z.string().uuid().nullable().optional(),
summary: z.string().min(1).max(280).optional(),
extra: z.record(z.unknown()).default({}),
});
const event = AgentActivityEvent.parse({
schemaVersion: 'v1',
eventType: 'tool_call',
eventKind: 'tool_call',
eventId: '11111111-1111-4111-8111-111111111111',
timestamp: '2026-05-04T12:00:00.000Z',
agentId: '22222222-2222-4222-8222-222222222222',
principalId: '33333333-3333-4333-8333-333333333333',
vaultId: '44444444-4444-4444-8444-444444444444',
grantId: '55555555-5555-4555-8555-555555555555',
toolCallId: '66666666-6666-4666-8666-666666666666',
summary: 'Initiated $250.00 USDC payment via payments.initiate',
extra: { risk_verdict: 'allow', rail: 'usdc-base' },
});