@principles/pd-cli 1.152.12 → 1.152.13

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 (296) hide show
  1. package/package.json +13 -7
  2. package/CHANGELOG.md +0 -23
  3. package/dist/commands/__tests__/intent-flag-wiring.test.d.ts +0 -9
  4. package/dist/commands/__tests__/intent-flag-wiring.test.d.ts.map +0 -1
  5. package/dist/commands/__tests__/intent-flag-wiring.test.js +0 -237
  6. package/dist/commands/__tests__/intent-flag-wiring.test.js.map +0 -1
  7. package/dist/commands/__tests__/legacy-cleanup.test.d.ts +0 -18
  8. package/dist/commands/__tests__/legacy-cleanup.test.d.ts.map +0 -1
  9. package/dist/commands/__tests__/legacy-cleanup.test.js +0 -467
  10. package/dist/commands/__tests__/legacy-cleanup.test.js.map +0 -1
  11. package/dist/commands/__tests__/mvp-smoke.test.d.ts +0 -15
  12. package/dist/commands/__tests__/mvp-smoke.test.d.ts.map +0 -1
  13. package/dist/commands/__tests__/mvp-smoke.test.js +0 -262
  14. package/dist/commands/__tests__/mvp-smoke.test.js.map +0 -1
  15. package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.d.ts +0 -2
  16. package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.d.ts.map +0 -1
  17. package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.js +0 -60
  18. package/dist/commands/__tests__/pain-retry-maxTokens-flag.test.js.map +0 -1
  19. package/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts +0 -21
  20. package/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts.map +0 -1
  21. package/dist/commands/__tests__/rulecode-flag-wiring.test.js +0 -186
  22. package/dist/commands/__tests__/rulecode-flag-wiring.test.js.map +0 -1
  23. package/dist/commands/__tests__/rulecode-handler.test.d.ts +0 -16
  24. package/dist/commands/__tests__/rulecode-handler.test.d.ts.map +0 -1
  25. package/dist/commands/__tests__/rulecode-handler.test.js +0 -285
  26. package/dist/commands/__tests__/rulecode-handler.test.js.map +0 -1
  27. package/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts +0 -24
  28. package/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts.map +0 -1
  29. package/dist/commands/__tests__/run-rulehost-flag-wiring.test.js +0 -232
  30. package/dist/commands/__tests__/run-rulehost-flag-wiring.test.js.map +0 -1
  31. package/dist/commands/__tests__/runtime-activation-nextaction.test.d.ts +0 -15
  32. package/dist/commands/__tests__/runtime-activation-nextaction.test.d.ts.map +0 -1
  33. package/dist/commands/__tests__/runtime-activation-nextaction.test.js +0 -73
  34. package/dist/commands/__tests__/runtime-activation-nextaction.test.js.map +0 -1
  35. package/dist/commands/__tests__/runtime-probe-config.test.d.ts +0 -20
  36. package/dist/commands/__tests__/runtime-probe-config.test.d.ts.map +0 -1
  37. package/dist/commands/__tests__/runtime-probe-config.test.js +0 -389
  38. package/dist/commands/__tests__/runtime-probe-config.test.js.map +0 -1
  39. package/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts +0 -9
  40. package/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts.map +0 -1
  41. package/dist/commands/__tests__/telemetry-flag-wiring.test.js +0 -76
  42. package/dist/commands/__tests__/telemetry-flag-wiring.test.js.map +0 -1
  43. package/dist/commands/__tests__/version.test.d.ts +0 -2
  44. package/dist/commands/__tests__/version.test.d.ts.map +0 -1
  45. package/dist/commands/__tests__/version.test.js +0 -238
  46. package/dist/commands/__tests__/version.test.js.map +0 -1
  47. package/dist/commands/runtime-uat.guard.test.d.ts +0 -2
  48. package/dist/commands/runtime-uat.guard.test.d.ts.map +0 -1
  49. package/dist/commands/runtime-uat.guard.test.js +0 -153
  50. package/dist/commands/runtime-uat.guard.test.js.map +0 -1
  51. package/dist/services/__tests__/cli-output.test.d.ts +0 -18
  52. package/dist/services/__tests__/cli-output.test.d.ts.map +0 -1
  53. package/dist/services/__tests__/cli-output.test.js +0 -103
  54. package/dist/services/__tests__/cli-output.test.js.map +0 -1
  55. package/dist/services/__tests__/evaluator-runner-deps.test.d.ts +0 -2
  56. package/dist/services/__tests__/evaluator-runner-deps.test.d.ts.map +0 -1
  57. package/dist/services/__tests__/evaluator-runner-deps.test.js +0 -343
  58. package/dist/services/__tests__/evaluator-runner-deps.test.js.map +0 -1
  59. package/dist/services/__tests__/rulehost-readiness.test.d.ts +0 -2
  60. package/dist/services/__tests__/rulehost-readiness.test.d.ts.map +0 -1
  61. package/dist/services/__tests__/rulehost-readiness.test.js +0 -311
  62. package/dist/services/__tests__/rulehost-readiness.test.js.map +0 -1
  63. package/dist/services/__tests__/runtime-adapter-resolver.test.d.ts +0 -18
  64. package/dist/services/__tests__/runtime-adapter-resolver.test.d.ts.map +0 -1
  65. package/dist/services/__tests__/runtime-adapter-resolver.test.js +0 -673
  66. package/dist/services/__tests__/runtime-adapter-resolver.test.js.map +0 -1
  67. package/dist/utils/production-workspace-guard.test.d.ts +0 -2
  68. package/dist/utils/production-workspace-guard.test.d.ts.map +0 -1
  69. package/dist/utils/production-workspace-guard.test.js +0 -137
  70. package/dist/utils/production-workspace-guard.test.js.map +0 -1
  71. package/scripts/llm-dogfood.ts +0 -456
  72. package/scripts/migrate-illegal-expected-decision.ts +0 -252
  73. package/src/commands/__tests__/intent-flag-wiring.test.ts +0 -282
  74. package/src/commands/__tests__/legacy-cleanup.test.ts +0 -602
  75. package/src/commands/__tests__/mvp-smoke.test.ts +0 -300
  76. package/src/commands/__tests__/pain-retry-maxTokens-flag.test.ts +0 -73
  77. package/src/commands/__tests__/rulecode-flag-wiring.test.ts +0 -237
  78. package/src/commands/__tests__/rulecode-handler.test.ts +0 -369
  79. package/src/commands/__tests__/run-rulehost-flag-wiring.test.ts +0 -292
  80. package/src/commands/__tests__/runtime-activation-nextaction.test.ts +0 -81
  81. package/src/commands/__tests__/runtime-probe-config.test.ts +0 -432
  82. package/src/commands/__tests__/telemetry-flag-wiring.test.ts +0 -84
  83. package/src/commands/__tests__/version.test.ts +0 -251
  84. package/src/commands/admission-gate.ts +0 -30
  85. package/src/commands/artifact.ts +0 -82
  86. package/src/commands/build-trajectory-evidence.ts +0 -298
  87. package/src/commands/candidate.ts +0 -1250
  88. package/src/commands/codex-ingest-catchup.ts +0 -114
  89. package/src/commands/codex-ingest-quarantine.ts +0 -127
  90. package/src/commands/codex-reconcile.ts +0 -84
  91. package/src/commands/codex-setup.ts +0 -476
  92. package/src/commands/codex-worker.ts +0 -185
  93. package/src/commands/command-helpers.ts +0 -24
  94. package/src/commands/config-doctor.ts +0 -193
  95. package/src/commands/console.ts +0 -797
  96. package/src/commands/context.ts +0 -72
  97. package/src/commands/demo-story-a.ts +0 -241
  98. package/src/commands/diagnose.ts +0 -756
  99. package/src/commands/errors-list.ts +0 -441
  100. package/src/commands/evolution-tasks-list.ts +0 -48
  101. package/src/commands/evolution-tasks-show.ts +0 -62
  102. package/src/commands/flow.ts +0 -60
  103. package/src/commands/health-codex.ts +0 -576
  104. package/src/commands/health.ts +0 -315
  105. package/src/commands/history.ts +0 -63
  106. package/src/commands/intent.ts +0 -457
  107. package/src/commands/legacy-cleanup.ts +0 -531
  108. package/src/commands/legacy-import.ts +0 -104
  109. package/src/commands/mvp-smoke.ts +0 -160
  110. package/src/commands/pain-evidence.ts +0 -226
  111. package/src/commands/pain-list.ts +0 -239
  112. package/src/commands/pain-record.ts +0 -612
  113. package/src/commands/pain-retry.ts +0 -916
  114. package/src/commands/principles-stats.ts +0 -700
  115. package/src/commands/proven-channel-baseline.ts +0 -115
  116. package/src/commands/quality-scorecard.ts +0 -272
  117. package/src/commands/remediation-output.ts +0 -66
  118. package/src/commands/rulecode.ts +0 -465
  119. package/src/commands/run.ts +0 -89
  120. package/src/commands/runtime-activation.ts +0 -1629
  121. package/src/commands/runtime-artifact-repair.ts +0 -524
  122. package/src/commands/runtime-canary.ts +0 -395
  123. package/src/commands/runtime-compatibility-scan.ts +0 -105
  124. package/src/commands/runtime-diagnostics-export.ts +0 -229
  125. package/src/commands/runtime-features.ts +0 -153
  126. package/src/commands/runtime-gfi-snapshot.ts +0 -135
  127. package/src/commands/runtime-health-snapshot.ts +0 -108
  128. package/src/commands/runtime-init.ts +0 -429
  129. package/src/commands/runtime-internalization-enqueue-successors.ts +0 -530
  130. package/src/commands/runtime-internalization-integrity-repair.ts +0 -79
  131. package/src/commands/runtime-internalization-integrity.ts +0 -107
  132. package/src/commands/runtime-internalization-queue.ts +0 -135
  133. package/src/commands/runtime-internalization-retry.ts +0 -191
  134. package/src/commands/runtime-internalization-run-once.ts +0 -791
  135. package/src/commands/runtime-internalization-run-rulehost.ts +0 -749
  136. package/src/commands/runtime-internalization-wake-once.ts +0 -87
  137. package/src/commands/runtime-pain-flood-simulation.ts +0 -121
  138. package/src/commands/runtime-pruning.ts +0 -438
  139. package/src/commands/runtime-recovery-failed-tasks.ts +0 -258
  140. package/src/commands/runtime-recovery.ts +0 -109
  141. package/src/commands/runtime-synthetic-baseline.ts +0 -70
  142. package/src/commands/runtime-uat.guard.test.ts +0 -175
  143. package/src/commands/runtime-uat.ts +0 -380
  144. package/src/commands/runtime.ts +0 -473
  145. package/src/commands/samples-list.ts +0 -39
  146. package/src/commands/samples-review.ts +0 -36
  147. package/src/commands/task.ts +0 -271
  148. package/src/commands/telemetry.ts +0 -349
  149. package/src/commands/trace.ts +0 -174
  150. package/src/commands/trajectory-db-unavailable.ts +0 -19
  151. package/src/commands/trajectory.ts +0 -64
  152. package/src/commands/version.ts +0 -49
  153. package/src/config-reader.ts +0 -122
  154. package/src/index.ts +0 -1276
  155. package/src/legacy/legacy-import.ts +0 -179
  156. package/src/legacy/session-history-import.ts +0 -203
  157. package/src/resolve-workspace.ts +0 -106
  158. package/src/services/__tests__/cli-output.test.ts +0 -130
  159. package/src/services/__tests__/evaluator-runner-deps.test.ts +0 -382
  160. package/src/services/__tests__/rulehost-readiness.test.ts +0 -363
  161. package/src/services/__tests__/runtime-adapter-resolver.test.ts +0 -793
  162. package/src/services/cli-output.ts +0 -95
  163. package/src/services/config-doctor.ts +0 -697
  164. package/src/services/console-launcher.ts +0 -537
  165. package/src/services/demo-rule-compiler.ts +0 -40
  166. package/src/services/demo-story-a-runner.ts +0 -471
  167. package/src/services/mainline-snapshot-assembler.ts +0 -579
  168. package/src/services/pain-flood-simulation-runner.ts +0 -462
  169. package/src/services/pd-config-loader.ts +0 -433
  170. package/src/services/proven-channel-baseline-runner.ts +0 -157
  171. package/src/services/quality-scorecard/data-extractor.ts +0 -150
  172. package/src/services/quality-scorecard/local-evaluator.ts +0 -142
  173. package/src/services/quality-scorecard/strong-model-gate.ts +0 -202
  174. package/src/services/resolve-runtime-from-pd-config.ts +0 -230
  175. package/src/services/rulehost-pipeline-runner.ts +0 -1214
  176. package/src/services/rulehost-readiness.ts +0 -326
  177. package/src/services/runtime-adapter-resolver.ts +0 -364
  178. package/src/services/synthetic-baseline-runner.ts +0 -400
  179. package/src/services/version-report.ts +0 -253
  180. package/src/services/workspace-tool-semantics.ts +0 -26
  181. package/src/utils/path-security.ts +0 -96
  182. package/src/utils/production-workspace-guard.test.ts +0 -157
  183. package/src/utils/production-workspace-guard.ts +0 -210
  184. package/tests/bdd/cli-contract.steps.ts +0 -346
  185. package/tests/bdd/principles-stats.steps.ts +0 -211
  186. package/tests/bdd/support/gherkin-loader.ts +0 -147
  187. package/tests/bdd/support/repo-root.ts +0 -62
  188. package/tests/bdd/support/vitest-bdd.ts +0 -179
  189. package/tests/commands/admission-gate-coverage.test.ts +0 -79
  190. package/tests/commands/build-trajectory-evidence.test.ts +0 -508
  191. package/tests/commands/candidate-audit-repair.test.ts +0 -421
  192. package/tests/commands/candidate-intake.test.ts +0 -732
  193. package/tests/commands/candidate-internalization-backfill.test.ts +0 -548
  194. package/tests/commands/candidate-internalize-lineage.test.ts +0 -628
  195. package/tests/commands/candidate-internalize.test.ts +0 -299
  196. package/tests/commands/candidate-route.test.ts +0 -329
  197. package/tests/commands/candidate-show.test.ts +0 -95
  198. package/tests/commands/cli-command-tree.test.ts +0 -144
  199. package/tests/commands/cli-help-snapshot.test.ts +0 -155
  200. package/tests/commands/cli-skill-contract.test.ts +0 -121
  201. package/tests/commands/codex-consent-reversibility.steps.test.ts +0 -299
  202. package/tests/commands/codex-ingest-quarantine.test.ts +0 -136
  203. package/tests/commands/codex-setup.test.ts +0 -297
  204. package/tests/commands/codex-worker-daemon.test.ts +0 -95
  205. package/tests/commands/codex-worker-registration.test.ts +0 -207
  206. package/tests/commands/config-doctor.test.ts +0 -336
  207. package/tests/commands/console-launcher-edge-cases.test.ts +0 -388
  208. package/tests/commands/console-open.test.ts +0 -1381
  209. package/tests/commands/context.test.ts +0 -114
  210. package/tests/commands/demo-story-a.test.ts +0 -318
  211. package/tests/commands/diagnose.test.ts +0 -1803
  212. package/tests/commands/errors-list.test.ts +0 -679
  213. package/tests/commands/evolution-tasks-list.test.ts +0 -41
  214. package/tests/commands/evolution-tasks-show.test.ts +0 -46
  215. package/tests/commands/health-codex.test.ts +0 -349
  216. package/tests/commands/health-host-wiring.test.ts +0 -76
  217. package/tests/commands/health-reliability.test.ts +0 -99
  218. package/tests/commands/health.test.ts +0 -413
  219. package/tests/commands/intent.test.ts +0 -321
  220. package/tests/commands/legacy-cleanup.test.ts +0 -148
  221. package/tests/commands/pain-evidence.test.ts +0 -518
  222. package/tests/commands/pain-list.test.ts +0 -219
  223. package/tests/commands/pain-record-async.test.ts +0 -335
  224. package/tests/commands/pain-record-session-parser.test.ts +0 -228
  225. package/tests/commands/pain-record.test.ts +0 -851
  226. package/tests/commands/pain-retry.test.ts +0 -1121
  227. package/tests/commands/plugin-config-resolution-cutover.test.ts +0 -229
  228. package/tests/commands/pri-393-runtime-config-unification.test.ts +0 -443
  229. package/tests/commands/principles-stats-wiring.test.ts +0 -135
  230. package/tests/commands/principles-stats.test.ts +0 -274
  231. package/tests/commands/product-path-regression.test.ts +0 -86
  232. package/tests/commands/proven-channel-baseline.test.ts +0 -441
  233. package/tests/commands/rulecode.test.ts +0 -177
  234. package/tests/commands/run-rulehost-handler.test.ts +0 -908
  235. package/tests/commands/runtime-activation-approve-flag-wiring.test.ts +0 -227
  236. package/tests/commands/runtime-activation-deactivate-flag-wiring.test.ts +0 -167
  237. package/tests/commands/runtime-activation-dispatch-flag-wiring.test.ts +0 -262
  238. package/tests/commands/runtime-activation-governance-audit.test.ts +0 -95
  239. package/tests/commands/runtime-activation-list-flag-wiring.test.ts +0 -193
  240. package/tests/commands/runtime-activation-promote-flag-wiring.test.ts +0 -248
  241. package/tests/commands/runtime-activation-shadow-telemetry.test.ts +0 -130
  242. package/tests/commands/runtime-activation.test.ts +0 -2052
  243. package/tests/commands/runtime-artifact-repair-registration.test.ts +0 -74
  244. package/tests/commands/runtime-artifact-repair.test.ts +0 -404
  245. package/tests/commands/runtime-canary.test.ts +0 -430
  246. package/tests/commands/runtime-compatibility-scan.test.ts +0 -146
  247. package/tests/commands/runtime-diagnostics-export.test.ts +0 -175
  248. package/tests/commands/runtime-features.test.ts +0 -249
  249. package/tests/commands/runtime-health-snapshot.test.ts +0 -358
  250. package/tests/commands/runtime-init-empty-workspace.test.ts +0 -252
  251. package/tests/commands/runtime-init.test.ts +0 -420
  252. package/tests/commands/runtime-internalization-enqueue-successors.test.ts +0 -782
  253. package/tests/commands/runtime-internalization-integrity-repair.test.ts +0 -239
  254. package/tests/commands/runtime-internalization-integrity.test.ts +0 -140
  255. package/tests/commands/runtime-internalization-queue.test.ts +0 -380
  256. package/tests/commands/runtime-internalization-retry-owner-authority.test.ts +0 -431
  257. package/tests/commands/runtime-internalization-run-once-evaluator-parity.test.ts +0 -269
  258. package/tests/commands/runtime-internalization-run-once-language.test.ts +0 -303
  259. package/tests/commands/runtime-internalization-run-once-real-config.test.ts +0 -237
  260. package/tests/commands/runtime-internalization-run-once-rollout-parity.test.ts +0 -706
  261. package/tests/commands/runtime-internalization-run-once.test.ts +0 -1791
  262. package/tests/commands/runtime-internalization-wake-once.test.ts +0 -171
  263. package/tests/commands/runtime-internalization.test.ts +0 -53
  264. package/tests/commands/runtime-pain-flood-simulation.test.ts +0 -418
  265. package/tests/commands/runtime-pruning.test.ts +0 -694
  266. package/tests/commands/runtime-recovery-failed-tasks.test.ts +0 -328
  267. package/tests/commands/runtime-recovery.test.ts +0 -120
  268. package/tests/commands/runtime-synthetic-baseline.test.ts +0 -249
  269. package/tests/commands/runtime-uat.test.ts +0 -397
  270. package/tests/commands/runtime.test.ts +0 -392
  271. package/tests/commands/samples-list.test.ts +0 -43
  272. package/tests/commands/samples-review.test.ts +0 -41
  273. package/tests/commands/task.test.ts +0 -153
  274. package/tests/commands/telemetry.test.ts +0 -190
  275. package/tests/commands/trace.test.ts +0 -316
  276. package/tests/config-reader.test.ts +0 -143
  277. package/tests/e2e/candidate-intake-e2e.test.ts +0 -338
  278. package/tests/e2e/cli-full-flow.test.ts +0 -233
  279. package/tests/e2e/cross-package-acceptance.test.ts +0 -635
  280. package/tests/helpers/pd-cli-path.ts +0 -5
  281. package/tests/pd-cli-smoke.test.ts +0 -13
  282. package/tests/resolve-workspace.test.ts +0 -196
  283. package/tests/services/config-doctor-signal-health.test.ts +0 -109
  284. package/tests/services/console-launcher.test.ts +0 -114
  285. package/tests/services/demo-rule-compiler.test.ts +0 -242
  286. package/tests/services/mainline-snapshot-assembler.test.ts +0 -572
  287. package/tests/services/pd-config-loader.test.ts +0 -505
  288. package/tests/services/proven-channel-baseline-runner.test.ts +0 -30
  289. package/tests/services/quality-scorecard/strong-model-gate.test.ts +0 -133
  290. package/tests/services/resolve-runtime-from-pd-config.test.ts +0 -485
  291. package/tests/services/rulehost-pipeline-e2e.test.ts +0 -538
  292. package/tests/services/rulehost-pipeline-runner.test.ts +0 -1242
  293. package/tests/services/workspace-tool-semantics.test.ts +0 -76
  294. package/tests/utils/path-security.test.ts +0 -180
  295. package/tsconfig.json +0 -26
  296. package/vitest.config.ts +0 -10
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-adapter-resolver.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/runtime-adapter-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=production-workspace-guard.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"production-workspace-guard.test.d.ts","sourceRoot":"","sources":["../../src/utils/production-workspace-guard.test.ts"],"names":[],"mappings":""}
@@ -1,137 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import * as path from 'path';
3
- import * as os from 'os';
4
- import { isProductionWorkspace, guardUatWorkspace, getSafeUatWorkspacePath, resolveWorkspacePath, formatGuardRefusal, } from './production-workspace-guard.js';
5
- // Use os.homedir()-derived paths so the tests work cross-platform
6
- // (previously hardcoded Windows paths like D:\.openclaw\workspace which on
7
- // Linux resolve to <cwd>/D:\.openclaw\workspace — meaningless).
8
- const HOMEDIR_WORKSPACE = path.join(os.homedir(), '.openclaw', 'workspace');
9
- const PRODUCTION_PATHS = [
10
- HOMEDIR_WORKSPACE,
11
- ];
12
- const SAFE_PATHS = [
13
- path.join(os.homedir(), '.openclaw', 'workspace-test'),
14
- path.join(os.homedir(), '.openclaw', 'workspace-backup'),
15
- path.join(os.tmpdir(), 'pd-uat-workspace'),
16
- path.join(os.tmpdir(), 'pd-test-any'),
17
- // A path that is clearly unrelated on every platform
18
- path.join(os.tmpdir(), 'completely-unrelated-work'),
19
- ];
20
- describe('isProductionWorkspace', () => {
21
- it.each(PRODUCTION_PATHS)('detects production: %s', (prodPath) => {
22
- expect(isProductionWorkspace(path.resolve(prodPath))).toBe(true);
23
- });
24
- it.each(SAFE_PATHS)('allows safe: %s', (safePath) => {
25
- expect(isProductionWorkspace(path.resolve(safePath))).toBe(false);
26
- });
27
- it('detects descendant', () => {
28
- const prodPath = path.resolve(HOMEDIR_WORKSPACE);
29
- const descendantPath = path.join(prodPath, 'sub', 'child');
30
- expect(isProductionWorkspace(descendantPath)).toBe(true);
31
- });
32
- it('rejects sibling workspace-test (ERR-030)', () => {
33
- expect(isProductionWorkspace(path.resolve(path.join(os.homedir(), '.openclaw', 'workspace-test')))).toBe(false);
34
- });
35
- it('rejects sibling workspace-backup (ERR-030)', () => {
36
- expect(isProductionWorkspace(path.resolve(path.join(os.homedir(), '.openclaw', 'workspace-backup')))).toBe(false);
37
- });
38
- });
39
- describe('guardUatWorkspace', () => {
40
- describe('refused', () => {
41
- it.each(PRODUCTION_PATHS)('refuses production: %s', (prodPath) => {
42
- const r = guardUatWorkspace(prodPath, 'test');
43
- expect(r.refused).toBe(true);
44
- if (r.refused) {
45
- expect(r.reason).toContain('UAT/runtime test commands are not allowed');
46
- expect(r.nextAction).toContain('temporary workspace');
47
- }
48
- });
49
- it('refuses descendant', () => {
50
- const prodPath = path.resolve(HOMEDIR_WORKSPACE);
51
- const descendantPath = path.join(prodPath, 'subdir');
52
- expect(guardUatWorkspace(descendantPath, 'test').refused).toBe(true);
53
- });
54
- });
55
- describe('allowed', () => {
56
- it.each(SAFE_PATHS)('allows safe: %s', (safePath) => {
57
- const r = guardUatWorkspace(safePath, 'test');
58
- expect(r.refused).toBe(false);
59
- });
60
- it.each([
61
- path.join(os.homedir(), '.openclaw', 'workspace-test'),
62
- path.join(os.homedir(), '.openclaw', 'workspace-backup'),
63
- ])('allows sibling: %s (ERR-030)', (p) => {
64
- expect(guardUatWorkspace(p, 'test').refused).toBe(false);
65
- });
66
- });
67
- });
68
- describe('JSON output (EP-04)', () => {
69
- it('outputs single object with reason and nextAction', () => {
70
- const r = guardUatWorkspace(HOMEDIR_WORKSPACE, 'test');
71
- const json = formatGuardRefusal(r, 'test', true);
72
- const parsed = JSON.parse(json);
73
- expect(parsed).toMatchObject({
74
- status: 'refused', reason: expect.any(String), nextAction: expect.any(String),
75
- workspace: expect.any(String), isProduction: true,
76
- });
77
- expect(Array.isArray(parsed)).toBe(false);
78
- });
79
- it('no console prefixes in JSON', () => {
80
- const r = guardUatWorkspace(HOMEDIR_WORKSPACE, 'test');
81
- const json = formatGuardRefusal(r, 'test', true);
82
- expect(json).not.toContain('[pd-cli]');
83
- expect(json).not.toContain('ERROR:');
84
- expect(json.trim().startsWith('{')).toBe(true);
85
- });
86
- });
87
- describe('text output (EP-03)', () => {
88
- it('includes reason and nextAction', () => {
89
- const r = guardUatWorkspace(HOMEDIR_WORKSPACE, 'test');
90
- const text = formatGuardRefusal(r, 'test', false);
91
- expect(text).toContain('Reason:');
92
- expect(text).toContain('Next Action:');
93
- });
94
- });
95
- describe('getSafeUatWorkspacePath', () => {
96
- it('returns deterministic temp path', () => {
97
- const p1 = getSafeUatWorkspacePath();
98
- const p2 = getSafeUatWorkspacePath();
99
- expect(p1).toBe(p2);
100
- expect(p1).toContain(os.tmpdir());
101
- expect(p1).toContain('pd-uat-workspace');
102
- });
103
- });
104
- describe('resolveWorkspacePath', () => {
105
- it('resolves an absolute path as-is', () => {
106
- const abs = path.resolve('/tmp/my-workspace');
107
- expect(resolveWorkspacePath(abs)).toBe(abs);
108
- });
109
- it('resolves a relative path against cwd', () => {
110
- const result = resolveWorkspacePath('relative/path');
111
- const expected = path.resolve(process.cwd(), 'relative/path');
112
- expect(result).toBe(expected);
113
- });
114
- it('defaults to cwd when no input is provided', () => {
115
- const result = resolveWorkspacePath(undefined);
116
- expect(result).toBe(path.resolve(process.cwd()));
117
- });
118
- });
119
- describe('PD_PRODUCTION_WORKSPACE env var (module-load-time)', () => {
120
- // NOTE: PRODUCTION_WORKSPACE_PATHS is built once at module load time from
121
- // process.env.PD_PRODUCTION_WORKSPACE. Setting the env var after the module
122
- // is loaded does NOT change behavior. These tests verify that the default
123
- // production path (HOMEDIR_WORKSPACE) is correctly protected, which is the
124
- // primary regression risk.
125
- it('guardUatWorkspace refuses the default production workspace', () => {
126
- const r = guardUatWorkspace(HOMEDIR_WORKSPACE, 'test');
127
- expect(r.refused).toBe(true);
128
- if (r.refused) {
129
- expect(r.isProduction).toBe(true);
130
- expect(r.workspace).toBe(path.resolve(HOMEDIR_WORKSPACE));
131
- }
132
- });
133
- it('isProductionWorkspace returns true for the default production path', () => {
134
- expect(isProductionWorkspace(path.resolve(HOMEDIR_WORKSPACE))).toBe(true);
135
- });
136
- });
137
- //# sourceMappingURL=production-workspace-guard.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"production-workspace-guard.test.js","sourceRoot":"","sources":["../../src/utils/production-workspace-guard.test.ts"],"names":[],"mappings":"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"}
@@ -1,456 +0,0 @@
1
- /**
2
- * LLM Dogfood Script — PRI-408 (P1/P2 fixes validation)
3
- *
4
- * Runs the RuleHost pipeline with a REAL LLM (qwen3.6-27b-mtp via LM Studio)
5
- * to validate the six-step value chain end-to-end:
6
- *
7
- * pain → dreamer → philosopher → scribe → artificer ↔ evaluator
8
- * → candidate → auto-enqueue → owner approve → activate
9
- * → before/after behavior comparison → deactivate → restore
10
- *
11
- * Usage:
12
- * npx tsx scripts/llm-dogfood.ts
13
- *
14
- * Prerequisites:
15
- * - LM Studio running on http://localhost:12341 with qwen3.6-27b-mtp loaded
16
- * - Set LMSTUDIO_API_KEY=lm-studio (or any non-empty string)
17
- *
18
- * Output:
19
- * - Console log with each stage's result
20
- * - dogfood-output.json with full structured results
21
- */
22
-
23
- import * as os from 'node:os';
24
- import * as path from 'node:path';
25
- import * as fs from 'node:fs';
26
- import {
27
- PiAiRuntimeAdapter,
28
- ArtificerL2Adapter,
29
- DefaultArtificerValidator,
30
- RuntimeStateManager,
31
- SqliteApprovalQueueStore,
32
- SqliteActivationStateStore,
33
- SqlitePIArtifactStore,
34
- ActivationDispatcher,
35
- ApprovalCompletionService,
36
- PromptWriter,
37
- DeferArchiveWriter,
38
- RuleHostWriter,
39
- createProductionGateDeps,
40
- makeIdempotencyKey,
41
- createPITaskDiagnosticJson,
42
- buildToolSemanticRegistry,
43
- } from '@principles/core/runtime-v2';
44
- import type { PIArtifactSnapshot, PIArtifactRecord } from '@principles/core/runtime-v2';
45
- import { runRuleHostPipeline } from '../src/services/rulehost-pipeline-runner.js';
46
- import { compileDemoRule } from '../src/services/demo-rule-compiler.js';
47
- import { resolveWorkspaceHostToolSemantics, saveHostToolDeclaration } from '@principles/host-runtime';
48
- import type { CodeRuleCapability } from '../src/services/rulehost-pipeline-runner.js';
49
-
50
- // ── Config ───────────────────────────────────────────────────────────────────
51
-
52
- const LM_STUDIO_BASE_URL = 'http://localhost:12341/v1';
53
- const MODEL_ID = 'qwen3.6-27b-mtp';
54
- const PROVIDER = 'lmstudio';
55
- const API_KEY_ENV = 'LMSTUDIO_API_KEY';
56
-
57
- // Ensure the API key env var is set (LM Studio doesn't require a real key,
58
- // but PiAiRuntimeAdapter checks process.env[apiKeyEnv] is non-empty)
59
- if (!process.env[API_KEY_ENV]) {
60
- process.env[API_KEY_ENV] = 'lm-studio';
61
- }
62
-
63
- // ── Dogfood pain scenario ────────────────────────────────────────────────────
64
-
65
- const DOGFOOD_PAIN = {
66
- painId: 'pain-dogfood-001',
67
- scenario: 'Agent attempted to write to /etc/passwd during a file operation',
68
- badDecision: 'Wrote directly to /etc/passwd without checking if it is a system path',
69
- betterDecision: 'Block writes to system paths (/etc, /boot, /sys, /proc)',
70
- context: 'File write operation targeting a system-critical path',
71
- };
72
-
73
- // ── Helpers ──────────────────────────────────────────────────────────────────
74
-
75
- function makeTmpDir(): string {
76
- const dir = path.join(os.tmpdir(), `pd-dogfood-${Date.now()}`);
77
- fs.mkdirSync(dir, { recursive: true });
78
- return dir;
79
- }
80
-
81
- function toSnapshot(record: PIArtifactRecord): PIArtifactSnapshot {
82
- return {
83
- artifactId: record.artifactId,
84
- artifactKind: record.artifactKind,
85
- sourceTaskId: record.sourceTaskId,
86
- sourcePrincipleId: record.sourcePrincipleId,
87
- sourceRuleId: record.sourceRuleId,
88
- lineageArtifactIds: record.lineageArtifactIds,
89
- validationStatus: record.validationStatus,
90
- contentJson: record.contentJson,
91
- createdAt: record.createdAt,
92
- updatedAt: record.updatedAt,
93
- };
94
- }
95
-
96
- async function seedPainSignal(sm: RuntimeStateManager, painId: string): Promise<void> {
97
- const baseMetadata = JSON.parse(createPITaskDiagnosticJson({
98
- dependencyTaskIds: [], channel: 'code_tool_hook', timeoutMs: 300_000, inputArtifactRefs: [], outputArtifactRefs: [],
99
- })) as Record<string, unknown>;
100
- const diagnosticJson = JSON.stringify({
101
- ...baseMetadata,
102
- sourcePainId: painId,
103
- painSummary: DOGFOOD_PAIN.scenario,
104
- badDecision: DOGFOOD_PAIN.badDecision,
105
- betterDecision: DOGFOOD_PAIN.betterDecision,
106
- });
107
- await sm.createTask({
108
- taskId: 'dreamer-dogfood-001',
109
- taskKind: 'dreamer',
110
- status: 'pending',
111
- attemptCount: 0,
112
- maxAttempts: 3,
113
- diagnosticJson,
114
- });
115
- }
116
-
117
- function log(stage: string, message: string, detail?: unknown): void {
118
- const timestamp = new Date().toISOString();
119
- console.log(`[${timestamp}] [${stage}] ${message}`);
120
- if (detail !== undefined) {
121
- console.log(JSON.stringify(detail, null, 2));
122
- }
123
- }
124
-
125
- // ── Main dogfood ─────────────────────────────────────────────────────────────
126
-
127
- async function main(): Promise<void> {
128
- const outputDir = path.resolve(process.cwd(), 'dogfood-output');
129
- fs.mkdirSync(outputDir, { recursive: true });
130
-
131
- const tmpDir = makeTmpDir();
132
- log('SETUP', `Workspace: ${tmpDir}`);
133
- log('SETUP', `LLM: ${MODEL_ID} @ ${LM_STUDIO_BASE_URL}`);
134
-
135
- // PRI-657: persist the dogfood tool declaration UP FRONT (it used to be
136
- // written only at Step 5, so the Step-2 L2 self-validation replay resolved
137
- // no host semantics) — both the artificer gate and the activation writer
138
- // then cross the same durable provenance path as a real workspace.
139
- const dogfoodMappings = [
140
- { rawToolName: 'write_file', canonicalKind: 'write' },
141
- { rawToolName: 'edit_file', canonicalKind: 'write' },
142
- { rawToolName: 'bash', canonicalKind: 'execute' },
143
- { rawToolName: 'shell', canonicalKind: 'execute' },
144
- ];
145
- const dogfoodRegistry = buildToolSemanticRegistry(dogfoodMappings);
146
- if (!dogfoodRegistry.ok) throw new Error(dogfoodRegistry.errors.join('; '));
147
- const declarationSave = saveHostToolDeclaration(tmpDir, {
148
- version: 1,
149
- hostKind: 'llm-dogfood',
150
- mappings: dogfoodMappings,
151
- declaredAt: new Date().toISOString(),
152
- });
153
- if (!declarationSave.ok) throw new Error(`saveHostToolDeclaration failed: ${declarationSave.reason}`);
154
-
155
- // ── Step 1: Seed pain signal ──────────────────────────────────────────────
156
- log('STEP-1', `Seeding pain: ${DOGFOOD_PAIN.scenario}`);
157
- const sm = new RuntimeStateManager({ workspaceDir: tmpDir });
158
- await sm.initialize();
159
- await seedPainSignal(sm, DOGFOOD_PAIN.painId);
160
- await sm.close();
161
-
162
- // ── Step 2: Run RuleHost pipeline with real LLM ──────────────────────────
163
- log('STEP-2', 'Starting RuleHost pipeline (dreamer → philosopher → scribe → artificer ↔ evaluator)');
164
-
165
- const adapter = new PiAiRuntimeAdapter({
166
- provider: PROVIDER,
167
- model: MODEL_ID,
168
- apiKeyEnv: API_KEY_ENV,
169
- baseUrl: LM_STUDIO_BASE_URL,
170
- maxRetries: 1,
171
- timeoutMs: 600_000,
172
- maxTokens: 8192,
173
- reasoning: false,
174
- workspace: tmpDir,
175
- });
176
-
177
- // Construct the ArtificerL2Adapter for the artificer stage (PRI-439 Phase 4).
178
- // This adapter uses runAgentLoop with 4 tools (read_rulecode_spec,
179
- // validate_rulecode, replay_rulecode, submit_rulecode) to generate and
180
- // verify RuleCode inside a multi-turn agent loop.
181
- // PRI-657: production-identical gate deps — resolve the workspace host
182
- // declaration through the same durable resolver run-rulehost uses, so the
183
- // self-validation replay crosses the same tool semantics as activation.
184
- const hostSemantics = resolveWorkspaceHostToolSemantics(tmpDir);
185
- if (!hostSemantics.ok) {
186
- log('STEP-2', `Artificer self-validation without host tool semantics (baseline gate): ${hostSemantics.reason} — ${hostSemantics.nextAction}`);
187
- }
188
- const artificerAdapter = new ArtificerL2Adapter({
189
- provider: PROVIDER,
190
- model: MODEL_ID,
191
- apiKeyEnv: API_KEY_ENV,
192
- baseUrl: LM_STUDIO_BASE_URL,
193
- gateDeps: hostSemantics.ok
194
- ? createProductionGateDeps({ toolSemantics: hostSemantics.registry, projectDir: tmpDir })
195
- : createProductionGateDeps(),
196
- validator: new DefaultArtificerValidator(),
197
- totalBudgetMs: 600_000,
198
- maxTokens: 8192,
199
- });
200
-
201
- const capability: CodeRuleCapability = { enabled: true, artificerAdapter };
202
-
203
- let pipelineResult;
204
- try {
205
- pipelineResult = await runRuleHostPipeline({
206
- workspaceDir: tmpDir,
207
- painId: DOGFOOD_PAIN.painId,
208
- runtimeAdapter: adapter,
209
- channel: 'code_tool_hook',
210
- pollIntervalMs: 200,
211
- timeoutMs: 600_000,
212
- maxRounds: 2,
213
- codeRuleCapability: capability,
214
- onProgress: (stage, status, detail) => {
215
- log('PIPELINE', `${stage}: ${status}${detail ? ' — ' + detail : ''}`);
216
- },
217
- });
218
- } catch (err) {
219
- log('STEP-2', 'Pipeline threw', { error: err instanceof Error ? err.message : String(err) });
220
- throw err;
221
- }
222
-
223
- log('STEP-2', `Pipeline decision: ${pipelineResult.decision}`, {
224
- ruleArtifactId: pipelineResult.ruleArtifactId,
225
- principleArtifactId: pipelineResult.principleArtifactId,
226
- approvalId: pipelineResult.approvalId,
227
- degradationReason: pipelineResult.degradationReason,
228
- });
229
-
230
- if (pipelineResult.decision !== 'candidate_ready_for_owner_review') {
231
- log('STEP-2', 'Pipeline did not produce a candidate — saving partial results and exiting');
232
- const partialOutput = {
233
- pain: DOGFOOD_PAIN,
234
- pipelineResult,
235
- timestamp: new Date().toISOString(),
236
- };
237
- fs.writeFileSync(path.join(outputDir, 'dogfood-partial.json'), JSON.stringify(partialOutput, null, 2));
238
- console.log(`\nPartial results saved to ${path.join(outputDir, 'dogfood-partial.json')}`);
239
- return;
240
- }
241
-
242
- // ── Step 3: Extract generated principle + RuleCode + evaluator judgment ──
243
- log('STEP-3', 'Extracting generated artifacts');
244
- const sm2 = new RuntimeStateManager({ workspaceDir: tmpDir });
245
- await sm2.initialize();
246
- const artifactStore = new SqlitePIArtifactStore(sm2.connection);
247
- const approvalStore = new SqliteApprovalQueueStore(sm2.connection);
248
- const stateStore = new SqliteActivationStateStore(sm2.connection);
249
-
250
- const ruleArtifact = await artifactStore.getArtifactById(pipelineResult.ruleArtifactId!);
251
- const principleArtifact = pipelineResult.principleArtifactId
252
- ? await artifactStore.getArtifactById(pipelineResult.principleArtifactId)
253
- : null;
254
-
255
- let generatedPrinciple: unknown = null;
256
- let ruleCode: string | null = null;
257
- let evaluatorJudgment: unknown = null;
258
-
259
- if (principleArtifact) {
260
- try {
261
- generatedPrinciple = JSON.parse(principleArtifact.contentJson);
262
- } catch {
263
- generatedPrinciple = principleArtifact.contentJson;
264
- }
265
- log('STEP-3', 'Generated principle extracted', { artifactId: principleArtifact.artifactId });
266
- }
267
-
268
- if (ruleArtifact) {
269
- try {
270
- const ruleContent = JSON.parse(ruleArtifact.contentJson) as Record<string, unknown>;
271
- ruleCode = typeof ruleContent.implementationCode === 'string' ? ruleContent.implementationCode : null;
272
- evaluatorJudgment = ruleContent.adversarialResult ?? null;
273
- log('STEP-3', 'RuleCode extracted', { artifactId: ruleArtifact.artifactId, codeLength: ruleCode?.length ?? 0 });
274
- log('STEP-3', 'Evaluator judgment', evaluatorJudgment);
275
- } catch {
276
- log('STEP-3', 'Failed to parse rule artifact contentJson');
277
- }
278
- }
279
-
280
- // ── Step 4: Owner approves the candidate ─────────────────────────────────
281
- log('STEP-4', 'Owner approving candidate');
282
- const approvalId = pipelineResult.approvalId;
283
- if (!approvalId) {
284
- log('STEP-4', 'No approvalId — candidate was not auto-enqueued', {
285
- degradationReason: pipelineResult.degradationReason,
286
- });
287
- const partialOutput = {
288
- pain: DOGFOOD_PAIN,
289
- pipelineResult,
290
- timestamp: new Date().toISOString(),
291
- error: 'auto_enqueue_failed',
292
- };
293
- fs.writeFileSync(path.join(outputDir, 'dogfood-partial.json'), JSON.stringify(partialOutput, null, 2));
294
- console.log(`\nPartial results saved (enqueue failed)`);
295
- await sm2.close();
296
- return;
297
- }
298
- const approveResult = await approvalStore.approve(approvalId, 'owner-dogfood', 'Dogfood approval');
299
- log('STEP-4', `Approval result: ok=${approveResult.ok}`);
300
-
301
- // ── Step 5: Dispatch activation ──────────────────────────────────────────
302
- log('STEP-5', 'Dispatching activation');
303
- const artifactReadModel = {
304
- getArtifactById: async (id: string): Promise<PIArtifactSnapshot | null> => {
305
- const rec = await artifactStore.getArtifactById(id);
306
- return rec ? toSnapshot(rec) : null;
307
- },
308
- };
309
-
310
- // PRI-657: the dogfood tool declaration was persisted at SETUP; Step 2
311
- // re-reads it through the durable resolver, and the activation writer below
312
- // builds its registry from the same dogfoodMappings constant — one source,
313
- // no drift between the two paths.
314
- const dispatcher = new ActivationDispatcher(
315
- artifactReadModel,
316
- stateStore,
317
- {
318
- writers: [
319
- new PromptWriter(),
320
- // PRI-634-F: dogfood replay normalizes against the dogfood workspace
321
- // root and validates tool existence against the declared registry.
322
- new RuleHostWriter({
323
- gateDeps: createProductionGateDeps({ projectDir: tmpDir, toolSemantics: dogfoodRegistry.registry }),
324
- projectDir: tmpDir,
325
- toolSemantics: dogfoodRegistry.registry,
326
- }),
327
- new DeferArchiveWriter(),
328
- ],
329
- approvalQueueStore: approvalStore,
330
- },
331
- );
332
-
333
- const completionService = new ApprovalCompletionService(
334
- approvalStore,
335
- dispatcher,
336
- stateStore,
337
- );
338
-
339
- const completionResult = await completionService.completeApproval({
340
- approvalId,
341
- actor: { kind: 'human', userId: 'owner-dogfood' },
342
- now: new Date().toISOString(),
343
- });
344
-
345
- log('STEP-5', `Activation result: ok=${completionResult.ok}`, completionResult);
346
-
347
- // ── Step 6: Before/after behavior comparison ─────────────────────────────
348
- log('STEP-6', 'Before/after behavior comparison');
349
-
350
- // Test the rule code against system-path and non-system-path inputs
351
- const testCases = [
352
- { name: 'system-path-write', input: { action: { paramsSummary: { path: '/etc/passwd' } } }, expected: 'block' },
353
- { name: 'system-path-write-boot', input: { action: { paramsSummary: { path: '/boot/grub.cfg' } } }, expected: 'block' },
354
- { name: 'normal-write', input: { action: { paramsSummary: { path: '/project/src/main.ts' } } }, expected: 'allow' },
355
- { name: 'normal-write-2', input: { action: { paramsSummary: { path: '/home/user/file.txt' } } }, expected: 'allow' },
356
- ];
357
-
358
- let behaviorResults: Array<{ name: string; expected: string; actual: string; passed: boolean }> = [];
359
- if (ruleCode) {
360
- // P1 #1 fix: use the production vm sandbox (compileDemoRule) instead of
361
- // `new Function` which bypasses the sandbox and has no timeout protection.
362
- // Also, `new Function('input', 'helpers', ruleCode)` would define `evaluate`
363
- // inside the function body but not call it, returning undefined — making
364
- // the behavior comparison unreliable.
365
- try {
366
- const evaluateFn = compileDemoRule(ruleCode, 'dogfood-behavior-test');
367
- behaviorResults = testCases.map((tc) => {
368
- try {
369
- const result = evaluateFn(tc.input as never, {} as never);
370
- const actual = typeof result === 'object' && result !== null && 'decision' in result
371
- ? String((result as Record<string, unknown>).decision)
372
- : 'unknown';
373
- return {
374
- name: tc.name,
375
- expected: tc.expected,
376
- actual,
377
- passed: actual === tc.expected,
378
- };
379
- } catch (err) {
380
- return {
381
- name: tc.name,
382
- expected: tc.expected,
383
- actual: `error: ${err instanceof Error ? err.message : String(err)}`,
384
- passed: false,
385
- };
386
- }
387
- });
388
- } catch (err) {
389
- log('STEP-6', 'Rule code compilation failed (vm sandbox)', { error: err instanceof Error ? err.message : String(err) });
390
- }
391
- }
392
-
393
- log('STEP-6', 'Behavior results', behaviorResults);
394
-
395
- // ── Step 7: Deactivate and verify restoration ────────────────────────────
396
- log('STEP-7', 'Deactivating rule');
397
- const idempotencyKey = makeIdempotencyKey(pipelineResult.ruleArtifactId!, 'code_tool_hook');
398
- const activationRecord = await stateStore.getActivationStatus(idempotencyKey);
399
- if (activationRecord) {
400
- const deactivateResult = await stateStore.deactivateActivation(activationRecord.activationId, new Date().toISOString());
401
- log('STEP-7', `Deactivation: ${deactivateResult ? 'success' : 'failed'}`);
402
-
403
- // Verify the record is deactivated
404
- const afterDeactivate = await stateStore.getActivationStatus(idempotencyKey);
405
- log('STEP-7', `After deactivate: deactivatedAt=${afterDeactivate?.deactivatedAt ?? 'null'}`);
406
- }
407
-
408
- // ── Save full output ─────────────────────────────────────────────────────
409
- const fullOutput = {
410
- timestamp: new Date().toISOString(),
411
- pain: DOGFOOD_PAIN,
412
- pipelineResult: {
413
- decision: pipelineResult.decision,
414
- ruleArtifactId: pipelineResult.ruleArtifactId,
415
- principleArtifactId: pipelineResult.principleArtifactId,
416
- approvalId: pipelineResult.approvalId,
417
- stages: pipelineResult.stages,
418
- degradationReason: pipelineResult.degradationReason,
419
- },
420
- generatedPrinciple,
421
- ruleCode,
422
- evaluatorJudgment,
423
- approval: { ok: approveResult.ok },
424
- activation: {
425
- ok: completionResult.ok,
426
- decision: completionResult.ok ? completionResult.decision : null,
427
- activationId: completionResult.ok ? completionResult.activationId : null,
428
- },
429
- behaviorResults,
430
- model: { provider: PROVIDER, model: MODEL_ID, baseUrl: LM_STUDIO_BASE_URL },
431
- };
432
-
433
- const outputPath = path.join(outputDir, 'dogfood-output.json');
434
- fs.writeFileSync(outputPath, JSON.stringify(fullOutput, null, 2));
435
-
436
- // Also save rule code separately for easy review
437
- if (ruleCode) {
438
- fs.writeFileSync(path.join(outputDir, 'generated-rule.js'), ruleCode);
439
- }
440
-
441
- log('DONE', `Results saved to ${outputDir}/`);
442
-
443
- await sm2.close();
444
-
445
- // Cleanup tmp dir
446
- try {
447
- fs.rmSync(tmpDir, { recursive: true, force: true });
448
- } catch {
449
- // ignore
450
- }
451
- }
452
-
453
- main().catch((err) => {
454
- console.error('Dogfood failed:', err);
455
- process.exit(1);
456
- });