create-principles-disciple 1.121.7 → 1.121.9

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 (461) hide show
  1. package/README.md +13 -1
  2. package/console/dist/server/config/pd-config-store.d.ts +1 -3
  3. package/console/dist/server/config/pd-config-store.js +4 -4
  4. package/console/dist/server/feedback/channels.d.ts +2 -8
  5. package/console/dist/server/feedback/channels.js +0 -11
  6. package/console/dist/server/index.js +34 -5
  7. package/console/dist/server/models/ActivationsConsoleModel.d.ts +28 -1
  8. package/console/dist/server/models/ActivationsConsoleModel.js +72 -30
  9. package/console/dist/server/models/GovernanceExperienceCollector.d.ts +28 -0
  10. package/console/dist/server/models/GovernanceExperienceCollector.js +305 -0
  11. package/console/dist/server/models/GovernanceProjectionCollector.d.ts +60 -2
  12. package/console/dist/server/models/GovernanceProjectionCollector.js +323 -285
  13. package/console/dist/server/models/PrincipleClassifier.d.ts +1 -1
  14. package/console/dist/server/models/PrincipleClassifier.js +7 -4
  15. package/console/dist/server/models/PrinciplesConsoleModel.d.ts +2 -1
  16. package/console/dist/server/models/ReceiptsConsoleModel.d.ts +5 -0
  17. package/console/dist/server/models/ReceiptsConsoleModel.js +140 -13
  18. package/console/dist/server/routes/activations.js +1 -1
  19. package/console/dist/server/routes/failed-tasks.js +28 -11
  20. package/console/dist/server/routes/governance.d.ts +26 -0
  21. package/console/dist/server/routes/governance.js +51 -0
  22. package/console/dist/server/routes/owner-identity.d.ts +31 -0
  23. package/console/dist/server/routes/owner-identity.js +76 -0
  24. package/console/dist/server/routes/update-history.d.ts +5 -0
  25. package/console/dist/server/routes/update-history.js +50 -4
  26. package/console/dist/server/routes/update.js +186 -32
  27. package/console/dist/shared/feedback-channel-ids.d.ts +13 -0
  28. package/console/dist/shared/feedback-channel-ids.js +12 -0
  29. package/console/dist/shared/feedback-contract.d.ts +46 -0
  30. package/console/dist/shared/feedback-contract.js +45 -0
  31. package/console/dist/ui/App.js +1 -1
  32. package/console/dist/ui/api.d.ts +22 -3
  33. package/console/dist/ui/api.js +63 -3
  34. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.d.ts +6 -0
  35. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.js +66 -0
  36. package/console/dist/ui/i18n/en.json +198 -2
  37. package/console/dist/ui/i18n/zh-CN.json +196 -0
  38. package/console/dist/ui/pages/activation/ActivationPage.js +14 -2
  39. package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +25 -5
  40. package/console/dist/ui/pages/focus/FocusPage.d.ts +28 -1
  41. package/console/dist/ui/pages/focus/FocusPage.js +128 -15
  42. package/console/dist/ui/pages/principles/PrincipleDetailPage.d.ts +30 -0
  43. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +49 -6
  44. package/console/dist/ui/pages/settings/SettingsPage.js +67 -2
  45. package/console/dist/ui/pages/settings/UpdatePage.js +7 -7
  46. package/console/dist/ui/utils/enum-labels.js +0 -1
  47. package/console/dist/ui/utils/validators.d.ts +53 -21
  48. package/console/dist/ui/utils/validators.js +248 -21
  49. package/console/dist/web/assets/app.css +6 -0
  50. package/console/dist/web/assets/app.js +2721 -1664
  51. package/console/package.json +4 -2
  52. package/core/dist/host/host-adapter.d.ts +1 -1
  53. package/core/dist/host/host-adapter.d.ts.map +1 -1
  54. package/core/dist/host/host-adapter.js +1 -0
  55. package/core/dist/host/host-adapter.js.map +1 -1
  56. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +12 -2
  57. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  58. package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +1 -1
  59. package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
  60. package/core/dist/runtime-v2/__tests__/governance-experience.test.d.ts +2 -0
  61. package/core/dist/runtime-v2/__tests__/governance-experience.test.d.ts.map +1 -0
  62. package/core/dist/runtime-v2/__tests__/governance-experience.test.js +300 -0
  63. package/core/dist/runtime-v2/__tests__/governance-experience.test.js.map +1 -0
  64. package/core/dist/runtime-v2/__tests__/owner-identity.test.d.ts +2 -0
  65. package/core/dist/runtime-v2/__tests__/owner-identity.test.d.ts.map +1 -0
  66. package/core/dist/runtime-v2/__tests__/owner-identity.test.js +147 -0
  67. package/core/dist/runtime-v2/__tests__/owner-identity.test.js.map +1 -0
  68. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.d.ts +18 -0
  69. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.d.ts.map +1 -0
  70. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.js +303 -0
  71. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.js.map +1 -0
  72. package/core/dist/runtime-v2/__tests__/recovery-actions-log.test.js +40 -0
  73. package/core/dist/runtime-v2/__tests__/recovery-actions-log.test.js.map +1 -1
  74. package/core/dist/runtime-v2/__tests__/status-contract.test.d.ts +2 -0
  75. package/core/dist/runtime-v2/__tests__/status-contract.test.d.ts.map +1 -0
  76. package/core/dist/runtime-v2/__tests__/status-contract.test.js +107 -0
  77. package/core/dist/runtime-v2/__tests__/status-contract.test.js.map +1 -0
  78. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.d.ts +2 -0
  79. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.d.ts.map +1 -0
  80. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.js +104 -0
  81. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.js.map +1 -0
  82. package/core/dist/runtime-v2/activation/__tests__/promotion-readiness-evaluator.test.js +19 -0
  83. package/core/dist/runtime-v2/activation/__tests__/promotion-readiness-evaluator.test.js.map +1 -1
  84. package/core/dist/runtime-v2/activation/__tests__/rulecode-owner-decision-service.test.js +20 -0
  85. package/core/dist/runtime-v2/activation/__tests__/rulecode-owner-decision-service.test.js.map +1 -1
  86. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-safety-store.test.js +40 -0
  87. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-safety-store.test.js.map +1 -1
  88. package/core/dist/runtime-v2/activation/index.d.ts +2 -0
  89. package/core/dist/runtime-v2/activation/index.d.ts.map +1 -1
  90. package/core/dist/runtime-v2/activation/index.js +1 -0
  91. package/core/dist/runtime-v2/activation/index.js.map +1 -1
  92. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.d.ts +30 -0
  93. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.d.ts.map +1 -0
  94. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.js +87 -0
  95. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.js.map +1 -0
  96. package/core/dist/runtime-v2/activation/promotion-readiness-evaluator.d.ts.map +1 -1
  97. package/core/dist/runtime-v2/activation/promotion-readiness-evaluator.js +3 -0
  98. package/core/dist/runtime-v2/activation/promotion-readiness-evaluator.js.map +1 -1
  99. package/core/dist/runtime-v2/activation/promotion-readiness-reader.d.ts +1 -1
  100. package/core/dist/runtime-v2/activation/promotion-readiness-reader.d.ts.map +1 -1
  101. package/core/dist/runtime-v2/activation/promotion-readiness-reader.js +2 -2
  102. package/core/dist/runtime-v2/activation/promotion-readiness-reader.js.map +1 -1
  103. package/core/dist/runtime-v2/activation/rulecode-owner-decision-service.d.ts.map +1 -1
  104. package/core/dist/runtime-v2/activation/rulecode-owner-decision-service.js +18 -9
  105. package/core/dist/runtime-v2/activation/rulecode-owner-decision-service.js.map +1 -1
  106. package/core/dist/runtime-v2/adapter/__tests__/chaos-json-repair.test.js +1 -1
  107. package/core/dist/runtime-v2/adapter/__tests__/chaos-json-repair.test.js.map +1 -1
  108. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js +91 -1
  109. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js.map +1 -1
  110. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +59 -12
  111. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
  112. package/core/dist/runtime-v2/adapter/__tests__/runtime-config-contract.test.js +10 -9
  113. package/core/dist/runtime-v2/adapter/__tests__/runtime-config-contract.test.js.map +1 -1
  114. package/core/dist/runtime-v2/adapter/__tests__/structured-output-repair.test.js +42 -1
  115. package/core/dist/runtime-v2/adapter/__tests__/structured-output-repair.test.js.map +1 -1
  116. package/core/dist/runtime-v2/adapter/json-extractor.d.ts +25 -0
  117. package/core/dist/runtime-v2/adapter/json-extractor.d.ts.map +1 -1
  118. package/core/dist/runtime-v2/adapter/json-extractor.js +126 -0
  119. package/core/dist/runtime-v2/adapter/json-extractor.js.map +1 -1
  120. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts +9 -4
  121. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts.map +1 -1
  122. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js +9 -4
  123. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js.map +1 -1
  124. package/core/dist/runtime-v2/adapter/output-repair-contract.d.ts +5 -1
  125. package/core/dist/runtime-v2/adapter/output-repair-contract.d.ts.map +1 -1
  126. package/core/dist/runtime-v2/adapter/output-repair-contract.js +4 -1
  127. package/core/dist/runtime-v2/adapter/output-repair-contract.js.map +1 -1
  128. package/core/dist/runtime-v2/adapter/pi-ai-catalog.d.ts +7 -0
  129. package/core/dist/runtime-v2/adapter/pi-ai-catalog.d.ts.map +1 -0
  130. package/core/dist/runtime-v2/adapter/pi-ai-catalog.js +19 -0
  131. package/core/dist/runtime-v2/adapter/pi-ai-catalog.js.map +1 -0
  132. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +13 -15
  133. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  134. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +104 -37
  135. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  136. package/core/dist/runtime-v2/adapter/structured-output-repair.d.ts +16 -1
  137. package/core/dist/runtime-v2/adapter/structured-output-repair.d.ts.map +1 -1
  138. package/core/dist/runtime-v2/adapter/structured-output-repair.js +38 -6
  139. package/core/dist/runtime-v2/adapter/structured-output-repair.js.map +1 -1
  140. package/core/dist/runtime-v2/adapter/tools/diagnostician-tool.d.ts +1 -1
  141. package/core/dist/runtime-v2/adapter/tools/diagnostician-tool.d.ts.map +1 -1
  142. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +8 -9
  143. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
  144. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +27 -3
  145. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  146. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.d.ts +11 -0
  147. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.d.ts.map +1 -0
  148. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.js +93 -0
  149. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.js.map +1 -0
  150. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.js +41 -0
  151. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.js.map +1 -1
  152. package/core/dist/runtime-v2/config/index.d.ts +2 -2
  153. package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
  154. package/core/dist/runtime-v2/config/index.js +2 -0
  155. package/core/dist/runtime-v2/config/index.js.map +1 -1
  156. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -1
  157. package/core/dist/runtime-v2/config/pd-config-agent-binding.js +4 -13
  158. package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -1
  159. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  160. package/core/dist/runtime-v2/config/pd-config-effective.js +14 -7
  161. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  162. package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts.map +1 -1
  163. package/core/dist/runtime-v2/config/pd-config-feature-flags.js +5 -12
  164. package/core/dist/runtime-v2/config/pd-config-feature-flags.js.map +1 -1
  165. package/core/dist/runtime-v2/config/pd-config-types.d.ts +8 -0
  166. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  167. package/core/dist/runtime-v2/config/pd-config-types.js +2 -0
  168. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  169. package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  170. package/core/dist/runtime-v2/config/pd-config-validate.js +48 -3
  171. package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  172. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js +36 -8
  173. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js.map +1 -1
  174. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js +36 -12
  175. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js.map +1 -1
  176. package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts +22 -8
  177. package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts.map +1 -1
  178. package/core/dist/runtime-v2/core-principles/core-axiom-block.js +28 -13
  179. package/core/dist/runtime-v2/core-principles/core-axiom-block.js.map +1 -1
  180. package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts +29 -4
  181. package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts.map +1 -1
  182. package/core/dist/runtime-v2/core-principles/core-principle-registry.js +68 -33
  183. package/core/dist/runtime-v2/core-principles/core-principle-registry.js.map +1 -1
  184. package/core/dist/runtime-v2/core-principles/index.d.ts +3 -3
  185. package/core/dist/runtime-v2/core-principles/index.d.ts.map +1 -1
  186. package/core/dist/runtime-v2/core-principles/index.js +1 -1
  187. package/core/dist/runtime-v2/core-principles/index.js.map +1 -1
  188. package/core/dist/runtime-v2/evolution/evolution-types.d.ts +2 -1
  189. package/core/dist/runtime-v2/evolution/evolution-types.d.ts.map +1 -1
  190. package/core/dist/runtime-v2/evolution/evolution-types.js.map +1 -1
  191. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.d.ts +2 -0
  192. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.d.ts.map +1 -0
  193. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.js +48 -0
  194. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.js.map +1 -0
  195. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.d.ts +2 -0
  196. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.d.ts.map +1 -0
  197. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.js +46 -0
  198. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.js.map +1 -0
  199. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +86 -31
  200. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  201. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.d.ts +2 -0
  202. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.d.ts.map +1 -0
  203. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js +83 -0
  204. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js.map +1 -0
  205. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts +19 -1
  206. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  207. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +128 -10
  208. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  209. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts +37 -0
  210. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -0
  211. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +304 -0
  212. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -0
  213. package/core/dist/runtime-v2/feature-flags/index.d.ts +4 -2
  214. package/core/dist/runtime-v2/feature-flags/index.d.ts.map +1 -1
  215. package/core/dist/runtime-v2/feature-flags/index.js +3 -1
  216. package/core/dist/runtime-v2/feature-flags/index.js.map +1 -1
  217. package/core/dist/runtime-v2/governance-experience-contract.d.ts +468 -0
  218. package/core/dist/runtime-v2/governance-experience-contract.d.ts.map +1 -0
  219. package/core/dist/runtime-v2/governance-experience-contract.js +208 -0
  220. package/core/dist/runtime-v2/governance-experience-contract.js.map +1 -0
  221. package/core/dist/runtime-v2/governance-experience.d.ts +11 -0
  222. package/core/dist/runtime-v2/governance-experience.d.ts.map +1 -0
  223. package/core/dist/runtime-v2/governance-experience.js +276 -0
  224. package/core/dist/runtime-v2/governance-experience.js.map +1 -0
  225. package/core/dist/runtime-v2/index.d.ts +20 -8
  226. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  227. package/core/dist/runtime-v2/index.js +20 -6
  228. package/core/dist/runtime-v2/index.js.map +1 -1
  229. package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js +29 -10
  230. package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js.map +1 -1
  231. package/core/dist/runtime-v2/owner-identity.d.ts +69 -0
  232. package/core/dist/runtime-v2/owner-identity.d.ts.map +1 -0
  233. package/core/dist/runtime-v2/owner-identity.js +179 -0
  234. package/core/dist/runtime-v2/owner-identity.js.map +1 -0
  235. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  236. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +2 -3
  237. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  238. package/core/dist/runtime-v2/product-telemetry/daily-identity.d.ts +70 -0
  239. package/core/dist/runtime-v2/product-telemetry/daily-identity.d.ts.map +1 -0
  240. package/core/dist/runtime-v2/product-telemetry/daily-identity.js +89 -0
  241. package/core/dist/runtime-v2/product-telemetry/daily-identity.js.map +1 -0
  242. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.d.ts +110 -0
  243. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.d.ts.map +1 -0
  244. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.js +250 -0
  245. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.js.map +1 -0
  246. package/core/dist/runtime-v2/pruning-read-model.d.ts +2 -1
  247. package/core/dist/runtime-v2/pruning-read-model.d.ts.map +1 -1
  248. package/core/dist/runtime-v2/pruning-read-model.js.map +1 -1
  249. package/core/dist/runtime-v2/receipt-coverage.d.ts +63 -0
  250. package/core/dist/runtime-v2/receipt-coverage.d.ts.map +1 -0
  251. package/core/dist/runtime-v2/receipt-coverage.js +19 -0
  252. package/core/dist/runtime-v2/receipt-coverage.js.map +1 -0
  253. package/core/dist/runtime-v2/recovery-actions-log.d.ts +7 -0
  254. package/core/dist/runtime-v2/recovery-actions-log.d.ts.map +1 -1
  255. package/core/dist/runtime-v2/recovery-actions-log.js +6 -0
  256. package/core/dist/runtime-v2/recovery-actions-log.js.map +1 -1
  257. package/core/dist/runtime-v2/runtime-protocol.js +1 -1
  258. package/core/dist/runtime-v2/runtime-protocol.js.map +1 -1
  259. package/core/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.js +17 -1
  260. package/core/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.js.map +1 -1
  261. package/core/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
  262. package/core/dist/runtime-v2/store/task/sqlite-task-store.js +10 -0
  263. package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
  264. package/core/dist/runtime-v2/store/task/task-types.d.ts +2 -0
  265. package/core/dist/runtime-v2/store/task/task-types.d.ts.map +1 -1
  266. package/core/dist/runtime-v2/task-status.d.ts +9 -5
  267. package/core/dist/runtime-v2/task-status.d.ts.map +1 -1
  268. package/core/dist/runtime-v2/task-status.js +15 -7
  269. package/core/dist/runtime-v2/task-status.js.map +1 -1
  270. package/core/dist/runtime-v2/types/event-types.d.ts +4 -0
  271. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  272. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  273. package/core/dist/runtime-v2/types/index.d.ts +1 -1
  274. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  275. package/core/dist/runtime-v2/types/index.js +1 -1
  276. package/core/dist/runtime-v2/types/index.js.map +1 -1
  277. package/core/dist/runtime-v2/types/principle-enums.d.ts +3 -2
  278. package/core/dist/runtime-v2/types/principle-enums.d.ts.map +1 -1
  279. package/core/dist/runtime-v2/types/principle-enums.js +11 -5
  280. package/core/dist/runtime-v2/types/principle-enums.js.map +1 -1
  281. package/core/dist/runtime-v2/types/principle-schema.d.ts +1 -1
  282. package/core/dist/runtime-v2/types/principle-tree-store.d.ts +1 -1
  283. package/core/dist/runtime-v2/utils/cli-process-runner.d.ts.map +1 -1
  284. package/core/dist/runtime-v2/utils/cli-process-runner.js +3 -2
  285. package/core/dist/runtime-v2/utils/cli-process-runner.js.map +1 -1
  286. package/core/package.json +4 -5
  287. package/dist/i18n.d.ts.map +1 -1
  288. package/dist/i18n.js +4 -2
  289. package/dist/i18n.js.map +1 -1
  290. package/dist/index.d.ts +2 -0
  291. package/dist/index.d.ts.map +1 -1
  292. package/dist/index.js +47 -11
  293. package/dist/index.js.map +1 -1
  294. package/dist/installer.d.ts +31 -5
  295. package/dist/installer.d.ts.map +1 -1
  296. package/dist/installer.js +472 -161
  297. package/dist/installer.js.map +1 -1
  298. package/dist/installers/codex-host-installer.d.ts.map +1 -1
  299. package/dist/installers/codex-host-installer.js +4 -0
  300. package/dist/installers/codex-host-installer.js.map +1 -1
  301. package/dist/mvp-config.d.ts +10 -0
  302. package/dist/mvp-config.d.ts.map +1 -1
  303. package/dist/mvp-config.js +30 -3
  304. package/dist/mvp-config.js.map +1 -1
  305. package/dist/uninstaller.d.ts +9 -1
  306. package/dist/uninstaller.d.ts.map +1 -1
  307. package/dist/uninstaller.js +103 -23
  308. package/dist/uninstaller.js.map +1 -1
  309. package/dist/update/atomic-file.d.ts +35 -0
  310. package/dist/update/atomic-file.d.ts.map +1 -0
  311. package/dist/update/atomic-file.js +120 -0
  312. package/dist/update/atomic-file.js.map +1 -0
  313. package/dist/update/bootstrap-protocol.d.ts +55 -0
  314. package/dist/update/bootstrap-protocol.d.ts.map +1 -0
  315. package/dist/update/bootstrap-protocol.js +132 -0
  316. package/dist/update/bootstrap-protocol.js.map +1 -0
  317. package/dist/update/channel-metadata.d.ts +28 -0
  318. package/dist/update/channel-metadata.d.ts.map +1 -0
  319. package/dist/update/channel-metadata.js +90 -0
  320. package/dist/update/channel-metadata.js.map +1 -0
  321. package/dist/update/channel-promotion.d.ts +39 -0
  322. package/dist/update/channel-promotion.d.ts.map +1 -0
  323. package/dist/update/channel-promotion.js +55 -0
  324. package/dist/update/channel-promotion.js.map +1 -0
  325. package/dist/update/data-compatibility.d.ts +35 -0
  326. package/dist/update/data-compatibility.d.ts.map +1 -0
  327. package/dist/update/data-compatibility.js +45 -0
  328. package/dist/update/data-compatibility.js.map +1 -0
  329. package/dist/update/install-layout.d.ts +59 -0
  330. package/dist/update/install-layout.d.ts.map +1 -0
  331. package/dist/update/install-layout.js +127 -0
  332. package/dist/update/install-layout.js.map +1 -0
  333. package/dist/update/legacy-migration.d.ts +56 -0
  334. package/dist/update/legacy-migration.d.ts.map +1 -0
  335. package/dist/update/legacy-migration.js +254 -0
  336. package/dist/update/legacy-migration.js.map +1 -0
  337. package/dist/update/product-identity.d.ts +50 -0
  338. package/dist/update/product-identity.d.ts.map +1 -0
  339. package/dist/update/product-identity.js +63 -0
  340. package/dist/update/product-identity.js.map +1 -0
  341. package/dist/update/release-asset-manifest.d.ts +31 -0
  342. package/dist/update/release-asset-manifest.d.ts.map +1 -0
  343. package/dist/update/release-asset-manifest.js +161 -0
  344. package/dist/update/release-asset-manifest.js.map +1 -0
  345. package/dist/update/release-identity.d.ts +33 -0
  346. package/dist/update/release-identity.d.ts.map +1 -0
  347. package/dist/update/release-identity.js +108 -0
  348. package/dist/update/release-identity.js.map +1 -0
  349. package/dist/update/release-manager.d.ts +96 -0
  350. package/dist/update/release-manager.d.ts.map +1 -0
  351. package/dist/update/release-manager.js +253 -0
  352. package/dist/update/release-manager.js.map +1 -0
  353. package/dist/update/release-metadata.d.ts +57 -0
  354. package/dist/update/release-metadata.d.ts.map +1 -0
  355. package/dist/update/release-metadata.js +200 -0
  356. package/dist/update/release-metadata.js.map +1 -0
  357. package/dist/update/release-policy.d.ts +51 -0
  358. package/dist/update/release-policy.d.ts.map +1 -0
  359. package/dist/update/release-policy.js +103 -0
  360. package/dist/update/release-policy.js.map +1 -0
  361. package/dist/update/rollback-policy.d.ts +56 -0
  362. package/dist/update/rollback-policy.d.ts.map +1 -0
  363. package/dist/update/rollback-policy.js +61 -0
  364. package/dist/update/rollback-policy.js.map +1 -0
  365. package/dist/update/transaction-journal.d.ts +121 -0
  366. package/dist/update/transaction-journal.d.ts.map +1 -0
  367. package/dist/update/transaction-journal.js +333 -0
  368. package/dist/update/transaction-journal.js.map +1 -0
  369. package/dist/update/trust-metadata.d.ts +55 -0
  370. package/dist/update/trust-metadata.d.ts.map +1 -0
  371. package/dist/update/trust-metadata.js +170 -0
  372. package/dist/update/trust-metadata.js.map +1 -0
  373. package/dist/update/update-history.d.ts +46 -0
  374. package/dist/update/update-history.d.ts.map +1 -0
  375. package/dist/update/update-history.js +123 -0
  376. package/dist/update/update-history.js.map +1 -0
  377. package/dist/utils/env.d.ts +7 -0
  378. package/dist/utils/env.d.ts.map +1 -1
  379. package/dist/utils/env.js +134 -44
  380. package/dist/utils/env.js.map +1 -1
  381. package/host-runtime/dist/governance-observation-store.d.ts +172 -0
  382. package/host-runtime/dist/governance-observation-store.js +649 -0
  383. package/host-runtime/dist/index.d.ts +6 -0
  384. package/host-runtime/dist/index.js +8 -0
  385. package/host-runtime/dist/product-telemetry/consent-store.d.ts +107 -0
  386. package/host-runtime/dist/product-telemetry/consent-store.js +329 -0
  387. package/host-runtime/dist/product-telemetry/eligibility.d.ts +53 -0
  388. package/host-runtime/dist/product-telemetry/eligibility.js +69 -0
  389. package/host-runtime/dist/product-telemetry/exporter.d.ts +46 -0
  390. package/host-runtime/dist/product-telemetry/exporter.js +71 -0
  391. package/host-runtime/dist/product-telemetry/milestone-readers.d.ts +61 -0
  392. package/host-runtime/dist/product-telemetry/milestone-readers.js +234 -0
  393. package/host-runtime/dist/product-telemetry/service.d.ts +142 -0
  394. package/host-runtime/dist/product-telemetry/service.js +532 -0
  395. package/host-runtime/dist/product-telemetry/workspace-scope.d.ts +38 -0
  396. package/host-runtime/dist/product-telemetry/workspace-scope.js +64 -0
  397. package/host-runtime/package.json +7 -2
  398. package/install-layout/dist/index.d.ts +48 -0
  399. package/install-layout/dist/index.js +81 -0
  400. package/install-layout/dist/index.test.d.ts +1 -0
  401. package/install-layout/dist/index.test.js +34 -0
  402. package/install-layout/package.json +33 -0
  403. package/package.json +16 -6
  404. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts +9 -0
  405. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts.map +1 -0
  406. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.js +76 -0
  407. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.js.map +1 -0
  408. package/pd-cli/dist/commands/__tests__/version.test.d.ts +2 -0
  409. package/pd-cli/dist/commands/__tests__/version.test.d.ts.map +1 -0
  410. package/pd-cli/dist/commands/__tests__/version.test.js +134 -0
  411. package/pd-cli/dist/commands/__tests__/version.test.js.map +1 -0
  412. package/pd-cli/dist/commands/console.d.ts.map +1 -1
  413. package/pd-cli/dist/commands/console.js +29 -10
  414. package/pd-cli/dist/commands/console.js.map +1 -1
  415. package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
  416. package/pd-cli/dist/commands/pain-record.js +6 -15
  417. package/pd-cli/dist/commands/pain-record.js.map +1 -1
  418. package/pd-cli/dist/commands/runtime-activation.d.ts +29 -0
  419. package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
  420. package/pd-cli/dist/commands/runtime-activation.js +70 -31
  421. package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
  422. package/pd-cli/dist/commands/runtime-internalization-enqueue-successors.d.ts.map +1 -1
  423. package/pd-cli/dist/commands/runtime-internalization-enqueue-successors.js +2 -2
  424. package/pd-cli/dist/commands/runtime-internalization-enqueue-successors.js.map +1 -1
  425. package/pd-cli/dist/commands/telemetry.d.ts +82 -0
  426. package/pd-cli/dist/commands/telemetry.d.ts.map +1 -0
  427. package/pd-cli/dist/commands/telemetry.js +268 -0
  428. package/pd-cli/dist/commands/telemetry.js.map +1 -0
  429. package/pd-cli/dist/commands/version.d.ts +11 -0
  430. package/pd-cli/dist/commands/version.d.ts.map +1 -0
  431. package/pd-cli/dist/commands/version.js +48 -0
  432. package/pd-cli/dist/commands/version.js.map +1 -0
  433. package/pd-cli/dist/index.js +35 -2
  434. package/pd-cli/dist/index.js.map +1 -1
  435. package/pd-cli/dist/services/version-report.d.ts +44 -0
  436. package/pd-cli/dist/services/version-report.d.ts.map +1 -0
  437. package/pd-cli/dist/services/version-report.js +152 -0
  438. package/pd-cli/dist/services/version-report.js.map +1 -0
  439. package/pd-cli/package.json +3 -2
  440. package/plugin/dist/bundle.js +870 -932
  441. package/plugin/dist/core/init.d.ts +2 -1
  442. package/plugin/dist/core/principle-application-ledger.d.ts +10 -0
  443. package/plugin/dist/core/product-telemetry-trigger.d.ts +14 -0
  444. package/plugin/dist/core/thinking-os-parser.d.ts +5 -2
  445. package/plugin/dist/governance-audit.js +386 -0
  446. package/plugin/dist/hooks/gate-block-helper.d.ts +25 -1
  447. package/plugin/dist/hooks/gate.d.ts +22 -0
  448. package/plugin/dist/openclaw.plugin.json +1 -1
  449. package/plugin/dist/rulehost-evidence.js +832 -0
  450. package/plugin/dist/templates/langs/en/principles/THINKING_OS.md +53 -45
  451. package/plugin/dist/templates/langs/en/skills/pd-mentor/SKILL.md +1 -1
  452. package/plugin/dist/templates/langs/zh/principles/THINKING_OS.md +62 -46
  453. package/plugin/dist/templates/langs/zh/skills/pd-mentor/SKILL.md +1 -1
  454. package/plugin/dist/templates/workspace/.principles/THINKING_OS.md +66 -38
  455. package/plugin/openclaw.plugin.json +1 -1
  456. package/plugin/package.json +1 -1
  457. package/plugin/templates/langs/en/principles/THINKING_OS.md +53 -45
  458. package/plugin/templates/langs/en/skills/pd-mentor/SKILL.md +1 -1
  459. package/plugin/templates/langs/zh/principles/THINKING_OS.md +62 -46
  460. package/plugin/templates/langs/zh/skills/pd-mentor/SKILL.md +1 -1
  461. package/plugin/templates/workspace/.principles/THINKING_OS.md +66 -38
@@ -130,7 +130,7 @@ function AuthRoutes() {
130
130
  }, []);
131
131
  return (_jsxs(Routes, { children: [_jsx(Route, { path: "/splash", element: _jsx(SplashScreen, { onComplete: () => {
132
132
  setShowSplash(false);
133
- } }) }), _jsx(Route, { path: "/login", element: _jsx(LoginForm, { onAuthSuccess: handleAuthSuccess }) }), _jsx(Route, { path: "/*", element: authed === null ? (_jsx("div", { className: "min-h-screen bg-paper flex items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center gap-4", children: [_jsx("div", { className: "w-8 h-8 border-2 border-gov border-t-transparent rounded-full animate-spin" }), _jsx("span", { className: "text-[12px] font-mono tracking-wider text-ink-3 uppercase", children: "Verifying Session..." })] }) })) : authed ? (_jsx(NotificationProvider, { children: _jsxs("div", { className: "min-h-screen bg-paper text-ink", children: [_jsx("a", { href: "#main-content", className: "sr-only focus:not-sr-only focus:absolute focus:z-50 focus:p-4 focus:bg-paper focus:text-ink", children: "Skip to main content" }), _jsx(AppSidebar, { featureFlags: featureFlags ?? undefined }), _jsx("main", { id: "main-content", className: "ml-[256px] min-h-screen overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsxs(Routes, { children: [_jsx(Route, { path: "/", element: _jsx(Navigate, { to: "/focus", replace: true }) }), _jsx(Route, { path: "/welcome", element: _jsx(WelcomePage, { workspaceId: currentWorkspaceId }) }), _jsx(Route, { path: "/focus", element: _jsx(FocusPage, {}) }), _jsx(Route, { path: "/pain", element: _jsx(PainPage, {}) }), _jsx(Route, { path: "/principles", element: _jsx(PrinciplesPage, {}) }), _jsx(Route, { path: "/principles/:id", element: _jsx(PrincipleDetailPage, {}) }), _jsx(Route, { path: "/activation", element: _jsx(ActivationPage, {}) }), _jsx(Route, { path: "/debt", element: _jsx(DebtPage, {}) }), _jsx(Route, { path: "/control-center", element: _jsx(ControlCenterPage, {}) }), _jsx(Route, { path: "/control-center/signal-keywords", element: _jsx(SignalKeywordsPage, {}) }), _jsx(Route, { path: "/settings", element: _jsx(SettingsPage, {}) }), _jsx(Route, { path: "/update", element: _jsx(UpdatePage, {}) }), _jsx(Route, { path: "/report-problem", element: _jsx(ReportProblemPage, {}) }), _jsx(Route, { path: "/failed-tasks", element: _jsx(FailedTasksPage, {}) }), _jsx(Route, { path: "/intent", element: _jsx(IntentPage, {}) }), IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(DesignSystemPage, {}) })), !IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(Navigate, { to: "/focus", replace: true }) }))] }) }) })] }) })) : (_jsx(Navigate, { to: "/login", replace: true })) })] }));
133
+ } }) }), _jsx(Route, { path: "/login", element: _jsx(LoginForm, { onAuthSuccess: handleAuthSuccess }) }), _jsx(Route, { path: "/*", element: authed === null ? (_jsx("div", { className: "min-h-screen bg-paper flex items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center gap-4", children: [_jsx("div", { className: "w-8 h-8 border-2 border-gov border-t-transparent rounded-full animate-spin" }), _jsx("span", { className: "text-[12px] font-mono tracking-wider text-ink-3 uppercase", children: "Verifying Session..." })] }) })) : authed ? (_jsx(NotificationProvider, { children: _jsxs("div", { className: "min-h-screen bg-paper text-ink", children: [_jsx("a", { href: "#main-content", className: "sr-only focus:not-sr-only focus:absolute focus:z-50 focus:p-4 focus:bg-paper focus:text-ink", children: "Skip to main content" }), _jsx(AppSidebar, { featureFlags: featureFlags ?? undefined }), _jsx("main", { id: "main-content", className: "ml-[256px] min-h-screen overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsxs(Routes, { children: [_jsx(Route, { path: "/", element: _jsx(Navigate, { to: "/focus", replace: true }) }), _jsx(Route, { path: "/welcome", element: _jsx(WelcomePage, { workspaceId: currentWorkspaceId }) }), _jsx(Route, { path: "/focus", element: _jsx(FocusPage, { featureFlags: featureFlags ?? undefined }) }), _jsx(Route, { path: "/pain", element: _jsx(PainPage, {}) }), _jsx(Route, { path: "/principles", element: _jsx(PrinciplesPage, {}) }), _jsx(Route, { path: "/principles/:id", element: _jsx(PrincipleDetailPage, {}) }), _jsx(Route, { path: "/activation", element: _jsx(ActivationPage, {}) }), _jsx(Route, { path: "/debt", element: _jsx(DebtPage, {}) }), _jsx(Route, { path: "/control-center", element: _jsx(ControlCenterPage, {}) }), _jsx(Route, { path: "/control-center/signal-keywords", element: _jsx(SignalKeywordsPage, {}) }), _jsx(Route, { path: "/settings", element: _jsx(SettingsPage, {}) }), _jsx(Route, { path: "/update", element: _jsx(UpdatePage, {}) }), _jsx(Route, { path: "/report-problem", element: _jsx(ReportProblemPage, {}) }), _jsx(Route, { path: "/failed-tasks", element: _jsx(FailedTasksPage, {}) }), _jsx(Route, { path: "/intent", element: _jsx(IntentPage, {}) }), IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(DesignSystemPage, {}) })), !IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(Navigate, { to: "/focus", replace: true }) }))] }) }) })] }) })) : (_jsx(Navigate, { to: "/login", replace: true })) })] }));
134
134
  }
135
135
  export function App() {
136
136
  return (_jsx(ThemeProvider, { children: _jsxs(I18nextProvider, { i18n: i18n, children: [_jsx(HashRouter, { children: _jsx(AuthRoutes, {}) }), _jsx(Toaster, {})] }) }));
@@ -1,6 +1,7 @@
1
1
  import type { ApiResponse } from "../types.js";
2
2
  import { listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm } from "./utils/signal-keywords-api.js";
3
- import type { OwnerGovernanceView } from '@principles/core/runtime-v2';
3
+ import type { GovernanceExperienceSnapshot, OwnerGovernanceView } from '@principles/core/runtime-v2';
4
+ import type { OwnerIdentityViewData, OwnerIdentityRegisterData, OwnerIdentityUnregisterData } from "./utils/validators.js";
4
5
  import type { FeedbackReportData, FeedbackDraftSummaryData, FeedbackDraftEnvelopeData, FeedbackChannelsData, FeedbackSubmitResultData, DeleteEnvelopeData, WorkspaceEntryData, RemovedEnvelopeData, SyncResultData, ConfigSummaryData, ConfigCatalogData, AgentBindingUpdateData, DefaultRuntimeUpdateData, RuntimeProfileMutationData, ReadinessCheckData, FeatureFlagUpdateData, OutputLanguageData, GovernanceQueueData, RecoveryResultData, ActivationsData, DisableActivationData, LifecycleMetricsData, UpdateStatusData, UpdateHistoryData, ApplyUpdateResultData, RollbackResultData, ApprovalRecordData, PrinciplesListData, ApprovalsGroupedData, EvidenceChainData, TrajectoryData, IntentSummaryData, IntentDecisionRecordData, IntentDecisionResultData, IntentDecisionSummaryData, FollowUpResponseData, IntentInitResultData, IntentSaveResultData, IntentRawContentData, IntentVersionData, RuleCodeOwnerReviewData, RuleCodeMutationData } from "./utils/validators.js";
5
6
  declare function getToken(): string | null;
6
7
  declare function setToken(token: string): void;
@@ -48,6 +49,7 @@ export interface PrincipleReceiptsData {
48
49
  presenceCount: number;
49
50
  lastEffectAt: string | null;
50
51
  events: ReceiptEventData[];
52
+ coverage: ReceiptEvidenceCoverageData;
51
53
  }
52
54
  export interface ReceiptCountEntryData {
53
55
  principleId: string;
@@ -60,6 +62,18 @@ export interface ReceiptCountsData {
60
62
  reason?: string;
61
63
  nextAction?: string;
62
64
  counts: ReceiptCountEntryData[];
65
+ coverage: ReceiptEvidenceCoverageData;
66
+ }
67
+ export type ReceiptSourceStatusData = "available" | "disabled" | "unavailable";
68
+ export type ReceiptValidationStatusData = "valid" | "partial" | "malformed";
69
+ export interface ReceiptEvidenceCoverageData {
70
+ sourceStatus: ReceiptSourceStatusData;
71
+ validationStatus: ReceiptValidationStatusData;
72
+ observedFrom: string | null;
73
+ asOf: string;
74
+ retentionPolicyDays: number;
75
+ reasonCode?: string;
76
+ nextActionCode?: string;
63
77
  }
64
78
  declare function fetchPrincipleReceipts(principleId: string): Promise<ApiResponse<PrincipleReceiptsData>>;
65
79
  declare function fetchReceiptCounts(): Promise<ApiResponse<ReceiptCountsData>>;
@@ -84,6 +98,9 @@ declare function fetchConfigSummary(): Promise<ApiResponse<ConfigSummaryData>>;
84
98
  declare function fetchConfigCatalog(): Promise<ApiResponse<ConfigCatalogData>>;
85
99
  declare function updateAgentBinding(agentName: string, runtimeProfile: string, enabled: boolean): Promise<ApiResponse<AgentBindingUpdateData>>;
86
100
  declare function updateDefaultRuntime(defaultRuntime: string): Promise<ApiResponse<DefaultRuntimeUpdateData>>;
101
+ export declare function fetchOwnerIdentity(): Promise<ApiResponse<OwnerIdentityViewData>>;
102
+ export declare function registerOwnerIdentity(ownerId: string, credentialId: string): Promise<ApiResponse<OwnerIdentityRegisterData>>;
103
+ export declare function unregisterOwnerIdentity(): Promise<ApiResponse<OwnerIdentityUnregisterData>>;
87
104
  /**
88
105
  * Create a new runtime profile.
89
106
  *
@@ -129,7 +146,8 @@ declare function patchFeatureFlag(featureName: string, enabled: boolean): Promis
129
146
  declare function fetchOutputLanguage(): Promise<ApiResponse<OutputLanguageData>>;
130
147
  declare function updateOutputLanguage(outputLanguage: string): Promise<ApiResponse<OutputLanguageData>>;
131
148
  declare function fetchGovernanceQueue(): Promise<ApiResponse<GovernanceQueueData>>;
132
- declare function recoverFailedTask(taskId: string, reason?: string): Promise<ApiResponse<RecoveryResultData>>;
149
+ declare function fetchGovernanceExperience(): Promise<ApiResponse<GovernanceExperienceSnapshot>>;
150
+ declare function recoverFailedTask(taskId: string, reason?: string, force?: boolean): Promise<ApiResponse<RecoveryResultData>>;
133
151
  declare function fetchApprovalsGrouped(): Promise<ApiResponse<ApprovalsGroupedData>>;
134
152
  declare function fetchAllActivations(): Promise<ApiResponse<ActivationsData>>;
135
153
  declare function disableActivation(activationId: string): Promise<ApiResponse<DisableActivationData>>;
@@ -196,7 +214,7 @@ export interface FollowUpPayload {
196
214
  candidateId?: string;
197
215
  }
198
216
  declare function dispatchFollowUp(decisionId: string, payload: FollowUpPayload): Promise<ApiResponse<FollowUpResponseData>>;
199
- export { request, listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm, getToken, setToken, clearToken, checkAuth, approveApproval, rejectApproval, editApproval, fetchPrinciples, fetchPrincipleDetail, fetchPrincipleGovernance, fetchPrincipleTrajectory, fetchPrincipleReceipts, fetchReceiptCounts, archivePrinciple, unarchivePrinciple, createFeedbackReport, listFeedbackReports, getFeedbackReport, deleteFeedbackReport, fetchFeedbackChannels, submitFeedbackReport, markFeedbackReportSent, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, createRuntimeProfile, updateRuntimeProfile, deleteRuntimeProfile, fetchAgentReadiness, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, recoverFailedTask, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchRuleCodeOwnerReview, ruleCodeDecision, pauseAllRuleCode, releaseRuleCodePause, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, applyFullUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
217
+ export { request, listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm, getToken, setToken, clearToken, checkAuth, approveApproval, rejectApproval, editApproval, fetchPrinciples, fetchPrincipleDetail, fetchPrincipleGovernance, fetchPrincipleTrajectory, fetchPrincipleReceipts, fetchReceiptCounts, archivePrinciple, unarchivePrinciple, createFeedbackReport, listFeedbackReports, getFeedbackReport, deleteFeedbackReport, fetchFeedbackChannels, submitFeedbackReport, markFeedbackReportSent, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, createRuntimeProfile, updateRuntimeProfile, deleteRuntimeProfile, fetchAgentReadiness, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, fetchGovernanceExperience, recoverFailedTask, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchRuleCodeOwnerReview, ruleCodeDecision, pauseAllRuleCode, releaseRuleCodePause, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, applyFullUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
200
218
  export type { FeedbackReportData, FeedbackDraftSummaryData, FeedbackDraftEnvelopeData, FeedbackChannelsData, FeedbackSubmitResultData, DeleteEnvelopeData, WorkspaceEntryData, RemovedEnvelopeData, SyncResultData, ConfigSummaryData, ConfigCatalogData, AgentBindingUpdateData, DefaultRuntimeUpdateData, RuntimeProfileMutationData, ReadinessCheckData, FeatureFlagUpdateData, OutputLanguageData, GovernanceQueueData, RecoveryResultData, ActivationsData, DisableActivationData, RuleCodeOwnerReviewData, RuleCodeMutationData, LifecycleMetricsData, UpdateStatusData, UpdateHistoryData, ApplyUpdateResultData, RollbackResultData, ApprovalRecordData, PrinciplesListData, ApprovalsGroupedData, EvidenceChainData, EvidenceChainRecordData, EvidenceChainStateData, TrajectoryData, TrajectoryStageData, IntentSummaryData, IntentSectionsData, IntentDocWarningData, IntentDecisionRecordData, IntentDecisionResultData, IntentDecisionSummaryData, FollowUpResponseData, LinkCandidateFollowUpData, GuideRulehostFollowUpData, GeneratePatchProposalFollowUpData, IntentVersionEntry, IntentVersionData, } from "./utils/validators.js";
201
219
  export type { SignalKeyword, PendingSignalTerm } from "./utils/signal-keywords-types.js";
202
220
  export type { ActivationRecordData as ActivationRecord } from "./utils/validators.js";
@@ -213,6 +231,7 @@ export type { RedactedFeatureSummaryData as RedactedFeatureSummary } from "./uti
213
231
  export type { RedactedAgentSummaryData as RedactedAgentSummary } from "./utils/validators.js";
214
232
  export type { UpdateHistoryEntryData as UpdateHistoryEntry } from "./utils/validators.js";
215
233
  export type { ReadinessStatus } from "./utils/validators.js";
234
+ export type { OwnerIdentityViewData, OwnerIdentityRegisterData, OwnerIdentityUnregisterData } from "./utils/validators.js";
216
235
  export type { ConfigSource } from "./utils/validators.js";
217
236
  export interface PrincipleDetail {
218
237
  id: string;
@@ -1,5 +1,5 @@
1
1
  import { listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm, } from "./utils/signal-keywords-api.js";
2
- import { validateErrorResponse, validateHeaders, validateFeedbackReport, validateFeedbackDraftsList, validateFeedbackDraftEnvelope, validateFeedbackChannels, validateFeedbackSubmitResult, validateDeleteEnvelope, validateWorkspaceEntry, validateWorkspaceList, validateRemovedEnvelope, validateSyncResult, validateConfigSummary, validateConfigCatalog, validateAgentBindingUpdate, validateDefaultRuntimeUpdate, validateRuntimeProfileMutation, validateReadinessCheck, validateFeatureFlagUpdate, validateOutputLanguage, validateGovernanceQueue, validateRecoveryResult, validateActivations, validateDisableActivation, validateLifecycleMetrics, validateUpdateStatus, validateUpdateHistory, validateApplyUpdateResult, validateRollbackResult, validateApprovalRecordDirect, validatePrinciplesList, validateApprovalsGrouped, validateEvidenceChain, validateTrajectoryData, validateIntentSummary, validateIntentDecisionList, validateIntentDecisionResult, validateIntentDecisionSummary, validateFollowUpResponse, validateIntentInitResult, validateIntentSaveResult, validateIntentRawContent, validateIntentVersions, validateOwnerGovernanceView, validateRuleCodeOwnerReview, validateRuleCodeMutation, } from "./utils/validators.js";
2
+ import { validateErrorResponse, validateHeaders, validateFeedbackReport, validateFeedbackDraftsList, validateFeedbackDraftEnvelope, validateFeedbackChannels, validateFeedbackSubmitResult, validateDeleteEnvelope, validateWorkspaceEntry, validateWorkspaceList, validateRemovedEnvelope, validateSyncResult, validateConfigSummary, validateConfigCatalog, validateAgentBindingUpdate, validateDefaultRuntimeUpdate, validateRuntimeProfileMutation, validateReadinessCheck, validateFeatureFlagUpdate, validateOutputLanguage, validateGovernanceQueue, validateRecoveryResult, validateActivations, validateDisableActivation, validateLifecycleMetrics, validateUpdateStatus, validateUpdateHistory, validateApplyUpdateResult, validateRollbackResult, validateApprovalRecordDirect, validatePrinciplesList, validateApprovalsGrouped, validateEvidenceChain, validateTrajectoryData, validateIntentSummary, validateIntentDecisionList, validateIntentDecisionResult, validateIntentDecisionSummary, validateFollowUpResponse, validateIntentInitResult, validateIntentSaveResult, validateIntentRawContent, validateIntentVersions, validateOwnerGovernanceView, validateGovernanceExperienceSnapshot, validateRuleCodeOwnerReview, validateRuleCodeMutation, validateOwnerIdentityView, validateOwnerIdentityRegister, validateOwnerIdentityUnregister, } from "./utils/validators.js";
3
3
  // ── Auth ──────────────────────────────────────────────────────────────────────
4
4
  function getToken() {
5
5
  return sessionStorage.getItem("pd_token");
@@ -136,6 +136,32 @@ async function unarchivePrinciple(principleId) {
136
136
  async function fetchPrincipleTrajectory(principleId) {
137
137
  return request(`/api/principles/${encodeURIComponent(principleId)}/trajectory`, undefined, validateTrajectoryData);
138
138
  }
139
+ const RECEIPT_SOURCE_STATUSES = new Set(["available", "disabled", "unavailable"]);
140
+ const RECEIPT_VALIDATION_STATUSES = new Set(["valid", "partial", "malformed"]);
141
+ function validateReceiptCoverage(value) {
142
+ if (typeof value !== "object" || value === null)
143
+ return null;
144
+ const rec = value;
145
+ if (typeof rec.sourceStatus !== "string" || !RECEIPT_SOURCE_STATUSES.has(rec.sourceStatus))
146
+ return null;
147
+ if (typeof rec.validationStatus !== "string" || !RECEIPT_VALIDATION_STATUSES.has(rec.validationStatus))
148
+ return null;
149
+ if (rec.observedFrom !== null && typeof rec.observedFrom !== "string")
150
+ return null;
151
+ if (typeof rec.asOf !== "string")
152
+ return null;
153
+ if (typeof rec.retentionPolicyDays !== "number")
154
+ return null;
155
+ return {
156
+ sourceStatus: rec.sourceStatus,
157
+ validationStatus: rec.validationStatus,
158
+ observedFrom: rec.observedFrom,
159
+ asOf: rec.asOf,
160
+ retentionPolicyDays: rec.retentionPolicyDays,
161
+ ...(typeof rec.reasonCode === "string" ? { reasonCode: rec.reasonCode } : {}),
162
+ ...(typeof rec.nextActionCode === "string" ? { nextActionCode: rec.nextActionCode } : {}),
163
+ };
164
+ }
139
165
  const RECEIPT_KINDS = new Set(["rule_blocked", "auto_correct_applied", "self_reported", "prompt_injected"]);
140
166
  function validateReceiptEvent(value) {
141
167
  if (typeof value !== "object" || value === null)
@@ -164,6 +190,11 @@ function validatePrincipleReceipts(data) {
164
190
  const rec = data;
165
191
  if (typeof rec.principleId !== "string")
166
192
  return null;
193
+ // PRI-590: coverage is a required field of the receipt contract — a missing
194
+ // or malformed block means server/client contract skew; reject loudly.
195
+ const coverage = validateReceiptCoverage(rec.coverage);
196
+ if (coverage === null)
197
+ return null;
167
198
  const events = [];
168
199
  if (Array.isArray(rec.events)) {
169
200
  for (const item of rec.events) {
@@ -181,12 +212,16 @@ function validatePrincipleReceipts(data) {
181
212
  presenceCount: typeof rec.presenceCount === "number" ? rec.presenceCount : 0,
182
213
  lastEffectAt: typeof rec.lastEffectAt === "string" ? rec.lastEffectAt : null,
183
214
  events,
215
+ coverage,
184
216
  };
185
217
  }
186
218
  function validateReceiptCounts(data) {
187
219
  if (typeof data !== "object" || data === null)
188
220
  return null;
189
221
  const rec = data;
222
+ const coverage = validateReceiptCoverage(rec.coverage);
223
+ if (coverage === null)
224
+ return null;
190
225
  const counts = [];
191
226
  if (Array.isArray(rec.counts)) {
192
227
  for (const item of rec.counts) {
@@ -208,6 +243,7 @@ function validateReceiptCounts(data) {
208
243
  reason: typeof rec.reason === "string" ? rec.reason : undefined,
209
244
  nextAction: typeof rec.nextAction === "string" ? rec.nextAction : undefined,
210
245
  counts,
246
+ coverage,
211
247
  };
212
248
  }
213
249
  async function fetchPrincipleReceipts(principleId) {
@@ -305,6 +341,19 @@ async function updateDefaultRuntime(defaultRuntime) {
305
341
  body: JSON.stringify({ defaultRuntime }),
306
342
  }, validateDefaultRuntimeUpdate);
307
343
  }
344
+ // ── Owner identity (ADR-0022 / PRI-578) ──────────────────────────────────────
345
+ export async function fetchOwnerIdentity() {
346
+ return request('/api/v1/owner-identity', undefined, validateOwnerIdentityView);
347
+ }
348
+ export async function registerOwnerIdentity(ownerId, credentialId) {
349
+ return request('/api/v1/owner-identity', {
350
+ method: 'POST',
351
+ body: JSON.stringify({ ownerId, credentialId }),
352
+ }, validateOwnerIdentityRegister);
353
+ }
354
+ export async function unregisterOwnerIdentity() {
355
+ return request('/api/v1/owner-identity', { method: 'DELETE' }, validateOwnerIdentityUnregister);
356
+ }
308
357
  // ── Runtime Profile CRUD (POST/PATCH/DELETE /api/v1/config/profiles) ──────────
309
358
  /**
310
359
  * Create a new runtime profile.
@@ -382,13 +431,24 @@ async function updateOutputLanguage(outputLanguage) {
382
431
  async function fetchGovernanceQueue() {
383
432
  return request('/api/v1/governance/queue', undefined, validateGovernanceQueue);
384
433
  }
434
+ // PRI-586: read-only governance experience snapshot. Only called when the
435
+ // governance_experience_v1 flag is enabled — flag-off the endpoint 403s and
436
+ // the Console keeps the legacy Focus experience (ERR-102: disabled ≠ unavailable).
437
+ async function fetchGovernanceExperience() {
438
+ return request('/api/v1/governance/experience', undefined, validateGovernanceExperienceSnapshot);
439
+ }
385
440
  // Governance Recovery Actions v1: Owner-triggered recovery of a failed /
386
441
  // needs_human_review internalization task (failed→pending | needs_human_review→pending).
387
- async function recoverFailedTask(taskId, reason) {
442
+ // force=true recovers a task whose attempt budget is exhausted (core raises
443
+ // its maxAttempts); it only affects the failed path.
444
+ async function recoverFailedTask(taskId, reason, force) {
388
445
  const body = {};
389
446
  if (reason !== undefined && reason.length > 0) {
390
447
  body.reason = reason;
391
448
  }
449
+ if (force === true) {
450
+ body.force = true;
451
+ }
392
452
  return request('/api/v1/failed-tasks/' + encodeURIComponent(taskId) + '/recover', {
393
453
  method: 'POST',
394
454
  body: JSON.stringify(body),
@@ -510,4 +570,4 @@ listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendin
510
570
  // auth
511
571
  getToken, setToken, clearToken, checkAuth, approveApproval, rejectApproval, editApproval, fetchPrinciples, fetchPrincipleDetail, fetchPrincipleGovernance, fetchPrincipleTrajectory, fetchPrincipleReceipts, fetchReceiptCounts, archivePrinciple, unarchivePrinciple, createFeedbackReport, listFeedbackReports, getFeedbackReport, deleteFeedbackReport,
512
572
  // Feedback submit ladder (Slice 3, spec §8)
513
- fetchFeedbackChannels, submitFeedbackReport, markFeedbackReportSent, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, createRuntimeProfile, updateRuntimeProfile, deleteRuntimeProfile, fetchAgentReadiness, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, recoverFailedTask, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchRuleCodeOwnerReview, ruleCodeDecision, pauseAllRuleCode, releaseRuleCodePause, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, applyFullUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
573
+ fetchFeedbackChannels, submitFeedbackReport, markFeedbackReportSent, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, createRuntimeProfile, updateRuntimeProfile, deleteRuntimeProfile, fetchAgentReadiness, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, fetchGovernanceExperience, recoverFailedTask, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchRuleCodeOwnerReview, ruleCodeDecision, pauseAllRuleCode, releaseRuleCodePause, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, applyFullUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
@@ -0,0 +1,6 @@
1
+ import type { ReceiptEvidenceCoverageData, ReceiptSourceStatusData } from "../../api.js";
2
+ /** Localized label key for a source status — shared by the degraded notes. */
3
+ export declare function getReceiptSourceStatusLabelKey(status: ReceiptSourceStatusData): string;
4
+ export declare function ReceiptCoverageDisclosure({ coverage }: {
5
+ coverage: ReceiptEvidenceCoverageData;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Receipt evidence coverage disclosure — PRI-590.
4
+ *
5
+ * Shared block that explains what receipt numbers MEAN: source status,
6
+ * observed range, retention policy, and the "observed evidence, not full
7
+ * history" limitation. Used by the PrincipleDetail receipt section and the
8
+ * Activation page counts context.
9
+ *
10
+ * Never displays file paths, digests, raw payloads, or tool arguments.
11
+ *
12
+ * Keys use full paths ("pages.principles.…") because this component binds
13
+ * useTranslation() to the default `common` namespace, which carries the
14
+ * whole locale tree — usable from pages that pick other namespaces.
15
+ */
16
+ import { useTranslation } from "react-i18next";
17
+ import { formatDate } from "../../utils/format-date.js";
18
+ // ERR-106: exhaustive Records over the status unions — a binary ternary would
19
+ // fold one member into a default and misrepresent its state.
20
+ const SOURCE_STATUS_LABEL_KEYS = {
21
+ available: "pages.principles.detail.receipts.coverage.statusAvailable",
22
+ disabled: "pages.principles.detail.receipts.coverage.statusDisabled",
23
+ unavailable: "pages.principles.detail.receipts.coverage.statusUnavailable",
24
+ };
25
+ const SOURCE_STATUS_PILL_CLASS = {
26
+ available: "border-green/35 text-green bg-green/5",
27
+ disabled: "border-amber/35 text-amber bg-amber/5",
28
+ unavailable: "border-line text-ink-4 bg-surface/80",
29
+ };
30
+ const VALIDATION_NOTE_KEYS = {
31
+ valid: null,
32
+ partial: "pages.principles.detail.receipts.coverage.validationPartial",
33
+ malformed: "pages.principles.detail.receipts.coverage.validationMalformed",
34
+ };
35
+ /**
36
+ * reasonCode → localized phrase. Owner-facing copy must not leak snake_case
37
+ * technical codes (review round 2). A Map (not a plain object) because the
38
+ * lookup key comes from the API payload — no prototype-chain exposure
39
+ * (EP-01/ERR-013). Unknown codes fall back to the raw code — fail-visible
40
+ * rather than blank, so the debug clue survives.
41
+ */
42
+ const REASON_CODE_LABEL_KEYS = new Map([
43
+ ["receipt_rows_dropped", "pages.principles.detail.receipts.coverage.reasonCodes.receiptRowsDropped"],
44
+ ["ledger_level_invalid", "pages.principles.detail.receipts.coverage.reasonCodes.ledgerLevelInvalid"],
45
+ ["ledger_counts_unreadable", "pages.principles.detail.receipts.coverage.reasonCodes.ledgerCountsUnreadable"],
46
+ ]);
47
+ /** Localized label key for a source status — shared by the degraded notes. */
48
+ export function getReceiptSourceStatusLabelKey(status) {
49
+ return SOURCE_STATUS_LABEL_KEYS[status];
50
+ }
51
+ export function ReceiptCoverageDisclosure({ coverage }) {
52
+ const { t, i18n } = useTranslation();
53
+ const validationNoteKey = VALIDATION_NOTE_KEYS[coverage.validationStatus];
54
+ // Known codes render as a localized phrase; unknown codes fall back to the
55
+ // raw code in parentheses (fail-visible debug clue, never a blank verdict).
56
+ let reasonSuffix = null;
57
+ if (coverage.reasonCode !== undefined) {
58
+ const labelKey = REASON_CODE_LABEL_KEYS.get(coverage.reasonCode);
59
+ reasonSuffix = labelKey !== undefined ? ` — ${t(labelKey)}` : ` (${coverage.reasonCode})`;
60
+ }
61
+ return (_jsxs("div", { "data-testid": "receipt-coverage", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "font-mono text-[11px] uppercase tracking-[0.08em] text-ink-4", children: t("pages.principles.detail.receipts.coverage.label") }), _jsx("span", { className: `inline-flex items-center border rounded-[2px] px-[7px] py-0.5 font-mono text-[11px] uppercase ${SOURCE_STATUS_PILL_CLASS[coverage.sourceStatus]}`, children: t(SOURCE_STATUS_LABEL_KEYS[coverage.sourceStatus]) })] }), _jsxs("p", { className: "mt-1.5 text-[11px] leading-relaxed text-ink-4", children: [coverage.observedFrom !== null
62
+ ? t("pages.principles.detail.receipts.coverage.observedSince", {
63
+ date: formatDate(coverage.observedFrom, i18n.language),
64
+ })
65
+ : t("pages.principles.detail.receipts.coverage.observedSinceEmpty"), " · ", t("pages.principles.detail.receipts.coverage.asOf", { date: formatDate(coverage.asOf, i18n.language) }), " · ", t("pages.principles.detail.receipts.coverage.retention", { days: coverage.retentionPolicyDays })] }), _jsx("p", { className: "mt-1 text-[11px] leading-relaxed text-ink-4", children: t("pages.principles.detail.receipts.coverage.limitation") }), validationNoteKey !== null && (_jsxs("p", { "data-testid": "receipt-coverage-validation", className: "mt-1 text-[11px] leading-relaxed text-amber", children: [t(validationNoteKey), reasonSuffix] }))] }));
66
+ }
@@ -136,6 +136,90 @@
136
136
  "degraded": "Degraded"
137
137
  },
138
138
  "nextActionLabel": "Suggested action:",
139
+ "experience": {
140
+ "attention": {
141
+ "setupRequired": "Setup Required",
142
+ "ownerDecisionRequired": "Owner Decision Required",
143
+ "recoveryRequired": "Recovery Required",
144
+ "degraded": "Degraded",
145
+ "backgroundProcessing": "Background Processing",
146
+ "allClear": "All Clear"
147
+ },
148
+ "reason": {
149
+ "ownerIdentityMissing": "The Owner identity is not configured. RuleCode governance decisions are blocked until PD_OWNER_ID and PD_OWNER_CREDENTIAL_ID are set and the console token auth is enabled.",
150
+ "approvalPending": "Principle approvals are waiting for your decision.",
151
+ "rulecodeOwnerDecision": "RuleCode shadow activations are waiting for your promotion decision.",
152
+ "noPendingDecision": "No principle approval is waiting right now.",
153
+ "ownerDecisionAvailable": "The configured Owner holds the governance decision entry.",
154
+ "breakGlassEntry": "Emergency pause currently resolves through the local break-glass path because no Owner identity is configured.",
155
+ "recoveryRequired": "Some governance work stalled and needs recovery before it can continue.",
156
+ "sourceUnavailable": "A required governance source is unavailable, so ongoing work cannot progress.",
157
+ "configInvalid": "The workspace config file is invalid; the environment classification is unknown.",
158
+ "processing": "Governance work is running in the background. No decision is needed right now.",
159
+ "workspaceClear": "All governance work is settled. Nothing needs your attention.",
160
+ "workspaceEmpty": "No governance records yet. PD will populate this view once the pipeline runs."
161
+ },
162
+ "next": {
163
+ "configureOwner": "Configure PD_OWNER_ID and PD_OWNER_CREDENTIAL_ID, then enable console token auth.",
164
+ "reviewApprovals": "Review the pending decisions below.",
165
+ "inspectRecovery": "Open Failed Tasks and recover the stalled work.",
166
+ "inspectSources": "Inspect state.db and the principle ledger, then restart the console.",
167
+ "fixConfig": "Fix the invalid keys in .pd/config.yaml.",
168
+ "monitor": "Nothing to do — PD will surface the next decision here.",
169
+ "none": "Nothing to do right now."
170
+ },
171
+ "ownerGuide": {
172
+ "title": "Set the Owner identity",
173
+ "intro": "Copy the command below and run it in the shell that launches OpenClaw and the PD Console (replace <owner-id> and <credential-id> with your own IDs), then restart both.",
174
+ "tokenAuthHint": "Console token authentication (--token or PD_CONSOLE_TOKEN) is also required for the identity to take effect; if not enabled yet, complete that step per the configuration guide.",
175
+ "cmdPowerShell": "PowerShell (Windows)",
176
+ "cmdBash": "bash (macOS / Linux)",
177
+ "copy": "Copy",
178
+ "copied": "Copied",
179
+ "docLink": "Configuration guide and verification →"
180
+ },
181
+ "activity": {
182
+ "needsDecision": "{{count}} decision(s) waiting",
183
+ "needsRecovery": "{{count}} item(s) need recovery",
184
+ "blocked": "Progress is blocked by an unavailable source",
185
+ "processing": "Background processing ({{count}})"
186
+ },
187
+ "readiness": {
188
+ "identity": {
189
+ "configured": "Owner identity: configured",
190
+ "missing": "Owner identity: missing"
191
+ },
192
+ "principleApproval": "Principle approvals: operator entry",
193
+ "rulecode": {
194
+ "ready": "RuleCode decisions: Owner entry",
195
+ "blocked": "RuleCode decisions: blocked (no Owner identity)"
196
+ },
197
+ "pause": {
198
+ "owner": "Emergency pause: Owner entry",
199
+ "breakGlass": "Emergency pause: break-glass entry"
200
+ }
201
+ },
202
+ "trust": {
203
+ "environment": {
204
+ "production": "Environment: production",
205
+ "development": "Environment: development",
206
+ "demo": "Environment: demo",
207
+ "test": "Environment: test",
208
+ "unknown": "Environment: unknown"
209
+ },
210
+ "lineage": {
211
+ "strong": "Lineage confidence: strong",
212
+ "weak": "Lineage confidence: weak",
213
+ "unknown": "Lineage confidence: unknown"
214
+ }
215
+ },
216
+ "dataQuality": {
217
+ "degraded": "Data quality degraded — e.g. {{reasonCode}} ({{count}} occurrence(s)). Some explanations may be incomplete."
218
+ },
219
+ "error": {
220
+ "snapshotUnavailable": "The governance experience snapshot could not be loaded."
221
+ }
222
+ },
139
223
  "inProgressTitle": "Governance in progress",
140
224
  "inProgressDetail": "PD will surface a principle candidate here once the internalization pipeline completes and an owner-reviewable artifact is generated.",
141
225
  "degradedTitle": "System Signals",
@@ -452,6 +536,24 @@
452
536
  "empty": "No recent records — this principle has not been triggered at runtime yet.",
453
537
  "note": "Two levels: Effect = the principle actually changed behavior (block / auto-correction / agent self-report); Presence = the principle entered task context (gray rows). Presence in a decision ≠ changed behavior. Self-reports are probabilistic agent claims, listed separately from deterministic events.",
454
538
  "unavailableReason": "Receipt history is unavailable right now.",
539
+ "coverage": {
540
+ "label": "Evidence coverage",
541
+ "statusAvailable": "Available",
542
+ "statusDisabled": "Receipt collection disabled",
543
+ "statusUnavailable": "Receipt data unavailable",
544
+ "observedSince": "Observed since {{date}}",
545
+ "observedSinceEmpty": "No records retained",
546
+ "asOf": "as of {{date}}",
547
+ "retention": "retention {{days}} days",
548
+ "limitation": "Historical completeness cannot be guaranteed — counts show currently retained evidence, not full history.",
549
+ "validationPartial": "Some records could not be displayed.",
550
+ "validationMalformed": "Receipt data requires recovery — counts may be unreliable.",
551
+ "reasonCodes": {
552
+ "receiptRowsDropped": "some rows were skipped during validation",
553
+ "ledgerLevelInvalid": "records with an invalid level exist",
554
+ "ledgerCountsUnreadable": "counts could not be read"
555
+ }
556
+ },
455
557
  "kind": {
456
558
  "rule_blocked": "Block",
457
559
  "auto_correct_applied": "Auto-correct",
@@ -508,6 +610,7 @@
508
610
  "process": "Current stage",
509
611
  "automation": "Automation",
510
612
  "nextAction": "Next safe action",
613
+ "nextActionLabel": "Next action:",
511
614
  "blockers": "Needs attention",
512
615
  "uncertainty": "Evidence uncertainty",
513
616
  "provenance": "Canonical evidence references",
@@ -636,8 +739,59 @@
636
739
  "safetyIsolation": "Safety Isolation",
637
740
  "runtimeCapability": "Runtime {{version}} · shadow evidence {{supported}}",
638
741
  "supported": "supported",
639
- "unsupported": "unsupported",
640
- "hardSafetyChecks": "Promotion safety checks",
742
+ "unsupported": "Unsupported",
743
+ "checks": {
744
+ "bounded_scope": "Bounded Tool Scope",
745
+ "runtime_compatibility": "Runtime Compatibility",
746
+ "host_liveness_composition": "Host Liveness Composition",
747
+ "emergency_controls": "Emergency Controls Health",
748
+ "runtime_shadow_evidence": "Runtime Shadow Evidence",
749
+ "owner_identity_configuration": "Owner Identity Configuration",
750
+ "activation_eligibility": "Activation Eligibility",
751
+ "lineage_binding": "Lineage & Artifact Binding",
752
+ "production_compile_load": "Production Compile & Load",
753
+ "golden_trace": "Golden Trace Evaluation",
754
+ "evidence_binding": "Evidence Binding"
755
+ },
756
+ "checkStatus": {
757
+ "passed": "Passed",
758
+ "failed": "Failed"
759
+ },
760
+ "reasonCodes": {
761
+ "required_check_missing": "Required safety check result missing",
762
+ "duplicate_check_result": "Duplicate check result recorded",
763
+ "runtime_shadow_evidence_unsupported": "Host runtime does not support shadow evidence collection",
764
+ "explicit_affected_tools_required": "Explicit affected tools must be defined",
765
+ "host_liveness_contract_missing_invalid_or_unsupported": "Host liveness contract is missing, invalid, or unsupported",
766
+ "neutral_probe_or_live_composition_failed": "Neutral probe or live composition check failed",
767
+ "neutral_probe_blocked": "Neutral probe was blocked by RuleCode",
768
+ "safety_controls_disabled": "Durable RuleCode safety controls are disabled",
769
+ "out_of_band_controls_unavailable": "Out-of-band emergency controls are unavailable",
770
+ "configured_owner_missing": "Configured Owner credential is missing or unverified",
771
+ "unresolved_shadow_unhealthy_evidence": "Unresolved runtime errors recorded during shadow observation",
772
+ "shadow_telemetry_source_unavailable": "Shadow telemetry source is missing or unreadable",
773
+ "artifact_digest_mismatch": "Artifact digest does not match the active version",
774
+ "active_shadow_activation_required": "Active shadow activation required for promotion",
775
+ "activation_not_unique": "Multiple active activations found",
776
+ "activation_artifact_mismatch": "Activation artifact does not match review subject",
777
+ "artifact_lineage_missing": "Artifact lineage (source task or parent artifacts) is missing",
778
+ "artifact_not_found": "Artifact not found in safety store",
779
+ "hard_check_failed": "Hard safety check failed",
780
+ "promotion_safety_gate_blocked": "Promotion blocked by safety gate checks",
781
+ "promotion_readiness_unavailable": "Promotion readiness could not be established",
782
+ "promotion_snapshot_stale": "Activation artifact changed during review",
783
+ "evidence_override_reason_required": "Evidence-insufficient promotion requires an Owner override reason",
784
+ "evidence_override_note_required": "Evidence-insufficient promotion requires an Owner review note",
785
+ "host_contract_unavailable": "Host liveness contract unavailable",
786
+ "promotion_commit_failed": "Failed to commit promotion to durable safety store",
787
+ "feature_not_enabled": "Feature is not enabled",
788
+ "safety_controls_unavailable": "Safety controls unavailable",
789
+ "owner_authentication_required": "Owner authentication required",
790
+ "cli_owner_note_required": "CLI promotion requires an Owner review note",
791
+ "confirmation_required": "Live enforcement confirmation required",
792
+ "promotion_request_invalid": "Promotion request parameters are invalid"
793
+ },
794
+ "hardSafetyChecks": "Promotion Safety Checks",
641
795
  "live24Hours": "Live monitoring · 24 hours",
642
796
  "live7Days": "Live monitoring · 7 days",
643
797
  "matched": "Matched",
@@ -817,6 +971,34 @@
817
971
  "enterAccessToken": "Enter access token",
818
972
  "tokenSaved": "Token saved",
819
973
  "tokenSessionOnly": "Token is stored in browser session only.",
974
+ "ownerIdentity": {
975
+ "title": "Owner identity",
976
+ "intro": "The Owner identity gates governance decision entry points (RuleCode promotion, emergency pause, etc.). Register to ~/.pd/owner.json (install-level, shared across workspaces). If the PD_OWNER_ID and PD_OWNER_CREDENTIAL_ID environment variables are set together, they take precedence as a pair.",
977
+ "loading": "Loading…",
978
+ "statusConfigured": "Registered",
979
+ "statusMissing": "Not registered",
980
+ "statusInvalid": "Env configuration invalid",
981
+ "sourceEnv": "Source: environment variables (highest priority)",
982
+ "sourceFile": "Source: ~/.pd/owner.json",
983
+ "sourceInvalid": "Source: environment variables (incomplete pair)",
984
+ "sourceNone": "Not registered",
985
+ "governanceReady": "Governance: Ready",
986
+ "governanceNotReady": "Governance: Not ready",
987
+ "governanceReasonTokenAuth": "Console token authentication is required before any Owner governance action can execute.",
988
+ "governanceReasonIdentity": "A complete Owner identity is required before any Owner governance action can execute.",
989
+ "governanceNextActionTokenAuth": "Next action: start pd-console with --token <value> or set PD_CONSOLE_TOKEN, then retry.",
990
+ "invalidEnvHint": "PD_OWNER_ID and PD_OWNER_CREDENTIAL_ID must be set together and both non-empty. Until the pair is completed or both variables are removed, no Owner authority is active — the file registration is NOT in effect.",
991
+ "ownerIdLabel": "Owner ID",
992
+ "credentialIdLabel": "Credential ID",
993
+ "register": "Register",
994
+ "unregister": "Unregister",
995
+ "registeredAt": "registered",
996
+ "envHint": "The identity currently comes from environment variables. To switch to file registration, remove the env vars and restart the console.",
997
+ "required": "Owner ID and Credential ID must not be empty.",
998
+ "operationFailed": "Operation failed. Please retry.",
999
+ "registered": "Owner identity registered.",
1000
+ "unregistered": "Owner identity unregistered."
1001
+ },
820
1002
  "workspace": "Workspaces",
821
1003
  "addWorkspace": "Add Workspace",
822
1004
  "syncWorkspace": "Sync",
@@ -1060,6 +1242,16 @@
1060
1242
  "noHistory": "No update history available.",
1061
1243
  "version": "Version",
1062
1244
  "failed": "Failed",
1245
+ "historyKind": {
1246
+ "update": "Update",
1247
+ "reinstall": "Reinstall",
1248
+ "legacy_migration": "Legacy migration",
1249
+ "rollback": "Rollback",
1250
+ "refusal": "Refused",
1251
+ "failure": "Failed",
1252
+ "recovery": "Recovery",
1253
+ "unknown": "Unknown operation"
1254
+ },
1063
1255
  "checkError": "Check error",
1064
1256
  "syncPending": "Version {{pluginVersion}} is published, but the installer is syncing (you can update to the version shown above for now). Please try again later.",
1065
1257
  "loadError": "Unable to load update data. You can try refreshing the page.",
@@ -1377,6 +1569,10 @@
1377
1569
  "recoverConfirmActionDesc": "Reset the task and allow runtime execution",
1378
1570
  "recoverConfirmImpactLabel": "Impact",
1379
1571
  "recoverConfirmImpactDesc": "Existing artifacts are preserved. A new execution attempt will be created.",
1572
+ "recoverConfirmAttempts": "Attempts used",
1573
+ "recoverExhaustedWarning": "This task has used its entire retry budget ({{attempt}}/{{max}}). A plain recovery will be refused.",
1574
+ "recoverConfirmForceButton": "Force recover",
1575
+ "recoverConfirmForceImpactDesc": "Force-reset the task: clear its error and lease, raise the retry budget by 3, and create a new execution attempt. Existing artifacts are preserved.",
1380
1576
  "recoverConfirmButton": "Recover",
1381
1577
  "recoverSuccess": "Recovery accepted — the task is pending again",
1382
1578
  "recoverFailed": "Recovery failed",