create-principles-disciple 1.85.0 → 1.87.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 (1338) hide show
  1. package/console/dist/server/index.js +6 -50
  2. package/console/dist/server/models/ActivationsConsoleModel.d.ts +0 -4
  3. package/console/dist/server/models/ActivationsConsoleModel.js +64 -72
  4. package/console/dist/server/models/ApprovalsConsoleModel.d.ts +33 -7
  5. package/console/dist/server/models/ApprovalsConsoleModel.js +203 -57
  6. package/console/dist/server/models/ApprovalsGroupedConsoleModel.d.ts +4 -2
  7. package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +179 -91
  8. package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +4 -28
  9. package/console/dist/server/models/EvidenceChainConsoleModel.js +103 -298
  10. package/console/dist/server/models/GovernanceConsoleModel.d.ts +6 -4
  11. package/console/dist/server/models/GovernanceConsoleModel.js +269 -195
  12. package/console/dist/server/models/PrincipleClassifier.js +1 -1
  13. package/console/dist/server/models/PrincipleTrajectoryModel.d.ts +49 -0
  14. package/console/dist/server/models/PrincipleTrajectoryModel.js +485 -0
  15. package/console/dist/server/routes/approvals.js +65 -2
  16. package/console/dist/server/routes/principles.js +33 -0
  17. package/console/dist/server/routes/update.js +75 -26
  18. package/console/dist/ui/App.js +4 -2
  19. package/console/dist/ui/api.d.ts +6 -11
  20. package/console/dist/ui/api.js +19 -23
  21. package/console/dist/ui/components/focus/daily-thought-card.d.ts +1 -0
  22. package/console/dist/ui/components/focus/daily-thought-card.js +41 -0
  23. package/console/dist/ui/components/layout/app-sidebar.js +6 -4
  24. package/console/dist/ui/components/layout/page-loading.d.ts +13 -0
  25. package/console/dist/ui/components/layout/page-loading.js +14 -0
  26. package/console/dist/ui/components/layout/page-shell.d.ts +1 -0
  27. package/console/dist/ui/components/layout/page-shell.js +2 -1
  28. package/console/dist/ui/components/layout/section-title.js +1 -1
  29. package/console/dist/ui/components/notifications/NotificationProvider.d.ts +14 -0
  30. package/console/dist/ui/components/notifications/NotificationProvider.js +130 -0
  31. package/console/dist/ui/components/notifications/favicon-badge.d.ts +3 -0
  32. package/console/dist/ui/components/notifications/favicon-badge.js +68 -0
  33. package/console/dist/ui/components/notifications/notification-reducer.d.ts +9 -0
  34. package/console/dist/ui/components/notifications/notification-reducer.js +9 -0
  35. package/console/dist/ui/components/notifications/sound-storage.d.ts +3 -0
  36. package/console/dist/ui/components/notifications/sound-storage.js +37 -0
  37. package/console/dist/ui/components/notifications/useNotifications.d.ts +1 -0
  38. package/console/dist/ui/components/notifications/useNotifications.js +9 -0
  39. package/console/dist/ui/components/ui/badge.js +1 -1
  40. package/console/dist/ui/components/ui/button.d.ts +2 -2
  41. package/console/dist/ui/components/ui/button.js +1 -1
  42. package/console/dist/ui/components/ui/card.js +1 -1
  43. package/console/dist/ui/components/ui/input.js +1 -1
  44. package/console/dist/ui/components/ui/sheet.d.ts +1 -1
  45. package/console/dist/ui/data/daily-thoughts.d.ts +15 -0
  46. package/console/dist/ui/data/daily-thoughts.js +164 -0
  47. package/console/dist/ui/hooks/useNotificationSound.d.ts +12 -0
  48. package/console/dist/ui/hooks/useNotificationSound.js +74 -0
  49. package/console/dist/ui/i18n/en.json +94 -12
  50. package/console/dist/ui/i18n/zh-CN.json +94 -12
  51. package/console/dist/ui/pages/activation/ActivationPage.js +8 -15
  52. package/console/dist/ui/pages/control-center/ControlCenterPage.js +11 -9
  53. package/console/dist/ui/pages/focus/FocusPage.d.ts +13 -0
  54. package/console/dist/ui/pages/focus/FocusPage.js +140 -19
  55. package/console/dist/ui/pages/pain/PainPage.js +71 -32
  56. package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +100 -0
  57. package/console/dist/ui/pages/pain/pain-card-helpers.js +103 -0
  58. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +99 -20
  59. package/console/dist/ui/pages/principles/PrinciplesPage.js +8 -8
  60. package/console/dist/ui/pages/report-problem/ReportProblemPage.js +20 -18
  61. package/console/dist/ui/pages/settings/SettingsPage.js +9 -5
  62. package/console/dist/ui/pages/settings/UpdatePage.d.ts +0 -4
  63. package/console/dist/ui/pages/settings/UpdatePage.js +78 -75
  64. package/console/dist/ui/utils/control-center-helpers.d.ts +2 -0
  65. package/console/dist/ui/utils/enum-labels.d.ts +50 -0
  66. package/console/dist/ui/utils/enum-labels.js +164 -0
  67. package/console/dist/ui/utils/validators.d.ts +62 -6
  68. package/console/dist/ui/utils/validators.js +222 -22
  69. package/console/dist/web/assets/app.css +269 -122
  70. package/console/dist/web/assets/app.js +8134 -3177
  71. package/console/package.json +6 -3
  72. package/core/dist/evolution-store.js +0 -2
  73. package/core/dist/evolution-store.js.map +1 -1
  74. package/core/dist/index.d.ts +1 -10
  75. package/core/dist/index.d.ts.map +1 -1
  76. package/core/dist/index.js +1 -7
  77. package/core/dist/index.js.map +1 -1
  78. package/core/dist/io.d.ts +0 -1
  79. package/core/dist/io.d.ts.map +1 -1
  80. package/core/dist/io.js +0 -4
  81. package/core/dist/io.js.map +1 -1
  82. package/core/dist/principle-injector.d.ts +1 -1
  83. package/core/dist/principle-injector.d.ts.map +1 -1
  84. package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js.map +1 -1
  85. package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.d.ts +2 -0
  86. package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.d.ts.map +1 -0
  87. package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.js +531 -0
  88. package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.js.map +1 -0
  89. package/core/dist/quality-scorecard/index.d.ts +11 -0
  90. package/core/dist/quality-scorecard/index.d.ts.map +1 -0
  91. package/core/dist/quality-scorecard/index.js +4 -0
  92. package/core/dist/quality-scorecard/index.js.map +1 -0
  93. package/core/dist/quality-scorecard/report-generator.d.ts +11 -0
  94. package/core/dist/quality-scorecard/report-generator.d.ts.map +1 -0
  95. package/core/dist/quality-scorecard/report-generator.js +204 -0
  96. package/core/dist/quality-scorecard/report-generator.js.map +1 -0
  97. package/core/dist/quality-scorecard/types.d.ts +106 -0
  98. package/core/dist/quality-scorecard/types.d.ts.map +1 -0
  99. package/core/dist/quality-scorecard/types.js +51 -0
  100. package/core/dist/quality-scorecard/types.js.map +1 -0
  101. package/core/dist/quality-scorecard/validation.d.ts +73 -0
  102. package/core/dist/quality-scorecard/validation.d.ts.map +1 -0
  103. package/core/dist/quality-scorecard/validation.js +251 -0
  104. package/core/dist/quality-scorecard/validation.js.map +1 -0
  105. package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.d.ts +20 -0
  106. package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.d.ts.map +1 -0
  107. package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.js +223 -0
  108. package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.js.map +1 -0
  109. package/core/dist/runtime-v2/__tests__/admission-gate.test.js +56 -3
  110. package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
  111. package/core/dist/runtime-v2/__tests__/adversarial-loop.test.d.ts +2 -0
  112. package/core/dist/runtime-v2/__tests__/adversarial-loop.test.d.ts.map +1 -0
  113. package/core/dist/runtime-v2/__tests__/adversarial-loop.test.js +381 -0
  114. package/core/dist/runtime-v2/__tests__/adversarial-loop.test.js.map +1 -0
  115. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +175 -83
  116. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  117. package/core/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js +40 -80
  118. package/core/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js.map +1 -1
  119. package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +126 -21
  120. package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
  121. package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.d.ts +2 -0
  122. package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.d.ts.map +1 -0
  123. package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.js +169 -0
  124. package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.js.map +1 -0
  125. package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.d.ts +2 -0
  126. package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.d.ts.map +1 -0
  127. package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.js +200 -0
  128. package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.js.map +1 -0
  129. package/core/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js +20 -3
  130. package/core/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js.map +1 -1
  131. package/core/dist/runtime-v2/__tests__/dreamer-output-validator.test.js.map +1 -1
  132. package/core/dist/runtime-v2/__tests__/dreamer-runner-vslice.test.js +12 -0
  133. package/core/dist/runtime-v2/__tests__/dreamer-runner-vslice.test.js.map +1 -1
  134. package/core/dist/runtime-v2/__tests__/dreamer-runner.test.js +10 -5
  135. package/core/dist/runtime-v2/__tests__/dreamer-runner.test.js.map +1 -1
  136. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.d.ts +2 -0
  137. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.d.ts.map +1 -0
  138. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +831 -0
  139. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -0
  140. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js +22 -0
  141. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js.map +1 -1
  142. package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.d.ts +2 -0
  143. package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.d.ts.map +1 -0
  144. package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.js +344 -0
  145. package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.js.map +1 -0
  146. package/core/dist/runtime-v2/__tests__/evidence-guards.test.d.ts +18 -0
  147. package/core/dist/runtime-v2/__tests__/evidence-guards.test.d.ts.map +1 -0
  148. package/core/dist/runtime-v2/__tests__/evidence-guards.test.js +155 -0
  149. package/core/dist/runtime-v2/__tests__/evidence-guards.test.js.map +1 -0
  150. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +4 -3
  151. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -1
  152. package/core/dist/runtime-v2/__tests__/feedback/privacy-preview.test.js.map +1 -1
  153. package/core/dist/runtime-v2/__tests__/feedback/render-github-url.test.js.map +1 -1
  154. package/core/dist/runtime-v2/__tests__/feedback/render-markdown.test.js.map +1 -1
  155. package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.d.ts.map +1 -1
  156. package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.js +3 -2
  157. package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.js.map +1 -1
  158. package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.test.js +19 -29
  159. package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.test.js.map +1 -1
  160. package/core/dist/runtime-v2/__tests__/full-chain-real-llm.test.js +2 -2
  161. package/core/dist/runtime-v2/__tests__/full-chain-real-llm.test.js.map +1 -1
  162. package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.d.ts +2 -0
  163. package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.d.ts.map +1 -0
  164. package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js +372 -0
  165. package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js.map +1 -0
  166. package/core/dist/runtime-v2/__tests__/intake-to-internalization-bridge.test.js +219 -2
  167. package/core/dist/runtime-v2/__tests__/intake-to-internalization-bridge.test.js.map +1 -1
  168. package/core/dist/runtime-v2/__tests__/internalization-chain-integrity-read-model.test.js +96 -0
  169. package/core/dist/runtime-v2/__tests__/internalization-chain-integrity-read-model.test.js.map +1 -1
  170. package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.d.ts +2 -0
  171. package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.d.ts.map +1 -0
  172. package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.js +226 -0
  173. package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.js.map +1 -0
  174. package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.d.ts +2 -0
  175. package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.d.ts.map +1 -0
  176. package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.js +153 -0
  177. package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.js.map +1 -0
  178. package/core/dist/runtime-v2/__tests__/internalization-integrity-remediation.test.js +525 -5
  179. package/core/dist/runtime-v2/__tests__/internalization-integrity-remediation.test.js.map +1 -1
  180. package/core/dist/runtime-v2/__tests__/internalization-orchestrator.test.js +1 -3
  181. package/core/dist/runtime-v2/__tests__/internalization-orchestrator.test.js.map +1 -1
  182. package/core/dist/runtime-v2/__tests__/internalization-peer-runner-contracts.test.js +6 -0
  183. package/core/dist/runtime-v2/__tests__/internalization-peer-runner-contracts.test.js.map +1 -1
  184. package/core/dist/runtime-v2/__tests__/internalization-queue-read-model.test.js +0 -1
  185. package/core/dist/runtime-v2/__tests__/internalization-queue-read-model.test.js.map +1 -1
  186. package/core/dist/runtime-v2/__tests__/internalization-state-machine.test.js.map +1 -1
  187. package/core/dist/runtime-v2/__tests__/mainline-contract.test.d.ts +2 -0
  188. package/core/dist/runtime-v2/__tests__/mainline-contract.test.d.ts.map +1 -0
  189. package/core/dist/runtime-v2/__tests__/mainline-contract.test.js +194 -0
  190. package/core/dist/runtime-v2/__tests__/mainline-contract.test.js.map +1 -0
  191. package/core/dist/runtime-v2/__tests__/mainline-product-path.test.d.ts +2 -0
  192. package/core/dist/runtime-v2/__tests__/mainline-product-path.test.d.ts.map +1 -0
  193. package/core/dist/runtime-v2/__tests__/mainline-product-path.test.js +429 -0
  194. package/core/dist/runtime-v2/__tests__/mainline-product-path.test.js.map +1 -0
  195. package/core/dist/runtime-v2/__tests__/pain-chain-read-model.test.js +0 -1
  196. package/core/dist/runtime-v2/__tests__/pain-chain-read-model.test.js.map +1 -1
  197. package/core/dist/runtime-v2/__tests__/pain-evidence-contract.test.js +5 -2
  198. package/core/dist/runtime-v2/__tests__/pain-evidence-contract.test.js.map +1 -1
  199. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js +10 -6
  200. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js.map +1 -1
  201. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.d.ts +2 -0
  202. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.d.ts.map +1 -0
  203. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.js +211 -0
  204. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.js.map +1 -0
  205. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.d.ts +2 -0
  206. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.d.ts.map +1 -0
  207. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.js +182 -0
  208. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.js.map +1 -0
  209. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +53 -0
  210. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  211. package/core/dist/runtime-v2/__tests__/philosopher-runner-vslice.test.js +4 -0
  212. package/core/dist/runtime-v2/__tests__/philosopher-runner-vslice.test.js.map +1 -1
  213. package/core/dist/runtime-v2/__tests__/pitask-metadata.test.js +5 -1
  214. package/core/dist/runtime-v2/__tests__/pitask-metadata.test.js.map +1 -1
  215. package/core/dist/runtime-v2/__tests__/principle-compiler-core.test.js +85 -7
  216. package/core/dist/runtime-v2/__tests__/principle-compiler-core.test.js.map +1 -1
  217. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +14 -1
  218. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
  219. package/core/dist/runtime-v2/__tests__/pruning-read-model.test.js +11 -6
  220. package/core/dist/runtime-v2/__tests__/pruning-read-model.test.js.map +1 -1
  221. package/core/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js +8 -0
  222. package/core/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js.map +1 -1
  223. package/core/dist/runtime-v2/__tests__/rulehost-oob-defense-simulation.test.js.map +1 -1
  224. package/core/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js +4 -0
  225. package/core/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js.map +1 -1
  226. package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.d.ts +2 -0
  227. package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.d.ts.map +1 -0
  228. package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.js +168 -0
  229. package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.js.map +1 -0
  230. package/core/dist/runtime-v2/__tests__/task-three-strikes.test.js.map +1 -1
  231. package/core/dist/runtime-v2/__tests__/trace-refiner-agent.test.js.map +1 -1
  232. package/core/dist/runtime-v2/__tests__/trainer-output-validator.test.js.map +1 -1
  233. package/core/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js +8 -0
  234. package/core/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js.map +1 -1
  235. package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +7 -1
  236. package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
  237. package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.d.ts +21 -0
  238. package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.d.ts.map +1 -0
  239. package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.js +363 -0
  240. package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.js.map +1 -0
  241. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts +15 -0
  242. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts.map +1 -1
  243. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js +339 -164
  244. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
  245. package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +0 -1
  246. package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js.map +1 -1
  247. package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.d.ts +20 -0
  248. package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.d.ts.map +1 -0
  249. package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.js +145 -0
  250. package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.js.map +1 -0
  251. package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts +21 -0
  252. package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts.map +1 -0
  253. package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js +468 -0
  254. package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js.map +1 -0
  255. package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.d.ts +15 -0
  256. package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.d.ts.map +1 -0
  257. package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.js +272 -0
  258. package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.js.map +1 -0
  259. package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +11 -0
  260. package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
  261. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +54 -1
  262. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
  263. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.d.ts +35 -0
  264. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.d.ts.map +1 -0
  265. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +511 -0
  266. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -0
  267. package/core/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
  268. package/core/dist/runtime-v2/activation/activation-dispatcher.js +87 -1
  269. package/core/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
  270. package/core/dist/runtime-v2/activation/activation-types.d.ts +49 -2
  271. package/core/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
  272. package/core/dist/runtime-v2/activation/activation-types.js +6 -0
  273. package/core/dist/runtime-v2/activation/activation-types.js.map +1 -1
  274. package/core/dist/runtime-v2/activation/approval-completion-service.d.ts +50 -0
  275. package/core/dist/runtime-v2/activation/approval-completion-service.d.ts.map +1 -0
  276. package/core/dist/runtime-v2/activation/approval-completion-service.js +160 -0
  277. package/core/dist/runtime-v2/activation/approval-completion-service.js.map +1 -0
  278. package/core/dist/runtime-v2/activation/approval-queue.d.ts +7 -1
  279. package/core/dist/runtime-v2/activation/approval-queue.d.ts.map +1 -1
  280. package/core/dist/runtime-v2/activation/approval-queue.js +14 -0
  281. package/core/dist/runtime-v2/activation/approval-queue.js.map +1 -1
  282. package/core/dist/runtime-v2/activation/index.d.ts +5 -2
  283. package/core/dist/runtime-v2/activation/index.d.ts.map +1 -1
  284. package/core/dist/runtime-v2/activation/index.js +8 -1
  285. package/core/dist/runtime-v2/activation/index.js.map +1 -1
  286. package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts +2 -1
  287. package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts.map +1 -1
  288. package/core/dist/runtime-v2/activation/memory-activation-state-store.js +11 -2
  289. package/core/dist/runtime-v2/activation/memory-activation-state-store.js.map +1 -1
  290. package/core/dist/runtime-v2/activation/memory-approval-store.d.ts +2 -1
  291. package/core/dist/runtime-v2/activation/memory-approval-store.d.ts.map +1 -1
  292. package/core/dist/runtime-v2/activation/memory-approval-store.js +18 -0
  293. package/core/dist/runtime-v2/activation/memory-approval-store.js.map +1 -1
  294. package/core/dist/runtime-v2/activation/production-gate-deps.d.ts +32 -0
  295. package/core/dist/runtime-v2/activation/production-gate-deps.d.ts.map +1 -0
  296. package/core/dist/runtime-v2/activation/production-gate-deps.js +213 -0
  297. package/core/dist/runtime-v2/activation/production-gate-deps.js.map +1 -0
  298. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts +2 -1
  299. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
  300. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +21 -7
  301. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
  302. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts +2 -1
  303. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
  304. package/core/dist/runtime-v2/activation/sqlite-approval-store.js +24 -0
  305. package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
  306. package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.d.ts +2 -0
  307. package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.d.ts.map +1 -0
  308. package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.js +340 -0
  309. package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.js.map +1 -0
  310. package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.d.ts +2 -0
  311. package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.d.ts.map +1 -0
  312. package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.js +420 -0
  313. package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.js.map +1 -0
  314. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +283 -1
  315. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
  316. package/core/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.js +4 -4
  317. package/core/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.js.map +1 -1
  318. package/core/dist/runtime-v2/adapter/__tests__/structured-output-repair.test.js.map +1 -1
  319. package/core/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js +221 -0
  320. package/core/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js.map +1 -1
  321. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.d.ts +49 -0
  322. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.d.ts.map +1 -0
  323. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js +319 -0
  324. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js.map +1 -0
  325. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts +78 -0
  326. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts.map +1 -0
  327. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js +478 -0
  328. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js.map +1 -0
  329. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +6 -0
  330. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  331. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +33 -9
  332. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  333. package/core/dist/runtime-v2/adapter/structured-output-repair.js +0 -1
  334. package/core/dist/runtime-v2/adapter/structured-output-repair.js.map +1 -1
  335. package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.d.ts +7 -0
  336. package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.d.ts.map +1 -1
  337. package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.js +40 -1
  338. package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.js.map +1 -1
  339. package/core/dist/runtime-v2/admission-gate.d.ts +5 -1
  340. package/core/dist/runtime-v2/admission-gate.d.ts.map +1 -1
  341. package/core/dist/runtime-v2/admission-gate.js +12 -1
  342. package/core/dist/runtime-v2/admission-gate.js.map +1 -1
  343. package/core/dist/runtime-v2/adversarial-loop.d.ts +65 -0
  344. package/core/dist/runtime-v2/adversarial-loop.d.ts.map +1 -0
  345. package/core/dist/runtime-v2/adversarial-loop.js +181 -0
  346. package/core/dist/runtime-v2/adversarial-loop.js.map +1 -0
  347. package/core/dist/runtime-v2/agent-spec.d.ts +1 -1
  348. package/core/dist/runtime-v2/build-l2-principle-reader.d.ts +49 -0
  349. package/core/dist/runtime-v2/build-l2-principle-reader.d.ts.map +1 -0
  350. package/core/dist/runtime-v2/build-l2-principle-reader.js +70 -0
  351. package/core/dist/runtime-v2/build-l2-principle-reader.js.map +1 -0
  352. package/core/dist/runtime-v2/candidate-intake-service.js +0 -1
  353. package/core/dist/runtime-v2/candidate-intake-service.js.map +1 -1
  354. package/core/dist/runtime-v2/cli/diagnose.d.ts +8 -2
  355. package/core/dist/runtime-v2/cli/diagnose.d.ts.map +1 -1
  356. package/core/dist/runtime-v2/cli/diagnose.js +10 -0
  357. package/core/dist/runtime-v2/cli/diagnose.js.map +1 -1
  358. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +46 -4
  359. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  360. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +2 -2
  361. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
  362. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +1 -1
  363. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
  364. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.d.ts +2 -0
  365. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.d.ts.map +1 -0
  366. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.js +154 -0
  367. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.js.map +1 -0
  368. package/core/dist/runtime-v2/config/index.d.ts +1 -1
  369. package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
  370. package/core/dist/runtime-v2/config/index.js.map +1 -1
  371. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts +1 -0
  372. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -1
  373. package/core/dist/runtime-v2/config/pd-config-agent-binding.js +3 -0
  374. package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -1
  375. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  376. package/core/dist/runtime-v2/config/pd-config-defaults.js +8 -18
  377. package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  378. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  379. package/core/dist/runtime-v2/config/pd-config-effective.js +17 -3
  380. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  381. package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts.map +1 -1
  382. package/core/dist/runtime-v2/config/pd-config-feature-flags.js +11 -2
  383. package/core/dist/runtime-v2/config/pd-config-feature-flags.js.map +1 -1
  384. package/core/dist/runtime-v2/config/pd-config-redaction.d.ts.map +1 -1
  385. package/core/dist/runtime-v2/config/pd-config-redaction.js +10 -0
  386. package/core/dist/runtime-v2/config/pd-config-redaction.js.map +1 -1
  387. package/core/dist/runtime-v2/config/pd-config-types.d.ts +23 -1
  388. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  389. package/core/dist/runtime-v2/config/pd-config-types.js +5 -1
  390. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  391. package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  392. package/core/dist/runtime-v2/config/pd-config-validate.js +69 -0
  393. package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  394. package/core/dist/runtime-v2/context-payload.d.ts +4 -6
  395. package/core/dist/runtime-v2/context-payload.d.ts.map +1 -1
  396. package/core/dist/runtime-v2/context-payload.js +0 -2
  397. package/core/dist/runtime-v2/context-payload.js.map +1 -1
  398. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.d.ts +5 -0
  399. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.d.ts.map +1 -0
  400. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js +91 -0
  401. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js.map +1 -0
  402. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.d.ts +2 -0
  403. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.d.ts.map +1 -0
  404. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js +71 -0
  405. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js.map +1 -0
  406. package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.d.ts +2 -0
  407. package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.d.ts.map +1 -0
  408. package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.js +78 -0
  409. package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.js.map +1 -0
  410. package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts +67 -0
  411. package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts.map +1 -0
  412. package/core/dist/runtime-v2/core-principles/core-axiom-block.js +76 -0
  413. package/core/dist/runtime-v2/core-principles/core-axiom-block.js.map +1 -0
  414. package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts +41 -0
  415. package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts.map +1 -0
  416. package/core/dist/runtime-v2/core-principles/core-principle-registry.js +112 -0
  417. package/core/dist/runtime-v2/core-principles/core-principle-registry.js.map +1 -0
  418. package/core/dist/runtime-v2/core-principles/index.d.ts +6 -0
  419. package/core/dist/runtime-v2/core-principles/index.d.ts.map +1 -0
  420. package/core/dist/runtime-v2/core-principles/index.js +4 -0
  421. package/core/dist/runtime-v2/core-principles/index.js.map +1 -0
  422. package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.d.ts +15 -0
  423. package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.d.ts.map +1 -0
  424. package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.js +28 -0
  425. package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.js.map +1 -0
  426. package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.d.ts +2 -0
  427. package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.d.ts.map +1 -0
  428. package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.js +45 -0
  429. package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.js.map +1 -0
  430. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.d.ts +2 -0
  431. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.d.ts.map +1 -0
  432. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +91 -0
  433. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -0
  434. package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.d.ts +2 -0
  435. package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.d.ts.map +1 -0
  436. package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.js +39 -0
  437. package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.js.map +1 -0
  438. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.d.ts +2 -0
  439. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.d.ts.map +1 -0
  440. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +34 -0
  441. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -0
  442. package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.d.ts +2 -0
  443. package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.d.ts.map +1 -0
  444. package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.js +57 -0
  445. package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.js.map +1 -0
  446. package/core/dist/runtime-v2/diagnostician/diag-distiller-output.d.ts +80 -0
  447. package/core/dist/runtime-v2/diagnostician/diag-distiller-output.d.ts.map +1 -0
  448. package/core/dist/runtime-v2/diagnostician/diag-distiller-output.js +103 -0
  449. package/core/dist/runtime-v2/diagnostician/diag-distiller-output.js.map +1 -0
  450. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +117 -0
  451. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -0
  452. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js +182 -0
  453. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -0
  454. package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.d.ts +134 -0
  455. package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.d.ts.map +1 -0
  456. package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.js +149 -0
  457. package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.js.map +1 -0
  458. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +96 -0
  459. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -0
  460. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +212 -0
  461. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -0
  462. package/core/dist/runtime-v2/diagnostician/router-prompt-builder.d.ts +127 -0
  463. package/core/dist/runtime-v2/diagnostician/router-prompt-builder.d.ts.map +1 -0
  464. package/core/dist/runtime-v2/diagnostician/router-prompt-builder.js +131 -0
  465. package/core/dist/runtime-v2/diagnostician/router-prompt-builder.js.map +1 -0
  466. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +10 -50
  467. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  468. package/core/dist/runtime-v2/diagnostician-prompt-builder.js +0 -148
  469. package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  470. package/core/dist/runtime-v2/evidence-guards.d.ts +31 -0
  471. package/core/dist/runtime-v2/evidence-guards.d.ts.map +1 -0
  472. package/core/dist/runtime-v2/evidence-guards.js +29 -0
  473. package/core/dist/runtime-v2/evidence-guards.js.map +1 -0
  474. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +106 -7
  475. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  476. package/core/dist/runtime-v2/feature-flags/__tests__/plugin-surface-registry.test.js +3 -3
  477. package/core/dist/runtime-v2/feature-flags/__tests__/plugin-surface-registry.test.js.map +1 -1
  478. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  479. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +39 -4
  480. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  481. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.d.ts.map +1 -1
  482. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js +27 -22
  483. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
  484. package/core/dist/runtime-v2/feedback/redact-sensitive.js.map +1 -1
  485. package/core/dist/runtime-v2/feedback/safe-stringify.js.map +1 -1
  486. package/core/dist/runtime-v2/full-trace-contract.d.ts +3 -3
  487. package/core/dist/runtime-v2/golden-trace-replay-validator.d.ts +8 -0
  488. package/core/dist/runtime-v2/golden-trace-replay-validator.d.ts.map +1 -1
  489. package/core/dist/runtime-v2/golden-trace-replay-validator.js +3 -3
  490. package/core/dist/runtime-v2/golden-trace-replay-validator.js.map +1 -1
  491. package/core/dist/runtime-v2/golden-trace.d.ts +46 -1
  492. package/core/dist/runtime-v2/golden-trace.d.ts.map +1 -1
  493. package/core/dist/runtime-v2/golden-trace.js +70 -4
  494. package/core/dist/runtime-v2/golden-trace.js.map +1 -1
  495. package/core/dist/runtime-v2/index.d.ts +62 -31
  496. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  497. package/core/dist/runtime-v2/index.js +54 -18
  498. package/core/dist/runtime-v2/index.js.map +1 -1
  499. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.d.ts +25 -0
  500. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.d.ts.map +1 -0
  501. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.js +123 -0
  502. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.js.map +1 -0
  503. package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.d.ts +2 -0
  504. package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.d.ts.map +1 -0
  505. package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.js +139 -0
  506. package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.js.map +1 -0
  507. package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.d.ts +2 -0
  508. package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.d.ts.map +1 -0
  509. package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.js +62 -0
  510. package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.js.map +1 -0
  511. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.d.ts +2 -0
  512. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.d.ts.map +1 -0
  513. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js +24 -0
  514. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js.map +1 -0
  515. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +5 -4
  516. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
  517. package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.d.ts +2 -0
  518. package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.d.ts.map +1 -0
  519. package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +248 -0
  520. package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -0
  521. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.d.ts +2 -0
  522. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.d.ts.map +1 -0
  523. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +803 -0
  524. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -0
  525. package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.d.ts +2 -0
  526. package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.d.ts.map +1 -0
  527. package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js +441 -0
  528. package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js.map +1 -0
  529. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.d.ts +2 -0
  530. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.d.ts.map +1 -0
  531. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js +340 -0
  532. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -0
  533. package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.d.ts +2 -0
  534. package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.d.ts.map +1 -0
  535. package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +441 -0
  536. package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -0
  537. package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.d.ts +2 -0
  538. package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.d.ts.map +1 -0
  539. package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.js +209 -0
  540. package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.js.map +1 -0
  541. package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.d.ts +2 -0
  542. package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.d.ts.map +1 -0
  543. package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.js +125 -0
  544. package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.js.map +1 -0
  545. package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.d.ts +2 -0
  546. package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.d.ts.map +1 -0
  547. package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.js +223 -0
  548. package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.js.map +1 -0
  549. package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js +4 -0
  550. package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js.map +1 -1
  551. package/core/dist/runtime-v2/internalization/__tests__/refiner-sandbox-wrapper.test.js.map +1 -1
  552. package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.d.ts +2 -0
  553. package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.d.ts.map +1 -0
  554. package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.js +270 -0
  555. package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.js.map +1 -0
  556. package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.d.ts +2 -0
  557. package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.d.ts.map +1 -0
  558. package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.js +180 -0
  559. package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.js.map +1 -0
  560. package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.d.ts +2 -0
  561. package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.d.ts.map +1 -0
  562. package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js +224 -0
  563. package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js.map +1 -0
  564. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js +13 -8
  565. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js.map +1 -1
  566. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js +4 -3
  567. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js.map +1 -1
  568. package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.d.ts +2 -0
  569. package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.d.ts.map +1 -0
  570. package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js +227 -0
  571. package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js.map +1 -0
  572. package/core/dist/runtime-v2/internalization/adversarial-case.d.ts +32 -0
  573. package/core/dist/runtime-v2/internalization/adversarial-case.d.ts.map +1 -0
  574. package/core/dist/runtime-v2/internalization/adversarial-case.js +68 -0
  575. package/core/dist/runtime-v2/internalization/adversarial-case.js.map +1 -0
  576. package/core/dist/runtime-v2/internalization/adversarial-feedback.d.ts +23 -0
  577. package/core/dist/runtime-v2/internalization/adversarial-feedback.d.ts.map +1 -0
  578. package/core/dist/runtime-v2/internalization/adversarial-feedback.js +20 -0
  579. package/core/dist/runtime-v2/internalization/adversarial-feedback.js.map +1 -0
  580. package/core/dist/runtime-v2/internalization/artificer-output.d.ts +54 -30
  581. package/core/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
  582. package/core/dist/runtime-v2/internalization/artificer-output.js +144 -36
  583. package/core/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
  584. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +10 -2
  585. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
  586. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js +37 -20
  587. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
  588. package/core/dist/runtime-v2/internalization/artificer-runner.d.ts +19 -9
  589. package/core/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  590. package/core/dist/runtime-v2/internalization/artificer-runner.js +21 -9
  591. package/core/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  592. package/core/dist/runtime-v2/internalization/correction-proposal.d.ts.map +1 -1
  593. package/core/dist/runtime-v2/internalization/correction-proposal.js +27 -16
  594. package/core/dist/runtime-v2/internalization/correction-proposal.js.map +1 -1
  595. package/core/dist/runtime-v2/internalization/diag-distiller-runner.d.ts +83 -0
  596. package/core/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -0
  597. package/core/dist/runtime-v2/internalization/diag-distiller-runner.js +274 -0
  598. package/core/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -0
  599. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +73 -0
  600. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -0
  601. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +229 -0
  602. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -0
  603. package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts +85 -0
  604. package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -0
  605. package/core/dist/runtime-v2/internalization/diag-router-runner.js +353 -0
  606. package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -0
  607. package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.d.ts +19 -1
  608. package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.d.ts.map +1 -1
  609. package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.js +48 -8
  610. package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.js.map +1 -1
  611. package/core/dist/runtime-v2/internalization/dreamer-runner.d.ts +7 -1
  612. package/core/dist/runtime-v2/internalization/dreamer-runner.d.ts.map +1 -1
  613. package/core/dist/runtime-v2/internalization/dreamer-runner.js +13 -3
  614. package/core/dist/runtime-v2/internalization/dreamer-runner.js.map +1 -1
  615. package/core/dist/runtime-v2/internalization/evaluator-output.d.ts +63 -0
  616. package/core/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
  617. package/core/dist/runtime-v2/internalization/evaluator-output.js +158 -0
  618. package/core/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
  619. package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts +8 -1
  620. package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts.map +1 -1
  621. package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.js +17 -4
  622. package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.js.map +1 -1
  623. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts +114 -4
  624. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  625. package/core/dist/runtime-v2/internalization/evaluator-runner.js +629 -7
  626. package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  627. package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.d.ts +17 -0
  628. package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.d.ts.map +1 -0
  629. package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.js +451 -0
  630. package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.js.map +1 -0
  631. package/core/dist/runtime-v2/internalization/index.d.ts +21 -9
  632. package/core/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  633. package/core/dist/runtime-v2/internalization/index.js +16 -6
  634. package/core/dist/runtime-v2/internalization/index.js.map +1 -1
  635. package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.d.ts +25 -0
  636. package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.d.ts.map +1 -1
  637. package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.js +67 -12
  638. package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.js.map +1 -1
  639. package/core/dist/runtime-v2/internalization/internalization-consumer-decision.d.ts +17 -0
  640. package/core/dist/runtime-v2/internalization/internalization-consumer-decision.d.ts.map +1 -0
  641. package/core/dist/runtime-v2/internalization/internalization-consumer-decision.js +28 -0
  642. package/core/dist/runtime-v2/internalization/internalization-consumer-decision.js.map +1 -0
  643. package/core/dist/runtime-v2/internalization/internalization-job-graph.d.ts +14 -1
  644. package/core/dist/runtime-v2/internalization/internalization-job-graph.d.ts.map +1 -1
  645. package/core/dist/runtime-v2/internalization/internalization-job-graph.js +22 -0
  646. package/core/dist/runtime-v2/internalization/internalization-job-graph.js.map +1 -1
  647. package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts +9 -9
  648. package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
  649. package/core/dist/runtime-v2/internalization/internalization-orchestrator.js +32 -9
  650. package/core/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
  651. package/core/dist/runtime-v2/internalization/internalization-state-machine.d.ts +2 -2
  652. package/core/dist/runtime-v2/internalization/internalization-state-machine.d.ts.map +1 -1
  653. package/core/dist/runtime-v2/internalization/internalization-state-machine.js +35 -4
  654. package/core/dist/runtime-v2/internalization/internalization-state-machine.js.map +1 -1
  655. package/core/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +31 -4
  656. package/core/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
  657. package/core/dist/runtime-v2/internalization/peer-runner-contracts.js +42 -12
  658. package/core/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
  659. package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.d.ts +20 -1
  660. package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.d.ts.map +1 -1
  661. package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.js +47 -6
  662. package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.js.map +1 -1
  663. package/core/dist/runtime-v2/internalization/philosopher-runner.d.ts +6 -1
  664. package/core/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
  665. package/core/dist/runtime-v2/internalization/philosopher-runner.js +10 -3
  666. package/core/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
  667. package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts +9 -2
  668. package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
  669. package/core/dist/runtime-v2/internalization/pitask-metadata.js +22 -11
  670. package/core/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
  671. package/core/dist/runtime-v2/internalization/prompt-serializer.d.ts +3 -0
  672. package/core/dist/runtime-v2/internalization/prompt-serializer.d.ts.map +1 -0
  673. package/core/dist/runtime-v2/internalization/prompt-serializer.js +22 -0
  674. package/core/dist/runtime-v2/internalization/prompt-serializer.js.map +1 -0
  675. package/core/dist/runtime-v2/internalization/queue-actionability.d.ts +3 -3
  676. package/core/dist/runtime-v2/internalization/queue-actionability.d.ts.map +1 -1
  677. package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.d.ts.map +1 -1
  678. package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js +16 -1
  679. package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js.map +1 -1
  680. package/core/dist/runtime-v2/internalization/rollout-reviewer-prompt-builder.d.ts +1 -1
  681. package/core/dist/runtime-v2/internalization/rollout-reviewer-prompt-builder.d.ts.map +1 -1
  682. package/core/dist/runtime-v2/internalization/rollout-reviewer-prompt-builder.js +2 -2
  683. package/core/dist/runtime-v2/internalization/rule-code-validator.d.ts +29 -0
  684. package/core/dist/runtime-v2/internalization/rule-code-validator.d.ts.map +1 -1
  685. package/core/dist/runtime-v2/internalization/rule-code-validator.js +87 -1
  686. package/core/dist/runtime-v2/internalization/rule-code-validator.js.map +1 -1
  687. package/core/dist/runtime-v2/internalization/rule-host-evaluator.d.ts +1 -0
  688. package/core/dist/runtime-v2/internalization/rule-host-evaluator.d.ts.map +1 -1
  689. package/core/dist/runtime-v2/internalization/rule-host-evaluator.js +15 -1
  690. package/core/dist/runtime-v2/internalization/rule-host-evaluator.js.map +1 -1
  691. package/core/dist/runtime-v2/internalization/rule-host-input-builder.d.ts +62 -0
  692. package/core/dist/runtime-v2/internalization/rule-host-input-builder.d.ts.map +1 -0
  693. package/core/dist/runtime-v2/internalization/rule-host-input-builder.js +182 -0
  694. package/core/dist/runtime-v2/internalization/rule-host-input-builder.js.map +1 -0
  695. package/core/dist/runtime-v2/internalization/rule-host-validator.d.ts +37 -0
  696. package/core/dist/runtime-v2/internalization/rule-host-validator.d.ts.map +1 -0
  697. package/core/dist/runtime-v2/internalization/rule-host-validator.js +154 -0
  698. package/core/dist/runtime-v2/internalization/rule-host-validator.js.map +1 -0
  699. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +20 -6
  700. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
  701. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js +31 -15
  702. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
  703. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts +6 -1
  704. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  705. package/core/dist/runtime-v2/internalization/scribe-runner.js +10 -3
  706. package/core/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  707. package/core/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts +103 -0
  708. package/core/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -0
  709. package/core/dist/runtime-v2/internalization/split-diagnostician-runner.js +286 -0
  710. package/core/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -0
  711. package/core/dist/runtime-v2/internalization/template-generator.d.ts +7 -2
  712. package/core/dist/runtime-v2/internalization/template-generator.d.ts.map +1 -1
  713. package/core/dist/runtime-v2/internalization/template-generator.js +10 -5
  714. package/core/dist/runtime-v2/internalization/template-generator.js.map +1 -1
  715. package/core/dist/runtime-v2/internalization/trainer-prompt-builder.d.ts +1 -1
  716. package/core/dist/runtime-v2/internalization/trainer-prompt-builder.d.ts.map +1 -1
  717. package/core/dist/runtime-v2/internalization/trainer-prompt-builder.js +2 -2
  718. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.d.ts +5 -0
  719. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.d.ts.map +1 -1
  720. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js +48 -2
  721. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js.map +1 -1
  722. package/core/dist/runtime-v2/internalization-integrity-remediation.d.ts +67 -0
  723. package/core/dist/runtime-v2/internalization-integrity-remediation.d.ts.map +1 -1
  724. package/core/dist/runtime-v2/internalization-integrity-remediation.js +802 -0
  725. package/core/dist/runtime-v2/internalization-integrity-remediation.js.map +1 -1
  726. package/core/dist/runtime-v2/internalization-queue-read-model.d.ts +7 -7
  727. package/core/dist/runtime-v2/internalization-queue-read-model.d.ts.map +1 -1
  728. package/core/dist/runtime-v2/internalization-queue-read-model.js +4 -4
  729. package/core/dist/runtime-v2/internalization-queue-read-model.js.map +1 -1
  730. package/core/dist/runtime-v2/mainline-contract.d.ts +138 -0
  731. package/core/dist/runtime-v2/mainline-contract.d.ts.map +1 -0
  732. package/core/dist/runtime-v2/mainline-contract.js +224 -0
  733. package/core/dist/runtime-v2/mainline-contract.js.map +1 -0
  734. package/core/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +29 -22
  735. package/core/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
  736. package/core/dist/runtime-v2/observer/agent-scheduler.js.map +1 -1
  737. package/core/dist/runtime-v2/observer/empathy-observer.js +1 -1
  738. package/core/dist/runtime-v2/observer/empathy-observer.js.map +1 -1
  739. package/core/dist/runtime-v2/pain-signal-bridge.d.ts +36 -4
  740. package/core/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
  741. package/core/dist/runtime-v2/pain-signal-bridge.js +81 -37
  742. package/core/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
  743. package/core/dist/runtime-v2/pain-signal-observability.d.ts +4 -0
  744. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  745. package/core/dist/runtime-v2/pain-signal-observability.js +58 -8
  746. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  747. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +20 -1
  748. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  749. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +80 -23
  750. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  751. package/core/dist/runtime-v2/pain-to-principle-service.d.ts +5 -1
  752. package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  753. package/core/dist/runtime-v2/pain-to-principle-service.js +39 -0
  754. package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  755. package/core/dist/runtime-v2/proven-channel-baseline.d.ts.map +1 -1
  756. package/core/dist/runtime-v2/proven-channel-baseline.js +14 -0
  757. package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
  758. package/core/dist/runtime-v2/recovery-sweep-service.d.ts +18 -0
  759. package/core/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
  760. package/core/dist/runtime-v2/recovery-sweep-service.js +46 -0
  761. package/core/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
  762. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js +11 -2
  763. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js.map +1 -1
  764. package/core/dist/runtime-v2/runner/__tests__/diagnose.test.js.map +1 -1
  765. package/core/dist/runtime-v2/runner/__tests__/pain-signal-bridge-admission.test.js +6 -0
  766. package/core/dist/runtime-v2/runner/__tests__/pain-signal-bridge-admission.test.js.map +1 -1
  767. package/core/dist/runtime-v2/runner/__tests__/pain-signal-bridge.test.js.map +1 -1
  768. package/core/dist/runtime-v2/runner/base-peer-runner.d.ts +10 -3
  769. package/core/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  770. package/core/dist/runtime-v2/runner/base-peer-runner.js +58 -15
  771. package/core/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  772. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts +10 -3
  773. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
  774. package/core/dist/runtime-v2/runtime-protocol.d.ts +3 -3
  775. package/core/dist/runtime-v2/runtime-protocol.d.ts.map +1 -1
  776. package/core/dist/runtime-v2/runtime-protocol.js +1 -0
  777. package/core/dist/runtime-v2/runtime-protocol.js.map +1 -1
  778. package/core/dist/runtime-v2/runtime-selector.d.ts +3 -3
  779. package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.d.ts +26 -0
  780. package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.d.ts.map +1 -0
  781. package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.js +59 -0
  782. package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.js.map +1 -0
  783. package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js +2 -2
  784. package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js.map +1 -1
  785. package/core/dist/runtime-v2/store/concurrent-lease.test.js +13 -13
  786. package/core/dist/runtime-v2/store/concurrent-lease.test.js.map +1 -1
  787. package/core/dist/runtime-v2/store/context/index.d.ts +1 -0
  788. package/core/dist/runtime-v2/store/context/index.d.ts.map +1 -1
  789. package/core/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts +8 -0
  790. package/core/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts.map +1 -1
  791. package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js +54 -3
  792. package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js.map +1 -1
  793. package/core/dist/runtime-v2/store/context/sqlite-context-assembler.test.js +373 -2
  794. package/core/dist/runtime-v2/store/context/sqlite-context-assembler.test.js.map +1 -1
  795. package/core/dist/runtime-v2/store/context/trajectory-turn-reader.d.ts +32 -0
  796. package/core/dist/runtime-v2/store/context/trajectory-turn-reader.d.ts.map +1 -0
  797. package/core/dist/runtime-v2/store/context/trajectory-turn-reader.js +12 -0
  798. package/core/dist/runtime-v2/store/context/trajectory-turn-reader.js.map +1 -0
  799. package/core/dist/runtime-v2/store/event-emitter.js +0 -1
  800. package/core/dist/runtime-v2/store/event-emitter.js.map +1 -1
  801. package/core/dist/runtime-v2/store/history/sqlite-history-query.test.js +1 -1
  802. package/core/dist/runtime-v2/store/history/sqlite-history-query.test.js.map +1 -1
  803. package/core/dist/runtime-v2/store/idempotent-transitions.test.js +0 -5
  804. package/core/dist/runtime-v2/store/idempotent-transitions.test.js.map +1 -1
  805. package/core/dist/runtime-v2/store/lifecycle/lease-manager.d.ts.map +1 -1
  806. package/core/dist/runtime-v2/store/lifecycle/lease-manager.js +5 -0
  807. package/core/dist/runtime-v2/store/lifecycle/lease-manager.js.map +1 -1
  808. package/core/dist/runtime-v2/store/lifecycle/lease-manager.test.js +0 -2
  809. package/core/dist/runtime-v2/store/lifecycle/lease-manager.test.js.map +1 -1
  810. package/core/dist/runtime-v2/store/lifecycle/recovery-sweep.test.js +0 -2
  811. package/core/dist/runtime-v2/store/lifecycle/recovery-sweep.test.js.map +1 -1
  812. package/core/dist/runtime-v2/store/run/memory-run-store.d.ts +2 -1
  813. package/core/dist/runtime-v2/store/run/memory-run-store.d.ts.map +1 -1
  814. package/core/dist/runtime-v2/store/run/memory-run-store.js +5 -0
  815. package/core/dist/runtime-v2/store/run/memory-run-store.js.map +1 -1
  816. package/core/dist/runtime-v2/store/run/run-store.d.ts +27 -0
  817. package/core/dist/runtime-v2/store/run/run-store.d.ts.map +1 -1
  818. package/core/dist/runtime-v2/store/run/sqlite-run-store.d.ts +26 -2
  819. package/core/dist/runtime-v2/store/run/sqlite-run-store.d.ts.map +1 -1
  820. package/core/dist/runtime-v2/store/run/sqlite-run-store.js +134 -20
  821. package/core/dist/runtime-v2/store/run/sqlite-run-store.js.map +1 -1
  822. package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.d.ts +2 -0
  823. package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.d.ts.map +1 -0
  824. package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.js +160 -0
  825. package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.js.map +1 -0
  826. package/core/dist/runtime-v2/store/runtime-state-manager.d.ts +25 -3
  827. package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
  828. package/core/dist/runtime-v2/store/runtime-state-manager.js +55 -7
  829. package/core/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
  830. package/core/dist/runtime-v2/store/schema-conformance.test.js +0 -10
  831. package/core/dist/runtime-v2/store/schema-conformance.test.js.map +1 -1
  832. package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js +2 -2
  833. package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js.map +1 -1
  834. package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  835. package/core/dist/runtime-v2/store/sqlite-connection.js +12 -0
  836. package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  837. package/core/dist/runtime-v2/store/sqlite-run-store.test.js +172 -2
  838. package/core/dist/runtime-v2/store/sqlite-run-store.test.js.map +1 -1
  839. package/core/dist/runtime-v2/store/sqlite-task-store.test.js +0 -2
  840. package/core/dist/runtime-v2/store/sqlite-task-store.test.js.map +1 -1
  841. package/core/dist/runtime-v2/store/trajectory/source-trace-locator.test.js +0 -1
  842. package/core/dist/runtime-v2/store/trajectory/source-trace-locator.test.js.map +1 -1
  843. package/core/dist/runtime-v2/store/trajectory/sqlite-trajectory-locator.test.js +1 -1
  844. package/core/dist/runtime-v2/store/trajectory/sqlite-trajectory-locator.test.js.map +1 -1
  845. package/core/dist/runtime-v2/store/workspace-isolation.test.js +0 -2
  846. package/core/dist/runtime-v2/store/workspace-isolation.test.js.map +1 -1
  847. package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.d.ts +2 -0
  848. package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.d.ts.map +1 -0
  849. package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.js +171 -0
  850. package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.js.map +1 -0
  851. package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.d.ts +2 -0
  852. package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.d.ts.map +1 -0
  853. package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js +322 -0
  854. package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js.map +1 -0
  855. package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.d.ts +2 -0
  856. package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.d.ts.map +1 -0
  857. package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.js +149 -0
  858. package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.js.map +1 -0
  859. package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.d.ts +2 -0
  860. package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.d.ts.map +1 -0
  861. package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.js +109 -0
  862. package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.js.map +1 -0
  863. package/core/dist/runtime-v2/tools/agent-tool-contract.d.ts +76 -0
  864. package/core/dist/runtime-v2/tools/agent-tool-contract.d.ts.map +1 -0
  865. package/core/dist/runtime-v2/tools/agent-tool-contract.js +136 -0
  866. package/core/dist/runtime-v2/tools/agent-tool-contract.js.map +1 -0
  867. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts +72 -0
  868. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts.map +1 -0
  869. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js +275 -0
  870. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js.map +1 -0
  871. package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts +78 -0
  872. package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts.map +1 -0
  873. package/core/dist/runtime-v2/tools/artificer-output-typebox.js +70 -0
  874. package/core/dist/runtime-v2/tools/artificer-output-typebox.js.map +1 -0
  875. package/core/dist/runtime-v2/tools/dreamer-output-typebox.d.ts +63 -0
  876. package/core/dist/runtime-v2/tools/dreamer-output-typebox.d.ts.map +1 -0
  877. package/core/dist/runtime-v2/tools/dreamer-output-typebox.js +55 -0
  878. package/core/dist/runtime-v2/tools/dreamer-output-typebox.js.map +1 -0
  879. package/core/dist/runtime-v2/types/event-types.d.ts +32 -3
  880. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  881. package/core/dist/runtime-v2/types/event-types.js +8 -0
  882. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  883. package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +213 -0
  884. package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -0
  885. package/core/dist/runtime-v2/types/evidence-chain-contract.js +1064 -0
  886. package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -0
  887. package/core/dist/runtime-v2/types/index.d.ts +4 -2
  888. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  889. package/core/dist/runtime-v2/types/index.js +2 -1
  890. package/core/dist/runtime-v2/types/index.js.map +1 -1
  891. package/core/dist/runtime-v2/types/principle-enums.d.ts +2 -2
  892. package/core/dist/runtime-v2/types/principle-enums.d.ts.map +1 -1
  893. package/core/dist/runtime-v2/types/principle-enums.js +1 -0
  894. package/core/dist/runtime-v2/types/principle-enums.js.map +1 -1
  895. package/core/dist/runtime-v2/types/principle-schema.d.ts +1 -1
  896. package/core/dist/runtime-v2/types/principle-tree-store.d.ts +1 -1
  897. package/core/dist/runtime-v2/utils/cli-process-runner.d.ts.map +1 -1
  898. package/core/dist/runtime-v2/utils/cli-process-runner.js +5 -2
  899. package/core/dist/runtime-v2/utils/cli-process-runner.js.map +1 -1
  900. package/core/dist/runtime-v2/utils/cli-process-runner.test.js +7 -5
  901. package/core/dist/runtime-v2/utils/cli-process-runner.test.js.map +1 -1
  902. package/core/dist/telemetry-event.d.ts +3 -3
  903. package/core/dist/telemetry-event.d.ts.map +1 -1
  904. package/core/dist/telemetry-event.js +34 -1
  905. package/core/dist/telemetry-event.js.map +1 -1
  906. package/core/dist/trajectory-store.js +0 -2
  907. package/core/dist/trajectory-store.js.map +1 -1
  908. package/core/package.json +10 -1
  909. package/dist/installer.d.ts +11 -0
  910. package/dist/installer.d.ts.map +1 -1
  911. package/dist/installer.js +47 -2
  912. package/dist/installer.js.map +1 -1
  913. package/dist/mvp-config.d.ts.map +1 -1
  914. package/dist/mvp-config.js +2 -0
  915. package/dist/mvp-config.js.map +1 -1
  916. package/package.json +3 -2
  917. package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.d.ts +18 -0
  918. package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.d.ts.map +1 -0
  919. package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.js +459 -0
  920. package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.js.map +1 -0
  921. package/pd-cli/dist/commands/__tests__/mvp-smoke.test.d.ts +15 -0
  922. package/pd-cli/dist/commands/__tests__/mvp-smoke.test.d.ts.map +1 -0
  923. package/pd-cli/dist/commands/__tests__/mvp-smoke.test.js +262 -0
  924. package/pd-cli/dist/commands/__tests__/mvp-smoke.test.js.map +1 -0
  925. package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts +21 -0
  926. package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts.map +1 -0
  927. package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.js +179 -0
  928. package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.js.map +1 -0
  929. package/pd-cli/dist/commands/__tests__/rulecode-handler.test.d.ts +16 -0
  930. package/pd-cli/dist/commands/__tests__/rulecode-handler.test.d.ts.map +1 -0
  931. package/pd-cli/dist/commands/__tests__/rulecode-handler.test.js +285 -0
  932. package/pd-cli/dist/commands/__tests__/rulecode-handler.test.js.map +1 -0
  933. package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts +24 -0
  934. package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts.map +1 -0
  935. package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.js +223 -0
  936. package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.js.map +1 -0
  937. package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.d.ts +20 -0
  938. package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.d.ts.map +1 -0
  939. package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js +388 -0
  940. package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js.map +1 -0
  941. package/pd-cli/dist/commands/build-trajectory-evidence.d.ts +21 -0
  942. package/pd-cli/dist/commands/build-trajectory-evidence.d.ts.map +1 -0
  943. package/pd-cli/dist/commands/build-trajectory-evidence.js +161 -0
  944. package/pd-cli/dist/commands/build-trajectory-evidence.js.map +1 -0
  945. package/pd-cli/dist/commands/candidate.d.ts +24 -0
  946. package/pd-cli/dist/commands/candidate.d.ts.map +1 -1
  947. package/pd-cli/dist/commands/candidate.js +147 -75
  948. package/pd-cli/dist/commands/candidate.js.map +1 -1
  949. package/pd-cli/dist/commands/command-helpers.d.ts +19 -0
  950. package/pd-cli/dist/commands/command-helpers.d.ts.map +1 -0
  951. package/pd-cli/dist/commands/command-helpers.js +22 -0
  952. package/pd-cli/dist/commands/command-helpers.js.map +1 -0
  953. package/pd-cli/dist/commands/config-doctor.d.ts.map +1 -1
  954. package/pd-cli/dist/commands/config-doctor.js +21 -0
  955. package/pd-cli/dist/commands/config-doctor.js.map +1 -1
  956. package/pd-cli/dist/commands/diagnose.d.ts +1 -0
  957. package/pd-cli/dist/commands/diagnose.d.ts.map +1 -1
  958. package/pd-cli/dist/commands/diagnose.js +252 -149
  959. package/pd-cli/dist/commands/diagnose.js.map +1 -1
  960. package/pd-cli/dist/commands/evolution-tasks-show.js +0 -1
  961. package/pd-cli/dist/commands/evolution-tasks-show.js.map +1 -1
  962. package/pd-cli/dist/commands/legacy-cleanup.d.ts +72 -6
  963. package/pd-cli/dist/commands/legacy-cleanup.d.ts.map +1 -1
  964. package/pd-cli/dist/commands/legacy-cleanup.js +243 -23
  965. package/pd-cli/dist/commands/legacy-cleanup.js.map +1 -1
  966. package/pd-cli/dist/commands/mvp-smoke.d.ts +30 -0
  967. package/pd-cli/dist/commands/mvp-smoke.d.ts.map +1 -0
  968. package/pd-cli/dist/commands/mvp-smoke.js +139 -0
  969. package/pd-cli/dist/commands/mvp-smoke.js.map +1 -0
  970. package/pd-cli/dist/commands/pain-record.d.ts +2 -0
  971. package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
  972. package/pd-cli/dist/commands/pain-record.js +45 -7
  973. package/pd-cli/dist/commands/pain-record.js.map +1 -1
  974. package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -1
  975. package/pd-cli/dist/commands/pain-retry.js +46 -43
  976. package/pd-cli/dist/commands/pain-retry.js.map +1 -1
  977. package/pd-cli/dist/commands/quality-scorecard.d.ts +9 -0
  978. package/pd-cli/dist/commands/quality-scorecard.d.ts.map +1 -0
  979. package/pd-cli/dist/commands/quality-scorecard.js +241 -0
  980. package/pd-cli/dist/commands/quality-scorecard.js.map +1 -0
  981. package/pd-cli/dist/commands/rulecode.d.ts +85 -0
  982. package/pd-cli/dist/commands/rulecode.d.ts.map +1 -0
  983. package/pd-cli/dist/commands/rulecode.js +356 -0
  984. package/pd-cli/dist/commands/rulecode.js.map +1 -0
  985. package/pd-cli/dist/commands/runtime-activation.d.ts +37 -0
  986. package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
  987. package/pd-cli/dist/commands/runtime-activation.js +416 -2
  988. package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
  989. package/pd-cli/dist/commands/runtime-features.d.ts.map +1 -1
  990. package/pd-cli/dist/commands/runtime-features.js +2 -7
  991. package/pd-cli/dist/commands/runtime-features.js.map +1 -1
  992. package/pd-cli/dist/commands/runtime-internalization-integrity-repair.d.ts.map +1 -1
  993. package/pd-cli/dist/commands/runtime-internalization-integrity-repair.js +25 -15
  994. package/pd-cli/dist/commands/runtime-internalization-integrity-repair.js.map +1 -1
  995. package/pd-cli/dist/commands/runtime-internalization-integrity.d.ts.map +1 -1
  996. package/pd-cli/dist/commands/runtime-internalization-integrity.js +42 -1
  997. package/pd-cli/dist/commands/runtime-internalization-integrity.js.map +1 -1
  998. package/pd-cli/dist/commands/runtime-internalization-queue.d.ts.map +1 -1
  999. package/pd-cli/dist/commands/runtime-internalization-queue.js +35 -3
  1000. package/pd-cli/dist/commands/runtime-internalization-queue.js.map +1 -1
  1001. package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
  1002. package/pd-cli/dist/commands/runtime-internalization-run-once.js +316 -320
  1003. package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
  1004. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts +23 -0
  1005. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts.map +1 -0
  1006. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js +361 -0
  1007. package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js.map +1 -0
  1008. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts +10 -0
  1009. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts.map +1 -0
  1010. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js +164 -0
  1011. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js.map +1 -0
  1012. package/pd-cli/dist/commands/runtime-recovery.d.ts.map +1 -1
  1013. package/pd-cli/dist/commands/runtime-recovery.js +9 -8
  1014. package/pd-cli/dist/commands/runtime-recovery.js.map +1 -1
  1015. package/pd-cli/dist/commands/runtime.d.ts +7 -1
  1016. package/pd-cli/dist/commands/runtime.d.ts.map +1 -1
  1017. package/pd-cli/dist/commands/runtime.js +223 -30
  1018. package/pd-cli/dist/commands/runtime.js.map +1 -1
  1019. package/pd-cli/dist/commands/samples-list.js +0 -1
  1020. package/pd-cli/dist/commands/samples-list.js.map +1 -1
  1021. package/pd-cli/dist/commands/task.d.ts +11 -0
  1022. package/pd-cli/dist/commands/task.d.ts.map +1 -1
  1023. package/pd-cli/dist/commands/task.js +148 -6
  1024. package/pd-cli/dist/commands/task.js.map +1 -1
  1025. package/pd-cli/dist/index.d.ts +1 -1
  1026. package/pd-cli/dist/index.js +155 -70
  1027. package/pd-cli/dist/index.js.map +1 -1
  1028. package/pd-cli/dist/legacy/session-history-import.js +0 -19
  1029. package/pd-cli/dist/legacy/session-history-import.js.map +1 -1
  1030. package/pd-cli/dist/resolve-workspace.d.ts +15 -3
  1031. package/pd-cli/dist/resolve-workspace.d.ts.map +1 -1
  1032. package/pd-cli/dist/resolve-workspace.js +54 -8
  1033. package/pd-cli/dist/resolve-workspace.js.map +1 -1
  1034. package/pd-cli/dist/services/__tests__/cli-output.test.d.ts +18 -0
  1035. package/pd-cli/dist/services/__tests__/cli-output.test.d.ts.map +1 -0
  1036. package/pd-cli/dist/services/__tests__/cli-output.test.js +103 -0
  1037. package/pd-cli/dist/services/__tests__/cli-output.test.js.map +1 -0
  1038. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.d.ts +18 -0
  1039. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.d.ts.map +1 -0
  1040. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js +651 -0
  1041. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js.map +1 -0
  1042. package/pd-cli/dist/services/cli-output.d.ts +61 -0
  1043. package/pd-cli/dist/services/cli-output.d.ts.map +1 -0
  1044. package/pd-cli/dist/services/cli-output.js +72 -0
  1045. package/pd-cli/dist/services/cli-output.js.map +1 -0
  1046. package/pd-cli/dist/services/config-doctor.d.ts +2 -0
  1047. package/pd-cli/dist/services/config-doctor.d.ts.map +1 -1
  1048. package/pd-cli/dist/services/config-doctor.js +11 -8
  1049. package/pd-cli/dist/services/config-doctor.js.map +1 -1
  1050. package/pd-cli/dist/services/console-launcher.js +1 -1
  1051. package/pd-cli/dist/services/console-launcher.js.map +1 -1
  1052. package/pd-cli/dist/services/demo-rule-compiler.d.ts +24 -0
  1053. package/pd-cli/dist/services/demo-rule-compiler.d.ts.map +1 -0
  1054. package/pd-cli/dist/services/demo-rule-compiler.js +58 -0
  1055. package/pd-cli/dist/services/demo-rule-compiler.js.map +1 -0
  1056. package/pd-cli/dist/services/feature-flag-loader.js +0 -1
  1057. package/pd-cli/dist/services/feature-flag-loader.js.map +1 -1
  1058. package/pd-cli/dist/services/mainline-snapshot-assembler.d.ts +35 -0
  1059. package/pd-cli/dist/services/mainline-snapshot-assembler.d.ts.map +1 -0
  1060. package/pd-cli/dist/services/mainline-snapshot-assembler.js +428 -0
  1061. package/pd-cli/dist/services/mainline-snapshot-assembler.js.map +1 -0
  1062. package/pd-cli/dist/services/pain-flood-simulation-runner.d.ts.map +1 -1
  1063. package/pd-cli/dist/services/pain-flood-simulation-runner.js +95 -10
  1064. package/pd-cli/dist/services/pain-flood-simulation-runner.js.map +1 -1
  1065. package/pd-cli/dist/services/pd-config-loader.d.ts +20 -0
  1066. package/pd-cli/dist/services/pd-config-loader.d.ts.map +1 -1
  1067. package/pd-cli/dist/services/pd-config-loader.js +113 -0
  1068. package/pd-cli/dist/services/pd-config-loader.js.map +1 -1
  1069. package/pd-cli/dist/services/quality-scorecard/data-extractor.d.ts +28 -0
  1070. package/pd-cli/dist/services/quality-scorecard/data-extractor.d.ts.map +1 -0
  1071. package/pd-cli/dist/services/quality-scorecard/data-extractor.js +118 -0
  1072. package/pd-cli/dist/services/quality-scorecard/data-extractor.js.map +1 -0
  1073. package/pd-cli/dist/services/quality-scorecard/local-evaluator.d.ts +18 -0
  1074. package/pd-cli/dist/services/quality-scorecard/local-evaluator.d.ts.map +1 -0
  1075. package/pd-cli/dist/services/quality-scorecard/local-evaluator.js +112 -0
  1076. package/pd-cli/dist/services/quality-scorecard/local-evaluator.js.map +1 -0
  1077. package/pd-cli/dist/services/quality-scorecard/strong-model-gate.d.ts +14 -0
  1078. package/pd-cli/dist/services/quality-scorecard/strong-model-gate.d.ts.map +1 -0
  1079. package/pd-cli/dist/services/quality-scorecard/strong-model-gate.js +128 -0
  1080. package/pd-cli/dist/services/quality-scorecard/strong-model-gate.js.map +1 -0
  1081. package/pd-cli/dist/services/resolve-runtime-from-pd-config.d.ts +70 -0
  1082. package/pd-cli/dist/services/resolve-runtime-from-pd-config.d.ts.map +1 -0
  1083. package/pd-cli/dist/services/resolve-runtime-from-pd-config.js +138 -0
  1084. package/pd-cli/dist/services/resolve-runtime-from-pd-config.js.map +1 -0
  1085. package/pd-cli/dist/services/rulehost-pipeline-runner.d.ts +132 -0
  1086. package/pd-cli/dist/services/rulehost-pipeline-runner.d.ts.map +1 -0
  1087. package/pd-cli/dist/services/rulehost-pipeline-runner.js +392 -0
  1088. package/pd-cli/dist/services/rulehost-pipeline-runner.js.map +1 -0
  1089. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts +105 -0
  1090. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts.map +1 -0
  1091. package/pd-cli/dist/services/runtime-adapter-resolver.js +188 -0
  1092. package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -0
  1093. package/pd-cli/dist/services/synthetic-baseline-runner.d.ts.map +1 -1
  1094. package/pd-cli/dist/services/synthetic-baseline-runner.js +97 -6
  1095. package/pd-cli/dist/services/synthetic-baseline-runner.js.map +1 -1
  1096. package/pd-cli/dist/utils/production-workspace-guard.d.ts +0 -7
  1097. package/pd-cli/dist/utils/production-workspace-guard.d.ts.map +1 -1
  1098. package/pd-cli/dist/utils/production-workspace-guard.js +0 -11
  1099. package/pd-cli/dist/utils/production-workspace-guard.js.map +1 -1
  1100. package/pd-cli/dist/utils/production-workspace-guard.test.js +9 -2
  1101. package/pd-cli/dist/utils/production-workspace-guard.test.js.map +1 -1
  1102. package/pd-cli/package.json +3 -2
  1103. package/plugin/dist/config/defaults/runtime.d.ts +0 -6
  1104. package/plugin/dist/config/defaults/runtime.js +0 -7
  1105. package/plugin/dist/core/code-implementation-storage.d.ts +0 -9
  1106. package/plugin/dist/core/code-implementation-storage.js +0 -34
  1107. package/plugin/dist/core/config-health.d.ts +27 -0
  1108. package/plugin/dist/core/config-health.js +60 -0
  1109. package/plugin/dist/core/event-log.d.ts +10 -1
  1110. package/plugin/dist/core/event-log.js +11 -0
  1111. package/plugin/dist/core/init.d.ts +1 -1
  1112. package/plugin/dist/core/init.js +10 -14
  1113. package/plugin/dist/core/paths.d.ts +0 -6
  1114. package/plugin/dist/core/paths.js +0 -6
  1115. package/plugin/dist/core/principle-compiler/code-validator.js +4 -1
  1116. package/plugin/dist/core/principle-tree-ledger.d.ts +0 -4
  1117. package/plugin/dist/core/principle-tree-ledger.js +0 -7
  1118. package/plugin/dist/core/rule-host.d.ts +45 -15
  1119. package/plugin/dist/core/rule-host.js +240 -81
  1120. package/plugin/dist/core/rule-implementation-runtime.d.ts +13 -0
  1121. package/plugin/dist/core/rule-implementation-runtime.js +91 -3
  1122. package/plugin/dist/core/runtime-v2-prompt-activation-reader.js +2 -2
  1123. package/plugin/dist/core/thinking-models.d.ts +3 -2
  1124. package/plugin/dist/core/thinking-models.js +9 -29
  1125. package/plugin/dist/core/trajectory-types.d.ts +4 -0
  1126. package/plugin/dist/core/trajectory.js +55 -5
  1127. package/plugin/dist/core/workspace-dir-validation.d.ts +2 -2
  1128. package/plugin/dist/core/workspace-dir-validation.js +2 -2
  1129. package/plugin/dist/hooks/after-tool-call-helpers.d.ts +8 -9
  1130. package/plugin/dist/hooks/after-tool-call-helpers.js +89 -100
  1131. package/plugin/dist/hooks/after-tool-call-types.d.ts +2 -8
  1132. package/plugin/dist/hooks/gate.js +1 -1
  1133. package/plugin/dist/hooks/llm.js +11 -2
  1134. package/plugin/dist/hooks/pain.d.ts +0 -1
  1135. package/plugin/dist/hooks/pain.js +3 -2
  1136. package/plugin/dist/hooks/raw-observation-adapter.d.ts +57 -0
  1137. package/plugin/dist/hooks/raw-observation-adapter.js +170 -0
  1138. package/plugin/dist/hooks/raw-observation-types.d.ts +62 -0
  1139. package/plugin/dist/hooks/raw-observation-types.js +15 -0
  1140. package/plugin/dist/hooks/trajectory-collector.d.ts +17 -28
  1141. package/plugin/dist/hooks/trajectory-collector.js +71 -104
  1142. package/plugin/dist/hooks/trajectory-evidence.js +23 -0
  1143. package/plugin/dist/hooks/triage-adapter.d.ts +7 -31
  1144. package/plugin/dist/hooks/triage-adapter.js +32 -61
  1145. package/plugin/dist/hooks/trigger-cooldown-tracker.d.ts +30 -0
  1146. package/plugin/dist/hooks/trigger-cooldown-tracker.js +55 -0
  1147. package/plugin/dist/index.d.ts +11 -0
  1148. package/plugin/dist/index.js +73 -27
  1149. package/plugin/dist/openclaw-sdk.d.ts +1 -0
  1150. package/plugin/dist/service/evolution-worker.d.ts +1 -1
  1151. package/plugin/dist/service/internalization-auto-consumer-service.d.ts +8 -0
  1152. package/plugin/dist/service/internalization-auto-consumer-service.js +322 -0
  1153. package/plugin/dist/types/event-types.d.ts +1 -1
  1154. package/plugin/dist/utils/io.js +24 -3
  1155. package/plugin/package.json +4 -3
  1156. package/plugin/scripts/sync-plugin.mjs +43 -0
  1157. package/plugin/templates/langs/en/principles/THINKING_OS.md +12 -0
  1158. package/plugin/templates/langs/en/skills/pd-runtime-v2/SKILL.md +1 -1
  1159. package/plugin/templates/langs/zh/principles/THINKING_OS.md +12 -0
  1160. package/plugin/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +1 -1
  1161. package/templates/langs/en/principles/THINKING_OS.md +12 -0
  1162. package/templates/langs/zh/principles/THINKING_OS.md +12 -0
  1163. package/console/dist/server/routes/state.d.ts +0 -11
  1164. package/console/dist/server/routes/state.js +0 -97
  1165. package/console/dist/ui/components/UpdateBanner.d.ts +0 -1
  1166. package/console/dist/ui/components/UpdateBanner.js +0 -41
  1167. package/console/dist/ui/components/UpdateProgressDialog.d.ts +0 -12
  1168. package/console/dist/ui/components/UpdateProgressDialog.js +0 -28
  1169. package/console/dist/ui/components/approval-card.d.ts +0 -8
  1170. package/console/dist/ui/components/approval-card.js +0 -39
  1171. package/console/dist/ui/components/approval-detail-dialog.d.ts +0 -9
  1172. package/console/dist/ui/components/approval-detail-dialog.js +0 -20
  1173. package/console/dist/ui/components/rejection-reason-dialog.d.ts +0 -6
  1174. package/console/dist/ui/components/rejection-reason-dialog.js +0 -23
  1175. package/core/dist/evolution-hook.d.ts +0 -70
  1176. package/core/dist/evolution-hook.d.ts.map +0 -1
  1177. package/core/dist/evolution-hook.js +0 -10
  1178. package/core/dist/evolution-hook.js.map +0 -1
  1179. package/core/dist/pain-flag-resolver.d.ts +0 -18
  1180. package/core/dist/pain-flag-resolver.d.ts.map +0 -1
  1181. package/core/dist/pain-flag-resolver.js +0 -21
  1182. package/core/dist/pain-flag-resolver.js.map +0 -1
  1183. package/core/dist/pain-recorder.d.ts +0 -38
  1184. package/core/dist/pain-recorder.d.ts.map +0 -1
  1185. package/core/dist/pain-recorder.js +0 -62
  1186. package/core/dist/pain-recorder.js.map +0 -1
  1187. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts +0 -2
  1188. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts.map +0 -1
  1189. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js +0 -170
  1190. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js.map +0 -1
  1191. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts +0 -2
  1192. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts.map +0 -1
  1193. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js +0 -396
  1194. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js.map +0 -1
  1195. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +0 -13
  1196. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +0 -1
  1197. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +0 -97
  1198. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +0 -1
  1199. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts +0 -2
  1200. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts.map +0 -1
  1201. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js +0 -378
  1202. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js.map +0 -1
  1203. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts +0 -2
  1204. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts.map +0 -1
  1205. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +0 -682
  1206. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +0 -1
  1207. package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts +0 -2
  1208. package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts.map +0 -1
  1209. package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js +0 -286
  1210. package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js.map +0 -1
  1211. package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts +0 -2
  1212. package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts.map +0 -1
  1213. package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js +0 -320
  1214. package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js.map +0 -1
  1215. package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts +0 -2
  1216. package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts.map +0 -1
  1217. package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js +0 -261
  1218. package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js.map +0 -1
  1219. package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts +0 -2
  1220. package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts.map +0 -1
  1221. package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js +0 -405
  1222. package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js.map +0 -1
  1223. package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts +0 -2
  1224. package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts.map +0 -1
  1225. package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js +0 -347
  1226. package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js.map +0 -1
  1227. package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts +0 -2
  1228. package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts.map +0 -1
  1229. package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js +0 -186
  1230. package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js.map +0 -1
  1231. package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts +0 -2
  1232. package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts.map +0 -1
  1233. package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js +0 -355
  1234. package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js.map +0 -1
  1235. package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts +0 -2
  1236. package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts.map +0 -1
  1237. package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +0 -488
  1238. package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +0 -1
  1239. package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts +0 -2
  1240. package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts.map +0 -1
  1241. package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js +0 -171
  1242. package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js.map +0 -1
  1243. package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts +0 -2
  1244. package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts.map +0 -1
  1245. package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +0 -182
  1246. package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +0 -1
  1247. package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts +0 -2
  1248. package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts.map +0 -1
  1249. package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js +0 -276
  1250. package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js.map +0 -1
  1251. package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts +0 -2
  1252. package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts.map +0 -1
  1253. package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js +0 -272
  1254. package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js.map +0 -1
  1255. package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts +0 -2
  1256. package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts.map +0 -1
  1257. package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.js +0 -67
  1258. package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.js.map +0 -1
  1259. package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +0 -47
  1260. package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +0 -1
  1261. package/core/dist/runtime-v2/runner/diagnostician-runner-options.js +0 -20
  1262. package/core/dist/runtime-v2/runner/diagnostician-runner-options.js.map +0 -1
  1263. package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts +0 -87
  1264. package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +0 -1
  1265. package/core/dist/runtime-v2/runner/diagnostician-runner.js +0 -441
  1266. package/core/dist/runtime-v2/runner/diagnostician-runner.js.map +0 -1
  1267. package/core/dist/storage-adapter.d.ts +0 -59
  1268. package/core/dist/storage-adapter.d.ts.map +0 -1
  1269. package/core/dist/storage-adapter.js +0 -2
  1270. package/core/dist/storage-adapter.js.map +0 -1
  1271. package/core/dist/types/workspace-resolver.d.ts +0 -25
  1272. package/core/dist/types/workspace-resolver.d.ts.map +0 -1
  1273. package/core/dist/types/workspace-resolver.js +0 -10
  1274. package/core/dist/types/workspace-resolver.js.map +0 -1
  1275. package/core/dist/types.d.ts +0 -56
  1276. package/core/dist/types.d.ts.map +0 -1
  1277. package/core/dist/types.js +0 -16
  1278. package/core/dist/types.js.map +0 -1
  1279. package/pd-cli/dist/principle-tree-ledger-adapter.d.ts +0 -12
  1280. package/pd-cli/dist/principle-tree-ledger-adapter.d.ts.map +0 -1
  1281. package/pd-cli/dist/principle-tree-ledger-adapter.js +0 -12
  1282. package/pd-cli/dist/principle-tree-ledger-adapter.js.map +0 -1
  1283. package/plugin/dist/core/evolution-hook.d.ts +0 -54
  1284. package/plugin/dist/core/evolution-hook.js +0 -9
  1285. package/plugin/dist/core/file-storage-adapter.d.ts +0 -43
  1286. package/plugin/dist/core/file-storage-adapter.js +0 -158
  1287. package/plugin/dist/core/merge-gate-audit.d.ts +0 -21
  1288. package/plugin/dist/core/merge-gate-audit.js +0 -241
  1289. package/plugin/dist/core/pain-context-extractor.d.ts +0 -31
  1290. package/plugin/dist/core/pain-context-extractor.js +0 -278
  1291. package/plugin/dist/core/pain-lifecycle.d.ts +0 -15
  1292. package/plugin/dist/core/pain-lifecycle.js +0 -37
  1293. package/plugin/dist/core/pain-signal-adapter.d.ts +0 -37
  1294. package/plugin/dist/core/pain-signal-adapter.js +0 -1
  1295. package/plugin/dist/core/pain-signal.d.ts +0 -6
  1296. package/plugin/dist/core/pain-signal.js +0 -3
  1297. package/plugin/dist/core/principle-injector.d.ts +0 -55
  1298. package/plugin/dist/core/principle-injector.js +0 -17
  1299. package/plugin/dist/core/principle-tree-migration.d.ts +0 -35
  1300. package/plugin/dist/core/principle-tree-migration.js +0 -137
  1301. package/plugin/dist/core/storage-adapter.d.ts +0 -58
  1302. package/plugin/dist/core/storage-adapter.js +0 -1
  1303. package/plugin/dist/core/telemetry-event.d.ts +0 -66
  1304. package/plugin/dist/core/telemetry-event.js +0 -86
  1305. package/plugin/dist/core/training-program.d.ts +0 -233
  1306. package/plugin/dist/core/training-program.js +0 -435
  1307. package/plugin/dist/core/workspace-dir-service.d.ts +0 -33
  1308. package/plugin/dist/core/workspace-dir-service.js +0 -71
  1309. package/plugin/dist/hooks/lifecycle-routing.d.ts +0 -24
  1310. package/plugin/dist/hooks/lifecycle-routing.js +0 -110
  1311. package/plugin/dist/service/event-log-auditor.d.ts +0 -46
  1312. package/plugin/dist/service/event-log-auditor.js +0 -236
  1313. package/plugin/dist/service/evolution-queue-lock.d.ts +0 -18
  1314. package/plugin/dist/service/evolution-queue-lock.js +0 -36
  1315. package/plugin/dist/service/failure-classifier.d.ts +0 -46
  1316. package/plugin/dist/service/failure-classifier.js +0 -57
  1317. package/plugin/dist/service/internalization-trigger-adapter.d.ts +0 -51
  1318. package/plugin/dist/service/internalization-trigger-adapter.js +0 -184
  1319. package/plugin/dist/service/monitoring-query-service.d.ts +0 -21
  1320. package/plugin/dist/service/monitoring-query-service.js +0 -45
  1321. package/plugin/dist/service/subagent-workflow/index.d.ts +0 -3
  1322. package/plugin/dist/service/subagent-workflow/index.js +0 -2
  1323. package/plugin/dist/tools/critique-prompt.d.ts +0 -1
  1324. package/plugin/dist/tools/critique-prompt.js +0 -1
  1325. package/plugin/dist/tools/deep-reflect.d.ts +0 -1
  1326. package/plugin/dist/tools/deep-reflect.js +0 -1
  1327. package/plugin/dist/tools/model-index.d.ts +0 -1
  1328. package/plugin/dist/tools/model-index.js +0 -1
  1329. package/plugin/dist/types/event-payload.d.ts +0 -2
  1330. package/plugin/dist/types/event-payload.js +0 -1
  1331. package/plugin/dist/utils/glob-match.d.ts +0 -28
  1332. package/plugin/dist/utils/glob-match.js +0 -49
  1333. package/plugin/dist/utils/nlp.d.ts +0 -4
  1334. package/plugin/dist/utils/nlp.js +0 -21
  1335. package/plugin/dist/utils/plugin-logger.d.ts +0 -39
  1336. package/plugin/dist/utils/plugin-logger.js +0 -70
  1337. package/plugin/dist/utils/subagent-probe.d.ts +0 -35
  1338. package/plugin/dist/utils/subagent-probe.js +0 -67
@@ -0,0 +1,1064 @@
1
+ /**
2
+ * EvidenceChainContract — shared core contracts and assembly mapper for
3
+ * the Pain Evidence Chain (PRI-385).
4
+ *
5
+ * This file is purely logical (no fs, db, or network dependencies) and
6
+ * lives inside principles-core to be shared by Console read models,
7
+ * CLI commands, and test fixtures.
8
+ */
9
+ import { Type } from '@sinclair/typebox';
10
+ export const EvidenceChainStateSchema = Type.Union([
11
+ Type.Literal('recorded-only'),
12
+ Type.Literal('evidence-only'),
13
+ Type.Literal('diagnosis-queued'),
14
+ Type.Literal('diagnosis-running'),
15
+ Type.Literal('diagnosis-succeeded'),
16
+ Type.Literal('diagnosis-failed'),
17
+ Type.Literal('diagnosis-retry-wait'),
18
+ Type.Literal('candidate-generated'),
19
+ Type.Literal('internalization-missing'),
20
+ Type.Literal('internalization-pending'),
21
+ Type.Literal('internalization-running'),
22
+ Type.Literal('internalization-failed'),
23
+ Type.Literal('internalization-succeeded'),
24
+ Type.Literal('owner-reviewable'),
25
+ Type.Literal('malformed'),
26
+ Type.Literal('degraded'),
27
+ ]);
28
+ export const EvidenceChainRecordSchema = Type.Object({
29
+ id: Type.String(),
30
+ sourceKind: Type.String(),
31
+ observedAt: Type.String(),
32
+ state: EvidenceChainStateSchema,
33
+ summary: Type.String(),
34
+ admissionDecision: Type.Optional(Type.String()),
35
+ linkedPainId: Type.Optional(Type.String()),
36
+ linkedTaskId: Type.Optional(Type.String()),
37
+ linkedTaskStatus: Type.Optional(Type.String()),
38
+ linkedCandidateId: Type.Optional(Type.String()),
39
+ linkedPrincipleId: Type.Optional(Type.String()),
40
+ failureReason: Type.Optional(Type.String()),
41
+ degradedReason: Type.Optional(Type.String()),
42
+ nextAction: Type.Optional(Type.String()),
43
+ candidateTitle: Type.Optional(Type.String()),
44
+ candidateSummary: Type.Optional(Type.String()),
45
+ rootCauseSummary: Type.Optional(Type.String()),
46
+ confidence: Type.Optional(Type.Number()),
47
+ recommendationKind: Type.Optional(Type.String()),
48
+ internalizationTaskId: Type.Optional(Type.String()),
49
+ dreamerTaskStatus: Type.Optional(Type.String()),
50
+ canonicalPainId: Type.Optional(Type.String()),
51
+ runtimeTaskId: Type.Optional(Type.String()),
52
+ linkMode: Type.Optional(Type.Union([Type.Literal('canonical'), Type.Literal('legacy')])),
53
+ });
54
+ export const EvidenceChainResponseSchema = Type.Object({
55
+ records: Type.Array(EvidenceChainRecordSchema),
56
+ generatedAt: Type.String(),
57
+ degradedReason: Type.Optional(Type.String()),
58
+ nextAction: Type.Optional(Type.String()),
59
+ note: Type.Optional(Type.String()),
60
+ });
61
+ // ── Internal Helpers & Type Guards ───────────────────────────────────────────
62
+ function isRecord(value) {
63
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
64
+ }
65
+ function isString(value) {
66
+ return typeof value === 'string';
67
+ }
68
+ function getOwnValue(record, key) {
69
+ return Object.hasOwn(record, key) ? record[key] : undefined;
70
+ }
71
+ function readOwnString(record, key) {
72
+ const value = getOwnValue(record, key);
73
+ return isString(value) ? value : undefined;
74
+ }
75
+ function _readOwnStringArray(record, key) {
76
+ const value = getOwnValue(record, key);
77
+ if (!Array.isArray(value))
78
+ return [];
79
+ return value.filter(isString);
80
+ }
81
+ function coerceToString(value) {
82
+ if (typeof value === 'string')
83
+ return value;
84
+ if (typeof value === 'number' && Number.isFinite(value))
85
+ return String(value);
86
+ return '';
87
+ }
88
+ // ── Mapping & State Resolution ────────────────────────────────────────────────
89
+ export function mapSourceKind(source) {
90
+ switch (source) {
91
+ case 'manual':
92
+ case 'owner_explicit_cli':
93
+ case 'owner_explicit_chat':
94
+ return 'manual';
95
+ case 'tool_call':
96
+ case 'hook':
97
+ return 'tool_call';
98
+ case 'rulehost':
99
+ case 'gate':
100
+ return 'rulehost';
101
+ case 'empathy':
102
+ case 'empathy_inferred':
103
+ return 'empathy_inferred';
104
+ case 'review':
105
+ case 'review_finding':
106
+ return 'review';
107
+ default:
108
+ return source || 'unknown';
109
+ }
110
+ }
111
+ export function inferAdmissionDecision(sourceKind) {
112
+ switch (sourceKind) {
113
+ case 'manual':
114
+ case 'review':
115
+ return 'store_signal';
116
+ case 'empathy_inferred':
117
+ return 'owner_confirmation_required';
118
+ default:
119
+ return 'evidence_only';
120
+ }
121
+ }
122
+ export function determineState(params) {
123
+ const { sourceKind, taskStatus, hasCandidate, dreamerStatus, ledgerPrincipleStatus } = params;
124
+ if (ledgerPrincipleStatus === 'active' || ledgerPrincipleStatus === 'probation') {
125
+ return 'internalization-succeeded';
126
+ }
127
+ if (ledgerPrincipleStatus === 'candidate') {
128
+ return 'owner-reviewable';
129
+ }
130
+ if (hasCandidate) {
131
+ if (!dreamerStatus) {
132
+ return 'internalization-missing';
133
+ }
134
+ switch (dreamerStatus) {
135
+ case 'pending':
136
+ case 'queued':
137
+ return 'internalization-pending';
138
+ case 'running':
139
+ return 'internalization-running';
140
+ case 'failed':
141
+ return 'internalization-failed';
142
+ case 'succeeded':
143
+ return 'internalization-succeeded';
144
+ default:
145
+ return 'candidate-generated';
146
+ }
147
+ }
148
+ if (taskStatus) {
149
+ switch (taskStatus) {
150
+ case 'pending':
151
+ case 'queued':
152
+ return 'diagnosis-queued';
153
+ case 'running':
154
+ return 'diagnosis-running';
155
+ case 'succeeded':
156
+ return 'diagnosis-succeeded';
157
+ case 'failed':
158
+ case 'needs_human_review':
159
+ return 'diagnosis-failed';
160
+ case 'retry_wait':
161
+ return 'diagnosis-retry-wait';
162
+ default:
163
+ return 'diagnosis-queued';
164
+ }
165
+ }
166
+ const admission = inferAdmissionDecision(sourceKind);
167
+ if (admission === 'evidence_only') {
168
+ // Observed evidence that has NOT entered the governance chain (tool_call / hook /
169
+ // rulehost observations). Kept distinct from `recorded-only` so owners do not
170
+ // mistake passive observations for active governance. (PRI-385 P1-2)
171
+ return 'evidence-only';
172
+ }
173
+ // store_signal (manual/review) and owner_confirmation_required (empathy_inferred)
174
+ // are owner-admitted signals awaiting the pipeline → active chain.
175
+ return 'recorded-only';
176
+ }
177
+ /**
178
+ * Derive the raw painId accepted by `pd pain retry --pain-id` from a diagnostician
179
+ * task_id. Convention (PainToPrincipleService): `task_id = diagnosis_${painId}`, so the
180
+ * painId is `task_id` with a single leading `diagnosis_` stripped — and it must round-trip
181
+ * (`diagnosis_` + painId === original linkedTaskId).
182
+ *
183
+ * Only the canonical `diagnosis_<painId>` form is safe: sub-run ids like
184
+ * `diag_router-diagnosis_*` do NOT start with `diagnosis_`, so they fall through to the
185
+ * `pd diagnose run --task-id` fallback. The record display id (`pain_*` / `manual_*`) is
186
+ * intentionally NOT used here — it does not satisfy the `diagnosis_${painId}` convention.
187
+ * (ERR-008: lineage/painId must come from one consistent source = the real task_id.)
188
+ */
189
+ function deriveRetryPainId(linkedTaskId) {
190
+ if (!linkedTaskId || !linkedTaskId.startsWith('diagnosis_'))
191
+ return undefined;
192
+ const painId = linkedTaskId.slice('diagnosis_'.length);
193
+ // Reject empty remainder or a remainder that still carries the prefix (ambiguous).
194
+ if (!painId || painId.startsWith('diagnosis_'))
195
+ return undefined;
196
+ return painId;
197
+ }
198
+ /**
199
+ * Build an executable recovery command for failed/retry-wait diagnosis.
200
+ *
201
+ * Priority (PRI-385 P1-1):
202
+ * 1. Safe raw painId → `pd pain retry --pain-id <painId> --workspace "<ws>" --runtime <kind>`
203
+ * 2. Any linkedTaskId → `pd diagnose run --task-id <linkedTaskId> --workspace "<ws>" --runtime <kind>`
204
+ * 3. Neither → returns undefined (caller emits a reason-style nextAction instead).
205
+ *
206
+ * `--workspace` is always explicit (per PRI-385 owner note: recovery commands must
207
+ * preserve workspace identity). `--runtime <kind>` is shown as a required placeholder
208
+ * because `pd pain retry` / `pd diagnose run` refuse without an explicit runtime.
209
+ */
210
+ function buildRetryCommand(linkedTaskId, ws) {
211
+ const painId = deriveRetryPainId(linkedTaskId);
212
+ if (painId) {
213
+ return `pd pain retry --pain-id ${painId} --workspace "${ws}" --runtime <kind>`;
214
+ }
215
+ if (linkedTaskId) {
216
+ return `pd diagnose run --task-id ${linkedTaskId} --workspace "${ws}" --runtime <kind>`;
217
+ }
218
+ return undefined;
219
+ }
220
+ export function determineNextAction(ctx) {
221
+ const { state, workspaceDir: ws, linkedTaskId } = ctx;
222
+ switch (state) {
223
+ case 'diagnosis-retry-wait': {
224
+ const cmd = buildRetryCommand(linkedTaskId, ws);
225
+ return cmd
226
+ ? `Diagnosis is waiting for automatic retry. Force retry: ${cmd}`
227
+ : 'Diagnosis is waiting for automatic retry, but no retryable task id is linked. Check Runtime V2 pipeline status.';
228
+ }
229
+ case 'diagnosis-failed': {
230
+ const cmd = buildRetryCommand(linkedTaskId, ws);
231
+ return cmd
232
+ ? `Diagnosis failed. Retry: ${cmd}`
233
+ : 'Diagnosis failed, but no retryable task id is linked. Check the failure details and Runtime V2 pipeline status.';
234
+ }
235
+ case 'diagnosis-succeeded':
236
+ return 'Diagnosis completed. A principle candidate may be generated shortly.';
237
+ case 'candidate-generated':
238
+ case 'internalization-missing':
239
+ return `Candidate generated. Waiting for internalization pipeline. Run: pd runtime internalization run-once --workspace "${ws}"`;
240
+ case 'internalization-pending':
241
+ return 'Candidate generated. Internalization task is pending — wait for dreamer to complete.';
242
+ case 'internalization-running':
243
+ return 'Internalization in progress — dreamer task is running.';
244
+ case 'internalization-failed':
245
+ return `Internalization task failed. Check dreamer task error or run: pd runtime internalization run-once --workspace "${ws}" to retry.`;
246
+ case 'owner-reviewable':
247
+ return 'Principle candidate is ready for owner review.';
248
+ case 'internalization-succeeded':
249
+ return 'Internalization task completed. Check for owner-reviewable principle.';
250
+ default:
251
+ return undefined;
252
+ }
253
+ }
254
+ export function resolveSummary(fields) {
255
+ if (fields.candidateTitle)
256
+ return fields.candidateTitle;
257
+ if (fields.rootCauseSummary)
258
+ return fields.rootCauseSummary;
259
+ if (fields.painText)
260
+ return fields.painText;
261
+ if (fields.painReason)
262
+ return fields.painReason;
263
+ return fields.fallback;
264
+ }
265
+ export function normalizeDiagnosticianTaskId(taskId) {
266
+ if (!taskId) {
267
+ return {
268
+ success: false,
269
+ reason: 'Diagnostician task ID is empty or missing.',
270
+ nextAction: 'Verify that the principle candidates table contains valid task IDs.',
271
+ };
272
+ }
273
+ if (!taskId.includes('diagnosis_')) {
274
+ return { success: true, normalized: taskId };
275
+ }
276
+ if (taskId.startsWith('diagnosis_')) {
277
+ return { success: true, normalized: taskId };
278
+ }
279
+ const idx = taskId.indexOf('diagnosis_');
280
+ if (idx > 0 && taskId[idx - 1] === '-') {
281
+ const normalized = taskId.slice(idx);
282
+ return { success: true, normalized };
283
+ }
284
+ return {
285
+ success: false,
286
+ reason: `Malformed diagnostician task ID: "${taskId}". Unable to normalize to canonical "diagnosis_*" format.`,
287
+ nextAction: 'Ensure task IDs follow the format "diagnosis_*" or "<stage>-diagnosis_*".',
288
+ };
289
+ }
290
+ export function crossReferenceByTimestamp(painEvents, taskMap, coveredPainIds) {
291
+ const CROSS_REF_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
292
+ const result = new Map();
293
+ const usedTaskIds = new Set();
294
+ const unmatchedEvents = painEvents.filter(e => !coveredPainIds.has(e.painId));
295
+ if (unmatchedEvents.length === 0)
296
+ return result;
297
+ const availableTasks = [];
298
+ for (const [key, entry] of taskMap.entries()) {
299
+ if (!coveredPainIds.has(key)) {
300
+ availableTasks.push([key, entry]);
301
+ }
302
+ }
303
+ unmatchedEvents.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
304
+ for (const event of unmatchedEvents) {
305
+ const eventTime = new Date(event.createdAt).getTime();
306
+ if (Number.isNaN(eventTime))
307
+ continue;
308
+ let bestMatch = null;
309
+ let bestDelta = Infinity;
310
+ for (const [taskKey, taskEntry] of availableTasks) {
311
+ if (usedTaskIds.has(taskKey))
312
+ continue;
313
+ const taskTime = new Date(taskEntry.createdAt).getTime();
314
+ if (Number.isNaN(taskTime))
315
+ continue;
316
+ const delta = Math.abs(eventTime - taskTime);
317
+ if (delta <= CROSS_REF_WINDOW_MS && delta < bestDelta) {
318
+ bestDelta = delta;
319
+ bestMatch = [taskKey, taskEntry];
320
+ }
321
+ }
322
+ if (bestMatch) {
323
+ usedTaskIds.add(bestMatch[0]);
324
+ result.set(event.painId, bestMatch[1]);
325
+ }
326
+ }
327
+ return result;
328
+ }
329
+ // ── Deduplication Helper ───────────────────────────────────────────────────────
330
+ /**
331
+ * Normalize a summary string for dedupe matching.
332
+ *
333
+ * Pipeline (Unicode-aware, reviewer P1 round 3):
334
+ * 1. NFKC normalization — folds compatibility characters and fullwidth
335
+ * forms (e.g. "Agent" -> "Agent", "AGENT<U+3000>修改" -> "AGENT 修改")
336
+ * so visually identical text produced by different input methods
337
+ * collapses to the same canonical form.
338
+ * 2. Lowercase.
339
+ * 3. Strip every character that is NOT a Unicode letter (\p{L}), Unicode
340
+ * number (\p{N}), or whitespace. This is the critical fix: the previous
341
+ * pattern `[^\w\s]` only retained `[A-Za-z0-9_]`, which deleted CJK
342
+ * ideographs entirely — a Chinese pain summary like "Agent 未经批准修改了配置"
343
+ * was reduced to "agent", making every Chinese pain hash to the same key
344
+ * and silently breaking content-hash dedupe for non-ASCII owners.
345
+ * \p{L} keeps all letters across every script (Latin, CJK, Cyrillic,
346
+ * Arabic, ...); \p{N} keeps all digits; whitespace is preserved for the
347
+ * collapse step below.
348
+ * 4. Collapse runs of whitespace to a single space and trim.
349
+ *
350
+ * Examples:
351
+ * - "Agent modified config!" and "agent modified config" hash to the same key.
352
+ * - "Agent 未经批准修改了配置!" and "agent 未经批准修改了配置" hash to the same key.
353
+ * - "Agent<U+3000>修改" and "Agent 修改" hash to the same key (NFKC fold).
354
+ *
355
+ * Exported for direct unit testing of the normalization rules.
356
+ */
357
+ export function normalizeSummaryForDedupe(summary) {
358
+ return summary
359
+ .normalize('NFKC')
360
+ .toLowerCase()
361
+ .replace(/[^\p{L}\p{N}\s]/gu, '')
362
+ .replace(/\s+/g, ' ')
363
+ .trim();
364
+ }
365
+ /**
366
+ * Maximum allowed observedAt gap (in milliseconds) for content-hash dedupe
367
+ * under condition (b) below.
368
+ *
369
+ * Content alone is NOT strong enough: an owner may legitimately log the same
370
+ * pain ("Agent modified config without approval") today AND again tomorrow as
371
+ * two separate real recurrences. Suppressing the second occurrence would
372
+ * silently hide real recurrence signal from the owner, which is dangerous for
373
+ * pain/episode judgement.
374
+ *
375
+ * We therefore require content-hash match AND observedAt within this window.
376
+ * The 1s value matches the original (loose) timestamp-window behavior, but is
377
+ * now AND'd with content equality rather than acting alone — strict addition,
378
+ * never a replacement. Recurrence aggregation across wide time windows is
379
+ * intentionally NOT done here; it belongs to the (future) episode layer so
380
+ * the owner never loses raw recurrence signal at the evidence-chain stage.
381
+ */
382
+ const CONTENT_DEDUPE_PROXIMITY_MS = 1000;
383
+ /**
384
+ * Dedupe evidence records so the same real pain signal is not shown twice.
385
+ *
386
+ * Background (PRI-388): a single CLI/manual pain may end up both as a row in
387
+ * trajectory.db.pain_events (shown as `pain_N`, often "recorded-only / unlinked")
388
+ * and as a Runtime V2 canonical pain record (e.g. `manual_*`, shown with full
389
+ * candidate/internalization state). Showing both cards misleads the owner into
390
+ * thinking the same signal is simultaneously "untouched" and "in flight".
391
+ *
392
+ * Lineage policy (reviewer P1): deduping CANNOT rely on timestamp alone OR on
393
+ * content alone — two DIFFERENT real pains can land within 1s (would be wrongly
394
+ * merged by time alone), AND the same pain text can legitimately recur at very
395
+ * different times (would be wrongly merged by content alone, hiding real
396
+ * recurrence signal). We therefore require STRONG lineage evidence before
397
+ * suppressing a trajectory row:
398
+ *
399
+ * (a) the canonical record's linkedTaskId round-trips to the trajectory pain
400
+ * id via the `diagnosis_<painId>` convention — a diagnosis task IS the
401
+ * canonical record for that specific trajectory row; OR
402
+ * (b) the canonical record and the trajectory record share the same
403
+ * sourceKind, their normalized summaries match exactly (a content hash,
404
+ * not a substring contains() — see G.2 / F.3 in shared-constraints),
405
+ * AND their observedAt timestamps fall within CONTENT_DEDUPE_PROXIMITY_MS
406
+ * of each other.
407
+ *
408
+ * Either condition is sufficient. Time alone is NEVER a dedupe signal.
409
+ * Content alone is NEVER a dedupe signal. The two are AND'd for condition (b)
410
+ * precisely so that real recurrences (same text, far-apart timestamps) survive.
411
+ *
412
+ * Ordering (reviewer P1-2): the input array is already sorted by observedAt
413
+ * descending. We MUST preserve that order, so we filter in place instead of
414
+ * rebuilding canonical-then-trajectory buckets (which would scramble the sort).
415
+ *
416
+ * Privacy: no raw prompt/chat/trajectory text is exposed beyond what each
417
+ * record already carries (G.2 / F.3 / F.5).
418
+ */
419
+ function dedupeRecords(records) {
420
+ if (records.length === 0)
421
+ return records;
422
+ // 1. Collect canonical (Runtime V2) records — those that carry a linkedTaskId
423
+ // and therefore represent the authoritative chain state for their event.
424
+ const canonicalRecords = [];
425
+ for (const record of records) {
426
+ if (record.linkedTaskId) {
427
+ canonicalRecords.push(record);
428
+ }
429
+ }
430
+ if (canonicalRecords.length === 0)
431
+ return records;
432
+ // 2. Build a lookup of trajectory pain ids that a canonical task explicitly
433
+ // references via the `diagnosis_<painId>` round-trip (condition a).
434
+ // Also build a (sourceKind, normalizedSummary) -> canonical observedAt ms
435
+ // multi-map for content-hash matching (condition b). We collect ALL
436
+ // observedAt timestamps per content key so the trajectory-side check can
437
+ // apply the proximity window — a single global set is unsafe because it
438
+ // would suppress recurrences logged far outside the canonical's time.
439
+ const diagnosisTrajectoryIds = new Set();
440
+ const canonicalObservedAtByKey = new Map();
441
+ for (const canonical of canonicalRecords) {
442
+ // Condition (a): linkedTaskId of form `diagnosis_<painId>` where <painId>
443
+ // is itself a trajectory pain id (pain_N).
444
+ const { linkedTaskId } = canonical;
445
+ if (linkedTaskId && linkedTaskId.startsWith('diagnosis_')) {
446
+ const painId = linkedTaskId.slice('diagnosis_'.length);
447
+ if (painId.startsWith('pain_')) {
448
+ diagnosisTrajectoryIds.add(painId);
449
+ }
450
+ }
451
+ // Condition (b) content key: same sourceKind + normalized summary. We fold
452
+ // candidateTitle and rootCauseSummary into the canonical's content signature
453
+ // so a trajectory row whose text matches the candidate title or root cause
454
+ // still dedupes against the canonical card. We collect observedAt ms per
455
+ // key so the trajectory check can require time proximity AND content match.
456
+ const canonicalObservedAtMs = Date.parse(canonical.observedAt);
457
+ if (Number.isNaN(canonicalObservedAtMs))
458
+ continue;
459
+ const parts = [
460
+ canonical.summary,
461
+ canonical.candidateTitle,
462
+ canonical.rootCauseSummary,
463
+ ].filter((v) => typeof v === 'string' && v.length > 0);
464
+ for (const part of parts) {
465
+ const normalized = normalizeSummaryForDedupe(part);
466
+ if (!normalized)
467
+ continue;
468
+ const key = `${canonical.sourceKind}||${normalized}`;
469
+ const arr = canonicalObservedAtByKey.get(key);
470
+ if (arr) {
471
+ arr.push(canonicalObservedAtMs);
472
+ }
473
+ else {
474
+ canonicalObservedAtByKey.set(key, [canonicalObservedAtMs]);
475
+ }
476
+ }
477
+ }
478
+ if (diagnosisTrajectoryIds.size === 0 && canonicalObservedAtByKey.size === 0) {
479
+ return records;
480
+ }
481
+ // 3. Mark trajectory records (no linkedTaskId) that have STRONG lineage to a
482
+ // canonical record. Only strong lineage suppresses a row. For condition
483
+ // (b), strong lineage = same sourceKind + same normalized summary +
484
+ // observedAt within CONTENT_DEDUPE_PROXIMITY_MS. Content alone or time
485
+ // alone is never sufficient.
486
+ const idsToRemove = new Set();
487
+ for (const record of records) {
488
+ if (record.linkedTaskId)
489
+ continue; // canonical records are never removed
490
+ let suppress = false;
491
+ // Condition (a): trajectory id explicitly referenced by a diagnosis_* task.
492
+ // This is the strongest lineage — a diagnosis task IS the canonical record
493
+ // for that specific trajectory row.
494
+ if (diagnosisTrajectoryIds.has(record.id)) {
495
+ suppress = true;
496
+ }
497
+ // Condition (b): same sourceKind + normalized summary hash AND observedAt
498
+ // within the proximity window. Without the time-window gate, an owner who
499
+ // logs the same pain today AND tomorrow (a real recurrence) would have the
500
+ // second trajectory row silently deleted whenever any canonical task shares
501
+ // its content — losing the recurrence signal that episode judgement needs.
502
+ if (!suppress) {
503
+ const normalized = normalizeSummaryForDedupe(record.summary);
504
+ if (normalized) {
505
+ const key = `${record.sourceKind}||${normalized}`;
506
+ const candidates = canonicalObservedAtByKey.get(key);
507
+ if (candidates && candidates.length > 0) {
508
+ const tMs = Date.parse(record.observedAt);
509
+ if (!Number.isNaN(tMs) &&
510
+ candidates.some(c => Math.abs(c - tMs) <= CONTENT_DEDUPE_PROXIMITY_MS)) {
511
+ suppress = true;
512
+ }
513
+ }
514
+ }
515
+ }
516
+ if (suppress) {
517
+ idsToRemove.add(record.id);
518
+ }
519
+ }
520
+ if (idsToRemove.size === 0)
521
+ return records;
522
+ // 4. Filter in place to preserve the observedAt-descending sort order.
523
+ return records.filter(record => !idsToRemove.has(record.id));
524
+ }
525
+ export function assembleEvidenceChain(params) {
526
+ const { workspaceDir, painEvents: rawPainEvents, tasks: rawTasks, candidates: rawCandidates, dreamerTasks: rawDreamerTasks, ledgerPrinciples, trajectoryDbAvailable, stateDbAvailable, } = params;
527
+ const generatedAt = new Date().toISOString();
528
+ const records = [];
529
+ const degradedReasons = params.degradedReasons ? [...params.degradedReasons] : [];
530
+ const degradedNextActions = params.degradedNextActions ? [...params.degradedNextActions] : [];
531
+ // Coerce untrusted arrays using element-wise guards (ERR-001/005/007)
532
+ const painEvents = rawPainEvents.filter(isRecord);
533
+ const tasks = rawTasks.filter(isRecord);
534
+ const candidates = rawCandidates.filter(isRecord);
535
+ const dreamerTasks = rawDreamerTasks.filter(isRecord);
536
+ // 1. Process tasks into a map
537
+ const taskMap = new Map();
538
+ for (const task of tasks) {
539
+ const taskId = readOwnString(task, 'task_id') ?? '';
540
+ const inputRefRaw = getOwnValue(task, 'input_ref');
541
+ const inputRef = isString(inputRefRaw) ? inputRefRaw : undefined;
542
+ let painId;
543
+ if (inputRef) {
544
+ painId = /^\d+$/.test(inputRef) ? `pain_${inputRef}` : inputRef;
545
+ }
546
+ else {
547
+ painId = taskId.startsWith('diagnosis_') ? taskId.slice('diagnosis_'.length) : taskId;
548
+ }
549
+ let rootCauseSummary;
550
+ let diagnosticJsonDegraded = false;
551
+ const dj = getOwnValue(task, 'diagnostic_json');
552
+ if (isString(dj)) {
553
+ try {
554
+ const parsed = JSON.parse(dj);
555
+ if (isRecord(parsed) && Object.hasOwn(parsed, 'rootCause') && isString(parsed.rootCause)) {
556
+ rootCauseSummary = parsed.rootCause;
557
+ }
558
+ }
559
+ catch {
560
+ diagnosticJsonDegraded = true;
561
+ }
562
+ }
563
+ taskMap.set(painId, {
564
+ taskId,
565
+ status: readOwnString(task, 'status') ?? 'unknown',
566
+ lastError: readOwnString(task, 'last_error') ?? null,
567
+ createdAt: readOwnString(task, 'created_at') ?? '',
568
+ rootCauseSummary,
569
+ diagnosticJsonDegraded,
570
+ inputRef,
571
+ });
572
+ }
573
+ // 2. Build dreamer map
574
+ const dreamerMap = new Map();
575
+ for (const task of dreamerTasks) {
576
+ const taskId = readOwnString(task, 'task_id') ?? '';
577
+ const status = readOwnString(task, 'status') ?? 'unknown';
578
+ if (taskId.startsWith('dreamer-')) {
579
+ const rest = taskId.slice('dreamer-'.length);
580
+ const lastDash = rest.lastIndexOf('-');
581
+ if (lastDash > 0) {
582
+ const candidateId = rest.slice(0, lastDash);
583
+ if (candidateId && !dreamerMap.has(candidateId)) {
584
+ dreamerMap.set(candidateId, { taskId, status });
585
+ }
586
+ }
587
+ }
588
+ }
589
+ // 3. Build candidates map and reverse lookups
590
+ const taskIdToPainId = new Map();
591
+ for (const [pId, entry] of taskMap) {
592
+ taskIdToPainId.set(entry.taskId, pId);
593
+ const normResult = normalizeDiagnosticianTaskId(entry.taskId);
594
+ if (normResult.success && normResult.normalized) {
595
+ taskIdToPainId.set(normResult.normalized, pId);
596
+ }
597
+ }
598
+ const candidateMap = new Map();
599
+ const candidateByTaskId = new Map();
600
+ for (const c of candidates) {
601
+ const candidateId = readOwnString(c, 'candidate_id') ?? '';
602
+ if (!candidateId)
603
+ continue;
604
+ const rawTaskId = readOwnString(c, 'task_id') ?? '';
605
+ const normResult = normalizeDiagnosticianTaskId(rawTaskId);
606
+ if (!normResult.success || !normResult.normalized) {
607
+ if (normResult.reason)
608
+ degradedReasons.push(normResult.reason);
609
+ if (normResult.nextAction)
610
+ degradedNextActions.push(normResult.nextAction);
611
+ continue;
612
+ }
613
+ const taskId = normResult.normalized;
614
+ let painId = taskIdToPainId.get(taskId) ?? '';
615
+ if (!painId && taskId.startsWith('diagnosis_')) {
616
+ painId = taskId.slice('diagnosis_'.length);
617
+ }
618
+ const info = {
619
+ candidateId,
620
+ title: readOwnString(c, 'title'),
621
+ description: readOwnString(c, 'description'),
622
+ confidence: typeof c.confidence === 'number' && Number.isFinite(c.confidence) ? c.confidence : undefined,
623
+ recommendationKind: readOwnString(c, 'recommendation_kind'),
624
+ };
625
+ if (painId)
626
+ candidateMap.set(painId, info);
627
+ if (taskId)
628
+ candidateByTaskId.set(taskId, info);
629
+ }
630
+ // 4. Map ledger principles to painId
631
+ const painToPrincipleMap = new Map();
632
+ const principleStatusMap = new Map();
633
+ for (const p of ledgerPrinciples) {
634
+ if (p.status) {
635
+ principleStatusMap.set(p.id, p.status);
636
+ }
637
+ for (const pId of p.derivedFromPainIds ?? []) {
638
+ painToPrincipleMap.set(pId, p.id);
639
+ }
640
+ }
641
+ // 5. Assemble records
642
+ const painEventMeta = [];
643
+ const directMatchedPainIds = new Set();
644
+ for (const event of painEvents) {
645
+ const eventId = coerceToString(event.id);
646
+ if (!eventId)
647
+ continue;
648
+ const source = readOwnString(event, 'source') ?? 'unknown';
649
+ const reason = readOwnString(event, 'reason') ?? '';
650
+ const text = readOwnString(event, 'text') ?? '';
651
+ const createdAt = readOwnString(event, 'created_at') ?? '';
652
+ const score = typeof event.score === 'number' ? event.score : 0;
653
+ // PRI-406: Read canonical_pain_id and runtime_task_id from pain_events
654
+ const canonicalPainId = readOwnString(event, 'canonical_pain_id');
655
+ const runtimeTaskId = readOwnString(event, 'runtime_task_id');
656
+ const sourceKind = mapSourceKind(source);
657
+ const painId = `pain_${eventId}`;
658
+ painEventMeta.push({ painId, createdAt, source });
659
+ // PRI-406: Prefer precise join via canonical_pain_id → tasks.input_ref.
660
+ // When a pain event carries canonical_pain_id, look up the task by that ID
661
+ // first (the taskMap key is derived from input_ref, which equals canonical_pain_id).
662
+ // This is the authoritative join path — no timestamp/content heuristic needed.
663
+ let linkedTask = taskMap.get(painId);
664
+ let linkMode;
665
+ if (canonicalPainId) {
666
+ const canonicalTask = taskMap.get(canonicalPainId);
667
+ if (canonicalTask) {
668
+ linkedTask = canonicalTask;
669
+ linkMode = 'canonical';
670
+ }
671
+ else if (runtimeTaskId) {
672
+ // Fallback: try to find task by runtimeTaskId in taskMap values
673
+ for (const [, entry] of taskMap.entries()) {
674
+ if (entry.taskId === runtimeTaskId) {
675
+ linkedTask = entry;
676
+ linkMode = 'canonical';
677
+ break;
678
+ }
679
+ }
680
+ }
681
+ }
682
+ if (linkedTask) {
683
+ directMatchedPainIds.add(painId);
684
+ if (!linkMode) {
685
+ linkMode = 'legacy';
686
+ }
687
+ }
688
+ const linkedCandidate = candidateMap.get(painId)
689
+ || (canonicalPainId ? candidateMap.get(canonicalPainId) : undefined)
690
+ || (linkedTask ? candidateByTaskId.get(linkedTask.taskId) : undefined);
691
+ const linkedPrincipleId = painToPrincipleMap.get(painId)
692
+ || (canonicalPainId ? painToPrincipleMap.get(canonicalPainId) : undefined);
693
+ const ledgerPrincipleStatus = linkedPrincipleId ? principleStatusMap.get(linkedPrincipleId) : undefined;
694
+ const dreamerInfo = linkedCandidate ? dreamerMap.get(linkedCandidate.candidateId) : undefined;
695
+ const state = determineState({
696
+ sourceKind,
697
+ taskStatus: linkedTask?.status,
698
+ hasCandidate: !!linkedCandidate,
699
+ dreamerStatus: dreamerInfo?.status,
700
+ ledgerPrincipleStatus,
701
+ });
702
+ const rawSummary = resolveSummary({
703
+ candidateTitle: linkedCandidate?.title,
704
+ rootCauseSummary: linkedTask?.rootCauseSummary,
705
+ painText: text,
706
+ painReason: reason,
707
+ fallback: `Pain signal (source: ${source}, score: ${score})`,
708
+ });
709
+ const record = {
710
+ id: painId,
711
+ sourceKind,
712
+ observedAt: createdAt,
713
+ state,
714
+ summary: rawSummary,
715
+ admissionDecision: inferAdmissionDecision(sourceKind),
716
+ };
717
+ // PRI-406: Set canonical identity and link mode
718
+ if (canonicalPainId) {
719
+ record.canonicalPainId = canonicalPainId;
720
+ }
721
+ if (runtimeTaskId) {
722
+ record.runtimeTaskId = runtimeTaskId;
723
+ }
724
+ if (linkMode) {
725
+ record.linkMode = linkMode;
726
+ }
727
+ // PRI-406: When a pain event is linked via canonical_pain_id, also mark
728
+ // the canonical ID as covered so step 6 doesn't create a duplicate record
729
+ // for the same task.
730
+ if (canonicalPainId && linkedTask) {
731
+ directMatchedPainIds.add(canonicalPainId);
732
+ }
733
+ if (linkedCandidate) {
734
+ record.linkedCandidateId = linkedCandidate.candidateId;
735
+ if (linkedCandidate.title)
736
+ record.candidateTitle = linkedCandidate.title;
737
+ if (linkedCandidate.description)
738
+ record.candidateSummary = linkedCandidate.description;
739
+ if (linkedCandidate.confidence !== undefined)
740
+ record.confidence = linkedCandidate.confidence;
741
+ if (linkedCandidate.recommendationKind)
742
+ record.recommendationKind = linkedCandidate.recommendationKind;
743
+ }
744
+ if (linkedTask) {
745
+ record.linkedTaskId = linkedTask.taskId;
746
+ record.linkedTaskStatus = linkedTask.status;
747
+ if (linkedTask.rootCauseSummary) {
748
+ record.rootCauseSummary = linkedTask.rootCauseSummary;
749
+ }
750
+ if (linkedTask.lastError && (state === 'diagnosis-failed' || state === 'diagnosis-retry-wait')) {
751
+ record.failureReason = linkedTask.lastError;
752
+ }
753
+ if (linkedTask.diagnosticJsonDegraded) {
754
+ record.degradedReason = 'Diagnostic data for this record could not be parsed';
755
+ }
756
+ }
757
+ if (dreamerInfo) {
758
+ record.internalizationTaskId = dreamerInfo.taskId;
759
+ record.dreamerTaskStatus = dreamerInfo.status;
760
+ }
761
+ if (linkedPrincipleId) {
762
+ record.linkedPrincipleId = linkedPrincipleId;
763
+ }
764
+ // Generate nextAction from state
765
+ record.nextAction = determineNextAction({ state, workspaceDir, recordId: painId, linkedTaskId: linkedTask?.taskId });
766
+ if (!linkedTask && stateDbAvailable && taskMap.size > 0) {
767
+ // PRI-406: Rows without canonical_pain_id that have no linked task
768
+ // continue to get the "Could not link" banner (same as before).
769
+ // Rows WITH canonical_pain_id that have no linked task also get the
770
+ // banner — this is a real problem since the precise join should have worked.
771
+ // The linkMode field distinguishes the linking strategy used.
772
+ continue;
773
+ }
774
+ records.push(record);
775
+ }
776
+ // 5b. Proximity Cross-Referencing for Unmatched Pain Events
777
+ const crossRefMap = crossReferenceByTimestamp(painEventMeta, taskMap, directMatchedPainIds);
778
+ // Tasks whose cross-ref is backed by STRONG lineage (content hash match
779
+ // between trajectory text and task candidate title / root cause). These
780
+ // are NOT added to the weak crossRefTaskIds set, so step 6 will emit the
781
+ // canonical task-id record for them. (PRI-388 reviewer P1: dedupe must
782
+ // rely on strong lineage, not timestamp alone.)
783
+ const strongMatchedTaskIds = new Set();
784
+ for (const event of painEvents) {
785
+ const eventId = coerceToString(event.id);
786
+ if (!eventId)
787
+ continue;
788
+ const painId = `pain_${eventId}`;
789
+ if (directMatchedPainIds.has(painId))
790
+ continue;
791
+ const crossRefTask = crossRefMap.get(painId);
792
+ if (!crossRefTask) {
793
+ if (stateDbAvailable && taskMap.size > 0) {
794
+ const source = readOwnString(event, 'source') ?? 'unknown';
795
+ const reason = readOwnString(event, 'reason') ?? '';
796
+ const text = readOwnString(event, 'text') ?? '';
797
+ const createdAt = readOwnString(event, 'created_at') ?? '';
798
+ const score = typeof event.score === 'number' ? event.score : 0;
799
+ const sourceKind = mapSourceKind(source);
800
+ // PRI-406: Read canonical fields
801
+ const eventCanonicalPainId = readOwnString(event, 'canonical_pain_id');
802
+ const eventRuntimeTaskId = readOwnString(event, 'runtime_task_id');
803
+ // No linked task/candidate: state is admission-driven. tool_call/hook observations
804
+ // are `evidence-only`; manual/review are `recorded-only`. (PRI-385 P1-2)
805
+ const unmatchedState = determineState({ sourceKind, hasCandidate: false });
806
+ const record = {
807
+ id: painId,
808
+ sourceKind,
809
+ observedAt: createdAt,
810
+ state: unmatchedState,
811
+ summary: text || reason || `Pain signal (source: ${source}, score: ${score})`,
812
+ admissionDecision: inferAdmissionDecision(sourceKind),
813
+ };
814
+ // PRI-406: Set canonical identity fields
815
+ if (eventCanonicalPainId) {
816
+ record.canonicalPainId = eventCanonicalPainId;
817
+ }
818
+ if (eventRuntimeTaskId) {
819
+ record.runtimeTaskId = eventRuntimeTaskId;
820
+ }
821
+ // PRI-406: Both canonical and legacy unlinked rows get the same
822
+ // "Could not link" banner (ERR-002). The linkMode field distinguishes
823
+ // the linking strategy used; legacy rows additionally get linkMode='legacy'.
824
+ record.degradedReason = 'Could not link this pain event to a diagnostician task. The chain may be incomplete.';
825
+ record.nextAction = `Check Runtime V2 pipeline status. The diagnostician task may have a different pain ID format.`;
826
+ if (!eventCanonicalPainId) {
827
+ record.linkMode = 'legacy';
828
+ }
829
+ degradedReasons.push(`Pain event ${painId} could not be linked to a diagnostician task.`);
830
+ degradedNextActions.push('Check Runtime V2 pipeline status for unmatched pain ID formats.');
831
+ records.push(record);
832
+ }
833
+ continue;
834
+ }
835
+ // ── Strong-lineage gate (PRI-388 reviewer P1) ────────────────────────
836
+ // If the trajectory event's text strongly matches the cross-referenced
837
+ // task's candidate title or root cause (a content hash, NOT timestamp
838
+ // alone), they describe the SAME real event. Skip emitting a
839
+ // trajectory-id (pain_<N>) record here; step 6 will emit the canonical
840
+ // task-id record instead. This prevents two cards for one event while
841
+ // still emitting trajectory-id records for genuine timestamp-only
842
+ // (weak) cross-refs where content does not match.
843
+ const trajText = readOwnString(event, 'text') ?? '';
844
+ const trajReason = readOwnString(event, 'reason') ?? '';
845
+ const trajectoryContentKey = normalizeSummaryForDedupe(trajText || trajReason);
846
+ if (trajectoryContentKey) {
847
+ const crossCandidate = candidateByTaskId.get(crossRefTask.taskId);
848
+ const taskContentFields = [
849
+ crossRefTask.rootCauseSummary,
850
+ crossCandidate?.title,
851
+ ].filter((v) => typeof v === 'string' && v.length > 0);
852
+ const isStrongLineageMatch = taskContentFields.some(c => normalizeSummaryForDedupe(c) === trajectoryContentKey);
853
+ if (isStrongLineageMatch) {
854
+ strongMatchedTaskIds.add(crossRefTask.taskId);
855
+ continue;
856
+ }
857
+ }
858
+ const source = readOwnString(event, 'source') ?? 'unknown';
859
+ const reason = readOwnString(event, 'reason') ?? '';
860
+ const text = readOwnString(event, 'text') ?? '';
861
+ const createdAt = readOwnString(event, 'created_at') ?? '';
862
+ const score = typeof event.score === 'number' ? event.score : 0;
863
+ const sourceKind = mapSourceKind(source);
864
+ // PRI-406: Read canonical fields for cross-ref records
865
+ const eventCanonicalPainId = readOwnString(event, 'canonical_pain_id');
866
+ const eventRuntimeTaskId = readOwnString(event, 'runtime_task_id');
867
+ const linkedCandidate = candidateMap.get(painId)
868
+ || (eventCanonicalPainId ? candidateMap.get(eventCanonicalPainId) : undefined)
869
+ || candidateByTaskId.get(crossRefTask.taskId);
870
+ const linkedPrincipleId = painToPrincipleMap.get(painId)
871
+ || (eventCanonicalPainId ? painToPrincipleMap.get(eventCanonicalPainId) : undefined);
872
+ const ledgerPrincipleStatus = linkedPrincipleId ? principleStatusMap.get(linkedPrincipleId) : undefined;
873
+ const dreamerInfo = linkedCandidate ? dreamerMap.get(linkedCandidate.candidateId) : undefined;
874
+ const state = determineState({
875
+ sourceKind,
876
+ taskStatus: crossRefTask.status,
877
+ hasCandidate: !!linkedCandidate,
878
+ dreamerStatus: dreamerInfo?.status,
879
+ ledgerPrincipleStatus,
880
+ });
881
+ const rawSummary = resolveSummary({
882
+ candidateTitle: linkedCandidate?.title,
883
+ rootCauseSummary: crossRefTask.rootCauseSummary,
884
+ painText: text,
885
+ painReason: reason,
886
+ fallback: `Pain signal (source: ${source}, score: ${score})`,
887
+ });
888
+ const record = {
889
+ id: painId,
890
+ sourceKind,
891
+ observedAt: createdAt,
892
+ state,
893
+ summary: rawSummary,
894
+ admissionDecision: inferAdmissionDecision(sourceKind),
895
+ linkedTaskId: crossRefTask.taskId,
896
+ linkedTaskStatus: crossRefTask.status,
897
+ linkMode: 'legacy', // Cross-ref is always legacy (timestamp heuristic)
898
+ };
899
+ // PRI-406: Set canonical identity fields
900
+ if (eventCanonicalPainId) {
901
+ record.canonicalPainId = eventCanonicalPainId;
902
+ }
903
+ if (eventRuntimeTaskId) {
904
+ record.runtimeTaskId = eventRuntimeTaskId;
905
+ }
906
+ if (linkedCandidate) {
907
+ record.linkedCandidateId = linkedCandidate.candidateId;
908
+ if (linkedCandidate.title)
909
+ record.candidateTitle = linkedCandidate.title;
910
+ if (linkedCandidate.description)
911
+ record.candidateSummary = linkedCandidate.description;
912
+ if (linkedCandidate.confidence !== undefined)
913
+ record.confidence = linkedCandidate.confidence;
914
+ if (linkedCandidate.recommendationKind)
915
+ record.recommendationKind = linkedCandidate.recommendationKind;
916
+ }
917
+ if (crossRefTask.rootCauseSummary) {
918
+ record.rootCauseSummary = crossRefTask.rootCauseSummary;
919
+ }
920
+ if (crossRefTask.lastError && (state === 'diagnosis-failed' || state === 'diagnosis-retry-wait')) {
921
+ record.failureReason = crossRefTask.lastError;
922
+ }
923
+ if (dreamerInfo) {
924
+ record.internalizationTaskId = dreamerInfo.taskId;
925
+ record.dreamerTaskStatus = dreamerInfo.status;
926
+ }
927
+ if (linkedPrincipleId) {
928
+ record.linkedPrincipleId = linkedPrincipleId;
929
+ }
930
+ record.nextAction = determineNextAction({ state, workspaceDir, recordId: painId, linkedTaskId: crossRefTask.taskId });
931
+ if (crossRefTask.diagnosticJsonDegraded) {
932
+ record.degradedReason = 'Diagnostic data for this record could not be parsed';
933
+ }
934
+ records.push(record);
935
+ }
936
+ // 6. Include tasks that have no matching pain_event (e.g. CLI direct records)
937
+ const coveredPainIds = new Set(records.map(r => r.id));
938
+ // PRI-406: Also consider canonicalPainId as covered to prevent step 6 from
939
+ // creating a duplicate record for the same task that step 5 already linked.
940
+ for (const r of records) {
941
+ if (r.canonicalPainId) {
942
+ coveredPainIds.add(r.canonicalPainId);
943
+ }
944
+ }
945
+ // Only WEAK cross-refs (timestamp-only) block step 6 from creating a
946
+ // task-id record. Strong-lineage cross-refs deferred in step 5b so the
947
+ // canonical task-id form is shown. (PRI-388 reviewer P1.)
948
+ const crossRefTaskIds = new Set();
949
+ for (const entry of crossRefMap.values()) {
950
+ if (strongMatchedTaskIds.has(entry.taskId))
951
+ continue;
952
+ crossRefTaskIds.add(entry.taskId);
953
+ }
954
+ for (const [painId, task] of taskMap.entries()) {
955
+ if (coveredPainIds.has(painId))
956
+ continue;
957
+ if (crossRefTaskIds.has(task.taskId))
958
+ continue;
959
+ const linkedCandidate = candidateMap.get(painId);
960
+ const linkedPrincipleId = painToPrincipleMap.get(painId);
961
+ const ledgerPrincipleStatus = linkedPrincipleId ? principleStatusMap.get(linkedPrincipleId) : undefined;
962
+ const dreamerInfo = linkedCandidate ? dreamerMap.get(linkedCandidate.candidateId) : undefined;
963
+ const state = determineState({
964
+ sourceKind: 'manual',
965
+ taskStatus: task.status,
966
+ hasCandidate: !!linkedCandidate,
967
+ dreamerStatus: dreamerInfo?.status,
968
+ ledgerPrincipleStatus,
969
+ });
970
+ const rawSummary = resolveSummary({
971
+ candidateTitle: linkedCandidate?.title,
972
+ rootCauseSummary: task.rootCauseSummary,
973
+ fallback: `Manual pain signal (task: ${task.taskId})`,
974
+ });
975
+ const record = {
976
+ id: painId,
977
+ sourceKind: 'manual',
978
+ observedAt: task.createdAt,
979
+ state,
980
+ summary: rawSummary,
981
+ admissionDecision: 'store_signal',
982
+ linkedTaskId: task.taskId,
983
+ linkedTaskStatus: task.status,
984
+ // PRI-406: Task-only records from Runtime V2 are canonical-linked
985
+ // (their painId IS the canonical pain identity, e.g. manual_*)
986
+ canonicalPainId: painId.startsWith('pain_') ? undefined : painId,
987
+ linkMode: 'canonical',
988
+ };
989
+ if (linkedCandidate) {
990
+ record.linkedCandidateId = linkedCandidate.candidateId;
991
+ if (linkedCandidate.title)
992
+ record.candidateTitle = linkedCandidate.title;
993
+ if (linkedCandidate.description)
994
+ record.candidateSummary = linkedCandidate.description;
995
+ if (linkedCandidate.confidence !== undefined)
996
+ record.confidence = linkedCandidate.confidence;
997
+ if (linkedCandidate.recommendationKind)
998
+ record.recommendationKind = linkedCandidate.recommendationKind;
999
+ }
1000
+ if (task.rootCauseSummary) {
1001
+ record.rootCauseSummary = task.rootCauseSummary;
1002
+ }
1003
+ if (task.lastError && (state === 'diagnosis-failed' || state === 'diagnosis-retry-wait')) {
1004
+ record.failureReason = task.lastError;
1005
+ }
1006
+ if (dreamerInfo) {
1007
+ record.internalizationTaskId = dreamerInfo.taskId;
1008
+ record.dreamerTaskStatus = dreamerInfo.status;
1009
+ }
1010
+ if (linkedPrincipleId) {
1011
+ record.linkedPrincipleId = linkedPrincipleId;
1012
+ }
1013
+ record.nextAction = determineNextAction({ state, workspaceDir, recordId: painId, linkedTaskId: task.taskId });
1014
+ if (task.diagnosticJsonDegraded) {
1015
+ record.degradedReason = 'Diagnostic data for this record could not be parsed';
1016
+ }
1017
+ records.push(record);
1018
+ }
1019
+ // Sort by observedAt descending
1020
+ records.sort((a, b) => b.observedAt.localeCompare(a.observedAt));
1021
+ // 7. Dedupe: Runtime V2 canonical pain (has linkedTaskId) takes precedence over trajectory pain rows
1022
+ // When the same real pain signal appears as both a trajectory pain (pain_N) and a
1023
+ // Runtime V2 canonical pain (manual_*), show only the canonical record with full chain state.
1024
+ // This prevents misleading "unlinked" and "candidate" cards for the same event.
1025
+ const dedupedRecords = dedupeRecords(records);
1026
+ const response = {
1027
+ records: dedupedRecords,
1028
+ generatedAt,
1029
+ };
1030
+ // Group unmatched pain event warnings (PRI-382)
1031
+ if (degradedReasons.length > 0) {
1032
+ const unmatchedPainIds = [];
1033
+ const otherReasons = [];
1034
+ const unmatchedPainRegex = /^Pain event (.*) could not be linked to a diagnostician task\.$/;
1035
+ for (const reason of degradedReasons) {
1036
+ const match = unmatchedPainRegex.exec(reason);
1037
+ if (match && match[1]) {
1038
+ unmatchedPainIds.push(match[1]);
1039
+ }
1040
+ else {
1041
+ otherReasons.push(reason);
1042
+ }
1043
+ }
1044
+ const finalReasons = [];
1045
+ if (unmatchedPainIds.length > 0) {
1046
+ if (unmatchedPainIds.length === 1) {
1047
+ finalReasons.push(`Pain event ${unmatchedPainIds[0]} could not be linked to a diagnostician task.`);
1048
+ }
1049
+ else {
1050
+ finalReasons.push(`${unmatchedPainIds.length} evidence records could not be linked to diagnostician tasks. Showing per-record details below.`);
1051
+ }
1052
+ }
1053
+ const uniqueOtherReasons = Array.from(new Set(otherReasons));
1054
+ finalReasons.push(...uniqueOtherReasons);
1055
+ response.degradedReason = finalReasons.join('; ');
1056
+ const uniqueNextActions = Array.from(new Set(degradedNextActions));
1057
+ response.nextAction = uniqueNextActions.join(' ');
1058
+ }
1059
+ if (records.length === 0 && trajectoryDbAvailable && stateDbAvailable) {
1060
+ response.note = 'PD has not captured any displayable behavior evidence in this workspace yet.';
1061
+ }
1062
+ return response;
1063
+ }
1064
+ //# sourceMappingURL=evidence-chain-contract.js.map