paqad-ai 1.46.0 → 1.46.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/cli/index.js +51 -59
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +127 -35
- package/dist/index.js.map +1 -1
- package/dist/kernel/gate.js +37 -26
- package/dist/kernel/gate.js.map +1 -1
- package/dist/stage-evidence/live-writer.d.ts +10 -1
- package/dist/stage-evidence/live-writer.js +23 -29
- package/dist/stage-evidence/live-writer.js.map +1 -1
- package/dist/stage-evidence/marker-parse.js +15 -26
- package/dist/stage-evidence/marker-parse.js.map +1 -1
- package/dist/stage-evidence/narration.js +19 -3
- package/dist/stage-evidence/narration.js.map +1 -1
- package/package.json +1 -1
- package/runtime/hooks/lib/codex-rollout.mjs +90 -0
- package/runtime/hooks/verification-record.mjs +13 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# paqad-ai
|
|
2
2
|
|
|
3
|
+
## 1.46.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b3fc7df: fix(#313): cross-provider enforcement + RAG coverage from the dogfood benchmark
|
|
8
|
+
|
|
9
|
+
- **Codex stage markers no longer lost.** On `codex-cli` the completion `Stop`
|
|
10
|
+
payload carries no readable `transcript_path` and its inline final message is
|
|
11
|
+
marker-less, so well-behaved Codex runs recorded zero stages and were silently
|
|
12
|
+
scored "blocked". The record-only hook now reads the session's own
|
|
13
|
+
`~/.codex/sessions/**/rollout-*.jsonl` (honoring `CODEX_HOME`), and the marker
|
|
14
|
+
parser now understands Codex's `payload`-nested rollout shape.
|
|
15
|
+
- **`module-docs-structure` stops over-blocking pre-existing flat docs.** A
|
|
16
|
+
doc-sync that merely touched a flat `docs/modules/{module}/features/{feature}.md`
|
|
17
|
+
file already established repo-wide is no longer hard-failed into a revert (same
|
|
18
|
+
family as #310). A lone flat doc introduced into an otherwise-nested repo still
|
|
19
|
+
fails.
|
|
20
|
+
- **Honest RAG host-surface coverage.** Documented that the `UserPromptSubmit`
|
|
21
|
+
retrieval seam only runs where the host executes that hook; the JetBrains Claude
|
|
22
|
+
surface did not in the benchmark, so retrieval degrades to grep/read there.
|
|
23
|
+
|
|
24
|
+
## 1.46.1
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- c0e7efa: Fix #310: the feature-development stage gate blocked documentation-only work and could deadlock unclearably.
|
|
29
|
+
|
|
30
|
+
- **Scope.** The pre-mutation and completion stage gates now govern **feature development only**. A documentation-only change (`docs/**`, markdown) or a framework-internal change (`.paqad/**`) is no longer forced through the planning → specification → … → checks stages. The check is language-agnostic (an exclude list, not a `src/` allowlist), so it holds for any onboarded stack (Laravel `app/*.php`, Python, Go, …), and it keeps full teeth on real source edits.
|
|
31
|
+
- **No deadlock.** The live writer no longer stamps a stage (e.g. `development`/`documentation_sync`) before the pre-code stages are recorded — that phantom used to poison stage ordering so `planning` could never be recorded again. The recorder no longer rejects an out-of-order earlier `stage_start`; ordering is judged non-destructively by the completion fold, so the stages the gate demands can always be recorded and the same-turn marker remediation actually clears the block.
|
|
32
|
+
- **Consistent predicate.** An `end` with no matching `start` is now `inconclusive`, not silently `complete`, so the pre-mutation gate and the completion verifier agree a stage needs a start.
|
|
33
|
+
- **Reachable remedy.** Editing `.paqad/configs/.config.policy` (the `stages_mode` escape hatch) is no longer blocked by the gate it configures.
|
|
34
|
+
|
|
3
35
|
## 1.46.0
|
|
4
36
|
|
|
5
37
|
### Minor Changes
|
package/dist/cli/index.js
CHANGED
|
@@ -18302,7 +18302,7 @@ var HealthChecker = class {
|
|
|
18302
18302
|
}
|
|
18303
18303
|
checkFrameworkArtifacts(projectRoot) {
|
|
18304
18304
|
const required = [PATHS.PROJECT_PROFILE, PATHS.FRAMEWORK_PATH];
|
|
18305
|
-
const missing = required.filter((
|
|
18305
|
+
const missing = required.filter((relative26) => !existsSync32(join58(projectRoot, relative26)));
|
|
18306
18306
|
return missing.length === 0 ? pass("Framework artifacts exist", "Framework artifacts are present") : fail(
|
|
18307
18307
|
"Framework artifacts exist",
|
|
18308
18308
|
`Missing framework artifacts: ${missing.join(", ")}`,
|
|
@@ -24969,7 +24969,7 @@ init_esm_shims();
|
|
|
24969
24969
|
|
|
24970
24970
|
// src/verification/gates/module-docs-structure.ts
|
|
24971
24971
|
init_esm_shims();
|
|
24972
|
-
import { existsSync as existsSync57 } from "fs";
|
|
24972
|
+
import { existsSync as existsSync57, readdirSync as readdirSync13 } from "fs";
|
|
24973
24973
|
import { readFile as readFile57 } from "fs/promises";
|
|
24974
24974
|
import { join as join116 } from "path";
|
|
24975
24975
|
|
|
@@ -25879,7 +25879,7 @@ init_esm_shims();
|
|
|
25879
25879
|
// src/packs/compliance-packs.ts
|
|
25880
25880
|
init_esm_shims();
|
|
25881
25881
|
init_runtime_paths();
|
|
25882
|
-
import { existsSync as existsSync68, readdirSync as
|
|
25882
|
+
import { existsSync as existsSync68, readdirSync as readdirSync14, readFileSync as readFileSync55 } from "fs";
|
|
25883
25883
|
import { homedir as homedir9 } from "os";
|
|
25884
25884
|
import { join as join128 } from "path";
|
|
25885
25885
|
import YAML16 from "yaml";
|
|
@@ -25973,16 +25973,21 @@ init_session();
|
|
|
25973
25973
|
// src/stage-evidence/stages.ts
|
|
25974
25974
|
init_esm_shims();
|
|
25975
25975
|
var STAGE_EVIDENCE_STAGES = [...STAGE_ORDER];
|
|
25976
|
-
var
|
|
25976
|
+
var MANDATORY_STAGES = [
|
|
25977
|
+
"planning",
|
|
25978
|
+
"specification",
|
|
25979
|
+
"development",
|
|
25980
|
+
"review",
|
|
25981
|
+
"checks",
|
|
25982
|
+
"documentation_sync"
|
|
25983
|
+
];
|
|
25984
|
+
var PRE_CODE_STAGES = MANDATORY_STAGES.slice(
|
|
25985
|
+
0,
|
|
25986
|
+
MANDATORY_STAGES.indexOf("development")
|
|
25987
|
+
);
|
|
25977
25988
|
function isKnownStage(stage) {
|
|
25978
25989
|
return STAGE_EVIDENCE_STAGES.includes(stage);
|
|
25979
25990
|
}
|
|
25980
|
-
function isCompletionAnchoredStage(stage) {
|
|
25981
|
-
return COMPLETION_ANCHORED_STAGES.includes(stage);
|
|
25982
|
-
}
|
|
25983
|
-
function stageIndex(stage) {
|
|
25984
|
-
return STAGE_EVIDENCE_STAGES.indexOf(stage);
|
|
25985
|
-
}
|
|
25986
25991
|
|
|
25987
25992
|
// src/stage-evidence/recorder.ts
|
|
25988
25993
|
var APPEND_OPTS3 = (now) => ({
|
|
@@ -26014,29 +26019,12 @@ function resolveOrdinal2(projectRoot, sessionId, ctx) {
|
|
|
26014
26019
|
}
|
|
26015
26020
|
return openStageEvidence(projectRoot, ctx).ordinal;
|
|
26016
26021
|
}
|
|
26017
|
-
function highestStartedIndex(rows) {
|
|
26018
|
-
let highest = -1;
|
|
26019
|
-
for (const row of rows) {
|
|
26020
|
-
if (row.kind === "stage_start" && typeof row.stage === "string") {
|
|
26021
|
-
highest = Math.max(highest, stageIndex(row.stage));
|
|
26022
|
-
}
|
|
26023
|
-
}
|
|
26024
|
-
return highest;
|
|
26025
|
-
}
|
|
26026
26022
|
function startStage(projectRoot, stage, ctx) {
|
|
26027
26023
|
if (!isKnownStage(stage)) {
|
|
26028
26024
|
throw new Error(`Unknown stage "${stage}" \u2014 not in the feature-development registry.`);
|
|
26029
26025
|
}
|
|
26030
26026
|
const sessionId = resolveSessionId(projectRoot, ctx.sessionId);
|
|
26031
26027
|
const ordinal = resolveOrdinal2(projectRoot, sessionId, ctx);
|
|
26032
|
-
const rows = readSessionUnit(projectRoot, STAGE_EVIDENCE_DOC_TYPE, sessionId, ordinal);
|
|
26033
|
-
const highest = highestStartedIndex(rows);
|
|
26034
|
-
const index = stageIndex(stage);
|
|
26035
|
-
if (!isCompletionAnchoredStage(stage) && highest >= 0 && index < highest) {
|
|
26036
|
-
throw new Error(
|
|
26037
|
-
`Out-of-order stage "${stage}": a later stage already started. Stages must run in registry order.`
|
|
26038
|
-
);
|
|
26039
|
-
}
|
|
26040
26028
|
return append(projectRoot, sessionId, ordinal, ctx, {
|
|
26041
26029
|
kind: "stage_start",
|
|
26042
26030
|
stage,
|
|
@@ -26106,6 +26094,10 @@ init_session();
|
|
|
26106
26094
|
init_esm_shims();
|
|
26107
26095
|
init_framework_config();
|
|
26108
26096
|
|
|
26097
|
+
// src/stage-evidence/scope.ts
|
|
26098
|
+
init_esm_shims();
|
|
26099
|
+
import { isAbsolute as isAbsolute3, relative as relative22 } from "pathe";
|
|
26100
|
+
|
|
26109
26101
|
// src/verification/repository/verdict.ts
|
|
26110
26102
|
init_esm_shims();
|
|
26111
26103
|
|
|
@@ -26253,7 +26245,7 @@ init_esm_shims();
|
|
|
26253
26245
|
init_esm_shims();
|
|
26254
26246
|
init_logger_registry();
|
|
26255
26247
|
import { mkdir as mkdir45, writeFile as writeFile45 } from "fs/promises";
|
|
26256
|
-
import { join as join134, relative as
|
|
26248
|
+
import { join as join134, relative as relative23 } from "path";
|
|
26257
26249
|
init_paths();
|
|
26258
26250
|
init_path_utils();
|
|
26259
26251
|
|
|
@@ -26295,7 +26287,7 @@ init_cancelled_error();
|
|
|
26295
26287
|
init_events();
|
|
26296
26288
|
|
|
26297
26289
|
// src/index.ts
|
|
26298
|
-
var VERSION = "1.46.
|
|
26290
|
+
var VERSION = "1.46.2";
|
|
26299
26291
|
|
|
26300
26292
|
// src/cli/commands/audit.ts
|
|
26301
26293
|
init_esm_shims();
|
|
@@ -27294,7 +27286,7 @@ function resolveRelativeSpec(projectRoot, spec) {
|
|
|
27294
27286
|
init_esm_shims();
|
|
27295
27287
|
init_paths();
|
|
27296
27288
|
import { existsSync as existsSync98 } from "fs";
|
|
27297
|
-
import { dirname as dirname69, isAbsolute as
|
|
27289
|
+
import { dirname as dirname69, isAbsolute as isAbsolute4, join as join169, resolve as resolve10 } from "path";
|
|
27298
27290
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
27299
27291
|
import { Command as Command4 } from "commander";
|
|
27300
27292
|
|
|
@@ -27392,7 +27384,7 @@ function buildNodeDetail(graph, nodeId, options) {
|
|
|
27392
27384
|
init_esm_shims();
|
|
27393
27385
|
import { existsSync as existsSync70 } from "fs";
|
|
27394
27386
|
import { readFile as readFile69, readdir as readdir15, stat as stat8 } from "fs/promises";
|
|
27395
|
-
import { extname as extname8, join as join138, relative as
|
|
27387
|
+
import { extname as extname8, join as join138, relative as relative24, sep as sep6 } from "path";
|
|
27396
27388
|
init_paths();
|
|
27397
27389
|
var KNOWN_TIERS = /* @__PURE__ */ new Set(["green", "amber", "red", "unknown"]);
|
|
27398
27390
|
function normaliseTier(value) {
|
|
@@ -27430,7 +27422,7 @@ function languageFromExtension(filePath) {
|
|
|
27430
27422
|
return map[ext] ?? null;
|
|
27431
27423
|
}
|
|
27432
27424
|
function toProjectRelative2(projectRoot, absolutePath) {
|
|
27433
|
-
const rel =
|
|
27425
|
+
const rel = relative24(projectRoot, absolutePath);
|
|
27434
27426
|
return rel === "" ? "." : rel.split(sep6).join("/");
|
|
27435
27427
|
}
|
|
27436
27428
|
function moduleNameForFile(relativePath, knownModules) {
|
|
@@ -28737,7 +28729,7 @@ import { join as join145 } from "path";
|
|
|
28737
28729
|
|
|
28738
28730
|
// src/dashboard/collectors/fs-helpers.ts
|
|
28739
28731
|
init_esm_shims();
|
|
28740
|
-
import { readdirSync as
|
|
28732
|
+
import { readdirSync as readdirSync15, statSync as statSync10 } from "fs";
|
|
28741
28733
|
import { join as join144 } from "path";
|
|
28742
28734
|
function scanDirectory(root, options = {}) {
|
|
28743
28735
|
const out = [];
|
|
@@ -28746,7 +28738,7 @@ function scanDirectory(root, options = {}) {
|
|
|
28746
28738
|
const walk4 = (dir, depth, rel) => {
|
|
28747
28739
|
let entries;
|
|
28748
28740
|
try {
|
|
28749
|
-
entries =
|
|
28741
|
+
entries = readdirSync15(dir, { withFileTypes: true });
|
|
28750
28742
|
} catch {
|
|
28751
28743
|
return;
|
|
28752
28744
|
}
|
|
@@ -29285,16 +29277,16 @@ function buildEvidencePacket(projectRoot, options = {}) {
|
|
|
29285
29277
|
init_esm_shims();
|
|
29286
29278
|
init_paths();
|
|
29287
29279
|
init_path_utils();
|
|
29288
|
-
import { existsSync as existsSync78, readdirSync as
|
|
29280
|
+
import { existsSync as existsSync78, readdirSync as readdirSync16 } from "fs";
|
|
29289
29281
|
import { join as join148 } from "path";
|
|
29290
29282
|
import YAML19 from "yaml";
|
|
29291
29283
|
var EDITABLE_EXTENSIONS = [".md", ".yml", ".yaml", ".json"];
|
|
29292
|
-
function buildNode(absolute,
|
|
29293
|
-
const entries =
|
|
29284
|
+
function buildNode(absolute, relative26, name) {
|
|
29285
|
+
const entries = readdirSync16(absolute, { withFileTypes: true });
|
|
29294
29286
|
const children = [];
|
|
29295
29287
|
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
29296
29288
|
if (entry.name.startsWith(".")) continue;
|
|
29297
|
-
const childRelative =
|
|
29289
|
+
const childRelative = relative26 === "" ? entry.name : `${relative26}/${entry.name}`;
|
|
29298
29290
|
if (entry.isDirectory()) {
|
|
29299
29291
|
const child = buildNode(join148(absolute, entry.name), childRelative, entry.name);
|
|
29300
29292
|
if (child) children.push(child);
|
|
@@ -29302,7 +29294,7 @@ function buildNode(absolute, relative25, name) {
|
|
|
29302
29294
|
children.push({ path: childRelative, name: entry.name, type: "file" });
|
|
29303
29295
|
}
|
|
29304
29296
|
}
|
|
29305
|
-
return { path:
|
|
29297
|
+
return { path: relative26, name, type: "directory", children };
|
|
29306
29298
|
}
|
|
29307
29299
|
function listInstructionsTree(projectRoot) {
|
|
29308
29300
|
const root = join148(projectRoot, PATHS.INSTRUCTIONS_DIR);
|
|
@@ -29346,7 +29338,7 @@ function readInstructionsFile(projectRoot, treePath) {
|
|
|
29346
29338
|
// src/dashboard/inventory.ts
|
|
29347
29339
|
init_esm_shims();
|
|
29348
29340
|
init_paths();
|
|
29349
|
-
import { existsSync as existsSync79, readdirSync as
|
|
29341
|
+
import { existsSync as existsSync79, readdirSync as readdirSync17, readFileSync as readFileSync61 } from "fs";
|
|
29350
29342
|
import { homedir as homedir10 } from "os";
|
|
29351
29343
|
import { join as join149 } from "path";
|
|
29352
29344
|
import YAML20 from "yaml";
|
|
@@ -29358,7 +29350,7 @@ function countFilesRecursive(dir, extensions) {
|
|
|
29358
29350
|
const current = stack.pop();
|
|
29359
29351
|
let entries;
|
|
29360
29352
|
try {
|
|
29361
|
-
entries =
|
|
29353
|
+
entries = readdirSync17(current, { withFileTypes: true });
|
|
29362
29354
|
} catch {
|
|
29363
29355
|
continue;
|
|
29364
29356
|
}
|
|
@@ -29377,7 +29369,7 @@ function countFilesRecursive(dir, extensions) {
|
|
|
29377
29369
|
function countEntries(dir, suffix) {
|
|
29378
29370
|
if (!existsSync79(dir)) return 0;
|
|
29379
29371
|
try {
|
|
29380
|
-
const entries =
|
|
29372
|
+
const entries = readdirSync17(dir);
|
|
29381
29373
|
return suffix === void 0 ? entries.filter((name) => !name.startsWith(".")).length : entries.filter((name) => name.endsWith(suffix)).length;
|
|
29382
29374
|
} catch {
|
|
29383
29375
|
return 0;
|
|
@@ -29415,7 +29407,7 @@ function counted(count, singular, plural, zero) {
|
|
|
29415
29407
|
}
|
|
29416
29408
|
function buildInventory(projectRoot, options = {}) {
|
|
29417
29409
|
const paqadHome = options.paqadHome ?? join149(homedir10(), ".paqad-ai");
|
|
29418
|
-
const at = (
|
|
29410
|
+
const at = (relative26) => join149(projectRoot, relative26);
|
|
29419
29411
|
const profile = parseYamlFile(at(PATHS.PROJECT_PROFILE));
|
|
29420
29412
|
const activeCapabilities = Array.isArray(profile?.active_capabilities) ? profile.active_capabilities : [];
|
|
29421
29413
|
const intelligence = profile?.intelligence ?? null;
|
|
@@ -29920,7 +29912,7 @@ function renderMarkdown(report) {
|
|
|
29920
29912
|
// src/dashboard/onboarding-checklist.ts
|
|
29921
29913
|
init_esm_shims();
|
|
29922
29914
|
init_paths();
|
|
29923
|
-
import { existsSync as existsSync80, readdirSync as
|
|
29915
|
+
import { existsSync as existsSync80, readdirSync as readdirSync18, readFileSync as readFileSync62 } from "fs";
|
|
29924
29916
|
import { join as join150 } from "path";
|
|
29925
29917
|
function fileHasContent(path11) {
|
|
29926
29918
|
try {
|
|
@@ -29931,13 +29923,13 @@ function fileHasContent(path11) {
|
|
|
29931
29923
|
}
|
|
29932
29924
|
function dirHasEntries(path11) {
|
|
29933
29925
|
try {
|
|
29934
|
-
return existsSync80(path11) &&
|
|
29926
|
+
return existsSync80(path11) && readdirSync18(path11).some((name) => !name.startsWith("."));
|
|
29935
29927
|
} catch {
|
|
29936
29928
|
return false;
|
|
29937
29929
|
}
|
|
29938
29930
|
}
|
|
29939
29931
|
function buildOnboardingChecklist(projectRoot) {
|
|
29940
|
-
const at = (
|
|
29932
|
+
const at = (relative26) => join150(projectRoot, relative26);
|
|
29941
29933
|
const agentConnected = [PATHS.CLAUDE_MD, PATHS.AGENTS_MD, PATHS.ANTIGRAVITY_MD, PATHS.GEMINI_MD].some(
|
|
29942
29934
|
(entry) => existsSync80(at(entry))
|
|
29943
29935
|
) && existsSync80(at(PATHS.ONBOARDING_MANIFEST));
|
|
@@ -30235,7 +30227,7 @@ var OpsJobRunner = class {
|
|
|
30235
30227
|
init_esm_shims();
|
|
30236
30228
|
init_loader();
|
|
30237
30229
|
init_manager();
|
|
30238
|
-
import { existsSync as existsSync81, readdirSync as
|
|
30230
|
+
import { existsSync as existsSync81, readdirSync as readdirSync19 } from "fs";
|
|
30239
30231
|
import { join as join152 } from "path";
|
|
30240
30232
|
var SOURCE_ORDER3 = ["built-in", "global", "project"];
|
|
30241
30233
|
var PACK_NAME_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
|
|
@@ -30262,7 +30254,7 @@ function listPacks2(projectRoot, overrides = {}) {
|
|
|
30262
30254
|
if (!existsSync81(sourceRoot)) {
|
|
30263
30255
|
continue;
|
|
30264
30256
|
}
|
|
30265
|
-
const packDirs =
|
|
30257
|
+
const packDirs = readdirSync19(sourceRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory()).filter((entry) => !entry.name.startsWith("_") && !entry.name.startsWith("."));
|
|
30266
30258
|
for (const entry of packDirs) {
|
|
30267
30259
|
const pack = loader.validatePack(join152(sourceRoot, entry.name), source);
|
|
30268
30260
|
byName.set(pack.manifest.name, {
|
|
@@ -31388,7 +31380,7 @@ function collectModuleMapDrift(projectRoot) {
|
|
|
31388
31380
|
// src/dashboard/collectors/pentest.ts
|
|
31389
31381
|
init_esm_shims();
|
|
31390
31382
|
init_paths();
|
|
31391
|
-
import { existsSync as existsSync89, readFileSync as readFileSync67, readdirSync as
|
|
31383
|
+
import { existsSync as existsSync89, readFileSync as readFileSync67, readdirSync as readdirSync20 } from "fs";
|
|
31392
31384
|
import { join as join160 } from "path";
|
|
31393
31385
|
var HELPER11 = {
|
|
31394
31386
|
what: "Each run of the pentest workflow leaves a progress.json + findings under .paqad/pentest/runs/<run_id>/.",
|
|
@@ -31398,7 +31390,7 @@ function listRuns(projectRoot) {
|
|
|
31398
31390
|
const dir = join160(projectRoot, PATHS.PENTEST_RUNS_DIR);
|
|
31399
31391
|
if (!existsSync89(dir)) return [];
|
|
31400
31392
|
try {
|
|
31401
|
-
return
|
|
31393
|
+
return readdirSync20(dir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
|
|
31402
31394
|
} catch {
|
|
31403
31395
|
return [];
|
|
31404
31396
|
}
|
|
@@ -32687,14 +32679,14 @@ data: ${JSON.stringify(data)}
|
|
|
32687
32679
|
return;
|
|
32688
32680
|
}
|
|
32689
32681
|
if (instructionsFileMatch && req.method === "PUT") {
|
|
32690
|
-
const
|
|
32682
|
+
const relative26 = decodeURIComponent(instructionsFileMatch[1]);
|
|
32691
32683
|
await handleMutation(req, res, async () => {
|
|
32692
32684
|
const body = await readJsonBody2(req);
|
|
32693
32685
|
if (typeof body.content !== "string") {
|
|
32694
32686
|
throw new Error("Body must include the file `content` as a string.");
|
|
32695
32687
|
}
|
|
32696
32688
|
return writeManagedFile(options.projectRoot, {
|
|
32697
|
-
relativePath: `${PATHS.INSTRUCTIONS_DIR}/${
|
|
32689
|
+
relativePath: `${PATHS.INSTRUCTIONS_DIR}/${relative26}`,
|
|
32698
32690
|
content: body.content,
|
|
32699
32691
|
baseHash: typeof body.baseHash === "string" ? body.baseHash : null,
|
|
32700
32692
|
action: "dashboard.instructions.write"
|
|
@@ -33010,7 +33002,7 @@ function openBrowser(options) {
|
|
|
33010
33002
|
var DEFAULT_PORT = 5372;
|
|
33011
33003
|
function resolveStaticDir(override) {
|
|
33012
33004
|
if (override) {
|
|
33013
|
-
return
|
|
33005
|
+
return isAbsolute4(override) ? override : resolve10(process.cwd(), override);
|
|
33014
33006
|
}
|
|
33015
33007
|
const here = dirname69(fileURLToPath3(import.meta.url));
|
|
33016
33008
|
const candidates = [
|
|
@@ -33210,14 +33202,14 @@ function createEvidenceCommand() {
|
|
|
33210
33202
|
init_esm_shims();
|
|
33211
33203
|
init_paths();
|
|
33212
33204
|
import { existsSync as existsSync99 } from "fs";
|
|
33213
|
-
import { dirname as dirname71, isAbsolute as
|
|
33205
|
+
import { dirname as dirname71, isAbsolute as isAbsolute5, join as join170, resolve as resolve12 } from "path";
|
|
33214
33206
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
33215
33207
|
import { Command as Command9 } from "commander";
|
|
33216
33208
|
var DEFAULT_PORT2 = 5372;
|
|
33217
33209
|
var DEPRECATION_LINE = "paqad-ai graph has moved into the dashboard. Opening the dashboard on the Graph view. Run paqad-ai dashboard next time.";
|
|
33218
33210
|
function resolveStaticDir2(override) {
|
|
33219
33211
|
if (override) {
|
|
33220
|
-
return
|
|
33212
|
+
return isAbsolute5(override) ? override : resolve12(process.cwd(), override);
|
|
33221
33213
|
}
|
|
33222
33214
|
const here = dirname71(fileURLToPath4(import.meta.url));
|
|
33223
33215
|
const candidates = [
|
|
@@ -34061,7 +34053,7 @@ function createPacksCommand() {
|
|
|
34061
34053
|
init_esm_shims();
|
|
34062
34054
|
init_project_intelligence();
|
|
34063
34055
|
import { readFileSync as readFileSync76 } from "fs";
|
|
34064
|
-
import { isAbsolute as
|
|
34056
|
+
import { isAbsolute as isAbsolute6, join as join174 } from "path";
|
|
34065
34057
|
import { confirm, input as input2, select as select3 } from "@inquirer/prompts";
|
|
34066
34058
|
import { Command as Command18 } from "commander";
|
|
34067
34059
|
init_framework_config();
|
|
@@ -35048,7 +35040,7 @@ function createRagCommand() {
|
|
|
35048
35040
|
readFile: (path11) => {
|
|
35049
35041
|
try {
|
|
35050
35042
|
return readFileSync76(
|
|
35051
|
-
|
|
35043
|
+
isAbsolute6(path11) ? path11 : join174(options.projectRoot, path11),
|
|
35052
35044
|
"utf8"
|
|
35053
35045
|
);
|
|
35054
35046
|
} catch {
|
|
@@ -35508,7 +35500,7 @@ init_session();
|
|
|
35508
35500
|
init_esm_shims();
|
|
35509
35501
|
init_ledger();
|
|
35510
35502
|
init_session();
|
|
35511
|
-
import { isAbsolute as
|
|
35503
|
+
import { isAbsolute as isAbsolute7, relative as relative25 } from "pathe";
|
|
35512
35504
|
function recordMarkedStage(projectRoot, input3) {
|
|
35513
35505
|
if (!isKnownStage(input3.stage)) return false;
|
|
35514
35506
|
const ctx = {
|
|
@@ -35573,7 +35565,7 @@ function createStageCommand() {
|
|
|
35573
35565
|
const recorded = recordMarkedStage(root, { sessionId, stage, phase });
|
|
35574
35566
|
if (!recorded) {
|
|
35575
35567
|
console.error(
|
|
35576
|
-
`could not record "${stage} ${phase}" \u2014 unknown stage
|
|
35568
|
+
`could not record "${stage} ${phase}" \u2014 unknown stage "${stage}". Stages, in order: ${STAGE_ORDER.join(", ")}`
|
|
35577
35569
|
);
|
|
35578
35570
|
process.exitCode = 1;
|
|
35579
35571
|
return;
|