paqad-ai
Version:
Spec-driven development framework — AI agents that think before they type
63 lines (60 loc) • 2.04 kB
JavaScript
import { createRequire as __paqadCreateRequire } from 'module'; const require = __paqadCreateRequire(import.meta.url);
import {
renameWithRetrySync
} from "./chunk-Z3NGWHFX.js";
import {
PATHS
} from "./chunk-IHMBVS6H.js";
import {
init_esm_shims
} from "./chunk-IDFRWBMN.js";
// src/hud/files.ts
init_esm_shims();
import { mkdirSync, rmSync, writeFileSync } from "fs";
import { dirname, join } from "path";
function safeSessionId(sessionId) {
return sessionId.replace(/[^A-Za-z0-9._-]/g, "_").replace(/^\.+/, "_") || "unknown";
}
function hudSnapshotPath(projectRoot, sessionId) {
return join(projectRoot, PATHS.HUD_DIR, `${safeSessionId(sessionId)}.json`);
}
function hudReceiptPath(projectRoot, sessionId) {
return join(projectRoot, PATHS.HUD_DIR, `${safeSessionId(sessionId)}.receipt.md`);
}
function hudVerdictPath(projectRoot, sessionId) {
return join(projectRoot, PATHS.HUD_DIR, `${safeSessionId(sessionId)}.verdict.json`);
}
function hudVerdictAgreementPath(projectRoot, sessionId) {
return join(projectRoot, PATHS.HUD_DIR, `${safeSessionId(sessionId)}.verdict-agreement.json`);
}
var HUD_COST_CACHE_SUFFIX = ".cost-cache.json";
function hudCostCachePath(projectRoot, sessionId) {
return join(projectRoot, PATHS.HUD_DIR, `${safeSessionId(sessionId)}${HUD_COST_CACHE_SUFFIX}`);
}
var tempSeq = 0;
function writeFileAtomic(target, content) {
mkdirSync(dirname(target), { recursive: true });
tempSeq = (tempSeq + 1) % Number.MAX_SAFE_INTEGER;
const temp = `${target}.tmp-${process.pid}-${tempSeq}`;
try {
writeFileSync(temp, content, "utf8");
renameWithRetrySync(temp, target);
} catch (error) {
rmSync(temp, { force: true });
throw error;
}
}
function hudLastBlockPath(projectRoot, sessionId) {
return join(projectRoot, PATHS.HUD_DIR, `${safeSessionId(sessionId)}.last-block.json`);
}
export {
safeSessionId,
hudSnapshotPath,
hudReceiptPath,
hudVerdictPath,
hudVerdictAgreementPath,
HUD_COST_CACHE_SUFFIX,
hudCostCachePath,
writeFileAtomic,
hudLastBlockPath
};