/** * goals domain zod schemas. */ import { z } from 'zod' import type { Wire } from './rpc.schema.ts' import type { GoalRef, GoalView, RequestPayload, ResponseValue } from './index.ts' /** GoalRef schema. */ export const goalRefSchema = z.object({ id: z.string(), revision: z.number().int().positive(), }) as unknown as z.ZodType> /** Goal block reason schema. */ export const goalBlockReasonSchema = z.object({ code: z.string(), message: z.string(), }) /** GoalView schema. */ export const goalViewSchema = z.object({ id: z.string(), revision: z.number().int().positive(), objective: z.string(), phase: z.union([z.literal('active'), z.literal('paused'), z.literal('blocked'), z.literal('complete')]), blockedReason: goalBlockReasonSchema.optional(), maxGoalRounds: z.number().int().positive(), roundsStarted: z.number().int().nonnegative(), createdAt: z.number(), updatedAt: z.number(), activation: z.union([z.literal('armed'), z.literal('disarmed')]), }) as unknown as z.ZodType> /** goal.get request payload. */ export const goalGetRequestSchema = z.object({ sessionId: z.string(), }) as unknown as z.ZodType>> /** goal.get response value. */ export const goalGetValueSchema = z.object({ goal: goalViewSchema.nullable(), }) as unknown as z.ZodType>> /** goal.create request payload. */ export const goalCreateRequestSchema = z.object({ sessionId: z.string(), objective: z.string().min(1), maxGoalRounds: z.number().int().positive().optional(), }) as unknown as z.ZodType>> /** goal.create response value. */ export const goalCreateValueSchema = z.object({ goal: goalViewSchema, }) as unknown as z.ZodType>> /** goal.edit request payload. */ export const goalEditRequestSchema = z.object({ sessionId: z.string(), ref: goalRefSchema, objective: z.string().min(1).optional(), maxGoalRounds: z.number().int().positive().optional(), }).refine(value => value.objective !== undefined || value.maxGoalRounds !== undefined, { message: 'goal.edit requires objective or maxGoalRounds', }) as unknown as z.ZodType>> /** goal.edit response value. */ export const goalEditValueSchema = z.object({ goal: goalViewSchema, }) as unknown as z.ZodType>> /** goal.pause request payload. */ export const goalPauseRequestSchema = z.object({ sessionId: z.string(), ref: goalRefSchema, }) as unknown as z.ZodType>> /** goal.pause response value. */ export const goalPauseValueSchema = z.object({ goal: goalViewSchema, }) as unknown as z.ZodType>> /** goal.resume request payload. */ export const goalResumeRequestSchema = z.object({ sessionId: z.string(), ref: goalRefSchema, }) as unknown as z.ZodType>> /** goal.resume response value. */ export const goalResumeValueSchema = z.object({ goal: goalViewSchema, }) as unknown as z.ZodType>> /** goal.complete request payload. */ export const goalCompleteRequestSchema = z.object({ sessionId: z.string(), ref: goalRefSchema, }) as unknown as z.ZodType>> /** goal.complete response value. */ export const goalCompleteValueSchema = z.object({ goal: goalViewSchema, }) as unknown as z.ZodType>> /** goal.clear request payload. */ export const goalClearRequestSchema = z.object({ sessionId: z.string(), ref: goalRefSchema, }) as unknown as z.ZodType>> /** goal.clear response value. */ export const goalClearValueSchema = z.object({ cleared: z.literal(true), }) as unknown as z.ZodType>>