/** * Estimate how a model request's context is composed (system / history / tools). * Metadata-only: no prompt text is stored — only role counts and token estimates. * * Used for reliability ops and regression harnesses. Does not truncate context. */ import type { ChatMessage, ToolDefinition } from "../types.js"; export interface ContextBreakdown { /** Rough total estimated tokens for messages (+ tools if provided). */ readonly estimatedTotalTokens: number; readonly systemTokens: number; readonly userTokens: number; readonly assistantTokens: number; readonly toolResultTokens: number; readonly toolSchemaTokens: number; readonly messageCount: number; readonly systemMessageCount: number; readonly userMessageCount: number; readonly assistantMessageCount: number; readonly toolMessageCount: number; /** High-level system subsections when detected by prefix. */ readonly systemParts: { readonly constitutionTokens: number; readonly planTokens: number; readonly scopeTokens: number; readonly sessionStateTokens: number; readonly compactionMemoryTokens: number; readonly otherSystemTokens: number; }; readonly toolDefinitionCount: number; } /** * Build a metadata-only breakdown of an assembled completion request. */ export declare function buildContextBreakdown(messages: readonly ChatMessage[], tools?: readonly ToolDefinition[] | undefined): ContextBreakdown; /** Flatten for audit/diagnostic logs (numeric keys only — no content). */ export declare function contextBreakdownAuditPayload(breakdown: ContextBreakdown): Record; export declare function describeDominantContextBlock(messages: readonly ChatMessage[], tools?: readonly ToolDefinition[] | undefined): string; export declare function toolSchemaHash(tools: readonly ToolDefinition[] | undefined): string;