chainlesschain 0.166.65 → 0.166.69

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 (200) hide show
  1. package/README.md +20 -12
  2. package/package.json +4 -4
  3. package/src/assets/web-panel/assets/{AIOps-Byz17CTN.js → AIOps-FhevRfL6.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-C5LiW2-J.js → ActionButton-rOeOykx5.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-D1INcvZF.js → Analytics-BK_wYlfz.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-DZzHO1VV.js → AppLayout-_2cCtZKV.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-WfYQL6Ia.js → Artifacts-D5MSvVzk.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DohBoGWO.js → Audit-yd-Ah-A3.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-Chtk-Hde.js → BackgroundAgents-yCaw_Gu_.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-B813PuMz.js → Backup-G3ADD4N-.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DaDdWWgK.js → BaseInput-ByDhkLbF.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-D4pJ6oZ7.js → Chat-BMrc7qjz.js} +4 -4
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-nA7n0I6S.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-Clo9TvO6.js → Checkbox-BHYgyZWA.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-uejLg8Ih.js → Codegen-DJfcy0jC.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-B7nbx-iJ.js → Col-C27zROxc.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-FEyjPK1j.js → Community-CuS5tq_1.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-B6Fk0Kn6.js → Compact-BrYJNe7Q.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BQG8goUl.js → Compliance-8hfahYHT.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CbBeEfHp.js → Cowork-DdE0n2lp.js} +2 -2
  21. package/src/assets/web-panel/assets/{Cron-DPzlFcEZ.js → Cron-CUq3aSiX.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-B8pWJrbg.js → Crosschain-BM4XSPWG.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-gGQHUlFN.js → DID-CdaBY57N.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C2TMFHrn.js → Dashboard-Cwtd52So.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BVPxGbll.js → Dropdown-BvlObh6U.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-CNPxs0hd.js → EmailListRenderer-e3fLhjnX.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-_XTiB7q1.js → EvolutionSettings-CTtk1Zo8.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-UyE3VWtI.js → FamilyGuardDashboard-BpPJUnCU.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-CLt6FHK-.js → Federation-vzjZ6_nQ.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CdNQPRPw.js → FormItemContext-DEDNLhkE.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-BJ0AMhrh.js → GenericCardRenderer-DEl2Te5f.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-CQnvMfOM.js → Git-BzsYQnCq.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-deYsHC-o.js → Governance-zxJs6Y8s.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-qaSck43z.js → Inference-5JUsrmF1.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-De0aJ3Ls.js → KnowledgeGraph-Br8b5Htz.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-ZtS98jCm.js → Logs-D-tubDMJ.js} +2 -2
  37. package/src/assets/web-panel/assets/MarkdownRenderer-In4itZX2.js +1 -0
  38. package/src/assets/web-panel/assets/{Marketplace-Byz3xCBN.js → Marketplace-s8MmWkS9.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DOZUUW6z.js → McpTools-Wu-WRg4M.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-C33wC2hA.js → Memory-B_i-eX9w.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-zZe-T_6M.js → MobileBridge-Ca64kjVx.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-CRnUIume.js → MobileProjects-Cq9AFiO4.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-C1xlRVAN.js → Mtc-DKvGmG3y.js} +4 -4
  44. package/src/assets/web-panel/assets/{MtcAudit-D0U07bIi.js → MtcAudit-BVvWx8pF.js} +2 -2
  45. package/src/assets/web-panel/assets/{Multisig-DF8uvV3h.js → Multisig-wqeJ2O9x.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-bBPGAFlt.js → NLProgramming-DX87ysYu.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-BHAaOsgg.js → Notes-ChenGdu0.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-Cl0fG_rA.js → NotificationSettings-BZRa68-x.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-BEPAs8Zv.js → OrderTableRenderer-DZ6xG1M6.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-BAxSwgk5.js → Organization-BWJp4VPX.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-D68KubAu.js → Overflow-BoM4bYt5.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-bhdT17zk.js → P2P-Cvi8YV09.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-DqaO6wgH.js → PdhVaultBrowser-CNVC1NIj.js} +3 -3
  54. package/src/assets/web-panel/assets/{Permissions-Bq8fvkak.js → Permissions-DNd1MRjW.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BYd2JEic.js → PersonalDataHub-DGSBYZ5-.js} +5 -5
  56. package/src/assets/web-panel/assets/{Pipeline-Csg_ja69.js → Pipeline-DkcoGMBo.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-lwxwLj4M.js → Privacy-DltwvMAW.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-BdBZkH8z.js → ProjectInit-ChYbpHg8.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-ClWgFy-K.js → ProjectSettings-B8FWiHTJ.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-Bu-qj8N1.js → Projects-DuyhtSm4.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-DEjxrxw3.js → Providers-Bo18Tx_6.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-eccy-8Vi.js → QrScannerModal-6W85KlsG.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-Vx3uDvFg.js → QuickAsk-DznRUedP.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-CfUivNps.js → Recommend-CQDN3_p-.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-BU4gk7GI.js → RemoteSession-CiJgokEj.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-CbPzdZ0C.js → Reputation-DexzGH7E.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-CYLrgfKA.js → Row-BgZOIvSi.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-DbY1oyuv.js → RssFeed-BWIZJ_Jr.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-QeW41K5r.js → Search-B376EwWJ.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-CJxf1kLZ.js → Security-92mUR5OD.js} +4 -4
  71. package/src/assets/web-panel/assets/{Services-CFO9ySZc.js → Services-ClSEAOHk.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-CQFjeQN0.js → Skeleton-DVhLbv99.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-CLLB4INW.js → Skills-JTcXs_xI.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DxeLIJk0.js → Sla-DnKY9zy9.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-D4FA9KYI.js → SpeechSettings-GO1JefAH.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-C6NOkcQK.js → SyncSettings-jX5tB2St.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-LmVPWDfQ.js → Tasks-BxRBzhUc.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-BdEfUoVB.js → Templates-CAVkbTG1.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-IUlESacN.js → Tenant-5Y7sHBkz.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-B9pDe7sn.js → Terminal-CbbLShYb.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-ZCwB-Pki.js → TimelineRenderer-2HptWihL.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-4qk16LX1.js → Tokens-B-jGxzHl.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-jXNyargn.js → Trigger-9DGa90DT.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-D13PydtT.js → Trust-BSJEkEOO.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-yPgws6mS.js → UkeySign-C807So5R.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-B329WjpG.js → VideoEditing-ByiieAv-.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-T8VM-Ttm.js → Wallet-BixbIOUv.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-XuRibrpP.js → WebAuthn-z7akhor4.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-D1Gwz3YR.js → WorkflowEditor-KvijuUuR.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-DjydtnT-.js → chat-BYKoh0YG.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-gFtBvPrr.js → colors-CLT8IYBt.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-CndxhGfx.js → compact-item-DlBIyYHF.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-DnfGpd0L.js → createContext-5XmAnNLr.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-BmcCIHwY.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-CmT5hRVW.js → hasIn-rPdRhm7K.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DoBKSzqu.js → index-8un-eUDI.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DGbKeg8G.js → index-B-0nAxf5.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DreYqebI.js → index-B1VfBUPB.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-zQf599Uq.js → index-BBt2CSAx.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BlTcxT_L.js → index-BDtlwjSr.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CqpR0Des.js → index-BIRl2Ii5.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-C3HvYeA3.js → index-BgevTkUv.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-B0WFjxWs.js → index-Bve7Wsgf.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BNHdO6Jr.js → index-Bzd0sFkp.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DV2PR3Fa.js → index-C2sFDVb_.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-D2d7358Y.js → index-CErvHCDe.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DaEPE2DC.js → index-CM_a9spK.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DKyuE_Y2.js → index-CY6TMc2m.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BVM_w30N.js → index-ChlzaTV3.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CZLDbPTa.js → index-CsnbOKdI.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-HHP1zzo7.js → index-D3-NL-x-.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BFif4Cev.js → index-D3f9Jzx2.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-C14jryXi.js → index-DCDSycWo.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CB27echm.js → index-DIVrVGvf.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BGlmPbl_.js → index-DI_tYFBe.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BsRKmb6k.js → index-DPS4mWnI.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BXNUTiW8.js → index-DTslLzPJ.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Dbpk75MO.js → index-DW8vozBS.js} +1 -1
  119. package/src/assets/web-panel/assets/index-DY8rmd6x.js +1 -0
  120. package/src/assets/web-panel/assets/{index-DjY-3sMA.js → index-DZiSMYoD.js} +3 -3
  121. package/src/assets/web-panel/assets/{index-DV6NrfJx.js → index-DZjGcIGU.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-ktN-K1Tf.js → index-Dea32nOK.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DjcR-CwS.js → index-Djd7uqwM.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CuOx4Pbe.js → index-Dntid6oj.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-BW3nWiu0.js → index-DqZU4_7J.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-C4Mqhmas.js → index-DuvweiCz.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CRqz8TtI.js → index-DzExCCLS.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-D5na0B7G.js → index-LKT-Ol0A.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-_-wGLtAg.js → index-akwXS-FF.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CgMKElUh.js → index-b-rQCMkx.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DUlubR4l.js → index-eHbr3f5I.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-D88-8bsB.js → index-kx6zDWew.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DuAvYTmY.js → index-rRuCGdKW.js} +1 -1
  134. package/src/assets/web-panel/assets/index-sbwcUeRS.js +1 -0
  135. package/src/assets/web-panel/assets/{initDefaultProps-KV3V-PNH.js → initDefaultProps-a8411LiK.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-PFGQg7_X.js → motion-oVcQdpCm.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Dnl79wq4.js → move-B-eyzzzL.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-Bwl5JH9V.js → mtc-parser-BCYIxuG7.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-DCcTtM1l.js → omit-DuFtWiYh.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-Cl6BjjDf.js → pickAttrs-CVAoJhGu.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-fdqhyo42.js → placementArrow-Y2iub2bO.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-DYQpmcDW.js → responsiveObserve-BHenWIVD.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-C4l-VfO4.js → slide-CKrMaL29.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-DYDw_dyZ.js → statusUtils-w8eb_1da.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-BEsubSMu.js → styleChecker-CCVi_Ww3.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-Cj82ggQ_.js → useFlexGapSupport-BsmR_q0r.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-B7L1eJ0V.js → useFs-a8GMBjnc.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-DVlJVD4d.js → usePersonalDataHub-BMUYSPn-.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-BBAbRN_Y.js → vnode-DL2pI31V.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-BYn48q-I.js → zoom-Cbi8fISi.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +33 -7
  153. package/src/lib/dependency-install-policy.js +1 -1
  154. package/src/lib/evolution/browser-download-action-authority.js +747 -0
  155. package/src/lib/evolution/browser-download-artifact-disposal-authority.js +436 -0
  156. package/src/lib/evolution/browser-filesystem-quarantine-custody.js +2453 -0
  157. package/src/lib/evolution/browser-filesystem-quarantine-disposal.js +36 -0
  158. package/src/lib/evolution/browser-keyboard-action-authority.js +560 -0
  159. package/src/lib/evolution/browser-navigation-action-authority.js +546 -0
  160. package/src/lib/evolution/browser-quarantine-lock-maintenance-authority.js +573 -0
  161. package/src/lib/evolution/browser-quarantine-operator-revocation-authority.js +442 -0
  162. package/src/lib/evolution/browser-quarantine-retention-authority.js +503 -0
  163. package/src/lib/evolution/browser-quarantine-retention-scheduler.js +207 -0
  164. package/src/lib/evolution/browser-quarantined-download-executor.js +525 -0
  165. package/src/lib/evolution/browser-tab-open-action-authority.js +491 -0
  166. package/src/lib/evolution/browser-vision-action-authority.js +444 -0
  167. package/src/lib/evolution/browser-vision-observation-authority.js +304 -0
  168. package/src/lib/evolution/evolution-deployment-loader.js +241 -1
  169. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +5 -0
  170. package/src/lib/evolution/evolution-eval-gate.js +2 -1
  171. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +71 -9
  172. package/src/lib/evolution/evolution-eval-process-supervisor.js +276 -9
  173. package/src/lib/evolution/evolution-workbench-metrics.js +81 -21
  174. package/src/lib/evolution/pm-exploration-benchmark.js +747 -0
  175. package/src/lib/evolution/pm-exploration-budget-executor.js +106 -9
  176. package/src/lib/evolution/pm-exploration-egress-authority.js +382 -0
  177. package/src/lib/evolution/pm-exploration-evidence-bundle.js +149 -44
  178. package/src/lib/evolution/pm-exploration-execution-host.js +1254 -8
  179. package/src/lib/evolution/pm-exploration-process-grader.js +458 -0
  180. package/src/lib/evolution/pm-exploration-process-reviewer.js +456 -0
  181. package/src/lib/evolution/pm-exploration-process-runner.js +500 -0
  182. package/src/lib/evolution/pm-exploration-receipts.js +211 -11
  183. package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +465 -46
  184. package/src/lib/evolution/pm-exploration-transition-committer.js +185 -34
  185. package/src/lib/evolution/skill-outcome-index-authority.js +7 -3
  186. package/src/lib/evolution/skill-writer-inventory-manifest.js +0 -39
  187. package/src/lib/evolution/volcengine-function-execution-authority.js +2949 -0
  188. package/src/lib/evolution/volcengine-function-process-executor.js +615 -0
  189. package/src/lib/evolution/volcengine-function-replay-store.js +836 -0
  190. package/src/lib/evolution/volcengine-function-revocation-status-floor-store.js +480 -0
  191. package/src/lib/governance-coverage.js +1 -1
  192. package/src/lib/headless-manifest.js +1 -1
  193. package/src/lib/protocol-replay.js +1 -1
  194. package/src/lib/skill-outcome-transcript-authority.js +45 -5
  195. package/src/runtime/agent-core.js +17 -0
  196. package/src/assets/web-panel/assets/ChatBubbleRenderer-Cf3LLgDc.js +0 -1
  197. package/src/assets/web-panel/assets/MarkdownRenderer-CTsYo9NN.js +0 -1
  198. package/src/assets/web-panel/assets/devWarning-D60SbiD-.js +0 -1
  199. package/src/assets/web-panel/assets/index-C0yR4_7h.js +0 -1
  200. package/src/assets/web-panel/assets/index-D4xuvo03.js +0 -1
@@ -7,6 +7,8 @@ export const PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA =
7
7
  "chainlesschain.desktop-pm-state-transition-success/v1";
8
8
  export const PM_EXPLORATION_FAILED_TRANSITION_SCHEMA =
9
9
  "chainlesschain.desktop-pm-failed-execution-evidence/v1";
10
+ export const PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA =
11
+ "chainlesschain.desktop-pm-clone-recovery-event/v1";
10
12
  export const PM_EXPLORATION_TRANSITION_DURABILITY_ACK_SCHEMA =
11
13
  "chainlesschain.pm-exploration-transition-durability-ack/v1";
12
14
  export const PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_DURABILITY_ACK_SCHEMA =
@@ -15,6 +17,8 @@ export const PM_EXPLORATION_TRANSITION_RECOVERY_REQUEST_SCHEMA =
15
17
  "chainlesschain.pm-exploration-transition-recovery-request/v1";
16
18
  export const PM_EXPLORATION_TRANSITION_RECOVERY_SCHEMA =
17
19
  "chainlesschain.pm-exploration-transition-recovery/v1";
20
+ export const PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_RECOVERY_SCHEMA =
21
+ "chainlesschain.pm-exploration-transition-recovery/v2";
18
22
 
19
23
  const DATABASE_SEAL_SCHEMA =
20
24
  "chainlesschain.desktop-pm-database-pre-run-seal/v1";
@@ -285,6 +289,106 @@ function failedTransition(value, expectedManifestDigest) {
285
289
  return deepFreeze({ ...core, evidenceDigest });
286
290
  }
287
291
 
292
+ function cloneRecoveryEvent(value, expectedManifestDigest) {
293
+ exact(
294
+ value,
295
+ [
296
+ "schema",
297
+ "manifestDigest",
298
+ "cloneIdentityDigest",
299
+ "sourceTransitionRevision",
300
+ "sourceFailureEvidenceDigest",
301
+ "previousStateTransitionDigest",
302
+ "recoverySnapshotAckDigest",
303
+ "restoredDatabaseSealDigest",
304
+ "restoredWorkspaceSealDigest",
305
+ "switchReceiptDigest",
306
+ "authenticated",
307
+ "durable",
308
+ "qualifiesForPromotion",
309
+ "recoveryEventDigest",
310
+ ],
311
+ "PM clone recovery event",
312
+ );
313
+ if (
314
+ value.schema !== PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA ||
315
+ value.manifestDigest !== expectedManifestDigest ||
316
+ !Number.isSafeInteger(value.sourceTransitionRevision) ||
317
+ value.sourceTransitionRevision < 1 ||
318
+ value.authenticated !== false ||
319
+ value.durable !== false ||
320
+ value.qualifiesForPromotion !== false
321
+ ) {
322
+ throw new Error("PM clone recovery event fields are invalid");
323
+ }
324
+ const core = {
325
+ schema: value.schema,
326
+ manifestDigest: digest(value.manifestDigest, "manifestDigest"),
327
+ cloneIdentityDigest: digest(
328
+ value.cloneIdentityDigest,
329
+ "cloneIdentityDigest",
330
+ ),
331
+ sourceTransitionRevision: value.sourceTransitionRevision,
332
+ sourceFailureEvidenceDigest: digest(
333
+ value.sourceFailureEvidenceDigest,
334
+ "sourceFailureEvidenceDigest",
335
+ ),
336
+ previousStateTransitionDigest: optionalDigest(
337
+ value.previousStateTransitionDigest,
338
+ "previousStateTransitionDigest",
339
+ ),
340
+ recoverySnapshotAckDigest: digest(
341
+ value.recoverySnapshotAckDigest,
342
+ "recoverySnapshotAckDigest",
343
+ ),
344
+ restoredDatabaseSealDigest: digest(
345
+ value.restoredDatabaseSealDigest,
346
+ "restoredDatabaseSealDigest",
347
+ ),
348
+ restoredWorkspaceSealDigest: digest(
349
+ value.restoredWorkspaceSealDigest,
350
+ "restoredWorkspaceSealDigest",
351
+ ),
352
+ switchReceiptDigest: digest(
353
+ value.switchReceiptDigest,
354
+ "switchReceiptDigest",
355
+ ),
356
+ authenticated: false,
357
+ durable: false,
358
+ qualifiesForPromotion: false,
359
+ };
360
+ const recoveryEventDigest = digest(
361
+ value.recoveryEventDigest,
362
+ "recoveryEventDigest",
363
+ );
364
+ if (
365
+ recoveryEventDigest !==
366
+ hash(PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA, core)
367
+ ) {
368
+ throw new Error("PM clone recovery event digest mismatch");
369
+ }
370
+ return deepFreeze({ ...core, recoveryEventDigest });
371
+ }
372
+
373
+ function transitionBinding(evidence) {
374
+ if (evidence.schema === PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA) {
375
+ return Object.freeze({
376
+ transitionKind: "success",
377
+ evidenceDigest: evidence.stateTransitionDigest,
378
+ });
379
+ }
380
+ if (evidence.schema === PM_EXPLORATION_FAILED_TRANSITION_SCHEMA) {
381
+ return Object.freeze({
382
+ transitionKind: "failure",
383
+ evidenceDigest: evidence.evidenceDigest,
384
+ });
385
+ }
386
+ return Object.freeze({
387
+ transitionKind: "recovery",
388
+ evidenceDigest: evidence.recoveryEventDigest,
389
+ });
390
+ }
391
+
288
392
  export function verifyPmExplorationTransitionEvidence(
289
393
  value,
290
394
  expectedManifestDigest,
@@ -305,6 +409,8 @@ export function verifyPmExplorationTransitionEvidence(
305
409
  return successTransition(value, manifestDigest);
306
410
  if (schema.value === PM_EXPLORATION_FAILED_TRANSITION_SCHEMA)
307
411
  return failedTransition(value, manifestDigest);
412
+ if (schema.value === PM_EXPLORATION_CLONE_RECOVERY_EVENT_SCHEMA)
413
+ return cloneRecoveryEvent(value, manifestDigest);
308
414
  throw new TypeError("PM transition evidence schema is invalid");
309
415
  }
310
416
 
@@ -370,34 +476,67 @@ function durabilityAck(value, binding) {
370
476
  }
371
477
 
372
478
  function transitionRecovery(value, expectedManifestDigest) {
479
+ const schemaDescriptor =
480
+ value &&
481
+ typeof value === "object" &&
482
+ !Array.isArray(value) &&
483
+ !isProxy(value) &&
484
+ Object.getPrototypeOf(value) === Object.prototype
485
+ ? Object.getOwnPropertyDescriptor(value, "schema")
486
+ : null;
487
+ const snapshotBound =
488
+ schemaDescriptor &&
489
+ "value" in schemaDescriptor &&
490
+ schemaDescriptor.value ===
491
+ PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_RECOVERY_SCHEMA;
373
492
  exact(
374
493
  value,
375
- [
376
- "schema",
377
- "authenticated",
378
- "durable",
379
- "readbackVerified",
380
- "manifestDigest",
381
- "revision",
382
- "transitionKind",
383
- "evidenceDigest",
384
- "evidence",
385
- "ledgerHeadDigest",
386
- "ledgerEventDigest",
387
- "durabilityReceiptDigest",
388
- "qualifiesForPromotion",
389
- ],
494
+ snapshotBound
495
+ ? [
496
+ "schema",
497
+ "authenticated",
498
+ "durable",
499
+ "readbackVerified",
500
+ "manifestDigest",
501
+ "revision",
502
+ "transitionKind",
503
+ "evidenceDigest",
504
+ "evidence",
505
+ "recoverySnapshot",
506
+ "ledgerHeadDigest",
507
+ "ledgerEventDigest",
508
+ "durabilityReceiptDigest",
509
+ "qualifiesForPromotion",
510
+ ]
511
+ : [
512
+ "schema",
513
+ "authenticated",
514
+ "durable",
515
+ "readbackVerified",
516
+ "manifestDigest",
517
+ "revision",
518
+ "transitionKind",
519
+ "evidenceDigest",
520
+ "evidence",
521
+ "ledgerHeadDigest",
522
+ "ledgerEventDigest",
523
+ "durabilityReceiptDigest",
524
+ "qualifiesForPromotion",
525
+ ],
390
526
  "PM transition recovery",
391
527
  );
392
528
  if (
393
- value.schema !== PM_EXPLORATION_TRANSITION_RECOVERY_SCHEMA ||
529
+ ![
530
+ PM_EXPLORATION_TRANSITION_RECOVERY_SCHEMA,
531
+ PM_EXPLORATION_SNAPSHOT_BOUND_TRANSITION_RECOVERY_SCHEMA,
532
+ ].includes(value.schema) ||
394
533
  value.authenticated !== true ||
395
534
  value.durable !== true ||
396
535
  value.readbackVerified !== true ||
397
536
  value.manifestDigest !== expectedManifestDigest ||
398
537
  !Number.isSafeInteger(value.revision) ||
399
538
  value.revision < 0 ||
400
- ![null, "success", "failure"].includes(value.transitionKind) ||
539
+ ![null, "success", "failure", "recovery"].includes(value.transitionKind) ||
401
540
  !DIGEST.test(value.ledgerHeadDigest ?? "") ||
402
541
  value.qualifiesForPromotion !== false
403
542
  ) {
@@ -405,6 +544,7 @@ function transitionRecovery(value, expectedManifestDigest) {
405
544
  }
406
545
  if (value.transitionKind === null) {
407
546
  if (
547
+ snapshotBound ||
408
548
  value.revision !== 0 ||
409
549
  value.evidenceDigest !== null ||
410
550
  value.evidence !== null ||
@@ -427,21 +567,34 @@ function transitionRecovery(value, expectedManifestDigest) {
427
567
  value.evidence,
428
568
  expectedManifestDigest,
429
569
  );
430
- const transitionKind =
431
- evidence.schema === PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA
432
- ? "success"
433
- : "failure";
434
- const evidenceDigest =
435
- transitionKind === "success"
436
- ? evidence.stateTransitionDigest
437
- : evidence.evidenceDigest;
570
+ const { transitionKind, evidenceDigest } = transitionBinding(evidence);
438
571
  if (
439
572
  value.transitionKind !== transitionKind ||
440
573
  value.evidenceDigest !== evidenceDigest
441
574
  ) {
442
575
  throw new Error("PM transition recovery evidence binding is invalid");
443
576
  }
444
- return deepFreeze({ ...value, evidence });
577
+ if (snapshotBound && transitionKind === "recovery") {
578
+ throw new Error(
579
+ "PM clone recovery event cannot carry a transition recovery snapshot",
580
+ );
581
+ }
582
+ const recoverySnapshot = snapshotBound
583
+ ? verifyPmExplorationRecoverySnapshotAck(value.recoverySnapshot, {
584
+ manifestDigest: expectedManifestDigest,
585
+ transitionKind,
586
+ evidenceDigest,
587
+ sealDigest:
588
+ transitionKind === "success"
589
+ ? evidence.postRunSeal.sealDigest
590
+ : evidence.preRunSeal.sealDigest,
591
+ })
592
+ : null;
593
+ return deepFreeze({
594
+ ...value,
595
+ evidence,
596
+ ...(snapshotBound ? { recoverySnapshot } : {}),
597
+ });
445
598
  }
446
599
 
447
600
  export function createPmExplorationTransitionCommitter(input = {}) {
@@ -493,14 +646,12 @@ export function capturePmExplorationTransitionCommitter(value) {
493
646
  input,
494
647
  captured.manifestDigest,
495
648
  );
496
- const transitionKind =
497
- evidence.schema === PM_EXPLORATION_SUCCESS_TRANSITION_SCHEMA
498
- ? "success"
499
- : "failure";
500
- const evidenceDigest =
501
- transitionKind === "success"
502
- ? evidence.stateTransitionDigest
503
- : evidence.evidenceDigest;
649
+ const { transitionKind, evidenceDigest } = transitionBinding(evidence);
650
+ if (transitionKind === "recovery" && recoverySnapshotInput !== null) {
651
+ throw new Error(
652
+ "PM clone recovery event cannot retain another recovery snapshot",
653
+ );
654
+ }
504
655
  const recoverySnapshot =
505
656
  recoverySnapshotInput === null
506
657
  ? null
@@ -1,6 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
2
 
3
- import { verifyEvolutionWorkbenchMetricsSnapshot } from "./evolution-workbench-metrics.js";
3
+ import {
4
+ EVOLUTION_WORKBENCH_METRICS_SNAPSHOT_SCHEMA,
5
+ verifyEvolutionWorkbenchMetricsSnapshot,
6
+ } from "./evolution-workbench-metrics.js";
4
7
  import { isEvolutionWorkbenchMetricsOutcomeReader } from "./evolution-workbench-metrics-ledger-adapter.js";
5
8
 
6
9
  export const SKILL_OUTCOME_INDEX_AUTHORITY_SCHEMA =
@@ -96,8 +99,9 @@ function inspectSource(adapter) {
96
99
  descriptor,
97
100
  );
98
101
  if (
99
- snapshot.outcomeHistoryComplete !== true &&
100
- snapshot.versions.length !== 0
102
+ snapshot.versions.length !== 0 &&
103
+ (snapshot.schema !== EVOLUTION_WORKBENCH_METRICS_SNAPSHOT_SCHEMA ||
104
+ snapshot.outcomeHistoryComplete !== true)
101
105
  ) {
102
106
  throw unavailable(
103
107
  "Skill outcome index requires a complete outcome backfill",
@@ -604,45 +604,6 @@ export const SKILL_WRITER_INVENTORY = Object.freeze({
604
604
  ],
605
605
  },
606
606
  }),
607
- writer({
608
- id: "desktop-skills-create-ipc",
609
- surface: "desktop",
610
- triggerClass: "manual",
611
- targetAuthority: "legacy-active",
612
- mutationType: "skill-bytes",
613
- discoverySymbol: "ipc:skills:create",
614
- entrypoint: {
615
- file: "desktop-app-vue/src/main/ai-engine/cowork/skills/skills-ipc.js",
616
- symbol: "ipc:skills:create",
617
- evidence: ['ipcMain.handle("skills:create"'],
618
- },
619
- mutation: {
620
- file: "desktop-app-vue/src/main/ai-engine/cowork/skills/skills-ipc.js",
621
- symbol: "ipc:skills:create",
622
- evidence: [
623
- 'path.join(targetDir, "SKILL.md")',
624
- "await fs.writeFile(skillMdPath, content",
625
- ],
626
- },
627
- }),
628
- writer({
629
- id: "desktop-skills-enabled-ipc",
630
- surface: "desktop",
631
- triggerClass: "manual",
632
- targetAuthority: "legacy-active",
633
- mutationType: "active-selection",
634
- discoverySymbol: null,
635
- entrypoint: {
636
- file: "desktop-app-vue/src/main/ai-engine/cowork/skills/skills-ipc.js",
637
- symbol: "ipc:skills:set-enabled",
638
- evidence: ['ipcMain.handle("skills:set-enabled"'],
639
- },
640
- mutation: {
641
- file: "desktop-app-vue/src/main/ai-engine/cowork/skills/skills-ipc.js",
642
- symbol: "ipc:skills:set-enabled",
643
- evidence: ["skill.config.enabled = enabled"],
644
- },
645
- }),
646
607
  writer({
647
608
  id: "desktop-skill-creator-create",
648
609
  surface: "desktop",