chainlesschain 0.163.2 → 0.163.4
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 +3 -2
- package/scripts/command-lifecycle-report.mjs +330 -38
- package/src/assets/web-panel/assets/{AIOps-DnGsmsqJ.js → AIOps-DB5X7qqV.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CrO6fcQ7.js → ActionButton-DxHRtKLk.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DsBdOaP2.js → Analytics-DIH5QrxT.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DmQslKUB.js → AppLayout-uu0oxVz7.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-BvyrT_QQ.js → Artifacts-BNSMiW9Y.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-prndoLiC.js → Audit-DcAzB4_x.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-DOTFyA55.js → BackgroundAgents-ClSsvjIc.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-9zOnPp_8.js → Backup-BMciY0js.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-C4PC6sAG.js → BaseInput-Hn3b57Sh.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BBAF-W9v.js → Chat-CoSlC53V.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CWhvvloO.js → ChatBubbleRenderer-CFevJ3So.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BI9iculd.js → Checkbox-B4L4Eu4w.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-3DP9BCKb.js → Codegen-C77FgRxF.js} +1 -1
- package/src/assets/web-panel/assets/{Col-df-2TnJX.js → Col-BrLtJLH3.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CHs8gG_A.js → Community-Be7pXXhA.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CDfF6q7V.js → Compact-DuGPecjo.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CthrDnO7.js → Compliance-CzS66mjP.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-HjIqsWJw.js → Cowork-CEhjCoyK.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-BKc196fb.js → Cron-D7ir8Vja.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CJnjdc8W.js → Crosschain-BcXmuLxf.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BHUy-8Q2.js → DID-Cto1dtBy.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-QDB7sKeY.js → Dashboard-B7KjgwOX.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DStcVK11.js → Dropdown-COMqxijg.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BwSUskMJ.js → EmailListRenderer-BZrya-nf.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DgF_kurT.js → FamilyGuardDashboard-AmVeMq0J.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-k8wvv-wN.js → Federation-kZU8c-27.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-C11qoq2r.js → FormItemContext-sOV22v2-.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BIIpr9kg.js → GenericCardRenderer-BUuLtGCz.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BlA1exTe.js → Git-K-ZxsLsH.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CYa1ZYM4.js → Governance-D3OEnawI.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-6_kKVIt6.js → Inference-Bll0gRmP.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CB4AwxYy.js → KnowledgeGraph-DBXwjr53.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-xf7nHFAe.js → Logs-CEzPwEfP.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-Bf3DEqP6.js → MarkdownRenderer-CLmCbHx6.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-aPg8e4Jt.js → Marketplace-BYyRyOPz.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-C-TNlVUf.js → McpTools-DVu8w_rM.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-DMTPIpGa.js → Memory-tenuZ_hO.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BxyvveRq.js → MobileBridge-Bxgy4ozS.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-DyPCrAyQ.js → MobileProjects-Dgx1D6sc.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BdhqNXp6.js → Mtc-CRfJ8r8j.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-Cz-HFxzW.js → MtcAudit-BBJq4Aiz.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CIUaFNsx.js → Multisig-B3ii9lai.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CWe6-J17.js → NLProgramming-FIi-Cubv.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-vYAKeviU.js → Notes-DIq8MPf1.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DQL9-2d7.js → NotificationSettings-BFOD9eGd.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DnXj1jBn.js → OrderTableRenderer--41u7vre.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-B3spU8AN.js → Organization-B_0AWztW.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-DgEwo7vm.js → Overflow-B6I7TuXv.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-hujMRH8X.js → P2P-Cdf6qens.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-C_qhdg9h.js → PdhVaultBrowser-B_0FcQJY.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-vp7LMcSf.js → Permissions-6nFBjsQp.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-Dxr5Hgnq.js → PersonalDataHub-nQYV7xpn.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-DEPZqqH4.js → Pipeline-CBVod5jm.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DTpDiKPe.js → Privacy-D52jW1Nt.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-jDJsRWmF.js → ProjectInit-Bdx3BYhf.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-Dhor5RWH.js → ProjectSettings-b7xr4DUa.js} +2 -2
- package/src/assets/web-panel/assets/Projects-DhfifCKx.js +1 -0
- package/src/assets/web-panel/assets/Providers-Dy_PgDMr.js +1 -0
- package/src/assets/web-panel/assets/{QrScannerModal-CjIw-wIb.js → QrScannerModal-FQKSmc3e.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DX6jcqoi.js → QuickAsk-CSTrhzcF.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DopXkhar.js → Recommend-CxMABOUh.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BLvqJE9c.js → RemoteSession-Cv2T8yRa.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-DhRj2Me7.js → Reputation-CE1k4Vvu.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DQ53vuPq.js → Row-BNgNcAV_.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BslvwiBD.js → RssFeed-5ZiBZ3ph.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DJKBDNKZ.js → Search-mDOIF1UV.js} +1 -1
- package/src/assets/web-panel/assets/{Security-COhpxHER.js → Security-CtuCTC-e.js} +3 -3
- package/src/assets/web-panel/assets/{Services-dbulD6cI.js → Services-DxFO2Zg7.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-ciIVNfhC.js → Skeleton-CKmKkH9y.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-AiRTkTCk.js → Skills-Bmzl9qkk.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DDMcWYBc.js → Sla-9RqaWHOC.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BPxWbpXO.js → SpeechSettings-CGdzFIYw.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BoEOXCyg.js → SyncSettings-CvNuCeBT.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-B_sLdcnw.js +1 -0
- package/src/assets/web-panel/assets/{Templates-UowY8Ixe.js → Templates-D9_YijdK.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DauSLQXN.js → Tenant-Cuc7BUSP.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DBj7Jneq.js → Terminal-6VYRnJgd.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-UMrPwoZC.js → TimelineRenderer-GtK8xd8Y.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-4ea96-bn.js → Tokens-BZ94Lt5W.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger--ISCqt4b.js → Trigger-DEcZgDaX.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-D4GVimRJ.js → Trust-CC3z9THe.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Ci-nXRQc.js → UkeySign-Cvtw8cV3.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Cjk7mKPw.js → VideoEditing-CL4e6Bn3.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BgOLOO3Z.js → Wallet-ycEemP27.js} +2 -2
- package/src/assets/web-panel/assets/{WebAuthn-CCX0K29i.js → WebAuthn-DgZ4X_aw.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-Ch3zgIsE.js → WorkflowEditor-D0qMhSv7.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DKOU_2Vb.js → chat-DsAg01Zn.js} +1 -1
- package/src/assets/web-panel/assets/{colors-6OVo4u3C.js → colors-B0oqAhrQ.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BH78Hlsq.js → compact-item-CmX0Rabz.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CFRpSbbC.js → createContext-Be4cn1Ub.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CP2qzG6D.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DNQhgcVi.js → hasIn-D5v12kVq.js} +1 -1
- package/src/assets/web-panel/assets/{index-BkN3iTTp.js → index-0eWLkQKT.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkNEMANR.js → index-301ogenv.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3RtTT4K.js → index-5LGY0JbG.js} +1 -1
- package/src/assets/web-panel/assets/{index-dDkoL4Pe.js → index-7VKDn-t1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHa4WyTZ.js → index-8WvYGnON.js} +1 -1
- package/src/assets/web-panel/assets/{index-CaYqY35Z.js → index-B1YGjOWC.js} +1 -1
- package/src/assets/web-panel/assets/{index-bKm3TUDp.js → index-B3mUHuVc.js} +1 -1
- package/src/assets/web-panel/assets/{index--rq90rL9.js → index-BA4oulaP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaDgdJYj.js → index-BBREnn1V.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_Z-YoxX.js → index-BBvyHguy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkqHgG-b.js → index-BKmsS2jj.js} +1 -1
- package/src/assets/web-panel/assets/{index-CrcLHN2F.js → index-BRIqLy1m.js} +1 -1
- package/src/assets/web-panel/assets/{index-BaVE6E8y.js → index-BXGSbelg.js} +3 -3
- package/src/assets/web-panel/assets/{index-BYrnm5Ob.js → index-BaE0Ui07.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDSR7ecX.js → index-BoAIAZ5C.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNuCHHQT.js → index-BqltWojQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Eag8e_mA.js → index-CGiIyTZw.js} +1 -1
- package/src/assets/web-panel/assets/index-CKB0vbJU.js +1 -0
- package/src/assets/web-panel/assets/{index-BepBTpa8.js → index-CZ2wUEgr.js} +1 -1
- package/src/assets/web-panel/assets/{index-HNGGVF6o.js → index-CZpfzcuy.js} +1 -1
- package/src/assets/web-panel/assets/{index-AuBhLqOm.js → index-Ckrk3pIV.js} +1 -1
- package/src/assets/web-panel/assets/{index-7TC3S8SN.js → index-CqoCZ5vR.js} +1 -1
- package/src/assets/web-panel/assets/{index-CFPJ8yzF.js → index-CyWBir7N.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bb6kDrUx.js → index-CyyGTMKd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DKN2noIF.js → index-D0BSkxYQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Du0rnksC.js → index-D5YVopyr.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxRy5LPR.js → index-DKUBj36_.js} +1 -1
- package/src/assets/web-panel/assets/{index-sm7W8AXy.js → index-DM724NgU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BujsOZfc.js → index-DQRsQen0.js} +1 -1
- package/src/assets/web-panel/assets/index-DgoXmwqB.js +1 -0
- package/src/assets/web-panel/assets/{index-Y9MJv28e.js → index-DikJ0Qqe.js} +1 -1
- package/src/assets/web-panel/assets/{index-caye7AOE.js → index-Dn2dSdXx.js} +1 -1
- package/src/assets/web-panel/assets/{index-cdf7fd7d.js → index-DyUaFWEk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnnXQot_.js → index-Hfe_dEGx.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvHGtNnF.js → index-_JjRLSD0.js} +1 -1
- package/src/assets/web-panel/assets/{index-nbfHl1oV.js → index-frSojpHj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cu3L4r5l.js → index-jK3ax6Z6.js} +1 -1
- package/src/assets/web-panel/assets/{index-D84id2Y4.js → index-qMuZ-NRR.js} +1 -1
- package/src/assets/web-panel/assets/{index-hPY0fFrd.js → index-q_fQ94SE.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BZ9w6jPL.js → initDefaultProps-D4VdhJ9_.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BnwUiOho.js → motion-CZJA0MQW.js} +1 -1
- package/src/assets/web-panel/assets/{move-ByUKJnNm.js → move-BqEs7Sb1.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-V7yK1KEl.js → mtc-parser-BpHEtsu1.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BEXBBt4j.js → omit-BW94tY9W.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-qDm_46Gi.js → pickAttrs-BnBjPWP9.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BIbhEo_0.js → placementArrow-uUkjQ_hu.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-NbPbDgA_.js → responsiveObserve-B-klUqXK.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BnUWglZ0.js → slide-CvY1cNAs.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BX8_wZI5.js → statusUtils-Ix5sEDT2.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BV4OycQX.js → styleChecker-C8qcXOne.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-Od_H5llY.js → useFlexGapSupport-KNF6Kj8f.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BWI-PyiX.js → useFs-DGJr345n.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BqMuhG3g.js → usePersonalDataHub-BboN99rI.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DNd23z6f.js → vnode-Bgt8Vgte.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Cjaxnm7l.js → zoom-BhJtErgt.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +2 -2
- package/src/commands/agenda.js +6 -5
- package/src/commands/agent.js +237 -75
- package/src/commands/agents.js +6 -0
- package/src/commands/artifacts.js +98 -0
- package/src/commands/background-session.js +11 -1
- package/src/commands/mcp.js +218 -31
- package/src/commands/review.js +221 -22
- package/src/commands/session-mcp-recovery.js +5 -5
- package/src/data/changelog.json +27 -1
- package/src/gateways/ws/ws-agent-handler.js +492 -14
- package/src/harness/jsonl-session-store.js +39 -1
- package/src/harness/mcp-client.js +414 -71
- package/src/harness/prompt-compressor.js +24 -0
- package/src/harness/provider-backed-compaction.js +205 -0
- package/src/harness/worktree-isolator.js +26 -3
- package/src/lib/agent-worktree.js +41 -2
- package/src/lib/app-preview.js +3 -0
- package/src/lib/background-agent-supervisor.js +790 -186
- package/src/lib/background-command-argv.js +318 -0
- package/src/lib/background-launch-profile.js +1 -0
- package/src/lib/background-phase-reporter.js +22 -2
- package/src/lib/background-worktree-policy.js +109 -0
- package/src/lib/command-lifecycle-report.js +1340 -145
- package/src/lib/cowork-mcp-tools.js +51 -6
- package/src/lib/cowork-task-runner.js +1 -0
- package/src/lib/delivery-coordinator.js +30 -5
- package/src/lib/delivery-production-adapter.js +1777 -0
- package/src/lib/delivery-production-runner.js +240 -0
- package/src/lib/durable-security-store.js +29 -17
- package/src/lib/execution-trace/trace-context.cjs +179 -0
- package/src/lib/execution-trace/trace-context.js +8 -175
- package/src/lib/mcp-call-ledger-store.js +58 -6
- package/src/lib/mcp-headers-helper.js +76 -8
- package/src/lib/mcp-host-recovery-runtime.js +2 -0
- package/src/lib/mcp-ledger-recovery-admission.js +39 -3
- package/src/lib/mcp-recovery-adjudication.js +256 -19
- package/src/lib/mcp-sandbox-policy.js +184 -0
- package/src/lib/mcp-stdio-capsule-builder-worker.cjs +495 -0
- package/src/lib/mcp-stdio-executable-identity.js +33 -2
- package/src/lib/mcp-stdio-execution-authority.js +163 -0
- package/src/lib/mcp-stdio-immutable-vfs-resolver.cjs +830 -0
- package/src/lib/mcp-stdio-package-materialization.js +721 -333
- package/src/lib/mcp-stdio-workspace-authority.js +252 -0
- package/src/lib/observability/index.js +2 -0
- package/src/lib/observability/otlp-exporter.js +2 -2
- package/src/lib/packer/pack-update-applier.js +8 -1
- package/src/lib/packer/pkg-config-generator.js +34 -0
- package/src/lib/plugin-runtime/sandbox-policy.js +42 -2
- package/src/lib/process-execution-broker/index.js +213 -109
- package/src/lib/process-execution-broker/platform-sandbox.js +1024 -169
- package/src/lib/process-tree-termination.js +17 -1
- package/src/lib/scheduler-kernel/contract.js +315 -0
- package/src/lib/scheduler-kernel/store.js +1345 -0
- package/src/lib/session-host-lease.js +403 -30
- package/src/lib/session-persistence-failure.js +4 -1
- package/src/lib/skill-mcp.js +65 -4
- package/src/lib/sub-agent-context.js +8 -0
- package/src/lib/web-fetch.js +4 -4
- package/src/repl/agent-repl.js +285 -38
- package/src/runtime/agent-core.js +1044 -90
- package/src/runtime/agent-runtime.js +61 -8
- package/src/runtime/headless-runner.js +260 -166
- package/src/runtime/headless-stream.js +254 -25
- package/src/runtime/mcp-config.js +235 -28
- package/src/workers/background-agent-worker.js +492 -71
- package/src/assets/web-panel/assets/Projects-08xUDZGt.js +0 -1
- package/src/assets/web-panel/assets/Providers-BGs47s1a.js +0 -1
- package/src/assets/web-panel/assets/Tasks-CEYFJwmr.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DEMblAIm.js +0 -1
- package/src/assets/web-panel/assets/index-BTvq-36D.js +0 -1
- package/src/assets/web-panel/assets/index-hUpvk6Jl.js +0 -1
|
@@ -19,12 +19,29 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @module cowork-mcp-tools
|
|
21
21
|
*/
|
|
22
|
+
import { isProxy } from "node:util/types";
|
|
22
23
|
import { validateMcpServerConfig } from "./skill-mcp.js";
|
|
23
24
|
import { mcpEffectDescriptorFields } from "./mcp-effect-contract.js";
|
|
24
25
|
import {
|
|
25
26
|
MCP_STDIO_LOCAL_CODE_TRUST_REQUIRED_CODE,
|
|
26
27
|
issueMcpStdioExecutionAuthority,
|
|
27
28
|
} from "./mcp-stdio-execution-authority.js";
|
|
29
|
+
import {
|
|
30
|
+
currentHostHooksV2WorkspaceBinding,
|
|
31
|
+
registerHostHooksV2Workspace,
|
|
32
|
+
resolveHostHooksV2WorkspaceBinding,
|
|
33
|
+
} from "./hooks-v2-workspace-context.js";
|
|
34
|
+
|
|
35
|
+
function safeServerName(entry) {
|
|
36
|
+
if (!entry || typeof entry !== "object" || isProxy(entry)) return "(invalid)";
|
|
37
|
+
const descriptor = Object.getOwnPropertyDescriptor(entry, "name");
|
|
38
|
+
return descriptor &&
|
|
39
|
+
"value" in descriptor &&
|
|
40
|
+
typeof descriptor.value === "string" &&
|
|
41
|
+
descriptor.value.length > 0
|
|
42
|
+
? descriptor.value
|
|
43
|
+
: "(invalid)";
|
|
44
|
+
}
|
|
28
45
|
|
|
29
46
|
export const _deps = {
|
|
30
47
|
importMcpClient: async () => {
|
|
@@ -121,12 +138,31 @@ export async function mountTemplateMcpTools(template, opts = {}) {
|
|
|
121
138
|
: [];
|
|
122
139
|
if (declared.length === 0) return empty;
|
|
123
140
|
|
|
124
|
-
const validated = declared
|
|
125
|
-
.map((entry) => validateMcpServerConfig(entry))
|
|
126
|
-
.filter(Boolean);
|
|
127
|
-
if (validated.length === 0) return empty;
|
|
128
|
-
|
|
129
141
|
const skipped = [];
|
|
142
|
+
const validated = [];
|
|
143
|
+
for (const entry of declared) {
|
|
144
|
+
try {
|
|
145
|
+
const normalized = validateMcpServerConfig(entry);
|
|
146
|
+
if (normalized) validated.push(normalized);
|
|
147
|
+
} catch (error) {
|
|
148
|
+
const name = safeServerName(entry);
|
|
149
|
+
const message = error?.message || String(error);
|
|
150
|
+
skipped.push({ name, error: message });
|
|
151
|
+
opts.onWarn?.(`[cowork-mcp] Skipped "${name}": ${message}`, error);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (validated.length === 0) return { ...empty, skipped };
|
|
155
|
+
|
|
156
|
+
const workspaceBinding = opts.workspaceRoot
|
|
157
|
+
? registerHostHooksV2Workspace(opts.workspaceRoot)
|
|
158
|
+
: opts.workspaceBinding || currentHostHooksV2WorkspaceBinding();
|
|
159
|
+
const resolvedWorkspace = workspaceBinding
|
|
160
|
+
? resolveHostHooksV2WorkspaceBinding(workspaceBinding)
|
|
161
|
+
: null;
|
|
162
|
+
if (workspaceBinding && !resolvedWorkspace) {
|
|
163
|
+
throw new TypeError("Cowork MCP workspace authority is invalid or stale");
|
|
164
|
+
}
|
|
165
|
+
|
|
130
166
|
const authorized = [];
|
|
131
167
|
for (const server of validated) {
|
|
132
168
|
let approved = false;
|
|
@@ -141,6 +177,7 @@ export async function mountTemplateMcpTools(template, opts = {}) {
|
|
|
141
177
|
runtimeKind: server.runtimeKind || null,
|
|
142
178
|
cwd: server.cwd || null,
|
|
143
179
|
envKeys: Object.keys(server.env || {}).sort(),
|
|
180
|
+
sandboxPolicy: server.sandboxPolicy || null,
|
|
144
181
|
})) === true;
|
|
145
182
|
} catch (error) {
|
|
146
183
|
const message = error?.message || String(error);
|
|
@@ -163,13 +200,21 @@ export async function mountTemplateMcpTools(template, opts = {}) {
|
|
|
163
200
|
config,
|
|
164
201
|
approvalKind: "explicit-config",
|
|
165
202
|
approvalSource: `cowork-template:${template?.id || "unknown"}:${server.name}`,
|
|
203
|
+
workspaceBinding,
|
|
166
204
|
});
|
|
167
205
|
authorized.push(config);
|
|
168
206
|
}
|
|
169
207
|
if (authorized.length === 0) return { ...empty, skipped };
|
|
170
208
|
|
|
171
209
|
const MCPClient = await _deps.importMcpClient();
|
|
172
|
-
const mcpClient = new MCPClient(
|
|
210
|
+
const mcpClient = new MCPClient(
|
|
211
|
+
resolvedWorkspace
|
|
212
|
+
? {
|
|
213
|
+
workspaceBinding,
|
|
214
|
+
roots: [resolvedWorkspace.workspaceRoot],
|
|
215
|
+
}
|
|
216
|
+
: {},
|
|
217
|
+
);
|
|
173
218
|
const mounted = [];
|
|
174
219
|
const extraToolDefinitions = [];
|
|
175
220
|
const externalToolDescriptors = {};
|
|
@@ -465,6 +465,7 @@ export async function runCoworkTask(options = {}) {
|
|
|
465
465
|
|
|
466
466
|
// Mount template-declared MCP servers (best-effort, failures are tolerated)
|
|
467
467
|
const mcp = await mountTemplateMcpTools(template, {
|
|
468
|
+
workspaceRoot: cwd,
|
|
468
469
|
approveLocalCodeExecution: approveMcpLocalCodeExecution,
|
|
469
470
|
onWarn: (msg) => {
|
|
470
471
|
if (onProgress) onProgress({ type: "mcp-warning", message: msg });
|
|
@@ -719,34 +719,37 @@ export function createDeliveryFlow(config = {}, { now } = {}) {
|
|
|
719
719
|
}
|
|
720
720
|
|
|
721
721
|
function actionPayload(state, action, payload, now) {
|
|
722
|
+
const callerPayload = jsonClone(payload || {});
|
|
722
723
|
const common = {
|
|
723
724
|
flowId: state.flowId,
|
|
724
725
|
revision: state.revision,
|
|
725
726
|
commitSha: state.commitSha,
|
|
726
727
|
diffDigest: state.diff?.digest || null,
|
|
728
|
+
baseCommitSha: state.diff?.baseCommitSha || null,
|
|
729
|
+
changedFiles: jsonClone(state.diff?.changedFiles || []),
|
|
727
730
|
};
|
|
728
731
|
if (action === DELIVERY_ACTION.RUN_GATES) {
|
|
729
732
|
return {
|
|
733
|
+
...callerPayload,
|
|
730
734
|
...common,
|
|
731
735
|
gateSelection: state.gateSelection,
|
|
732
736
|
requiredGates: state.requiredGates,
|
|
733
|
-
...jsonClone(payload || {}),
|
|
734
737
|
};
|
|
735
738
|
}
|
|
736
739
|
if (action === DELIVERY_ACTION.RUN_PREVIEW) {
|
|
737
740
|
return {
|
|
741
|
+
...callerPayload,
|
|
738
742
|
...common,
|
|
739
743
|
changedFiles: state.diff?.changedFiles || [],
|
|
740
|
-
...jsonClone(payload || {}),
|
|
741
744
|
};
|
|
742
745
|
}
|
|
743
746
|
if (action === DELIVERY_ACTION.APPLY_FIX) {
|
|
744
747
|
return {
|
|
748
|
+
...callerPayload,
|
|
745
749
|
...common,
|
|
746
750
|
round: state.round + 1,
|
|
747
751
|
failures: state.failures,
|
|
748
752
|
review: state.review?.report || null,
|
|
749
|
-
...jsonClone(payload || {}),
|
|
750
753
|
};
|
|
751
754
|
}
|
|
752
755
|
if (action === DELIVERY_ACTION.PUBLISH_EVIDENCE) {
|
|
@@ -754,13 +757,26 @@ function actionPayload(state, action, payload, now) {
|
|
|
754
757
|
now: isoNow(now),
|
|
755
758
|
});
|
|
756
759
|
return {
|
|
760
|
+
...callerPayload,
|
|
757
761
|
...common,
|
|
758
762
|
record,
|
|
759
763
|
readiness: assessDeliveryEvidence(record),
|
|
760
|
-
...jsonClone(payload || {}),
|
|
761
764
|
};
|
|
762
765
|
}
|
|
763
|
-
|
|
766
|
+
if (action === DELIVERY_ACTION.MERGE) {
|
|
767
|
+
return {
|
|
768
|
+
...callerPayload,
|
|
769
|
+
...common,
|
|
770
|
+
pr: jsonClone(state.pr),
|
|
771
|
+
evidence: state.evidence
|
|
772
|
+
? {
|
|
773
|
+
recordDigest: state.evidence.record?.recordDigest || null,
|
|
774
|
+
artifact: jsonClone(state.evidence.artifact),
|
|
775
|
+
}
|
|
776
|
+
: null,
|
|
777
|
+
};
|
|
778
|
+
}
|
|
779
|
+
return { ...callerPayload, ...common };
|
|
764
780
|
}
|
|
765
781
|
|
|
766
782
|
export function requestDeliveryAction(
|
|
@@ -941,6 +957,15 @@ function settleFix(state, result) {
|
|
|
941
957
|
? jsonClone(result.changedFiles)
|
|
942
958
|
: state.diff.changedFiles,
|
|
943
959
|
};
|
|
960
|
+
// A fixer can touch files outside the original analyzer corpus. Until a new
|
|
961
|
+
// complete impact analysis is supplied, reruns conservatively expand to the
|
|
962
|
+
// authoritative full required-gate matrix instead of reusing stale impact
|
|
963
|
+
// selection evidence.
|
|
964
|
+
state.gateSelection = selectImpactedGates({
|
|
965
|
+
changedFiles: state.diff.changedFiles,
|
|
966
|
+
requiredGates: state.requiredGates,
|
|
967
|
+
analysis: {},
|
|
968
|
+
});
|
|
944
969
|
state.gateResults = [];
|
|
945
970
|
state.previewArtifacts = [];
|
|
946
971
|
state.review = null;
|