import type { NodeIdDTO, NodeStatusDTO } from './common.js'; import type { NodeOutcomeDTO } from './node-outcomes.js'; import type { ReportDTO } from './reports.js'; export interface NodeEventBaseDTO { node_id: NodeIdDTO; sequence_number: number; } export interface NodeOutputTextDeltaDTO extends NodeEventBaseDTO { type: 'node.output_text.delta'; delta: string; } export interface NodeOutputTextDoneDTO extends NodeEventBaseDTO { type: 'node.output_text.done'; text: string; } export interface NodeToolCallStartedDTO extends NodeEventBaseDTO { type: 'node.tool_call.started'; tool_call_id: string; tool: string; /** Argument shape only; it never includes argument values. */ summary: string; } export interface NodeToolCallCompletedDTO extends NodeEventBaseDTO { type: 'node.tool_call.completed'; tool_call_id: string; tool: string; status: 'ok' | 'error'; /** Argument shape only; it never includes argument values or tool output. */ summary: string; } export interface NodeTurnStartedDTO extends NodeEventBaseDTO { type: 'node.turn.started'; } export interface NodeTurnCompletedDTO extends NodeEventBaseDTO { type: 'node.turn.completed'; } export interface NodeReportPushedDTO extends NodeEventBaseDTO { type: 'node.report.pushed'; report: ReportDTO; } export interface NodeStatusChangedDTO extends NodeEventBaseDTO { type: 'node.status.changed'; /** `dormant` is stream-only: it means no broker is currently reachable. */ status: NodeStatusDTO | 'dormant'; } export interface NodeSettledDTO extends NodeEventBaseDTO { type: 'node.settled'; outcome: NodeOutcomeDTO; } export interface NodeEventErrorDTO { type: 'error'; error: { code: 'stream_gap' | 'stream_dropped' | 'stream_error'; message: string; details?: { earliest_sequence?: number; }; }; } /** Every parsed server-sent event from `GET /v1/nodes/{id}/events`. */ export type NodeEventDTO = NodeOutputTextDeltaDTO | NodeOutputTextDoneDTO | NodeToolCallStartedDTO | NodeToolCallCompletedDTO | NodeTurnStartedDTO | NodeTurnCompletedDTO | NodeReportPushedDTO | NodeStatusChangedDTO | NodeSettledDTO | NodeEventErrorDTO; /** Query accepted by the raw event-stream route. */ export interface NodeEventsQuery { after?: number; }