/** * ChangeWorkspace — 变更产物路径的唯一真相源 * * ADR-001:一个变更 = 一个目录。 * SDD 工作区固定为变更目录下的子目录 `///`, * `sddSubdir` 由 `config.sdd.workspaceDir` 决定,默认 `sdd`。 * * 归档 / 回滚 / 清理等操作一律通过 `artifacts()` 清单驱动, * 新增产物类型只需在此注册,无需修改归档逻辑(ADR-002)。 */ import type { GlobalConfig } from '../config/config-schema.js'; /** 产物标识常量 */ export declare const CHANGE_ROOT_ARTIFACT = "change-root"; export declare const LEGACY_SDD_ARTIFACT = "legacy-sdd"; /** 遗留外部 SDD 账本根目录(相对项目根) */ export declare const LEGACY_SDD_ROOT = ".specpow/sdd"; export interface ChangeArtifact { /** 产物标识:'change-root' | 'legacy-sdd' */ id: string; /** 绝对路径 */ path: string; /** 是否必需(缺失即视为异常) */ required: boolean; } export interface ChangeWorkspace { readonly changeName: string; /** // */ readonly root: string; /** SDD 子目录名(变更目录内),默认 'sdd';'.' 表示工件直接位于变更目录根部 */ readonly sddSubdir: string; /** /,默认 /sdd;sddSubdir 为 '.' 时等于 root */ readonly sddDir: string; /** /progress.md */ readonly ledgerPath: string; /** 有序产物清单,供归档/清理迭代 */ artifacts(): ChangeArtifact[]; /** 是否存在遗留外部账本 */ hasLegacySdd(): boolean; /** /.specpow/sdd/ */ legacySddDir(): string; } /** * 解析变更目录内的 SDD 子目录名。 * * - 旧格式(以 `.specpow` 开头,如 `.specpow/changes`)→ 回退为 `sdd`(遗留兼容) * - `.` → 表示 SDD 工件直接位于变更目录根部 * - 其它含路径分隔符的值无法作为子目录名 → 回退默认 `sdd` * - 普通子目录名 → 原样使用 */ export declare function resolveSddSubdir(workspaceDir: string | undefined | null): string; /** * 创建变更工作区视图。 * * @param projectRoot - 项目根目录(绝对路径) * @param changeName - 变更名称 * @param config - 全局配置 */ export declare function createChangeWorkspace(projectRoot: string, changeName: string, config: GlobalConfig): ChangeWorkspace; //# sourceMappingURL=change-workspace.d.ts.map