@principles/pd-cli 1.149.1 → 1.149.3

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.
Files changed (35) hide show
  1. package/dist/commands/evolution-tasks-list.d.ts.map +1 -1
  2. package/dist/commands/evolution-tasks-list.js +15 -12
  3. package/dist/commands/evolution-tasks-list.js.map +1 -1
  4. package/dist/commands/evolution-tasks-show.d.ts.map +1 -1
  5. package/dist/commands/evolution-tasks-show.js +7 -4
  6. package/dist/commands/evolution-tasks-show.js.map +1 -1
  7. package/dist/commands/pain-evidence.d.ts.map +1 -1
  8. package/dist/commands/pain-evidence.js +3 -1
  9. package/dist/commands/pain-evidence.js.map +1 -1
  10. package/dist/commands/samples-list.d.ts.map +1 -1
  11. package/dist/commands/samples-list.js +5 -9
  12. package/dist/commands/samples-list.js.map +1 -1
  13. package/dist/commands/samples-review.d.ts.map +1 -1
  14. package/dist/commands/samples-review.js +5 -1
  15. package/dist/commands/samples-review.js.map +1 -1
  16. package/dist/commands/trajectory-db-unavailable.d.ts +11 -0
  17. package/dist/commands/trajectory-db-unavailable.d.ts.map +1 -0
  18. package/dist/commands/trajectory-db-unavailable.js +15 -0
  19. package/dist/commands/trajectory-db-unavailable.js.map +1 -0
  20. package/package.json +1 -1
  21. package/src/commands/evolution-tasks-list.ts +18 -14
  22. package/src/commands/evolution-tasks-show.ts +7 -5
  23. package/src/commands/pain-evidence.ts +3 -1
  24. package/src/commands/samples-list.ts +5 -9
  25. package/src/commands/samples-review.ts +5 -1
  26. package/src/commands/trajectory-db-unavailable.ts +19 -0
  27. package/tests/commands/config-doctor.test.ts +2 -2
  28. package/tests/commands/evolution-tasks-list.test.ts +41 -0
  29. package/tests/commands/evolution-tasks-show.test.ts +46 -0
  30. package/tests/commands/runtime-features.test.ts +1 -1
  31. package/tests/commands/runtime-internalization-run-once-language.test.ts +1 -1
  32. package/tests/commands/samples-list.test.ts +43 -0
  33. package/tests/commands/samples-review.test.ts +41 -0
  34. package/tests/services/pd-config-loader.test.ts +1 -1
  35. package/tests/services/rulehost-pipeline-runner.test.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"evolution-tasks-list.d.ts","sourceRoot":"","sources":["../../src/commands/evolution-tasks-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,UAAU,yBAAyB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7F"}
1
+ {"version":3,"file":"evolution-tasks-list.d.ts","sourceRoot":"","sources":["../../src/commands/evolution-tasks-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,yBAAyB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7F"}
@@ -4,31 +4,34 @@
4
4
  * Usage: pd evolution tasks list [--status pending|in_progress|completed|all]
5
5
  * [--limit <number>] [--date-from <date>] [--date-to <date>]
6
6
  */
7
- import { listEvolutionTasks } from '@principles/core/evolution-store';
7
+ import { listEvolutionTasks, TrajectoryDbUnavailableError } from '@principles/core/evolution-store';
8
8
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
9
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
9
10
  export async function handleEvolutionTasksList(opts) {
10
11
  const workspaceDir = resolveWorkspaceDir();
12
+ let tasks;
11
13
  try {
12
- const tasks = listEvolutionTasks(workspaceDir, {
14
+ tasks = listEvolutionTasks(workspaceDir, {
13
15
  status: opts.status === 'all' ? undefined : opts.status,
14
16
  limit: opts.limit,
15
17
  dateFrom: opts.dateFrom,
16
18
  dateTo: opts.dateTo,
17
19
  });
18
- if (tasks.length === 0) {
19
- console.log('No evolution tasks found.');
20
- return;
21
- }
22
- for (const task of tasks) {
23
- const enqueuedAt = task.enqueuedAt ?? 'null';
24
- console.log(`[${task.status}] ${task.taskId} (${task.taskKind}) score=${task.score} source=${task.source} enqueued=${enqueuedAt}`);
20
+ }
21
+ catch (err) {
22
+ if (err instanceof TrajectoryDbUnavailableError) {
23
+ return exitWithTrajectoryDbUnavailable(err);
25
24
  }
26
- console.log(`${tasks.length} task(s)`);
27
- return;
25
+ throw err;
28
26
  }
29
- catch {
27
+ if (tasks.length === 0) {
30
28
  console.log('No evolution tasks found.');
31
29
  return;
32
30
  }
31
+ for (const task of tasks) {
32
+ const enqueuedAt = task.enqueuedAt ?? 'null';
33
+ console.log(`[${task.status}] ${task.taskId} (${task.taskKind}) score=${task.score} source=${task.source} enqueued=${enqueuedAt}`);
34
+ }
35
+ console.log(`${tasks.length} task(s)`);
33
36
  }
34
37
  //# sourceMappingURL=evolution-tasks-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evolution-tasks-list.js","sourceRoot":"","sources":["../../src/commands/evolution-tasks-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAS9D,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAA+B;IAC5E,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;YACvD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;YAC7C,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,MAAM,aAAa,UAAU,EAAE,CACtH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"evolution-tasks-list.js","sourceRoot":"","sources":["../../src/commands/evolution-tasks-list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AASjF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAA+B;IAC5E,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,kBAAkB,CAAC,YAAY,EAAE;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;YACvD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,4BAA4B,EAAE,CAAC;YAChD,OAAO,+BAA+B,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;QAC7C,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,MAAM,aAAa,UAAU,EAAE,CACtH,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"evolution-tasks-show.d.ts","sourceRoot":"","sources":["../../src/commands/evolution-tasks-show.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,UAAU,yBAAyB;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C7F"}
1
+ {"version":3,"file":"evolution-tasks-show.d.ts","sourceRoot":"","sources":["../../src/commands/evolution-tasks-show.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,UAAU,yBAAyB;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C7F"}
@@ -6,8 +6,9 @@
6
6
  * Displays full details for a single evolution task.
7
7
  * Accepts both numeric id and string taskId.
8
8
  */
9
- import { getEvolutionTask } from '@principles/core/evolution-store';
9
+ import { getEvolutionTask, TrajectoryDbUnavailableError } from '@principles/core/evolution-store';
10
10
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
11
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
11
12
  export async function handleEvolutionTasksShow(opts) {
12
13
  const workspaceDir = resolveWorkspaceDir();
13
14
  let foundTask;
@@ -15,9 +16,11 @@ export async function handleEvolutionTasksShow(opts) {
15
16
  const numericId = isNaN(Number(opts.id)) ? undefined : Number(opts.id);
16
17
  foundTask = getEvolutionTask(workspaceDir, numericId ?? opts.id);
17
18
  }
18
- catch {
19
- console.log('No evolution tasks found.');
20
- return;
19
+ catch (err) {
20
+ if (err instanceof TrajectoryDbUnavailableError) {
21
+ return exitWithTrajectoryDbUnavailable(err);
22
+ }
23
+ throw err;
21
24
  }
22
25
  if (!foundTask) {
23
26
  console.error(`Task not found: ${opts.id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"evolution-tasks-show.js","sourceRoot":"","sources":["../../src/commands/evolution-tasks-show.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAA+B;IAC5E,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAG3C,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG;QACb,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5B,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC;QAC9B,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5B,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC;QACtC,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5B,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC;QAC9C,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC;QAChD,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC;QAC9C,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC;QAC1C,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC;QAC1C,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC;QAClC,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC;KACnC,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"evolution-tasks-show.js","sourceRoot":"","sources":["../../src/commands/evolution-tasks-show.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pain-evidence.d.ts","sourceRoot":"","sources":["../../src/commands/pain-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAsCzE;AA0DD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE7E;AAID,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"pain-evidence.d.ts","sourceRoot":"","sources":["../../src/commands/pain-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAsCzE;AA0DD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE7E;AAID,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC"}
@@ -158,7 +158,9 @@ export async function handlePainEvidence(opts) {
158
158
  if (decisions.length === 0) {
159
159
  console.log('No trigger decisions found in logs.');
160
160
  console.log(`Searched: ${path.join(logDir, 'SYSTEM_*.log')}`);
161
- console.log('Tip: Enable painEvidenceAdmission feature flag to start recording trigger decisions.');
161
+ // PRI-752: the old tip advised enabling painEvidenceAdmission — that flag
162
+ // has no executable consumers (Gate B records unconditionally when the
163
+ // plugin runs), so the advice was a placebo and was removed.
162
164
  return;
163
165
  }
164
166
  console.log(`Recent Pain Evidence Admission Decisions (${decisions.length}):`);
@@ -1 +1 @@
1
- {"version":3,"file":"pain-evidence.js","sourceRoot":"","sources":["../../src/commands/pain-evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pain-evidence.js","sourceRoot":"","sources":["../../src/commands/pain-evidence.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"samples-list.d.ts","sourceRoot":"","sources":["../../src/commands/samples-list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;CAC9C;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/E"}
1
+ {"version":3,"file":"samples-list.d.ts","sourceRoot":"","sources":["../../src/commands/samples-list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;CAC9C;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/E"}
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Usage: pd samples list [--status pending|approved|rejected]
5
5
  */
6
- import { listCorrectionSamples } from '@principles/core/trajectory-store';
6
+ import { listCorrectionSamples, TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
7
7
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
8
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
8
9
  export async function handleSamplesList(opts) {
9
10
  const workspaceDir = resolveWorkspaceDir();
10
11
  const status = opts.status ?? 'pending';
@@ -13,15 +14,10 @@ export async function handleSamplesList(opts) {
13
14
  samples = listCorrectionSamples(workspaceDir, status);
14
15
  }
15
16
  catch (err) {
16
- const message = err instanceof Error ? err.message : String(err);
17
- if (message.includes('ENOENT') || message.includes('SQLITE_CANTOPEN') || message.includes('SQLITE_NOTADB')) {
18
- console.log('No correction samples found.');
17
+ if (err instanceof TrajectoryDbUnavailableError) {
18
+ return exitWithTrajectoryDbUnavailable(err);
19
19
  }
20
- else {
21
- console.error('Failed to list samples:', message);
22
- throw err;
23
- }
24
- return;
20
+ throw err;
25
21
  }
26
22
  if (samples.length === 0) {
27
23
  console.log('No correction samples found.');
@@ -1 +1 @@
1
- {"version":3,"file":"samples-list.js","sourceRoot":"","sources":["../../src/commands/samples-list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAwB;IAC9D,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;IAGxC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3G,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,IAAI,CAAC,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,SAAS,UAAU,MAAM,CAAC,YAAY,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"samples-list.js","sourceRoot":"","sources":["../../src/commands/samples-list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAMjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAwB;IAC9D,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;IAExC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,4BAA4B,EAAE,CAAC;YAChD,OAAO,+BAA+B,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,IAAI,CAAC,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,SAAS,UAAU,MAAM,CAAC,YAAY,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"samples-review.d.ts","sourceRoot":"","sources":["../../src/commands/samples-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,KAAK,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnF"}
1
+ {"version":3,"file":"samples-review.d.ts","sourceRoot":"","sources":["../../src/commands/samples-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,KAAK,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnF"}
@@ -3,14 +3,18 @@
3
3
  *
4
4
  * Usage: pd samples review <sample-id> approve|reject [note]
5
5
  */
6
- import { reviewCorrectionSample } from '@principles/core/trajectory-store';
6
+ import { reviewCorrectionSample, TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
7
7
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
8
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
8
9
  export async function handleSamplesReview(opts) {
9
10
  const workspaceDir = resolveWorkspaceDir();
10
11
  try {
11
12
  reviewCorrectionSample(opts.sampleId, opts.decision, opts.note, workspaceDir);
12
13
  }
13
14
  catch (err) {
15
+ if (err instanceof TrajectoryDbUnavailableError) {
16
+ return exitWithTrajectoryDbUnavailable(err);
17
+ }
14
18
  if (err instanceof Error && err.message.includes('Sample not found')) {
15
19
  console.error(`Error: Sample not found: ${opts.sampleId}`);
16
20
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"samples-review.js","sourceRoot":"","sources":["../../src/commands/samples-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAU9D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"samples-review.js","sourceRoot":"","sources":["../../src/commands/samples-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAUjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,4BAA4B,EAAE,CAAC;YAChD,OAAO,+BAA+B,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared operator-facing failure for an unavailable trajectory database (PRI-753).
3
+ *
4
+ * The four trajectory-reading commands (`pd samples list/review`,
5
+ * `pd evolution tasks list/show`) surface the same structured failure:
6
+ * the error message carries path + reason, the second line is the next
7
+ * action (cli-6), and the process exits before any further mutation (cli-5).
8
+ */
9
+ import type { TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
10
+ export declare function exitWithTrajectoryDbUnavailable(err: TrajectoryDbUnavailableError): never;
11
+ //# sourceMappingURL=trajectory-db-unavailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory-db-unavailable.d.ts","sourceRoot":"","sources":["../../src/commands/trajectory-db-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAKtF,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,4BAA4B,GAAG,KAAK,CAIxF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared operator-facing failure for an unavailable trajectory database (PRI-753).
3
+ *
4
+ * The four trajectory-reading commands (`pd samples list/review`,
5
+ * `pd evolution tasks list/show`) surface the same structured failure:
6
+ * the error message carries path + reason, the second line is the next
7
+ * action (cli-6), and the process exits before any further mutation (cli-5).
8
+ */
9
+ const NEXT_ACTION = "Trajectory data lives in the workspace database written by the PD plugin. Initialize this workspace with 'pd runtime init --confirm' or run PD here first.";
10
+ export function exitWithTrajectoryDbUnavailable(err) {
11
+ console.error(`Error: ${err.message}`);
12
+ console.error(NEXT_ACTION);
13
+ process.exit(1);
14
+ }
15
+ //# sourceMappingURL=trajectory-db-unavailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory-db-unavailable.js","sourceRoot":"","sources":["../../src/commands/trajectory-db-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,GACf,4JAA4J,CAAC;AAE/J,MAAM,UAAU,+BAA+B,CAAC,GAAiC;IAC/E,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principles/pd-cli",
3
- "version": "1.149.1",
3
+ "version": "1.149.3",
4
4
  "description": "PD CLI — Pain recording, sample management, and governance tasks for Principles Disciple",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,8 +5,9 @@
5
5
  * [--limit <number>] [--date-from <date>] [--date-to <date>]
6
6
  */
7
7
 
8
- import { listEvolutionTasks } from '@principles/core/evolution-store';
8
+ import { listEvolutionTasks, TrajectoryDbUnavailableError } from '@principles/core/evolution-store';
9
9
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
10
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
10
11
 
11
12
  interface EvolutionTasksListOptions {
12
13
  status?: string;
@@ -18,27 +19,30 @@ interface EvolutionTasksListOptions {
18
19
  export async function handleEvolutionTasksList(opts: EvolutionTasksListOptions): Promise<void> {
19
20
  const workspaceDir = resolveWorkspaceDir();
20
21
 
22
+ let tasks;
21
23
  try {
22
- const tasks = listEvolutionTasks(workspaceDir, {
24
+ tasks = listEvolutionTasks(workspaceDir, {
23
25
  status: opts.status === 'all' ? undefined : opts.status,
24
26
  limit: opts.limit,
25
27
  dateFrom: opts.dateFrom,
26
28
  dateTo: opts.dateTo,
27
29
  });
28
- if (tasks.length === 0) {
29
- console.log('No evolution tasks found.');
30
- return;
30
+ } catch (err) {
31
+ if (err instanceof TrajectoryDbUnavailableError) {
32
+ return exitWithTrajectoryDbUnavailable(err);
31
33
  }
32
- for (const task of tasks) {
33
- const enqueuedAt = task.enqueuedAt ?? 'null';
34
- console.log(
35
- `[${task.status}] ${task.taskId} (${task.taskKind}) score=${task.score} source=${task.source} enqueued=${enqueuedAt}`
36
- );
37
- }
38
- console.log(`${tasks.length} task(s)`);
39
- return;
40
- } catch {
34
+ throw err;
35
+ }
36
+
37
+ if (tasks.length === 0) {
41
38
  console.log('No evolution tasks found.');
42
39
  return;
43
40
  }
41
+ for (const task of tasks) {
42
+ const enqueuedAt = task.enqueuedAt ?? 'null';
43
+ console.log(
44
+ `[${task.status}] ${task.taskId} (${task.taskKind}) score=${task.score} source=${task.source} enqueued=${enqueuedAt}`
45
+ );
46
+ }
47
+ console.log(`${tasks.length} task(s)`);
44
48
  }
@@ -7,8 +7,9 @@
7
7
  * Accepts both numeric id and string taskId.
8
8
  */
9
9
 
10
- import { getEvolutionTask } from '@principles/core/evolution-store';
10
+ import { getEvolutionTask, TrajectoryDbUnavailableError } from '@principles/core/evolution-store';
11
11
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
12
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
12
13
 
13
14
  interface EvolutionTasksShowOptions {
14
15
  id: string;
@@ -17,14 +18,15 @@ interface EvolutionTasksShowOptions {
17
18
  export async function handleEvolutionTasksShow(opts: EvolutionTasksShowOptions): Promise<void> {
18
19
  const workspaceDir = resolveWorkspaceDir();
19
20
 
20
-
21
21
  let foundTask;
22
22
  try {
23
23
  const numericId = isNaN(Number(opts.id)) ? undefined : Number(opts.id);
24
24
  foundTask = getEvolutionTask(workspaceDir, numericId ?? opts.id);
25
- } catch {
26
- console.log('No evolution tasks found.');
27
- return;
25
+ } catch (err) {
26
+ if (err instanceof TrajectoryDbUnavailableError) {
27
+ return exitWithTrajectoryDbUnavailable(err);
28
+ }
29
+ throw err;
28
30
  }
29
31
 
30
32
  if (!foundTask) {
@@ -188,7 +188,9 @@ export async function handlePainEvidence(opts: EvidenceOptions): Promise<void> {
188
188
  if (decisions.length === 0) {
189
189
  console.log('No trigger decisions found in logs.');
190
190
  console.log(`Searched: ${path.join(logDir, 'SYSTEM_*.log')}`);
191
- console.log('Tip: Enable painEvidenceAdmission feature flag to start recording trigger decisions.');
191
+ // PRI-752: the old tip advised enabling painEvidenceAdmission — that flag
192
+ // has no executable consumers (Gate B records unconditionally when the
193
+ // plugin runs), so the advice was a placebo and was removed.
192
194
  return;
193
195
  }
194
196
 
@@ -4,8 +4,9 @@
4
4
  * Usage: pd samples list [--status pending|approved|rejected]
5
5
  */
6
6
 
7
- import { listCorrectionSamples } from '@principles/core/trajectory-store';
7
+ import { listCorrectionSamples, TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
8
8
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
9
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
9
10
 
10
11
  interface SamplesListOptions {
11
12
  status?: 'pending' | 'approved' | 'rejected';
@@ -15,19 +16,14 @@ export async function handleSamplesList(opts: SamplesListOptions): Promise<void>
15
16
  const workspaceDir = resolveWorkspaceDir();
16
17
  const status = opts.status ?? 'pending';
17
18
 
18
-
19
19
  let samples;
20
20
  try {
21
21
  samples = listCorrectionSamples(workspaceDir, status);
22
22
  } catch (err) {
23
- const message = err instanceof Error ? err.message : String(err);
24
- if (message.includes('ENOENT') || message.includes('SQLITE_CANTOPEN') || message.includes('SQLITE_NOTADB')) {
25
- console.log('No correction samples found.');
26
- } else {
27
- console.error('Failed to list samples:', message);
28
- throw err;
23
+ if (err instanceof TrajectoryDbUnavailableError) {
24
+ return exitWithTrajectoryDbUnavailable(err);
29
25
  }
30
- return;
26
+ throw err;
31
27
  }
32
28
 
33
29
  if (samples.length === 0) {
@@ -4,8 +4,9 @@
4
4
  * Usage: pd samples review <sample-id> approve|reject [note]
5
5
  */
6
6
 
7
- import { reviewCorrectionSample } from '@principles/core/trajectory-store';
7
+ import { reviewCorrectionSample, TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
8
8
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
9
+ import { exitWithTrajectoryDbUnavailable } from './trajectory-db-unavailable.js';
9
10
 
10
11
  type ReviewDecision = 'approved' | 'rejected';
11
12
 
@@ -21,6 +22,9 @@ export async function handleSamplesReview(opts: SamplesReviewOptions): Promise<v
21
22
  try {
22
23
  reviewCorrectionSample(opts.sampleId, opts.decision, opts.note, workspaceDir);
23
24
  } catch (err) {
25
+ if (err instanceof TrajectoryDbUnavailableError) {
26
+ return exitWithTrajectoryDbUnavailable(err);
27
+ }
24
28
  if (err instanceof Error && err.message.includes('Sample not found')) {
25
29
  console.error(`Error: Sample not found: ${opts.sampleId}`);
26
30
  process.exit(1);
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared operator-facing failure for an unavailable trajectory database (PRI-753).
3
+ *
4
+ * The four trajectory-reading commands (`pd samples list/review`,
5
+ * `pd evolution tasks list/show`) surface the same structured failure:
6
+ * the error message carries path + reason, the second line is the next
7
+ * action (cli-6), and the process exits before any further mutation (cli-5).
8
+ */
9
+
10
+ import type { TrajectoryDbUnavailableError } from '@principles/core/trajectory-store';
11
+
12
+ const NEXT_ACTION =
13
+ "Trajectory data lives in the workspace database written by the PD plugin. Initialize this workspace with 'pd runtime init --confirm' or run PD here first.";
14
+
15
+ export function exitWithTrajectoryDbUnavailable(err: TrajectoryDbUnavailableError): never {
16
+ console.error(`Error: ${err.message}`);
17
+ console.error(NEXT_ACTION);
18
+ process.exit(1);
19
+ }
@@ -43,7 +43,7 @@ function makeValidConfigYaml(): string {
43
43
  code_tool_hook: { category: 'core', enabled: true },
44
44
  defer_archive: { category: 'core', enabled: true },
45
45
  correction_observer: { category: 'quiet', enabled: false },
46
- empathy_observer: { category: 'quiet', enabled: false },
46
+ gfi: { category: 'quiet', enabled: false },
47
47
  },
48
48
  runtimeProfiles: {
49
49
  'openclaw.default': { type: 'openclaw', source: 'default' },
@@ -110,7 +110,7 @@ describe('Internal agent runtime binding readiness', () => {
110
110
  code_tool_hook: { category: 'core', enabled: true },
111
111
  defer_archive: { category: 'core', enabled: true },
112
112
  correction_observer: { category: 'quiet', enabled: false },
113
- empathy_observer: { category: 'quiet', enabled: false },
113
+ gfi: { category: 'quiet', enabled: false },
114
114
  },
115
115
  runtimeProfiles: {
116
116
  'openclaw.default': { type: 'openclaw', source: 'default' },
@@ -0,0 +1,41 @@
1
+ /**
2
+ * pd evolution tasks list command tests — PRI-753 (Trajectory Reader Reality Fix).
3
+ *
4
+ * Before PRI-753 this handler wrapped every error as "No evolution tasks
5
+ * found." — including a missing database and real database failures. A
6
+ * missing trajectory database must now fail loud with reason and next action
7
+ * (cli-6), never masquerade as an empty task list (rc-9).
8
+ */
9
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
10
+
11
+ vi.mock('../../src/resolve-workspace.js', () => ({
12
+ resolveWorkspaceDir: vi.fn().mockReturnValue('/tmp/pri753-missing-workspace'),
13
+ }));
14
+
15
+ import { handleEvolutionTasksList } from '../../src/commands/evolution-tasks-list.js';
16
+
17
+ describe('handleEvolutionTasksList — unavailable database (PRI-753)', () => {
18
+ let errorSpy: ReturnType<typeof vi.spyOn>;
19
+ let exitSpy: ReturnType<typeof vi.spyOn>;
20
+
21
+ beforeEach(() => {
22
+ errorSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
23
+ exitSpy = vi.spyOn(process, 'exit').mockImplementation(((code: number) => {
24
+ throw new Error(`process.exit:${String(code)}`);
25
+ }) as never);
26
+ });
27
+
28
+ afterEach(() => {
29
+ vi.restoreAllMocks();
30
+ });
31
+
32
+ it('fails loud with reason and next action when trajectory.db is missing', async () => {
33
+ await expect(handleEvolutionTasksList({ status: 'all' })).rejects.toThrow('process.exit:1');
34
+
35
+ const stderrText = errorSpy.mock.calls.map((call) => String(call[0])).join('');
36
+ expect(stderrText).toContain('Trajectory database unavailable');
37
+ expect(stderrText).toContain('trajectory.db');
38
+ expect(stderrText).toContain('pd runtime init --confirm');
39
+ expect(exitSpy).toHaveBeenCalledWith(1);
40
+ });
41
+ });
@@ -0,0 +1,46 @@
1
+ /**
2
+ * pd evolution tasks show command tests — PRI-753 (Trajectory Reader Reality Fix).
3
+ *
4
+ * "Task not found" (database present, row absent) and "database unavailable"
5
+ * (file missing) are different failures and must stay distinguishable (cli-6).
6
+ */
7
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
+
9
+ vi.mock('../../src/resolve-workspace.js', () => ({
10
+ resolveWorkspaceDir: vi.fn().mockReturnValue('/tmp/pri753-missing-workspace'),
11
+ }));
12
+
13
+ import { handleEvolutionTasksShow } from '../../src/commands/evolution-tasks-show.js';
14
+
15
+ describe('handleEvolutionTasksShow — unavailable database (PRI-753)', () => {
16
+ let errorSpy: ReturnType<typeof vi.spyOn>;
17
+ let exitSpy: ReturnType<typeof vi.spyOn>;
18
+
19
+ beforeEach(() => {
20
+ errorSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
21
+ exitSpy = vi.spyOn(process, 'exit').mockImplementation(((code: number) => {
22
+ throw new Error(`process.exit:${String(code)}`);
23
+ }) as never);
24
+ });
25
+
26
+ afterEach(() => {
27
+ vi.restoreAllMocks();
28
+ });
29
+
30
+ it('fails loud with reason and next action when trajectory.db is missing', async () => {
31
+ await expect(handleEvolutionTasksShow({ id: 'task-001' })).rejects.toThrow('process.exit:1');
32
+
33
+ const stderrText = errorSpy.mock.calls.map((call) => String(call[0])).join('');
34
+ expect(stderrText).toContain('Trajectory database unavailable');
35
+ expect(stderrText).toContain('trajectory.db');
36
+ expect(stderrText).toContain('pd runtime init --confirm');
37
+ expect(exitSpy).toHaveBeenCalledWith(1);
38
+ });
39
+
40
+ it('reports unavailable instead of "Task not found" when the database is missing', async () => {
41
+ await expect(handleEvolutionTasksShow({ id: 'task-001' })).rejects.toThrow('process.exit:1');
42
+
43
+ const stderrText = errorSpy.mock.calls.map((call) => String(call[0])).join('');
44
+ expect(stderrText).not.toContain('Task not found');
45
+ });
46
+ });
@@ -41,7 +41,7 @@ function makeValidConfigYaml(): string {
41
41
  code_tool_hook: { category: 'core', enabled: true },
42
42
  defer_archive: { category: 'core', enabled: true },
43
43
  correction_observer: { category: 'quiet', enabled: false },
44
- empathy_observer: { category: 'quiet', enabled: false },
44
+ gfi: { category: 'quiet', enabled: false },
45
45
  },
46
46
  runtimeProfiles: {
47
47
  // Include pd.default (the M9 default) to avoid "profile not found" warnings
@@ -58,7 +58,7 @@ function makeWorkspace(outputLanguage?: 'en'): string {
58
58
  code_tool_hook: { category: 'core', enabled: true },
59
59
  defer_archive: { category: 'core', enabled: true },
60
60
  correction_observer: { category: 'quiet', enabled: false },
61
- empathy_observer: { category: 'quiet', enabled: false },
61
+ gfi: { category: 'quiet', enabled: false },
62
62
  },
63
63
  runtimeProfiles: { 'openclaw.default': { type: 'openclaw', source: 'default' } },
64
64
  internalAgents: {
@@ -0,0 +1,43 @@
1
+ /**
2
+ * pd samples list command tests — PRI-753 (Trajectory Reader Reality Fix).
3
+ *
4
+ * A missing workspace trajectory database is an operator-visible failure with
5
+ * a next action (cli-6), never a silent "no samples" answer (rc-9).
6
+ */
7
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
+
9
+ vi.mock('../../src/resolve-workspace.js', () => ({
10
+ resolveWorkspaceDir: vi.fn().mockReturnValue('/tmp/pri753-missing-workspace'),
11
+ }));
12
+
13
+ import { handleSamplesList } from '../../src/commands/samples-list.js';
14
+
15
+ describe('handleSamplesList — unavailable database (PRI-753)', () => {
16
+ let errorSpy: ReturnType<typeof vi.spyOn>;
17
+ let exitSpy: ReturnType<typeof vi.spyOn>;
18
+
19
+ beforeEach(() => {
20
+ errorSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
21
+ exitSpy = vi.spyOn(process, 'exit').mockImplementation(((code: number) => {
22
+ throw new Error(`process.exit:${String(code)}`);
23
+ }) as never);
24
+ });
25
+
26
+ afterEach(() => {
27
+ vi.restoreAllMocks();
28
+ });
29
+
30
+ it('fails loud with reason and next action when trajectory.db is missing', async () => {
31
+ await expect(handleSamplesList({})).rejects.toThrow('process.exit:1');
32
+
33
+ const stderrText = errorSpy.mock.calls.map((call) => String(call[0])).join('');
34
+ expect(stderrText).toContain('Trajectory database unavailable');
35
+ expect(stderrText).toContain(joinPath('.state', 'trajectory.db'));
36
+ expect(stderrText).toContain('pd runtime init --confirm');
37
+ expect(exitSpy).toHaveBeenCalledWith(1);
38
+ });
39
+ });
40
+
41
+ function joinPath(a: string, b: string): string {
42
+ return `${a}${process.platform === 'win32' ? '\\' : '/'}${b}`;
43
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * pd samples review command tests — PRI-753 (Trajectory Reader Reality Fix).
3
+ *
4
+ * A missing workspace trajectory database is an operator-visible failure with
5
+ * a next action (cli-6); failure exits before any mutation (cli-2/cli-5).
6
+ */
7
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
+
9
+ vi.mock('../../src/resolve-workspace.js', () => ({
10
+ resolveWorkspaceDir: vi.fn().mockReturnValue('/tmp/pri753-missing-workspace'),
11
+ }));
12
+
13
+ import { handleSamplesReview } from '../../src/commands/samples-review.js';
14
+
15
+ describe('handleSamplesReview — unavailable database (PRI-753)', () => {
16
+ let errorSpy: ReturnType<typeof vi.spyOn>;
17
+ let exitSpy: ReturnType<typeof vi.spyOn>;
18
+
19
+ beforeEach(() => {
20
+ errorSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
21
+ exitSpy = vi.spyOn(process, 'exit').mockImplementation(((code: number) => {
22
+ throw new Error(`process.exit:${String(code)}`);
23
+ }) as never);
24
+ });
25
+
26
+ afterEach(() => {
27
+ vi.restoreAllMocks();
28
+ });
29
+
30
+ it('fails loud with reason and next action when trajectory.db is missing', async () => {
31
+ await expect(handleSamplesReview({ sampleId: 'sample-001', decision: 'approve' })).rejects.toThrow(
32
+ 'process.exit:1'
33
+ );
34
+
35
+ const stderrText = errorSpy.mock.calls.map((call) => String(call[0])).join('');
36
+ expect(stderrText).toContain('Trajectory database unavailable');
37
+ expect(stderrText).toContain('trajectory.db');
38
+ expect(stderrText).toContain('pd runtime init --confirm');
39
+ expect(exitSpy).toHaveBeenCalledWith(1);
40
+ });
41
+ });
@@ -58,7 +58,7 @@ function makeValidConfigYaml(): string {
58
58
  code_tool_hook: { category: 'core', enabled: true },
59
59
  defer_archive: { category: 'core', enabled: true },
60
60
  correction_observer: { category: 'quiet', enabled: false },
61
- empathy_observer: { category: 'quiet', enabled: false },
61
+ gfi: { category: 'quiet', enabled: false },
62
62
  },
63
63
  runtimeProfiles: {
64
64
  'openclaw.default': { type: 'openclaw', source: 'default' },
@@ -667,7 +667,7 @@ function writeLanguageConfig(dir: string, outputLanguage?: 'en'): void {
667
667
  code_tool_hook: { category: 'core', enabled: true },
668
668
  defer_archive: { category: 'core', enabled: true },
669
669
  correction_observer: { category: 'quiet', enabled: false },
670
- empathy_observer: { category: 'quiet', enabled: false },
670
+ gfi: { category: 'quiet', enabled: false },
671
671
  },
672
672
  runtimeProfiles: {
673
673
  'openclaw.default': { type: 'openclaw', source: 'default' },