/** 递归列 addons 目录下所有文件(非仅 .gd,含 plugin.cfg/.tscn)。 * 跳过 symlink 目录(check-gdscript B6 防逃逸,防 symlink 跳出 root)。 */ export declare function listAddonFiles(root: string): string[]; export interface AddonSyncResult { inSync: boolean; fileCount: number; missing: string[]; differing: string[]; extra: string[]; } /** 对比上游 vs 目标 addons 目录。内容对比用 readFileSync + ===(addons 文件小无需 hash)。 */ export declare function compareAddons(upstream: string, target: string): AddonSyncResult; export interface BridgeScriptCheckResult { /** absent=项目未装;bundled-missing=包内 bundled 不可读(dev 模式等);in-sync=字节一致; * eol-only=仅行尾差异(CRLF 转换);modified=内容真实不同(手改/损坏/旧版) */ status: 'absent' | 'bundled-missing' | 'in-sync' | 'eol-only' | 'modified'; projectSha256: string | null; bundledSha256: string | null; } /** 对比项目根 mcp_bridge.gd 与包内 bundled 的字节级 SHA-256(与运行时 ping 指纹比对同源: * GD 侧 FileAccess 字节读 + hex_encode,TS 侧 createHash——字节级一致性就是运行时语义)。 * 字节不一致时回退行尾归一比对区分 eol-only/modified,给用户可操作的差异化文案。 */ export declare function compareBridgeScript(projectScript: string, bundledScript: string): BridgeScriptCheckResult; export declare function runDoctor(_args: string[]): Promise;