/** * Upgrade Reconcile — 内部工具与常量。 * * 叶子模块:纯字符串/哈希/版本/文件系统辅助函数 + 路径与修订常量。 * 不依赖任何业务模块,供 revision/state_io/impact/propagation/plan 共享。 * * 注意:readPackageVersion 用 new URL 相对当前文件解析 package.json。 * 本文件位于 src/core/upgrade_reconcile/,比原单文件深一级, * 故 URL 前缀为 "../../../package.json"(原文件为 "../../package.json")。 * * 职责边界: * - 负责:提供稳定哈希/排序字符串化/semver 比较/原子写盘/路径常量与版本探测(纯工具) * - 不负责:任何业务语义、不写升级状态(只提供 writeJsonAtomic 能力,由 state_io 落盘) * * 被谁调用:upgrade_reconcile 子模块 revision / state_io / impact / propagation / plan(共享工具与常量) * 调用谁:无业务模块依赖(仅 node:crypto/node:fs、core/types、shared/helpers) * * 数据流:原始输入/常量 → 哈希·排序字符串化·semver 比较·目录探测·原子写盘 → 字符串/布尔/JSON 文件 * 持久化:本模块自身只定义路径常量(.soloforge/upgrade/**、state|gates|reviews|waivers 探测)并提供 writeJsonAtomic 原子写能力;不直接写业务文件 */ import type { DomainName } from "../types.js"; import type { ArtifactRef } from "./types.js"; export declare const UPGRADE_STATE_FILE = ".soloforge/upgrade/state.json"; export declare const UPGRADE_PLANS_DIR = ".soloforge/upgrade/plans"; export declare const IMPACT_MANIFEST_PATH = "templates/shared/upgrade_impacts.json"; export declare const TEMPLATE_REVISION = "1"; export declare const ADAPTER_PROMPT_REVISION = "1"; export declare function stableStringify(value: unknown): string; export declare function sha256(input: string): string; export declare function artifactKey(ref: Pick): string; export declare function domainIndex(domain: DomainName): number; export declare function readPackageVersion(): string; export declare function compareSemver(a: string, b: string): number; export declare function projectHasUpgradeHistory(projectRoot: string): boolean; export declare function writeJsonAtomic(filePath: string, data: unknown): Promise;