import type { Tool } from '@modelcontextprotocol/server'; /** GD param docs 返回的单个参数定义(GD 侧 CommandHelpers.doc_param 产出) */ interface GdParamDoc { name: string; type: string; required: boolean; desc: string; } /** GD param docs 返回的单个 method 定义 */ interface GdCommandDoc { description: string; params: GdParamDoc[]; } /** 拉取 docs 的 provider 接口(由 GodotServer 注入,解耦对 EditorConnection 的依赖) */ export type DocsFetcher = () => Promise | null>; /** Godot 类型名 → JSON schema type(对标竞品 jsonSchemaType + GD CommandHelpers.godot_type_to_schema_type) */ export declare function godotTypeToSchemaType(t: string): string | undefined; /** 从单个 GD command doc 构建 MCP Tool。 * 对标竞品 buildTool:name = method,description = doc.description, * inputSchema.properties 从 params 构建,required 从 params.filter(required) 取。 */ export declare function buildToolFromDocs(methodName: string, doc: GdCommandDoc): Tool; /** 从全量 GD docs 构建排序后的 Tool[](对标竞品 buildTypedTools)。 * 排序保证幂等;名字冲突保留先到 + 日志;体积超限截断。 */ export declare function buildAllDynamicTools(docs: Record, staticToolNames: Set): Tool[]; /** Live schema 缓存管理器。 * 首次 getDynamicTools() 时拉取;editor 重连时调 invalidate() 刷新。 * editor 离线时返回空数组(降级)。 */ export declare class DynamicSchemaCache { private cachedTools; private fetcher; private staticToolNames; /** 设置 docs 拉取器(由 GodotServer 注入,封装 EditorConnection.request) */ setFetcher(fetcher: DocsFetcher | null): void; /** 设置静态工具名集合(用于冲突检测,动态工具不覆盖静态) */ setStaticToolNames(names: Set): void; /** 获取动态工具列表(带缓存)。 * editor 离线或拉取失败时返回空数组(降级,只留 godot_advanced_tool 兜底)。 */ getDynamicTools(): Promise; /** 清除缓存(下次 getDynamicTools 重新拉取)。 * editor 重连/断开时调用,确保工具集反映最新 addon 注册状态。 */ invalidate(): void; } /** 全局单例(GodotServer 持有并注入 fetcher) */ export declare const dynamicSchema: DynamicSchemaCache; export {};