import type { FileSystem } from '../types/filesystem.js'; import { type AnyTool } from '../types/effectTool.js'; import type { CapabilityPromptSection } from '../capabilities/index.js'; import { type SkillWireAgent } from './collectSkills.js'; import { SkillsCapability } from './SkillsCapability.js'; import { type SkillHandle } from './skillHandle.js'; import { LiveSkillCatalog } from './liveSkillCatalog.js'; import type { Session } from '../types/session.js'; import type { SkillLike, SkillMeta } from '../types/skills.js'; export interface WiredAgentSkills { capability: SkillsCapability; tools: Record; promptSections: CapabilityPromptSection[]; contentHash: string; metas: SkillMeta[]; /** Live catalog `load_skill` resolves against; mutated by the runtime add/remove API. */ catalog: LiveSkillCatalog; getSkill: (name: string) => SkillHandle; /** Present only when `agent.skills` contained a `SkillResolver`: this session's resolver * output, by resolver position. The caller (`buildAgentToolSurface`) persists it so a * later turn reuses it instead of calling the resolver again. */ resolvedSkillsByIndex?: Record; } /** Session context needed to resolve a per-tenant `SkillResolver`, plus this session's * previously resolved output (keyed by resolver position) so it is invoked once per * session rather than once per turn. */ export interface SkillResolverContextInput { session: Session; cached?: Readonly>; } export declare function wireAgentSkills(agent: SkillWireAgent, fs?: FileSystem, resolverInput?: SkillResolverContextInput): Promise;