Skip to content

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.