create-principles-disciple 1.121.8 → 1.121.10

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 (462) 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 +263 -41
  27. package/console/dist/server/utils/update-links.d.ts +38 -0
  28. package/console/dist/server/utils/update-links.js +71 -0
  29. package/console/dist/shared/feedback-channel-ids.d.ts +13 -0
  30. package/console/dist/shared/feedback-channel-ids.js +12 -0
  31. package/console/dist/shared/feedback-contract.d.ts +46 -0
  32. package/console/dist/shared/feedback-contract.js +45 -0
  33. package/console/dist/ui/App.js +1 -1
  34. package/console/dist/ui/api.d.ts +22 -3
  35. package/console/dist/ui/api.js +63 -3
  36. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.d.ts +6 -0
  37. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.js +66 -0
  38. package/console/dist/ui/i18n/en.json +198 -2
  39. package/console/dist/ui/i18n/zh-CN.json +196 -0
  40. package/console/dist/ui/pages/activation/ActivationPage.js +14 -2
  41. package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +25 -5
  42. package/console/dist/ui/pages/focus/FocusPage.d.ts +28 -1
  43. package/console/dist/ui/pages/focus/FocusPage.js +128 -15
  44. package/console/dist/ui/pages/principles/PrincipleDetailPage.d.ts +30 -0
  45. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +49 -6
  46. package/console/dist/ui/pages/settings/SettingsPage.js +67 -2
  47. package/console/dist/ui/pages/settings/UpdatePage.js +7 -7
  48. package/console/dist/ui/utils/enum-labels.js +0 -1
  49. package/console/dist/ui/utils/validators.d.ts +53 -21
  50. package/console/dist/ui/utils/validators.js +248 -21
  51. package/console/dist/web/assets/app.css +6 -0
  52. package/console/dist/web/assets/app.js +2721 -1664
  53. package/console/package.json +3 -1
  54. package/core/dist/host/host-adapter.d.ts +1 -1
  55. package/core/dist/host/host-adapter.d.ts.map +1 -1
  56. package/core/dist/host/host-adapter.js +1 -0
  57. package/core/dist/host/host-adapter.js.map +1 -1
  58. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +12 -2
  59. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  60. package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +1 -1
  61. package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
  62. package/core/dist/runtime-v2/__tests__/governance-experience.test.d.ts +2 -0
  63. package/core/dist/runtime-v2/__tests__/governance-experience.test.d.ts.map +1 -0
  64. package/core/dist/runtime-v2/__tests__/governance-experience.test.js +300 -0
  65. package/core/dist/runtime-v2/__tests__/governance-experience.test.js.map +1 -0
  66. package/core/dist/runtime-v2/__tests__/owner-identity.test.d.ts +2 -0
  67. package/core/dist/runtime-v2/__tests__/owner-identity.test.d.ts.map +1 -0
  68. package/core/dist/runtime-v2/__tests__/owner-identity.test.js +147 -0
  69. package/core/dist/runtime-v2/__tests__/owner-identity.test.js.map +1 -0
  70. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.d.ts +18 -0
  71. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.d.ts.map +1 -0
  72. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.js +303 -0
  73. package/core/dist/runtime-v2/__tests__/product-telemetry-contract.test.js.map +1 -0
  74. package/core/dist/runtime-v2/__tests__/recovery-actions-log.test.js +40 -0
  75. package/core/dist/runtime-v2/__tests__/recovery-actions-log.test.js.map +1 -1
  76. package/core/dist/runtime-v2/__tests__/status-contract.test.d.ts +2 -0
  77. package/core/dist/runtime-v2/__tests__/status-contract.test.d.ts.map +1 -0
  78. package/core/dist/runtime-v2/__tests__/status-contract.test.js +107 -0
  79. package/core/dist/runtime-v2/__tests__/status-contract.test.js.map +1 -0
  80. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.d.ts +2 -0
  81. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.d.ts.map +1 -0
  82. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.js +104 -0
  83. package/core/dist/runtime-v2/activation/__tests__/promotion-evidence-snapshot.test.js.map +1 -0
  84. package/core/dist/runtime-v2/activation/__tests__/promotion-readiness-evaluator.test.js +19 -0
  85. package/core/dist/runtime-v2/activation/__tests__/promotion-readiness-evaluator.test.js.map +1 -1
  86. package/core/dist/runtime-v2/activation/__tests__/rulecode-owner-decision-service.test.js +20 -0
  87. package/core/dist/runtime-v2/activation/__tests__/rulecode-owner-decision-service.test.js.map +1 -1
  88. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-safety-store.test.js +40 -0
  89. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-safety-store.test.js.map +1 -1
  90. package/core/dist/runtime-v2/activation/index.d.ts +2 -0
  91. package/core/dist/runtime-v2/activation/index.d.ts.map +1 -1
  92. package/core/dist/runtime-v2/activation/index.js +1 -0
  93. package/core/dist/runtime-v2/activation/index.js.map +1 -1
  94. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.d.ts +30 -0
  95. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.d.ts.map +1 -0
  96. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.js +87 -0
  97. package/core/dist/runtime-v2/activation/promotion-evidence-snapshot.js.map +1 -0
  98. package/core/dist/runtime-v2/activation/promotion-readiness-evaluator.d.ts.map +1 -1
  99. package/core/dist/runtime-v2/activation/promotion-readiness-evaluator.js +3 -0
  100. package/core/dist/runtime-v2/activation/promotion-readiness-evaluator.js.map +1 -1
  101. package/core/dist/runtime-v2/activation/promotion-readiness-reader.d.ts +1 -1
  102. package/core/dist/runtime-v2/activation/promotion-readiness-reader.d.ts.map +1 -1
  103. package/core/dist/runtime-v2/activation/promotion-readiness-reader.js +2 -2
  104. package/core/dist/runtime-v2/activation/promotion-readiness-reader.js.map +1 -1
  105. package/core/dist/runtime-v2/activation/rulecode-owner-decision-service.d.ts.map +1 -1
  106. package/core/dist/runtime-v2/activation/rulecode-owner-decision-service.js +18 -9
  107. package/core/dist/runtime-v2/activation/rulecode-owner-decision-service.js.map +1 -1
  108. package/core/dist/runtime-v2/adapter/__tests__/chaos-json-repair.test.js +1 -1
  109. package/core/dist/runtime-v2/adapter/__tests__/chaos-json-repair.test.js.map +1 -1
  110. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js +91 -1
  111. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js.map +1 -1
  112. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +59 -12
  113. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
  114. package/core/dist/runtime-v2/adapter/__tests__/runtime-config-contract.test.js +10 -9
  115. package/core/dist/runtime-v2/adapter/__tests__/runtime-config-contract.test.js.map +1 -1
  116. package/core/dist/runtime-v2/adapter/__tests__/structured-output-repair.test.js +42 -1
  117. package/core/dist/runtime-v2/adapter/__tests__/structured-output-repair.test.js.map +1 -1
  118. package/core/dist/runtime-v2/adapter/json-extractor.d.ts +25 -0
  119. package/core/dist/runtime-v2/adapter/json-extractor.d.ts.map +1 -1
  120. package/core/dist/runtime-v2/adapter/json-extractor.js +126 -0
  121. package/core/dist/runtime-v2/adapter/json-extractor.js.map +1 -1
  122. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts +9 -4
  123. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts.map +1 -1
  124. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js +9 -4
  125. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js.map +1 -1
  126. package/core/dist/runtime-v2/adapter/output-repair-contract.d.ts +5 -1
  127. package/core/dist/runtime-v2/adapter/output-repair-contract.d.ts.map +1 -1
  128. package/core/dist/runtime-v2/adapter/output-repair-contract.js +4 -1
  129. package/core/dist/runtime-v2/adapter/output-repair-contract.js.map +1 -1
  130. package/core/dist/runtime-v2/adapter/pi-ai-catalog.d.ts +7 -0
  131. package/core/dist/runtime-v2/adapter/pi-ai-catalog.d.ts.map +1 -0
  132. package/core/dist/runtime-v2/adapter/pi-ai-catalog.js +19 -0
  133. package/core/dist/runtime-v2/adapter/pi-ai-catalog.js.map +1 -0
  134. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +13 -15
  135. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  136. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +104 -37
  137. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  138. package/core/dist/runtime-v2/adapter/structured-output-repair.d.ts +16 -1
  139. package/core/dist/runtime-v2/adapter/structured-output-repair.d.ts.map +1 -1
  140. package/core/dist/runtime-v2/adapter/structured-output-repair.js +38 -6
  141. package/core/dist/runtime-v2/adapter/structured-output-repair.js.map +1 -1
  142. package/core/dist/runtime-v2/adapter/tools/diagnostician-tool.d.ts +1 -1
  143. package/core/dist/runtime-v2/adapter/tools/diagnostician-tool.d.ts.map +1 -1
  144. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +8 -9
  145. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
  146. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +27 -3
  147. package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  148. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.d.ts +11 -0
  149. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.d.ts.map +1 -0
  150. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.js +93 -0
  151. package/core/dist/runtime-v2/config/__tests__/pd-config-principles.test.js.map +1 -0
  152. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.js +41 -0
  153. package/core/dist/runtime-v2/config/__tests__/pd-config-workspace.test.js.map +1 -1
  154. package/core/dist/runtime-v2/config/index.d.ts +2 -2
  155. package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
  156. package/core/dist/runtime-v2/config/index.js +2 -0
  157. package/core/dist/runtime-v2/config/index.js.map +1 -1
  158. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -1
  159. package/core/dist/runtime-v2/config/pd-config-agent-binding.js +4 -13
  160. package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -1
  161. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  162. package/core/dist/runtime-v2/config/pd-config-effective.js +14 -7
  163. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  164. package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts.map +1 -1
  165. package/core/dist/runtime-v2/config/pd-config-feature-flags.js +5 -12
  166. package/core/dist/runtime-v2/config/pd-config-feature-flags.js.map +1 -1
  167. package/core/dist/runtime-v2/config/pd-config-types.d.ts +8 -0
  168. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  169. package/core/dist/runtime-v2/config/pd-config-types.js +2 -0
  170. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  171. package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  172. package/core/dist/runtime-v2/config/pd-config-validate.js +48 -3
  173. package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  174. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js +36 -8
  175. package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js.map +1 -1
  176. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js +36 -12
  177. package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js.map +1 -1
  178. package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts +22 -8
  179. package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts.map +1 -1
  180. package/core/dist/runtime-v2/core-principles/core-axiom-block.js +28 -13
  181. package/core/dist/runtime-v2/core-principles/core-axiom-block.js.map +1 -1
  182. package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts +29 -4
  183. package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts.map +1 -1
  184. package/core/dist/runtime-v2/core-principles/core-principle-registry.js +68 -33
  185. package/core/dist/runtime-v2/core-principles/core-principle-registry.js.map +1 -1
  186. package/core/dist/runtime-v2/core-principles/index.d.ts +3 -3
  187. package/core/dist/runtime-v2/core-principles/index.d.ts.map +1 -1
  188. package/core/dist/runtime-v2/core-principles/index.js +1 -1
  189. package/core/dist/runtime-v2/core-principles/index.js.map +1 -1
  190. package/core/dist/runtime-v2/evolution/evolution-types.d.ts +2 -1
  191. package/core/dist/runtime-v2/evolution/evolution-types.d.ts.map +1 -1
  192. package/core/dist/runtime-v2/evolution/evolution-types.js.map +1 -1
  193. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.d.ts +2 -0
  194. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.d.ts.map +1 -0
  195. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.js +48 -0
  196. package/core/dist/runtime-v2/feature-flags/__tests__/anonymous-product-telemetry-flag.test.js.map +1 -0
  197. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.d.ts +2 -0
  198. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.d.ts.map +1 -0
  199. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.js +46 -0
  200. package/core/dist/runtime-v2/feature-flags/__tests__/codex-conversation-ingestion-flag.test.js.map +1 -0
  201. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +86 -31
  202. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  203. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.d.ts +2 -0
  204. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.d.ts.map +1 -0
  205. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js +83 -0
  206. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js.map +1 -0
  207. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts +19 -1
  208. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  209. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +128 -10
  210. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  211. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts +37 -0
  212. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -0
  213. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +304 -0
  214. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -0
  215. package/core/dist/runtime-v2/feature-flags/index.d.ts +4 -2
  216. package/core/dist/runtime-v2/feature-flags/index.d.ts.map +1 -1
  217. package/core/dist/runtime-v2/feature-flags/index.js +3 -1
  218. package/core/dist/runtime-v2/feature-flags/index.js.map +1 -1
  219. package/core/dist/runtime-v2/governance-experience-contract.d.ts +468 -0
  220. package/core/dist/runtime-v2/governance-experience-contract.d.ts.map +1 -0
  221. package/core/dist/runtime-v2/governance-experience-contract.js +208 -0
  222. package/core/dist/runtime-v2/governance-experience-contract.js.map +1 -0
  223. package/core/dist/runtime-v2/governance-experience.d.ts +11 -0
  224. package/core/dist/runtime-v2/governance-experience.d.ts.map +1 -0
  225. package/core/dist/runtime-v2/governance-experience.js +276 -0
  226. package/core/dist/runtime-v2/governance-experience.js.map +1 -0
  227. package/core/dist/runtime-v2/index.d.ts +20 -8
  228. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  229. package/core/dist/runtime-v2/index.js +20 -6
  230. package/core/dist/runtime-v2/index.js.map +1 -1
  231. package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js +29 -10
  232. package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js.map +1 -1
  233. package/core/dist/runtime-v2/owner-identity.d.ts +69 -0
  234. package/core/dist/runtime-v2/owner-identity.d.ts.map +1 -0
  235. package/core/dist/runtime-v2/owner-identity.js +179 -0
  236. package/core/dist/runtime-v2/owner-identity.js.map +1 -0
  237. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  238. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +2 -3
  239. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  240. package/core/dist/runtime-v2/product-telemetry/daily-identity.d.ts +70 -0
  241. package/core/dist/runtime-v2/product-telemetry/daily-identity.d.ts.map +1 -0
  242. package/core/dist/runtime-v2/product-telemetry/daily-identity.js +89 -0
  243. package/core/dist/runtime-v2/product-telemetry/daily-identity.js.map +1 -0
  244. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.d.ts +110 -0
  245. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.d.ts.map +1 -0
  246. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.js +250 -0
  247. package/core/dist/runtime-v2/product-telemetry/snapshot-contract.js.map +1 -0
  248. package/core/dist/runtime-v2/pruning-read-model.d.ts +2 -1
  249. package/core/dist/runtime-v2/pruning-read-model.d.ts.map +1 -1
  250. package/core/dist/runtime-v2/pruning-read-model.js.map +1 -1
  251. package/core/dist/runtime-v2/receipt-coverage.d.ts +63 -0
  252. package/core/dist/runtime-v2/receipt-coverage.d.ts.map +1 -0
  253. package/core/dist/runtime-v2/receipt-coverage.js +19 -0
  254. package/core/dist/runtime-v2/receipt-coverage.js.map +1 -0
  255. package/core/dist/runtime-v2/recovery-actions-log.d.ts +7 -0
  256. package/core/dist/runtime-v2/recovery-actions-log.d.ts.map +1 -1
  257. package/core/dist/runtime-v2/recovery-actions-log.js +6 -0
  258. package/core/dist/runtime-v2/recovery-actions-log.js.map +1 -1
  259. package/core/dist/runtime-v2/runtime-protocol.js +1 -1
  260. package/core/dist/runtime-v2/runtime-protocol.js.map +1 -1
  261. package/core/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.js +17 -1
  262. package/core/dist/runtime-v2/store/task/__tests__/sqlite-task-store.failed-tasks.test.js.map +1 -1
  263. package/core/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
  264. package/core/dist/runtime-v2/store/task/sqlite-task-store.js +10 -0
  265. package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
  266. package/core/dist/runtime-v2/store/task/task-types.d.ts +2 -0
  267. package/core/dist/runtime-v2/store/task/task-types.d.ts.map +1 -1
  268. package/core/dist/runtime-v2/task-status.d.ts +9 -5
  269. package/core/dist/runtime-v2/task-status.d.ts.map +1 -1
  270. package/core/dist/runtime-v2/task-status.js +15 -7
  271. package/core/dist/runtime-v2/task-status.js.map +1 -1
  272. package/core/dist/runtime-v2/types/event-types.d.ts +4 -0
  273. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  274. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  275. package/core/dist/runtime-v2/types/index.d.ts +1 -1
  276. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  277. package/core/dist/runtime-v2/types/index.js +1 -1
  278. package/core/dist/runtime-v2/types/index.js.map +1 -1
  279. package/core/dist/runtime-v2/types/principle-enums.d.ts +3 -2
  280. package/core/dist/runtime-v2/types/principle-enums.d.ts.map +1 -1
  281. package/core/dist/runtime-v2/types/principle-enums.js +11 -5
  282. package/core/dist/runtime-v2/types/principle-enums.js.map +1 -1
  283. package/core/dist/runtime-v2/types/principle-schema.d.ts +1 -1
  284. package/core/dist/runtime-v2/types/principle-tree-store.d.ts +1 -1
  285. package/core/dist/runtime-v2/utils/cli-process-runner.d.ts.map +1 -1
  286. package/core/dist/runtime-v2/utils/cli-process-runner.js +3 -2
  287. package/core/dist/runtime-v2/utils/cli-process-runner.js.map +1 -1
  288. package/core/package.json +1 -2
  289. package/dist/i18n.d.ts.map +1 -1
  290. package/dist/i18n.js +4 -2
  291. package/dist/i18n.js.map +1 -1
  292. package/dist/index.d.ts +2 -0
  293. package/dist/index.d.ts.map +1 -1
  294. package/dist/index.js +47 -11
  295. package/dist/index.js.map +1 -1
  296. package/dist/installer.d.ts +31 -5
  297. package/dist/installer.d.ts.map +1 -1
  298. package/dist/installer.js +472 -161
  299. package/dist/installer.js.map +1 -1
  300. package/dist/installers/codex-host-installer.d.ts.map +1 -1
  301. package/dist/installers/codex-host-installer.js +4 -0
  302. package/dist/installers/codex-host-installer.js.map +1 -1
  303. package/dist/mvp-config.d.ts +10 -0
  304. package/dist/mvp-config.d.ts.map +1 -1
  305. package/dist/mvp-config.js +30 -3
  306. package/dist/mvp-config.js.map +1 -1
  307. package/dist/uninstaller.d.ts +9 -1
  308. package/dist/uninstaller.d.ts.map +1 -1
  309. package/dist/uninstaller.js +103 -23
  310. package/dist/uninstaller.js.map +1 -1
  311. package/dist/update/atomic-file.d.ts +35 -0
  312. package/dist/update/atomic-file.d.ts.map +1 -0
  313. package/dist/update/atomic-file.js +120 -0
  314. package/dist/update/atomic-file.js.map +1 -0
  315. package/dist/update/bootstrap-protocol.d.ts +55 -0
  316. package/dist/update/bootstrap-protocol.d.ts.map +1 -0
  317. package/dist/update/bootstrap-protocol.js +132 -0
  318. package/dist/update/bootstrap-protocol.js.map +1 -0
  319. package/dist/update/channel-metadata.d.ts +28 -0
  320. package/dist/update/channel-metadata.d.ts.map +1 -0
  321. package/dist/update/channel-metadata.js +90 -0
  322. package/dist/update/channel-metadata.js.map +1 -0
  323. package/dist/update/channel-promotion.d.ts +39 -0
  324. package/dist/update/channel-promotion.d.ts.map +1 -0
  325. package/dist/update/channel-promotion.js +55 -0
  326. package/dist/update/channel-promotion.js.map +1 -0
  327. package/dist/update/data-compatibility.d.ts +35 -0
  328. package/dist/update/data-compatibility.d.ts.map +1 -0
  329. package/dist/update/data-compatibility.js +45 -0
  330. package/dist/update/data-compatibility.js.map +1 -0
  331. package/dist/update/install-layout.d.ts +59 -0
  332. package/dist/update/install-layout.d.ts.map +1 -0
  333. package/dist/update/install-layout.js +127 -0
  334. package/dist/update/install-layout.js.map +1 -0
  335. package/dist/update/legacy-migration.d.ts +56 -0
  336. package/dist/update/legacy-migration.d.ts.map +1 -0
  337. package/dist/update/legacy-migration.js +254 -0
  338. package/dist/update/legacy-migration.js.map +1 -0
  339. package/dist/update/product-identity.d.ts +50 -0
  340. package/dist/update/product-identity.d.ts.map +1 -0
  341. package/dist/update/product-identity.js +63 -0
  342. package/dist/update/product-identity.js.map +1 -0
  343. package/dist/update/release-asset-manifest.d.ts +31 -0
  344. package/dist/update/release-asset-manifest.d.ts.map +1 -0
  345. package/dist/update/release-asset-manifest.js +161 -0
  346. package/dist/update/release-asset-manifest.js.map +1 -0
  347. package/dist/update/release-identity.d.ts +33 -0
  348. package/dist/update/release-identity.d.ts.map +1 -0
  349. package/dist/update/release-identity.js +108 -0
  350. package/dist/update/release-identity.js.map +1 -0
  351. package/dist/update/release-manager.d.ts +96 -0
  352. package/dist/update/release-manager.d.ts.map +1 -0
  353. package/dist/update/release-manager.js +253 -0
  354. package/dist/update/release-manager.js.map +1 -0
  355. package/dist/update/release-metadata.d.ts +57 -0
  356. package/dist/update/release-metadata.d.ts.map +1 -0
  357. package/dist/update/release-metadata.js +200 -0
  358. package/dist/update/release-metadata.js.map +1 -0
  359. package/dist/update/release-policy.d.ts +51 -0
  360. package/dist/update/release-policy.d.ts.map +1 -0
  361. package/dist/update/release-policy.js +103 -0
  362. package/dist/update/release-policy.js.map +1 -0
  363. package/dist/update/rollback-policy.d.ts +56 -0
  364. package/dist/update/rollback-policy.d.ts.map +1 -0
  365. package/dist/update/rollback-policy.js +61 -0
  366. package/dist/update/rollback-policy.js.map +1 -0
  367. package/dist/update/transaction-journal.d.ts +121 -0
  368. package/dist/update/transaction-journal.d.ts.map +1 -0
  369. package/dist/update/transaction-journal.js +333 -0
  370. package/dist/update/transaction-journal.js.map +1 -0
  371. package/dist/update/trust-metadata.d.ts +55 -0
  372. package/dist/update/trust-metadata.d.ts.map +1 -0
  373. package/dist/update/trust-metadata.js +170 -0
  374. package/dist/update/trust-metadata.js.map +1 -0
  375. package/dist/update/update-history.d.ts +46 -0
  376. package/dist/update/update-history.d.ts.map +1 -0
  377. package/dist/update/update-history.js +123 -0
  378. package/dist/update/update-history.js.map +1 -0
  379. package/dist/utils/env.d.ts +7 -0
  380. package/dist/utils/env.d.ts.map +1 -1
  381. package/dist/utils/env.js +134 -44
  382. package/dist/utils/env.js.map +1 -1
  383. package/host-runtime/dist/governance-observation-store.d.ts +172 -0
  384. package/host-runtime/dist/governance-observation-store.js +649 -0
  385. package/host-runtime/dist/index.d.ts +6 -0
  386. package/host-runtime/dist/index.js +8 -0
  387. package/host-runtime/dist/product-telemetry/consent-store.d.ts +107 -0
  388. package/host-runtime/dist/product-telemetry/consent-store.js +329 -0
  389. package/host-runtime/dist/product-telemetry/eligibility.d.ts +53 -0
  390. package/host-runtime/dist/product-telemetry/eligibility.js +69 -0
  391. package/host-runtime/dist/product-telemetry/exporter.d.ts +46 -0
  392. package/host-runtime/dist/product-telemetry/exporter.js +71 -0
  393. package/host-runtime/dist/product-telemetry/milestone-readers.d.ts +61 -0
  394. package/host-runtime/dist/product-telemetry/milestone-readers.js +234 -0
  395. package/host-runtime/dist/product-telemetry/service.d.ts +142 -0
  396. package/host-runtime/dist/product-telemetry/service.js +532 -0
  397. package/host-runtime/dist/product-telemetry/workspace-scope.d.ts +38 -0
  398. package/host-runtime/dist/product-telemetry/workspace-scope.js +64 -0
  399. package/host-runtime/package.json +5 -0
  400. package/install-layout/dist/index.d.ts +48 -0
  401. package/install-layout/dist/index.js +81 -0
  402. package/install-layout/dist/index.test.d.ts +1 -0
  403. package/install-layout/dist/index.test.js +34 -0
  404. package/install-layout/package.json +29 -0
  405. package/package.json +16 -6
  406. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts +9 -0
  407. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.d.ts.map +1 -0
  408. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.js +76 -0
  409. package/pd-cli/dist/commands/__tests__/telemetry-flag-wiring.test.js.map +1 -0
  410. package/pd-cli/dist/commands/__tests__/version.test.d.ts +2 -0
  411. package/pd-cli/dist/commands/__tests__/version.test.d.ts.map +1 -0
  412. package/pd-cli/dist/commands/__tests__/version.test.js +134 -0
  413. package/pd-cli/dist/commands/__tests__/version.test.js.map +1 -0
  414. package/pd-cli/dist/commands/console.d.ts.map +1 -1
  415. package/pd-cli/dist/commands/console.js +29 -10
  416. package/pd-cli/dist/commands/console.js.map +1 -1
  417. package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
  418. package/pd-cli/dist/commands/pain-record.js +6 -15
  419. package/pd-cli/dist/commands/pain-record.js.map +1 -1
  420. package/pd-cli/dist/commands/runtime-activation.d.ts +29 -0
  421. package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
  422. package/pd-cli/dist/commands/runtime-activation.js +70 -31
  423. package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
  424. package/pd-cli/dist/commands/runtime-internalization-enqueue-successors.d.ts.map +1 -1
  425. package/pd-cli/dist/commands/runtime-internalization-enqueue-successors.js +2 -2
  426. package/pd-cli/dist/commands/runtime-internalization-enqueue-successors.js.map +1 -1
  427. package/pd-cli/dist/commands/telemetry.d.ts +82 -0
  428. package/pd-cli/dist/commands/telemetry.d.ts.map +1 -0
  429. package/pd-cli/dist/commands/telemetry.js +268 -0
  430. package/pd-cli/dist/commands/telemetry.js.map +1 -0
  431. package/pd-cli/dist/commands/version.d.ts +11 -0
  432. package/pd-cli/dist/commands/version.d.ts.map +1 -0
  433. package/pd-cli/dist/commands/version.js +48 -0
  434. package/pd-cli/dist/commands/version.js.map +1 -0
  435. package/pd-cli/dist/index.js +35 -2
  436. package/pd-cli/dist/index.js.map +1 -1
  437. package/pd-cli/dist/services/version-report.d.ts +44 -0
  438. package/pd-cli/dist/services/version-report.d.ts.map +1 -0
  439. package/pd-cli/dist/services/version-report.js +152 -0
  440. package/pd-cli/dist/services/version-report.js.map +1 -0
  441. package/pd-cli/package.json +1 -0
  442. package/plugin/dist/bundle.js +868 -936
  443. package/plugin/dist/core/init.d.ts +2 -1
  444. package/plugin/dist/core/principle-application-ledger.d.ts +10 -0
  445. package/plugin/dist/core/product-telemetry-trigger.d.ts +14 -0
  446. package/plugin/dist/core/thinking-os-parser.d.ts +5 -2
  447. package/plugin/dist/governance-audit.js +386 -0
  448. package/plugin/dist/hooks/gate-block-helper.d.ts +25 -1
  449. package/plugin/dist/hooks/gate.d.ts +22 -0
  450. package/plugin/dist/rulehost-evidence.js +832 -0
  451. package/plugin/dist/templates/langs/en/principles/THINKING_OS.md +53 -45
  452. package/plugin/dist/templates/langs/en/skills/pd-mentor/SKILL.md +1 -1
  453. package/plugin/dist/templates/langs/zh/principles/THINKING_OS.md +62 -46
  454. package/plugin/dist/templates/langs/zh/skills/pd-mentor/SKILL.md +1 -1
  455. package/plugin/dist/templates/workspace/.principles/THINKING_OS.md +66 -38
  456. package/plugin/openclaw.plugin.json +1 -1
  457. package/plugin/package.json +1 -1
  458. package/plugin/templates/langs/en/principles/THINKING_OS.md +53 -45
  459. package/plugin/templates/langs/en/skills/pd-mentor/SKILL.md +1 -1
  460. package/plugin/templates/langs/zh/principles/THINKING_OS.md +62 -46
  461. package/plugin/templates/langs/zh/skills/pd-mentor/SKILL.md +1 -1
  462. package/plugin/templates/workspace/.principles/THINKING_OS.md +66 -38
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Update history semantics (SPEC §12).
3
+ *
4
+ * History events use explicit kinds: update, reinstall, channel_promotion,
5
+ * legacy_migration, rollback, refusal, and recovery. Direction is DERIVED
6
+ * from canonical release identity and metadata sequence — never from
7
+ * package.json values found in a checkout. Every failed or refused event
8
+ * states what happened, whether the previous release remains active, and
9
+ * the safest next action.
10
+ */
11
+ import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync } from 'node:fs';
12
+ import { dirname } from 'node:path';
13
+ export class UpdateHistoryError extends Error {
14
+ field;
15
+ constructor(field, message) {
16
+ super(message);
17
+ this.name = 'UpdateHistoryError';
18
+ this.field = field;
19
+ }
20
+ }
21
+ const HISTORY_KINDS = new Set([
22
+ 'update', 'reinstall', 'channel_promotion', 'legacy_migration', 'rollback', 'refusal', 'recovery',
23
+ ]);
24
+ const HISTORY_DIRECTIONS = new Set(['forward', 'backward', 'none']);
25
+ const HISTORY_OUTCOMES = new Set(['succeeded', 'refused', 'failed', 'recovered']);
26
+ const isHistoryKind = (value) => HISTORY_KINDS.has(value);
27
+ const isHistoryDirection = (value) => HISTORY_DIRECTIONS.has(value);
28
+ const isHistoryOutcome = (value) => HISTORY_OUTCOMES.has(value);
29
+ /**
30
+ * Direction is derived from canonical publication sequences: forward when the
31
+ * event's release is newer than the previous one, backward when older,
32
+ * none for reinstall/refusal/unknown.
33
+ */
34
+ export function classifyDirection(input) {
35
+ if (input.kind === 'reinstall' || input.kind === 'refusal')
36
+ return 'none';
37
+ if (input.releasePublicationSequence === null || input.previousPublicationSequence === null)
38
+ return 'none';
39
+ if (input.releasePublicationSequence > input.previousPublicationSequence)
40
+ return 'forward';
41
+ if (input.releasePublicationSequence < input.previousPublicationSequence)
42
+ return 'backward';
43
+ return 'none';
44
+ }
45
+ function validateEvent(event) {
46
+ if (!HISTORY_KINDS.has(event.kind)) {
47
+ throw new UpdateHistoryError('kind', `Unknown history kind: ${JSON.stringify(event.kind)}`);
48
+ }
49
+ if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/.test(event.at)) {
50
+ throw new UpdateHistoryError('at', `History event timestamps must be RFC3339 UTC: ${JSON.stringify(event.at)}`);
51
+ }
52
+ if (event.outcome !== 'succeeded' && event.outcome !== 'refused' && event.outcome !== 'failed' && event.outcome !== 'recovered') {
53
+ throw new UpdateHistoryError('outcome', `Unknown history outcome: ${JSON.stringify(event.outcome)}`);
54
+ }
55
+ if (event.outcome !== 'succeeded' && event.nextAction === null) {
56
+ throw new UpdateHistoryError('nextAction', `A ${event.outcome} history event must carry a next action (rc-9).`);
57
+ }
58
+ }
59
+ /** Appends one durable history event to `<pdHome>/logs/history.jsonl`. */
60
+ export function appendHistoryEvent(historyFilePath, event) {
61
+ validateEvent(event);
62
+ mkdirSync(dirname(historyFilePath), { recursive: true });
63
+ let descriptor;
64
+ try {
65
+ descriptor = openSync(historyFilePath, 'a');
66
+ appendFileSync(descriptor, `${JSON.stringify(event)}\n`);
67
+ }
68
+ finally {
69
+ if (descriptor !== undefined)
70
+ closeSync(descriptor);
71
+ }
72
+ }
73
+ /** Strict reader for tests and the Console history surface. */
74
+ export function readHistoryEvents(historyFilePath) {
75
+ if (!existsSync(historyFilePath))
76
+ return [];
77
+ const raw = readFileSync(historyFilePath, 'utf8');
78
+ const events = [];
79
+ for (const line of raw.split('\n')) {
80
+ if (line.trim().length === 0)
81
+ continue;
82
+ const parsed = JSON.parse(line);
83
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
84
+ throw new UpdateHistoryError('line', 'history lines must be objects');
85
+ }
86
+ const read = (field) => Reflect.get(parsed, field);
87
+ const fail = (field, value) => {
88
+ throw new UpdateHistoryError('line', `history field "${field}" has invalid type: ${JSON.stringify(value)}`);
89
+ };
90
+ const requireString = (field) => {
91
+ const value = read(field);
92
+ return typeof value === 'string' ? value : fail(field, value);
93
+ };
94
+ const stringOrNull = (field) => {
95
+ const value = read(field);
96
+ if (value === null || value === undefined)
97
+ return null;
98
+ return typeof value === 'string' ? value : fail(field, value);
99
+ };
100
+ // Enum fields are narrowed through their closed vocabularies before
101
+ // construction; validateEvent below re-checks cross-field contracts.
102
+ const kindValue = requireString('kind');
103
+ const directionValue = requireString('direction');
104
+ const outcomeValue = requireString('outcome');
105
+ const event = {
106
+ at: requireString('at'),
107
+ kind: isHistoryKind(kindValue) ? kindValue : fail('kind', kindValue),
108
+ direction: isHistoryDirection(directionValue) ? directionValue : fail('direction', directionValue),
109
+ outcome: isHistoryOutcome(outcomeValue) ? outcomeValue : fail('outcome', outcomeValue),
110
+ productVersion: stringOrNull('productVersion'),
111
+ releaseId: stringOrNull('releaseId'),
112
+ previousReleaseId: stringOrNull('previousReleaseId'),
113
+ previousRemainsActive: read('previousRemainsActive') === true,
114
+ reason: stringOrNull('reason'),
115
+ nextAction: stringOrNull('nextAction'),
116
+ transactionId: stringOrNull('transactionId'),
117
+ };
118
+ validateEvent(event);
119
+ events.push(event);
120
+ }
121
+ return events;
122
+ }
123
+ //# sourceMappingURL=update-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-history.js","sourceRoot":"","sources":["../../src/update/update-history.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface EnvCheckResult {
3
3
  openclawVersion?: string;
4
4
  hasNode: boolean;
5
5
  nodeVersion?: string;
6
+ isNodeSupported: boolean;
6
7
  hasPython: boolean;
7
8
  pythonVersion?: string;
8
9
  hasGit: boolean;
@@ -35,6 +36,12 @@ export interface OpenClawGatewayStatus {
35
36
  port?: number;
36
37
  pid?: number;
37
38
  }
39
+ /**
40
+ * 从 netstat -ano -p tcp 输出解析监听指定端口的 PID。
41
+ * 行形如:TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1234(IPv6 本地地址为 [::]:port)。
42
+ * rc-1/rc-5: 按 unknown 语义逐字段校验,键/列缺失即跳过,不信任列位置。
43
+ */
44
+ export declare function parseNetstatPid(output: string, port: number): number | undefined;
38
45
  export declare function checkOpenClawGateway(): Promise<OpenClawGatewayStatus>;
39
46
  export interface GatewayControlResult {
40
47
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAgDjD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,CA4D/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA+BD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CA4B3E;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiBD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAE5E"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAoBD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CA+DjD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,CA4D/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA+BD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBhF;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAmC3E;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiCD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAE5E"}
package/dist/utils/env.js CHANGED
@@ -1,11 +1,35 @@
1
1
  /**
2
2
  * 环境检测工具
3
+ *
4
+ * PRI-605: 跨平台 child_process 调用统一为数组形式 execFileSync(不走 shell),
5
+ * 并按平台路由二进制:
6
+ * - win32: 无 .exe 的 shim(openclaw/clawd/npm 等)经 cmd.exe /c 解析 PATH;
7
+ * python 探测 python3 → python; 网关 PID 用 netstat.exe 而非 PowerShell。
8
+ * - 非 win32: 直接 execFileSync 字面量二进制。
9
+ * 语义与原 execSync 字符串形式一致(找不到命令 → 对应能力置 false / PID 留空,
10
+ * rc-9 不静默抛出)。
3
11
  */
4
- import { execSync } from 'child_process';
12
+ import { execFileSync } from 'child_process';
5
13
  import * as fs from 'fs';
6
14
  import * as path from 'path';
7
15
  import * as os from 'os';
8
16
  import * as net from 'net';
17
+ const IS_WIN32 = process.platform === 'win32';
18
+ /** 探测超时:卡死的 .cmd shim / 挂起的二进制不应挂住安装器(rc-9 降级)。 */
19
+ const DETECT_TIMEOUT_MS = 5000;
20
+ /**
21
+ * 探测工具版本。失败(未安装/退出非零/超时)返回 null,调用方据此降级
22
+ * (能力置 false / 进入回退链),绝不抛出(rc-9)。探测函数由调用点以
23
+ * 字面量二进制构造,保持 Mimosa 写门要求的 literal argv。
24
+ */
25
+ function probeVersion(probe) {
26
+ try {
27
+ return probe().trim();
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
9
33
  /**
10
34
  * 检测运行环境
11
35
  */
@@ -13,49 +37,60 @@ export function checkEnvironment() {
13
37
  const result = {
14
38
  hasOpenClaw: false,
15
39
  hasNode: false,
40
+ isNodeSupported: false,
16
41
  hasPython: false,
17
42
  hasGit: false,
18
43
  };
19
- // 检测 Node.js
20
- try {
21
- result.nodeVersion = execSync('node -v', { encoding: 'utf-8' }).trim();
44
+ // 检测 Node.js(PRI-605 数组形式;native 运行时最低要求 major>=22)。
45
+ // win32 上必须经 cmd.exe /c:PATH 里可能只有 node.cmd shim(测试桩、
46
+ // nvm-windows 等场景),CreateProcess 直连会跳过它命中真 node.exe,
47
+ // 让版本门形同虚设。
48
+ const nodeVersion = IS_WIN32
49
+ ? probeVersion(() => execFileSync('cmd.exe', ['/c', 'node', '-v'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }))
50
+ : probeVersion(() => execFileSync('node', ['-v'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }));
51
+ if (nodeVersion !== null && nodeVersion.length > 0) {
52
+ result.nodeVersion = nodeVersion;
53
+ // 注:此处刻意用 String.match 并禁用 prefer-regexp-exec——写门确定性
54
+ // 规则会把同块内的 ".exec(" 记号与子进程调用合并判为命令注入(已
55
+ // 实测确认的假阳性),而本块必须包含 execFileSync 探测。
56
+ // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
57
+ const major = Number(nodeVersion.match(/^v?(\d+)/)?.[1]);
22
58
  result.hasNode = true;
59
+ result.isNodeSupported = Number.isInteger(major) && major >= 22;
23
60
  }
24
- catch {
25
- result.hasNode = false;
26
- }
27
- // 检测 OpenClaw
28
- try {
29
- result.openclawVersion = execSync('openclaw --version', { encoding: 'utf-8' }).trim();
61
+ // 检测 OpenClaw(win32 上 openclaw 是 .cmd shim,无 .exe,须经 cmd.exe /c)
62
+ const openclawVersion = IS_WIN32
63
+ ? probeVersion(() => execFileSync('cmd.exe', ['/c', 'openclaw', '--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }))
64
+ : probeVersion(() => execFileSync('openclaw', ['--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }));
65
+ if (openclawVersion !== null) {
66
+ result.openclawVersion = openclawVersion;
30
67
  result.hasOpenClaw = true;
31
68
  }
32
- catch {
69
+ else {
33
70
  // 尝试 clawd 命令
34
- try {
35
- result.openclawVersion = execSync('clawd --version', { encoding: 'utf-8' }).trim();
71
+ const clawdVersion = IS_WIN32
72
+ ? probeVersion(() => execFileSync('cmd.exe', ['/c', 'clawd', '--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }))
73
+ : probeVersion(() => execFileSync('clawd', ['--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }));
74
+ if (clawdVersion !== null) {
75
+ result.openclawVersion = clawdVersion;
36
76
  result.hasOpenClaw = true;
37
77
  }
38
- catch {
39
- result.hasOpenClaw = false;
40
- }
41
78
  }
42
- // 检测 Python
43
- try {
44
- const [, pythonVersion] = execSync('python3 --version', { encoding: 'utf-8' }).trim().split(' ');
45
- result.pythonVersion = pythonVersion;
46
- result.hasPython = true;
79
+ // 检测 Python(win32 上 python.org 安装通常只提供 python.exe,python3 可能不在 PATH)
80
+ let pythonVersion = probeVersion(() => execFileSync('python3', ['--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }));
81
+ if (pythonVersion === null && IS_WIN32) {
82
+ pythonVersion = probeVersion(() => execFileSync('python', ['--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }));
47
83
  }
48
- catch {
49
- result.hasPython = false;
84
+ if (pythonVersion !== null) {
85
+ const [, version] = pythonVersion.split(' ');
86
+ result.pythonVersion = version;
87
+ result.hasPython = true;
50
88
  }
51
89
  // 检测 Git
52
- try {
53
- execSync('git --version', { encoding: 'utf-8' });
90
+ const gitVersion = probeVersion(() => execFileSync('git', ['--version'], { encoding: 'utf-8', timeout: DETECT_TIMEOUT_MS }));
91
+ if (gitVersion !== null) {
54
92
  result.hasGit = true;
55
93
  }
56
- catch {
57
- result.hasGit = false;
58
- }
59
94
  return result;
60
95
  }
61
96
  /**
@@ -157,6 +192,33 @@ function checkPortListening(port) {
157
192
  socket.connect(port, '127.0.0.1');
158
193
  });
159
194
  }
195
+ /**
196
+ * 从 netstat -ano -p tcp 输出解析监听指定端口的 PID。
197
+ * 行形如:TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1234(IPv6 本地地址为 [::]:port)。
198
+ * rc-1/rc-5: 按 unknown 语义逐字段校验,键/列缺失即跳过,不信任列位置。
199
+ */
200
+ export function parseNetstatPid(output, port) {
201
+ for (const line of output.split('\n')) {
202
+ const parts = line.trim().split(/\s+/);
203
+ if (parts.length < 5)
204
+ continue;
205
+ // parts.length >= 5 已守卫,[0],[1],[3],[4] 存在;`?? ''` 仅为满足严格类型
206
+ const proto = parts[0] ?? '';
207
+ const local = parts[1] ?? '';
208
+ const state = parts[3] ?? '';
209
+ const pidField = parts[4] ?? '';
210
+ if (proto !== 'TCP' || state !== 'LISTENING')
211
+ continue;
212
+ if (!local.endsWith(`:${port}`))
213
+ continue;
214
+ if (!/^\d+$/.test(pidField))
215
+ continue;
216
+ const pid = parseInt(pidField, 10);
217
+ if (Number.isInteger(pid) && pid > 0)
218
+ return pid;
219
+ }
220
+ return undefined;
221
+ }
160
222
  export async function checkOpenClawGateway() {
161
223
  const port = readOpenClawPort();
162
224
  if (!port)
@@ -166,20 +228,29 @@ export async function checkOpenClawGateway() {
166
228
  return { isRunning: false };
167
229
  let pid = undefined;
168
230
  try {
169
- if (process.platform === 'win32') {
170
- const output = execSync(`powershell -NoProfile -Command "(Get-NetTCPConnection -LocalPort ${port} -State Listen -ErrorAction SilentlyContinue).OwningProcess"`, { encoding: 'utf-8', timeout: 5000 }).trim();
171
- if (output) {
172
- const [firstLine] = output.split('\n');
173
- if (firstLine)
174
- pid = parseInt(firstLine.trim(), 10);
175
- }
176
- }
177
- else {
178
- const output = execSync(`lsof -i :${port} -t -sTCP:LISTEN 2>/dev/null`, { encoding: 'utf-8', timeout: 5000 }).trim();
179
- if (output) {
180
- const [firstLine] = output.split('\n');
181
- if (firstLine)
182
- pid = parseInt(firstLine.trim(), 10);
231
+ // ERR-045: argv-array execution only. The validated port is an argv
232
+ // element or a JS-side output match — it never enters a shell string.
233
+ if (Number.isInteger(port) && port > 0 && port < 65536) {
234
+ const output = IS_WIN32
235
+ ? execFileSync('netstat.exe', ['-ano', '-p', 'tcp'], { encoding: 'utf-8', timeout: 5000 })
236
+ : execFileSync('lsof', ['-i', `:${port}`, '-t', '-sTCP:LISTEN'], { encoding: 'utf-8', timeout: 5000 });
237
+ const text = output.trim();
238
+ if (text) {
239
+ let listeningLine;
240
+ if (IS_WIN32) {
241
+ listeningLine = text.split('\n').find((line) => {
242
+ const [, localAddress, , state] = line.trim().split(/\s+/);
243
+ return state === 'LISTENING' && localAddress !== undefined && localAddress.endsWith(`:${port}`);
244
+ });
245
+ }
246
+ else {
247
+ [listeningLine] = text.split('\n');
248
+ }
249
+ const pidColumn = IS_WIN32
250
+ ? listeningLine?.trim().split(/\s+/)[4]
251
+ : listeningLine?.trim();
252
+ if (pidColumn)
253
+ pid = parseInt(pidColumn, 10);
183
254
  }
184
255
  }
185
256
  }
@@ -192,13 +263,32 @@ export async function checkOpenClawGateway() {
192
263
  * structured reason + nextAction instead of crashing mid-install.
193
264
  */
194
265
  function runGatewayServiceCommand(subcommand) {
266
+ const failedOperation = `openclaw gateway ${subcommand}`;
195
267
  try {
196
- execSync(`openclaw gateway ${subcommand}`, { stdio: 'pipe', encoding: 'utf-8', timeout: 15000 });
268
+ // ERR-045: argv-array execution only. Every branch below is fully
269
+ // literal (compile-time subcommand union), so nothing runtime-derived
270
+ // is ever interpolated into a command line.
271
+ if (subcommand === 'stop') {
272
+ if (IS_WIN32) {
273
+ execFileSync('cmd.exe', ['/c', 'openclaw', 'gateway', 'stop'], { encoding: 'utf-8', timeout: 15000, windowsHide: true });
274
+ }
275
+ else {
276
+ execFileSync('openclaw', ['gateway', 'stop'], { encoding: 'utf-8', timeout: 15000 });
277
+ }
278
+ }
279
+ else {
280
+ if (IS_WIN32) {
281
+ execFileSync('cmd.exe', ['/c', 'openclaw', 'gateway', 'start'], { encoding: 'utf-8', timeout: 15000, windowsHide: true });
282
+ }
283
+ else {
284
+ execFileSync('openclaw', ['gateway', 'start'], { encoding: 'utf-8', timeout: 15000 });
285
+ }
286
+ }
197
287
  return { ok: true };
198
288
  }
199
289
  catch (e) {
200
290
  const msg = e instanceof Error ? e.message : String(e);
201
- return { ok: false, error: `\`openclaw gateway ${subcommand}\` failed: ${msg}` };
291
+ return { ok: false, error: `${failedOperation} failed: ${msg}` };
202
292
  }
203
293
  }
204
294
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import Database from 'better-sqlite3';
2
+ export declare const GOVERNANCE_RETENTION_MAX_TURNS = 32;
3
+ export declare const GOVERNANCE_RETENTION_MAX_AGE_MS: number;
4
+ export declare const GOVERNANCE_PROMOTION_PRECEDING_TURNS = 12;
5
+ export declare const GOVERNANCE_PENDING_TAIL_STALE_MS: number;
6
+ export type GovernanceObservationKind = 'user_turn' | 'assistant_turn' | 'tool_call';
7
+ export type GovernanceObservationSource = 'live_hook' | 'transcript';
8
+ export type GovernanceObservationCompleteness = 'complete' | 'partial';
9
+ export type GovernanceRetentionClass = 'operational' | 'promoted' | 'expired' | 'rolled_back';
10
+ export interface GovernanceObservationInput {
11
+ readonly hostKind: 'codex';
12
+ readonly rolloutIdentity: string;
13
+ readonly rootSessionId: string;
14
+ readonly parentRolloutIdentity?: string;
15
+ readonly agentIdentity?: string;
16
+ readonly agentDepth?: number;
17
+ readonly hostTurnId: string;
18
+ readonly kind: GovernanceObservationKind;
19
+ /** Semantic convergence identity (SPEC §6). Built by the host adapter. */
20
+ readonly logicalObservationKey: string;
21
+ /** Physical replay identity: `host|rollout|ordinal` (SPEC §6). */
22
+ readonly transcriptRecordKey?: string;
23
+ /**
24
+ * Byte offset of the source record start — the durable transcript SOURCE
25
+ * ORDER (records are append-only, so byte position is strictly increasing
26
+ * within one rollout). All before/after/last-N/next-assistant logic orders
27
+ * by this value, never by the SQLite insertion id: a live hook row is
28
+ * inserted BEFORE the older history that a later catch-up ingests, so
29
+ * insertion order is not transcript order (PR #1455 review P1).
30
+ */
31
+ readonly recordByteStart?: number;
32
+ /** Per-rollout physical record ordinal (G1 §4) — tiebreaker/telemetry alongside the byte order. */
33
+ readonly recordOrdinal?: number;
34
+ readonly assistantItemId?: string;
35
+ /** assistant phase: 'commentary' | 'final_answer' (assistant_turn only). */
36
+ readonly phase?: string;
37
+ readonly toolUseId?: string;
38
+ /** Transcript model-level call id (call_*) — different id space than toolUseId. */
39
+ readonly transcriptToolCallId?: string;
40
+ readonly visibleText?: string;
41
+ readonly toolFacts?: unknown;
42
+ readonly source: GovernanceObservationSource;
43
+ readonly completeness: GovernanceObservationCompleteness;
44
+ readonly observedAt: string;
45
+ }
46
+ export interface GovernanceCheckpointInput {
47
+ readonly hostKind: 'codex';
48
+ readonly rolloutIdentity: string;
49
+ readonly byteOffset: number;
50
+ readonly lastOrdinal: number;
51
+ readonly cliVersion?: string;
52
+ readonly rootSessionId: string;
53
+ readonly incompleteTail: boolean;
54
+ }
55
+ export interface GovernanceIngestDegradation {
56
+ readonly reason: string;
57
+ readonly ordinal?: number;
58
+ readonly nextAction?: string;
59
+ }
60
+ export interface IngestGovernanceObservationsResult {
61
+ readonly ok: boolean;
62
+ readonly reason?: string;
63
+ readonly nextAction?: string;
64
+ readonly inserted: number;
65
+ readonly enriched: number;
66
+ readonly duplicates: number;
67
+ readonly checkpointCommitted: boolean;
68
+ readonly warnings: readonly string[];
69
+ }
70
+ export interface GovernanceCheckpointRecord {
71
+ readonly hostKind: string;
72
+ readonly rolloutIdentity: string;
73
+ readonly byteOffset: number;
74
+ readonly lastOrdinal: number;
75
+ readonly cliVersion: string | null;
76
+ readonly rootSessionId: string;
77
+ readonly incompleteTail: boolean;
78
+ readonly lastDegradationReason: string | null;
79
+ readonly lastDegradationOrdinal: number | null;
80
+ readonly updatedAt: string;
81
+ }
82
+ export interface GovernanceObservationRecord {
83
+ readonly id: number;
84
+ readonly rolloutIdentity: string;
85
+ readonly rootSessionId: string;
86
+ readonly hostTurnId: string;
87
+ readonly kind: GovernanceObservationKind;
88
+ readonly logicalKey: string;
89
+ readonly transcriptRecordKey: string | null;
90
+ readonly sourceOrder: number | null;
91
+ readonly sourceOrdinal: number | null;
92
+ readonly assistantItemId: string | null;
93
+ readonly phase: string | null;
94
+ readonly toolUseId: string | null;
95
+ readonly transcriptToolCallId: string | null;
96
+ readonly visibleText: string | null;
97
+ readonly sanitizedToolFactsJson: string | null;
98
+ readonly source: GovernanceObservationSource;
99
+ readonly completeness: GovernanceObservationCompleteness;
100
+ readonly retentionClass: GovernanceRetentionClass;
101
+ readonly observedAt: string;
102
+ readonly promotionRef: string | null;
103
+ }
104
+ export interface PromoteGovernanceEvidenceInput {
105
+ readonly workspaceDir: string;
106
+ readonly hostKind: 'codex';
107
+ readonly rolloutIdentity: string;
108
+ readonly triggerLogicalKey: string;
109
+ /** Caller-provided pain reference. Slice A never mints a pain identity (SPEC §18). */
110
+ readonly painRef: string;
111
+ readonly now?: Date;
112
+ readonly databaseFactory?: ObservationDatabaseFactory;
113
+ }
114
+ export type PromoteGovernanceEvidenceResult = {
115
+ ok: true;
116
+ promoted: number;
117
+ tailState: 'completed' | 'pending';
118
+ warnings: readonly string[];
119
+ } | {
120
+ ok: false;
121
+ reason: string;
122
+ nextAction: string;
123
+ };
124
+ export type ObservationDatabaseFactory = (databasePath: string) => Database.Database;
125
+ type Degradation = {
126
+ ok: false;
127
+ reason: string;
128
+ nextAction: string;
129
+ };
130
+ export interface GovernanceRolloutDescriptor {
131
+ readonly hostKind: 'codex';
132
+ readonly rolloutIdentity: string;
133
+ readonly rootSessionId: string;
134
+ readonly parentRolloutIdentity?: string;
135
+ readonly agentIdentity?: string;
136
+ readonly agentDepth?: number;
137
+ }
138
+ export interface IngestGovernanceObservationsInput {
139
+ readonly workspaceDir: string;
140
+ /** Rollout lineage, established even when a delta contains no projected observations (markers/skips only). */
141
+ readonly rollout?: GovernanceRolloutDescriptor;
142
+ readonly observations: readonly GovernanceObservationInput[];
143
+ readonly checkpoint?: GovernanceCheckpointInput;
144
+ readonly degradations?: readonly GovernanceIngestDegradation[];
145
+ readonly compactionTimestamp?: string;
146
+ /** Sequential rollback markers (num_turns each) decoded from the transcript delta. */
147
+ readonly rollbackTurns?: readonly number[];
148
+ readonly now?: Date;
149
+ readonly databaseFactory?: ObservationDatabaseFactory;
150
+ }
151
+ export declare function ingestGovernanceObservations(input: IngestGovernanceObservationsInput): IngestGovernanceObservationsResult;
152
+ export interface ReadGovernanceCheckpointArgs {
153
+ readonly workspaceDir: string;
154
+ readonly hostKind: 'codex';
155
+ readonly rolloutIdentity: string;
156
+ readonly databaseFactory?: ObservationDatabaseFactory;
157
+ }
158
+ export declare function readGovernanceCheckpoint(args: ReadGovernanceCheckpointArgs): GovernanceCheckpointRecord | null | Degradation;
159
+ export interface ListGovernanceObservationsInput {
160
+ readonly workspaceDir: string;
161
+ readonly rolloutIdentity?: string;
162
+ readonly retentionClass?: GovernanceRetentionClass;
163
+ readonly limit?: number;
164
+ readonly databaseFactory?: ObservationDatabaseFactory;
165
+ }
166
+ export type ListGovernanceObservationsResult = {
167
+ ok: true;
168
+ observations: readonly GovernanceObservationRecord[];
169
+ } | Degradation;
170
+ export declare function listGovernanceObservations(input: ListGovernanceObservationsInput): ListGovernanceObservationsResult;
171
+ export declare function promoteGovernanceEvidence(input: PromoteGovernanceEvidenceInput): PromoteGovernanceEvidenceResult;
172
+ export {};