/** * Context Compression Utility * * Provides automatic context compression for Hive when context reaches threshold. * Similar to DCP (Dynamic Context Pruning) or oh-my-openagent's context management. * * Features: * - Automatic compression at 50% context threshold * - Trimming unnecessary tool outputs * - Deduplication, write superseding, and error purging strategies * - Zero-cost automatic pruning strategies */ interface MessageContent { type: "text"; text?: string; } interface ToolCall { id?: string; name: string; arguments?: Record; } interface Message { role: "user" | "assistant" | "tool" | "system"; content?: string | MessageContent[]; tool_calls?: ToolCall[]; tool_call_id?: string; name?: string; } export interface CompressionConfig { /** Context threshold to trigger compression (0-1, default: 0.5 = 50%) */ threshold?: number; /** Enable automatic compression */ enabled?: boolean; /** Protected tool output patterns (glob) */ protectedTools?: string[]; /** Protect user messages from compression */ protectUserMessages?: boolean; /** Maximum tool calls to keep after compression */ maxToolCalls?: number; } /** * Estimate token count from messages (rough approximation) * ~4 characters per token on average */ export declare function estimateTokens(messages: Message[]): number; /** * Calculate context usage ratio (0-1) */ export declare function getContextUsage(messages: Message[], contextLimit: number): number; /** * Check if context compression is needed */ export declare function needsCompression(messages: Message[], contextLimit: number, config?: CompressionConfig): boolean; /** * Main compression function * Applies all strategies to reduce context size */ export declare function compressContext(messages: Message[], config?: CompressionConfig, contextLimit?: number): { compressed: Message[]; stats: CompressionStats; }; export interface CompressionStats { originalTokens: number; compressedTokens: number; reductionRatio: number; originalMessages: number; compressedMessages: number; } /** * Build a compression hint prompt * This is injected into context to guide the LLM */ export declare function buildCompressionHint(): string; /** * Create a session compaction hook for Hive * This can be used with experimental.session.compacting hook */ export declare function createCompactionHook(config?: CompressionConfig): (input: { sessionID: string; messages?: Message[]; contextLimit?: number; }, output: { context: string[]; prompt?: string; }) => void; export {};