File size: 2,082 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 48 49 50 51 52 53 54 55 56 57 58 59 | import { z } from 'zod';
import { messageSchema } from './message';
import { approvalRequestSchema } from './approval';
import { questionRequestSchema } from './question';
import { sessionSchema } from './session';
import { taskSchema } from './task';
export const inFlightToolCallSchema = z.object({
tool_call_id: z.string().min(1),
name: z.string().min(1),
args: z.unknown().optional(),
description: z.string().optional(),
display: z.unknown().optional(),
last_progress: z
.object({
kind: z.enum(['stdout', 'stderr', 'progress', 'status', 'custom']),
text: z.string().optional(),
percent: z.number().optional(),
})
.optional(),
});
export type InFlightToolCall = z.infer<typeof inFlightToolCallSchema>;
export const inFlightTurnSchema = z.object({
turn_id: z.number().int().nonnegative(),
assistant_text: z.string(),
thinking_text: z.string(),
running_tools: z.array(inFlightToolCallSchema),
current_prompt_id: z.string().optional(),
});
export type InFlightTurn = z.infer<typeof inFlightTurnSchema>;
export const snapshotSubagentSchema = taskSchema.extend({
subagent_phase: z.enum(['queued', 'working', 'suspended', 'completed', 'failed', 'cancelled']).optional(),
subagent_type: z.string().optional(),
parent_tool_call_id: z.string().optional(),
suspended_reason: z.string().optional(),
swarm_index: z.number().int().nonnegative().optional(),
run_in_background: z.boolean().optional(),
});
export type SnapshotSubagent = z.infer<typeof snapshotSubagentSchema>;
export const sessionSnapshotResponseSchema = z.object({
as_of_seq: z.number().int().nonnegative(),
epoch: z.string().min(1),
session: sessionSchema,
messages: z.object({
items: z.array(messageSchema),
has_more: z.boolean(),
}),
in_flight_turn: inFlightTurnSchema.nullable(),
subagents: z.array(snapshotSubagentSchema).optional(),
pending_approvals: z.array(approvalRequestSchema),
pending_questions: z.array(questionRequestSchema),
});
export type SessionSnapshotResponse = z.infer<typeof sessionSnapshotResponseSchema>;
|