/** * Tool registry — in-memory list of registered Tool implementations. * * The CLI populates the registry at startup (first-party tools as * direct imports, third-party tools via tool-package-discovery), then * iterates `list()` to build its command tree. * * **Duplicate-id policy: first writer wins.** Re-registering the same * id keeps the existing entry and emits a structured warning. This * matches `LanguageRegistry`'s policy and prevents third-party plugins * from accidentally clobbering first-party registrations. * * Implemented on top of the kernel's `Registry` base. Tools don't * naturally satisfy `Registerable` (no `name` field on metadata), so * the registry wraps each Tool in a `{ id, name: id, tool }` envelope * before storing it. `list()` / `get()` unwrap. */ import type { Tool } from './types.js'; /** Per-run registry of {@link Tool} plugins, indexed by id. */ export declare class ToolRegistry { private readonly inner; /** * Register a tool. **First writer wins** — re-registering the same * id is a no-op and emits a `tool.registry.duplicate` warning. */ register(tool: Tool, opts?: { sourcePackage?: string; }): void; list(): readonly Tool[]; get(id: string): Tool | undefined; clear(): void; } //# sourceMappingURL=registry.d.ts.map