import { ToolDefinition, LazyToolInfo } from "./types.js"; /** * Dynamic Tool Registry * * Manages tool loading/unloading to minimize context usage. * Only loaded tools are exposed to the AI agent. * * Features: * - Dynamic loading/unloading * - Usage tracking for auto-unload * - Tool recommendations based on co-usage */ export declare class DynamicRegistry { private allTools; private toolIndex; private loadedTools; private lastUsed; private useCount; private coUsage; private lastLoadedSet; private readonly MAX_LOADED_TOOLS; private readonly ESTIMATED_TOKENS_PER_TOOL; private readonly AUTO_UNLOAD_AFTER_MS; /** * Initialize registry with all tool definitions */ initialize(tools: Map): void; /** * Search tools by query (searches index, not full definitions) */ search(query: string, limit?: number): LazyToolInfo[]; /** * Load tools into context (makes them available to AI) */ load(toolNames: string[]): { loaded: string[]; failed: string[]; warning?: string; }; /** * Unload tools from context (frees context budget) */ unload(toolNames: string[]): { unloaded: string[]; notLoaded: string[]; }; /** * Unload all tools */ unloadAll(): number; /** * Get currently loaded tools */ getLoadedTools(): ToolDefinition[]; /** * Get loaded tool names */ getLoadedToolNames(): string[]; /** * Check if a tool is loaded */ isLoaded(name: string): boolean; /** * Get a specific tool definition (only if loaded) */ getTool(name: string): ToolDefinition | undefined; /** * Get a tool definition regardless of loaded state (for execution) */ getToolForExecution(name: string): ToolDefinition | undefined; /** * Get context usage stats */ getStats(): { totalTools: number; loadedTools: number; maxTools: number; estimatedTokens: number; categories: Record; }; /** * Get all categories with tool counts */ getCategories(): Array<{ name: string; count: number; tools: string[]; }>; /** * Record tool usage (call when tool is executed) */ recordUsage(toolName: string): void; /** * Get tools that haven't been used recently */ getStaleTools(): string[]; /** * Auto-unload stale tools */ autoUnload(): { unloaded: string[]; reason: string; }; /** * Get recommended tools based on current context */ getRecommendations(limit?: number): Array<{ name: string; reason: string; score: number; }>; /** * Get usage statistics */ getUsageStats(): { mostUsed: Array<{ name: string; count: number; }>; recentlyUsed: Array<{ name: string; ago: string; }>; }; }