chainlesschain 0.166.59 → 0.166.63

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 (182) hide show
  1. package/README.md +38 -8
  2. package/package.json +4 -1
  3. package/src/assets/web-panel/assets/{AIOps-B9i3kk5f.js → AIOps-CfPrpABR.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DGMs1wBm.js → ActionButton-Bkv1erki.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-D-JGeynM.js → Analytics-fY_7epoU.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-DLECnXlP.js → AppLayout-DegaN-aa.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-CwaTiXN4.js → Artifacts-90-UNTVE.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-BCb7s5Ky.js → Audit-BRQ1F4sA.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-D4IOzvKs.js → BackgroundAgents-Cb85uP7O.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-Cknunk10.js → Backup-CrLBSWQK.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DnU8pbUh.js → BaseInput-DditUW5B.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DOouYIhz.js → Chat-0XozleDQ.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-8QXBJvgy.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-BrumNw6V.js → Checkbox-C2Ck_3ju.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-B4E_uI_N.js → Codegen-Chjw-MS7.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-C7H2sdaL.js → Col-B_w8_Oka.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-BFdzcMSl.js → Community-XAqxPnXq.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-BzVXohrg.js → Compact-BX_3GJ3m.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-B_4QcuSH.js → Compliance-DE3kIC9z.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-DjuQzJx8.js → Cowork-DPBYp1ey.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-Bf2iY-1-.js → Cron-D9cknqzn.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CY9QW7IT.js → Crosschain-BzHrGWY9.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-kDZBvaKr.js → DID-BuD8TkZl.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-DoYboS3g.js → Dashboard-BbxMuZVK.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-LLEzI6l1.js → Dropdown-jq0ki-tE.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-D2kmSvkg.js → EmailListRenderer-RiMvINxT.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-DHj2yUGZ.js → EvolutionSettings-DE-URi9i.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-B7Hg7fR0.js → FamilyGuardDashboard-DV3ao62-.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-CUdwU6aH.js → Federation-BF6BmBPg.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-D1KrwjwY.js → FormItemContext-CKTX59j2.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-CXGLoHfw.js → GenericCardRenderer-DZkH-CTs.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-TG3Q9JWG.js → Git-B5JYb-w-.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-BJD7h_fv.js → Governance-D3WfDZ6W.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-Dky4l_bZ.js → Inference-DoSvfDUk.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-CCx9aXBV.js → KnowledgeGraph-DUDIzN97.js} +1 -1
  36. package/src/assets/web-panel/assets/Logs-JfJerfFD.js +2 -0
  37. package/src/assets/web-panel/assets/MarkdownRenderer-DXgA7cZm.js +1 -0
  38. package/src/assets/web-panel/assets/{Marketplace-BzL6KJMX.js → Marketplace-BpVrOM_V.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-BReSRzEU.js → McpTools-CFnQdiSv.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-BhmkkCxd.js → Memory-Dxv81cNl.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-BeQMHr_n.js → MobileBridge-C92eX7PB.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-CphEwj_l.js → MobileProjects-BUHw7Wox.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-CFk1ibuN.js → Mtc-D-G9H4A1.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-CU9qrmbH.js → MtcAudit-CAEaEtAz.js} +5 -5
  45. package/src/assets/web-panel/assets/{Multisig-CKR-Gh0Y.js → Multisig-Cx_-X9HD.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-D1qWY6Mx.js → NLProgramming-DRIKG4Xy.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-B4CM0C65.js → Notes-CmL0vKUv.js} +4 -4
  48. package/src/assets/web-panel/assets/{NotificationSettings-BTQYWveR.js → NotificationSettings-D2cQ5aQn.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-DxN6fAn8.js → OrderTableRenderer-CPfd7PNy.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-scgboNfd.js → Organization-EKqO46hz.js} +2 -2
  51. package/src/assets/web-panel/assets/{Overflow-BP4aQhid.js → Overflow-BOHjBwJo.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-65jIo6MY.js → P2P-Dx4LdCE0.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-Bfi4-tDQ.js → PdhVaultBrowser-CgCt2xdT.js} +5 -5
  54. package/src/assets/web-panel/assets/{Permissions-DWtxT7bE.js → Permissions-DWjDeO7O.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-Bilmr8BR.js → PersonalDataHub-Bx4Od8pG.js} +4 -4
  56. package/src/assets/web-panel/assets/{Pipeline-IPIMM-1y.js → Pipeline-oKxws_Ch.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-DFB8RiVK.js → Privacy-Df1HVRKR.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-DxZksvu1.js → ProjectInit-BraLwZT4.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-DsjPsnYN.js → ProjectSettings-CKru54M0.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-CC5FBLLq.js → Projects-BEr7cJcS.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-Dk3ViPuF.js → Providers-C8v30DU3.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-CJ8R6-bF.js → QrScannerModal-CPyNV-O5.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-DJfCPORc.js → QuickAsk-BLIew7A5.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-DjDygXeb.js → Recommend-DVjWmsPs.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-BJiJ1YHw.js → RemoteSession-B4PNTaEf.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-fYE8jPcc.js → Reputation-D5HOV6oI.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-vcvsjMm4.js → Row-DgCQom2M.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-CZnKliwn.js → RssFeed-zvIcGHgz.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-DEStiFGI.js → Search-C-KbJP_z.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-BPb_szxS.js → Security-CasnI-Ld.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-TR0xZhSF.js → Services-CR-pSlFv.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-BSPu9boC.js → Skeleton-BB5On1b5.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-CXEj9pC6.js → Skills-CC-wdQi-.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-jlOlDGMA.js → Sla-CPX5QKEu.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-C8oPE_HQ.js → SpeechSettings-Bifkl6Zz.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-DZNUx8zt.js → SyncSettings-CdUVeB-S.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-B4T6aoOl.js → Tasks-BttwN3fs.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-DeRgtwZ5.js → Templates-CBHNbpQ7.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-DDVoXGxa.js → Tenant-B90lEwSQ.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-DGAUoJMz.js → Terminal-u8KqitsA.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-Co4Nkpjm.js → TimelineRenderer-CnEJMkJo.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-DaMLa0Fm.js → Tokens-CTM2OOJ_.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-C7iLr-Ik.js → Trigger-Ca8NmmgU.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-CxX_tQqi.js → Trust-CI9GpUj2.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-ClrdckEx.js → UkeySign-BlMLGqKK.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-DgTVhaoK.js → VideoEditing-C8yCZrH0.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-SIbwES0O.js → Wallet-BpuYrz8o.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-YNqVnhZF.js → WebAuthn-DFpNfLG_.js} +4 -4
  89. package/src/assets/web-panel/assets/{WorkflowEditor-BvynT9mj.js → WorkflowEditor-BWhLoeU4.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-X79b2tVy.js → chat-Dwo4LC7E.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-DioWDCbu.js → colors-DkdGvKBf.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-DpAXXaqu.js → compact-item-1gI0lfs3.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-BYq8bCQX.js → createContext-O9iHirtr.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-axBqv361.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-CDJNMJ_n.js → hasIn-DY1jo9BQ.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-DUe-hFGb.js → index-1AnBwAoM.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CS3QdYDW.js → index-B-kbagPi.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DZysaS5T.js → index-B0TX-bLV.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-Cx0_WiSe.js → index-B5l7eb6E.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CJEFd0QJ.js → index-BDwV_V5g.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-D88MWTOx.js → index-BgHG4f2K.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BK53HyEP.js → index-BgVO1aXv.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-COqkDiRU.js → index-Bl6GfsQZ.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CUbuCFWb.js → index-BmAK4o9I.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C7cXBJcM.js → index-BsQkwBu2.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Byt1ny7l.js → index-BumRAO-7.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Bh9la-GL.js → index-Bx4MNNMY.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-B8_grEFP.js → index-C4c0XaiT.js} +1 -1
  109. package/src/assets/web-panel/assets/index-CAsOttsq.js +1 -0
  110. package/src/assets/web-panel/assets/{index-YviHYMA2.js → index-CBqSTwY9.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-00kVj4me.js → index-D8fqsTHW.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Wl55a61D.js → index-DCqPIE3G.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-CLSt7mOy.js → index-DNnaEzC5.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-C4xggKQp.js → index-DTppQua6.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CbxqdIzD.js → index-DfFzjnA0.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BwHEGjR7.js → index-DskEFn8M.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-D3J9FKFr.js → index-DvRvwzc-.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BGEXGr9g.js → index-DwBcFhcc.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-B6wxVEIZ.js → index-DwJBbK3Z.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-mHAPEcPi.js → index-DwhJqZqM.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-C1-NqghD.js → index-Dx51Am-0.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-DP9ZLjra.js → index-E5Ar6dNV.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DSFkmRvK.js → index-ETHEhWvI.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DmNspbVU.js → index-KUrBWzIM.js} +1 -1
  125. package/src/assets/web-panel/assets/index-MgEKheCh.js +1 -0
  126. package/src/assets/web-panel/assets/{index-TqLyy6IR.js → index-YnGvCu0P.js} +3 -3
  127. package/src/assets/web-panel/assets/{index-Q3WQ5Zhr.js → index-hRtVittm.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DAnXSg0r.js → index-nXoV4OCZ.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BBvA7Hxj.js → index-qUbrqzvO.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BIO8EVHt.js → index-rIJqtLz-.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-B8ChecWd.js → index-rkkMl4Lb.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-DwG9khVs.js → index-tXjOuLZm.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-V6l3ia83.js → index-zLOzCcxM.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-Bt0zcD5R.js → index-zPpssHXA.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-18rmGkik.js → initDefaultProps-Du5HHTVt.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-3kvGzSgV.js → motion-D9mAVPKP.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Dx3DiVHc.js → move-DPO_sFtt.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-VX1dFJEI.js → mtc-parser-CnezVcXi.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-CniSeCOA.js → omit-DNpYMbet.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-RPggmcOd.js → pickAttrs-BUFm_slL.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-B45YBykr.js → placementArrow-DvwJtnzY.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-D0nciAEn.js → responsiveObserve-CUWOh_KI.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-UxLNWqjI.js → slide-bVHCUsdj.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-CukpV_uI.js → statusUtils-FlOzOrxf.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-BIcEZk6Y.js → styleChecker-C6CFXutA.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-Zah-xvV3.js → useFlexGapSupport-BNGqO_E0.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-BA7ihKFN.js → useFs-DyKOrA27.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-C64CsyY3.js → usePersonalDataHub-DZAqeMAJ.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-Datcekgj.js → vnode-Do7fVasi.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-CaFQv1KF.js → zoom-DYkEmOT2.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +52 -0
  153. package/src/lib/background-agent-supervisor.js +10 -1
  154. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +119 -12
  155. package/src/lib/evolution/evolution-artifact-ports.js +6 -0
  156. package/src/lib/evolution/evolution-deployment-loader.js +139 -0
  157. package/src/lib/evolution/evolution-eval-gate.js +5 -0
  158. package/src/lib/evolution/evolution-ledger-ports.js +41 -17
  159. package/src/lib/evolution/pm-exploration-benchmark.js +253 -0
  160. package/src/lib/evolution/pm-exploration-budget-executor.js +346 -0
  161. package/src/lib/evolution/pm-exploration-business-grader.js +581 -0
  162. package/src/lib/evolution/pm-exploration-evidence-bundle.js +613 -0
  163. package/src/lib/evolution/pm-exploration-execution-host.js +946 -0
  164. package/src/lib/evolution/pm-exploration-ledger-adapter.js +860 -0
  165. package/src/lib/evolution/pm-exploration-provider-settlement-adapter.js +420 -0
  166. package/src/lib/evolution/pm-exploration-receipts.js +626 -0
  167. package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +521 -0
  168. package/src/lib/evolution/pm-exploration-rounds.js +842 -0
  169. package/src/lib/evolution/pm-exploration-transition-committer.js +541 -0
  170. package/src/lib/evolution/pm-exploration-volcengine-provider.js +724 -0
  171. package/src/lib/evolution/pm-result-grader.cjs +287 -0
  172. package/src/lib/read-file-loop-guard.js +36 -5
  173. package/src/lib/secure-fs.js +51 -4
  174. package/src/lib/task-progress-tracker.js +29 -7
  175. package/src/lib/text-file-search.js +1 -0
  176. package/src/runtime/agent-core.js +46 -4
  177. package/src/assets/web-panel/assets/ChatBubbleRenderer-C4tdSms8.js +0 -1
  178. package/src/assets/web-panel/assets/Logs-BtesccPB.js +0 -2
  179. package/src/assets/web-panel/assets/MarkdownRenderer-DoN7oE2J.js +0 -1
  180. package/src/assets/web-panel/assets/devWarning-ONeWC5dH.js +0 -1
  181. package/src/assets/web-panel/assets/index--QLnQuO9.js +0 -1
  182. package/src/assets/web-panel/assets/index-CkgeII0e.js +0 -1
@@ -1 +1 @@
1
- import{u as v}from"./index-TqLyy6IR.js";import{u as _}from"./useShellMode-CgR0wCYM.js";function d(r){if(!r)return r;if(r.error)throw new Error(r.error);return r.result!==void 0?r.result:r}async function p(r,s={},e=!0){try{if(e!==!0||!r||typeof r.sendRaw!="function")return{status:"unavailable",path:null};const a=await r.sendRaw({type:"fs.openDirectory",title:s.title},6e4);if(a&&(a.ok===!1||a.error))return{status:"unavailable",path:null};const t=a&&a.result!==void 0?a.result:a;return t&&(t.ok===!1||t.error||t.unsupported===!0)?{status:"unavailable",path:null}:t&&t.canceled===!0?{status:"cancelled",path:null}:t&&typeof t.path=="string"&&t.path.length>0?{status:"selected",path:t.path}:{status:"unavailable",path:null}}catch{return{status:"unavailable",path:null}}}function b(r,s,e,a,t){return typeof r.onMessage!="function"||typeof r.sendRaw!="function"?r.sendRaw({type:s,...e},t).then(d):new Promise((n,u)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${s}.event`,m=`${s}.end`;let c=!1,h=()=>{};const o=(i,f)=>{if(!c){c=!0,clearTimeout(g);try{h()}catch{}i(f)}},g=setTimeout(()=>{o(u,new Error(`stream timeout (${t}ms): ${s}`))},t),y=r.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof a=="function")try{a(i.event||i)}catch{}return}if(i.type===m){o(n,d(i));return}i.type==="error"&&o(u,new Error(i.message||"stream error"))}});h=typeof y=="function"?y:()=>{},Promise.resolve(r.sendRaw({id:l,type:s,...e},t)).catch(()=>{})})}function k(){const r=v(),s=_(),e=(a,t={},n=3e4)=>r.sendRaw({type:a,...t},n).then(d);return{async health(){return await e("personal-data-hub.health",{},8e3)},async stats(){return await e("personal-data-hub.stats",{},8e3)},async listAdapters(){return await e("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const t=await r.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),n=t&&t.result!==void 0?t.result:t,u=n&&typeof n.path=="string"?n.path:n&&typeof n.filePath=="string"?n.filePath:null;return n&&n.canceled!==!0&&u?u:null}catch{return null}},async pickDirectoryResult(a={}){return await p(r,a,s.isEmbedded)},async pickDirectory(a={}){const t=await p(r,a,s.isEmbedded);return t.status==="selected"?t.path:null},async adapterReadiness(a){return await e("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,t={}){return await e("personal-data-hub.sync-adapter",{name:a,options:t},6e5)},async syncAll(a={}){return await e("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:t=20,seed:n=1}={}){return await e("personal-data-hub.register-mock",{name:a,count:t,seed:n})},async unregister(a){return await e("personal-data-hub.unregister",{name:a})},async ask(a,t={}){return await e("personal-data-hub.ask",{question:a,options:t},18e4)},async queryEvents(a={}){return await e("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await e("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await e("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await e("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await e("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,t={}){return await e("personal-data-hub.register-email",{account:a,opts:t},15e3)},async unregisterEmail(a){return await e("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await e("personal-data-hub.list-email-accounts",{},5e3)},async activateEmail(a){return await e("personal-data-hub.activate-email",{email:a},5e3)},async eventDetail(a){return await e("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,t={},n){return await b(r,"personal-data-hub.sync-adapter-stream",{name:a,options:t},n,6e5)},async syncAllStream(a={},t){return await b(r,"personal-data-hub.sync-all-stream",{options:a},t,9e5)},async registerAlipay(a,t={}){return await e("personal-data-hub.register-alipay",{account:a,opts:t},15e3)},async unregisterAlipay(a){return await e("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await e("personal-data-hub.list-alipay-accounts",{},5e3)},async activateAlipay(a){return await e("personal-data-hub.activate-alipay",{email:a},5e3)},async importAlipayBill({zipPath:a,csvPath:t,zipPassword:n}={}){return await e("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:t,zipPassword:n},3e5)},async reviewQueueList(a=50){return await e("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,t){return await e("personal-data-hub.review-decision",{reviewId:a,decision:t},5e3)},async manualMerge(a,t){return await e("personal-data-hub.manual-merge",{aId:a,bId:t},5e3)},async manualUnmerge(a){return await e("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await e("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await e("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await e("personal-data-hub.skills-list",{},5e3)},async runSkill(a,t={}){return await e("personal-data-hub.run-skill",{name:a,options:t},12e4)},async openAichatLogin(a,t={}){return await e("personal-data-hub.aichat-open-login",{vendor:a,opts:t},1e4)},async probeAichatCookies(a,t){return await e("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:t},1e4)},async registerAichatVendor(a,t,n={}){return await e("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:t,opts:n},3e4)},async rotateAichatLogin(a){return await e("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await e("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await e("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await e("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await e("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l}={}){return await e("personal-data-hub.register-wechat",{account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l},45e3)},async listWechatAccounts(){return await e("personal-data-hub.list-wechat-accounts",{},5e3)},async activateWechat(a,t={}){return await e("personal-data-hub.activate-wechat",{uin:a,fridaOpts:t.fridaOpts,keyProviderOverride:t.keyProviderOverride},45e3)},async unregisterWechat(a){return await e("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await e("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await e("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await e("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await e("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await e("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await e("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await e("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await e("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{k as u};
1
+ import{u as v}from"./index-YnGvCu0P.js";import{u as _}from"./useShellMode-CgR0wCYM.js";function d(r){if(!r)return r;if(r.error)throw new Error(r.error);return r.result!==void 0?r.result:r}async function p(r,s={},e=!0){try{if(e!==!0||!r||typeof r.sendRaw!="function")return{status:"unavailable",path:null};const a=await r.sendRaw({type:"fs.openDirectory",title:s.title},6e4);if(a&&(a.ok===!1||a.error))return{status:"unavailable",path:null};const t=a&&a.result!==void 0?a.result:a;return t&&(t.ok===!1||t.error||t.unsupported===!0)?{status:"unavailable",path:null}:t&&t.canceled===!0?{status:"cancelled",path:null}:t&&typeof t.path=="string"&&t.path.length>0?{status:"selected",path:t.path}:{status:"unavailable",path:null}}catch{return{status:"unavailable",path:null}}}function b(r,s,e,a,t){return typeof r.onMessage!="function"||typeof r.sendRaw!="function"?r.sendRaw({type:s,...e},t).then(d):new Promise((n,u)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${s}.event`,m=`${s}.end`;let c=!1,h=()=>{};const o=(i,f)=>{if(!c){c=!0,clearTimeout(g);try{h()}catch{}i(f)}},g=setTimeout(()=>{o(u,new Error(`stream timeout (${t}ms): ${s}`))},t),y=r.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof a=="function")try{a(i.event||i)}catch{}return}if(i.type===m){o(n,d(i));return}i.type==="error"&&o(u,new Error(i.message||"stream error"))}});h=typeof y=="function"?y:()=>{},Promise.resolve(r.sendRaw({id:l,type:s,...e},t)).catch(()=>{})})}function k(){const r=v(),s=_(),e=(a,t={},n=3e4)=>r.sendRaw({type:a,...t},n).then(d);return{async health(){return await e("personal-data-hub.health",{},8e3)},async stats(){return await e("personal-data-hub.stats",{},8e3)},async listAdapters(){return await e("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const t=await r.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),n=t&&t.result!==void 0?t.result:t,u=n&&typeof n.path=="string"?n.path:n&&typeof n.filePath=="string"?n.filePath:null;return n&&n.canceled!==!0&&u?u:null}catch{return null}},async pickDirectoryResult(a={}){return await p(r,a,s.isEmbedded)},async pickDirectory(a={}){const t=await p(r,a,s.isEmbedded);return t.status==="selected"?t.path:null},async adapterReadiness(a){return await e("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,t={}){return await e("personal-data-hub.sync-adapter",{name:a,options:t},6e5)},async syncAll(a={}){return await e("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:t=20,seed:n=1}={}){return await e("personal-data-hub.register-mock",{name:a,count:t,seed:n})},async unregister(a){return await e("personal-data-hub.unregister",{name:a})},async ask(a,t={}){return await e("personal-data-hub.ask",{question:a,options:t},18e4)},async queryEvents(a={}){return await e("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await e("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await e("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await e("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await e("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,t={}){return await e("personal-data-hub.register-email",{account:a,opts:t},15e3)},async unregisterEmail(a){return await e("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await e("personal-data-hub.list-email-accounts",{},5e3)},async activateEmail(a){return await e("personal-data-hub.activate-email",{email:a},5e3)},async eventDetail(a){return await e("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,t={},n){return await b(r,"personal-data-hub.sync-adapter-stream",{name:a,options:t},n,6e5)},async syncAllStream(a={},t){return await b(r,"personal-data-hub.sync-all-stream",{options:a},t,9e5)},async registerAlipay(a,t={}){return await e("personal-data-hub.register-alipay",{account:a,opts:t},15e3)},async unregisterAlipay(a){return await e("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await e("personal-data-hub.list-alipay-accounts",{},5e3)},async activateAlipay(a){return await e("personal-data-hub.activate-alipay",{email:a},5e3)},async importAlipayBill({zipPath:a,csvPath:t,zipPassword:n}={}){return await e("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:t,zipPassword:n},3e5)},async reviewQueueList(a=50){return await e("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,t){return await e("personal-data-hub.review-decision",{reviewId:a,decision:t},5e3)},async manualMerge(a,t){return await e("personal-data-hub.manual-merge",{aId:a,bId:t},5e3)},async manualUnmerge(a){return await e("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await e("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await e("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await e("personal-data-hub.skills-list",{},5e3)},async runSkill(a,t={}){return await e("personal-data-hub.run-skill",{name:a,options:t},12e4)},async openAichatLogin(a,t={}){return await e("personal-data-hub.aichat-open-login",{vendor:a,opts:t},1e4)},async probeAichatCookies(a,t){return await e("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:t},1e4)},async registerAichatVendor(a,t,n={}){return await e("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:t,opts:n},3e4)},async rotateAichatLogin(a){return await e("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await e("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await e("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await e("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await e("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l}={}){return await e("personal-data-hub.register-wechat",{account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l},45e3)},async listWechatAccounts(){return await e("personal-data-hub.list-wechat-accounts",{},5e3)},async activateWechat(a,t={}){return await e("personal-data-hub.activate-wechat",{uin:a,fridaOpts:t.fridaOpts,keyProviderOverride:t.keyProviderOverride},45e3)},async unregisterWechat(a){return await e("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await e("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await e("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await e("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await e("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await e("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await e("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await e("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await e("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{k as u};
@@ -1 +1 @@
1
- import{N as i,h as a,w as l}from"./index-TqLyy6IR.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
1
+ import{N as i,h as a,w as l}from"./index-YnGvCu0P.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-TqLyy6IR.js";import{i as f}from"./motion-3kvGzSgV.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
1
+ import{K as o}from"./index-YnGvCu0P.js";import{i as f}from"./motion-D9mAVPKP.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
2
2
  ${t}-enter,
3
3
  ${t}-appear
4
4
  `]:{transform:"scale(0)",opacity:0,animationTimingFunction:n.motionEaseOutCirc,"&-prepare":{transform:"none"}},[`${t}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{h as i,c as z};
@@ -8,7 +8,7 @@
8
8
  // Injected by web-ui-server.js at serve time
9
9
  window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
10
10
  </script>
11
- <script type="module" crossorigin src="./assets/index-TqLyy6IR.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-YnGvCu0P.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-Bn1JzzAn.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-DG5UD-6K.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -1,6 +1,58 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.166.63",
7
+ "cliVersions": ["0.166.63"],
8
+ "date": null,
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Added - cc CLI 0.166.63: RSIAgent governed evolution batches 9-23",
13
+ "body": "- Add the ninth through twenty-third RSIAgent evolution batches: budget\n executor, signed receipts, and execution host; Volcengine provider adapter\n with usage settlement and live probe; signed provider settlement and desktop\n deployment smoke test; standalone PM business grading with signed task\n binding; desktop read-only outcome reader with DB identity hardening and\n deployment wiring.\n- Seal failed states and gate tainted execution hosts, commit durable state\n transitions, recover an authenticated chain head on restart, and retain\n SQLite recovery snapshots bound to their migration for governed\n post-restart trust.\n- Align the VS Code and JetBrains plugin releases with the CLI and sync the\n platform release sites."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.62",
20
+ "cliVersions": ["0.166.62"],
21
+ "date": null,
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Fixed - cc CLI 0.166.62: prevent scheduler soak lease-expiry races",
26
+ "body": "- Keep the scheduler integration smoke lease above SQLite's complete busy-wait\n window, preventing a valid Windows store stall from expiring a lease after an\n effect becomes durable but before its settlement can be committed.\n- Retain the real two-worker fencing, renewal, forced-kill, dead-letter, and\n no-replay assertions; the test now fails explicitly if its lease is not\n greater than the configured SQLite busy timeout."
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "productVersion": null,
32
+ "cliVersion": "0.166.61",
33
+ "cliVersions": ["0.166.61"],
34
+ "date": null,
35
+ "title": "",
36
+ "sections": [
37
+ {
38
+ "heading": "Fixed - cc CLI 0.166.61: verify safely reused npm child packages",
39
+ "body": "- Keep newly published npm child packages bound to this release's exact\n immutable tag and commit, while allowing an unchanged, already-published\n child package to reuse only its npm-verified signed release provenance.\n- Bind a reused package's signed tag to its signed commit, then require the\n package Git tree at that commit to match the current release exactly; a\n changed package without a version bump fails closed before CLI publication.\n- Classify a deterministic old-provenance mismatch in one attempt instead of\n retrying it thirty times; only newly uploaded package provenance retains its\n bounded registry-propagation retry window."
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "productVersion": null,
45
+ "cliVersion": "0.166.60",
46
+ "cliVersions": ["0.166.60"],
47
+ "date": null,
48
+ "title": "",
49
+ "sections": [
50
+ {
51
+ "heading": "Added - cc CLI 0.166.60 + IDE plugins 0.37.106/0.4.127: governed PM exploration recovery evidence",
52
+ "body": "- Add bounded Broad/Deep PM exploration plans, checkpoint journals, independent\n result grading, suite partition preflight, and authenticated Evolution Ledger\n recovery snapshots without granting promotion authority to exploration output.\n- Require Ledger-retained PM artifacts to resolve through their durability\n authority instead of treating a local cache as authoritative when the remote\n authority is unavailable.\n- Exercise restart, replica loss, commit-phase process exits, CAS races, and\n seven synthetic storage/authority failure profiles across 31 child processes\n with zero false-success receipts.\n- Bind the test-only recovery report to the exact source SHA in the existing\n Linux, Windows, and macOS `CLI CI` matrix, then require a complete three-OS\n aggregate before the workflow can pass.\n- Expose a read-only Desktop readiness projection while keeping execution,\n production authority, real disk/network faults, physical power-loss\n durability, and promotion qualification explicitly disabled.\n- Pair the VS Code/Open VSX and JetBrains plugins with the verified CLI release\n while preserving CLI-owned execution, grading, recovery, and promotion\n authority; marketplace tags remain blocked until npm registry readback.\n- Stop IDE repair sessions from restarting the same file, Git, CI-log, or search\n investigation after compaction: retain bounded source excerpts and Git\n outcomes, keep read-only Git inspection inside the exploration budget, and\n distinguish incomplete/filename-only searches from a real content miss.\n- Harden the Windows CI integrity gate from issue #351 by launching the exact\n `actions/setup-python` interpreter instead of a PATH/Store alias, retaining a\n fail-closed hosted-runner deadline, and naming the failed verdict fixture and\n executable in diagnostics."
53
+ }
54
+ ]
55
+ },
4
56
  {
5
57
  "productVersion": null,
6
58
  "cliVersion": "0.166.59",
@@ -81,6 +81,15 @@ export const MAX_BACKGROUND_AGENT_PAGE_LIMIT = 200;
81
81
  */
82
82
  export const PID_IDENTITY_TOLERANCE_MS = 60000;
83
83
 
84
+ // Lock acquisition and OS process-creation timestamps are read through
85
+ // different Windows APIs. Keep a narrow allowance for their clock/precision
86
+ // boundary so a live lock owner is never reclaimed because its creation time
87
+ // appears a few milliseconds after the JavaScript acquisition timestamp.
88
+ // This is intentionally much smaller than the worker identity tolerance: a
89
+ // process created materially later must still prove PID reuse and unblock a
90
+ // lock left behind by a crashed high-churn worker.
91
+ const STATE_LOCK_OWNER_IDENTITY_TOLERANCE_MS = 1000;
92
+
84
93
  export const PROCESS_START_TIME_CACHE_TTL_MS = 10_000;
85
94
  export const PROCESS_START_TIME_CACHE_MAX_ENTRIES = 4_096;
86
95
 
@@ -1321,7 +1330,7 @@ function isBackgroundAgentStateLockOwnerAlive(owner) {
1321
1330
  // owner.startedAt is written only after this process acquired the lock. A
1322
1331
  // live process created later therefore proves PID reuse; retaining that
1323
1332
  // stale lock would permanently fence the state after high-churn workers.
1324
- return actualStartedAt <= acquiredAt;
1333
+ return actualStartedAt <= acquiredAt + STATE_LOCK_OWNER_IDENTITY_TOLERANCE_MS;
1325
1334
  }
1326
1335
 
1327
1336
  /**
@@ -21,6 +21,7 @@ const DIGEST = /^sha256:[a-f0-9]{64}$/u;
21
21
  const PATTERN_ID = /^pat-[a-z0-9][a-z0-9-]{2,127}$/u;
22
22
  const MAINTENANCE_REQUEST_ID = /^wiki-maintenance:[a-f0-9]{64}$/u;
23
23
  const REVISION_ID = /^wiki:[a-f0-9]{64}$/u;
24
+ const SKILL_DECISION_REF_PREFIX = "wiki-evidence://skill-decision/";
24
25
  const KINDS = new Set(["success", "failure", "constraint", "anti-pattern"]);
25
26
  const EVIDENCE_KINDS = new Set([
26
27
  "user-statement",
@@ -128,10 +129,21 @@ function assertMetadataOnly(value, path = "data") {
128
129
  }
129
130
 
130
131
  function assertWikiPlaintextSafe(value) {
131
- const isDecisionDigestRef = (candidate) =>
132
+ const isLegacyDecisionDigestRef = (candidate) =>
132
133
  typeof candidate === "string" &&
133
134
  candidate.startsWith("decision:") &&
134
135
  DIGEST.test(candidate.slice("decision:".length));
136
+ const isSkillDecisionRef = (candidate, sourceDigest) =>
137
+ typeof candidate === "string" &&
138
+ DIGEST.test(sourceDigest ?? "") &&
139
+ candidate ===
140
+ `${SKILL_DECISION_REF_PREFIX}${sourceDigest.slice("sha256:".length)}`;
141
+ const isProposalDecisionRef = (candidate, record) =>
142
+ record?.schema === WIKI_EVIDENCE_SCHEMA &&
143
+ record?.kind === "proposal-decision" &&
144
+ record.ref === candidate &&
145
+ (isLegacyDecisionDigestRef(candidate) ||
146
+ isSkillDecisionRef(candidate, record.sourceDigest));
135
147
  const isBoundMaintenanceRequestMapKey = (path, key, child) =>
136
148
  path.length === 1 &&
137
149
  path[0] === "maintenanceRequests" &&
@@ -144,32 +156,121 @@ function assertWikiPlaintextSafe(value) {
144
156
  const isBoundProposalDecisionEvidence = (path, key, child) =>
145
157
  path.length === 1 &&
146
158
  path[0] === "evidence" &&
147
- isDecisionDigestRef(key) &&
148
159
  child &&
149
160
  typeof child === "object" &&
150
161
  !Array.isArray(child) &&
151
- child.kind === "proposal-decision" &&
152
- child.ref === key;
162
+ isProposalDecisionRef(key, child);
153
163
  const isProposalDecisionEvidenceRecord = (path, item) =>
154
164
  path.length === 2 &&
155
165
  path[0] === "evidence" &&
156
- isDecisionDigestRef(path[1]) &&
157
- item?.kind === "proposal-decision" &&
158
- item.ref === path[1];
166
+ isProposalDecisionRef(path[1], item);
167
+ const proposalDecisionRecord = (ref) => {
168
+ const record = value?.evidence?.[ref];
169
+ return isProposalDecisionRef(ref, record) ? record : null;
170
+ };
171
+ const proposalDecisionData = (path, item) => {
172
+ if (path.length !== 3 || path[0] !== "evidence" || path[2] !== "data") {
173
+ return null;
174
+ }
175
+ const record = proposalDecisionRecord(path[1]);
176
+ return record?.data === item ? record : null;
177
+ };
159
178
  const isBoundProposalDecisionArtifactRef = (path, item, key, child) =>
160
179
  key === "artifactRef" &&
161
180
  isProposalDecisionEvidenceRecord(path, item) &&
162
- DIGEST.test(item.data?.releaseDigest ?? "") &&
163
- child ===
164
- `artifact://${item.tenantId}/trusted/${item.data.releaseDigest.slice("sha256:".length)}`;
181
+ ((DIGEST.test(item.data?.releaseDigest ?? "") &&
182
+ child ===
183
+ `artifact://${item.tenantId}/trusted/${item.data.releaseDigest.slice("sha256:".length)}`) ||
184
+ (DIGEST.test(item.data?.activeReleaseDigest ?? "") &&
185
+ child ===
186
+ `skill-release://${item.tenantId}/${item.data.activeReleaseDigest.slice("sha256:".length)}`) ||
187
+ (DIGEST.test(item.sourceDigest ?? "") &&
188
+ child ===
189
+ `skill-review://${item.tenantId}/${item.sourceDigest.slice("sha256:".length)}`) ||
190
+ (typeof item.data?.pilotId === "string" &&
191
+ child.startsWith(
192
+ `skill-pilot://${item.tenantId}/${item.data.pilotId}/`,
193
+ ) &&
194
+ /^\d+$/u.test(child.slice(child.lastIndexOf("/") + 1))) ||
195
+ (typeof item.data?.revocationId === "string" &&
196
+ child.startsWith(
197
+ `skill-revocation://${item.tenantId}/${item.data.revocationId}/`,
198
+ ) &&
199
+ /^\d+$/u.test(child.slice(child.lastIndexOf("/") + 1))));
165
200
  const isBoundProposalDecisionReceiptRef = (path, item, key, child) =>
166
201
  path.length === 4 &&
167
202
  path[0] === "skillImpact" &&
168
203
  path[2] === "decisions" &&
169
204
  path[3] === "[]" &&
170
205
  key === "receiptRef" &&
171
- DIGEST.test(item.candidateId ?? "") &&
172
- child === `decision:${item.candidateId}`;
206
+ (() => {
207
+ const record = proposalDecisionRecord(child);
208
+ const decision = record?.data?.decision;
209
+ return (
210
+ record !== null &&
211
+ ((isLegacyDecisionDigestRef(child) &&
212
+ child === `decision:${item.candidateId}`) ||
213
+ (decision?.candidateId === item.candidateId &&
214
+ decision.skillName === item.skillName &&
215
+ decision.outcome === item.outcome))
216
+ );
217
+ })();
218
+ const isBoundMaintenanceEvidenceRef = (path, item) => {
219
+ if (
220
+ path.length !== 4 ||
221
+ path[0] !== "maintenanceRequests" ||
222
+ path[2] !== "evidenceRefs" ||
223
+ path[3] !== "[]"
224
+ ) {
225
+ return false;
226
+ }
227
+ const request = value?.maintenanceRequests?.[path[1]];
228
+ return (
229
+ isBoundMaintenanceRequestMapKey(
230
+ ["maintenanceRequests"],
231
+ path[1],
232
+ request,
233
+ ) &&
234
+ request.evidenceRefs?.includes(item) &&
235
+ proposalDecisionRecord(item) !== null
236
+ );
237
+ };
238
+ const isBoundEvidenceReceiptDigest = (path, item) => {
239
+ if (
240
+ path.length !== 5 ||
241
+ path[0] !== "evidence" ||
242
+ path[2] !== "data" ||
243
+ path[3] !== "evidenceReceiptDigests" ||
244
+ path[4] !== "[]" ||
245
+ !DIGEST.test(item ?? "")
246
+ ) {
247
+ return false;
248
+ }
249
+ const record = proposalDecisionRecord(path[1]);
250
+ return record?.data?.evidenceReceiptDigests?.includes(item) === true;
251
+ };
252
+ const isBoundProposalDecisionDataValue = (path, item, key, child) => {
253
+ const record = proposalDecisionData(path, item);
254
+ if (!record) return false;
255
+ if (key === "wikiRevision") return REVISION_ID.test(child ?? "");
256
+ if (key === "pilotId" && typeof child === "string") {
257
+ const prefix = `skill-pilot://${record.tenantId}/${child}/`;
258
+ return (
259
+ typeof record.artifactRef === "string" &&
260
+ record.artifactRef.startsWith(prefix) &&
261
+ /^\d+$/u.test(record.artifactRef.slice(prefix.length))
262
+ );
263
+ }
264
+ if (key === "revocationId" && typeof child === "string") {
265
+ const prefix = `skill-revocation://${record.tenantId}/${child}/`;
266
+ return (
267
+ typeof record.artifactRef === "string" &&
268
+ record.artifactRef.startsWith(prefix) &&
269
+ /^\d+$/u.test(record.artifactRef.slice(prefix.length))
270
+ );
271
+ }
272
+ return false;
273
+ };
173
274
  const isProposalImpactCandidateSubject = (path, item, key, child) =>
174
275
  path.length === 2 &&
175
276
  path[0] === "evolutionLog" &&
@@ -181,6 +282,7 @@ function assertWikiPlaintextSafe(value) {
181
282
  (key.endsWith("Digest") && DIGEST.test(child ?? "")) ||
182
283
  (key === "candidateId" && DIGEST.test(child ?? "")) ||
183
284
  isProposalImpactCandidateSubject(path, item, key, child) ||
285
+ isBoundProposalDecisionDataValue(path, item, key, child) ||
184
286
  isBoundProposalDecisionReceiptRef(path, item, key, child) ||
185
287
  isBoundProposalDecisionArtifactRef(path, item, key, child) ||
186
288
  (isProposalDecisionEvidenceRecord(path, item) &&
@@ -190,6 +292,11 @@ function assertWikiPlaintextSafe(value) {
190
292
  (key === "requestId" && MAINTENANCE_REQUEST_ID.test(child ?? ""));
191
293
  const inspect = (item, path = []) => {
192
294
  if (typeof item === "string") {
295
+ if (
296
+ isBoundMaintenanceEvidenceRef(path, item) ||
297
+ isBoundEvidenceReceiptDigest(path, item)
298
+ )
299
+ return;
193
300
  assertEvolutionContentContainsNoKnownSecrets(item);
194
301
  } else if (Array.isArray(item)) {
195
302
  item.forEach((child) => inspect(child, [...path, "[]"]));
@@ -81,6 +81,8 @@ export const EVOLUTION_ARTIFACT_LEDGER_RETENTION_TYPES = Object.freeze([
81
81
  "skill-runtime-revalidation-state",
82
82
  "evolution-ledger-v2-journal",
83
83
  "evolution-run-event",
84
+ "pm-exploration-recovery-snapshot",
85
+ "pm-exploration-provider-settlement",
84
86
  "evolution-eval-child-evidence",
85
87
  "evolution-raw-deletion-receipt",
86
88
  "evolution-raw-deletion-tombstone",
@@ -137,6 +139,8 @@ export const EVOLUTION_ARTIFACT_TYPES = Object.freeze([
137
139
  "evaluation",
138
140
  "evaluation-result",
139
141
  "evolution-run-event",
142
+ "pm-exploration-recovery-snapshot",
143
+ "pm-exploration-provider-settlement",
140
144
  "evolution-eval-child-evidence",
141
145
  "evolution-raw-deletion-receipt",
142
146
  "evolution-raw-deletion-tombstone",
@@ -390,6 +394,8 @@ const LEDGER_RETENTION_PURPOSES_BY_TYPE = new Map([
390
394
  ["wiki-pruning-journal", new Set(["evolution-ledger"])],
391
395
  ["wiki-pruning-retrieval-projection", new Set(["evolution-ledger"])],
392
396
  ["evolution-run-event", new Set(["evolution-ledger"])],
397
+ ["pm-exploration-recovery-snapshot", new Set(["evolution-ledger"])],
398
+ ["pm-exploration-provider-settlement", new Set(["evolution-ledger"])],
393
399
  ["evolution-eval-child-evidence", new Set(["evolution-ledger"])],
394
400
  ["evolution-raw-deletion-receipt", new Set(["evolution-ledger"])],
395
401
  ["evolution-raw-deletion-tombstone", new Set(["evolution-ledger"])],
@@ -252,6 +252,113 @@ async function loadBuiltInFactories(commandName) {
252
252
  buildSkillDependencyLock: manifest.buildSkillDependencyLock,
253
253
  });
254
254
  }
255
+ if (commandName === "desktop") {
256
+ const [
257
+ adapter,
258
+ rounds,
259
+ receipts,
260
+ execution,
261
+ transitionCommitter,
262
+ recoverySnapshotStore,
263
+ evidence,
264
+ provider,
265
+ settlementAdapter,
266
+ businessGrader,
267
+ ledgerPorts,
268
+ artifactPorts,
269
+ ledgerBackend,
270
+ store,
271
+ ] = await Promise.all([
272
+ import("./pm-exploration-ledger-adapter.js"),
273
+ import("./pm-exploration-rounds.js"),
274
+ import("./pm-exploration-receipts.js"),
275
+ import("./pm-exploration-execution-host.js"),
276
+ import("./pm-exploration-transition-committer.js"),
277
+ import("./pm-exploration-recovery-snapshot-store.js"),
278
+ import("./pm-exploration-evidence-bundle.js"),
279
+ import("./pm-exploration-volcengine-provider.js"),
280
+ import("./pm-exploration-provider-settlement-adapter.js"),
281
+ import("./pm-exploration-business-grader.js"),
282
+ import("./evolution-ledger-ports.js"),
283
+ import("./evolution-artifact-ports.js"),
284
+ import("./evolution-ledger-file-backend.js"),
285
+ import("../artifact-store.js"),
286
+ ]);
287
+ Object.assign(factories, {
288
+ createPmExplorationLedgerAdapter: (options) =>
289
+ new adapter.PmExplorationLedgerAdapter(options),
290
+ createPmExplorationPlan: rounds.createPmExplorationPlan,
291
+ createPmExplorationJournal: rounds.createPmExplorationJournal,
292
+ enterPmExplorationDeepStage: rounds.enterPmExplorationDeepStage,
293
+ exportPmExplorationRecoverySnapshot:
294
+ rounds.exportPmExplorationRecoverySnapshot,
295
+ inspectPmExplorationJournal: rounds.inspectPmExplorationJournal,
296
+ createPmExplorationReceiptAuthority:
297
+ receipts.createPmExplorationReceiptAuthority,
298
+ createPmExplorationReceiptSigner:
299
+ receipts.createPmExplorationReceiptSigner,
300
+ getPmExplorationReceiptSignerAuthority:
301
+ receipts.getPmExplorationReceiptSignerAuthority,
302
+ inspectPmExplorationReceiptAuthority:
303
+ receipts.inspectPmExplorationReceiptAuthority,
304
+ createPmExplorationExecutionManifest:
305
+ execution.createPmExplorationExecutionManifest,
306
+ createPmExplorationRunner: execution.createPmExplorationRunner,
307
+ createPmExplorationGrader: execution.createPmExplorationGrader,
308
+ createPmExplorationMerger: execution.createPmExplorationMerger,
309
+ createPmExplorationEvaluator: execution.createPmExplorationEvaluator,
310
+ createPmExplorationExecutionHost:
311
+ execution.createPmExplorationExecutionHost,
312
+ isPmExplorationExecutionHost: execution.isPmExplorationExecutionHost,
313
+ inspectPmExplorationExecutionHost:
314
+ execution.inspectPmExplorationExecutionHost,
315
+ createPmExplorationTransitionCommitter:
316
+ transitionCommitter.createPmExplorationTransitionCommitter,
317
+ capturePmExplorationTransitionCommitter:
318
+ transitionCommitter.capturePmExplorationTransitionCommitter,
319
+ verifyPmExplorationTransitionEvidence:
320
+ transitionCommitter.verifyPmExplorationTransitionEvidence,
321
+ createPmExplorationRecoverySnapshotStore:
322
+ recoverySnapshotStore.createPmExplorationRecoverySnapshotStore,
323
+ capturePmExplorationRecoverySnapshotStore:
324
+ recoverySnapshotStore.capturePmExplorationRecoverySnapshotStore,
325
+ verifyPmExplorationRecoverySnapshotAck:
326
+ recoverySnapshotStore.verifyPmExplorationRecoverySnapshotAck,
327
+ executePmExplorationRound: execution.executePmExplorationRound,
328
+ mergePmExplorationBranches: execution.mergePmExplorationBranches,
329
+ evaluatePmExplorationMemory: execution.evaluatePmExplorationMemory,
330
+ createPmExplorationEvidenceBundle:
331
+ evidence.createPmExplorationEvidenceBundle,
332
+ verifyPmExplorationEvidenceBundle:
333
+ evidence.verifyPmExplorationEvidenceBundle,
334
+ createPmExplorationVolcengineProvider:
335
+ provider.createPmExplorationVolcengineProvider,
336
+ inspectPmExplorationVolcengineProvider:
337
+ provider.inspectPmExplorationVolcengineProvider,
338
+ invokePmExplorationVolcengine: provider.invokePmExplorationVolcengine,
339
+ verifyPmExplorationVolcengineSettlement:
340
+ provider.verifyPmExplorationVolcengineSettlement,
341
+ verifyPmExplorationVolcengineSettlementRecord:
342
+ provider.verifyPmExplorationVolcengineSettlementRecord,
343
+ createPmExplorationProviderSettlementAdapter: (options) =>
344
+ new settlementAdapter.PmExplorationProviderSettlementAdapter(options),
345
+ capturePmExplorationProviderSettlementStore:
346
+ settlementAdapter.capturePmExplorationProviderSettlementStore,
347
+ createPmExplorationReadOnlyOutcomeSource:
348
+ businessGrader.createPmExplorationReadOnlyOutcomeSource,
349
+ inspectPmExplorationReadOnlyOutcomeSource:
350
+ businessGrader.inspectPmExplorationReadOnlyOutcomeSource,
351
+ createPmExplorationBusinessGrader:
352
+ businessGrader.createPmExplorationBusinessGrader,
353
+ createEvolutionLedgerDurableArtifactResolver:
354
+ ledgerPorts.createEvolutionLedgerDurableArtifactResolver,
355
+ createEvolutionArtifactPorts: (options) =>
356
+ new artifactPorts.EvolutionArtifactPorts(options),
357
+ createEvolutionLedgerFileBackend:
358
+ ledgerBackend.createEvolutionLedgerFileBackend,
359
+ createArtifactStore: (options) => new store.ArtifactStore(options),
360
+ });
361
+ }
255
362
  if (commandName === "learning") {
256
363
  const [
257
364
  { createGovernedSkillSynthesisCliHost },
@@ -545,6 +652,38 @@ function bindFactoriesToModule(factories, moduleDigest) {
545
652
  return factories[name](options);
546
653
  };
547
654
  }
655
+ for (const name of [
656
+ "createPmExplorationReceiptAuthority",
657
+ "createPmExplorationReceiptSigner",
658
+ "createPmExplorationProviderSettlementAdapter",
659
+ "createPmExplorationReadOnlyOutcomeSource",
660
+ ]) {
661
+ if (typeof factories[name] !== "function") continue;
662
+ result[name] = (options = {}) => {
663
+ const handlerArtifactDigest =
664
+ name === "createPmExplorationProviderSettlementAdapter"
665
+ ? options?.descriptor?.handlerArtifactDigest
666
+ : name === "createPmExplorationReadOnlyOutcomeSource"
667
+ ? options?.descriptor?.handlerArtifactDigest
668
+ : options?.handlerArtifactDigest;
669
+ if (handlerArtifactDigest !== moduleDigest)
670
+ throw new Error(
671
+ `${name} handlerArtifactDigest must equal the authenticated deployment module digest`,
672
+ );
673
+ return factories[name](options);
674
+ };
675
+ }
676
+ if (typeof factories.createPmExplorationExecutionManifest === "function") {
677
+ result.createPmExplorationExecutionManifest = (input = {}) => {
678
+ for (const authority of ["runner", "grader", "merger", "evaluator"]) {
679
+ if (input?.[authority]?.handlerArtifactDigest !== moduleDigest)
680
+ throw new Error(
681
+ `PM exploration ${authority} handlerArtifactDigest must equal the authenticated deployment module digest`,
682
+ );
683
+ }
684
+ return factories.createPmExplorationExecutionManifest(input);
685
+ };
686
+ }
548
687
  if (
549
688
  typeof factories.createWikiSkillBenchmarkExecutionManifest === "function"
550
689
  ) {
@@ -1130,6 +1130,11 @@ function computeTrainingPartitionDigest(suite) {
1130
1130
  );
1131
1131
  }
1132
1132
 
1133
+ /** Canonical binding for trusted dataset tooling; not an authority receipt. */
1134
+ export function computeEvolutionEvalTrainingPartitionDigest(suite) {
1135
+ return computeTrainingPartitionDigest(verifyEvolutionEvalSuite(suite));
1136
+ }
1137
+
1133
1138
  function deepFreeze(value, seen = new WeakSet()) {
1134
1139
  if (!value || typeof value !== "object" || seen.has(value)) return value;
1135
1140
  seen.add(value);
@@ -57,6 +57,7 @@ import {
57
57
  export const EVOLUTION_LEDGER_PORTS_INVALID_CODE =
58
58
  "CC_EVOLUTION_LEDGER_PORTS_INVALID";
59
59
  const RELEASE_OPERATION_READERS = new WeakMap();
60
+ const DURABLE_ARTIFACT_RESOLVER_BINDINGS = new WeakMap();
60
61
 
61
62
  // This read-only recovery surface is minted only alongside real Ledger ports.
62
63
  // Matching JSON, inherited methods or a caller-supplied query function cannot
@@ -216,7 +217,6 @@ const LEDGER_ARTIFACT_REQUEST_KEYS = new Set([
216
217
  "ref",
217
218
  "tenantId",
218
219
  ]);
219
- const DURABLE_ARTIFACT_TYPE_SET = new Set(Object.values(ARTIFACT_TYPES));
220
220
  const QUERY_RESULT_KEYS = new Set([
221
221
  "anchor",
222
222
  "authenticated",
@@ -3859,24 +3859,24 @@ export function createEvolutionLedgerDurableArtifactResolver(options = {}) {
3859
3859
  DURABLE_RESOLVER_OPTION_KEYS,
3860
3860
  "durable ledger artifact resolver options",
3861
3861
  );
3862
+ const artifactPortsInput = ownData(
3863
+ options,
3864
+ "artifactPorts",
3865
+ "durable ledger artifact resolver options",
3866
+ EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3867
+ );
3862
3868
  const artifactPorts = requireStableInstance(
3863
- ownData(
3864
- options,
3865
- "artifactPorts",
3866
- "durable ledger artifact resolver options",
3867
- EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3868
- ),
3869
+ artifactPortsInput,
3869
3870
  EvolutionArtifactPorts.prototype,
3870
3871
  "EvolutionArtifactPorts",
3871
3872
  );
3872
- const authority = captureDurabilityAuthority(
3873
- ownData(
3874
- options,
3875
- "artifactDurabilityAuthority",
3876
- "durable ledger artifact resolver options",
3877
- EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3878
- ),
3873
+ const durabilityAuthorityInput = ownData(
3874
+ options,
3875
+ "artifactDurabilityAuthority",
3876
+ "durable ledger artifact resolver options",
3877
+ EVOLUTION_LEDGER_PORTS_INVALID_CODE,
3879
3878
  );
3879
+ const authority = captureDurabilityAuthority(durabilityAuthorityInput);
3880
3880
  const artifactTenantId = identifier(
3881
3881
  ownData(
3882
3882
  options,
@@ -4005,8 +4005,7 @@ export function createEvolutionLedgerDurableArtifactResolver(options = {}) {
4005
4005
  record.schema === EVOLUTION_DURABLE_ARTIFACT_RECORD_SCHEMA &&
4006
4006
  record.tenantId === artifactTenantId &&
4007
4007
  record.purpose === purpose &&
4008
- record.retention === "ledger" &&
4009
- DURABLE_ARTIFACT_TYPE_SET.has(record.type);
4008
+ record.retention === "ledger";
4010
4009
  if (
4011
4010
  canonicalJson(record) !== json ||
4012
4011
  (durable !== null && durable.result.type !== record.type) ||
@@ -4044,7 +4043,32 @@ export function createEvolutionLedgerDurableArtifactResolver(options = {}) {
4044
4043
  schema: EVOLUTION_ARTIFACT_RESOLUTION_SCHEMA,
4045
4044
  });
4046
4045
  };
4047
- return Object.freeze(resolve);
4046
+ const resolver = Object.freeze(resolve);
4047
+ DURABLE_ARTIFACT_RESOLVER_BINDINGS.set(
4048
+ resolver,
4049
+ Object.freeze({
4050
+ artifactTenantId,
4051
+ authorityId: authority.id,
4052
+ purpose,
4053
+ matchesArtifactPorts: Object.freeze(
4054
+ (value) => value === artifactPortsInput,
4055
+ ),
4056
+ matchesDurabilityAuthority: Object.freeze(
4057
+ (value) => value === durabilityAuthorityInput,
4058
+ ),
4059
+ }),
4060
+ );
4061
+ return resolver;
4062
+ }
4063
+
4064
+ /** Read-only identity for a resolver constructed with the durability authority. */
4065
+ export function captureEvolutionLedgerDurableArtifactResolver(value) {
4066
+ const binding = DURABLE_ARTIFACT_RESOLVER_BINDINGS.get(value);
4067
+ if (!binding)
4068
+ throw new TypeError(
4069
+ "a branded durable EvolutionLedger artifact resolver is required",
4070
+ );
4071
+ return binding;
4048
4072
  }
4049
4073
 
4050
4074
  export function createEvolutionLedgerPorts(options = {}) {