create-principles-disciple 1.82.0 → 1.83.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 (494) hide show
  1. package/console/dist/server/config/pd-config-store.d.ts +135 -0
  2. package/console/dist/server/config/pd-config-store.js +660 -0
  3. package/console/dist/server/index.js +40 -389
  4. package/console/dist/server/models/ActivationsConsoleModel.d.ts +33 -0
  5. package/console/dist/server/models/ActivationsConsoleModel.js +112 -0
  6. package/console/dist/server/models/ApprovalsConsoleModel.d.ts +5 -0
  7. package/console/dist/server/models/ApprovalsConsoleModel.js +14 -0
  8. package/console/dist/server/models/ApprovalsGroupedConsoleModel.d.ts +25 -0
  9. package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +126 -0
  10. package/console/dist/server/models/ConsoleLifecycleDatasource.d.ts +13 -0
  11. package/console/dist/server/models/ConsoleLifecycleDatasource.js +73 -0
  12. package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +58 -0
  13. package/console/dist/server/models/EvidenceChainConsoleModel.js +493 -0
  14. package/console/dist/server/models/GovernanceConsoleModel.d.ts +74 -0
  15. package/console/dist/server/models/GovernanceConsoleModel.js +246 -0
  16. package/console/dist/server/models/HealthCheckModel.d.ts +0 -4
  17. package/console/dist/server/models/HealthCheckModel.js +49 -80
  18. package/console/dist/server/models/LifecycleConsoleModel.d.ts +19 -0
  19. package/console/dist/server/models/LifecycleConsoleModel.js +55 -0
  20. package/console/dist/server/models/PrincipleClassifier.d.ts +41 -0
  21. package/console/dist/server/models/PrincipleClassifier.js +100 -0
  22. package/console/dist/server/models/PrinciplesConsoleModel.d.ts +12 -1
  23. package/console/dist/server/models/PrinciplesConsoleModel.js +53 -6
  24. package/console/dist/server/models/WorkspaceService.d.ts +2 -1
  25. package/console/dist/server/models/WorkspaceService.js +51 -23
  26. package/console/dist/server/routes/activations.d.ts +3 -0
  27. package/console/dist/server/routes/activations.js +111 -0
  28. package/console/dist/server/routes/approvals-grouped.d.ts +3 -0
  29. package/console/dist/server/routes/approvals-grouped.js +32 -0
  30. package/console/dist/server/routes/approvals.js +28 -4
  31. package/console/dist/server/routes/config.d.ts +27 -0
  32. package/console/dist/server/routes/config.js +213 -0
  33. package/console/dist/server/routes/evidence-chain.d.ts +9 -0
  34. package/console/dist/server/routes/evidence-chain.js +32 -0
  35. package/console/dist/server/routes/governance.d.ts +3 -0
  36. package/console/dist/server/routes/governance.js +32 -0
  37. package/console/dist/server/routes/{evolution.d.ts → lifecycle.d.ts} +2 -2
  38. package/console/dist/server/routes/lifecycle.js +48 -0
  39. package/console/dist/server/routes/principles.js +74 -1
  40. package/console/dist/server/routes/workspaces.js +8 -1
  41. package/console/dist/server/utils/response.d.ts +1 -1
  42. package/console/dist/server/utils/response.js +6 -2
  43. package/console/dist/types.d.ts +1 -0
  44. package/console/dist/ui/App.js +116 -40
  45. package/console/dist/ui/api.d.ts +88 -501
  46. package/console/dist/ui/api.js +139 -162
  47. package/console/dist/ui/components/approval-card.js +1 -1
  48. package/console/dist/ui/components/approval-detail-dialog.js +1 -1
  49. package/console/dist/ui/components/auth/login-form.d.ts +3 -0
  50. package/console/dist/ui/components/auth/login-form.js +36 -0
  51. package/console/dist/ui/components/auth/splash-screen.d.ts +8 -0
  52. package/console/dist/ui/components/auth/splash-screen.js +22 -0
  53. package/console/dist/ui/components/layout/app-sidebar.d.ts +1 -0
  54. package/console/dist/ui/components/layout/app-sidebar.js +56 -0
  55. package/console/dist/ui/components/layout/page-shell.d.ts +11 -0
  56. package/console/dist/ui/components/layout/page-shell.js +10 -0
  57. package/console/dist/ui/components/layout/section-title.d.ts +10 -0
  58. package/console/dist/ui/components/layout/section-title.js +9 -0
  59. package/console/dist/ui/components/theme-provider.d.ts +1 -1
  60. package/console/dist/ui/components/theme-provider.js +13 -8
  61. package/console/dist/ui/components/theme-toggle.js +2 -21
  62. package/console/dist/ui/components/ui/badge.d.ts +1 -1
  63. package/console/dist/ui/components/ui/badge.js +7 -5
  64. package/console/dist/ui/components/ui/button.d.ts +2 -2
  65. package/console/dist/ui/components/ui/button.js +12 -11
  66. package/console/dist/ui/components/ui/card.js +6 -6
  67. package/console/dist/ui/components/ui/sheet.d.ts +1 -1
  68. package/console/dist/ui/i18n/en.json +401 -343
  69. package/console/dist/ui/i18n/index.js +2 -2
  70. package/console/dist/ui/i18n/zh-CN.json +406 -348
  71. package/console/dist/ui/main.d.ts +1 -1
  72. package/console/dist/ui/main.js +1 -0
  73. package/console/dist/ui/pages/activation/ActivationPage.d.ts +1 -0
  74. package/console/dist/ui/pages/activation/ActivationPage.js +150 -0
  75. package/console/dist/ui/pages/activation/ActivationValidators.d.ts +20 -0
  76. package/console/dist/ui/pages/activation/ActivationValidators.js +156 -0
  77. package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +1 -0
  78. package/console/dist/ui/pages/control-center/ControlCenterPage.js +447 -0
  79. package/console/dist/ui/pages/debt/DebtPage.d.ts +1 -0
  80. package/console/dist/ui/pages/debt/DebtPage.js +5 -0
  81. package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +1 -0
  82. package/console/dist/ui/pages/design-system/DesignSystemPage.js +30 -0
  83. package/console/dist/ui/pages/focus/FocusPage.d.ts +1 -0
  84. package/console/dist/ui/pages/focus/FocusPage.js +265 -0
  85. package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +59 -0
  86. package/console/dist/ui/pages/pain/PainEvidenceValidators.js +125 -0
  87. package/console/dist/ui/pages/pain/PainPage.js +136 -0
  88. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +264 -0
  89. package/console/dist/ui/pages/principles/PrinciplesPage.js +244 -0
  90. package/console/dist/ui/pages/report-problem/ReportProblemPage.js +245 -0
  91. package/console/dist/ui/pages/settings/SettingsPage.d.ts +4 -0
  92. package/console/dist/ui/pages/settings/SettingsPage.js +202 -0
  93. package/console/dist/ui/pages/settings/UpdatePage.d.ts +5 -0
  94. package/console/dist/ui/pages/settings/UpdatePage.js +168 -0
  95. package/console/dist/ui/utils/control-center-helpers.d.ts +58 -0
  96. package/console/dist/ui/utils/control-center-helpers.js +152 -0
  97. package/console/dist/ui/utils/validators.d.ts +350 -0
  98. package/console/dist/ui/utils/validators.js +995 -0
  99. package/console/dist/web/assets/app.css +672 -902
  100. package/console/dist/web/assets/app.js +6404 -15347
  101. package/console/dist/web/assets/jetbrains-mono-cyrillic-400-normal-C5JECUCT.woff2 +0 -0
  102. package/console/dist/web/assets/jetbrains-mono-cyrillic-400-normal-FGCZYWMY.woff +0 -0
  103. package/console/dist/web/assets/jetbrains-mono-cyrillic-ext-400-normal-C7IFWGF6.woff2 +0 -0
  104. package/console/dist/web/assets/jetbrains-mono-cyrillic-ext-400-normal-PWXUA557.woff +0 -0
  105. package/console/dist/web/assets/jetbrains-mono-greek-400-normal-JJNQZMPZ.woff +0 -0
  106. package/console/dist/web/assets/jetbrains-mono-greek-400-normal-O7JTTR3P.woff2 +0 -0
  107. package/console/dist/web/assets/jetbrains-mono-latin-400-normal-3OOWLGQ2.woff2 +0 -0
  108. package/console/dist/web/assets/jetbrains-mono-latin-400-normal-WDD34GPP.woff +0 -0
  109. package/console/dist/web/assets/jetbrains-mono-latin-ext-400-normal-55RNMRQS.woff +0 -0
  110. package/console/dist/web/assets/jetbrains-mono-latin-ext-400-normal-JVR3IR4Z.woff2 +0 -0
  111. package/console/dist/web/assets/jetbrains-mono-vietnamese-400-normal-7ULXAK72.woff +0 -0
  112. package/console/dist/web/assets/jetbrains-mono-vietnamese-400-normal-KU7YLUPA.woff2 +0 -0
  113. package/console/package.json +2 -1
  114. package/core/dist/runtime-v2/__tests__/admission-gate.test.js +49 -0
  115. package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
  116. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +16 -1
  117. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  118. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.d.ts +21 -0
  119. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.d.ts.map +1 -0
  120. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +354 -0
  121. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -0
  122. package/core/dist/runtime-v2/__tests__/language-directive.test.d.ts +12 -0
  123. package/core/dist/runtime-v2/__tests__/language-directive.test.d.ts.map +1 -0
  124. package/core/dist/runtime-v2/__tests__/language-directive.test.js +162 -0
  125. package/core/dist/runtime-v2/__tests__/language-directive.test.js.map +1 -0
  126. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +23 -1
  127. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  128. package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +48 -3
  129. package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  130. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +13 -1
  131. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
  132. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.d.ts +12 -0
  133. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.d.ts.map +1 -0
  134. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js +194 -0
  135. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js.map +1 -0
  136. package/core/dist/runtime-v2/__tests__/runtime-config-boundary.test.js +5 -3
  137. package/core/dist/runtime-v2/__tests__/runtime-config-boundary.test.js.map +1 -1
  138. package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +1 -0
  139. package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
  140. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js +54 -0
  141. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
  142. package/core/dist/runtime-v2/activation/__tests__/memory-activation-state-store.test.js +15 -2
  143. package/core/dist/runtime-v2/activation/__tests__/memory-activation-state-store.test.js.map +1 -1
  144. package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +10 -0
  145. package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
  146. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +17 -2
  147. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
  148. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +36 -0
  149. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
  150. package/core/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
  151. package/core/dist/runtime-v2/activation/activation-dispatcher.js +1 -1
  152. package/core/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
  153. package/core/dist/runtime-v2/activation/activation-types.d.ts +10 -0
  154. package/core/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
  155. package/core/dist/runtime-v2/activation/activation-types.js.map +1 -1
  156. package/core/dist/runtime-v2/activation/approval-queue.d.ts +6 -0
  157. package/core/dist/runtime-v2/activation/approval-queue.d.ts.map +1 -1
  158. package/core/dist/runtime-v2/activation/approval-queue.js +3 -0
  159. package/core/dist/runtime-v2/activation/approval-queue.js.map +1 -1
  160. package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts +2 -0
  161. package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts.map +1 -1
  162. package/core/dist/runtime-v2/activation/memory-activation-state-store.js +17 -1
  163. package/core/dist/runtime-v2/activation/memory-activation-state-store.js.map +1 -1
  164. package/core/dist/runtime-v2/activation/memory-approval-store.d.ts +6 -0
  165. package/core/dist/runtime-v2/activation/memory-approval-store.d.ts.map +1 -1
  166. package/core/dist/runtime-v2/activation/memory-approval-store.js +16 -0
  167. package/core/dist/runtime-v2/activation/memory-approval-store.js.map +1 -1
  168. package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js +1 -1
  169. package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
  170. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts +2 -0
  171. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
  172. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +34 -6
  173. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
  174. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts +6 -0
  175. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
  176. package/core/dist/runtime-v2/activation/sqlite-approval-store.js +10 -0
  177. package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
  178. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js +51 -1
  179. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js.map +1 -1
  180. package/core/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter.test.js +145 -0
  181. package/core/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter.test.js.map +1 -1
  182. package/core/dist/runtime-v2/adapter/json-extractor.d.ts +13 -0
  183. package/core/dist/runtime-v2/adapter/json-extractor.d.ts.map +1 -1
  184. package/core/dist/runtime-v2/adapter/json-extractor.js +103 -0
  185. package/core/dist/runtime-v2/adapter/json-extractor.js.map +1 -1
  186. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts +4 -2
  187. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts.map +1 -1
  188. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js +57 -5
  189. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js.map +1 -1
  190. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.d.ts +18 -0
  191. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.d.ts.map +1 -0
  192. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +633 -0
  193. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -0
  194. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +92 -0
  195. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
  196. package/core/dist/runtime-v2/config/index.d.ts +3 -1
  197. package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
  198. package/core/dist/runtime-v2/config/index.js +1 -0
  199. package/core/dist/runtime-v2/config/index.js.map +1 -1
  200. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts +93 -0
  201. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -0
  202. package/core/dist/runtime-v2/config/pd-config-agent-binding.js +184 -0
  203. package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -0
  204. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  205. package/core/dist/runtime-v2/config/pd-config-defaults.js +2 -0
  206. package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  207. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  208. package/core/dist/runtime-v2/config/pd-config-effective.js +3 -0
  209. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  210. package/core/dist/runtime-v2/config/pd-config-types.d.ts +8 -0
  211. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  212. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  213. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +13 -0
  214. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +1 -0
  215. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +97 -0
  216. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +1 -0
  217. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +3 -2
  218. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  219. package/core/dist/runtime-v2/diagnostician-prompt-builder.js +6 -4
  220. package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  221. package/core/dist/runtime-v2/evidence-sanitizer.d.ts +57 -0
  222. package/core/dist/runtime-v2/evidence-sanitizer.d.ts.map +1 -0
  223. package/core/dist/runtime-v2/evidence-sanitizer.js +213 -0
  224. package/core/dist/runtime-v2/evidence-sanitizer.js.map +1 -0
  225. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.d.ts +7 -0
  226. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.d.ts.map +1 -0
  227. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.js +170 -0
  228. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.js.map +1 -0
  229. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.d.ts +18 -0
  230. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.d.ts.map +1 -0
  231. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.js +277 -0
  232. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.js.map +1 -0
  233. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.d.ts +13 -0
  234. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.d.ts.map +1 -0
  235. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js +264 -0
  236. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js.map +1 -0
  237. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.d.ts +16 -0
  238. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.d.ts.map +1 -0
  239. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.js +316 -0
  240. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.js.map +1 -0
  241. package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts +126 -0
  242. package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts.map +1 -0
  243. package/core/dist/runtime-v2/evidence-triage/admission-events.js +159 -0
  244. package/core/dist/runtime-v2/evidence-triage/admission-events.js.map +1 -0
  245. package/core/dist/runtime-v2/evidence-triage/index.d.ts +16 -0
  246. package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -0
  247. package/core/dist/runtime-v2/evidence-triage/index.js +13 -0
  248. package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -0
  249. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +48 -0
  250. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts.map +1 -0
  251. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +131 -0
  252. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js.map +1 -0
  253. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts +32 -0
  254. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts.map +1 -0
  255. package/core/dist/runtime-v2/evidence-triage/triage-policy.js +95 -0
  256. package/core/dist/runtime-v2/evidence-triage/triage-policy.js.map +1 -0
  257. package/core/dist/runtime-v2/evidence-triage/trigger-controller.d.ts +116 -0
  258. package/core/dist/runtime-v2/evidence-triage/trigger-controller.d.ts.map +1 -0
  259. package/core/dist/runtime-v2/evidence-triage/trigger-controller.js +218 -0
  260. package/core/dist/runtime-v2/evidence-triage/trigger-controller.js.map +1 -0
  261. package/core/dist/runtime-v2/evidence-triage/types.d.ts +65 -0
  262. package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -0
  263. package/core/dist/runtime-v2/evidence-triage/types.js +38 -0
  264. package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -0
  265. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +10 -0
  266. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  267. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  268. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +1 -0
  269. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  270. package/core/dist/runtime-v2/index.d.ts +8 -1
  271. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  272. package/core/dist/runtime-v2/index.js +7 -1
  273. package/core/dist/runtime-v2/index.js.map +1 -1
  274. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.d.ts +12 -0
  275. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.d.ts.map +1 -0
  276. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js +83 -0
  277. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js.map +1 -0
  278. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +10 -0
  279. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
  280. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js +13 -1
  281. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
  282. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts +3 -0
  283. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  284. package/core/dist/runtime-v2/internalization/scribe-runner.js +2 -0
  285. package/core/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  286. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js +1 -1
  287. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js.map +1 -1
  288. package/core/dist/runtime-v2/language-directive.d.ts +80 -0
  289. package/core/dist/runtime-v2/language-directive.d.ts.map +1 -0
  290. package/core/dist/runtime-v2/language-directive.js +108 -0
  291. package/core/dist/runtime-v2/language-directive.js.map +1 -0
  292. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  293. package/core/dist/runtime-v2/pain-signal-observability.js +24 -11
  294. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  295. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +16 -0
  296. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  297. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +97 -6
  298. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  299. package/core/dist/runtime-v2/pain-to-principle-service.d.ts +7 -0
  300. package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  301. package/core/dist/runtime-v2/pain-to-principle-service.js +2 -0
  302. package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  303. package/core/dist/runtime-v2/proven-channel-baseline.d.ts.map +1 -1
  304. package/core/dist/runtime-v2/proven-channel-baseline.js +14 -0
  305. package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
  306. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +40 -0
  307. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +1 -1
  308. package/core/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  309. package/core/dist/runtime-v2/runner/base-peer-runner.js +1 -0
  310. package/core/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  311. package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +10 -0
  312. package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +1 -1
  313. package/core/dist/runtime-v2/runner/diagnostician-runner-options.js +1 -0
  314. package/core/dist/runtime-v2/runner/diagnostician-runner-options.js.map +1 -1
  315. package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +1 -1
  316. package/core/dist/runtime-v2/runner/diagnostician-runner.js +28 -4
  317. package/core/dist/runtime-v2/runner/diagnostician-runner.js.map +1 -1
  318. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts +9 -0
  319. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
  320. package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
  321. package/core/dist/runtime-v2/store/runtime-state-manager.integration.test.js +34 -1
  322. package/core/dist/runtime-v2/store/runtime-state-manager.integration.test.js.map +1 -1
  323. package/core/dist/runtime-v2/store/runtime-state-manager.js +1 -0
  324. package/core/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
  325. package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  326. package/core/dist/runtime-v2/store/sqlite-connection.js +9 -1
  327. package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  328. package/core/dist/runtime-v2/store/task/sqlite-task-store.js +1 -1
  329. package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
  330. package/core/dist/runtime-v2/task-status.d.ts +4 -4
  331. package/core/dist/runtime-v2/task-status.d.ts.map +1 -1
  332. package/core/dist/runtime-v2/task-status.js +2 -2
  333. package/core/dist/runtime-v2/task-status.js.map +1 -1
  334. package/core/package.json +1 -1
  335. package/package.json +2 -2
  336. package/pd-cli/dist/commands/console.d.ts +2 -0
  337. package/pd-cli/dist/commands/console.d.ts.map +1 -1
  338. package/pd-cli/dist/commands/console.js +6 -1
  339. package/pd-cli/dist/commands/console.js.map +1 -1
  340. package/pd-cli/dist/commands/diagnose.d.ts.map +1 -1
  341. package/pd-cli/dist/commands/diagnose.js +18 -1
  342. package/pd-cli/dist/commands/diagnose.js.map +1 -1
  343. package/pd-cli/dist/commands/pain-evidence.d.ts +41 -0
  344. package/pd-cli/dist/commands/pain-evidence.d.ts.map +1 -0
  345. package/pd-cli/dist/commands/pain-evidence.js +177 -0
  346. package/pd-cli/dist/commands/pain-evidence.js.map +1 -0
  347. package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
  348. package/pd-cli/dist/commands/pain-record.js +24 -9
  349. package/pd-cli/dist/commands/pain-record.js.map +1 -1
  350. package/pd-cli/dist/commands/pain-retry.d.ts +19 -0
  351. package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -0
  352. package/pd-cli/dist/commands/pain-retry.js +485 -0
  353. package/pd-cli/dist/commands/pain-retry.js.map +1 -0
  354. package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
  355. package/pd-cli/dist/commands/runtime-internalization-run-once.js +59 -9
  356. package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
  357. package/pd-cli/dist/commands/runtime-uat.d.ts +1 -0
  358. package/pd-cli/dist/commands/runtime-uat.d.ts.map +1 -1
  359. package/pd-cli/dist/commands/runtime-uat.guard.test.d.ts +2 -0
  360. package/pd-cli/dist/commands/runtime-uat.guard.test.d.ts.map +1 -0
  361. package/pd-cli/dist/commands/runtime-uat.guard.test.js +155 -0
  362. package/pd-cli/dist/commands/runtime-uat.guard.test.js.map +1 -0
  363. package/pd-cli/dist/commands/runtime-uat.js +29 -3
  364. package/pd-cli/dist/commands/runtime-uat.js.map +1 -1
  365. package/pd-cli/dist/config-reader.d.ts +25 -0
  366. package/pd-cli/dist/config-reader.d.ts.map +1 -0
  367. package/pd-cli/dist/config-reader.js +109 -0
  368. package/pd-cli/dist/config-reader.js.map +1 -0
  369. package/pd-cli/dist/index.js +40 -5
  370. package/pd-cli/dist/index.js.map +1 -1
  371. package/pd-cli/dist/services/console-launcher.d.ts.map +1 -1
  372. package/pd-cli/dist/services/console-launcher.js +29 -15
  373. package/pd-cli/dist/services/console-launcher.js.map +1 -1
  374. package/pd-cli/dist/services/demo-story-a-runner.d.ts.map +1 -1
  375. package/pd-cli/dist/services/demo-story-a-runner.js +1 -0
  376. package/pd-cli/dist/services/demo-story-a-runner.js.map +1 -1
  377. package/pd-cli/dist/utils/production-workspace-guard.d.ts +77 -0
  378. package/pd-cli/dist/utils/production-workspace-guard.d.ts.map +1 -0
  379. package/pd-cli/dist/utils/production-workspace-guard.js +170 -0
  380. package/pd-cli/dist/utils/production-workspace-guard.js.map +1 -0
  381. package/pd-cli/dist/utils/production-workspace-guard.test.d.ts +2 -0
  382. package/pd-cli/dist/utils/production-workspace-guard.test.d.ts.map +1 -0
  383. package/pd-cli/dist/utils/production-workspace-guard.test.js +95 -0
  384. package/pd-cli/dist/utils/production-workspace-guard.test.js.map +1 -0
  385. package/pd-cli/package.json +1 -1
  386. package/plugin/dist/commands/pain.js +27 -2
  387. package/plugin/dist/core/pain-diagnostic-gate.d.ts +6 -0
  388. package/plugin/dist/core/pain-diagnostic-gate.js +9 -0
  389. package/plugin/dist/hooks/after-tool-call-helpers.d.ts +90 -0
  390. package/plugin/dist/hooks/after-tool-call-helpers.js +486 -0
  391. package/plugin/dist/hooks/after-tool-call-types.d.ts +92 -0
  392. package/plugin/dist/hooks/after-tool-call-types.js +13 -0
  393. package/plugin/dist/hooks/gate-block-helper.js +73 -29
  394. package/plugin/dist/hooks/llm.js +49 -29
  395. package/plugin/dist/hooks/message-sanitize.d.ts +21 -0
  396. package/plugin/dist/hooks/message-sanitize.js +30 -0
  397. package/plugin/dist/hooks/pain.d.ts +26 -3
  398. package/plugin/dist/hooks/pain.js +165 -425
  399. package/plugin/dist/hooks/prompt.js +3 -2
  400. package/plugin/dist/hooks/trajectory-evidence.d.ts +11 -0
  401. package/plugin/dist/hooks/trajectory-evidence.js +65 -0
  402. package/plugin/dist/hooks/triage-adapter.d.ts +82 -0
  403. package/plugin/dist/hooks/triage-adapter.js +121 -0
  404. package/console/dist/server/models/EventLogReadModel.d.ts +0 -33
  405. package/console/dist/server/models/EventLogReadModel.js +0 -218
  406. package/console/dist/server/models/EvolutionConsoleModel.d.ts +0 -79
  407. package/console/dist/server/models/EvolutionConsoleModel.js +0 -179
  408. package/console/dist/server/models/FeedbackConsoleModel.d.ts +0 -38
  409. package/console/dist/server/models/FeedbackConsoleModel.js +0 -129
  410. package/console/dist/server/models/GateConsoleModel.d.ts +0 -50
  411. package/console/dist/server/models/GateConsoleModel.js +0 -151
  412. package/console/dist/server/models/OverviewConsoleModel.d.ts +0 -22
  413. package/console/dist/server/models/OverviewConsoleModel.js +0 -202
  414. package/console/dist/server/models/PipelineStatsModel.d.ts +0 -35
  415. package/console/dist/server/models/PipelineStatsModel.js +0 -129
  416. package/console/dist/server/models/SampleConsoleModel.d.ts +0 -21
  417. package/console/dist/server/models/SampleConsoleModel.js +0 -188
  418. package/console/dist/server/models/ThinkingModelsConsoleModel.d.ts +0 -22
  419. package/console/dist/server/models/ThinkingModelsConsoleModel.js +0 -75
  420. package/console/dist/server/routes/agents.d.ts +0 -3
  421. package/console/dist/server/routes/agents.js +0 -442
  422. package/console/dist/server/routes/central.d.ts +0 -5
  423. package/console/dist/server/routes/central.js +0 -31
  424. package/console/dist/server/routes/events.d.ts +0 -10
  425. package/console/dist/server/routes/events.js +0 -99
  426. package/console/dist/server/routes/evolution.js +0 -73
  427. package/console/dist/server/routes/feedback.d.ts +0 -3
  428. package/console/dist/server/routes/feedback.js +0 -65
  429. package/console/dist/server/routes/gates.d.ts +0 -3
  430. package/console/dist/server/routes/gates.js +0 -52
  431. package/console/dist/server/routes/overview.d.ts +0 -3
  432. package/console/dist/server/routes/overview.js +0 -49
  433. package/console/dist/server/routes/pipeline.d.ts +0 -3
  434. package/console/dist/server/routes/pipeline.js +0 -33
  435. package/console/dist/server/routes/samples.d.ts +0 -3
  436. package/console/dist/server/routes/samples.js +0 -101
  437. package/console/dist/server/routes/thinking-models.d.ts +0 -3
  438. package/console/dist/server/routes/thinking-models.js +0 -54
  439. package/console/dist/ui/components/app-sidebar.d.ts +0 -7
  440. package/console/dist/ui/components/app-sidebar.js +0 -75
  441. package/console/dist/ui/components/compare-view.d.ts +0 -7
  442. package/console/dist/ui/components/compare-view.js +0 -32
  443. package/console/dist/ui/components/data-freshness-indicator.d.ts +0 -10
  444. package/console/dist/ui/components/data-freshness-indicator.js +0 -63
  445. package/console/dist/ui/components/health-diagnostic-card.d.ts +0 -15
  446. package/console/dist/ui/components/health-diagnostic-card.js +0 -42
  447. package/console/dist/ui/components/page-header.d.ts +0 -10
  448. package/console/dist/ui/components/page-header.js +0 -37
  449. package/console/dist/ui/hooks/useAutoRefresh.d.ts +0 -13
  450. package/console/dist/ui/hooks/useAutoRefresh.js +0 -64
  451. package/console/dist/ui/hooks/useBookmarks.d.ts +0 -6
  452. package/console/dist/ui/hooks/useBookmarks.js +0 -43
  453. package/console/dist/ui/hooks/useDebounce.d.ts +0 -2
  454. package/console/dist/ui/hooks/useDebounce.js +0 -32
  455. package/console/dist/ui/hooks/useKeyboardNavigation.d.ts +0 -14
  456. package/console/dist/ui/hooks/useKeyboardNavigation.js +0 -75
  457. package/console/dist/ui/pages/AgentsPage.d.ts +0 -1
  458. package/console/dist/ui/pages/AgentsPage.js +0 -167
  459. package/console/dist/ui/pages/ApprovalsPage.d.ts +0 -1
  460. package/console/dist/ui/pages/ApprovalsPage.js +0 -123
  461. package/console/dist/ui/pages/CentralPage.d.ts +0 -1
  462. package/console/dist/ui/pages/CentralPage.js +0 -57
  463. package/console/dist/ui/pages/DataFlowPage.d.ts +0 -1
  464. package/console/dist/ui/pages/DataFlowPage.js +0 -158
  465. package/console/dist/ui/pages/EventLogPage.d.ts +0 -1
  466. package/console/dist/ui/pages/EventLogPage.js +0 -176
  467. package/console/dist/ui/pages/EvolutionPage.d.ts +0 -1
  468. package/console/dist/ui/pages/EvolutionPage.js +0 -118
  469. package/console/dist/ui/pages/FeedbackPage.d.ts +0 -1
  470. package/console/dist/ui/pages/FeedbackPage.js +0 -46
  471. package/console/dist/ui/pages/GatesPage.d.ts +0 -1
  472. package/console/dist/ui/pages/GatesPage.js +0 -31
  473. package/console/dist/ui/pages/LoginPage.d.ts +0 -5
  474. package/console/dist/ui/pages/LoginPage.js +0 -39
  475. package/console/dist/ui/pages/OverviewPage.d.ts +0 -1
  476. package/console/dist/ui/pages/OverviewPage.js +0 -50
  477. package/console/dist/ui/pages/PainPage.js +0 -50
  478. package/console/dist/ui/pages/PrincipleDetailPage.js +0 -145
  479. package/console/dist/ui/pages/PrinciplesPage.js +0 -322
  480. package/console/dist/ui/pages/ReportProblemPage.js +0 -186
  481. package/console/dist/ui/pages/SamplesPage.d.ts +0 -1
  482. package/console/dist/ui/pages/SamplesPage.js +0 -105
  483. package/console/dist/ui/pages/SettingsPage.d.ts +0 -1
  484. package/console/dist/ui/pages/SettingsPage.js +0 -86
  485. package/console/dist/ui/pages/TasksPage.d.ts +0 -1
  486. package/console/dist/ui/pages/TasksPage.js +0 -373
  487. package/console/dist/ui/pages/ThinkingModelsPage.d.ts +0 -1
  488. package/console/dist/ui/pages/ThinkingModelsPage.js +0 -32
  489. package/console/dist/ui/pages/UpdatePage.d.ts +0 -1
  490. package/console/dist/ui/pages/UpdatePage.js +0 -142
  491. /package/console/dist/ui/pages/{PainPage.d.ts → pain/PainPage.d.ts} +0 -0
  492. /package/console/dist/ui/pages/{PrincipleDetailPage.d.ts → principles/PrincipleDetailPage.d.ts} +0 -0
  493. /package/console/dist/ui/pages/{PrinciplesPage.d.ts → principles/PrinciplesPage.d.ts} +0 -0
  494. /package/console/dist/ui/pages/{ReportProblemPage.d.ts → report-problem/ReportProblemPage.d.ts} +0 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Admission Events — PEAT-B2
3
+ *
4
+ * Structured event types for the pain evidence admission pipeline.
5
+ * These events make admission decisions observable without exposing raw data.
6
+ *
7
+ * Privacy boundary: events MUST NOT contain raw prompt, raw chat, raw trajectory,
8
+ * full local paths, file contents, env vars, tokens, or API keys.
9
+ *
10
+ * ERR checklist:
11
+ * - ERR-002: Every event has reason + nextAction.
12
+ * - ERR-009: Malformed input events include validation error details.
13
+ */
14
+ import type { TriggerOutcome, TriggerDecision } from './trigger-controller.js';
15
+ import type { SourceKind, TriageDecision } from './types.js';
16
+ /**
17
+ * Base fields shared by all admission events.
18
+ */
19
+ interface AdmissionEventBase {
20
+ /** Unique event ID */
21
+ readonly eventId: string;
22
+ /** ISO timestamp */
23
+ readonly timestamp: string;
24
+ /** Source kind that was evaluated */
25
+ readonly sourceKind: SourceKind;
26
+ /** Workspace reference (directory name only, no full path) */
27
+ readonly workspaceRef: string;
28
+ /** Session ID (may be truncated for privacy) */
29
+ readonly sessionId?: string;
30
+ }
31
+ /**
32
+ * Emitted when the admission controller makes a decision.
33
+ * This is the primary observability event for the admission pipeline.
34
+ */
35
+ export interface AdmissionDecisionEvent extends AdmissionEventBase {
36
+ readonly eventType: 'admission_decision';
37
+ readonly triageDecision: TriageDecision;
38
+ readonly triggerOutcome: TriggerOutcome;
39
+ readonly reason: string;
40
+ readonly nextAction: string;
41
+ readonly shouldCreateDiagnosticTask: boolean;
42
+ }
43
+ /**
44
+ * Emitted when a diagnostic task is created as a result of admission.
45
+ */
46
+ export interface DiagnosisTaskCreatedEvent extends AdmissionEventBase {
47
+ readonly eventType: 'diagnosis_task_created';
48
+ readonly painId: string;
49
+ readonly taskId: string;
50
+ readonly triggerOutcome: TriggerOutcome;
51
+ }
52
+ /**
53
+ * Emitted when evidence is recorded without triggering diagnosis.
54
+ */
55
+ export interface EvidenceOnlyRecordedEvent extends AdmissionEventBase {
56
+ readonly eventType: 'evidence_only_recorded';
57
+ readonly triageDecision: TriageDecision;
58
+ readonly reason: string;
59
+ readonly nextAction: string;
60
+ }
61
+ /**
62
+ * Emitted when a signal is skipped or refused.
63
+ */
64
+ export interface SkippedRefusedEvent extends AdmissionEventBase {
65
+ readonly eventType: 'skipped_refused';
66
+ readonly triggerOutcome: TriggerOutcome;
67
+ readonly reason: string;
68
+ readonly nextAction: string;
69
+ }
70
+ /**
71
+ * Union of all admission event types.
72
+ */
73
+ export type AdmissionEvent = AdmissionDecisionEvent | DiagnosisTaskCreatedEvent | EvidenceOnlyRecordedEvent | SkippedRefusedEvent;
74
+ /**
75
+ * Create an AdmissionDecisionEvent from a TriggerDecision.
76
+ *
77
+ * This is the canonical way to produce an admission event.
78
+ * The event contains no raw sensitive data — only structured metadata.
79
+ */
80
+ export declare function createAdmissionDecisionEvent(decision: TriggerDecision, options: {
81
+ workspaceRef: string;
82
+ sessionId?: string;
83
+ }): AdmissionDecisionEvent;
84
+ /**
85
+ * Create a DiagnosisTaskCreatedEvent.
86
+ */
87
+ export declare function createDiagnosisTaskCreatedEvent(opts: {
88
+ painId: string;
89
+ taskId: string;
90
+ decision: TriggerDecision;
91
+ workspaceRef: string;
92
+ sessionId?: string;
93
+ }): DiagnosisTaskCreatedEvent;
94
+ /**
95
+ * Create an EvidenceOnlyRecordedEvent.
96
+ */
97
+ export declare function createEvidenceOnlyRecordedEvent(decision: TriggerDecision, options: {
98
+ workspaceRef: string;
99
+ sessionId?: string;
100
+ }): EvidenceOnlyRecordedEvent;
101
+ /**
102
+ * Create a SkippedRefusedEvent.
103
+ */
104
+ export declare function createSkippedRefusedEvent(decision: TriggerDecision, options: {
105
+ workspaceRef: string;
106
+ sessionId?: string;
107
+ }): SkippedRefusedEvent;
108
+ /**
109
+ * Serialize an admission event to a JSONL-safe string.
110
+ *
111
+ * Privacy boundary: only structured fields are included.
112
+ * No raw prompt/chat/trajectory/file content/token/path secrets.
113
+ */
114
+ export declare function serializeAdmissionEvent(event: AdmissionEvent): string;
115
+ /**
116
+ * Validate that an admission event does not contain raw sensitive data.
117
+ *
118
+ * Returns true if the event passes privacy checks.
119
+ * This is a defense-in-depth check for tests and auditing.
120
+ */
121
+ export declare function validateEventPrivacy(event: AdmissionEvent): {
122
+ valid: boolean;
123
+ violations: string[];
124
+ };
125
+ export {};
126
+ //# sourceMappingURL=admission-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission-events.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/admission-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Admission Events — PEAT-B2
3
+ *
4
+ * Structured event types for the pain evidence admission pipeline.
5
+ * These events make admission decisions observable without exposing raw data.
6
+ *
7
+ * Privacy boundary: events MUST NOT contain raw prompt, raw chat, raw trajectory,
8
+ * full local paths, file contents, env vars, tokens, or API keys.
9
+ *
10
+ * ERR checklist:
11
+ * - ERR-002: Every event has reason + nextAction.
12
+ * - ERR-009: Malformed input events include validation error details.
13
+ */
14
+ // ── Event Factory Functions ─────────────────────────────────────────────────
15
+ let eventCounter = 0;
16
+ function nextEventId() {
17
+ return `adm_${Date.now()}_${++eventCounter}`;
18
+ }
19
+ /**
20
+ * Create an AdmissionDecisionEvent from a TriggerDecision.
21
+ *
22
+ * This is the canonical way to produce an admission event.
23
+ * The event contains no raw sensitive data — only structured metadata.
24
+ */
25
+ export function createAdmissionDecisionEvent(decision, options) {
26
+ return {
27
+ eventType: 'admission_decision',
28
+ eventId: nextEventId(),
29
+ timestamp: decision.decidedAt,
30
+ sourceKind: decision.sourceKind,
31
+ workspaceRef: options.workspaceRef,
32
+ sessionId: options.sessionId,
33
+ triageDecision: decision.triageDecision,
34
+ triggerOutcome: decision.outcome,
35
+ reason: decision.reason,
36
+ nextAction: decision.nextAction,
37
+ shouldCreateDiagnosticTask: decision.shouldCreateDiagnosticTask,
38
+ };
39
+ }
40
+ /**
41
+ * Create a DiagnosisTaskCreatedEvent.
42
+ */
43
+ export function createDiagnosisTaskCreatedEvent(opts) {
44
+ return {
45
+ eventType: 'diagnosis_task_created',
46
+ eventId: nextEventId(),
47
+ timestamp: new Date().toISOString(),
48
+ sourceKind: opts.decision.sourceKind,
49
+ workspaceRef: opts.workspaceRef,
50
+ sessionId: opts.sessionId,
51
+ painId: opts.painId,
52
+ taskId: opts.taskId,
53
+ triggerOutcome: opts.decision.outcome,
54
+ };
55
+ }
56
+ /**
57
+ * Create an EvidenceOnlyRecordedEvent.
58
+ */
59
+ export function createEvidenceOnlyRecordedEvent(decision, options) {
60
+ return {
61
+ eventType: 'evidence_only_recorded',
62
+ eventId: nextEventId(),
63
+ timestamp: decision.decidedAt,
64
+ sourceKind: decision.sourceKind,
65
+ workspaceRef: options.workspaceRef,
66
+ sessionId: options.sessionId,
67
+ triageDecision: decision.triageDecision,
68
+ reason: decision.reason,
69
+ nextAction: decision.nextAction,
70
+ };
71
+ }
72
+ /**
73
+ * Create a SkippedRefusedEvent.
74
+ */
75
+ export function createSkippedRefusedEvent(decision, options) {
76
+ return {
77
+ eventType: 'skipped_refused',
78
+ eventId: nextEventId(),
79
+ timestamp: decision.decidedAt,
80
+ sourceKind: decision.sourceKind,
81
+ workspaceRef: options.workspaceRef,
82
+ sessionId: options.sessionId,
83
+ triggerOutcome: decision.outcome,
84
+ reason: decision.reason,
85
+ nextAction: decision.nextAction,
86
+ };
87
+ }
88
+ // ── Event Serialization ─────────────────────────────────────────────────────
89
+ /**
90
+ * Serialize an admission event to a JSONL-safe string.
91
+ *
92
+ * Privacy boundary: only structured fields are included.
93
+ * No raw prompt/chat/trajectory/file content/token/path secrets.
94
+ */
95
+ export function serializeAdmissionEvent(event) {
96
+ // Explicit field selection prevents accidental raw data leakage
97
+ const safe = {
98
+ eventType: event.eventType,
99
+ eventId: event.eventId,
100
+ timestamp: event.timestamp,
101
+ sourceKind: event.sourceKind,
102
+ workspaceRef: event.workspaceRef,
103
+ sessionId: event.sessionId,
104
+ };
105
+ if (event.eventType === 'admission_decision') {
106
+ safe.triageDecision = event.triageDecision;
107
+ safe.triggerOutcome = event.triggerOutcome;
108
+ safe.reason = event.reason;
109
+ safe.nextAction = event.nextAction;
110
+ safe.shouldCreateDiagnosticTask = event.shouldCreateDiagnosticTask;
111
+ }
112
+ else if (event.eventType === 'diagnosis_task_created') {
113
+ safe.painId = event.painId;
114
+ safe.taskId = event.taskId;
115
+ safe.triggerOutcome = event.triggerOutcome;
116
+ }
117
+ else if (event.eventType === 'evidence_only_recorded') {
118
+ safe.triageDecision = event.triageDecision;
119
+ safe.reason = event.reason;
120
+ safe.nextAction = event.nextAction;
121
+ }
122
+ else if (event.eventType === 'skipped_refused') {
123
+ safe.triggerOutcome = event.triggerOutcome;
124
+ safe.reason = event.reason;
125
+ safe.nextAction = event.nextAction;
126
+ }
127
+ return JSON.stringify(safe);
128
+ }
129
+ // ── Validation ──────────────────────────────────────────────────────────────
130
+ /**
131
+ * Validate that an admission event does not contain raw sensitive data.
132
+ *
133
+ * Returns true if the event passes privacy checks.
134
+ * This is a defense-in-depth check for tests and auditing.
135
+ */
136
+ export function validateEventPrivacy(event) {
137
+ const violations = [];
138
+ const serialized = JSON.stringify(event);
139
+ // Check for common sensitive patterns
140
+ if (/sk-[a-zA-Z0-9]{20,}/.test(serialized)) {
141
+ violations.push('potential_api_key_detected');
142
+ }
143
+ // Check for absolute paths in JSON-serialized form.
144
+ // JSON.stringify('C:\\Users\\admin') produces "C:\\\\Users\\\\admin" in the JSON string.
145
+ // At runtime, serialized.includes('Users\\') checks for Users followed by one backslash.
146
+ const hasWindowsPath = serialized.includes('Users\\') ||
147
+ /[A-Z]:\\[Uu]sers/.test(serialized);
148
+ if (hasWindowsPath) {
149
+ violations.push('absolute_windows_path_detected');
150
+ }
151
+ if (/\/home\/[a-z]/.test(serialized)) {
152
+ violations.push('absolute_unix_path_detected');
153
+ }
154
+ if (/"prompt"\s*:\s*"/.test(serialized) && serialized.length > 2000) {
155
+ violations.push('potential_raw_prompt_in_event');
156
+ }
157
+ return { valid: violations.length === 0, violations };
158
+ }
159
+ //# sourceMappingURL=admission-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission-events.js","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/admission-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Evidence Triage — PEAT-B1 → B2
3
+ *
4
+ * Public API for pre-diagnosis evidence triage and trigger control.
5
+ * Pure types and policy — no I/O, no plugin imports.
6
+ */
7
+ export type { SourceKind, TriageDecision, TriageResult, TriageInput, } from './types.js';
8
+ export { isSourceKind } from './types.js';
9
+ export type { SourceDescriptor } from './source-descriptors.js';
10
+ export { SOURCE_DESCRIPTORS, getSourceDescriptor } from './source-descriptors.js';
11
+ export { evaluateTriage } from './triage-policy.js';
12
+ export type { TriggerOutcome, TriggerDecision, TriggerControllerInput, } from './trigger-controller.js';
13
+ export { evaluateTriggerController, shouldCreateTask, isAdmittedOutcome, isSkippedOutcome, } from './trigger-controller.js';
14
+ export type { AdmissionDecisionEvent, DiagnosisTaskCreatedEvent, EvidenceOnlyRecordedEvent, SkippedRefusedEvent, AdmissionEvent, } from './admission-events.js';
15
+ export { createAdmissionDecisionEvent, createDiagnosisTaskCreatedEvent, createEvidenceOnlyRecordedEvent, createSkippedRefusedEvent, serializeAdmissionEvent, validateEventPrivacy, } from './admission-events.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Evidence Triage — PEAT-B1 → B2
3
+ *
4
+ * Public API for pre-diagnosis evidence triage and trigger control.
5
+ * Pure types and policy — no I/O, no plugin imports.
6
+ */
7
+ export { isSourceKind } from './types.js';
8
+ export { SOURCE_DESCRIPTORS, getSourceDescriptor } from './source-descriptors.js';
9
+ // Triage policy
10
+ export { evaluateTriage } from './triage-policy.js';
11
+ export { evaluateTriggerController, shouldCreateTask, isAdmittedOutcome, isSkippedOutcome, } from './trigger-controller.js';
12
+ export { createAdmissionDecisionEvent, createDiagnosisTaskCreatedEvent, createEvidenceOnlyRecordedEvent, createSkippedRefusedEvent, serializeAdmissionEvent, validateEventPrivacy, } from './admission-events.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAElF,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Source Descriptors — PEAT-B1
3
+ *
4
+ * Declarative policy mapping from SourceKind to default TriageDecision.
5
+ * This is pure data — no I/O, no plugin imports.
6
+ *
7
+ * Each descriptor defines:
8
+ * - kind: the SourceKind it describes
9
+ * - defaultDecision: the default triage decision
10
+ * - reason: why this default was chosen
11
+ * - nextAction: what should happen when this decision is applied
12
+ * - canUpgrade: whether the plugin adapter may upgrade the decision
13
+ * (e.g., rulehost_block can be upgraded to 'admit' for unsafe actions)
14
+ *
15
+ * ERR checklist:
16
+ * - ERR-002: Every descriptor carries reason + nextAction.
17
+ * - ERR-005: Descriptors are data, not assumptions about callers.
18
+ */
19
+ import type { SourceKind, TriageDecision } from './types.js';
20
+ export interface SourceDescriptor {
21
+ readonly kind: SourceKind;
22
+ readonly defaultDecision: TriageDecision;
23
+ readonly reason: string;
24
+ readonly nextAction: string;
25
+ /**
26
+ * Whether the plugin adapter may upgrade this decision.
27
+ * When true, the adapter can override defaultDecision based on context
28
+ * (e.g., isUnsafeHighConfidence for rulehost_block).
29
+ */
30
+ readonly canUpgrade: boolean;
31
+ }
32
+ /**
33
+ * Source kind descriptors. Order does not matter — lookup is by kind.
34
+ *
35
+ * Design rationale per PRODUCT_IDENTITY.md and ADR-0014:
36
+ * - PD owns owner-relevant behavior evidence, not tool repair.
37
+ * - Manual/owner-reported pain has highest confidence.
38
+ * - Tool failures are infrastructure noise (OpenClaw's job, not PD's).
39
+ * - Empathy-inferred frustration must never silently create diagnosis.
40
+ * - GFI alone cannot trigger diagnosis (it's a session health metric).
41
+ */
42
+ export declare const SOURCE_DESCRIPTORS: ReadonlyMap<SourceKind, SourceDescriptor>;
43
+ /**
44
+ * Get the source descriptor for a given kind.
45
+ * Returns undefined if the kind is not registered (caller should treat as 'unknown').
46
+ */
47
+ export declare function getSourceDescriptor(kind: SourceKind): SourceDescriptor | undefined;
48
+ //# sourceMappingURL=source-descriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-descriptors.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/source-descriptors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAID;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,UAAU,EAAE,gBAAgB,CA4FvE,CAAC;AAIH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAElF"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Source Descriptors — PEAT-B1
3
+ *
4
+ * Declarative policy mapping from SourceKind to default TriageDecision.
5
+ * This is pure data — no I/O, no plugin imports.
6
+ *
7
+ * Each descriptor defines:
8
+ * - kind: the SourceKind it describes
9
+ * - defaultDecision: the default triage decision
10
+ * - reason: why this default was chosen
11
+ * - nextAction: what should happen when this decision is applied
12
+ * - canUpgrade: whether the plugin adapter may upgrade the decision
13
+ * (e.g., rulehost_block can be upgraded to 'admit' for unsafe actions)
14
+ *
15
+ * ERR checklist:
16
+ * - ERR-002: Every descriptor carries reason + nextAction.
17
+ * - ERR-005: Descriptors are data, not assumptions about callers.
18
+ */
19
+ // ── Descriptor Registry ─────────────────────────────────────────────────────
20
+ /**
21
+ * Source kind descriptors. Order does not matter — lookup is by kind.
22
+ *
23
+ * Design rationale per PRODUCT_IDENTITY.md and ADR-0014:
24
+ * - PD owns owner-relevant behavior evidence, not tool repair.
25
+ * - Manual/owner-reported pain has highest confidence.
26
+ * - Tool failures are infrastructure noise (OpenClaw's job, not PD's).
27
+ * - Empathy-inferred frustration must never silently create diagnosis.
28
+ * - GFI alone cannot trigger diagnosis (it's a session health metric).
29
+ */
30
+ export const SOURCE_DESCRIPTORS = new Map([
31
+ ['owner_reported', {
32
+ kind: 'owner_reported',
33
+ defaultDecision: 'admit',
34
+ reason: 'Owner explicitly reported pain. Highest confidence signal.',
35
+ nextAction: 'none',
36
+ canUpgrade: false,
37
+ }],
38
+ ['agent_on_owner_request', {
39
+ kind: 'agent_on_owner_request',
40
+ defaultDecision: 'admit',
41
+ reason: 'Agent recorded pain at owner request. Owner intent preserved.',
42
+ nextAction: 'none',
43
+ canUpgrade: false,
44
+ }],
45
+ ['tool_failure', {
46
+ kind: 'tool_failure',
47
+ defaultDecision: 'evidence_only',
48
+ reason: 'Tool failure is infrastructure noise. PD does not own tool repair (ADR-0014).',
49
+ nextAction: 'store_as_evidence_for_later_correlation',
50
+ canUpgrade: false,
51
+ }],
52
+ ['dispatch_error', {
53
+ kind: 'dispatch_error',
54
+ defaultDecision: 'evidence_only',
55
+ reason: 'Dispatch/subagent routing error. Not a behavior pattern.',
56
+ nextAction: 'store_as_evidence_for_later_correlation',
57
+ canUpgrade: false,
58
+ }],
59
+ ['provider_failure', {
60
+ kind: 'provider_failure',
61
+ defaultDecision: 'health_only',
62
+ reason: 'LLM provider failure. Infrastructure health signal, not owner-relevant behavior.',
63
+ nextAction: 'record_in_health_telemetry',
64
+ canUpgrade: false,
65
+ }],
66
+ ['rate_limit', {
67
+ kind: 'rate_limit',
68
+ defaultDecision: 'health_only',
69
+ reason: 'LLM provider rate limit. Infrastructure health signal, not owner-relevant behavior.',
70
+ nextAction: 'record_in_health_telemetry',
71
+ canUpgrade: false,
72
+ }],
73
+ ['rulehost_block', {
74
+ kind: 'rulehost_block',
75
+ defaultDecision: 'evidence_only',
76
+ reason: 'RuleHost block is near-miss evidence. Default evidence-only.',
77
+ nextAction: 'store_as_evidence_for_later_correlation',
78
+ canUpgrade: true, // adapter can upgrade to 'admit' for high-confidence unsafe actions
79
+ }],
80
+ ['empathy_inferred', {
81
+ kind: 'empathy_inferred',
82
+ defaultDecision: 'owner_confirm',
83
+ reason: 'Empathy-inferred frustration. Never silently creates diagnosis (PRODUCT_IDENTITY: owner-governed).',
84
+ nextAction: 'request_owner_confirmation_before_diagnosis',
85
+ canUpgrade: false,
86
+ }],
87
+ ['semantic', {
88
+ kind: 'semantic',
89
+ defaultDecision: 'evidence_only',
90
+ reason: 'Keyword/detection match. Not explicit owner pain. Needs accumulation.',
91
+ nextAction: 'store_as_evidence_for_later_correlation',
92
+ canUpgrade: false,
93
+ }],
94
+ ['llm_paralysis', {
95
+ kind: 'llm_paralysis',
96
+ defaultDecision: 'evidence_only',
97
+ reason: 'Session health signal. GFI alone cannot create diagnosis.',
98
+ nextAction: 'store_as_evidence_for_later_correlation',
99
+ canUpgrade: false,
100
+ }],
101
+ ['subagent_error', {
102
+ kind: 'subagent_error',
103
+ defaultDecision: 'evidence_only',
104
+ reason: 'Subagent workflow failure. Not a behavior pattern by itself.',
105
+ nextAction: 'store_as_evidence_for_later_correlation',
106
+ canUpgrade: false,
107
+ }],
108
+ ['gfi_threshold', {
109
+ kind: 'gfi_threshold',
110
+ defaultDecision: 'evidence_only',
111
+ reason: 'Accumulated GFI. GFI alone cannot create diagnosis per acceptance criteria.',
112
+ nextAction: 'store_as_evidence_for_later_correlation',
113
+ canUpgrade: false,
114
+ }],
115
+ ['unknown', {
116
+ kind: 'unknown',
117
+ defaultDecision: 'evidence_only',
118
+ reason: 'Unclassified source. Conservative default.',
119
+ nextAction: 'classify_source_kind_and_store_as_evidence',
120
+ canUpgrade: false,
121
+ }],
122
+ ]);
123
+ // ── Lookup ───────────────────────────────────────────────────────────────────
124
+ /**
125
+ * Get the source descriptor for a given kind.
126
+ * Returns undefined if the kind is not registered (caller should treat as 'unknown').
127
+ */
128
+ export function getSourceDescriptor(kind) {
129
+ return SOURCE_DESCRIPTORS.get(kind);
130
+ }
131
+ //# sourceMappingURL=source-descriptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-descriptors.js","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/source-descriptors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Triage Policy — PEAT-B1
3
+ *
4
+ * Pure policy evaluation for pre-diagnosis evidence triage.
5
+ * No I/O, no plugin imports, no side effects.
6
+ *
7
+ * This module evaluates a TriageInput against source descriptors
8
+ * and returns a TriageResult. The plugin adapter calls this function
9
+ * and uses the result to decide whether to proceed to diagnosis.
10
+ *
11
+ * ERR checklist:
12
+ * - ERR-001: No `as` casts. Input validated with runtime guards.
13
+ * - ERR-002: Every result carries structured reason + nextAction.
14
+ * - ERR-005: Input is unknown, validated field-by-field.
15
+ */
16
+ import type { TriageInput, TriageResult } from './types.js';
17
+ /**
18
+ * Evaluate triage policy for incoming evidence.
19
+ *
20
+ * This is the pure policy function. It does not:
21
+ * - Call PainDiagnosticGate
22
+ * - Write to event log or trajectory
23
+ * - Create diagnostic tasks
24
+ * - Import anything from the plugin layer
25
+ *
26
+ * It only reads source descriptors and applies policy rules.
27
+ *
28
+ * @param input - Triage input with source kind and context
29
+ * @returns Structured triage result with decision, reason, and nextAction
30
+ */
31
+ export declare function evaluateTriage(input: TriageInput): TriageResult;
32
+ //# sourceMappingURL=triage-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-policy.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/triage-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAA8B,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuCxF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAmC/D"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Triage Policy — PEAT-B1
3
+ *
4
+ * Pure policy evaluation for pre-diagnosis evidence triage.
5
+ * No I/O, no plugin imports, no side effects.
6
+ *
7
+ * This module evaluates a TriageInput against source descriptors
8
+ * and returns a TriageResult. The plugin adapter calls this function
9
+ * and uses the result to decide whether to proceed to diagnosis.
10
+ *
11
+ * ERR checklist:
12
+ * - ERR-001: No `as` casts. Input validated with runtime guards.
13
+ * - ERR-002: Every result carries structured reason + nextAction.
14
+ * - ERR-005: Input is unknown, validated field-by-field.
15
+ */
16
+ import { isSourceKind } from './types.js';
17
+ import { getSourceDescriptor } from './source-descriptors.js';
18
+ // ── Upgrade Rules ───────────────────────────────────────────────────────────
19
+ /**
20
+ * Apply upgrade rules for upgradable source kinds.
21
+ *
22
+ * Currently only 'rulehost_block' can be upgraded:
23
+ * - If isUnsafeHighConfidence is true, upgrade from 'evidence_only' to 'admit'
24
+ *
25
+ * This is the ONLY place where context-dependent upgrades happen in core.
26
+ * The plugin adapter sets isUnsafeHighConfidence based on hook context.
27
+ */
28
+ function applyUpgradeRules(input, defaultDecision) {
29
+ if (input.sourceKind === 'rulehost_block' && input.isUnsafeHighConfidence === true) {
30
+ return 'admit';
31
+ }
32
+ return defaultDecision;
33
+ }
34
+ function getUpgradeReason(sourceKind, decision, input) {
35
+ if (sourceKind === 'rulehost_block' && decision === 'admit') {
36
+ return `RuleHost blocked a high-confidence unsafe action (score=${input.score}). Upgrading to direct diagnosis.`;
37
+ }
38
+ // Should not reach here — fallback
39
+ return `Upgraded decision for ${sourceKind}: ${decision}`;
40
+ }
41
+ function getUpgradeNextAction(sourceKind, decision) {
42
+ if (sourceKind === 'rulehost_block' && decision === 'admit') {
43
+ return 'none';
44
+ }
45
+ return 'none';
46
+ }
47
+ // ── Evaluation ──────────────────────────────────────────────────────────────
48
+ /**
49
+ * Evaluate triage policy for incoming evidence.
50
+ *
51
+ * This is the pure policy function. It does not:
52
+ * - Call PainDiagnosticGate
53
+ * - Write to event log or trajectory
54
+ * - Create diagnostic tasks
55
+ * - Import anything from the plugin layer
56
+ *
57
+ * It only reads source descriptors and applies policy rules.
58
+ *
59
+ * @param input - Triage input with source kind and context
60
+ * @returns Structured triage result with decision, reason, and nextAction
61
+ */
62
+ export function evaluateTriage(input) {
63
+ // ERR-001: validate sourceKind with runtime guard
64
+ const sourceKind = isSourceKind(input.sourceKind) ? input.sourceKind : 'unknown';
65
+ // Look up descriptor
66
+ const descriptor = getSourceDescriptor(sourceKind);
67
+ if (!descriptor) {
68
+ // Fallback for unregistered kinds (should not happen with 'unknown' in registry)
69
+ return {
70
+ decision: 'evidence_only',
71
+ sourceKind: 'unknown',
72
+ reason: `Source kind '${sourceKind}' not found in descriptor registry. Conservative default.`,
73
+ nextAction: 'classify_source_kind_and_store_as_evidence',
74
+ };
75
+ }
76
+ // Apply upgrade rules for upgradable kinds
77
+ if (descriptor.canUpgrade) {
78
+ const upgraded = applyUpgradeRules(input, descriptor.defaultDecision);
79
+ if (upgraded !== descriptor.defaultDecision) {
80
+ return {
81
+ decision: upgraded,
82
+ sourceKind,
83
+ reason: getUpgradeReason(sourceKind, upgraded, input),
84
+ nextAction: getUpgradeNextAction(sourceKind, upgraded),
85
+ };
86
+ }
87
+ }
88
+ return {
89
+ decision: descriptor.defaultDecision,
90
+ sourceKind,
91
+ reason: descriptor.reason,
92
+ nextAction: descriptor.nextAction,
93
+ };
94
+ }
95
+ //# sourceMappingURL=triage-policy.js.map