/** * Delta Spec 合并器 — 移植自 OpenSpec specs-apply.ts * * 结构化合并算法,支持: * - 四阶段合并顺序:RENAMED → REMOVED → MODIFIED → ADDED * - 冲突检测与报告 * - 幂等性检查(已同步则跳过) * - 保留原有格式和注释 * * 增强特性(移植自 OpenSpec): * - 场景丢失守卫(Scenario-loss guard) * - 能力退休(Capability retirement) * - 未计入内容检测(Unaccounted content detection) * - 代码围栏掩码(Code fence masking) */ import { type DeltaBlock } from './delta-parser.js'; export interface MergeResult { content: string; conflicts: string[]; skipped: number; applied: number; /** 未计入内容警告(delta 未覆盖但 base 中存在的段落) */ unaccountedWarnings: string[]; } export interface MergeOptions { /** 强制覆盖,跳过幂等性检查 */ force?: boolean; /** 保留被删除的需求(标记为 retired 而非删除,默认 true) */ retainRemoved?: boolean; /** 启用场景丢失守卫(默认 true) */ scenarioLossGuard?: boolean; /** 启用未计入内容检测(默认 true) */ detectUnaccounted?: boolean; } /** * 构建代码围栏掩码 * * 返回布尔数组,标记哪些行在代码围栏内。 * 用于防止代码块内的文本被误匹配为需求标题。 */ export declare function buildCodeFenceMask(content: string): boolean[]; /** * 将代码围栏内容替换为占位符 * * 返回掩码后的内容和占位符映射表 * * @param namespace - 可选命名空间。同时掩码多份内容(如主规范与 delta)时必须指定互不相同的命名空间, * 否则两侧围栏编号相同会导致占位符相互覆盖。缺省时保持历史格式 `__CODE_FENCE___`。 */ export declare function maskCodeFences(content: string, namespace?: string): { masked: string; placeholders: Map; }; /** * 还原代码围栏占位符 * * 使用 split/join 替换全部出现位置,且不对原文中的 `$&`、`$1`、`$$` 等做替换语义解析 */ export declare function unmaskCodeFences(content: string, placeholders: Map): string; /** * 从内容中提取所有场景名称 * * 匹配格式:### Scenario: 场景名 */ export declare function extractScenarios(content: string): string[]; /** * 检查 MODIFIED 操作是否会导致场景丢失 * * 比较 base spec 中的场景与 delta 中的场景, * 返回 delta 中缺失的场景名称列表。 */ export declare function findMissingScenarios(baseContent: string, deltaContent: string): string[]; /** * 检测 base spec 中 delta 未覆盖的内容 * * 审计整个文件,找出 delta 操作范围之外的内容段落。 * 返回未计入内容的描述列表。 */ export declare function detectUnaccountedContent(baseContent: string, delta: { added: DeltaBlock[]; modified: DeltaBlock[]; removed: DeltaBlock[]; renamed: { oldName: string; newName: string; }[]; }): string[]; /** * 合并 Delta Spec 到现有 Spec * * 四阶段合并顺序: * 1. RENAMED — 重命名需求块 * 2. REMOVED — 删除/退休需求块(默认启用能力退休) * 3. MODIFIED — 更新需求块内容(带场景丢失守卫) * 4. ADDED — 添加新需求块 * * 每个阶段都进行幂等性检查,已同步的操作会被跳过 * * 增强特性: * - 代码围栏掩码:防止代码块内容被误匹配 * - 场景丢失守卫:MODIFIED 操作前检查场景完整性 * - 能力退休:REMOVED 操作默认标记为 [RETIRED] 而非删除 * - 未计入内容检测:合并后检测 delta 未覆盖的内容 */ export declare function mergeDeltaSpec(existingContent: string, deltaContent: string, options?: MergeOptions): MergeResult; //# sourceMappingURL=delta-merger.d.ts.map