import type { LLMToolSchema, ToolDefinition, ToolPermission } from '../tool/index.js' export type ToolSourceKind = | 'host_tool' | 'provider_builtin' | 'mcp_server' | 'skill' | 'plugin' | 'connector' export type ToolLoadingMode = 'eager' | 'deferred' | 'disabled' | 'suspended' export interface ToolSource { readonly id: string readonly kind: ToolSourceKind readonly name: string readonly description?: string readonly provider?: string readonly mcpServer?: { readonly name: string readonly url?: string readonly transport?: 'streamable_http' | 'sse' | 'stdio' readonly authorizationRef?: string } readonly providerTool?: { readonly type: string readonly name?: string readonly beta?: string } readonly skill?: { readonly type: 'published' | 'custom' readonly skillId: string readonly version?: string } readonly metadata?: Record } export interface ToolsetPolicy { readonly enabled?: boolean readonly loading?: ToolLoadingMode readonly preferred?: boolean readonly providerConfig?: Record } export interface ToolsetDefinition { readonly id: string readonly sourceId: string readonly name: string readonly description?: string readonly defaultPolicy?: ToolsetPolicy readonly metadata?: Record } export interface ToolCatalogEntry { readonly name: string readonly description: string readonly sourceId: string readonly toolsetId: string readonly policy: ToolsetPolicy readonly definition?: ToolDefinition readonly llmSchema?: LLMToolSchema readonly permissions?: readonly ToolPermission[] readonly category?: ToolDefinition['category'] readonly metadata?: Record } export interface ToolCatalogSearchResult { readonly tool: ToolCatalogEntry readonly source: ToolSource readonly toolset: ToolsetDefinition readonly score: number readonly matched: readonly string[] } export interface ToolCatalogSnapshot { readonly sources: readonly ToolSource[] readonly toolsets: readonly ToolsetDefinition[] readonly tools: readonly ToolCatalogEntry[] }