TraceStreamEvent
type TraceStreamEvent = | { agentId: string; sessionId: string; timestamp: number; type: "session:start";} | { attributes?: Record<string, unknown>; name: string; parentId?: string; spanId: string; timestamp: number; type: "span:start";} | { durationMs: number; spanId: string; status: "success" | "error"; type: "span:end";} | { args?: unknown; timestamp: number; toolName: string; type: "tool:call";} | { durationMs: number; success: boolean; toolName: string; type: "tool:result";} | { from: string; timestamp: number; to: string; type: "flow:transition";} | { collected: Record<string, unknown>; missing: string[]; nodeId: string; type: "extraction:update";} | { cacheReadTokens?: number; contextUtilization?: number; cumulativeTotalTokens: number; inputTokens: number; model?: string; nodeId?: string; outputTokens: number; sessionId: string; totalTokens: number; turn: number; type: "tokens:turn";} | { durationMs: number; sessionId: string; success: boolean; type: "session:end";};Events streamed to Kuralle Studio (or other live trace consumers) during a session. Aligns with the studio WebSocket protocol; keep fields JSON-serializable.