import type { PermissionMode } from "@hmbown/kytchen-protocol"; export interface JsonSchema { type: string; properties?: Record; required?: string[]; items?: JsonSchema; description?: string; enum?: unknown[]; [key: string]: unknown; } export interface ToolDefinition { /** Unique tool name. */ name: string; /** Human-readable description. */ description: string; /** JSON Schema for tool parameters. */ parameters: JsonSchema; /** Default permission policy. */ defaultPolicy: PermissionMode; /** If true, tool is considered high-risk (defaults to ask/deny). */ highRisk?: boolean; /** Tags for grouping/filtering. */ tags?: string[]; } export interface ToolExecutionResult { output: unknown; error?: string; durationMs: number; } export type ToolHandler = (args: Record, signal?: AbortSignal) => Promise; interface RegisteredTool { definition: ToolDefinition; handler: ToolHandler; } export declare class ToolRegistry { private readonly tools; register(definition: ToolDefinition, handler: ToolHandler): void; unregister(name: string): boolean; get(name: string): RegisteredTool | undefined; has(name: string): boolean; list(): ToolDefinition[]; listByTag(tag: string): ToolDefinition[]; /** Get the handler for a tool. Throws if not registered. */ getHandler(name: string): ToolHandler; } export {}; //# sourceMappingURL=registry.d.ts.map