create-principles-disciple 1.94.0 → 1.96.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 (530) hide show
  1. package/console/dist/server/config/WorkspaceConfigStore.js +2 -1
  2. package/console/dist/server/config/pd-config-store.d.ts +33 -0
  3. package/console/dist/server/config/pd-config-store.js +196 -0
  4. package/console/dist/server/index.js +19 -4
  5. package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +0 -2
  6. package/console/dist/server/models/EvidenceChainConsoleModel.js +36 -2
  7. package/console/dist/server/models/HealthCheckModel.js +5 -3
  8. package/console/dist/server/models/IntentDecisionModel.d.ts +66 -0
  9. package/console/dist/server/models/IntentDecisionModel.js +207 -0
  10. package/console/dist/server/models/IntentPageModel.d.ts +52 -0
  11. package/console/dist/server/models/IntentPageModel.js +292 -0
  12. package/console/dist/server/models/PrinciplesConsoleModel.d.ts +2 -0
  13. package/console/dist/server/models/PrinciplesConsoleModel.js +37 -1
  14. package/console/dist/server/models/WorkspaceService.d.ts +0 -28
  15. package/console/dist/server/models/WorkspaceService.js +0 -115
  16. package/console/dist/server/routes/config.js +55 -1
  17. package/console/dist/server/routes/intent-decisions.d.ts +33 -0
  18. package/console/dist/server/routes/intent-decisions.js +499 -0
  19. package/console/dist/server/routes/intent.d.ts +7 -0
  20. package/console/dist/server/routes/intent.js +223 -0
  21. package/console/dist/server/routes/principles.js +67 -1
  22. package/console/dist/server/routes/update.d.ts +0 -1
  23. package/console/dist/server/routes/update.js +14 -11
  24. package/console/dist/types.d.ts +1 -0
  25. package/console/dist/ui/App.js +2 -60
  26. package/console/dist/ui/api.d.ts +58 -18
  27. package/console/dist/ui/api.js +78 -6
  28. package/console/dist/ui/components/layout/app-sidebar.js +13 -12
  29. package/console/dist/ui/components/ui/badge.d.ts +1 -1
  30. package/console/dist/ui/components/ui/button.d.ts +1 -1
  31. package/console/dist/ui/components/ui/shiny-text.d.ts +28 -0
  32. package/console/dist/ui/components/ui/shiny-text.js +46 -0
  33. package/console/dist/ui/i18n/en.json +306 -3
  34. package/console/dist/ui/i18n/zh-CN.json +306 -3
  35. package/console/dist/ui/pages/activation/ActivationPage.js +2 -1
  36. package/console/dist/ui/pages/control-center/AgentCard.d.ts +31 -0
  37. package/console/dist/ui/pages/control-center/AgentCard.js +156 -0
  38. package/console/dist/ui/pages/control-center/AgentGroup.d.ts +26 -0
  39. package/console/dist/ui/pages/control-center/AgentGroup.js +38 -0
  40. package/console/dist/ui/pages/control-center/ControlCenterPage.js +103 -41
  41. package/console/dist/ui/pages/control-center/EmpathyObserverCostHint.d.ts +28 -0
  42. package/console/dist/ui/pages/control-center/EmpathyObserverCostHint.js +38 -0
  43. package/console/dist/ui/pages/control-center/WorkflowDiagram.d.ts +17 -0
  44. package/console/dist/ui/pages/control-center/WorkflowDiagram.js +55 -0
  45. package/console/dist/ui/pages/debt/DebtPage.js +219 -2
  46. package/console/dist/ui/pages/focus/FocusPage.js +2 -1
  47. package/console/dist/ui/pages/intent/IntentOnboarding.d.ts +67 -0
  48. package/console/dist/ui/pages/intent/IntentOnboarding.js +289 -0
  49. package/console/dist/ui/pages/intent/IntentPage.d.ts +1 -0
  50. package/console/dist/ui/pages/intent/IntentPage.js +258 -0
  51. package/console/dist/ui/pages/pain/PainPage.js +234 -4
  52. package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +75 -0
  53. package/console/dist/ui/pages/pain/pain-card-helpers.js +78 -0
  54. package/console/dist/ui/pages/principles/PrinciplesPage.js +2 -1
  55. package/console/dist/ui/utils/agent-metadata.d.ts +58 -0
  56. package/console/dist/ui/utils/agent-metadata.js +275 -0
  57. package/console/dist/ui/utils/control-center-helpers.d.ts +19 -0
  58. package/console/dist/ui/utils/control-center-helpers.js +37 -0
  59. package/console/dist/ui/utils/validators.d.ts +200 -0
  60. package/console/dist/ui/utils/validators.js +563 -0
  61. package/console/dist/web/assets/app.css +498 -3
  62. package/console/dist/web/assets/app.js +5063 -1418
  63. package/console/package.json +3 -0
  64. package/core/dist/principle-tree-ledger.d.ts +55 -4
  65. package/core/dist/principle-tree-ledger.d.ts.map +1 -1
  66. package/core/dist/principle-tree-ledger.js +472 -13
  67. package/core/dist/principle-tree-ledger.js.map +1 -1
  68. package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js +58 -0
  69. package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js.map +1 -1
  70. package/core/dist/prompt-builder/empathy-keyword-matching.d.ts.map +1 -1
  71. package/core/dist/prompt-builder/empathy-keyword-matching.js +9 -6
  72. package/core/dist/prompt-builder/empathy-keyword-matching.js.map +1 -1
  73. package/core/dist/prompt-builder/size-guard.d.ts +1 -0
  74. package/core/dist/prompt-builder/size-guard.d.ts.map +1 -1
  75. package/core/dist/prompt-builder/size-guard.js +21 -0
  76. package/core/dist/prompt-builder/size-guard.js.map +1 -1
  77. package/core/dist/prompt-builder/types.d.ts +2 -0
  78. package/core/dist/prompt-builder/types.d.ts.map +1 -1
  79. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +143 -65
  80. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  81. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +85 -7
  82. package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -1
  83. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.d.ts +2 -0
  84. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.d.ts.map +1 -0
  85. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.js +284 -0
  86. package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.js.map +1 -0
  87. package/core/dist/runtime-v2/__tests__/golden-trace-replay-validator.test.js +70 -0
  88. package/core/dist/runtime-v2/__tests__/golden-trace-replay-validator.test.js.map +1 -1
  89. package/core/dist/runtime-v2/__tests__/golden-trace.test.js +136 -1
  90. package/core/dist/runtime-v2/__tests__/golden-trace.test.js.map +1 -1
  91. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js +105 -0
  92. package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js.map +1 -1
  93. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +7 -5
  94. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  95. package/core/dist/runtime-v2/__tests__/pi-artifact-store.test.js +11 -0
  96. package/core/dist/runtime-v2/__tests__/pi-artifact-store.test.js.map +1 -1
  97. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +15 -2
  98. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
  99. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.d.ts +2 -0
  100. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.d.ts.map +1 -0
  101. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.js +290 -0
  102. package/core/dist/runtime-v2/__tests__/schema-float-precision.test.js.map +1 -0
  103. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.d.ts +2 -0
  104. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.d.ts.map +1 -0
  105. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.js +158 -0
  106. package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.js.map +1 -0
  107. package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.d.ts +2 -0
  108. package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.d.ts.map +1 -0
  109. package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.js +211 -0
  110. package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.js.map +1 -0
  111. package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +15 -1
  112. package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js.map +1 -1
  113. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts +2 -0
  114. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts.map +1 -0
  115. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js +62 -0
  116. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js.map +1 -0
  117. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +12 -2
  118. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
  119. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts +2 -0
  120. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts.map +1 -0
  121. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js +56 -0
  122. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js.map +1 -0
  123. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +8 -0
  124. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
  125. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +20 -0
  126. package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -1
  127. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
  128. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +6 -0
  129. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
  130. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
  131. package/core/dist/runtime-v2/activation/sqlite-approval-store.js +86 -32
  132. package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
  133. package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +158 -1
  134. package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
  135. package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts +11 -0
  136. package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
  137. package/core/dist/runtime-v2/activation/writers/rule-host-writer.js +55 -11
  138. package/core/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
  139. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +134 -15
  140. package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -1
  141. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts +18 -0
  142. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts.map +1 -0
  143. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js +251 -0
  144. package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js.map +1 -0
  145. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +73 -0
  146. package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -1
  147. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +98 -0
  148. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -1
  149. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js +131 -0
  150. package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -1
  151. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +8 -0
  152. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -1
  153. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +66 -3
  154. package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -1
  155. package/core/dist/runtime-v2/diagnostician-output.d.ts +23 -0
  156. package/core/dist/runtime-v2/diagnostician-output.d.ts.map +1 -1
  157. package/core/dist/runtime-v2/diagnostician-output.js +16 -0
  158. package/core/dist/runtime-v2/diagnostician-output.js.map +1 -1
  159. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +32 -0
  160. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  161. package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  162. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +1 -1
  163. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +1 -1
  164. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +23 -0
  165. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  166. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.d.ts +2 -0
  167. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.d.ts.map +1 -0
  168. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.js +30 -0
  169. package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.js.map +1 -0
  170. package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.d.ts +2 -0
  171. package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.d.ts.map +1 -0
  172. package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.js +74 -0
  173. package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.js.map +1 -0
  174. package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.d.ts +2 -0
  175. package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.d.ts.map +1 -0
  176. package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.js +246 -0
  177. package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.js.map +1 -0
  178. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  179. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +9 -0
  180. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  181. package/core/dist/runtime-v2/feature-flags/index.d.ts +2 -0
  182. package/core/dist/runtime-v2/feature-flags/index.d.ts.map +1 -1
  183. package/core/dist/runtime-v2/feature-flags/index.js +2 -0
  184. package/core/dist/runtime-v2/feature-flags/index.js.map +1 -1
  185. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.d.ts.map +1 -1
  186. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js +0 -9
  187. package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
  188. package/{plugin/dist/core/surface-guard.d.ts → core/dist/runtime-v2/feature-flags/surface-guard-policy.d.ts} +15 -5
  189. package/core/dist/runtime-v2/feature-flags/surface-guard-policy.d.ts.map +1 -0
  190. package/{plugin/dist/core/surface-guard.js → core/dist/runtime-v2/feature-flags/surface-guard-policy.js} +14 -2
  191. package/core/dist/runtime-v2/feature-flags/surface-guard-policy.js.map +1 -0
  192. package/core/dist/runtime-v2/golden-trace-replay-validator.js +1 -1
  193. package/core/dist/runtime-v2/golden-trace-replay-validator.js.map +1 -1
  194. package/core/dist/runtime-v2/golden-trace.d.ts +19 -3
  195. package/core/dist/runtime-v2/golden-trace.d.ts.map +1 -1
  196. package/core/dist/runtime-v2/golden-trace.js +2 -0
  197. package/core/dist/runtime-v2/golden-trace.js.map +1 -1
  198. package/core/dist/runtime-v2/index.d.ts +21 -4
  199. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  200. package/core/dist/runtime-v2/index.js +21 -3
  201. package/core/dist/runtime-v2/index.js.map +1 -1
  202. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.d.ts +2 -0
  203. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.d.ts.map +1 -0
  204. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js +185 -0
  205. package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js.map +1 -0
  206. package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts +2 -0
  207. package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts.map +1 -0
  208. package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js +88 -0
  209. package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js.map +1 -0
  210. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.d.ts +2 -0
  211. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.d.ts.map +1 -0
  212. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js +181 -0
  213. package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js.map +1 -0
  214. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts +2 -0
  215. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts.map +1 -0
  216. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js +168 -0
  217. package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js.map +1 -0
  218. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts +2 -0
  219. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts.map +1 -0
  220. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js +121 -0
  221. package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js.map +1 -0
  222. package/core/dist/runtime-v2/intent/index.d.ts +8 -0
  223. package/core/dist/runtime-v2/intent/index.d.ts.map +1 -0
  224. package/core/dist/runtime-v2/intent/index.js +8 -0
  225. package/core/dist/runtime-v2/intent/index.js.map +1 -0
  226. package/core/dist/runtime-v2/intent/intent-browser.d.ts +23 -0
  227. package/core/dist/runtime-v2/intent/intent-browser.d.ts.map +1 -0
  228. package/core/dist/runtime-v2/intent/intent-browser.js +21 -0
  229. package/core/dist/runtime-v2/intent/intent-browser.js.map +1 -0
  230. package/core/dist/runtime-v2/intent/intent-decision-record.d.ts +125 -0
  231. package/core/dist/runtime-v2/intent/intent-decision-record.d.ts.map +1 -0
  232. package/core/dist/runtime-v2/intent/intent-decision-record.js +21 -0
  233. package/core/dist/runtime-v2/intent/intent-decision-record.js.map +1 -0
  234. package/core/dist/runtime-v2/intent/intent-doc-reader-port.d.ts +95 -0
  235. package/core/dist/runtime-v2/intent/intent-doc-reader-port.d.ts.map +1 -0
  236. package/core/dist/runtime-v2/intent/intent-doc-reader-port.js +43 -0
  237. package/core/dist/runtime-v2/intent/intent-doc-reader-port.js.map +1 -0
  238. package/core/dist/runtime-v2/intent/intent-doc-version.d.ts +28 -0
  239. package/core/dist/runtime-v2/intent/intent-doc-version.d.ts.map +1 -0
  240. package/core/dist/runtime-v2/intent/intent-doc-version.js +21 -0
  241. package/core/dist/runtime-v2/intent/intent-doc-version.js.map +1 -0
  242. package/core/dist/runtime-v2/intent/intent-doc.d.ts +35 -0
  243. package/core/dist/runtime-v2/intent/intent-doc.d.ts.map +1 -0
  244. package/core/dist/runtime-v2/intent/intent-doc.js +158 -0
  245. package/core/dist/runtime-v2/intent/intent-doc.js.map +1 -0
  246. package/core/dist/runtime-v2/intent/intent-friction-block.d.ts +63 -0
  247. package/core/dist/runtime-v2/intent/intent-friction-block.d.ts.map +1 -0
  248. package/core/dist/runtime-v2/intent/intent-friction-block.js +129 -0
  249. package/core/dist/runtime-v2/intent/intent-friction-block.js.map +1 -0
  250. package/core/dist/runtime-v2/intent/intent-hash.d.ts +2 -0
  251. package/core/dist/runtime-v2/intent/intent-hash.d.ts.map +1 -0
  252. package/core/dist/runtime-v2/intent/intent-hash.js +10 -0
  253. package/core/dist/runtime-v2/intent/intent-hash.js.map +1 -0
  254. package/core/dist/runtime-v2/intent/intent-patch-proposal.d.ts +42 -0
  255. package/core/dist/runtime-v2/intent/intent-patch-proposal.d.ts.map +1 -0
  256. package/core/dist/runtime-v2/intent/intent-patch-proposal.js +81 -0
  257. package/core/dist/runtime-v2/intent/intent-patch-proposal.js.map +1 -0
  258. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts +54 -0
  259. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts.map +1 -0
  260. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js +219 -0
  261. package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js.map +1 -0
  262. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +41 -1
  263. package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
  264. package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +130 -2
  265. package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -1
  266. package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts +2 -0
  267. package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts.map +1 -0
  268. package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js +228 -0
  269. package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js.map +1 -0
  270. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +41 -11
  271. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
  272. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts +2 -0
  273. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts.map +1 -0
  274. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +360 -0
  275. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -0
  276. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts +2 -0
  277. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts.map +1 -0
  278. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js +333 -0
  279. package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js.map +1 -0
  280. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts +2 -0
  281. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts.map +1 -0
  282. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js +113 -0
  283. package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js.map +1 -0
  284. package/core/dist/runtime-v2/internalization/__tests__/refiner-sandbox-wrapper.test.js +135 -0
  285. package/core/dist/runtime-v2/internalization/__tests__/refiner-sandbox-wrapper.test.js.map +1 -1
  286. package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.d.ts +2 -0
  287. package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.d.ts.map +1 -0
  288. package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.js +449 -0
  289. package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.js.map +1 -0
  290. package/core/dist/runtime-v2/internalization/adversarial-case.d.ts.map +1 -1
  291. package/core/dist/runtime-v2/internalization/adversarial-case.js +24 -0
  292. package/core/dist/runtime-v2/internalization/adversarial-case.js.map +1 -1
  293. package/core/dist/runtime-v2/internalization/artificer-output.d.ts +10 -0
  294. package/core/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
  295. package/core/dist/runtime-v2/internalization/artificer-output.js +45 -0
  296. package/core/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
  297. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +2 -2
  298. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
  299. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js +7 -2
  300. package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
  301. package/core/dist/runtime-v2/internalization/behavior-example-pack.d.ts +66 -0
  302. package/core/dist/runtime-v2/internalization/behavior-example-pack.d.ts.map +1 -0
  303. package/core/dist/runtime-v2/internalization/behavior-example-pack.js +183 -0
  304. package/core/dist/runtime-v2/internalization/behavior-example-pack.js.map +1 -0
  305. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +13 -0
  306. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
  307. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +42 -0
  308. package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
  309. package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
  310. package/core/dist/runtime-v2/internalization/diag-router-runner.js +27 -0
  311. package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
  312. package/core/dist/runtime-v2/internalization/evaluator-output.d.ts +8 -0
  313. package/core/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
  314. package/core/dist/runtime-v2/internalization/evaluator-output.js +10 -0
  315. package/core/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
  316. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts +17 -0
  317. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  318. package/core/dist/runtime-v2/internalization/evaluator-runner.js +118 -24
  319. package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  320. package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.d.ts.map +1 -1
  321. package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js +1 -1
  322. package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js.map +1 -1
  323. package/core/dist/runtime-v2/internalization/rule-context-v2.d.ts +61 -0
  324. package/core/dist/runtime-v2/internalization/rule-context-v2.d.ts.map +1 -0
  325. package/core/dist/runtime-v2/internalization/rule-context-v2.js +301 -0
  326. package/core/dist/runtime-v2/internalization/rule-context-v2.js.map +1 -0
  327. package/core/dist/runtime-v2/internalization/rule-host-contracts.d.ts +9 -0
  328. package/core/dist/runtime-v2/internalization/rule-host-contracts.d.ts.map +1 -1
  329. package/core/dist/runtime-v2/internalization/v2-adversarial-cases.d.ts +55 -0
  330. package/core/dist/runtime-v2/internalization/v2-adversarial-cases.d.ts.map +1 -0
  331. package/core/dist/runtime-v2/internalization/v2-adversarial-cases.js +131 -0
  332. package/core/dist/runtime-v2/internalization/v2-adversarial-cases.js.map +1 -0
  333. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  334. package/core/dist/runtime-v2/pain-signal-observability.js +280 -56
  335. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  336. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +12 -0
  337. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  338. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +1 -1
  339. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  340. package/core/dist/runtime-v2/pain-to-principle-service.d.ts +6 -0
  341. package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  342. package/core/dist/runtime-v2/pain-to-principle-service.js +2 -0
  343. package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  344. package/core/dist/runtime-v2/principle-tree/ledger-codec.js.map +1 -1
  345. package/core/dist/runtime-v2/proven-channel-baseline.js +1 -1
  346. package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
  347. package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.d.ts +2 -0
  348. package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.d.ts.map +1 -0
  349. package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.js +95 -0
  350. package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.js.map +1 -0
  351. package/core/dist/runtime-v2/risk/index.d.ts +7 -0
  352. package/core/dist/runtime-v2/risk/index.d.ts.map +1 -0
  353. package/core/dist/runtime-v2/risk/index.js +6 -0
  354. package/core/dist/runtime-v2/risk/index.js.map +1 -0
  355. package/core/dist/runtime-v2/risk/risk-calculator-policy.d.ts +18 -0
  356. package/core/dist/runtime-v2/risk/risk-calculator-policy.d.ts.map +1 -0
  357. package/core/dist/runtime-v2/risk/risk-calculator-policy.js +47 -0
  358. package/core/dist/runtime-v2/risk/risk-calculator-policy.js.map +1 -0
  359. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts +2 -0
  360. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts.map +1 -0
  361. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js +55 -0
  362. package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js.map +1 -0
  363. package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.d.ts.map +1 -1
  364. package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js +6 -0
  365. package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js.map +1 -1
  366. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.d.ts +2 -0
  367. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.d.ts.map +1 -0
  368. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js +272 -0
  369. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js.map +1 -0
  370. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts +2 -0
  371. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts.map +1 -0
  372. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js +83 -0
  373. package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js.map +1 -0
  374. package/core/dist/runtime-v2/store/intent/index.d.ts +7 -0
  375. package/core/dist/runtime-v2/store/intent/index.d.ts.map +1 -0
  376. package/core/dist/runtime-v2/store/intent/index.js +6 -0
  377. package/core/dist/runtime-v2/store/intent/index.js.map +1 -0
  378. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts +51 -0
  379. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts.map +1 -0
  380. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js +306 -0
  381. package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js.map +1 -0
  382. package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts +28 -0
  383. package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts.map +1 -0
  384. package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js +88 -0
  385. package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js.map +1 -0
  386. package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js +14 -3
  387. package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js.map +1 -1
  388. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts +2 -0
  389. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts.map +1 -0
  390. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js +72 -0
  391. package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js.map +1 -0
  392. package/core/dist/runtime-v2/store/sqlite-connection.d.ts +27 -0
  393. package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  394. package/core/dist/runtime-v2/store/sqlite-connection.js +138 -12
  395. package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  396. package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.d.ts +2 -0
  397. package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.d.ts.map +1 -0
  398. package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.js +149 -0
  399. package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.js.map +1 -0
  400. package/core/dist/runtime-v2/thinking-models/index.d.ts +3 -0
  401. package/core/dist/runtime-v2/thinking-models/index.d.ts.map +1 -0
  402. package/core/dist/runtime-v2/thinking-models/index.js +3 -0
  403. package/core/dist/runtime-v2/thinking-models/index.js.map +1 -0
  404. package/core/dist/runtime-v2/thinking-models/thinking-models-policy.d.ts +73 -0
  405. package/core/dist/runtime-v2/thinking-models/thinking-models-policy.d.ts.map +1 -0
  406. package/core/dist/runtime-v2/thinking-models/thinking-models-policy.js +227 -0
  407. package/core/dist/runtime-v2/thinking-models/thinking-models-policy.js.map +1 -0
  408. package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js +40 -1
  409. package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js.map +1 -1
  410. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts.map +1 -1
  411. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js +28 -1
  412. package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js.map +1 -1
  413. package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts +3 -0
  414. package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts.map +1 -1
  415. package/core/dist/runtime-v2/tools/artificer-output-typebox.js +3 -0
  416. package/core/dist/runtime-v2/tools/artificer-output-typebox.js.map +1 -1
  417. package/core/dist/runtime-v2/types/event-payload.d.ts +1 -20
  418. package/core/dist/runtime-v2/types/event-payload.d.ts.map +1 -1
  419. package/core/dist/runtime-v2/types/event-payload.js +0 -12
  420. package/core/dist/runtime-v2/types/event-payload.js.map +1 -1
  421. package/core/dist/runtime-v2/types/event-types.d.ts +5 -34
  422. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  423. package/core/dist/runtime-v2/types/event-types.js +0 -19
  424. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  425. package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +63 -0
  426. package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -1
  427. package/core/dist/runtime-v2/types/evidence-chain-contract.js +234 -9
  428. package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -1
  429. package/core/dist/runtime-v2/types/index.d.ts +5 -5
  430. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  431. package/core/dist/runtime-v2/types/index.js +5 -3
  432. package/core/dist/runtime-v2/types/index.js.map +1 -1
  433. package/core/dist/runtime-v2/types/ledger-store.d.ts +30 -30
  434. package/core/dist/runtime-v2/types/ledger-store.d.ts.map +1 -1
  435. package/core/dist/runtime-v2/types/ledger-store.js +10 -5
  436. package/core/dist/runtime-v2/types/ledger-store.js.map +1 -1
  437. package/core/dist/workflow-funnel-loader.d.ts +2 -2
  438. package/core/dist/workflow-funnel-loader.d.ts.map +1 -1
  439. package/core/package.json +4 -0
  440. package/dist/installer.d.ts.map +1 -1
  441. package/dist/installer.js +16 -0
  442. package/dist/installer.js.map +1 -1
  443. package/package.json +1 -1
  444. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.d.ts +9 -0
  445. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.d.ts.map +1 -0
  446. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js +237 -0
  447. package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js.map +1 -0
  448. package/pd-cli/dist/commands/intent.d.ts +76 -0
  449. package/pd-cli/dist/commands/intent.d.ts.map +1 -0
  450. package/pd-cli/dist/commands/intent.js +411 -0
  451. package/pd-cli/dist/commands/intent.js.map +1 -0
  452. package/pd-cli/dist/commands/runtime-init.d.ts +43 -0
  453. package/pd-cli/dist/commands/runtime-init.d.ts.map +1 -0
  454. package/pd-cli/dist/commands/runtime-init.js +264 -0
  455. package/pd-cli/dist/commands/runtime-init.js.map +1 -0
  456. package/pd-cli/dist/index.js +25 -0
  457. package/pd-cli/dist/index.js.map +1 -1
  458. package/pd-cli/dist/services/demo-story-a-runner.d.ts.map +1 -1
  459. package/pd-cli/dist/services/demo-story-a-runner.js +6 -0
  460. package/pd-cli/dist/services/demo-story-a-runner.js.map +1 -1
  461. package/pd-cli/package.json +1 -0
  462. package/plugin/dist/commands/pain.js +2 -0
  463. package/plugin/dist/core/behavior-example-pack-assembler.d.ts +43 -0
  464. package/plugin/dist/core/behavior-example-pack-assembler.js +247 -0
  465. package/plugin/dist/core/control-ui-db.d.ts +11 -0
  466. package/plugin/dist/core/control-ui-db.js +40 -16
  467. package/plugin/dist/core/event-log.js +0 -5
  468. package/plugin/dist/core/intent-doc-reader-adapter.d.ts +36 -0
  469. package/plugin/dist/core/intent-doc-reader-adapter.js +76 -0
  470. package/plugin/dist/core/intent-doc-reader.d.ts +89 -0
  471. package/plugin/dist/core/intent-doc-reader.js +210 -0
  472. package/plugin/dist/core/principle-tree-ledger.d.ts +27 -79
  473. package/plugin/dist/core/principle-tree-ledger.js +39 -524
  474. package/plugin/dist/core/reflection/reflection-context.d.ts +2 -2
  475. package/plugin/dist/core/rule-context-assembler.d.ts +45 -0
  476. package/plugin/dist/core/rule-context-assembler.js +148 -0
  477. package/plugin/dist/core/thinking-models.d.ts +12 -57
  478. package/plugin/dist/core/thinking-models.js +18 -224
  479. package/plugin/dist/core/trajectory-types.d.ts +18 -0
  480. package/plugin/dist/core/trajectory.d.ts +50 -2
  481. package/plugin/dist/core/trajectory.js +435 -254
  482. package/plugin/dist/core/workspace-context.d.ts +2 -3
  483. package/plugin/dist/hooks/gate.js +59 -2
  484. package/plugin/dist/hooks/pain.js +5 -0
  485. package/plugin/dist/hooks/prompt-helpers.d.ts +19 -1
  486. package/plugin/dist/hooks/prompt-helpers.js +39 -2
  487. package/plugin/dist/hooks/prompt-types.d.ts +8 -0
  488. package/plugin/dist/hooks/prompt.js +81 -21
  489. package/plugin/dist/index.d.ts +3 -1
  490. package/plugin/dist/index.js +10 -6
  491. package/plugin/dist/service/runtime-summary-service.js +1 -1
  492. package/plugin/dist/service/subagent-workflow/workflow-store.d.ts +14 -0
  493. package/plugin/dist/service/subagent-workflow/workflow-store.js +91 -2
  494. package/plugin/dist/types/event-types.d.ts +1 -1
  495. package/plugin/package.json +6 -3
  496. package/plugin/scripts/acceptance-test.mjs +3 -3
  497. package/plugin/dist/core/evolution-migration.d.ts +0 -5
  498. package/plugin/dist/core/evolution-migration.js +0 -65
  499. package/plugin/dist/core/principle-tree-ledger-adapter.d.ts +0 -32
  500. package/plugin/dist/core/principle-tree-ledger-adapter.js +0 -125
  501. package/plugin/dist/core/risk-calculator.d.ts +0 -22
  502. package/plugin/dist/core/risk-calculator.js +0 -88
  503. package/plugin/dist/core/rule-host-helpers.d.ts +0 -8
  504. package/plugin/dist/core/rule-host-helpers.js +0 -7
  505. package/plugin/dist/core/rule-host-types.d.ts +0 -7
  506. package/plugin/dist/core/rule-host-types.js +0 -7
  507. package/plugin/dist/core/schema/db-types.d.ts +0 -11
  508. package/plugin/dist/core/schema/db-types.js +0 -5
  509. package/plugin/dist/core/schema/index.d.ts +0 -17
  510. package/plugin/dist/core/schema/index.js +0 -15
  511. package/plugin/dist/core/schema/migration-runner.d.ts +0 -53
  512. package/plugin/dist/core/schema/migration-runner.js +0 -170
  513. package/plugin/dist/core/schema/migrations/001-init-trajectory.d.ts +0 -6
  514. package/plugin/dist/core/schema/migrations/001-init-trajectory.js +0 -190
  515. package/plugin/dist/core/schema/migrations/002-init-central.d.ts +0 -5
  516. package/plugin/dist/core/schema/migrations/002-init-central.js +0 -108
  517. package/plugin/dist/core/schema/migrations/003-init-workflow.d.ts +0 -5
  518. package/plugin/dist/core/schema/migrations/003-init-workflow.js +0 -50
  519. package/plugin/dist/core/schema/migrations/004-add-thinking-and-gfi.d.ts +0 -8
  520. package/plugin/dist/core/schema/migrations/004-add-thinking-and-gfi.js +0 -66
  521. package/plugin/dist/core/schema/migrations/index.d.ts +0 -16
  522. package/plugin/dist/core/schema/migrations/index.js +0 -27
  523. package/plugin/dist/core/schema/schema-definitions.d.ts +0 -46
  524. package/plugin/dist/core/schema/schema-definitions.js +0 -599
  525. package/plugin/dist/service/central-database.d.ts +0 -138
  526. package/plugin/dist/service/central-database.js +0 -731
  527. package/plugin/dist/service/central-sync-service.d.ts +0 -8
  528. package/plugin/dist/service/central-sync-service.js +0 -71
  529. package/plugin/scripts/db-migrate.mjs +0 -170
  530. package/plugin/scripts/validate-live-path.ts +0 -462
@@ -226,7 +226,65 @@
226
226
  "noHumanSummary": "PD 尚未为此条证据生成行为摘要",
227
227
  "inReviewQueueCount": "已有 {{count}} 条进入审查队列",
228
228
  "goToGovernance": "去治理首页处理",
229
- "expandTechDetails": "展开技术细节"
229
+ "expandTechDetails": "展开技术细节",
230
+ "intentTensionTitle": "意图张力",
231
+ "intentTensionSourceLabel": "来源",
232
+ "intentTensionSourceNone": "无意图张力",
233
+ "intentTensionSourceActionDrift": "行动偏离",
234
+ "intentTensionSourceIntentSuspect": "意图存疑",
235
+ "intentTensionSourceHealthyTension": "良性张力",
236
+ "intentTensionEvidenceStrengthLabel": "证据强度",
237
+ "intentTensionEvidenceStrengthWeak": "弱",
238
+ "intentTensionEvidenceStrengthModerate": "中",
239
+ "intentTensionEvidenceStrengthStrong": "强",
240
+ "intentTensionRelatedIntentFieldsLabel": "关联 INTENT 字段",
241
+ "intentTensionEvidenceLabel": "证据",
242
+ "intentTensionExplanationLabel": "说明",
243
+ "intentTensionSuggestedActionLabel": "建议拥有者操作",
244
+ "intentTensionSuggestedActionConfirmDrift": "确认偏离",
245
+ "intentTensionSuggestedActionReviseIntent": "修订意图",
246
+ "intentTensionSuggestedActionObserve": "继续观察",
247
+ "intentTensionSuggestedActionDismiss": "忽略",
248
+ "intentTensionSuggestedActionPromoteToPrinciple": "提升为原则",
249
+ "intentTensionSuggestedActionPromoteToRulehost": "提升为 RuleHost",
250
+ "intentTensionIntentDocHashLabel": "INTENT 文档哈希",
251
+ "intentTensionNoTension": "未检测到意图张力",
252
+ "intentTensionArtifactDegraded": "此记录的诊断器产物无法完整解析,意图张力可能不可用。",
253
+ "ownerDecisionPanelTitle": "拥有者决策",
254
+ "ownerDecisionPanelSubtitle": "记录您对此意图张力的决策。后续操作仅在决策持久化后才会显示。",
255
+ "ownerDecisionNoteLabel": "备注(可选)",
256
+ "ownerDecisionNotePlaceholder": "为此决策添加上下文",
257
+ "ownerDecisionSubmitConfirmDrift": "确认漂移",
258
+ "ownerDecisionSubmitReviseIntent": "修订意图",
259
+ "ownerDecisionSubmitObserve": "观察",
260
+ "ownerDecisionSubmitDismiss": "驳回",
261
+ "ownerDecisionSubmitPromoteToPrinciple": "沉淀为原则",
262
+ "ownerDecisionSubmitPromoteToRulehost": "转为 RuleHost",
263
+ "ownerDecisionSubmitting": "正在记录决策…",
264
+ "ownerDecisionRecorded": "决策已记录",
265
+ "ownerDecisionFailed": "记录决策失败",
266
+ "ownerDecisionExisting": "此张力已存在决策",
267
+ "ownerDecisionFollowUpPlaceholder": "决策记录后,后续操作将显示在此处。",
268
+ "ownerDecisionLoadingExisting": "正在加载已有决策…",
269
+ "ownerDecisionLoadFailed": "加载已有决策失败",
270
+ "followUpActionsTitle": "后续动作",
271
+ "followUpDispatching": "正在派发…",
272
+ "followUpDispatchFailed": "派发后续动作失败",
273
+ "followUpLinkCandidateDescription": "将已有的原则候选链接到此决策。PD 不会创建新的候选——从证据链中选择或粘贴候选 ID。",
274
+ "followUpLinkCandidateButton": "链接候选",
275
+ "followUpCandidateIdPlaceholder": "粘贴候选 ID",
276
+ "followUpCandidateIdAriaLabel": "要链接的原则候选 ID",
277
+ "followUpPrefilledFromEvidenceChain": "已从证据链的链接候选预填。",
278
+ "followUpLinkedSuccess": "已链接候选",
279
+ "followUpGuideRulehostDescription": "获取将此决策转为 RuleHost 候选的 CLI 命令。PD 将创建一个审批,可在治理队列中审核。",
280
+ "followUpGuideRulehostButton": "查看 RuleHost 指引",
281
+ "followUpCliCommandLabel": "CLI 命令",
282
+ "followUpPatchProposalDescription": "生成只读的意图补丁建议。该建议汇总张力并提示 INTENT.md 可能需要修订的位置。PD 不会自动应用补丁。",
283
+ "followUpViewPatchProposalButton": "查看意图补丁建议",
284
+ "followUpPatchProposalLabel": "意图补丁建议",
285
+ "followUpPatchProposalReadOnlyBadge": "仅展示",
286
+ "followUpPatchProposalWarning": "仅展示——不可自动应用。拥有者若接受此建议,需手动编辑 .principles/INTENT.md。",
287
+ "followUpPromoteToPrincipleDescription": "链接已有的原则候选以沉淀此决策。PD 不会创建新的候选——从证据链中选择或粘贴候选 ID。"
230
288
  },
231
289
  "principles": {
232
290
  "title": "原则",
@@ -589,7 +647,58 @@
589
647
  "agentEnabled": "已启用",
590
648
  "agentDisabled": "已停用",
591
649
  "profileLabel": "配置",
592
- "readinessLabel": "就绪状态"
650
+ "readinessLabel": "就绪状态",
651
+ "empathyCostHint": {
652
+ "body": "共情观察器已启用 — 每次关键词未命中时会调用 LLM 做深度分析(当前模型:{{provider}}/{{model}})。",
653
+ "muted": "如需节省成本,建议使用本地 LLM 模型(如 Ollama),或在 workflows.yaml 的 pd-empathy-observer.policy.model 换更便宜模型。",
654
+ "ack": "知道了"
655
+ },
656
+ "workflow": {
657
+ "title": "PD 行为回路",
658
+ "subtitle": "从错误到原则,从原则到改变",
659
+ "phase01": "发现错误",
660
+ "phase01Desc": "观察智能体行为\n识别需要改进的模式",
661
+ "phase02": "形成原则",
662
+ "phase02Desc": "把经验提炼成\n可遵循的原则",
663
+ "phase03": "拥有者审批",
664
+ "phase03Desc": "你决定哪些原则\n可以生效",
665
+ "phase04": "改变行为",
666
+ "phase04Desc": "原则作用于\n智能体下次行为",
667
+ "loopHint": "行为改变后,PD 继续观察 —— 形成闭环。9 个代理分布在这条回路上,各司其职。"
668
+ },
669
+ "status": {
670
+ "enabled": "已启用",
671
+ "notReady": "未就绪",
672
+ "corePipeline": "核心管道",
673
+ "corePipelineOk": "正常",
674
+ "corePipelineDegraded": "降级可用",
675
+ "corePipelineParalyzed": "瘫痪",
676
+ "needsConfig": "需配置"
677
+ },
678
+ "groups": {
679
+ "coreTrio": "核心三件套",
680
+ "coreTrioTag": "必须一起开",
681
+ "coreTrioHint": "关掉任何一个,PD 都无法把错误转化为原则",
682
+ "codeChain": "代码实现链",
683
+ "codeChainTag": "推荐一起开",
684
+ "codeChainHint": "只开 artificer 会降级为纯提示通道;只开 evaluator 无意义",
685
+ "qualityPolish": "质量打磨",
686
+ "qualityPolishTag": "可选 · 单独开关",
687
+ "qualityPolishHint": "让原则更精炼,关掉也能用,只是质量略粗",
688
+ "sidechain": "侧链服务",
689
+ "sidechainTag": "独立 · 单独开关",
690
+ "sidechainHint": "不影响主管道,只影响 pain 信号检测精度"
691
+ },
692
+ "impact": {
693
+ "label": "关掉会怎样",
694
+ "confirmTitle": "确认关闭核心代理",
695
+ "confirmAck": "确认关闭",
696
+ "confirmCancel": "取消"
697
+ },
698
+ "techDetail": "技术细节",
699
+ "profileLabelShort": "运行时",
700
+ "unknownAgentsWarning": "检测到 {{count}} 个未识别的代理:{{names}}。它们未被分组显示。",
701
+ "footerNote": "9 个代理分布在内化管道与侧链服务两条路径上。核心三件套必须一起开,否则 PD 无法把错误转化为原则。"
593
702
  },
594
703
  "login": {
595
704
  "title": "登录",
@@ -640,6 +749,199 @@
640
749
  "filesUpdated": "更新了 {{count}} 个文件",
641
750
  "networkErrorHint": "请检查网络连接后重试。",
642
751
  "retry": "重试"
752
+ },
753
+ "intent": {
754
+ "eyebrow": "拥有者意图",
755
+ "title": "拥有者意图文档",
756
+ "subtitle": "单页锚点,记录拥有者的目标、不可违背的边界、以及何时应当停止并升级。仅当 intent_engineering 标志开启时,PD 才会读取此文档。",
757
+ "flagStatus": {
758
+ "enabled": "标志已开启",
759
+ "disabled": "标志已关闭",
760
+ "ariaLabel": "intent_engineering 功能标志状态",
761
+ "enable": "启用意图工程",
762
+ "enabling": "启用中…",
763
+ "enableFailed": "启用失败,请稍后重试或手动修改 .pd/config.yaml"
764
+ },
765
+ "editEntry": {
766
+ "heading": "编辑 INTENT.md",
767
+ "title": "拥有者自有文档",
768
+ "description": "PD 不会修改此文件。请在自己的编辑器中编辑,以声明或修订你的意图。",
769
+ "copy": "复制路径",
770
+ "copyAriaLabel": "复制 INTENT.md 文件路径到剪贴板"
771
+ },
772
+ "flagDisabled": {
773
+ "title": "意图工程已关闭",
774
+ "description": "intent_engineering 功能标志未开启。PD 当前不会读取 INTENT.md,不会将意图上下文注入提示词,也不会在诊断中呈现意图张力。这是 MVP-Quiet 的默认状态。"
775
+ },
776
+ "notFound": {
777
+ "title": "未找到 INTENT.md",
778
+ "description": "PD 在 .principles/ 目录中未找到 INTENT.md 文件。缺少此锚点时,基于意图的诊断无法运行。",
779
+ "nextAction": "运行:pd intent init --confirm --workspace <path>",
780
+ "createButton": "创建 INTENT.md",
781
+ "creating": "创建中…",
782
+ "createFailed": "创建失败,请稍后重试",
783
+ "createSuccess": "INTENT.md 已创建,你可以开始填写意图"
784
+ },
785
+ "onboarding": {
786
+ "title": "欢迎使用意图工程",
787
+ "subtitle": "在开始之前,让我们先了解一下意图工程",
788
+ "whatIsIt": {
789
+ "title": "什么是意图工程?",
790
+ "description": "INTENT.md 是你的长期意图锚点 — 记录你的目标、不可违背的边界、以及何时应当停止并升级。它帮助 PD 在关键决策点对齐你的真实意图。"
791
+ },
792
+ "whyYouFill": {
793
+ "title": "为什么需要你填写?",
794
+ "description": "意图是拥有者自有的。PD 不会自动生成意图,因为只有你知道项目的真实目标和边界。这是你的决策权,PD 只负责帮助你执行和对齐。"
795
+ },
796
+ "sectionGuide": {
797
+ "title": "5 个章节填写引导",
798
+ "description": "INTENT.md 包含 5 个章节,每个章节有明确的用途:",
799
+ "sections": {
800
+ "why": "为什么 — 这个项目的根本动机",
801
+ "desiredOutcome": "期望结果 — 你希望达成的具体结果",
802
+ "nonNegotiables": "不可妥协项 — 绝对不能违反的边界",
803
+ "stopEscalation": "停止 / 升级 — 何时应当停止当前操作并升级给你",
804
+ "currentStrategicFocus": "当前战略焦点 — 阶段性重点"
805
+ }
806
+ },
807
+ "skipOption": "跳过引导,创建空模板稍后填写",
808
+ "startFilling": "开始填写",
809
+ "skip": "跳过",
810
+ "close": "关闭",
811
+ "dontShowAgain": "不再显示"
812
+ },
813
+ "editor": {
814
+ "title": "编辑 INTENT.md",
815
+ "description": "直接在浏览器中编辑你的意图文档。保存后会立即生效。",
816
+ "placeholder": "在此输入 INTENT.md 内容(Markdown 格式)…",
817
+ "save": "保存",
818
+ "saving": "保存中…",
819
+ "cancel": "取消",
820
+ "edit": "编辑",
821
+ "saveSuccess": "INTENT.md 已保存",
822
+ "saveFailed": "保存失败,请稍后重试",
823
+ "emptyContent": "内容不能为空",
824
+ "oversized": "内容超过 32KB 上限,请精简后重试",
825
+ "confirmDiscard": "你有未保存的修改,确定要放弃吗?",
826
+ "yes": "是,放弃修改",
827
+ "no": "继续编辑"
828
+ },
829
+ "oversized": {
830
+ "title": "INTENT.md 超过 32KB",
831
+ "description": "文件超过 32KB 上限。PD 拒绝读取超大文件,以保证意图解析的确定性与有界性。",
832
+ "nextAction": "请将 INTENT.md 精简至 32KB 以下,将长篇策略移至独立文档。"
833
+ },
834
+ "sections": {
835
+ "why": "为什么",
836
+ "desiredOutcome": "期望结果",
837
+ "nonNegotiables": "不可妥协项",
838
+ "stopEscalation": "停止 / 升级",
839
+ "currentStrategicFocus": "当前战略焦点"
840
+ },
841
+ "warnings": {
842
+ "title": "健康告警",
843
+ "empty": "无告警。INTENT.md 格式良好。",
844
+ "missing_section": "缺失章节",
845
+ "empty_section": "章节为空",
846
+ "too_vague": "章节过于简略(少于 10 个字符)",
847
+ "oversized": "文档超过 32KB 上限",
848
+ "parse_failed": "章节解析失败"
849
+ },
850
+ "meta": {
851
+ "title": "文档元信息",
852
+ "lastEditedAt": "上次编辑",
853
+ "contentHash": "内容哈希",
854
+ "path": "路径",
855
+ "templateTitle": "INTENT.md 模板",
856
+ "templateDescription": "将其复制到 .principles/INTENT.md,替换占位符为你的意图。"
857
+ },
858
+ "loadError": "加载意图文档失败",
859
+ "validationError": "数据格式校验失败,请刷新后重试",
860
+ "decisions": {
861
+ "sectionTitle": "拥有者决策",
862
+ "sectionSubtitle": "基于 IntentDecisionRecord 的轻量审计摘要,非仪表盘。",
863
+ "countConfirmDrift": "确认漂移",
864
+ "countReviseIntent": "修订意图",
865
+ "countObserve": "观察",
866
+ "countDismiss": "驳回",
867
+ "countPromoteToPrinciple": "沉淀为原则",
868
+ "countPromoteToRulehost": "转为 RuleHost",
869
+ "lastDecisionAtLabel": "最近决策",
870
+ "noDecisions": "暂无决策记录",
871
+ "loadError": "加载决策摘要失败"
872
+ },
873
+ "langSelector": {
874
+ "ariaLabel": "选择 INTENT.md 语言",
875
+ "disabledWhileEditing": "请先保存或取消编辑,再切换语言"
876
+ },
877
+ "versionHistory": {
878
+ "title": "版本历史",
879
+ "reasonInit": "初始化",
880
+ "reasonSave": "保存"
881
+ },
882
+ "wizard": {
883
+ "progressLabel": "第 {{current}}/5 步",
884
+ "next": "下一步",
885
+ "prev": "上一步",
886
+ "finish": "完成",
887
+ "review": "查看摘要",
888
+ "complete": "完成保存",
889
+ "cancel": "取消",
890
+ "emptyWarning": "此节不能为空,请填写后再继续",
891
+ "stepLabels": {
892
+ "why": "1. 为什么(Why)",
893
+ "desiredOutcome": "2. 期望结果(Desired Outcome)",
894
+ "nonNegotiables": "3. 不可妥协项(Non-negotiables)",
895
+ "stopEscalation": "4. 止损/升级(Stop / Escalation)",
896
+ "currentStrategicFocus": "5. 当前战略焦点(Current Strategic Focus)"
897
+ },
898
+ "guidance": {
899
+ "why": "说明这个项目为什么重要。拥有者关心什么?不解决会怎样?",
900
+ "desiredOutcome": "描述可观察的改变。做完后,什么会变好?",
901
+ "nonNegotiables": "列出不可违反的硬约束(合规/安全/边界)。",
902
+ "stopEscalation": "什么情况下应该停下来升级给拥有者,而不是继续推进?",
903
+ "currentStrategicFocus": "当前阶段最优先的事是什么?(会随阶段更新)"
904
+ },
905
+ "discardConfirmTitle": "放弃填写?",
906
+ "discardConfirmBody": "你已填写的内容将丢失,无法恢复。",
907
+ "discardConfirmCancel": "继续填写",
908
+ "discardConfirmConfirm": "放弃"
909
+ },
910
+ "versionDiff": {
911
+ "changed": "已变更",
912
+ "unchanged": "未变更",
913
+ "oldPreview": "旧版本",
914
+ "newPreview": "新版本",
915
+ "expandHint": "点击查看 section 级差异",
916
+ "collapseHint": "点击折叠差异"
917
+ }
918
+ },
919
+ "debt": {
920
+ "eyebrow": "原则债务",
921
+ "title": "原则债务管理",
922
+ "subtitle": "审查那些未激活、长期停滞或可能成为技术/行为负债的原则。",
923
+ "emptyTitle": "暂无原则债务",
924
+ "emptyDescription": "太棒了!你的所有活跃原则均运行正常,没有发现长期未激活或被晾在审批队列里的情况。",
925
+ "reasonNeverActivated": "该原则已被批准,但从未真正部署到任何运行通道(如提示词、RuleHost)。",
926
+ "reasonStagnant": "该原则的审批请求已在队列中滞留超过 7 天,可能已被遗忘。",
927
+ "suggestedAction": "建议操作",
928
+ "actionArchive": "归档",
929
+ "actionDeactivate": "停用通道",
930
+ "actionKeep": "保留观察",
931
+ "confirmArchive": "归档该原则会将其移出当前活跃原则库,确认归档吗?",
932
+ "confirmDeactivate": "停用该通道将使该原则不再在运行时对智能体进行拦截,确认停用吗?",
933
+ "deactivateSuccess": "通道停用成功。",
934
+ "deactivateFailed": "停用通道失败。",
935
+ "archiveSuccess": "原则归档成功。",
936
+ "archiveFailed": "原则归档失败。",
937
+ "undoAction": "撤销",
938
+ "undoSuccess": "操作已撤销。",
939
+ "undoFailed": "撤销操作失败。",
940
+ "loadError": "无法加载原则债务数据,请尝试刷新页面。",
941
+ "daysSinceAgo": "{{count}} 天前",
942
+ "demoteTooltip": "降权端点开发中",
943
+ "principleAriaLabel": "原则债务 {{id}}",
944
+ "listAriaLabel": "原则债务列表"
643
945
  }
644
946
  },
645
947
  "components": {
@@ -699,7 +1001,8 @@
699
1001
  "settings": "设置",
700
1002
  "update": "更新",
701
1003
  "pendingApprovalsAria": "{{count}} 条待审批原则",
702
- "degradedSignalsAria": "{{count}} 个系统降级信号"
1004
+ "degradedSignalsAria": "{{count}} 个系统降级信号",
1005
+ "intent": "拥有者意图"
703
1006
  },
704
1007
  "approvalCard": {
705
1008
  "confidence": {
@@ -6,6 +6,7 @@ import { toast } from "sonner";
6
6
  import { PageShell } from "../../components/layout/page-shell.js";
7
7
  import { PageLoading } from "../../components/layout/page-loading.js";
8
8
  import { SectionTitle } from "../../components/layout/section-title.js";
9
+ import { ShinyText } from "../../components/ui/shiny-text.js";
9
10
  import { fetchAllActivations, disableActivation, fetchLifecycleMetrics, } from "../../api.js";
10
11
  import { validateActivationsData, validateLifecycleMetricsData, isReversibleChannel, } from "./ActivationValidators.js";
11
12
  import { enumLabel } from "../../utils/enum-labels.js";
@@ -137,7 +138,7 @@ export function ActivationPage() {
137
138
  const activeActivations = activations.filter((a) => a.status === "active");
138
139
  const inactiveActivations = activations.filter((a) => a.status === "inactive");
139
140
  const neverActivatedCount = activations.filter((a) => a.activatedAt === null).length;
140
- return (_jsx(PageShell, { children: _jsxs("div", { className: "animate-[pdFadeIn_400ms_ease-out]", children: [_jsx("div", { className: "font-mono text-[12px] tracking-[0.14em] text-ink-3 uppercase mb-3", children: t("pages.activation.eyebrow") }), _jsx("h1", { className: "text-[29px] font-semibold tracking-tight text-ink mb-2", children: t("pages.activation.title") }), _jsx("p", { className: "text-ink-3 text-[14px] max-w-[760px] leading-relaxed mb-7", children: t("pages.activation.subtitle") }), _jsxs("div", { className: "text-sm leading-relaxed text-ink-2 mb-7 px-[18px] py-[14px] bg-panel border border-line rounded-[6px]", role: "status", "aria-live": "polite", children: [_jsx("span", { className: "font-mono font-semibold text-ink tabular-nums", children: activeActivations.length }), " ", _jsx("span", { className: "text-ink-3", children: t("pages.activation.summaryActive") }), " ", "/", " ", _jsx("span", { className: "font-mono font-semibold text-ink tabular-nums", children: inactiveActivations.length }), " ", _jsx("span", { className: "text-ink-3", children: t("pages.activation.summaryInactive") }), neverActivatedCount > 0 && (_jsxs(_Fragment, { children: [" ", "/", " ", _jsx("span", { className: "font-mono font-semibold text-amber tabular-nums", children: neverActivatedCount }), " ", _jsx("span", { className: "text-amber", children: t("pages.activation.summaryNeverActivated") })] }))] }), _jsx(CapabilityBoundaryDeclaration, {}), degradedNote && (_jsx("div", { className: "mt-4 text-ink-4 text-[13px] bg-surface/60 border-l-2 border-amber px-3 py-2", children: degradedNote })), _jsxs("section", { className: "mt-8", "aria-labelledby": "section-active", children: [_jsx(SectionTitle, { id: "section-active", children: t("pages.activation.sectionActive") }), activeActivations.length > 0 ? (_jsx("div", { className: "space-y-[14px]", children: activeActivations.map((record) => (_jsx(ActivationFactCard, { record: record, lifecycleData: lifecycleCache[record.principleId], onDisable: handleDisable, disabling: disablingIds.has(record.id) }, record.id))) })) : (_jsx("div", { className: "text-ink-3 text-[13px] leading-relaxed py-3", children: t("pages.activation.emptyActive") }))] }), inactiveActivations.length > 0 && (_jsxs("section", { className: "mt-8", "aria-labelledby": "section-inactive", children: [_jsx(SectionTitle, { id: "section-inactive", children: t("pages.activation.sectionInactive") }), _jsx("div", { className: "space-y-[14px]", children: inactiveActivations.map((record) => (_jsx(ActivationFactCard, { record: record, lifecycleData: lifecycleCache[record.principleId], onDisable: handleDisable, disabling: disablingIds.has(record.id) }, record.id))) })] })), neverActivatedCount > 0 && (_jsxs("section", { className: "mt-8", "aria-labelledby": "section-never-activated", children: [_jsx(SectionTitle, { id: "section-never-activated", children: t("pages.activation.sectionNeverActivated") }), _jsx("div", { className: "space-y-[10px]", children: activations
141
+ return (_jsx(PageShell, { children: _jsxs("div", { className: "animate-[pdFadeIn_400ms_ease-out]", children: [_jsx("div", { className: "font-mono text-[12px] tracking-[0.14em] text-ink-3 uppercase mb-3", children: t("pages.activation.eyebrow") }), _jsx(ShinyText, { as: "h1", className: "text-[29px] font-semibold tracking-tight text-ink mb-2", duration: 4.5, brightness: 0.5, disabled: activeActivations.length === 0, children: t("pages.activation.title") }), _jsx("p", { className: "text-ink-3 text-[14px] max-w-[760px] leading-relaxed mb-7", children: t("pages.activation.subtitle") }), _jsxs("div", { className: "text-sm leading-relaxed text-ink-2 mb-7 px-[18px] py-[14px] bg-panel border border-line rounded-[6px]", role: "status", "aria-live": "polite", children: [_jsx("span", { className: "font-mono font-semibold text-ink tabular-nums", children: activeActivations.length }), " ", _jsx("span", { className: "text-ink-3", children: t("pages.activation.summaryActive") }), " ", "/", " ", _jsx("span", { className: "font-mono font-semibold text-ink tabular-nums", children: inactiveActivations.length }), " ", _jsx("span", { className: "text-ink-3", children: t("pages.activation.summaryInactive") }), neverActivatedCount > 0 && (_jsxs(_Fragment, { children: [" ", "/", " ", _jsx("span", { className: "font-mono font-semibold text-amber tabular-nums", children: neverActivatedCount }), " ", _jsx("span", { className: "text-amber", children: t("pages.activation.summaryNeverActivated") })] }))] }), _jsx(CapabilityBoundaryDeclaration, {}), degradedNote && (_jsx("div", { className: "mt-4 text-ink-4 text-[13px] bg-surface/60 border-l-2 border-amber px-3 py-2", children: degradedNote })), _jsxs("section", { className: "mt-8", "aria-labelledby": "section-active", children: [_jsx(SectionTitle, { id: "section-active", children: t("pages.activation.sectionActive") }), activeActivations.length > 0 ? (_jsx("div", { className: "space-y-[14px]", children: activeActivations.map((record) => (_jsx(ActivationFactCard, { record: record, lifecycleData: lifecycleCache[record.principleId], onDisable: handleDisable, disabling: disablingIds.has(record.id) }, record.id))) })) : (_jsx("div", { className: "text-ink-3 text-[13px] leading-relaxed py-3", children: t("pages.activation.emptyActive") }))] }), inactiveActivations.length > 0 && (_jsxs("section", { className: "mt-8", "aria-labelledby": "section-inactive", children: [_jsx(SectionTitle, { id: "section-inactive", children: t("pages.activation.sectionInactive") }), _jsx("div", { className: "space-y-[14px]", children: inactiveActivations.map((record) => (_jsx(ActivationFactCard, { record: record, lifecycleData: lifecycleCache[record.principleId], onDisable: handleDisable, disabling: disablingIds.has(record.id) }, record.id))) })] })), neverActivatedCount > 0 && (_jsxs("section", { className: "mt-8", "aria-labelledby": "section-never-activated", children: [_jsx(SectionTitle, { id: "section-never-activated", children: t("pages.activation.sectionNeverActivated") }), _jsx("div", { className: "space-y-[10px]", children: activations
141
142
  .filter((a) => a.activatedAt === null)
142
143
  .map((record) => (_jsxs("article", { className: "relative pl-[22px] py-[14px] pr-[18px] bg-panel border border-amber/20 border-l-[3px] border-l-amber rounded-[6px]", children: [_jsxs("div", { className: "text-ink-2 text-sm leading-relaxed", children: [_jsx("span", { className: "font-medium text-ink", children: t("pages.activation.neverActivatedCard") }), " ", "\u2014 ", record.action, " \u00B7 ", getChannelLabel(record.channel, t), _jsx("span", { className: "ml-2 font-mono text-[11px] text-ink-4", children: record.principleId })] }), _jsxs(Link, { to: "/debt", className: "inline-flex items-center mt-2 text-gov text-[13px] hover:underline focus-visible:outline-2 focus-visible:outline-gov focus-visible:outline-offset-2", children: [t("pages.activation.viewDebt"), " \u2192"] })] }, record.id))) })] })), _jsx("footer", { className: "mt-12 pt-6 border-t border-line text-ink-3 text-[13px]", children: t("pages.activation.footer") })] }) }));
143
144
  }
@@ -0,0 +1,31 @@
1
+ import type { AgentMeta } from "../../utils/agent-metadata.js";
2
+ import type { RedactedAgentSummary, RedactedRuntimeProfileSummary } from "../../api.js";
3
+ /**
4
+ * AgentCard — 三层渐进式披露代理卡片 + 核心代理内联确认
5
+ *
6
+ * L1(折叠态):状态点 + 显示名 + agent.name + 角色一句话 + 开关 + 展开箭头
7
+ * L2(展开态):详细说明段落 + impact-box + 技术细节 toggle + profile-row
8
+ * L3(嵌套折叠):技术细节 grid
9
+ *
10
+ * 核心代理(isCore=true)关闭时显示内联确认条(不弹模态)。
11
+ *
12
+ * rc 合规:
13
+ * - rc-1: agent/profiles 由父组件已验证;meta 是静态数据
14
+ * - rc-2: 无 as 绕过
15
+ * - rc-8: 无 JSON 序列化
16
+ *
17
+ * 品牌约束(PRI-CR1 B.4.4):
18
+ * - 禁止 translateY / scale hover(rotate 仅用于箭头朝向,允许)
19
+ * - 无硬编码十六进制色值
20
+ */
21
+ export type AgentLocale = "zh-CN" | "en";
22
+ interface AgentCardProps {
23
+ agent: RedactedAgentSummary;
24
+ meta: AgentMeta;
25
+ profiles: RedactedRuntimeProfileSummary[];
26
+ onBindingChange: (agentName: string, runtimeProfile: string, enabled: boolean) => void;
27
+ saving: string | null;
28
+ locale: AgentLocale;
29
+ }
30
+ export declare function AgentCard({ agent, meta, profiles, onBindingChange, saving, locale, }: AgentCardProps): import("react/jsx-runtime").JSX.Element;
31
+ export {};
@@ -0,0 +1,156 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { useTranslation } from "react-i18next";
4
+ import { ChevronRight } from "lucide-react";
5
+ import { cn } from "../../../lib/utils.js";
6
+ /** 状态点样式:ready / notready / off */
7
+ function statusDotClasses(agent) {
8
+ const base = "w-2 h-2 rounded-full border-2 shrink-0";
9
+ if (!agent.enabled) {
10
+ return cn(base, "border-ink-4 bg-surface opacity-50");
11
+ }
12
+ switch (agent.readiness) {
13
+ case "ready":
14
+ return cn(base, "border-green bg-green");
15
+ case "not_ready":
16
+ return cn(base, "border-amber bg-surface");
17
+ case "needs_setup":
18
+ return cn(base, "border-amber bg-surface");
19
+ default:
20
+ return cn(base, "border-ink-4 bg-surface");
21
+ }
22
+ }
23
+ /** impact-box 左边框色 */
24
+ function impactBorderClass(level) {
25
+ switch (level) {
26
+ case "danger":
27
+ return "border-l-danger";
28
+ case "green":
29
+ return "border-l-green";
30
+ default:
31
+ return "border-l-amber";
32
+ }
33
+ }
34
+ /** impact label 色 */
35
+ function impactLabelClass(level) {
36
+ switch (level) {
37
+ case "danger":
38
+ return "text-danger";
39
+ case "green":
40
+ return "text-green";
41
+ default:
42
+ return "text-ink-4";
43
+ }
44
+ }
45
+ /**
46
+ * 渲染含反引号 code 片段的文本。
47
+ * 输入示例:'`DiagnosticianContextPayload`(pain 信号上下文)'
48
+ * 输出:[<code>DiagnosticianContextPayload</code>, "(pain 信号上下文)"]
49
+ */
50
+ function renderTextWithCode(text) {
51
+ const parts = text.split("`");
52
+ const nodes = [];
53
+ for (let i = 0; i < parts.length; i++) {
54
+ const part = parts[i];
55
+ if (part === undefined)
56
+ continue;
57
+ if (i % 2 === 0) {
58
+ if (part.length > 0) {
59
+ nodes.push(part);
60
+ }
61
+ }
62
+ else {
63
+ // Odd index = content between backticks = code
64
+ nodes.push(_jsx("code", { className: "font-mono text-[11px] text-ink-2 bg-paper-2 px-[5px] py-[1px] rounded-[2px]", children: part }, `code-${i}`));
65
+ }
66
+ }
67
+ return nodes;
68
+ }
69
+ export function AgentCard({ agent, meta, profiles, onBindingChange, saving, locale, }) {
70
+ const { t } = useTranslation();
71
+ const isSaving = saving === agent.name;
72
+ // L2 / L3 / confirm 状态
73
+ const [isOpen, setIsOpen] = useState(false);
74
+ const [showTechDetail, setShowTechDetail] = useState(false);
75
+ const [confirming, setConfirming] = useState(false);
76
+ // locale 决定取 Zh 还是 En 字段
77
+ const isZh = locale === "zh-CN";
78
+ const displayName = isZh ? meta.displayNameZh : meta.displayNameEn;
79
+ const role = isZh ? meta.roleZh : meta.roleEn;
80
+ const detail = isZh ? meta.detailZh : meta.detailEn;
81
+ const impact = isZh ? meta.impactZh : meta.impactEn;
82
+ const techDetail = isZh ? meta.techDetailZh : meta.techDetailEn;
83
+ const mvpNote = isZh ? meta.mvpNoteZh : meta.mvpNoteEn;
84
+ // 段落用 \n\n 分隔
85
+ const detailParagraphs = detail.split("\n\n").filter((p) => p.length > 0);
86
+ // 头部点击:toggle isOpen(但点击 toggle 按钮 / confirm-bar / tech-toggle 不触发)
87
+ const handleHeadClick = (e) => {
88
+ const target = e.target;
89
+ if (target.closest("[data-agent-toggle]") ||
90
+ target.closest("[data-confirm-bar]") ||
91
+ target.closest("[data-tech-toggle]")) {
92
+ return;
93
+ }
94
+ setIsOpen((prev) => !prev);
95
+ };
96
+ // toggle 按钮点击
97
+ const handleToggleClick = (e) => {
98
+ e.stopPropagation();
99
+ if (agent.enabled) {
100
+ // 当前 on → 要关
101
+ if (meta.isCore) {
102
+ // 核心代理:显示内联确认 + 自动展开
103
+ setConfirming(true);
104
+ setIsOpen(true);
105
+ }
106
+ else {
107
+ // 非核心代理:直接关
108
+ onBindingChange(agent.name, agent.runtimeProfileId, false);
109
+ }
110
+ }
111
+ else {
112
+ // 当前 off → 要开
113
+ onBindingChange(agent.name, agent.runtimeProfileId, true);
114
+ }
115
+ };
116
+ // 确认停用
117
+ const handleConfirmOff = (e) => {
118
+ e.stopPropagation();
119
+ onBindingChange(agent.name, agent.runtimeProfileId, false);
120
+ setConfirming(false);
121
+ };
122
+ // 取消确认
123
+ const handleCancelConfirm = (e) => {
124
+ e.stopPropagation();
125
+ setConfirming(false);
126
+ };
127
+ // tech-toggle 点击
128
+ const handleTechToggleClick = (e) => {
129
+ e.stopPropagation();
130
+ setShowTechDetail((prev) => !prev);
131
+ };
132
+ // profile select 变更
133
+ const handleProfileChange = (e) => {
134
+ onBindingChange(agent.name, e.target.value, agent.enabled);
135
+ };
136
+ return (_jsxs("div", { "data-agent-card": agent.name, className: cn("bg-surface border border-line-2 rounded-[4px] mb-[6px] overflow-hidden transition-colors hover:border-line", !meta.isCore && "border-dashed", !agent.enabled && "opacity-72"), children: [_jsxs("div", { className: "px-[16px] py-[12px] cursor-pointer flex items-center gap-[12px]", onClick: handleHeadClick, role: "button", tabIndex: 0, "aria-expanded": isOpen, onKeyDown: (e) => {
137
+ if (e.key === "Enter" || e.key === " ") {
138
+ e.preventDefault();
139
+ setIsOpen((prev) => !prev);
140
+ }
141
+ }, children: [_jsx("div", { className: statusDotClasses(agent), "aria-hidden": "true" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: cn("text-[14px] font-semibold tracking-[-0.005em] flex items-center gap-[8px]", agent.enabled ? "text-ink" : "text-ink-3"), children: [_jsx("span", { children: displayName }), _jsx("span", { className: "font-mono text-[11.5px] text-ink-4 font-normal", children: agent.name })] }), _jsx("div", { className: "text-[12.5px] text-ink-3 mt-[2px] leading-[1.5]", children: role })] }), _jsx("button", { type: "button", "data-agent-toggle": true, onClick: handleToggleClick, disabled: isSaving, "aria-label": agent.enabled
142
+ ? t("pages.controlCenter.agentDisabled")
143
+ : t("pages.controlCenter.agentEnabled"), className: cn("rounded-[3px] px-[14px] py-[6px] text-[12.5px] font-medium transition-colors disabled:opacity-50", agent.enabled
144
+ ? "border border-gov bg-gov text-paper hover:bg-gov-2"
145
+ : "border border-line bg-surface text-ink hover:border-line-2"), children: isSaving
146
+ ? t("pages.controlCenter.saving")
147
+ : agent.enabled
148
+ ? t("pages.controlCenter.on")
149
+ : t("pages.controlCenter.off") }), _jsx(ChevronRight, { className: cn("w-[14px] h-[14px] text-ink-4 transition-transform shrink-0", isOpen && "rotate-90"), "aria-hidden": "true" })] }), isOpen && (_jsxs("div", { className: "px-[16px] pb-[14px] border-t border-line-2 bg-panel", children: [_jsx("div", { className: "pt-[14px] text-[13px] text-ink-3 leading-[1.62]", children: detailParagraphs.map((para, i) => (_jsx("p", { className: i > 0 ? "mt-2" : undefined, children: renderTextWithCode(para) }, i))) }), mvpNote && (_jsx("div", { className: "mt-3 text-[12px] text-ink-4 font-mono italic", children: mvpNote })), _jsxs("div", { className: cn("mt-[12px] px-[12px] py-[10px] border border-line-2 border-l-[2.5px] rounded-[4px] bg-paper-2 text-[12.5px] text-ink-3 leading-[1.55]", impactBorderClass(meta.impactLevel)), children: [_jsx("span", { className: cn("block mb-[3px] text-[10px] font-mono uppercase tracking-[0.08em] font-medium", impactLabelClass(meta.impactLevel)), children: t("pages.controlCenter.impact.label") }), impact] }), Object.keys(techDetail).length > 0 && (_jsxs(_Fragment, { children: [_jsxs("div", { "data-tech-toggle": true, className: "mt-[12px] pt-[12px] border-t border-line-2 flex items-center gap-[6px] cursor-pointer text-[11px] text-ink-4 font-mono uppercase tracking-[0.04em] hover:text-ink-2 transition-colors", onClick: handleTechToggleClick, role: "button", tabIndex: 0, "aria-expanded": showTechDetail, onKeyDown: (e) => {
150
+ if (e.key === "Enter" || e.key === " ") {
151
+ e.preventDefault();
152
+ e.stopPropagation();
153
+ setShowTechDetail((prev) => !prev);
154
+ }
155
+ }, children: [_jsx(ChevronRight, { className: cn("w-[12px] h-[12px] transition-transform", showTechDetail && "rotate-90"), "aria-hidden": "true" }), t("pages.controlCenter.techDetail")] }), showTechDetail && (_jsx("div", { className: "mt-2 grid grid-cols-[72px_1fr] gap-x-[14px] gap-y-[6px] text-[12px] leading-[1.55]", children: Object.entries(techDetail).map(([k, v]) => (_jsxs("div", { className: "contents", children: [_jsx("div", { className: "text-ink-4 font-mono text-[10.5px] uppercase tracking-[0.04em] pt-px", children: k }), _jsx("div", { className: "text-ink-3", children: renderTextWithCode(v) })] }, k))) }))] })), _jsxs("div", { className: "mt-[12px] pt-[12px] border-t border-line-2 flex items-center gap-[10px] text-[12px]", children: [_jsx("span", { className: "text-ink-4 font-mono text-[10.5px] uppercase tracking-[0.04em]", children: t("pages.controlCenter.profileLabelShort") }), _jsx("select", { value: agent.runtimeProfileId, onChange: handleProfileChange, disabled: isSaving, className: "font-mono text-[11px] text-ink-2 bg-surface border border-line-2 rounded-[3px] px-2 py-1 cursor-pointer focus:outline-none focus:border-gov disabled:opacity-50", "aria-label": t("pages.controlCenter.profileLabel"), children: profiles.map((p) => (_jsx("option", { value: p.id, children: p.label }, p.id))) })] }), confirming && (_jsxs("div", { "data-confirm-bar": true, className: "mt-[10px] px-[12px] py-[10px] border border-danger rounded-[4px] bg-danger/10 text-[12px] text-ink-2 leading-[1.55]", children: [_jsx("div", { children: impact }), _jsxs("div", { className: "mt-2 flex gap-[8px]", children: [_jsx("button", { type: "button", onClick: handleConfirmOff, className: "text-[11.5px] px-[12px] py-[4px] rounded-[3px] border border-transparent bg-danger text-paper font-medium hover:opacity-90 transition-opacity focus-visible:outline-2 focus-visible:outline-gov focus-visible:outline-offset-2", children: t("pages.controlCenter.impact.confirmAck") }), _jsx("button", { type: "button", onClick: handleCancelConfirm, className: "text-[11.5px] px-[12px] py-[4px] rounded-[3px] border border-line bg-transparent text-ink-3 hover:border-line-2 transition-colors focus-visible:outline-2 focus-visible:outline-gov focus-visible:outline-offset-2", children: t("pages.controlCenter.impact.confirmCancel") })] })] }))] }))] }));
156
+ }
@@ -0,0 +1,26 @@
1
+ import { type AgentGroupMeta } from "../../utils/agent-metadata.js";
2
+ import type { RedactedAgentSummary, RedactedRuntimeProfileSummary } from "../../api.js";
3
+ import { type AgentLocale } from "./AgentCard.js";
4
+ /**
5
+ * AgentGroup — 依赖分组容器
6
+ *
7
+ * 渲染 group header(名称 + 标签 + 提示)+ 该组所有 AgentCard。
8
+ * 标签样式按 GroupTag(must/recommend/optional/independent)区分。
9
+ *
10
+ * rc 合规:
11
+ * - rc-2/rc-5: 父组件已用 groupAgentsByDependency 过滤未知代理,本组件用
12
+ * isKnownAgentName 类型守卫二次校验 agent.name 后取 meta(防御性,不静默)
13
+ * - rc-9: 若 agents 为空数组,渲染 group header 但显示空状态提示
14
+ *
15
+ * 品牌约束:无 translateY / scale hover,无硬编码色值
16
+ */
17
+ interface AgentGroupProps {
18
+ groupMeta: AgentGroupMeta;
19
+ agents: RedactedAgentSummary[];
20
+ profiles: RedactedRuntimeProfileSummary[];
21
+ onBindingChange: (agentName: string, runtimeProfile: string, enabled: boolean) => void;
22
+ saving: string | null;
23
+ locale: AgentLocale;
24
+ }
25
+ export declare function AgentGroup({ groupMeta, agents, profiles, onBindingChange, saving, locale, }: AgentGroupProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useTranslation } from "react-i18next";
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { AGENT_METADATA, } from "../../utils/agent-metadata.js";
5
+ import { isKnownAgentName } from "../../utils/control-center-helpers.js";
6
+ import { AgentCard } from "./AgentCard.js";
7
+ /** gtag 样式按 GroupTag 区分 */
8
+ function gtagClasses(tag) {
9
+ const base = "text-[10px] font-mono px-[7px] py-[2px] rounded-[2px] tracking-[0.02em] font-medium border border-transparent";
10
+ switch (tag) {
11
+ case "must":
12
+ return cn(base, "bg-danger/10 text-danger border-danger/22");
13
+ case "recommend":
14
+ return cn(base, "bg-amber/10 text-amber border-amber/22");
15
+ case "optional":
16
+ return cn(base, "bg-paper-2 text-ink-4 border-line-2");
17
+ case "independent":
18
+ return cn(base, "bg-green/10 text-green border-green/22");
19
+ default:
20
+ return base;
21
+ }
22
+ }
23
+ export function AgentGroup({ groupMeta, agents, profiles, onBindingChange, saving, locale, }) {
24
+ const { t } = useTranslation();
25
+ const isZh = locale === "zh-CN";
26
+ const groupName = isZh ? groupMeta.labelZh : groupMeta.labelEn;
27
+ const groupTagLabel = isZh ? groupMeta.tagLabelZh : groupMeta.tagLabelEn;
28
+ const groupHint = isZh ? groupMeta.hintZh : groupMeta.hintEn;
29
+ // rc-2/rc-5: 先用类型守卫缩窄 agent.name,避免 as 绕过;
30
+ // 空状态判断基于过滤后的 knownAgents,避免"全部未知时仍渲染 group header 但无卡片"
31
+ // 用对象级类型谓词让 TS 在后续 map 中正确缩窄 agent.name(Array.filter 对
32
+ // 子属性的 string 谓词不会传播到元素类型)
33
+ const knownAgents = agents.filter((agent) => isKnownAgentName(agent.name));
34
+ return (_jsxs("div", { className: "mb-[20px]", children: [_jsxs("div", { className: "px-[14px] py-[9px] bg-paper-2 border border-line-2 rounded-[4px] flex items-center gap-[10px] mb-[8px]", children: [_jsx("span", { className: "text-[12.5px] font-semibold text-ink-2", children: groupName }), _jsx("span", { className: gtagClasses(groupMeta.tag), children: groupTagLabel }), _jsx("span", { className: "ml-auto text-[11px] text-ink-4 font-mono leading-[1.4] max-w-[32ch] text-right", children: groupHint })] }), knownAgents.length === 0 ? (_jsx("div", { className: "py-2 px-4 text-[12.5px] text-ink-4 italic", children: "\u2014" })) : (knownAgents.map((agent) => {
35
+ const meta = AGENT_METADATA[agent.name];
36
+ return (_jsx(AgentCard, { agent: agent, meta: meta, profiles: profiles, onBindingChange: onBindingChange, saving: saving, locale: locale }, agent.name));
37
+ }))] }));
38
+ }