chainlesschain 0.164.0 → 0.165.1
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/package.json +4 -4
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-D2MEn7fI.js → AIOps-CYxFDrcm.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-lCW_4Gf0.js → ActionButton-CPBtdiU2.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Bs7i-nsS.js → Analytics-Dayq7Dp7.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CK7B6S_j.js → AppLayout-6U7bPb2s.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-C8ILjpyo.js → Artifacts-D2Iqg_3D.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-Bb9cNaWc.js → Audit-CdoOB7WV.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-sC9ooXIf.js → BackgroundAgents-DrnAVB8w.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D-DrsplT.js → Backup-CesMi5cy.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-uCNZpwSK.js → BaseInput-DaX9ptax.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CsDK1uE9.js → Chat-OrwOPxDS.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-OqSDt50w.js → ChatBubbleRenderer-CvPZFRxM.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-JhTXM1-K.js → Checkbox-DiHbcysC.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BbzZLnyD.js → Codegen-CbgCkaBJ.js} +1 -1
- package/src/assets/web-panel/assets/{Col-D4VW4m4j.js → Col-Du5hgrh4.js} +1 -1
- package/src/assets/web-panel/assets/{Community-BXrYawxV.js → Community-DsPOBW-p.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DCihGy1u.js → Compact-BwHIFkNC.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DlyZ-lk8.js → Compliance-BvrDQSgd.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DvGZrhbO.js → Cowork-gwAE6arx.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-DUncZi8h.js → Cron-DW-0l4uF.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-C_hLuUcm.js → Crosschain-j-NsLesB.js} +1 -1
- package/src/assets/web-panel/assets/{DID-b6YSUqxr.js → DID-CibVEBOI.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-uvM15Cfb.js → Dashboard-W4z9vSfe.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-D1-Nd4qY.js → Dropdown-DAcrkKxG.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-8ApvL6Zc.js → EmailListRenderer-6GXah-89.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-LYJt8811.js → FamilyGuardDashboard-TKDCq8Ku.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BbI3HGpv.js → Federation-BXBLlcNm.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DSoEKuFu.js → FormItemContext-BoJJBkG3.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-B0S9OWd5.js → GenericCardRenderer-okjsl46v.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DIs9Zhf3.js → Git-Rvs7i6nn.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-jzZXrxcl.js → Governance-CHSUxXXS.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-JUPjf2ZI.js → Inference-V3BlfxsB.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DxnfJvlP.js → KnowledgeGraph-C_NlD4aR.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-iXiz8BEE.js → Logs-Nn4LNxhA.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-GmB6DOr6.js → MarkdownRenderer-SVAgNnkt.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-Y3Xch312.js → Marketplace-DEmjFcg-.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D7kGGbO7.js → McpTools-DlopXipI.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-Do_hVxzh.js → Memory-BG3ynX60.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CtrR0Tas.js → MobileBridge-DeRzWOfT.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Tyd3o2A0.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-qo5QCTGd.js → Mtc-BoPbOv1C.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-cq5mnjYj.js → MtcAudit-un-rTHp7.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-Bq0MAQHw.js → Multisig-Ds0oveEB.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DdWE6Vi2.js → NLProgramming-D09JI-yY.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BxMBFcIp.js → Notes-DTRhiKJn.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-RTrAcbUe.js → NotificationSettings-BAnnNCim.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DJbpGqzT.js → OrderTableRenderer-Yr-1fSYi.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-SQzIPdqC.js → Organization-S9EAolpj.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-02yECh22.js → Overflow-CqcLKqJ8.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BNg4pNCM.js → P2P-Dw0F9EcU.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BxPJZsD3.js → PdhVaultBrowser-BDRwUevN.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CLnDnPAz.js → Permissions-D3_c3nKB.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-C5m0AjGf.js → PersonalDataHub-CxdMV98x.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-VwOf5Dhv.js → Pipeline-CgjNQFLI.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-CC0W2hZd.js → Privacy-BHghIIht.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-Dz893Bob.js → ProjectInit-De6pqaKM.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CxQkvl0k.js → ProjectSettings-Bg4ZkNYQ.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-DDAjkUkT.js → Projects-CP8vPvzs.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DeB9IkxK.js → Providers-CUnHbNf-.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-OCeoaswn.js → QrScannerModal-DA2f3Wts.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DenotaAj.js → QuickAsk-C1FeHDqp.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Cies_jjI.js → Recommend-B5guaUMN.js} +1 -1
- package/src/assets/web-panel/assets/RemoteSession-PDADSds3.js +5 -0
- package/src/assets/web-panel/assets/{Reputation-CW0mvxgZ.js → Reputation-eTlRhgvK.js} +1 -1
- package/src/assets/web-panel/assets/{Row-SEd32qZU.js → Row-D7AqSGY0.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BSwnJ3Lm.js → RssFeed-JiuLm4Ja.js} +3 -3
- package/src/assets/web-panel/assets/{Search-xe2m8bkC.js → Search-CwruahW3.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Mq2F9Nro.js → Security-CdhqaR0b.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BKGw2V3P.js → Services-CU0ZIlcT.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DW95-Rxf.js → Skeleton-CtduPfAb.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CHgChCv_.js → Skills-CROXm6AY.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-tKh6k3R7.js → Sla-DiZiABFD.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-D6UL3dA5.js → SpeechSettings-B5pLcXUw.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-D0Fw8fVL.js → SyncSettings-DBX6J1Oe.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-20x1GB3D.js → Tasks-BLyRJd3-.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DJ-lts-a.js → Templates-BKa5qzmk.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BFdGpbs7.js → Tenant-DnD3a4M6.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-Xpx61vHL.js → Terminal-DEitQeTb.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-C6UIvyZQ.js → TimelineRenderer-CjHggTDq.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Dellq08f.js → Tokens-CsGT7sfl.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-VKw8d0J-.js → Trigger-yr4rFDrW.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DNftdKT5.js → Trust-CLvu1Sjp.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DX9VAKJI.js → UkeySign-B0m7yUP8.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-B2h3jO8q.js → VideoEditing-C0VvP4lc.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CjGkof7f.js → Wallet-kllBAG1M.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-2Zfcu55P.js → WebAuthn-C54UQNLx.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-B9eZ8UxZ.js → WorkflowEditor-B7y8qSvU.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CQNfD-YO.js → chat-DRzTh8CJ.js} +1 -1
- package/src/assets/web-panel/assets/{colors-D4usyFT2.js → colors-BSMwSnCx.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-s4TpjvjX.js → compact-item-BTg602H5.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BRCSvYxj.js → createContext-B6EGsdvp.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Dol8jLEP.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-AdkUbkV-.js → hasIn-DDKqJ8RD.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKC1t3Ic.js → index-323Hhxxt.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkwiSLhU.js → index-BICn3Qh1.js} +1 -1
- package/src/assets/web-panel/assets/{index-s_buFMEG.js → index-BMuGd2--.js} +1 -1
- package/src/assets/web-panel/assets/{index-MMN9V6JF.js → index-BRqt4fO-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZT36ZYq.js → index-BVTAl5N2.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bad4VNvz.js → index-BsR7Y2NG.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1mJtE6q.js → index-Bx044qDj.js} +1 -1
- package/src/assets/web-panel/assets/{index-CYdoQsa1.js → index-C1GFfuqN.js} +1 -1
- package/src/assets/web-panel/assets/index-C3QX5tOl.js +1 -0
- package/src/assets/web-panel/assets/{index-CJCFe2Qf.js → index-C66NpWy5.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2GjI2oe.js → index-CDTvsX8t.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7Y8Aluc.js → index-CGNklbP6.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdCB70SS.js → index-CHfLYwcW.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bw2MEnUk.js → index-CNxg61YP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DARsAyUp.js → index-CQlHFN_g.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIoG5yYf.js → index-CUEU48o1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DzRjHxEv.js → index-CWGax2QW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCsM_Ybx.js → index-C_JzIXUq.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4JJCfQ2.js → index-Cf23wVMs.js} +1 -1
- package/src/assets/web-panel/assets/{index-C484EJiS.js → index-CmAInUkX.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2V-eKfK.js → index-CmAubjDi.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_XBHopw.js → index-Co7oM1qr.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5KAQFPQ.js → index-CwPUZbMI.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPhkFZ1I.js → index-D1naNj4U.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQhAVU5t.js → index-D5CsBShd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DVKfQ0Ux.js → index-DBT3YeQ9.js} +1 -1
- package/src/assets/web-panel/assets/{index-_IRVsV9X.js → index-DLdrHhML.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJdQrZth.js → index-Dc77VR3H.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cduu2Hhr.js → index-Dfv2lKu3.js} +1 -1
- package/src/assets/web-panel/assets/{index--00U6vXZ.js → index-DiW0sDkz.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMcimU-2.js → index-DpTHIRfZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJVEOa4i.js → index-DqFXGzzC.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgiXR_-_.js → index-XFe-1twF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQ3DXBtD.js → index-p2HYn89m.js} +3 -3
- package/src/assets/web-panel/assets/{index-Cvyt-zhm.js → index-pqfux8vZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-nXyk8GZ9.js → index-rjzk9z1Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-RfMr79MW.js → index-th2ihDc0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtobShro.js → index-u2YVld9W.js} +1 -1
- package/src/assets/web-panel/assets/index-xYybvEic.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-Blmpk7HL.js → initDefaultProps-C3Djh9fa.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DPBJMv1n.js → motion-BzqFmbSe.js} +1 -1
- package/src/assets/web-panel/assets/{move-ButdzCM7.js → move-DJo_FFaW.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-cyRC_QCe.js → mtc-parser-_tlTiBvk.js} +1 -1
- package/src/assets/web-panel/assets/{omit-1epSV7hz.js → omit-CB2ZyxUg.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DuPY8xJs.js → pickAttrs-DZwIFD4u.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-6XZqarhe.js → placementArrow-DxZY0dgk.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-B40pXBWM.js → responsiveObserve-CzzGt7GL.js} +1 -1
- package/src/assets/web-panel/assets/{slide-jbZ9Wu4n.js → slide-BaIK52yz.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BKQQcVy4.js → statusUtils-3-FHu9_M.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-NiKfWjUT.js → styleChecker-BkRT68fK.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-bQUCvPeb.js → useFlexGapSupport-DHYwKS-s.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CUGji7ph.js → useFs-DVVUhV8p.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-4veyN2N2.js → usePersonalDataHub-CkrFKAzQ.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-1-nLug-Z.js → vnode-BuBLFz0c.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-dhCeRDMo.js → zoom-kpm6LtXU.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/cowork.js +283 -61
- package/src/data/changelog.json +15 -2
- package/src/gateways/ws/action-protocol.js +293 -19
- package/src/gateways/ws/message-dispatcher.js +30 -0
- package/src/gateways/ws/remote-session-protocol.js +542 -35
- package/src/gateways/ws/ws-approval-gate.js +5 -0
- package/src/gateways/ws/ws-server.js +462 -38
- package/src/harness/remote-session-audit.js +1 -0
- package/src/harness/remote-session-crypto.js +750 -50
- package/src/harness/remote-session-registry.js +795 -27
- package/src/lib/auto-mode-config.js +98 -3
- package/src/lib/background-agent-keeper-protocol.js +154 -10
- package/src/lib/background-agent-supervisor.js +840 -48
- package/src/lib/background-session-transport.js +23 -6
- package/src/lib/background-turn-bootstrap-protocol.js +64 -0
- package/src/lib/cowork-workflow.js +853 -61
- package/src/lib/delivery-production-adapter.js +38 -2
- package/src/lib/dynamic-workflow-facade.js +1105 -17
- package/src/lib/mcp-stdio-package-materialization.js +1 -1
- package/src/lib/remote-approval-bridge.js +745 -108
- package/src/lib/remote-control.js +2 -0
- package/src/lib/remote-membership-coordinator.js +604 -40
- package/src/lib/remote-membership-host-store.js +59 -10
- package/src/lib/runtime-provenance-ledger.js +171 -46
- package/src/lib/shell-approval.js +169 -6
- package/src/lib/with-file-lock.js +73 -38
- package/src/repl/agent-repl.js +70 -29
- package/src/repl/remote-approval.js +29 -7
- package/src/runtime/agent-core.js +1099 -152
- package/src/runtime/headless-runner.js +22 -5
- package/src/runtime/headless-stream.js +19 -3
- package/src/workers/background-agent-keeper.js +249 -58
- package/src/workers/background-agent-worker.js +7 -0
- package/src/workers/background-turn-bootstrap.js +29 -2
- package/src/assets/web-panel/assets/MobileProjects-BL0Czcoj.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-Dxzl5n2T.js +0 -5
- package/src/assets/web-panel/assets/devWarning-DKJjSWRn.js +0 -1
- package/src/assets/web-panel/assets/index-C61cnl3K.js +0 -1
- package/src/assets/web-panel/assets/index-D4XFHxBr.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as v}from"./index-
|
|
1
|
+
import{u as v}from"./index-p2HYn89m.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-p2HYn89m.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-p2HYn89m.js";import{i as f}from"./motion-BzqFmbSe.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-p2HYn89m.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/commands/cowork.js
CHANGED
|
@@ -9,6 +9,71 @@ import fs from "fs";
|
|
|
9
9
|
import path from "path";
|
|
10
10
|
import { logger } from "../lib/logger.js";
|
|
11
11
|
|
|
12
|
+
const SESSION_EXECUTION_LOCATION_AUTHORITY_SCHEMA =
|
|
13
|
+
"cc-session-execution-location-authority/v1";
|
|
14
|
+
|
|
15
|
+
function workflowAuthorityError(code, message) {
|
|
16
|
+
const error = new Error(message);
|
|
17
|
+
error.code = code;
|
|
18
|
+
error.executionStarted = false;
|
|
19
|
+
return error;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function requireWorkflowExecutionAuthoritySession(sessionId) {
|
|
23
|
+
if (typeof sessionId !== "string" || sessionId.trim() === "") {
|
|
24
|
+
throw workflowAuthorityError(
|
|
25
|
+
"CC_DYNAMIC_WORKFLOW_EXECUTION_AUTHORITY_MISSING",
|
|
26
|
+
"--execution-authority-session <id> is required",
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
return sessionId;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function projectWorkflowExecutionAuthority(sessionId, verifiedProof) {
|
|
33
|
+
requireWorkflowExecutionAuthoritySession(sessionId);
|
|
34
|
+
let proof;
|
|
35
|
+
try {
|
|
36
|
+
proof = structuredClone(verifiedProof);
|
|
37
|
+
} catch {
|
|
38
|
+
throw workflowAuthorityError(
|
|
39
|
+
"CC_DYNAMIC_WORKFLOW_EXECUTION_AUTHORITY_INVALID",
|
|
40
|
+
"verified execution authority could not be safely snapshotted",
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
if (proof?.sessionId !== sessionId) {
|
|
44
|
+
throw workflowAuthorityError(
|
|
45
|
+
"CC_DYNAMIC_WORKFLOW_EXECUTION_AUTHORITY_SESSION_MISMATCH",
|
|
46
|
+
"verified execution authority does not match the requested session",
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return Object.freeze({
|
|
50
|
+
schema: SESSION_EXECUTION_LOCATION_AUTHORITY_SCHEMA,
|
|
51
|
+
authority: "verified-session-start",
|
|
52
|
+
sessionId: proof.sessionId,
|
|
53
|
+
headHash: proof.headHash,
|
|
54
|
+
eventCount: proof.eventCount,
|
|
55
|
+
binding: proof.binding,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function renderWorkflowPreflight(preflight) {
|
|
60
|
+
const color = preflight.allowed ? chalk.green : chalk.red;
|
|
61
|
+
logger.log(color(preflight.allowed ? "READY" : "BLOCKED"));
|
|
62
|
+
logger.log(` definition: ${preflight.definition.definitionDigest}`);
|
|
63
|
+
logger.log(
|
|
64
|
+
` task calls: ${preflight.scale.worstCaseTaskCalls ?? "unknown"}`,
|
|
65
|
+
);
|
|
66
|
+
logger.log(
|
|
67
|
+
` tokens/USD: ${preflight.cost.projectedTokens ?? "unknown"} / ${preflight.cost.projectedUsd ?? "unknown"}`,
|
|
68
|
+
);
|
|
69
|
+
for (const blocker of preflight.blockers) {
|
|
70
|
+
logger.log(chalk.red(` blocker: ${blocker}`));
|
|
71
|
+
}
|
|
72
|
+
for (const warning of preflight.warnings) {
|
|
73
|
+
logger.log(chalk.yellow(` warning: ${warning}`));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
12
77
|
async function loadCoworkWorkflowRecord(cwd, id, definitionDigest) {
|
|
13
78
|
const { getWorkflowRecord, getWorkflowVersion } =
|
|
14
79
|
await import("../lib/cowork-workflow.js");
|
|
@@ -17,7 +82,38 @@ async function loadCoworkWorkflowRecord(cwd, id, definitionDigest) {
|
|
|
17
82
|
: getWorkflowRecord(cwd, id);
|
|
18
83
|
}
|
|
19
84
|
|
|
20
|
-
|
|
85
|
+
function verifyWorkflowRunAuthorities(
|
|
86
|
+
cwd,
|
|
87
|
+
{ workflowId, definitionDigest, executionAuthoritySessionId },
|
|
88
|
+
deps,
|
|
89
|
+
) {
|
|
90
|
+
const definitionAuthority = deps.getWorkflowVersion(
|
|
91
|
+
cwd,
|
|
92
|
+
workflowId,
|
|
93
|
+
definitionDigest,
|
|
94
|
+
);
|
|
95
|
+
if (
|
|
96
|
+
!definitionAuthority ||
|
|
97
|
+
definitionAuthority.definitionDigest !== definitionDigest
|
|
98
|
+
) {
|
|
99
|
+
throw workflowAuthorityError(
|
|
100
|
+
"CC_DYNAMIC_WORKFLOW_DEFINITION_AUTHORITY_DRIFT",
|
|
101
|
+
"the exact admitted workflow definition version is no longer available",
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
const executionLocationAuthority = projectWorkflowExecutionAuthority(
|
|
105
|
+
executionAuthoritySessionId,
|
|
106
|
+
deps.getVerifiedSessionExecutionLocationAuthority(
|
|
107
|
+
executionAuthoritySessionId,
|
|
108
|
+
),
|
|
109
|
+
);
|
|
110
|
+
return Object.freeze({
|
|
111
|
+
definitionAuthority,
|
|
112
|
+
executionLocationAuthority,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function registerCoworkCommand(program, commandDeps = {}) {
|
|
21
117
|
const cowork = program
|
|
22
118
|
.command("cowork")
|
|
23
119
|
.description(
|
|
@@ -896,53 +992,96 @@ export function registerCoworkCommand(program) {
|
|
|
896
992
|
"--definition-digest <sha256>",
|
|
897
993
|
"Preflight an immutable saved definition version",
|
|
898
994
|
)
|
|
995
|
+
.option(
|
|
996
|
+
"--execution-authority-session <id>",
|
|
997
|
+
"Verified session whose start event anchors execution authority",
|
|
998
|
+
)
|
|
899
999
|
.option("--max-parallel <n>", "Requested maximum parallel steps", "4")
|
|
900
1000
|
.option("--json", "Machine-readable JSON output")
|
|
901
1001
|
.action(async (id, options) => {
|
|
902
1002
|
try {
|
|
903
1003
|
const [
|
|
904
|
-
{
|
|
905
|
-
{
|
|
1004
|
+
{ buildDynamicWorkflowRunAdmission },
|
|
1005
|
+
{ getWorkflowVersion },
|
|
1006
|
+
{ getVerifiedSessionExecutionLocationAuthority },
|
|
906
1007
|
record,
|
|
907
1008
|
] = await Promise.all([
|
|
908
1009
|
import("../lib/dynamic-workflow-facade.js"),
|
|
909
|
-
import("../lib/
|
|
1010
|
+
import("../lib/cowork-workflow.js"),
|
|
1011
|
+
import("../harness/jsonl-session-store.js"),
|
|
910
1012
|
loadCoworkWorkflowRecord(process.cwd(), id, options.definitionDigest),
|
|
911
1013
|
]);
|
|
912
1014
|
if (!record) {
|
|
913
|
-
|
|
1015
|
+
if (options.json) {
|
|
1016
|
+
console.log(
|
|
1017
|
+
JSON.stringify(
|
|
1018
|
+
{
|
|
1019
|
+
schema: "cc-dynamic-workflow-run-admission-error/v1",
|
|
1020
|
+
allowed: false,
|
|
1021
|
+
executionStarted: false,
|
|
1022
|
+
code: "WORKFLOW_NOT_FOUND",
|
|
1023
|
+
message: `Workflow not found: ${id}`,
|
|
1024
|
+
},
|
|
1025
|
+
null,
|
|
1026
|
+
2,
|
|
1027
|
+
),
|
|
1028
|
+
);
|
|
1029
|
+
} else {
|
|
1030
|
+
logger.error(`Workflow not found: ${id}`);
|
|
1031
|
+
}
|
|
914
1032
|
process.exitCode = 1;
|
|
915
1033
|
return;
|
|
916
1034
|
}
|
|
917
|
-
const
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
1035
|
+
const executionAuthoritySessionId =
|
|
1036
|
+
requireWorkflowExecutionAuthoritySession(
|
|
1037
|
+
options.executionAuthoritySession,
|
|
1038
|
+
);
|
|
1039
|
+
const admission = buildDynamicWorkflowRunAdmission(
|
|
1040
|
+
{
|
|
1041
|
+
definitionAuthority: record,
|
|
1042
|
+
executionAuthoritySessionId,
|
|
1043
|
+
maxParallel: options.maxParallel,
|
|
1044
|
+
execution: {
|
|
1045
|
+
cwd: process.cwd(),
|
|
1046
|
+
continueOnError: false,
|
|
1047
|
+
pipeline: record.definition.pipeline === true,
|
|
1048
|
+
},
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
verifyAuthorities: (lookup) =>
|
|
1052
|
+
verifyWorkflowRunAuthorities(process.cwd(), lookup, {
|
|
1053
|
+
getWorkflowVersion,
|
|
1054
|
+
getVerifiedSessionExecutionLocationAuthority,
|
|
1055
|
+
}),
|
|
1056
|
+
},
|
|
1057
|
+
);
|
|
1058
|
+
const preflight = admission.preflight;
|
|
923
1059
|
if (options.json) {
|
|
924
1060
|
console.log(JSON.stringify(preflight, null, 2));
|
|
925
1061
|
} else {
|
|
926
|
-
|
|
927
|
-
logger.log(color(preflight.allowed ? "READY" : "BLOCKED"));
|
|
928
|
-
logger.log(` definition: ${preflight.definition.definitionDigest}`);
|
|
929
|
-
logger.log(
|
|
930
|
-
` task calls: ${preflight.scale.worstCaseTaskCalls ?? "unknown"}`,
|
|
931
|
-
);
|
|
932
|
-
logger.log(
|
|
933
|
-
` tokens/USD: ${preflight.cost.projectedTokens ?? "unknown"} / ${preflight.cost.projectedUsd ?? "unknown"}`,
|
|
934
|
-
);
|
|
935
|
-
for (const blocker of preflight.blockers) {
|
|
936
|
-
logger.log(chalk.red(` blocker: ${blocker}`));
|
|
937
|
-
}
|
|
938
|
-
for (const warning of preflight.warnings) {
|
|
939
|
-
logger.log(chalk.yellow(` warning: ${warning}`));
|
|
940
|
-
}
|
|
1062
|
+
renderWorkflowPreflight(preflight);
|
|
941
1063
|
}
|
|
942
|
-
process.exitCode =
|
|
1064
|
+
process.exitCode = admission.allowed ? 0 : 2;
|
|
943
1065
|
} catch (err) {
|
|
944
|
-
|
|
945
|
-
|
|
1066
|
+
const code = err.code || "WORKFLOW_PREFLIGHT_BLOCKED";
|
|
1067
|
+
if (options.json) {
|
|
1068
|
+
console.log(
|
|
1069
|
+
JSON.stringify(
|
|
1070
|
+
{
|
|
1071
|
+
schema: "cc-dynamic-workflow-run-admission-error/v1",
|
|
1072
|
+
allowed: false,
|
|
1073
|
+
executionStarted: false,
|
|
1074
|
+
code,
|
|
1075
|
+
message: err.message,
|
|
1076
|
+
},
|
|
1077
|
+
null,
|
|
1078
|
+
2,
|
|
1079
|
+
),
|
|
1080
|
+
);
|
|
1081
|
+
} else {
|
|
1082
|
+
logger.error(`${code}: ${err.message}`);
|
|
1083
|
+
}
|
|
1084
|
+
process.exitCode = 2;
|
|
946
1085
|
}
|
|
947
1086
|
});
|
|
948
1087
|
|
|
@@ -983,6 +1122,10 @@ export function registerCoworkCommand(program) {
|
|
|
983
1122
|
"--definition-digest <sha256>",
|
|
984
1123
|
"Replay an immutable saved definition version",
|
|
985
1124
|
)
|
|
1125
|
+
.option(
|
|
1126
|
+
"--execution-authority-session <id>",
|
|
1127
|
+
"Verified session whose start event anchors execution authority",
|
|
1128
|
+
)
|
|
986
1129
|
.option("--continue-on-error", "Keep running after a step fails", false)
|
|
987
1130
|
.option("--max-parallel <n>", "Max parallel steps per batch", "4")
|
|
988
1131
|
.option(
|
|
@@ -991,12 +1134,64 @@ export function registerCoworkCommand(program) {
|
|
|
991
1134
|
false,
|
|
992
1135
|
)
|
|
993
1136
|
.action(async (id, options) => {
|
|
994
|
-
|
|
995
|
-
|
|
1137
|
+
let executionStarted = false;
|
|
1138
|
+
try {
|
|
1139
|
+
let workflowExecutionAuthorityModule;
|
|
1140
|
+
if (Object.hasOwn(commandDeps, "workflowExecutionAuthorityProvider")) {
|
|
1141
|
+
const descriptor = Object.getOwnPropertyDescriptor(
|
|
1142
|
+
commandDeps,
|
|
1143
|
+
"workflowExecutionAuthorityProvider",
|
|
1144
|
+
);
|
|
1145
|
+
if (!descriptor || !Object.hasOwn(descriptor, "value")) {
|
|
1146
|
+
throw new Error(
|
|
1147
|
+
"Cowork workflow authority provider seam must be a data property",
|
|
1148
|
+
);
|
|
1149
|
+
}
|
|
1150
|
+
workflowExecutionAuthorityModule = Promise.resolve({
|
|
1151
|
+
getVerifiedSessionExecutionLocationAuthority: descriptor.value,
|
|
1152
|
+
});
|
|
1153
|
+
} else {
|
|
1154
|
+
workflowExecutionAuthorityModule =
|
|
1155
|
+
import("../harness/jsonl-session-store.js");
|
|
1156
|
+
}
|
|
1157
|
+
let workflowRunTaskModule;
|
|
1158
|
+
if (Object.hasOwn(commandDeps, "workflowRunTask")) {
|
|
1159
|
+
const descriptor = Object.getOwnPropertyDescriptor(
|
|
1160
|
+
commandDeps,
|
|
1161
|
+
"workflowRunTask",
|
|
1162
|
+
);
|
|
1163
|
+
if (!descriptor || !Object.hasOwn(descriptor, "value")) {
|
|
1164
|
+
throw new Error(
|
|
1165
|
+
"Cowork workflow task runner seam must be a data property",
|
|
1166
|
+
);
|
|
1167
|
+
}
|
|
1168
|
+
workflowRunTaskModule = Promise.resolve({
|
|
1169
|
+
runCoworkTask: descriptor.value,
|
|
1170
|
+
});
|
|
1171
|
+
} else {
|
|
1172
|
+
workflowRunTaskModule = import("../lib/cowork-task-runner.js");
|
|
1173
|
+
}
|
|
1174
|
+
const [
|
|
1175
|
+
{ executeWorkflow: executeCoworkWorkflow, getWorkflowVersion },
|
|
1176
|
+
{ executeDynamicWorkflowWithAdmission },
|
|
1177
|
+
{ getVerifiedSessionExecutionLocationAuthority },
|
|
1178
|
+
{ runCoworkTask },
|
|
1179
|
+
] = await Promise.all([
|
|
996
1180
|
import("../lib/cowork-workflow.js"),
|
|
997
|
-
import("../lib/
|
|
1181
|
+
import("../lib/dynamic-workflow-facade.js"),
|
|
1182
|
+
workflowExecutionAuthorityModule,
|
|
1183
|
+
workflowRunTaskModule,
|
|
998
1184
|
]);
|
|
999
|
-
|
|
1185
|
+
if (typeof runCoworkTask !== "function") {
|
|
1186
|
+
throw new Error("Cowork workflow task runner is unavailable");
|
|
1187
|
+
}
|
|
1188
|
+
if (
|
|
1189
|
+
typeof getVerifiedSessionExecutionLocationAuthority !== "function"
|
|
1190
|
+
) {
|
|
1191
|
+
throw new Error(
|
|
1192
|
+
"Cowork workflow execution authority provider is unavailable",
|
|
1193
|
+
);
|
|
1194
|
+
}
|
|
1000
1195
|
const record = await loadCoworkWorkflowRecord(
|
|
1001
1196
|
process.cwd(),
|
|
1002
1197
|
id,
|
|
@@ -1008,33 +1203,58 @@ export function registerCoworkCommand(program) {
|
|
|
1008
1203
|
return;
|
|
1009
1204
|
}
|
|
1010
1205
|
const wf = record.definition;
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1206
|
+
const executionAuthoritySessionId =
|
|
1207
|
+
requireWorkflowExecutionAuthoritySession(
|
|
1208
|
+
options.executionAuthoritySession,
|
|
1209
|
+
);
|
|
1210
|
+
const outcome = await executeDynamicWorkflowWithAdmission(
|
|
1211
|
+
{
|
|
1212
|
+
definitionAuthority: record,
|
|
1213
|
+
executionAuthoritySessionId,
|
|
1214
|
+
maxParallel: options.maxParallel,
|
|
1215
|
+
execution: {
|
|
1216
|
+
cwd: process.cwd(),
|
|
1217
|
+
continueOnError: !!options.continueOnError,
|
|
1218
|
+
// Omit (rather than pass undefined) when absent so a
|
|
1219
|
+
// workflow-level `pipeline: true` remains authoritative.
|
|
1220
|
+
...(options.pipeline ? { pipeline: true } : {}),
|
|
1221
|
+
onStepStart: ({ stepId }) =>
|
|
1222
|
+
logger.log(chalk.gray(` → step ${stepId} ...`)),
|
|
1223
|
+
onStepComplete: (out) => {
|
|
1224
|
+
const flag =
|
|
1225
|
+
out.status === "completed"
|
|
1226
|
+
? chalk.green("✓")
|
|
1227
|
+
: out.status === "skipped"
|
|
1228
|
+
? chalk.gray("—")
|
|
1229
|
+
: chalk.red("✗");
|
|
1230
|
+
logger.log(` ${flag} ${out.id} (${out.status})`);
|
|
1231
|
+
},
|
|
1232
|
+
},
|
|
1233
|
+
onAdmitted: () => {
|
|
1234
|
+
executionStarted = true;
|
|
1235
|
+
logger.log(
|
|
1236
|
+
chalk.bold(
|
|
1237
|
+
`\nExecuting workflow '${wf.name}' (${wf.steps.length} steps, ${record.definitionDigest})...`,
|
|
1238
|
+
),
|
|
1239
|
+
);
|
|
1240
|
+
},
|
|
1036
1241
|
},
|
|
1037
|
-
|
|
1242
|
+
{
|
|
1243
|
+
verifyAuthorities: (lookup) =>
|
|
1244
|
+
verifyWorkflowRunAuthorities(process.cwd(), lookup, {
|
|
1245
|
+
getWorkflowVersion,
|
|
1246
|
+
getVerifiedSessionExecutionLocationAuthority,
|
|
1247
|
+
}),
|
|
1248
|
+
executeWorkflow: (execution) =>
|
|
1249
|
+
executeCoworkWorkflow({ ...execution, runTask: runCoworkTask }),
|
|
1250
|
+
},
|
|
1251
|
+
);
|
|
1252
|
+
if (!outcome.allowed) {
|
|
1253
|
+
renderWorkflowPreflight(outcome.preflight);
|
|
1254
|
+
process.exitCode = 2;
|
|
1255
|
+
return;
|
|
1256
|
+
}
|
|
1257
|
+
const result = outcome.record;
|
|
1038
1258
|
const color =
|
|
1039
1259
|
result.status === "completed"
|
|
1040
1260
|
? chalk.green
|
|
@@ -1042,9 +1262,11 @@ export function registerCoworkCommand(program) {
|
|
|
1042
1262
|
? chalk.yellow
|
|
1043
1263
|
: chalk.red;
|
|
1044
1264
|
logger.log(color(`\nWorkflow ${result.status}.\n`));
|
|
1265
|
+
process.exitCode = result.status === "completed" ? 0 : 1;
|
|
1045
1266
|
} catch (err) {
|
|
1046
|
-
logger.error(err.message);
|
|
1047
|
-
process.
|
|
1267
|
+
logger.error(`${err.code || "WORKFLOW_RUN_FAILED"}: ${err.message}`);
|
|
1268
|
+
process.exitCode =
|
|
1269
|
+
executionStarted || err.executionStarted === true ? 1 : 2;
|
|
1048
1270
|
}
|
|
1049
1271
|
});
|
|
1050
1272
|
|
package/src/data/changelog.json
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.165.1",
|
|
7
|
+
"cliVersions": ["0.164.0", "0.165.1"],
|
|
8
|
+
"date": "2026-08-17",
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Added — cc CLI 0.165.1: runtime admission, remote authority, and background containment",
|
|
13
|
+
"body": "> `chainlesschain` **0.164.0 → 0.165.1** (candidate; not yet published,\n> 2026-08-17).\n> CLI candidate with `@chainlesschain/personal-data-hub` **0.4.58**;\n> `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Dynamic workflow run admission**: Cowork workflow execution revalidates the\n immutable definition digest, execution-authority session, permissions,\n sandbox, scale, and cost gates when a run starts instead of treating an\n earlier preflight as continuing authority.\n- **Durable remote authority**: CLI-hosted approval, relay membership, and\n reconnect reconciliation bind responses and commits to durable membership\n epochs. Stale, revoked, mismatched, or unavailable authority fails closed.\n- **Canonical execution boundaries**: background `run_shell`, plugin-bin, and\n delivery paths validate canonical workspace and configured repository\n authority before executing or pushing. Linux child descriptors not declared\n by the execution contract are closed before launch.\n- **Background keeper containment**: supervisor state locks publish ownership\n atomically, distinguish zombies and reused PIDs, preserve POSIX process-group\n cleanup, contain released turns after Worker loss, and require durable cleanup\n evidence before retiring worktrees. POSIX socket namespaces and Windows exit\n settlement are bounded for hosted and local environments.\n- **Cross-platform release evidence**: CLI workflows install the candidate's\n dependency closure, bind reusable jobs to the exact source SHA, keep each\n platform's evidence isolated, and retain bounded diagnostics for transient\n process-identity and cleanup races.\n- **Dependency security closure**: the CLI requires the patched `js-yaml`\n 3.15.1 line, while Personal Data Hub 0.4.58 advances its bounded ZIP adapter\n to `adm-zip` 0.6.0 so a crafted archive cannot trigger the disclosed 4 GB\n allocation path before adapter-level entry validation.\n- **Release boundary**: the separate plugin marketplace activation hardening in\n PR #209 is intentionally excluded because its latest CLI and PR test runs are\n not green. This candidate does not claim that pending source as published.\n- **Release packaging recovery**: immutable tag `v-npm-0-165-0` stopped before\n any registry write because its SBOM resolver tried to fetch the coordinated\n PDH 0.4.58 candidate before that package could be published. The 0.165.1\n workflow resolves the SBOM from exact-SHA internal package tarballs instead.\n- **Release status**: immutable tag, final source SHA, workflow run IDs, npm\n provenance, package digests, and registry readback remain intentionally\n absent until the final merge SHA passes complete `CLI CI` and\n `CLI Strict Sandbox` matrices on Linux, Windows, and macOS, followed by the\n dedicated npm release and independent public readback workflows."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
4
17
|
{
|
|
5
18
|
"productVersion": null,
|
|
6
19
|
"cliVersion": "0.164.0",
|
|
7
20
|
"cliVersions": ["0.163.8", "0.164.0"],
|
|
8
|
-
"date": "2026-08-
|
|
21
|
+
"date": "2026-08-16",
|
|
9
22
|
"title": "",
|
|
10
23
|
"sections": [
|
|
11
24
|
{
|
|
12
25
|
"heading": "Added — cc CLI 0.164.0: governed marketplace, execution authority, and native isolation hardening",
|
|
13
|
-
"body": "> `chainlesschain` **0.163.8 → 0.164.0** (
|
|
26
|
+
"body": "> `chainlesschain` **0.163.8 → 0.164.0** (published from exact SHA\n> `313dec85cffa09dbb183be17d2b6597e303bed5f`, 2026-08-16).\n> CLI-only release; `@chainlesschain/personal-data-hub` remains **0.4.57**\n> and `@chainlesschain/agent-sdk` remains **0.1.7**.\n\n- **Native clipboard images**: `/paste-image` can attach bounded PNG, JPEG,\n GIF, and WebP clipboard payloads to the next vision turn. Windows, macOS,\n Wayland, and X11 host adapters use literal arguments, private temporary\n files, signature checks, byte/count limits, and the Process Broker boundary.\n- **Scoped execution and context authority**: runtime permissions now expose\n exact side-effect explanations and scoped decisions, while session execution\n locations, IDE context-center evidence, prompt interactions, and durable\n workflow definitions carry versioned identities instead of ambient context.\n- **Governed plugin marketplace**: catalog, multi-registry candidate selection,\n install authority, update-impact review, artifact byte readback, and remote\n artifact verification bind publisher, digest, signature, source, policy, and\n approval evidence before plugin installation or update.\n- **Background keeper containment**: an independent keeper records Worker and\n descendant PIDs, retires interrupted turns under bounded Windows identity and\n cleanup budgets, and emits strict formal/smoke evidence contracts. The local\n real-spawn regression is green; the three-platform formal keeper aggregate is\n still required before P1-2 can be marked complete.\n- **MCP capsule boundary evidence**: materialized capsules bind the exact Node\n builtin capability set and OS execution-context requirements. Formal evidence\n now hashes and reparses each live result and schedules three independent\n fresh-isolate probes per platform across a two-hour span; smoke evidence is\n explicitly non-qualifying.\n- **Session and remote-approval hardening**: canonical session persistence gains\n additional crash and anti-rollback checks. Client-hosted remote approval uses\n durable same-machine membership epochs and fails closed on stale, revoked, or\n unavailable authority. Signed coordinator/host lease modules are included as\n a foundation only; they are not yet wired as a complete cross-host dispatch\n fence and do not claim distributed consensus or revoke closure.\n- **Linux dynamic-native isolation candidate**: strict Linux native execution\n recursively attests the ELF startup graph, snapshots caller-owned runtime and\n plugin bytes, exposes only a read-only descriptor-bound namespace, and blocks\n loader-input acquisition and nested mount namespaces with a dynamic-only\n seccomp profile. The typed claim is limited to pathname-visible loader input;\n broad `sharedLibraryClosure` remains false, JIT/custom loaders are excluded,\n and packed Linux runtimes fail closed until separately supported.\n- **macOS signed launcher candidate**: a fixed signed/root helper contract can\n copy and hash runtime and entry descriptors into root-protected snapshots,\n gate entry until the runtime pathname is removed, supervise the target, and\n fail closed when ownership, receipt, protocol, or signing evidence differs.\n It remains disabled until the protected x64/arm64 workflow proves Developer\n ID signing, notarization, root package installation, and the full live race\n matrix; it does not claim shared-library closure.\n- **Compatibility and reliability boundary**: reaching the documented\n `0.164.0` removal floor does not replace representative telemetry. All 25\n compatibility aliases remain retained because approved cohort export,\n three-platform reporting coverage, accepted points, and per-command usage are\n still absent. The scheduler campaign remains incomplete, and the uncommitted\n remote `run_shell` lease-consumption vertical is excluded after its expanded\n parallel matrix did not finish fully green.\n- **Release authority hardening**: manual npm workflow runs are dry-run only;\n production packaging and publishing require an immutable `v-npm-*` tag-push\n event. Operator-controlled version text is no longer interpolated into shell\n scripts, release Actions are commit-pinned, and independent readback validates\n a canonical numeric SemVer before resolving the tag and attested artifact.\n- **Published release evidence**: immutable tag `v-npm-0-164-0` resolves to\n exact source commit `313dec85cffa09dbb183be17d2b6597e303bed5f`. Its\n Linux, Windows, and macOS `CLI CI` (`31912844177`) and\n `CLI Strict Sandbox` (`31912844034`) matrices passed; the dedicated npm\n release (`31912844032`) and independent public readback (`31913903124`)\n succeeded. npm reports `latest=0.164.0`; the public tarball SHA-1 is\n `2d13836305c6841b7fe5bcd059bc8ef25127fc3d` and SHA-256 is\n `4d7f36f11bd2bfc1b85eee87392b74bd948e7cc33698cd35c87bff72fb3b4c16`."
|
|
14
27
|
}
|
|
15
28
|
]
|
|
16
29
|
},
|