/** * Token estimation utilities for compaction. * * Pure functions for estimating context tokens, message sizes, and compaction * token metrics. */ import type { AgentMessage } from "../../../agent-core/index.js"; import type { Usage } from "../../../ai/index.js"; import type { SessionEntry } from "../session-manager.js"; import type { CompactionPreparation, CompactionResult, CompactionSettings } from "./compaction.js"; export interface CompactionTokenSourceBucket { type: "role" | "tool" | "source"; name: string; tokens: number; } /** * Calculate total context tokens from usage. * Uses the native totalTokens field when available, falls back to computing from components. */ export declare function calculateContextTokens(usage: Usage): number; /** * Find the last non-aborted assistant message usage from session entries. */ export declare function getLastAssistantUsage(entries: SessionEntry[]): Usage | undefined; export interface ContextUsageEstimate { tokens: number; usageTokens: number; trailingTokens: number; lastUsageIndex: number | null; } /** * Estimate context tokens from messages, using the last assistant usage when available. * If there are messages after the last usage, estimate their tokens with estimateTokens. */ export declare function estimateContextTokens(messages: AgentMessage[]): ContextUsageEstimate; /** * Check if compaction should trigger based on context usage. */ export declare function shouldCompact(contextTokens: number, contextWindow: number, settings: CompactionSettings): boolean; /** * Estimate token count for a message using chars/4 heuristic. * This is conservative (overestimates tokens). */ export declare function estimateTokens(message: AgentMessage): number; export declare function estimateTextTokens(text: string): number; export declare function estimateCompactionTokenMetrics(preparation: Pick & Partial>, summary: string): Pick; //# sourceMappingURL=tokens.d.ts.map