import type { AgentConfig } from '../types/agentConfig.js'; import type { Session } from '../types/session.js'; import type { AnyTool } from '../types/effectTool.js'; import type { PersistentMemoryStore } from '../memory/blocks/types.js'; import type { ExtractedValueStore } from '../memory/extract/store.js'; import type { SkillHandle } from '../skills/skillHandle.js'; import { LiveSkillCatalog } from '../skills/liveSkillCatalog.js'; import type { SkillLike, SkillMeta } from '../types/skills.js'; import type { KnowledgeProvider } from './KnowledgeProvider.js'; import { type ResolvedAgentWorkspace } from './resolveAgentWorkspace.js'; export interface AgentToolSurface { executorTools: Record; globalTools: Record; workingMemoryTools?: Record; workingMemoryPrompt?: string; skillPrompt?: string; skillContentHash?: string; /** Live skill catalog — what `load_skill` resolves against, distinct from frozen `skillPrompt`. */ skillCatalog?: LiveSkillCatalog; getSkill?: (name: string) => SkillHandle; skillMetaByName?: ReadonlyMap; resolvedWorkspace?: ResolvedAgentWorkspace; /** Present only when `agent.skills` contained a `SkillResolver`: this session's resolver * output, by resolver position. The caller persists it (see `resolvedSkillsState.ts`) so * the resolver runs once per session, not once per turn. */ resolvedSkillSnapshot?: Record; } export interface BuildAgentToolSurfaceDeps { configTools?: Record; knowledgeProvider?: KnowledgeProvider; defaultWorkingMemoryStore?: PersistentMemoryStore; /** Store `search_memory` reads from. Absent means the tool is withheld entirely. */ extractedValueStore?: ExtractedValueStore; /** This agent's previously resolved `SkillResolver` output for the session, if any — * read from `runState.state.resolvedSkills` by the caller (`resolvedSkillsState.ts`). */ resolvedSkillCache?: Readonly>; } export declare function buildAgentToolSurface(agent: AgentConfig, session: Session, deps: BuildAgentToolSurfaceDeps): Promise;