create-principles-disciple 1.92.0 → 1.94.0

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 (335) hide show
  1. package/console/dist/server/config/AuthConfig.js +6 -0
  2. package/console/dist/server/config/pd-config-store.d.ts +7 -1
  3. package/console/dist/server/config/pd-config-store.js +11 -1
  4. package/console/dist/server/index.js +41 -22
  5. package/console/dist/server/models/ApprovalsConsoleModel.js +4 -12
  6. package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +6 -3
  7. package/console/dist/server/models/ConsoleLifecycleDatasource.js +1 -1
  8. package/console/dist/server/routes/activations.js +4 -0
  9. package/console/dist/server/routes/approvals.js +24 -4
  10. package/console/dist/server/routes/feedback-reports.js +7 -5
  11. package/console/dist/server/routes/lifecycle.js +6 -1
  12. package/console/dist/server/routes/principles.js +10 -2
  13. package/console/dist/server/routes/workspaces.js +4 -0
  14. package/console/dist/ui/components/ui/charts.js +4 -1
  15. package/console/dist/ui/components/ui/markdown.js +9 -5
  16. package/console/dist/ui/utils/enum-labels.js +4 -1
  17. package/console/dist/web/assets/app.js +5 -2
  18. package/core/dist/index.d.ts +2 -3
  19. package/core/dist/index.d.ts.map +1 -1
  20. package/core/dist/index.js +1 -3
  21. package/core/dist/index.js.map +1 -1
  22. package/core/dist/pain-signal.d.ts +11 -71
  23. package/core/dist/pain-signal.d.ts.map +1 -1
  24. package/core/dist/pain-signal.js +10 -120
  25. package/core/dist/pain-signal.js.map +1 -1
  26. package/core/dist/principle-tree-ledger.d.ts +4 -87
  27. package/core/dist/principle-tree-ledger.d.ts.map +1 -1
  28. package/core/dist/principle-tree-ledger.js +51 -148
  29. package/core/dist/principle-tree-ledger.js.map +1 -1
  30. package/core/dist/prompt-builder/__tests__/model-config.test.d.ts +2 -0
  31. package/core/dist/prompt-builder/__tests__/model-config.test.d.ts.map +1 -0
  32. package/core/dist/prompt-builder/__tests__/model-config.test.js +158 -0
  33. package/core/dist/prompt-builder/__tests__/model-config.test.js.map +1 -0
  34. package/core/dist/prompt-builder/__tests__/xml-escape.test.d.ts +2 -0
  35. package/core/dist/prompt-builder/__tests__/xml-escape.test.d.ts.map +1 -0
  36. package/core/dist/prompt-builder/__tests__/xml-escape.test.js +42 -0
  37. package/core/dist/prompt-builder/__tests__/xml-escape.test.js.map +1 -0
  38. package/core/dist/prompt-builder/index.d.ts +3 -0
  39. package/core/dist/prompt-builder/index.d.ts.map +1 -1
  40. package/core/dist/prompt-builder/index.js +2 -0
  41. package/core/dist/prompt-builder/index.js.map +1 -1
  42. package/core/dist/prompt-builder/model-config.d.ts +42 -0
  43. package/core/dist/prompt-builder/model-config.d.ts.map +1 -0
  44. package/core/dist/prompt-builder/model-config.js +84 -0
  45. package/core/dist/prompt-builder/model-config.js.map +1 -0
  46. package/core/dist/prompt-builder/xml-escape.d.ts +12 -0
  47. package/core/dist/prompt-builder/xml-escape.d.ts.map +1 -0
  48. package/core/dist/prompt-builder/xml-escape.js +19 -0
  49. package/core/dist/prompt-builder/xml-escape.js.map +1 -0
  50. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +265 -20
  51. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  52. package/core/dist/runtime-v2/__tests__/barrel-io-cleanup.test.d.ts +12 -0
  53. package/core/dist/runtime-v2/__tests__/barrel-io-cleanup.test.d.ts.map +1 -0
  54. package/core/dist/runtime-v2/__tests__/barrel-io-cleanup.test.js +46 -0
  55. package/core/dist/runtime-v2/__tests__/barrel-io-cleanup.test.js.map +1 -0
  56. package/core/dist/runtime-v2/__tests__/io-deletion.test.d.ts +12 -0
  57. package/core/dist/runtime-v2/__tests__/io-deletion.test.d.ts.map +1 -0
  58. package/core/dist/runtime-v2/__tests__/io-deletion.test.js +92 -0
  59. package/core/dist/runtime-v2/__tests__/io-deletion.test.js.map +1 -0
  60. package/core/dist/runtime-v2/__tests__/ledger-codec.test.d.ts +2 -0
  61. package/core/dist/runtime-v2/__tests__/ledger-codec.test.d.ts.map +1 -0
  62. package/core/dist/runtime-v2/__tests__/ledger-codec.test.js +429 -0
  63. package/core/dist/runtime-v2/__tests__/ledger-codec.test.js.map +1 -0
  64. package/core/dist/runtime-v2/__tests__/ledger-store.test.d.ts +2 -0
  65. package/core/dist/runtime-v2/__tests__/ledger-store.test.d.ts.map +1 -0
  66. package/core/dist/runtime-v2/__tests__/ledger-store.test.js +65 -0
  67. package/core/dist/runtime-v2/__tests__/ledger-store.test.js.map +1 -0
  68. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts +2 -0
  69. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts.map +1 -0
  70. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js +395 -0
  71. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js.map +1 -0
  72. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +146 -0
  73. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  74. package/core/dist/runtime-v2/__tests__/pain-signal-unification.test.d.ts +2 -0
  75. package/core/dist/runtime-v2/__tests__/pain-signal-unification.test.d.ts.map +1 -0
  76. package/core/dist/runtime-v2/__tests__/pain-signal-unification.test.js +150 -0
  77. package/core/dist/runtime-v2/__tests__/pain-signal-unification.test.js.map +1 -0
  78. package/core/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js +199 -0
  79. package/core/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js.map +1 -1
  80. package/core/dist/runtime-v2/bridge-result-shaper.d.ts +53 -0
  81. package/core/dist/runtime-v2/bridge-result-shaper.d.ts.map +1 -0
  82. package/core/dist/runtime-v2/bridge-result-shaper.js +117 -0
  83. package/core/dist/runtime-v2/bridge-result-shaper.js.map +1 -0
  84. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.d.ts +13 -0
  85. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.d.ts.map +1 -0
  86. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.js +111 -0
  87. package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.js.map +1 -0
  88. package/core/dist/runtime-v2/detection/detection-funnel-policy.d.ts +103 -0
  89. package/core/dist/runtime-v2/detection/detection-funnel-policy.d.ts.map +1 -0
  90. package/core/dist/runtime-v2/detection/detection-funnel-policy.js +135 -0
  91. package/core/dist/runtime-v2/detection/detection-funnel-policy.js.map +1 -0
  92. package/core/dist/runtime-v2/detection/index.d.ts +10 -0
  93. package/core/dist/runtime-v2/detection/index.d.ts.map +1 -0
  94. package/core/dist/runtime-v2/detection/index.js +9 -0
  95. package/core/dist/runtime-v2/detection/index.js.map +1 -0
  96. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +156 -0
  97. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -1
  98. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.d.ts +12 -0
  99. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.d.ts.map +1 -0
  100. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js +181 -0
  101. package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js.map +1 -0
  102. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js +104 -1
  103. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js.map +1 -1
  104. package/core/dist/runtime-v2/evidence-triage/index.d.ts +3 -0
  105. package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -1
  106. package/core/dist/runtime-v2/evidence-triage/index.js +3 -0
  107. package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -1
  108. package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +128 -0
  109. package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -0
  110. package/core/dist/runtime-v2/evidence-triage/observation-resolver.js +203 -0
  111. package/core/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -0
  112. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts +4 -0
  113. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts.map +1 -1
  114. package/core/dist/runtime-v2/evidence-triage/triage-policy.js +66 -9
  115. package/core/dist/runtime-v2/evidence-triage/triage-policy.js.map +1 -1
  116. package/core/dist/runtime-v2/evidence-triage/types.d.ts +14 -0
  117. package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -1
  118. package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -1
  119. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +33 -4
  120. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  121. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  122. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +9 -2
  123. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  124. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.d.ts +15 -0
  125. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.d.ts.map +1 -0
  126. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.js +450 -0
  127. package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.js.map +1 -0
  128. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.d.ts +13 -0
  129. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.d.ts.map +1 -0
  130. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.js +243 -0
  131. package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.js.map +1 -0
  132. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.d.ts +12 -0
  133. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.d.ts.map +1 -0
  134. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.js +172 -0
  135. package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.js.map +1 -0
  136. package/core/dist/runtime-v2/index.d.ts +9 -6
  137. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  138. package/core/dist/runtime-v2/index.js +8 -4
  139. package/core/dist/runtime-v2/index.js.map +1 -1
  140. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts +2 -0
  141. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts.map +1 -0
  142. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js +306 -0
  143. package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js.map +1 -0
  144. package/core/dist/runtime-v2/internalization/index.d.ts +0 -16
  145. package/core/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  146. package/core/dist/runtime-v2/internalization/index.js +0 -8
  147. package/core/dist/runtime-v2/internalization/index.js.map +1 -1
  148. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.d.ts +15 -0
  149. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.d.ts.map +1 -0
  150. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.js +179 -0
  151. package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.js.map +1 -0
  152. package/core/dist/runtime-v2/pain-gate/index.d.ts +10 -0
  153. package/core/dist/runtime-v2/pain-gate/index.d.ts.map +1 -0
  154. package/core/dist/runtime-v2/pain-gate/index.js +9 -0
  155. package/core/dist/runtime-v2/pain-gate/index.js.map +1 -0
  156. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.d.ts +121 -0
  157. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.d.ts.map +1 -0
  158. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.js +157 -0
  159. package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.js.map +1 -0
  160. package/core/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
  161. package/core/dist/runtime-v2/pain-signal-bridge.js +14 -88
  162. package/core/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
  163. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  164. package/core/dist/runtime-v2/pain-signal-observability.js +15 -5
  165. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  166. package/core/dist/runtime-v2/principle-tree/ledger-codec.d.ts +30 -0
  167. package/core/dist/runtime-v2/principle-tree/ledger-codec.d.ts.map +1 -0
  168. package/core/dist/runtime-v2/principle-tree/ledger-codec.js +154 -0
  169. package/core/dist/runtime-v2/principle-tree/ledger-codec.js.map +1 -0
  170. package/core/dist/runtime-v2/types/event-types.d.ts +0 -27
  171. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  172. package/core/dist/runtime-v2/types/event-types.js +2 -17
  173. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  174. package/core/dist/runtime-v2/types/index.d.ts +4 -2
  175. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  176. package/core/dist/runtime-v2/types/index.js +4 -1
  177. package/core/dist/runtime-v2/types/index.js.map +1 -1
  178. package/core/dist/runtime-v2/types/ledger-store.d.ts +101 -0
  179. package/core/dist/runtime-v2/types/ledger-store.d.ts.map +1 -0
  180. package/core/dist/runtime-v2/types/ledger-store.js +15 -0
  181. package/core/dist/runtime-v2/types/ledger-store.js.map +1 -0
  182. package/core/dist/runtime-v2/types/pain-signal.d.ts +7 -5
  183. package/core/dist/runtime-v2/types/pain-signal.d.ts.map +1 -1
  184. package/core/dist/runtime-v2/types/pain-signal.js +25 -5
  185. package/core/dist/runtime-v2/types/pain-signal.js.map +1 -1
  186. package/core/package.json +3 -3
  187. package/dist/installer.d.ts.map +1 -1
  188. package/dist/installer.js +9 -3
  189. package/dist/installer.js.map +1 -1
  190. package/dist/mvp-config.d.ts +0 -10
  191. package/dist/mvp-config.d.ts.map +1 -1
  192. package/dist/mvp-config.js +0 -64
  193. package/dist/mvp-config.js.map +1 -1
  194. package/dist/utils/env.d.ts.map +1 -1
  195. package/dist/utils/env.js +10 -4
  196. package/dist/utils/env.js.map +1 -1
  197. package/package.json +1 -1
  198. package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.js +11 -3
  199. package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.js.map +1 -1
  200. package/pd-cli/dist/commands/candidate.d.ts.map +1 -1
  201. package/pd-cli/dist/commands/candidate.js +2 -1
  202. package/pd-cli/dist/commands/candidate.js.map +1 -1
  203. package/pd-cli/dist/commands/health.d.ts.map +1 -1
  204. package/pd-cli/dist/commands/health.js +2 -1
  205. package/pd-cli/dist/commands/health.js.map +1 -1
  206. package/pd-cli/dist/commands/mvp-smoke.js +1 -1
  207. package/pd-cli/dist/commands/mvp-smoke.js.map +1 -1
  208. package/pd-cli/dist/commands/rulecode.js +1 -1
  209. package/pd-cli/dist/commands/rulecode.js.map +1 -1
  210. package/pd-cli/dist/commands/runtime-canary.d.ts.map +1 -1
  211. package/pd-cli/dist/commands/runtime-canary.js +10 -11
  212. package/pd-cli/dist/commands/runtime-canary.js.map +1 -1
  213. package/pd-cli/dist/commands/runtime-internalization-integrity.d.ts.map +1 -1
  214. package/pd-cli/dist/commands/runtime-internalization-integrity.js +3 -1
  215. package/pd-cli/dist/commands/runtime-internalization-integrity.js.map +1 -1
  216. package/pd-cli/dist/commands/runtime-internalization-queue.d.ts.map +1 -1
  217. package/pd-cli/dist/commands/runtime-internalization-queue.js +13 -16
  218. package/pd-cli/dist/commands/runtime-internalization-queue.js.map +1 -1
  219. package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
  220. package/pd-cli/dist/commands/runtime-internalization-run-once.js +3 -0
  221. package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
  222. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts.map +1 -1
  223. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js +61 -7
  224. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js.map +1 -1
  225. package/pd-cli/dist/commands/runtime-uat.d.ts.map +1 -1
  226. package/pd-cli/dist/commands/runtime-uat.js +4 -1
  227. package/pd-cli/dist/commands/runtime-uat.js.map +1 -1
  228. package/pd-cli/dist/commands/runtime.js +1 -1
  229. package/pd-cli/dist/commands/runtime.js.map +1 -1
  230. package/pd-cli/dist/index.js +67 -34
  231. package/pd-cli/dist/index.js.map +1 -1
  232. package/pd-cli/dist/legacy/session-history-import.js +7 -5
  233. package/pd-cli/dist/legacy/session-history-import.js.map +1 -1
  234. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.d.ts +2 -0
  235. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.d.ts.map +1 -0
  236. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.js +314 -0
  237. package/pd-cli/dist/services/__tests__/rulehost-readiness.test.js.map +1 -0
  238. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js +33 -14
  239. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js.map +1 -1
  240. package/pd-cli/dist/services/pain-flood-simulation-runner.d.ts.map +1 -1
  241. package/pd-cli/dist/services/pain-flood-simulation-runner.js +6 -2
  242. package/pd-cli/dist/services/pain-flood-simulation-runner.js.map +1 -1
  243. package/pd-cli/dist/services/rulehost-readiness.d.ts +62 -0
  244. package/pd-cli/dist/services/rulehost-readiness.d.ts.map +1 -0
  245. package/pd-cli/dist/services/rulehost-readiness.js +214 -0
  246. package/pd-cli/dist/services/rulehost-readiness.js.map +1 -0
  247. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts +1 -1
  248. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts.map +1 -1
  249. package/pd-cli/dist/services/runtime-adapter-resolver.js +9 -7
  250. package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -1
  251. package/plugin/dist/commands/capabilities.js +3 -2
  252. package/plugin/dist/commands/disable-impl.js +1 -1
  253. package/plugin/dist/commands/evolution-status.js +0 -2
  254. package/plugin/dist/commands/focus.js +10 -2
  255. package/plugin/dist/commands/rollback-impl.js +1 -1
  256. package/plugin/dist/commands/thinking-os.js +5 -1
  257. package/plugin/dist/core/correction-cue-learner.js +2 -0
  258. package/plugin/dist/core/detection-funnel.d.ts +25 -11
  259. package/plugin/dist/core/detection-funnel.js +32 -80
  260. package/plugin/dist/core/event-log.d.ts +1 -3
  261. package/plugin/dist/core/event-log.js +27 -31
  262. package/plugin/dist/core/evolution-reducer.d.ts +0 -8
  263. package/plugin/dist/core/evolution-reducer.js +9 -19
  264. package/plugin/dist/core/focus-history.js +1 -1
  265. package/plugin/dist/core/hygiene/tracker.js +3 -3
  266. package/plugin/dist/core/pain-diagnostic-gate.d.ts +37 -28
  267. package/plugin/dist/core/pain-diagnostic-gate.js +53 -89
  268. package/plugin/dist/core/pain.d.ts +0 -63
  269. package/plugin/dist/core/pain.js +0 -167
  270. package/plugin/dist/core/paths.d.ts +0 -1
  271. package/plugin/dist/core/paths.js +2 -1
  272. package/plugin/dist/core/principle-compiler/compiler.js +2 -0
  273. package/plugin/dist/core/replay-engine.js +1 -1
  274. package/plugin/dist/core/rule-host.js +3 -1
  275. package/plugin/dist/core/schema/migrations/001-init-trajectory.js +3 -6
  276. package/plugin/dist/core/schema/schema-definitions.js +4 -9
  277. package/plugin/dist/core/thinking-os-parser.js +13 -4
  278. package/plugin/dist/core/trajectory.d.ts +0 -16
  279. package/plugin/dist/core/trajectory.js +9 -60
  280. package/plugin/dist/hooks/after-tool-call-helpers.d.ts +4 -1
  281. package/plugin/dist/hooks/after-tool-call-helpers.js +13 -17
  282. package/plugin/dist/hooks/gate-block-helper.js +57 -17
  283. package/plugin/dist/hooks/lifecycle.js +3 -6
  284. package/plugin/dist/hooks/llm.js +66 -26
  285. package/plugin/dist/hooks/pain.d.ts +3 -1
  286. package/plugin/dist/hooks/pain.js +119 -49
  287. package/plugin/dist/hooks/prompt-helpers.d.ts +87 -0
  288. package/plugin/dist/hooks/prompt-helpers.js +251 -0
  289. package/plugin/dist/hooks/prompt-types.d.ts +66 -0
  290. package/plugin/dist/hooks/prompt-types.js +12 -0
  291. package/plugin/dist/hooks/prompt.d.ts +7 -38
  292. package/plugin/dist/hooks/prompt.js +361 -325
  293. package/plugin/dist/hooks/raw-observation-adapter.d.ts +9 -50
  294. package/plugin/dist/hooks/raw-observation-adapter.js +9 -164
  295. package/plugin/dist/hooks/raw-observation-types.d.ts +6 -57
  296. package/plugin/dist/hooks/raw-observation-types.js +5 -9
  297. package/plugin/dist/hooks/trajectory-collector.d.ts +20 -4
  298. package/plugin/dist/hooks/trajectory-collector.js +95 -156
  299. package/plugin/dist/hooks/triage-adapter.js +6 -26
  300. package/plugin/dist/hooks/trigger-cooldown-tracker.d.ts +12 -0
  301. package/plugin/dist/hooks/trigger-cooldown-tracker.js +25 -0
  302. package/plugin/dist/index.js +7 -2
  303. package/plugin/dist/openclaw-sdk.d.ts +4 -1
  304. package/plugin/dist/service/evolution-worker.js +8 -62
  305. package/plugin/dist/service/internalization-auto-consumer-service.js +2 -1
  306. package/plugin/dist/service/runtime-summary-service.d.ts +0 -2
  307. package/plugin/dist/service/runtime-summary-service.js +8 -5
  308. package/plugin/dist/service/workflow-watchdog.js +2 -1
  309. package/plugin/dist/types/event-types.d.ts +1 -1
  310. package/plugin/dist/utils/retry.js +7 -2
  311. package/plugin/dist/utils/session-key.js +4 -1
  312. package/plugin/scripts/sync-plugin.mjs +33 -22
  313. package/plugin/scripts/validate-live-path.ts +0 -18
  314. package/plugin/templates/langs/en/skills/pd-cli-operator/SKILL.md +20 -11
  315. package/plugin/templates/langs/en/skills/pd-runtime-v2/SKILL.md +10 -0
  316. package/plugin/templates/langs/zh/skills/pd-cli-operator/SKILL.md +20 -11
  317. package/plugin/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +10 -0
  318. package/console/dist/server/config/feature-flags.d.ts +0 -25
  319. package/console/dist/server/config/feature-flags.js +0 -101
  320. package/core/dist/io.d.ts +0 -35
  321. package/core/dist/io.d.ts.map +0 -1
  322. package/core/dist/io.js +0 -95
  323. package/core/dist/io.js.map +0 -1
  324. package/pd-cli/dist/commands/central-sync.d.ts +0 -10
  325. package/pd-cli/dist/commands/central-sync.d.ts.map +0 -1
  326. package/pd-cli/dist/commands/central-sync.js +0 -32
  327. package/pd-cli/dist/commands/central-sync.js.map +0 -1
  328. package/pd-cli/dist/services/feature-flag-loader.d.ts +0 -6
  329. package/pd-cli/dist/services/feature-flag-loader.d.ts.map +0 -1
  330. package/pd-cli/dist/services/feature-flag-loader.js +0 -53
  331. package/pd-cli/dist/services/feature-flag-loader.js.map +0 -1
  332. package/plugin/dist/core/observability.d.ts +0 -40
  333. package/plugin/dist/core/observability.js +0 -164
  334. package/plugin/dist/hooks/subagent.d.ts +0 -9
  335. package/plugin/dist/hooks/subagent.js +0 -122
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PRI-443 Phase 5: runtime-v2 barrel I/O cleanup
3
+ *
4
+ * Verifies that:
5
+ * 1. runtime-v2/index.ts does NOT re-export I/O functions (loadLedger, saveLedger,
6
+ * getLedgerFilePathPublic, updatePrinciple) — these belong in the I/O module
7
+ * 2. runtime-v2/index.ts does NOT re-export LedgerTreeStore from
8
+ * '../principle-tree-ledger.js' — types come from pure modules
9
+ * 3. package.json exposes "./principle-tree-ledger" subpath for direct I/O access
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=barrel-io-cleanup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barrel-io-cleanup.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/barrel-io-cleanup.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * PRI-443 Phase 5: runtime-v2 barrel I/O cleanup
3
+ *
4
+ * Verifies that:
5
+ * 1. runtime-v2/index.ts does NOT re-export I/O functions (loadLedger, saveLedger,
6
+ * getLedgerFilePathPublic, updatePrinciple) — these belong in the I/O module
7
+ * 2. runtime-v2/index.ts does NOT re-export LedgerTreeStore from
8
+ * '../principle-tree-ledger.js' — types come from pure modules
9
+ * 3. package.json exposes "./principle-tree-ledger" subpath for direct I/O access
10
+ */
11
+ import { describe, it, expect } from 'vitest';
12
+ import { readFileSync } from 'fs';
13
+ import { resolve } from 'path';
14
+ const CORE_SRC = resolve(__dirname, '..', '..');
15
+ describe('PRI-443 Phase 5: runtime-v2 barrel I/O cleanup', () => {
16
+ it('runtime-v2/index.ts does NOT re-export I/O functions from principle-tree-ledger', () => {
17
+ const barrelPath = resolve(CORE_SRC, 'runtime-v2', 'index.ts');
18
+ const content = readFileSync(barrelPath, 'utf-8');
19
+ // The I/O functions loadLedger, saveLedger, getLedgerFilePathPublic,
20
+ // updatePrinciple must NOT be re-exported from the runtime-v2 barrel.
21
+ // Consumers should import from @principles/core/principle-tree-ledger instead.
22
+ expect(content).not.toMatch(/export\s*\{[^}]*\bloadLedger\b[^}]*\}\s*from\s*['"]\.\.\/principle-tree-ledger\.js['"]/);
23
+ expect(content).not.toMatch(/export\s*\{[^}]*\bsaveLedger\b[^}]*\}\s*from\s*['"]\.\.\/principle-tree-ledger\.js['"]/);
24
+ expect(content).not.toMatch(/export\s*\{[^}]*\bgetLedgerFilePathPublic\b[^}]*\}\s*from\s*['"]\.\.\/principle-tree-ledger\.js['"]/);
25
+ expect(content).not.toMatch(/export\s*\{[^}]*\bupdatePrinciple\b[^}]*\}\s*from\s*['"]\.\.\/principle-tree-ledger\.js['"]/);
26
+ });
27
+ it('runtime-v2/index.ts does NOT re-export LedgerTreeStore from principle-tree-ledger', () => {
28
+ const barrelPath = resolve(CORE_SRC, 'runtime-v2', 'index.ts');
29
+ const content = readFileSync(barrelPath, 'utf-8');
30
+ // LedgerTreeStore type must come from the pure types module, not the I/O module
31
+ expect(content).not.toMatch(/export\s+type\s*\{[^}]*\bLedgerTreeStore\b[^}]*\}\s*from\s*['"]\.\.\/principle-tree-ledger\.js['"]/);
32
+ });
33
+ it('package.json exposes "./principle-tree-ledger" subpath', () => {
34
+ const pkgPath = resolve(CORE_SRC, '..', 'package.json');
35
+ const parsed = JSON.parse(readFileSync(pkgPath, 'utf-8'));
36
+ if (!parsed || typeof parsed !== 'object' || !Object.hasOwn(parsed, 'exports')) {
37
+ throw new Error('package.json 缺少 exports 字段');
38
+ }
39
+ const pkgExports = parsed.exports;
40
+ if (!pkgExports || typeof pkgExports !== 'object') {
41
+ throw new Error('package.json exports 字段格式非法');
42
+ }
43
+ expect(Object.hasOwn(pkgExports, './principle-tree-ledger')).toBe(true);
44
+ });
45
+ });
46
+ //# sourceMappingURL=barrel-io-cleanup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barrel-io-cleanup.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/barrel-io-cleanup.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEhD,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAElD,qEAAqE;QACrE,sEAAsE;QACtE,+EAA+E;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wFAAwF,CAAC,CAAC;QACtH,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wFAAwF,CAAC,CAAC;QACtH,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qGAAqG,CAAC,CAAC;QACnI,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,6FAA6F,CAAC,CAAC;IAC7H,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAElD,gFAAgF;QAChF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oGAAoG,CAAC,CAAC;IACpI,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,UAAU,GAAI,MAA+B,CAAC,OAAO,CAAC;QAC5D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PRI-443 Phase 4: io.ts deletion guard
3
+ *
4
+ * Verifies that:
5
+ * 1. `src/io.ts` no longer exists in principles-core
6
+ * 2. `atomicWriteFileSync` is NOT re-exported from the top-level barrel
7
+ * 3. `principle-tree-ledger.ts` still performs atomic write+read roundtrips
8
+ * (the inlined private atomicWriteFileSync preserves crash-safe semantics)
9
+ * 4. `package.json` no longer exposes `"./io"` subpath
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=io-deletion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io-deletion.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/io-deletion.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * PRI-443 Phase 4: io.ts deletion guard
3
+ *
4
+ * Verifies that:
5
+ * 1. `src/io.ts` no longer exists in principles-core
6
+ * 2. `atomicWriteFileSync` is NOT re-exported from the top-level barrel
7
+ * 3. `principle-tree-ledger.ts` still performs atomic write+read roundtrips
8
+ * (the inlined private atomicWriteFileSync preserves crash-safe semantics)
9
+ * 4. `package.json` no longer exposes `"./io"` subpath
10
+ */
11
+ import { describe, it, expect } from 'vitest';
12
+ import { existsSync, readFileSync, mkdtempSync, rmSync } from 'fs';
13
+ import { tmpdir } from 'os';
14
+ import { join } from 'path';
15
+ import { resolve } from 'path';
16
+ const CORE_SRC = resolve(__dirname, '..', '..');
17
+ describe('PRI-443 Phase 4: io.ts deletion', () => {
18
+ it('src/io.ts does NOT exist in principles-core', () => {
19
+ const ioPath = join(CORE_SRC, 'io.ts');
20
+ expect(existsSync(ioPath)).toBe(false);
21
+ });
22
+ it('index.ts barrel does NOT re-export atomicWriteFileSync', () => {
23
+ const barrelPath = join(CORE_SRC, 'index.ts');
24
+ const content = readFileSync(barrelPath, 'utf-8');
25
+ expect(content).not.toMatch(/export\s*\{[^}]*\batomicWriteFileSync\b[^}]*\}/);
26
+ expect(content).not.toMatch(/from\s+['"]\.\/io\.js['"]/);
27
+ });
28
+ it('package.json does NOT expose "./io" subpath', () => {
29
+ const pkgPath = resolve(CORE_SRC, '..', 'package.json');
30
+ const parsed = JSON.parse(readFileSync(pkgPath, 'utf-8'));
31
+ if (!parsed || typeof parsed !== 'object' || !Object.hasOwn(parsed, 'exports')) {
32
+ throw new Error('package.json 缺少 exports 字段');
33
+ }
34
+ const pkgExports = parsed.exports;
35
+ if (!pkgExports || typeof pkgExports !== 'object') {
36
+ throw new Error('package.json exports 字段格式非法');
37
+ }
38
+ expect(Object.hasOwn(pkgExports, './io')).toBe(false);
39
+ });
40
+ it('principle-tree-ledger.ts inlines atomicWriteFileSync as a private (non-exported) helper', () => {
41
+ const ledgerPath = join(CORE_SRC, 'principle-tree-ledger.ts');
42
+ const content = readFileSync(ledgerPath, 'utf-8');
43
+ // The function must be defined locally (not imported)
44
+ expect(content).not.toMatch(/from\s+['"]\.\/io\.js['"]/);
45
+ // The function must NOT be re-exported (private to the module)
46
+ expect(content).not.toMatch(/export\s*\{[^}]*\batomicWriteFileSync\b[^}]*\}/);
47
+ expect(content).not.toMatch(/export\s+function\s+atomicWriteFileSync/);
48
+ // The function body must be present locally
49
+ expect(content).toMatch(/function\s+atomicWriteFileSync/);
50
+ expect(content).toMatch(/fs\.renameSync/);
51
+ });
52
+ });
53
+ describe('PRI-443 Phase 4: principle-tree-ledger atomic roundtrip', () => {
54
+ it('saveLedger → loadLedger roundtrip preserves data atomically', async () => {
55
+ // Dynamic import to avoid importing io.ts (which should not exist)
56
+ const { loadLedger, addPrincipleToLedger } = await import('../../principle-tree-ledger.js');
57
+ const tmpDir = mkdtempSync(join(tmpdir(), 'pri443-phase4-'));
58
+ try {
59
+ const principle = {
60
+ id: 'pri-test-001',
61
+ version: 1,
62
+ text: 'Always validate user input before processing',
63
+ triggerPattern: 'user_input_received',
64
+ action: 'validate_input',
65
+ status: 'active',
66
+ priority: 'P1',
67
+ scope: 'domain',
68
+ evaluability: 'deterministic',
69
+ valueScore: 0.8,
70
+ adherenceRate: 0.95,
71
+ painPreventedCount: 3,
72
+ derivedFromPainIds: ['pain-1'],
73
+ ruleIds: ['rule-1'],
74
+ conflictsWithPrincipleIds: [],
75
+ createdAt: '2026-06-22T00:00:00.000Z',
76
+ updatedAt: '2026-06-22T00:00:00.000Z',
77
+ };
78
+ addPrincipleToLedger(tmpDir, principle);
79
+ const loaded = loadLedger(tmpDir);
80
+ expect(loaded.tree.principles['pri-test-001']).toBeDefined();
81
+ expect(loaded.tree.principles['pri-test-001']?.text).toBe('Always validate user input before processing');
82
+ expect(loaded.tree.principles['pri-test-001']?.status).toBe('active');
83
+ // Verify the .tmp file was cleaned up (atomic write completed)
84
+ const tmpFile = join(tmpDir, 'principle_training_state.json.tmp');
85
+ expect(existsSync(tmpFile)).toBe(false);
86
+ }
87
+ finally {
88
+ rmSync(tmpDir, { recursive: true, force: true });
89
+ }
90
+ });
91
+ });
92
+ //# sourceMappingURL=io-deletion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io-deletion.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/io-deletion.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-codec.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-codec.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/ledger-codec.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,429 @@
1
+ /**
2
+ * PRI-443: Ledger codec — pure parse/serialize functions, zero I/O.
3
+ *
4
+ * Tests verify:
5
+ * 1. parseHybridLedger correctly parses a valid ledger JSON
6
+ * 2. parseHybridLedger handles missing/malformed data gracefully
7
+ * 3. serializeLedger produces correct JSON output
8
+ * 4. createEmptyTree returns a valid empty tree
9
+ * 5. The module has zero fs/path imports
10
+ */
11
+ import { describe, it, expect } from 'vitest';
12
+ import { readFileSync } from 'node:fs';
13
+ import { resolve } from 'node:path';
14
+ import { parseHybridLedger, serializeLedger, createEmptyTree, isRecord, stringArray, clampFloat, clampInt, uniqueStrings, } from '../principle-tree/ledger-codec.js';
15
+ describe('PRI-443: ledger-codec.ts pure parse/serialize module', () => {
16
+ it('createEmptyTree returns valid empty tree', () => {
17
+ const tree = createEmptyTree();
18
+ expect(tree.principles).toEqual({});
19
+ expect(tree.rules).toEqual({});
20
+ expect(tree.implementations).toEqual({});
21
+ expect(tree.metrics).toEqual({});
22
+ expect(tree.lastUpdated).toBe(new Date(0).toISOString());
23
+ });
24
+ it('parseHybridLedger parses valid hybrid ledger', () => {
25
+ const raw = {
26
+ trainingStore: {
27
+ 'pri-001': {
28
+ principleId: 'pri-001',
29
+ evaluability: 'manual_only',
30
+ applicableOpportunityCount: 5,
31
+ observedViolationCount: 2,
32
+ complianceRate: 0.6,
33
+ violationTrend: 0.1,
34
+ generatedSampleCount: 3,
35
+ approvedSampleCount: 1,
36
+ includedTrainRunIds: ['run-1'],
37
+ deployedCheckpointIds: ['ckpt-1'],
38
+ internalizationStatus: 'prompt_only',
39
+ },
40
+ },
41
+ _tree: {
42
+ principles: {
43
+ 'pri-001': {
44
+ id: 'pri-001',
45
+ version: 1,
46
+ text: 'Test',
47
+ triggerPattern: 'test',
48
+ action: 'test',
49
+ status: 'active',
50
+ priority: 'P0',
51
+ scope: 'general',
52
+ evaluability: 'manual_only',
53
+ valueScore: 0.5,
54
+ adherenceRate: 0.8,
55
+ painPreventedCount: 0,
56
+ derivedFromPainIds: [],
57
+ ruleIds: [],
58
+ conflictsWithPrincipleIds: [],
59
+ createdAt: '2026-01-01T00:00:00Z',
60
+ updatedAt: '2026-01-01T00:00:00Z',
61
+ },
62
+ },
63
+ rules: {},
64
+ implementations: {},
65
+ metrics: {},
66
+ lastUpdated: '2026-01-01T00:00:00Z',
67
+ },
68
+ };
69
+ const result = parseHybridLedger(raw);
70
+ expect(result.trainingStore['pri-001']).toBeDefined();
71
+ expect(result.trainingStore['pri-001']?.evaluability).toBe('manual_only');
72
+ expect(result.tree.principles['pri-001']?.id).toBe('pri-001');
73
+ });
74
+ it('parseHybridLedger handles null input', () => {
75
+ const result = parseHybridLedger(null);
76
+ expect(result.trainingStore).toEqual({});
77
+ expect(result.tree.principles).toEqual({});
78
+ });
79
+ it('parseHybridLedger handles non-object input', () => {
80
+ const result = parseHybridLedger('not an object');
81
+ expect(result.trainingStore).toEqual({});
82
+ expect(result.tree.principles).toEqual({});
83
+ });
84
+ it('serializeLedger produces correct JSON with TREE_NAMESPACE', () => {
85
+ const store = {
86
+ trainingStore: {},
87
+ tree: {
88
+ principles: {},
89
+ rules: {},
90
+ implementations: {},
91
+ metrics: {},
92
+ lastUpdated: '2026-01-01T00:00:00Z',
93
+ },
94
+ };
95
+ const json = serializeLedger(store);
96
+ const parsed = JSON.parse(json);
97
+ expect(parsed._tree).toBeDefined();
98
+ expect(parsed._tree.lastUpdated).toBeDefined();
99
+ });
100
+ it('isRecord correctly identifies records', () => {
101
+ expect(isRecord({})).toBe(true);
102
+ expect(isRecord(null)).toBe(false);
103
+ expect(isRecord(undefined)).toBe(false);
104
+ expect(isRecord([])).toBe(false);
105
+ expect(isRecord('string')).toBe(false);
106
+ });
107
+ it('stringArray filters non-strings from array', () => {
108
+ expect(stringArray(['a', 1, 'b', null, 'c'])).toEqual(['a', 'b', 'c']);
109
+ expect(stringArray('not array')).toEqual([]);
110
+ });
111
+ it('clampFloat clamps to range with fallback', () => {
112
+ expect(clampFloat(0.5, { min: 0, max: 1, fallback: 0 })).toBe(0.5);
113
+ expect(clampFloat(1.5, { min: 0, max: 1, fallback: 0 })).toBe(1);
114
+ expect(clampFloat(-0.5, { min: 0, max: 1, fallback: 0 })).toBe(0);
115
+ expect(clampFloat(NaN, { min: 0, max: 1, fallback: 0.5 })).toBe(0.5);
116
+ });
117
+ it('clampInt clamps and rounds to range with fallback', () => {
118
+ expect(clampInt(5.7, { min: 0, max: 10, fallback: 0 })).toBe(6);
119
+ expect(clampInt(15, { min: 0, max: 10, fallback: 0 })).toBe(10);
120
+ expect(clampInt('x', { min: 0, max: 10, fallback: 3 })).toBe(3);
121
+ });
122
+ it('uniqueStrings deduplicates', () => {
123
+ expect(uniqueStrings(['a', 'b', 'a', 'c', 'b'])).toEqual(['a', 'b', 'c']);
124
+ });
125
+ it('ledger-codec.ts has zero fs/path imports (pure module)', () => {
126
+ const src = readFileSync(resolve(__dirname, '..', 'principle-tree', 'ledger-codec.ts'), 'utf-8');
127
+ expect(src).not.toMatch(/from\s+['"]fs['"]/);
128
+ expect(src).not.toMatch(/from\s+['"]path['"]/);
129
+ expect(src).not.toMatch(/from\s+['"]node:fs/);
130
+ expect(src).not.toMatch(/from\s+['"]node:path/);
131
+ });
132
+ // PRI-443 regression tests — ledger-codec edge cases
133
+ it('parseLegacyTrainingStore handles malformed evaluability', () => {
134
+ const raw = {
135
+ 'pri-001': {
136
+ principleId: 'pri-001',
137
+ evaluability: 'invalid_value',
138
+ applicableOpportunityCount: 5,
139
+ observedViolationCount: 2,
140
+ complianceRate: 0.6,
141
+ violationTrend: 0.1,
142
+ generatedSampleCount: 3,
143
+ approvedSampleCount: 1,
144
+ includedTrainRunIds: ['run-1'],
145
+ deployedCheckpointIds: ['ckpt-1'],
146
+ internalizationStatus: 'prompt_only',
147
+ },
148
+ };
149
+ const result = parseHybridLedger(raw);
150
+ expect(result.trainingStore['pri-001']).toBeDefined();
151
+ // Invalid evaluability should fallback to 'manual_only'
152
+ expect(result.trainingStore['pri-001']?.evaluability).toBe('manual_only');
153
+ });
154
+ it('parseLegacyTrainingStore handles malformed internalizationStatus', () => {
155
+ const raw = {
156
+ 'pri-002': {
157
+ principleId: 'pri-002',
158
+ evaluability: 'deterministic',
159
+ applicableOpportunityCount: 5,
160
+ observedViolationCount: 2,
161
+ complianceRate: 0.6,
162
+ violationTrend: 0.1,
163
+ generatedSampleCount: 3,
164
+ approvedSampleCount: 1,
165
+ includedTrainRunIds: ['run-1'],
166
+ deployedCheckpointIds: ['ckpt-1'],
167
+ internalizationStatus: 'invalid_status',
168
+ },
169
+ };
170
+ const result = parseHybridLedger(raw);
171
+ expect(result.trainingStore['pri-002']).toBeDefined();
172
+ // Invalid internalizationStatus should fallback to 'prompt_only'
173
+ expect(result.trainingStore['pri-002']?.internalizationStatus).toBe('prompt_only');
174
+ });
175
+ it('parseLegacyTrainingStore handles negative counts (clamped to 0)', () => {
176
+ const raw = {
177
+ 'pri-003': {
178
+ principleId: 'pri-003',
179
+ evaluability: 'deterministic',
180
+ applicableOpportunityCount: -5,
181
+ observedViolationCount: -2,
182
+ complianceRate: 0.6,
183
+ violationTrend: 0.1,
184
+ generatedSampleCount: -3,
185
+ approvedSampleCount: -1,
186
+ includedTrainRunIds: ['run-1'],
187
+ deployedCheckpointIds: ['ckpt-1'],
188
+ internalizationStatus: 'prompt_only',
189
+ },
190
+ };
191
+ const result = parseHybridLedger(raw);
192
+ expect(result.trainingStore['pri-003']).toBeDefined();
193
+ // Negative counts should be clamped to 0
194
+ expect(result.trainingStore['pri-003']?.applicableOpportunityCount).toBe(0);
195
+ expect(result.trainingStore['pri-003']?.observedViolationCount).toBe(0);
196
+ expect(result.trainingStore['pri-003']?.generatedSampleCount).toBe(0);
197
+ expect(result.trainingStore['pri-003']?.approvedSampleCount).toBe(0);
198
+ });
199
+ it('parseLegacyTrainingStore handles out-of-range complianceRate (clamped to [0, 1])', () => {
200
+ const raw = {
201
+ 'pri-004': {
202
+ principleId: 'pri-004',
203
+ evaluability: 'deterministic',
204
+ applicableOpportunityCount: 5,
205
+ observedViolationCount: 2,
206
+ complianceRate: 1.5, // Out of range (> 1)
207
+ violationTrend: -2.0, // Out of range (< -1)
208
+ generatedSampleCount: 3,
209
+ approvedSampleCount: 1,
210
+ includedTrainRunIds: ['run-1'],
211
+ deployedCheckpointIds: ['ckpt-1'],
212
+ internalizationStatus: 'prompt_only',
213
+ },
214
+ };
215
+ const result = parseHybridLedger(raw);
216
+ expect(result.trainingStore['pri-004']).toBeDefined();
217
+ // complianceRate should be clamped to [0, 1]
218
+ expect(result.trainingStore['pri-004']?.complianceRate).toBe(1);
219
+ // violationTrend should be clamped to [-1, 1]
220
+ expect(result.trainingStore['pri-004']?.violationTrend).toBe(-1);
221
+ });
222
+ it('parseLegacyTrainingStore handles non-array includedTrainRunIds', () => {
223
+ const raw = {
224
+ 'pri-005': {
225
+ principleId: 'pri-005',
226
+ evaluability: 'deterministic',
227
+ applicableOpportunityCount: 5,
228
+ observedViolationCount: 2,
229
+ complianceRate: 0.6,
230
+ violationTrend: 0.1,
231
+ generatedSampleCount: 3,
232
+ approvedSampleCount: 1,
233
+ includedTrainRunIds: 'not-an-array',
234
+ deployedCheckpointIds: null,
235
+ internalizationStatus: 'prompt_only',
236
+ },
237
+ };
238
+ const result = parseHybridLedger(raw);
239
+ expect(result.trainingStore['pri-005']).toBeDefined();
240
+ // Non-array should be converted to empty array
241
+ expect(result.trainingStore['pri-005']?.includedTrainRunIds).toEqual([]);
242
+ expect(result.trainingStore['pri-005']?.deployedCheckpointIds).toEqual([]);
243
+ });
244
+ it('parseLegacyTrainingStore skips entries with mismatched principleId', () => {
245
+ const raw = {
246
+ 'pri-006': {
247
+ principleId: 'different-id', // Mismatched!
248
+ evaluability: 'deterministic',
249
+ applicableOpportunityCount: 5,
250
+ observedViolationCount: 2,
251
+ complianceRate: 0.6,
252
+ violationTrend: 0.1,
253
+ generatedSampleCount: 3,
254
+ approvedSampleCount: 1,
255
+ includedTrainRunIds: ['run-1'],
256
+ deployedCheckpointIds: ['ckpt-1'],
257
+ internalizationStatus: 'prompt_only',
258
+ },
259
+ };
260
+ const result = parseHybridLedger(raw);
261
+ // Entry with mismatched principleId should be skipped
262
+ expect(result.trainingStore['pri-006']).toBeUndefined();
263
+ });
264
+ it('parseLegacyTrainingStore skips TREE_NAMESPACE entries', () => {
265
+ const raw = {
266
+ '_tree': {
267
+ principleId: '_tree',
268
+ evaluability: 'deterministic',
269
+ applicableOpportunityCount: 5,
270
+ observedViolationCount: 2,
271
+ complianceRate: 0.6,
272
+ violationTrend: 0.1,
273
+ generatedSampleCount: 3,
274
+ approvedSampleCount: 1,
275
+ includedTrainRunIds: ['run-1'],
276
+ deployedCheckpointIds: ['ckpt-1'],
277
+ internalizationStatus: 'prompt_only',
278
+ },
279
+ };
280
+ const result = parseHybridLedger(raw);
281
+ // TREE_NAMESPACE entries should be skipped in trainingStore
282
+ expect(result.trainingStore._tree).toBeUndefined();
283
+ });
284
+ it('parsePrinciples handles missing ruleIds', () => {
285
+ const raw = {
286
+ 'pri-007': {
287
+ id: 'pri-007',
288
+ version: 1,
289
+ text: 'Test',
290
+ triggerPattern: 'test',
291
+ action: 'test',
292
+ status: 'active',
293
+ priority: 'P0',
294
+ scope: 'general',
295
+ evaluability: 'manual_only',
296
+ valueScore: 0.5,
297
+ adherenceRate: 0.8,
298
+ painPreventedCount: 0,
299
+ derivedFromPainIds: [],
300
+ conflictsWithPrincipleIds: [],
301
+ createdAt: '2026-01-01T00:00:00Z',
302
+ updatedAt: '2026-01-01T00:00:00Z',
303
+ // ruleIds is missing
304
+ },
305
+ };
306
+ const result = parseHybridLedger({ _tree: { principles: raw } });
307
+ expect(result.tree.principles['pri-007']).toBeDefined();
308
+ // Missing ruleIds should be converted to empty array
309
+ expect(result.tree.principles['pri-007']?.ruleIds).toEqual([]);
310
+ });
311
+ it('parseRules handles missing implementationIds', () => {
312
+ const raw = {
313
+ 'rule-001': {
314
+ id: 'rule-001',
315
+ principleId: 'pri-001',
316
+ version: 1,
317
+ text: 'Test rule',
318
+ status: 'active',
319
+ createdAt: '2026-01-01T00:00:00Z',
320
+ updatedAt: '2026-01-01T00:00:00Z',
321
+ // implementationIds is missing
322
+ },
323
+ };
324
+ const result = parseHybridLedger({ _tree: { rules: raw } });
325
+ expect(result.tree.rules['rule-001']).toBeDefined();
326
+ // Missing implementationIds should be converted to empty array
327
+ expect(result.tree.rules['rule-001']?.implementationIds).toEqual([]);
328
+ });
329
+ it('parseRules handles missing principleId (defaults to empty string)', () => {
330
+ const raw = {
331
+ 'rule-002': {
332
+ id: 'rule-002',
333
+ // principleId is missing
334
+ version: 1,
335
+ text: 'Test rule',
336
+ status: 'active',
337
+ createdAt: '2026-01-01T00:00:00Z',
338
+ updatedAt: '2026-01-01T00:00:00Z',
339
+ implementationIds: [],
340
+ },
341
+ };
342
+ const result = parseHybridLedger({ _tree: { rules: raw } });
343
+ expect(result.tree.rules['rule-002']).toBeDefined();
344
+ // Missing principleId should default to empty string
345
+ expect(result.tree.rules['rule-002']?.principleId).toBe('');
346
+ });
347
+ it('parseImplementations skips entries without ruleId', () => {
348
+ const raw = {
349
+ 'impl-001': {
350
+ id: 'impl-001',
351
+ // ruleId is missing
352
+ code: 'function evaluate() { return { decision: "allow" }; }',
353
+ createdAt: '2026-01-01T00:00:00Z',
354
+ updatedAt: '2026-01-01T00:00:00Z',
355
+ },
356
+ };
357
+ const result = parseHybridLedger({ _tree: { implementations: raw } });
358
+ // Entry without ruleId should be skipped
359
+ expect(result.tree.implementations['impl-001']).toBeUndefined();
360
+ });
361
+ it('serializeLedger preserves TREE_NAMESPACE key', () => {
362
+ const store = {
363
+ trainingStore: {
364
+ 'pri-001': {
365
+ principleId: 'pri-001',
366
+ evaluability: 'manual_only',
367
+ applicableOpportunityCount: 5,
368
+ observedViolationCount: 2,
369
+ complianceRate: 0.6,
370
+ violationTrend: 0.1,
371
+ generatedSampleCount: 3,
372
+ approvedSampleCount: 1,
373
+ includedTrainRunIds: ['run-1'],
374
+ deployedCheckpointIds: ['ckpt-1'],
375
+ internalizationStatus: 'prompt_only',
376
+ },
377
+ },
378
+ tree: {
379
+ principles: {},
380
+ rules: {},
381
+ implementations: {},
382
+ metrics: {},
383
+ lastUpdated: '2026-01-01T00:00:00Z',
384
+ },
385
+ };
386
+ const json = serializeLedger(store);
387
+ const parsed = JSON.parse(json);
388
+ // TREE_NAMESPACE key should be present
389
+ expect(parsed._tree).toBeDefined();
390
+ // trainingStore entries should be at top level
391
+ expect(parsed['pri-001']).toBeDefined();
392
+ // TREE_NAMESPACE should NOT contain trainingStore entries
393
+ expect(parsed._tree['pri-001']).toBeUndefined();
394
+ });
395
+ it('parseHybridLedger handles deeply nested malformed data', () => {
396
+ const raw = {
397
+ trainingStore: {
398
+ 'pri-001': null, // Malformed entry
399
+ },
400
+ _tree: {
401
+ principles: {
402
+ 'pri-002': undefined, // Malformed entry
403
+ },
404
+ rules: {
405
+ 'rule-001': 'not-an-object', // Malformed entry
406
+ },
407
+ implementations: {
408
+ 'impl-001': [], // Malformed entry
409
+ },
410
+ metrics: {
411
+ 'metric-001': { principleId: 'pri-001' }, // Valid entry (Record)
412
+ },
413
+ lastUpdated: null, // Non-string value (triggers fallback)
414
+ },
415
+ };
416
+ const result = parseHybridLedger(raw);
417
+ // All malformed entries should be skipped/converted gracefully
418
+ expect(result.trainingStore['pri-001']).toBeUndefined();
419
+ expect(result.tree.principles['pri-002']).toBeUndefined();
420
+ expect(result.tree.rules['rule-001']).toBeUndefined();
421
+ expect(result.tree.implementations['impl-001']).toBeUndefined();
422
+ // Valid metric entry should be preserved
423
+ expect(result.tree.metrics['metric-001']).toBeDefined();
424
+ expect(result.tree.metrics['metric-001']?.principleId).toBe('pri-001');
425
+ // Non-string lastUpdated should fallback to epoch
426
+ expect(result.tree.lastUpdated).toBe(new Date(0).toISOString());
427
+ });
428
+ });
429
+ //# sourceMappingURL=ledger-codec.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-codec.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/ledger-codec.test.ts"],"names":[],"mappings":"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"}