paqad-ai
Version:
Spec-driven development framework — AI agents that think before they type
234 lines (230 loc) • 5.55 kB
JavaScript
import { createRequire as __paqadCreateRequire } from 'module'; const require = __paqadCreateRequire(import.meta.url);
import {
addRule,
cleanRuleText,
editRuleText,
removeRuleBullet
} from "../chunk-2FKMXGSE.js";
import {
addRuleEntry,
applyRuleScriptMap,
archiveRule,
assembleMap,
atomicWriteRuleScriptMap,
clearRuleScripts,
collectRuleFiles,
compileRuleScripts,
computeRuleFilesHash,
dropRuleScriptMapSources,
embedRuleIds,
fixturesRoot,
isRuleScriptMapCurrent,
isRuleScriptMapStale,
parseRuleFile,
readDrift,
reconcileRuleScripts,
recordConflictFindings,
runFixtures,
scanAndEmbedIds,
setRuleText,
setVerifiability,
snapshotRuleScriptMap,
upsertScriptEntry
} from "../chunk-YME53X5M.js";
import {
HEADER_MARKER,
RULE_SCRIPT_MAP_SCHEMA_VERSION,
SCRIPT_ABORTED_ERROR,
emptyRuleScriptMap,
enforceRuleScripts,
executeRuleScript,
executeRuleScriptAsync,
extractHeaderFields,
formatEnforcementSummary,
isOnPath,
loadRuleScriptMap,
missingBinaries,
parseScriptHeader,
projectRelativeTargets,
readReport,
ruleRunFindings,
ruleScriptMapPath,
runRuleScripts,
runRuleScriptsAsync,
scriptFilesHash,
serializeRuleScriptMap,
validateFindings,
validateScriptHeader
} from "../chunk-SS625UO5.js";
import "../chunk-3UV6TK6X.js";
import "../chunk-LBNBI3D6.js";
import "../chunk-5ETIY5I3.js";
import "../chunk-UUBQQJVE.js";
import "../chunk-EQYAXXZO.js";
import "../chunk-MDXUST3Z.js";
import {
require_out
} from "../chunk-P4RPU2KB.js";
import "../chunk-LYNDVGNE.js";
import "../chunk-5M55PDWL.js";
import "../chunk-TINPSX3N.js";
import "../chunk-BTDDEK7C.js";
import "../chunk-7TBVBCDH.js";
import "../chunk-RJMJYPHL.js";
import "../chunk-NCYDV2N5.js";
import "../chunk-D6VEUSB6.js";
import "../chunk-BOEVU2BD.js";
import "../chunk-NJE7NS7E.js";
import {
embedRuleMarker,
isRuleId,
mintRuleId,
parseRuleMarker,
parseRuleMarkerRun,
ruleTextHash,
sha256,
stripRuleMarker
} from "../chunk-ACJQW7SB.js";
import "../chunk-YA6SCYMC.js";
import "../chunk-Z3NGWHFX.js";
import "../chunk-YWAORJG6.js";
import "../chunk-Q353EDKY.js";
import "../chunk-SG6LXLDH.js";
import "../chunk-FMQ5YRSP.js";
import "../chunk-AZLA53A6.js";
import {
PATHS
} from "../chunk-IHMBVS6H.js";
import {
__toESM,
init_esm_shims
} from "../chunk-IDFRWBMN.js";
// src/rule-scripts/index.ts
init_esm_shims();
// src/rule-scripts/guard.ts
init_esm_shims();
var OVER_FLAG_THRESHOLDS = {
deterministic: 0.05,
heuristic: 0.2
};
function checkOverFlag(scriptPath, kind, projectRoot, files, threshold = OVER_FLAG_THRESHOLDS[kind]) {
let flagged = 0;
for (const file of files) {
const result = executeRuleScript(scriptPath, { projectRoot, files: [file] });
if (result.ok && (result.report?.findings.length ?? 0) > 0) {
flagged++;
}
}
const checked = files.length;
const rate = checked === 0 ? 0 : flagged / checked;
return {
files_checked: checked,
files_flagged: flagged,
rate,
threshold,
exceeded: rate > threshold
};
}
// src/rule-scripts/prune.ts
init_esm_shims();
var import_fast_glob = __toESM(require_out(), 1);
import { existsSync, readdirSync, rmSync } from "fs";
import { join, sep } from "path";
function pruneOrphanScripts(projectRoot, map) {
const baseRel = PATHS.RULE_SCRIPTS_DIR;
const baseAbs = join(projectRoot, baseRel);
if (!existsSync(baseAbs)) {
return [];
}
const referenced = new Set(map.rules.flatMap((r) => r.scripts.map((s) => s.path)));
const found = import_fast_glob.default.sync("**/*.mjs", {
cwd: baseAbs,
onlyFiles: true,
ignore: [".cache/**", ".history/**"]
});
const deleted = [];
for (const sub of found) {
const rel = join(baseRel, sub);
if (referenced.has(rel)) {
continue;
}
rmSync(join(projectRoot, rel), { force: true });
const stemDir = join(projectRoot, rel.replace(/\.mjs$/, ""));
const fixturesDir = join(stemDir, "__fixtures__");
if (existsSync(fixturesDir)) {
rmSync(fixturesDir, { recursive: true, force: true });
try {
if (readdirSync(stemDir).length === 0) {
rmSync(stemDir, { recursive: true, force: true });
}
} catch {
}
}
deleted.push(rel.split(sep).join("/"));
}
return deleted;
}
export {
HEADER_MARKER,
OVER_FLAG_THRESHOLDS,
RULE_SCRIPT_MAP_SCHEMA_VERSION,
SCRIPT_ABORTED_ERROR,
addRule,
addRuleEntry,
applyRuleScriptMap,
archiveRule,
assembleMap,
atomicWriteRuleScriptMap,
checkOverFlag,
cleanRuleText,
clearRuleScripts,
collectRuleFiles,
compileRuleScripts,
computeRuleFilesHash,
dropRuleScriptMapSources,
editRuleText,
embedRuleIds,
embedRuleMarker,
emptyRuleScriptMap,
enforceRuleScripts,
executeRuleScript,
executeRuleScriptAsync,
extractHeaderFields,
fixturesRoot,
formatEnforcementSummary,
isOnPath,
isRuleId,
isRuleScriptMapCurrent,
isRuleScriptMapStale,
loadRuleScriptMap,
mintRuleId,
missingBinaries,
parseRuleFile,
parseRuleMarker,
parseRuleMarkerRun,
parseScriptHeader,
projectRelativeTargets,
pruneOrphanScripts,
readDrift,
readReport,
reconcileRuleScripts,
recordConflictFindings,
removeRuleBullet,
ruleRunFindings,
ruleScriptMapPath,
ruleTextHash,
runFixtures,
runRuleScripts,
runRuleScriptsAsync,
scanAndEmbedIds,
scriptFilesHash,
serializeRuleScriptMap,
setRuleText,
setVerifiability,
sha256,
snapshotRuleScriptMap,
stripRuleMarker,
upsertScriptEntry,
validateFindings,
validateScriptHeader
};