export interface SemanticToolControllerContext { readonly sessionKey?: unknown; readonly sessionId?: unknown; } export interface SemanticCommandControllerContext extends SemanticToolControllerContext { readonly args?: unknown; } export interface SemanticCommandCatalogEntry { readonly name: string; readonly description: string; readonly acceptsArgs: boolean; readonly requiresAuthentication: boolean; readonly progressMessage: string; readonly promptGuidance: readonly string[]; execute(context: SemanticCommandControllerContext): Promise | unknown; } export interface SemanticToolCatalogEntry { readonly label: string; readonly name: string; readonly description: string; readonly inputSchema: Readonly>; execute(context: SemanticToolControllerContext, toolCallId: unknown, args: unknown, signal?: AbortSignal): Promise | unknown; } export interface SemanticToolCatalog { readonly command: SemanticCommandCatalogEntry; readonly tools: readonly SemanticToolCatalogEntry[]; } export interface SemanticToolCatalogRegistrar { registerCommand?(command: Readonly>): void; registerTool(factory: (context: SemanticToolControllerContext) => Readonly>, registration: { readonly name: string; readonly optional: true; }): void; } export declare function beginSemanticToolCatalog(runtime: object): void; export declare function defineSemanticCatalogTool(runtime: object, tool: SemanticToolCatalogEntry): void; export declare function semanticToolLabel(name: string): string; export declare function finishSemanticToolCatalog(runtime: object, command: SemanticCommandCatalogEntry): SemanticToolCatalog; /** Adapt one catalog to a context-factory registration API such as OpenClaw. */ export declare function registerSemanticToolCatalog(registrar: SemanticToolCatalogRegistrar, catalog: SemanticToolCatalog): void; /** * Freeze one host-neutral semantic catalog after checking its public identity. * * The catalog owns tool order, metadata, schema references, and execution * factories. Host-specific registration APIs adapt this value; they are not a * source of tool definitions. */ export declare function defineSemanticToolCatalog(command: SemanticCommandCatalogEntry, tools: readonly SemanticToolCatalogEntry[]): SemanticToolCatalog;