TraceEvent:
| TraceEventBase & {
name: string;
type: "scope:open";
meta?: Record<string, unknown>;
}
| TraceEventBase & {
durationMs: number;
name: string;
type: "scope:close";
}
| TraceEventBase & {
messages: string;
promptText: string;
role: | "sharedRoot"
| "agentSuffix"
| "generate"
| "diverge"
| "toolResultDelta";
tokenCount: number;
type: "prompt:format";
grammar?: string;
taskContent?: string;
tools?: string;
}
| TraceEventBase & {
branchHandle: number;
parentHandle: number
| null;
position: number;
role:
| "root"
| "sharedRoot"
| "agentFork"
| "scratchpad"
| "divergeAttempt";
type: "branch:create";
}
| TraceEventBase & {
branchHandle: number;
role: | "sharedPrefix"
| "agentSuffix"
| "toolResult"
| "warmDelta"
| "scratchpad";
tokenCount: number;
type: "branch:prefill";
}
| TraceEventBase & {
branchHandle: number;
position: number;
type: "branch:prune";
}
| TraceEventBase & {
branchHandle: number;
hasGrammar: boolean;
hasParent: boolean;
role: string;
type: "generate:start";
}
| TraceEventBase & {
branchHandle: number;
output: string;
tokenCount: number;
type: "generate:end";
parsed?: unknown;
}
| TraceEventBase & {
agentCount: number;
pressure: { headroom: number; remaining: number; softLimit: number };
taskSuffixTokens: number[];
type: "pool:open";
}
| TraceEventBase & {
agents: {
agentId: number;
findings: string
| null;
ppl: number;
tokenCount: number;
toolCallCount: number;
}[];
durationMs: number;
steps: number;
totalTokens: number;
type: "pool:close";
}
| TraceEventBase & {
activeAgents: number;
phase: "PRODUCE"
| "COMMIT"
| "SETTLE"
| "DISPATCH";
pressure: {
cellsUsed: number;
headroom: number;
nCtx: number;
remaining: number;
};
type: "pool:tick";
}
| TraceEventBase & {
agentId: number;
reason: | "pressure_init"
| "pressure_critical"
| "pressure_softcut"
| "pressure_settle_reject"
| "maxTurns"
| "stop_token";
type: "pool:agentDrop";
}
| TraceEventBase & {
agentId: number;
parsedContent: string
| null;
parsedToolCalls: { arguments: string; name: string }[];
rawOutput: string;
turn: number;
type: "agent:turn";
}
| TraceEventBase & {
agentId: number;
args: Record<string, unknown>;
callId: string;
tool: string;
toolIndex: number;
toolkitSize: number;
type: "tool:dispatch";
}
| TraceEventBase & {
agentId: number;
durationMs: number;
prefillTokenCount: number;
result: unknown;
tool: string;
type: "tool:result";
}
| TraceEventBase & {
agentId: number;
error: string;
tool: string;
type: "tool:error";
}
| TraceEventBase & {
attempts: number;
prefixLength: number;
type: "diverge:start";
}
| TraceEventBase & {
bestIdx: number;
outputs: string[];
ppls: number[];
totalTokens: number;
type: "diverge:end";
}
| TraceEventBase & {
chunkCount: number;
query: string;
type: "rerank:start";
}
| TraceEventBase & {
durationMs: number;
selectedPassageCount: number;
topResults: { file: string; heading: string; score: number }[];
totalChars: number;
type: "rerank:end";
}
| TraceEventBase & { sourceName: string; type: "source:bind" }
| TraceEventBase & {
questions: string[];
sourceName: string;
type: "source:research";
}
| TraceEventBase & {
chunkCount: number;
sourceName: string;
type: "source:chunks";
}
Discriminated union of all trace event types
Every variant extends TraceEventBase with a
typediscriminant. Events cover the full lifecycle of agent execution: scope open/close, prompt formatting, branch creation/prefill/prune, generation start/end, agent pool ticks, tool dispatch/result, diverge attempts, reranker passes, and source bindings.Written to a TraceWriter throughout the runtime. Consumers (e.g. JsonlTraceWriter) serialize events to JSONL for post-hoc analysis.