import { type AttentionFoldLedger, type AttentionStickyFrontier } from "./attention-compiler.js"; import { type ContextBudget } from "./context-budget.js"; import type { AttentionCompiler, AttentionCompilerOptions, AttentionReport, ContentBlock, ContextBlock, ContextProvider, ContextResolutionContext, InputBuildContext, InputBuilder, InstructionInjector, JsonObject, Message, ModelConfig, PromptBuilder, PromptBuildRequest, ProviderRequest, ProviderRequestOptions, ResourceLoader, Skill, ToolDefinition, ToolResult } from "./contracts.js"; import type { MiddlewareRegistry } from "./middleware.js"; import type { SecretRedactor } from "./redaction.js"; import { type LoadedSkillSet, type SkillsDisclosure } from "./skill-disclosure.js"; import { type ResolvedToolResultFoldOptions } from "./tool-result-fold.js"; import { type ToolsDisclosure, type ToolsSearchOptions } from "./tool-search.js"; export type AgentInput = string | Message | readonly Message[]; /** * Wire payload for a tool result that carries no `value`, no `type:text` content, and no error. * Every provider route serializes a tool result from this block, so the empty case must be a * constant non-empty string instead of an absent payload (strict providers reject empty results). */ export declare const EMPTY_TOOL_RESULT_TEXT = "(tool completed with no output)"; export interface PromptInstruction { readonly text: string; readonly label?: string; readonly metadata?: Readonly>; } export interface InputAttachment { readonly name?: string; readonly text?: string; readonly content?: readonly ContentBlock[]; readonly uri?: string; readonly mediaType?: string; readonly metadata?: Readonly>; } export interface DefaultInputBuildContext extends InputBuildContext { readonly systemInstructions?: string | readonly string[]; readonly developerInstructions?: string | readonly string[]; readonly instructions?: string | PromptInstruction | readonly PromptInstruction[]; readonly history?: readonly Message[]; readonly summaries?: readonly (string | ContextBlock)[]; readonly attachments?: readonly InputAttachment[]; readonly resourceUris?: readonly string[]; readonly resourceLoader?: ResourceLoader; readonly toolResults?: readonly ToolResult[]; readonly middleware?: MiddlewareRegistry; readonly instructionInjectors?: readonly InstructionInjector[]; readonly turn?: number; } export interface DefaultInputBuilder extends InputBuilder { build(input: AgentInput, context?: DefaultInputBuildContext): Promise; } export interface ResolveContextOptions extends Omit { readonly messages: readonly Message[]; readonly providers?: readonly ContextProvider[]; readonly middleware?: MiddlewareRegistry; readonly injectedBlocks?: readonly ContextBlock[]; } export interface DefaultPromptBuilder extends PromptBuilder { build(request: PromptBuildRequest): Promise; } export interface PromptTemplateOptions { readonly missing?: "throw" | "preserve"; } export interface AssembleProviderInputOptions extends DefaultInputBuildContext { readonly model: ModelConfig; readonly redactor?: SecretRedactor; readonly input: AgentInput; readonly inputBuilder?: InputBuilder; readonly contextProviders?: readonly ContextProvider[]; readonly promptBuilder?: PromptBuilder; readonly skills?: readonly Skill[]; readonly skillsDisclosure?: SkillsDisclosure; readonly loadedSkills?: LoadedSkillSet; /** Run-owned append-only segments. Omit outside a session to retain existing assembly exactly. */ readonly tailSegments?: Map; readonly tools?: readonly ToolDefinition[]; /** Tools disclosure: "search" narrows the disclosed tool list (activated ∪ top-k); default "all" is unchanged. */ readonly toolsDisclosure?: ToolsDisclosure; readonly toolsSearch?: ToolsSearchOptions; /** Per-run activated names from `search_tools`; intersected at disclosure only — dispatch re-checks. */ readonly activatedTools?: { has(name: string): boolean; }; readonly providerOptions?: ProviderRequestOptions; /** Assembler-time eviction; does not delete session store history. */ readonly contextBudget?: ContextBudget; /** Resolved tool-result fold; projection-only, store untouched. */ readonly toolResultFold?: ResolvedToolResultFoldOptions; /** * Opt-in attention compiler: options are validated here (per call) or pass an existing * `AttentionCompiler` to reuse one validation. Mutually exclusive with `contextBudget`, * which would otherwise evict as a silent last resort after the compiler's stages. */ readonly attentionCompiler?: AttentionCompilerOptions | AttentionCompiler; /** Per-session-leaf sticky frontier; omit for one-shot assemblies (no cross-turn stickiness). */ readonly attentionSticky?: AttentionStickyFrontier; /** Per-session folded bodies; omit to re-summarize every folded row on every turn. */ readonly attentionFold?: AttentionFoldLedger; /** Called once per *mutated* turn with the report, so a host can emit telemetry: under-ratio * turns never call it, and it runs before `input_assembly` middleware. */ readonly onAttentionReport?: (report: AttentionReport) => void; /** Run input tokens already charged this run; feeds the `run_input_ratio` axis projection * (default 0). The run budget itself rides the resolved `AttentionCompiler` handle. */ readonly runInputTokens?: number; } export declare function createDefaultInputBuilder(): DefaultInputBuilder; export declare function resolveContextProviders(options: ResolveContextOptions): Promise; export declare function createDefaultPromptBuilder(): DefaultPromptBuilder; export declare function renderPromptTemplate(template: string, variables: JsonObject, options?: PromptTemplateOptions): string; export declare function assembleProviderInput(options: AssembleProviderInputOptions): Promise; export declare function inputMessages(input: AgentInput): Message[]; export declare function toToolResultMessage(result: ToolResult): Message;