/** 去除 UTF-8 BOM(Windows 工具有时写入 BOM,会破坏 JSON.parse)。 */ export declare function stripBom(raw: string): string; /** * Tier2-3: 剥离 JSONC 注释(// 行注释、/* 块注释)和尾逗逗号,返回严格 JSON。 * * Zed 等 editor 的 settings.json 是 JSONC(含注释),标准 JSON.parse 会失败 → * readJsonConfigWithBackup 把含注释的合法配置当损坏文件 backup + 覆盖, * 导致用户全部配置丢失。本函数在 parse 前剥离注释,让 JSONC 配置能被正确读取。 * * 字符级状态机(参考 code-review-graph skills.py:428-502),零依赖。 * 关键:字符串内的 // 和 , 不被误删(只剥结构位置的)。 */ export declare function stripJsonc(raw: string): string; /** * C1: 构建 MCP server env,保留旧 env 中白名单前缀的用户配置(防 reconfigure 静默丢失)。 * * 13 adapter 旧实现 `env: { GODOT_PATH: godotPath }` 完全覆盖 oldEntry.env —— 用户配的 * ALLOWED_PROJECT_PATHS / GODOT_MCP_BRIDGE_* 重跑 setup 后静默丢失,复发 DEFECT * cli-configure-env-field-overwrite。本 helper 仅保留白名单前缀且值为 string 的条目, * 其余(含脏值/非 string)过滤。 * * @param godotPath 必填,始终写入 GODOT_PATH * @param oldEnv 旧 entry 的 env/environment 字段(Record);undefined 时仅含 GODOT_PATH * @returns 新 env 对象(GODOT_PATH + 白名单保留项) */ export declare function buildEnv(godotPath: string, oldEnv?: Record): Record; /** * 读取 JSON 配置文件,用于 CLI client adapter 的 configure()。 * * F3: 当文件存在但 JSON 解析失败(用户配置损坏)时,**不静默用空对象覆盖**—— * 先把原始内容备份到 `.corrupt..bak` 并打印警告,再返回 {} 让调用方 * 以干净状态继续写入。备份失败(磁盘满/权限)则抛错,绝不覆盖未备份的损坏文件。 * * - 文件不存在 → 返回 {} * - 合法 JSON(含 BOM,经 stripBom)→ 返回解析结果 * - 损坏 JSON → 备份 raw 后返回 {} */ export declare function readJsonConfigWithBackup(filePath: string): Record; /** * 读取 JSON 配置文件,用于 isConfigured() 只读检查。 * * - 文件不存在 → 返回 null(调用方返 false) * - 合法 JSON(含 BOM,经 stripBom)→ 返回解析结果 * - 损坏 JSON(BOM strip 后仍损坏)→ 返回 null(调用方返 false,不抛错、不备份) * * 与 readJsonConfigWithBackup 区别:只读不备份、不抛错、not_found 返 null。 * 设计原因:isConfigured 现状是 try{...}catch{return false} 吞错;带 BOM 的合法配置 * 若内联 JSON.parse 会 throw→catch→false→doctor 误报 + setup 破坏幂等。统一改用本函数。 */ export declare function readJsonForCheck(filePath: string): Record | null; /** * 原子写入配置文件并保持原有文件 mode(F3: adapter-no-mode-preserve)。 * * A-ATOMIC (2026-09-01): 实现上移至 src/core/fs-atomic.ts(与 scene/project 两份 * 重复实现合并,并集语义含 Windows 锁定降级直写),此处 re-export 保兼容。 * 语义差异说明:rename 失败时此前直接抛错,core 版在 Windows 上降级为直写保可用 * (与 project.ts I-1 行为一致);非 Windows 行为不变。 */ export { writeFileAtomicWithMode } from '../../core/fs-atomic.js';