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.
- package/README.md +38 -8
- package/package.json +4 -1
- package/src/assets/web-panel/assets/{AIOps-B9i3kk5f.js → AIOps-CfPrpABR.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DGMs1wBm.js → ActionButton-Bkv1erki.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-D-JGeynM.js → Analytics-fY_7epoU.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DLECnXlP.js → AppLayout-DegaN-aa.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CwaTiXN4.js → Artifacts-90-UNTVE.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-BCb7s5Ky.js → Audit-BRQ1F4sA.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-D4IOzvKs.js → BackgroundAgents-Cb85uP7O.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-Cknunk10.js → Backup-CrLBSWQK.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DnU8pbUh.js → BaseInput-DditUW5B.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DOouYIhz.js → Chat-0XozleDQ.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-8QXBJvgy.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-BrumNw6V.js → Checkbox-C2Ck_3ju.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-B4E_uI_N.js → Codegen-Chjw-MS7.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C7H2sdaL.js → Col-B_w8_Oka.js} +1 -1
- package/src/assets/web-panel/assets/{Community-BFdzcMSl.js → Community-XAqxPnXq.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BzVXohrg.js → Compact-BX_3GJ3m.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-B_4QcuSH.js → Compliance-DE3kIC9z.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DjuQzJx8.js → Cowork-DPBYp1ey.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-Bf2iY-1-.js → Cron-D9cknqzn.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CY9QW7IT.js → Crosschain-BzHrGWY9.js} +1 -1
- package/src/assets/web-panel/assets/{DID-kDZBvaKr.js → DID-BuD8TkZl.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DoYboS3g.js → Dashboard-BbxMuZVK.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-LLEzI6l1.js → Dropdown-jq0ki-tE.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D2kmSvkg.js → EmailListRenderer-RiMvINxT.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-DHj2yUGZ.js → EvolutionSettings-DE-URi9i.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-B7Hg7fR0.js → FamilyGuardDashboard-DV3ao62-.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CUdwU6aH.js → Federation-BF6BmBPg.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-D1KrwjwY.js → FormItemContext-CKTX59j2.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CXGLoHfw.js → GenericCardRenderer-DZkH-CTs.js} +1 -1
- package/src/assets/web-panel/assets/{Git-TG3Q9JWG.js → Git-B5JYb-w-.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BJD7h_fv.js → Governance-D3WfDZ6W.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Dky4l_bZ.js → Inference-DoSvfDUk.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CCx9aXBV.js → KnowledgeGraph-DUDIzN97.js} +1 -1
- package/src/assets/web-panel/assets/Logs-JfJerfFD.js +2 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-DXgA7cZm.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-BzL6KJMX.js → Marketplace-BpVrOM_V.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BReSRzEU.js → McpTools-CFnQdiSv.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-BhmkkCxd.js → Memory-Dxv81cNl.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BeQMHr_n.js → MobileBridge-C92eX7PB.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CphEwj_l.js → MobileProjects-BUHw7Wox.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CFk1ibuN.js → Mtc-D-G9H4A1.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-CU9qrmbH.js → MtcAudit-CAEaEtAz.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CKR-Gh0Y.js → Multisig-Cx_-X9HD.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-D1qWY6Mx.js → NLProgramming-DRIKG4Xy.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-B4CM0C65.js → Notes-CmL0vKUv.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-BTQYWveR.js → NotificationSettings-D2cQ5aQn.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DxN6fAn8.js → OrderTableRenderer-CPfd7PNy.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-scgboNfd.js → Organization-EKqO46hz.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-BP4aQhid.js → Overflow-BOHjBwJo.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-65jIo6MY.js → P2P-Dx4LdCE0.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Bfi4-tDQ.js → PdhVaultBrowser-CgCt2xdT.js} +5 -5
- package/src/assets/web-panel/assets/{Permissions-DWtxT7bE.js → Permissions-DWjDeO7O.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-Bilmr8BR.js → PersonalDataHub-Bx4Od8pG.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-IPIMM-1y.js → Pipeline-oKxws_Ch.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DFB8RiVK.js → Privacy-Df1HVRKR.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DxZksvu1.js → ProjectInit-BraLwZT4.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DsjPsnYN.js → ProjectSettings-CKru54M0.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-CC5FBLLq.js → Projects-BEr7cJcS.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-Dk3ViPuF.js → Providers-C8v30DU3.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CJ8R6-bF.js → QrScannerModal-CPyNV-O5.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DJfCPORc.js → QuickAsk-BLIew7A5.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DjDygXeb.js → Recommend-DVjWmsPs.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BJiJ1YHw.js → RemoteSession-B4PNTaEf.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-fYE8jPcc.js → Reputation-D5HOV6oI.js} +1 -1
- package/src/assets/web-panel/assets/{Row-vcvsjMm4.js → Row-DgCQom2M.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CZnKliwn.js → RssFeed-zvIcGHgz.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DEStiFGI.js → Search-C-KbJP_z.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BPb_szxS.js → Security-CasnI-Ld.js} +3 -3
- package/src/assets/web-panel/assets/{Services-TR0xZhSF.js → Services-CR-pSlFv.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BSPu9boC.js → Skeleton-BB5On1b5.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CXEj9pC6.js → Skills-CC-wdQi-.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-jlOlDGMA.js → Sla-CPX5QKEu.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-C8oPE_HQ.js → SpeechSettings-Bifkl6Zz.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DZNUx8zt.js → SyncSettings-CdUVeB-S.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-B4T6aoOl.js → Tasks-BttwN3fs.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DeRgtwZ5.js → Templates-CBHNbpQ7.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DDVoXGxa.js → Tenant-B90lEwSQ.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DGAUoJMz.js → Terminal-u8KqitsA.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Co4Nkpjm.js → TimelineRenderer-CnEJMkJo.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-DaMLa0Fm.js → Tokens-CTM2OOJ_.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-C7iLr-Ik.js → Trigger-Ca8NmmgU.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-CxX_tQqi.js → Trust-CI9GpUj2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-ClrdckEx.js → UkeySign-BlMLGqKK.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DgTVhaoK.js → VideoEditing-C8yCZrH0.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-SIbwES0O.js → Wallet-BpuYrz8o.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-YNqVnhZF.js → WebAuthn-DFpNfLG_.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-BvynT9mj.js → WorkflowEditor-BWhLoeU4.js} +1 -1
- package/src/assets/web-panel/assets/{chat-X79b2tVy.js → chat-Dwo4LC7E.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DioWDCbu.js → colors-DkdGvKBf.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DpAXXaqu.js → compact-item-1gI0lfs3.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BYq8bCQX.js → createContext-O9iHirtr.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-axBqv361.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CDJNMJ_n.js → hasIn-DY1jo9BQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DUe-hFGb.js → index-1AnBwAoM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CS3QdYDW.js → index-B-kbagPi.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZysaS5T.js → index-B0TX-bLV.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cx0_WiSe.js → index-B5l7eb6E.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJEFd0QJ.js → index-BDwV_V5g.js} +1 -1
- package/src/assets/web-panel/assets/{index-D88MWTOx.js → index-BgHG4f2K.js} +1 -1
- package/src/assets/web-panel/assets/{index-BK53HyEP.js → index-BgVO1aXv.js} +1 -1
- package/src/assets/web-panel/assets/{index-COqkDiRU.js → index-Bl6GfsQZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUbuCFWb.js → index-BmAK4o9I.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7cXBJcM.js → index-BsQkwBu2.js} +1 -1
- package/src/assets/web-panel/assets/{index-Byt1ny7l.js → index-BumRAO-7.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bh9la-GL.js → index-Bx4MNNMY.js} +1 -1
- package/src/assets/web-panel/assets/{index-B8_grEFP.js → index-C4c0XaiT.js} +1 -1
- package/src/assets/web-panel/assets/index-CAsOttsq.js +1 -0
- package/src/assets/web-panel/assets/{index-YviHYMA2.js → index-CBqSTwY9.js} +1 -1
- package/src/assets/web-panel/assets/{index-00kVj4me.js → index-D8fqsTHW.js} +1 -1
- package/src/assets/web-panel/assets/{index-Wl55a61D.js → index-DCqPIE3G.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLSt7mOy.js → index-DNnaEzC5.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4xggKQp.js → index-DTppQua6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbxqdIzD.js → index-DfFzjnA0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BwHEGjR7.js → index-DskEFn8M.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3J9FKFr.js → index-DvRvwzc-.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGEXGr9g.js → index-DwBcFhcc.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6wxVEIZ.js → index-DwJBbK3Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-mHAPEcPi.js → index-DwhJqZqM.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1-NqghD.js → index-Dx51Am-0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DP9ZLjra.js → index-E5Ar6dNV.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSFkmRvK.js → index-ETHEhWvI.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmNspbVU.js → index-KUrBWzIM.js} +1 -1
- package/src/assets/web-panel/assets/index-MgEKheCh.js +1 -0
- package/src/assets/web-panel/assets/{index-TqLyy6IR.js → index-YnGvCu0P.js} +3 -3
- package/src/assets/web-panel/assets/{index-Q3WQ5Zhr.js → index-hRtVittm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DAnXSg0r.js → index-nXoV4OCZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BBvA7Hxj.js → index-qUbrqzvO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIO8EVHt.js → index-rIJqtLz-.js} +1 -1
- package/src/assets/web-panel/assets/{index-B8ChecWd.js → index-rkkMl4Lb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwG9khVs.js → index-tXjOuLZm.js} +1 -1
- package/src/assets/web-panel/assets/{index-V6l3ia83.js → index-zLOzCcxM.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bt0zcD5R.js → index-zPpssHXA.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-18rmGkik.js → initDefaultProps-Du5HHTVt.js} +1 -1
- package/src/assets/web-panel/assets/{motion-3kvGzSgV.js → motion-D9mAVPKP.js} +1 -1
- package/src/assets/web-panel/assets/{move-Dx3DiVHc.js → move-DPO_sFtt.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-VX1dFJEI.js → mtc-parser-CnezVcXi.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CniSeCOA.js → omit-DNpYMbet.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-RPggmcOd.js → pickAttrs-BUFm_slL.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-B45YBykr.js → placementArrow-DvwJtnzY.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D0nciAEn.js → responsiveObserve-CUWOh_KI.js} +1 -1
- package/src/assets/web-panel/assets/{slide-UxLNWqjI.js → slide-bVHCUsdj.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CukpV_uI.js → statusUtils-FlOzOrxf.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BIcEZk6Y.js → styleChecker-C6CFXutA.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-Zah-xvV3.js → useFlexGapSupport-BNGqO_E0.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BA7ihKFN.js → useFs-DyKOrA27.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-C64CsyY3.js → usePersonalDataHub-DZAqeMAJ.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-Datcekgj.js → vnode-Do7fVasi.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CaFQv1KF.js → zoom-DYkEmOT2.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +52 -0
- package/src/lib/background-agent-supervisor.js +10 -1
- package/src/lib/evolution/evidence-backed-wiki-maintainer.js +119 -12
- package/src/lib/evolution/evolution-artifact-ports.js +6 -0
- package/src/lib/evolution/evolution-deployment-loader.js +139 -0
- package/src/lib/evolution/evolution-eval-gate.js +5 -0
- package/src/lib/evolution/evolution-ledger-ports.js +41 -17
- package/src/lib/evolution/pm-exploration-benchmark.js +253 -0
- package/src/lib/evolution/pm-exploration-budget-executor.js +346 -0
- package/src/lib/evolution/pm-exploration-business-grader.js +581 -0
- package/src/lib/evolution/pm-exploration-evidence-bundle.js +613 -0
- package/src/lib/evolution/pm-exploration-execution-host.js +946 -0
- package/src/lib/evolution/pm-exploration-ledger-adapter.js +860 -0
- package/src/lib/evolution/pm-exploration-provider-settlement-adapter.js +420 -0
- package/src/lib/evolution/pm-exploration-receipts.js +626 -0
- package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +521 -0
- package/src/lib/evolution/pm-exploration-rounds.js +842 -0
- package/src/lib/evolution/pm-exploration-transition-committer.js +541 -0
- package/src/lib/evolution/pm-exploration-volcengine-provider.js +724 -0
- package/src/lib/evolution/pm-result-grader.cjs +287 -0
- package/src/lib/read-file-loop-guard.js +36 -5
- package/src/lib/secure-fs.js +51 -4
- package/src/lib/task-progress-tracker.js +29 -7
- package/src/lib/text-file-search.js +1 -0
- package/src/runtime/agent-core.js +46 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-C4tdSms8.js +0 -1
- package/src/assets/web-panel/assets/Logs-BtesccPB.js +0 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-DoN7oE2J.js +0 -1
- package/src/assets/web-panel/assets/devWarning-ONeWC5dH.js +0 -1
- package/src/assets/web-panel/assets/index--QLnQuO9.js +0 -1
- package/src/assets/web-panel/assets/index-CkgeII0e.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as v}from"./index-
|
|
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-
|
|
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-
|
|
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-
|
|
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">
|
package/src/data/changelog.json
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
164
|
-
|
|
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
|
-
|
|
172
|
-
|
|
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
|
-
|
|
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
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
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
|
-
|
|
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 = {}) {
|