import type { Logger } from '../types/logger.js'; import type { Message } from '../types/messages.js'; import type { Provider } from '../types/provider.js'; import type { MessageSelector, SelectorResult } from '../types/selector.js'; import type { OneShotOrchestrator } from '../execution/one-shot-llm.js'; export interface LLMSelectorOptions { /** Provider used for the selector LLM call. Required. */ provider: Provider; /** Model for the selector. Defaults to the provider's default model. */ model?: string | undefined; /** * Maximum tokens to keep in context (target budget). * Selector will aim to keep total content below this. */ maxContextTokens?: number | undefined; /** * Prompt instructing the selector how to behave. * Should guide the LLM on importance tiers and output format. */ systemPrompt?: string | undefined; /** * Maximum output tokens for the selector LLM call. * Controls both the JSON response budget and the token reservation for the * history text budget calculation (default: 1024). */ maxOutputTokens?: number | undefined; /** * OneShotOrchestrator for the selector LLM call. When set, uses it * instead of direct provider.complete(), gaining fallback chain support. */ oneShotOrchestrator?: OneShotOrchestrator | undefined; /** Structured logger. Defaults to noOpLogger (silent). */ logger?: Logger | undefined; } /** * LLM-powered message selector. Calls a sub-LLM to analyze the * message history and produce a keep/collapse plan — more surgical * than fixed-window rules. */ export declare class LLMSelector implements MessageSelector { private readonly provider; private readonly model; private readonly maxContextTokens; private readonly systemPrompt; private readonly maxOutputTokens; private readonly oneShotOrchestrator?; private readonly logger; constructor(opts: LLMSelectorOptions); select(messages: Message[], maxToKeep: number): Promise; private fallbackSelect; /** * Parse and validate the raw LLM output into a SelectorResult. * Falls back to recency-based selection if the LLM output is malformed, * out-of-bounds, or internally inconsistent. */ private parseSelectorOutput; } //# sourceMappingURL=llm-selector.d.ts.map