import type { ToolCallRecord } from "../../graph/tools/tool.factory"; import type { GraphNodeOutput } from "../../graph/interfaces/graph.node.output.interface"; export interface UnifiedTrace { planner: { reasoning: string; /** * The branch plan that ACTUALLY ran — the planner's pick after the config * and per-call branch toggles have been applied. Always reflects execution. */ branchPlan: { runGraph: boolean; runContextualiser: boolean; runDrift: boolean; }; /** * The planner's original, unmasked pick. Present only when the toggles * changed the plan, so its absence means "nothing was masked". */ rawBranchPlan?: { runGraph: boolean; runContextualiser: boolean; runDrift: boolean; }; tokens: { input: number; output: number; }; }; graph?: { toolCalls: ToolCallRecord[]; entitiesDiscovered: number; status: GraphNodeOutput["status"]; errorMessage?: string; tokens: { input: number; output: number; }; /** Per tool-call summary of bridge fanouts (tool name, source/entity type, total records inlined). */ materialisedBridges?: { tool: string; type: string; count: number; }[]; }; contextualiser?: { hops: number; chunksProcessed: number; status: "success" | "failed"; errorMessage?: string; tokens: { input: number; output: number; }; }; drift?: { confidence: number; communitiesMatched: number; status: "success" | "failed"; errorMessage?: string; tokens: { input: number; output: number; }; }; answer: { branchesUsed: ("graph" | "contextualiser" | "drift")[]; tokens: { input: number; output: number; }; /** * ChunkIds of the notebook entries that survived the NOTEBOOK_BUDGET_CHARS * trim, in emission order. Absent on turns where the answer node did not * run or died before building the section — consumers must treat absence * as "not observed", never as "nothing kept". */ keptChunkIds?: string[]; /** Subset of keptChunkIds kept in core (unwidened) form — their neighbour text did NOT reach the model. */ coreOnlyChunkIds?: string[]; }; totalTokens: { input: number; output: number; }; } //# sourceMappingURL=unified.trace.interface.d.ts.map