import type { LLMClient, LLMMessage, LLMResponse, OnStreamProgress } from "../llm/provider.js"; import { type WorkerResultTool } from "../agent/worker-agent.js"; import type { Static, TSchema } from "@sinclair/typebox"; import type { Logger } from "../utils/logger.js"; import { type ActivatedSkillGuidance } from "../agent/skill-tool.js"; export interface AgentContext { readonly client: LLMClient; readonly model: string; readonly projectRoot: string; readonly bookId?: string; readonly logger?: Logger; readonly onStreamProgress?: OnStreamProgress; readonly signal?: AbortSignal; readonly activatedSkills?: ReadonlyArray; } export declare abstract class BaseAgent { protected readonly ctx: AgentContext; constructor(ctx: AgentContext); protected get log(): Logger | undefined; protected chat(messages: ReadonlyArray, options?: { readonly temperature?: number; readonly maxTokens?: number; }): Promise; protected submitStructured(messages: ReadonlyArray, resultTool: WorkerResultTool, options?: { readonly temperature?: number; readonly maxTokens?: number; }): Promise>; protected withPromptPackGuidance(basePrompt: string, promptId: string): Promise; private appendTaskSkillGuidance; /** * Chat with web search enabled. * OpenAI: uses native web_search_options / web_search_preview. * Other providers: searches via Tavily API (TAVILY_API_KEY), injects results into prompt. */ protected chatWithSearch(messages: ReadonlyArray, options?: { readonly temperature?: number; readonly maxTokens?: number; }): Promise; abstract get name(): string; } export declare function appendActivatedSkillGuidance(messages: ReadonlyArray, activations: ReadonlyArray | undefined): ReadonlyArray; //# sourceMappingURL=base.d.ts.map