chainlesschain 0.163.8 → 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 +7 -4
- package/scripts/macos-mcp-launcher-build.mjs +317 -0
- package/scripts/macos-mcp-launcher-postinstall.sh +54 -0
- package/scripts/macos-mcp-launcher-preinstall.sh +61 -0
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-CavM7W3k.js → AIOps-CYxFDrcm.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CUvZGabQ.js → ActionButton-CPBtdiU2.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DeBnWnbe.js → Analytics-Dayq7Dp7.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DbI5kxvd.js → AppLayout-6U7bPb2s.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-D93bigKm.js → Artifacts-D2Iqg_3D.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CBNvfUZa.js → Audit-CdoOB7WV.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CJLyh_YU.js → BackgroundAgents-DrnAVB8w.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D_0yoehD.js → Backup-CesMi5cy.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-TJxmbObW.js → BaseInput-DaX9ptax.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CE0dto1q.js → Chat-OrwOPxDS.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CZ5-yYiD.js → ChatBubbleRenderer-CvPZFRxM.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-Ck1RVIVo.js → Checkbox-DiHbcysC.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-qpoyf6DK.js → Codegen-CbgCkaBJ.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DUyPWjIE.js → Col-Du5hgrh4.js} +1 -1
- package/src/assets/web-panel/assets/{Community-D_S1BemS.js → Community-DsPOBW-p.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BjxeK-Gc.js → Compact-BwHIFkNC.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-Dd3CEJsu.js → Compliance-BvrDQSgd.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-B4QG7-ad.js → Cowork-gwAE6arx.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-BtZnids5.js → Cron-DW-0l4uF.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CHPfCBFD.js → Crosschain-j-NsLesB.js} +1 -1
- package/src/assets/web-panel/assets/{DID-DT8DCEOK.js → DID-CibVEBOI.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-COQab5_U.js → Dashboard-W4z9vSfe.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BY1PsQuU.js → Dropdown-DAcrkKxG.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CsuAuaq3.js → EmailListRenderer-6GXah-89.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BqpinD-j.js → FamilyGuardDashboard-TKDCq8Ku.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-D0gkfQFv.js → Federation-BXBLlcNm.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BqgE-axK.js → FormItemContext-BoJJBkG3.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D0hJ2KvC.js → GenericCardRenderer-okjsl46v.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CmMB0uPY.js → Git-Rvs7i6nn.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BnVEI0Dk.js → Governance-CHSUxXXS.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-YTAMihRP.js → Inference-V3BlfxsB.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-0ax7VHop.js → KnowledgeGraph-C_NlD4aR.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-B9TRcokL.js → Logs-Nn4LNxhA.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-SVAgNnkt.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-B6CSuD_H.js → Marketplace-DEmjFcg-.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CjMXvOVU.js → McpTools-DlopXipI.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CXRF71U3.js → Memory-BG3ynX60.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DQgNp_oS.js → MobileBridge-DeRzWOfT.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-DlPwcCbq.js → MobileProjects-Tyd3o2A0.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-6hDTRPe1.js → Mtc-BoPbOv1C.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BlVHU1DS.js → MtcAudit-un-rTHp7.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-DP9pzEbV.js → Multisig-Ds0oveEB.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Djorh8EV.js → NLProgramming-D09JI-yY.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-oLZ-JkUg.js → Notes-DTRhiKJn.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-Cg288VH3.js → NotificationSettings-BAnnNCim.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Yr-1fSYi.js +1 -0
- package/src/assets/web-panel/assets/{Organization-CBdo-bHs.js → Organization-S9EAolpj.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-qZdnVumx.js → Overflow-CqcLKqJ8.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-D4kNfGNQ.js → P2P-Dw0F9EcU.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-DnlMemM7.js → PdhVaultBrowser-BDRwUevN.js} +5 -5
- package/src/assets/web-panel/assets/{Permissions-DHucHFBJ.js → Permissions-D3_c3nKB.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BovlOIPR.js → PersonalDataHub-CxdMV98x.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-Deru3CQY.js → Pipeline-CgjNQFLI.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Bq5oTTbU.js → Privacy-BHghIIht.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BfzxVWAz.js → ProjectInit-De6pqaKM.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CKC6XBtH.js → ProjectSettings-Bg4ZkNYQ.js} +2 -2
- package/src/assets/web-panel/assets/Projects-CP8vPvzs.js +1 -0
- package/src/assets/web-panel/assets/{Providers-C_jx4TWX.js → Providers-CUnHbNf-.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-BdIHeVGC.js → QrScannerModal-DA2f3Wts.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-BwZwAcPD.js → QuickAsk-C1FeHDqp.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-BNTt0L-m.js → Recommend-B5guaUMN.js} +1 -1
- package/src/assets/web-panel/assets/RemoteSession-PDADSds3.js +5 -0
- package/src/assets/web-panel/assets/{Reputation-D6VpG32B.js → Reputation-eTlRhgvK.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D_74OvQQ.js → Row-D7AqSGY0.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BTr0a-BQ.js → RssFeed-JiuLm4Ja.js} +3 -3
- package/src/assets/web-panel/assets/{Search-C3MCFoNU.js → Search-CwruahW3.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CqW9aJ6s.js → Security-CdhqaR0b.js} +4 -4
- package/src/assets/web-panel/assets/{Services-Cw5GNaHF.js → Services-CU0ZIlcT.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DZps5qeY.js → Skeleton-CtduPfAb.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-C6NQ1znT.js → Skills-CROXm6AY.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DFP8G2Sh.js → Sla-DiZiABFD.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-ESt6MB6v.js → SpeechSettings-B5pLcXUw.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BHnN98aM.js → SyncSettings-DBX6J1Oe.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-NiSCaOf-.js → Tasks-BLyRJd3-.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DsKFhW2C.js → Templates-BKa5qzmk.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CQ0E0ze5.js → Tenant-DnD3a4M6.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-D_rBu_by.js → Terminal-DEitQeTb.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-D3Vm4Po4.js → TimelineRenderer-CjHggTDq.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-DNTxRH6q.js → Tokens-CsGT7sfl.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-Dgprz1ms.js → Trigger-yr4rFDrW.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-B2rUnVBD.js → Trust-CLvu1Sjp.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DEGQNc6_.js → UkeySign-B0m7yUP8.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-jlsAx3Eh.js → VideoEditing-C0VvP4lc.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-8jQih1ij.js → Wallet-kllBAG1M.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-XLeO6xIB.js → WebAuthn-C54UQNLx.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-De_dgDAG.js → WorkflowEditor-B7y8qSvU.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CI19R_Sk.js → chat-DRzTh8CJ.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DsYTOYN3.js → colors-BSMwSnCx.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CM3-t_Qr.js → compact-item-BTg602H5.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BjxlBRZv.js → createContext-B6EGsdvp.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Dol8jLEP.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-RDaWX_4i.js → hasIn-DDKqJ8RD.js} +1 -1
- package/src/assets/web-panel/assets/{index-nAH87mQP.js → index-323Hhxxt.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIUnNOjG.js → index-BICn3Qh1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DyIWssPC.js → index-BMuGd2--.js} +1 -1
- package/src/assets/web-panel/assets/{index-DX7tuWVJ.js → index-BRqt4fO-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cd3euP_4.js → index-BVTAl5N2.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cpqm1qfU.js → index-BsR7Y2NG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcPFB8qJ.js → index-Bx044qDj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cd9OJhHG.js → index-C1GFfuqN.js} +1 -1
- package/src/assets/web-panel/assets/index-C3QX5tOl.js +1 -0
- package/src/assets/web-panel/assets/{index-B-Z8eFUJ.js → index-C66NpWy5.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlT2VAEK.js → index-CDTvsX8t.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dsij_KsN.js → index-CGNklbP6.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4gkzxkw.js → index-CHfLYwcW.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6sm5-Xq.js → index-CNxg61YP.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0yx-jtQ.js → index-CQlHFN_g.js} +1 -1
- package/src/assets/web-panel/assets/{index-CjTrRt13.js → index-CUEU48o1.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7WBt_4T.js → index-CWGax2QW.js} +1 -1
- package/src/assets/web-panel/assets/{index-IeiL9RKc.js → index-C_JzIXUq.js} +1 -1
- package/src/assets/web-panel/assets/{index-CnHH7bnD.js → index-Cf23wVMs.js} +1 -1
- package/src/assets/web-panel/assets/{index-BKJr-TZp.js → index-CmAInUkX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiECJi-Q.js → index-CmAubjDi.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCnZyIMA.js → index-Co7oM1qr.js} +1 -1
- package/src/assets/web-panel/assets/{index-Drlnwr8F.js → index-CwPUZbMI.js} +1 -1
- package/src/assets/web-panel/assets/{index-9R6BxAr0.js → index-D1naNj4U.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGqqJfL0.js → index-D5CsBShd.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bi46Xu4u.js → index-DBT3YeQ9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXXtGMUJ.js → index-DLdrHhML.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0PMlbMs.js → index-Dc77VR3H.js} +1 -1
- package/src/assets/web-panel/assets/{index-D0zcy54x.js → index-Dfv2lKu3.js} +1 -1
- package/src/assets/web-panel/assets/{index-BN6UPD2E.js → index-DiW0sDkz.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dxge-xWl.js → index-DpTHIRfZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CyOGN6a5.js → index-DqFXGzzC.js} +1 -1
- package/src/assets/web-panel/assets/{index-B9O9YyWE.js → index-XFe-1twF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHNYPO0b.js → index-p2HYn89m.js} +3 -3
- package/src/assets/web-panel/assets/{index-CVQMeiwH.js → index-pqfux8vZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-pPL66J85.js → index-rjzk9z1Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-DoQA0-52.js → index-th2ihDc0.js} +1 -1
- package/src/assets/web-panel/assets/{index-B5REnKt8.js → index-u2YVld9W.js} +1 -1
- package/src/assets/web-panel/assets/index-xYybvEic.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-BTL88of4.js → initDefaultProps-C3Djh9fa.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BUB2pXwB.js → motion-BzqFmbSe.js} +1 -1
- package/src/assets/web-panel/assets/{move-egCkkOMm.js → move-DJo_FFaW.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DAWhZC8c.js → mtc-parser-_tlTiBvk.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CvOxe_6d.js → omit-CB2ZyxUg.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DZUSLZ5Z.js → pickAttrs-DZwIFD4u.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BERxGNMY.js → placementArrow-DxZY0dgk.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DZuDfZ9n.js → responsiveObserve-CzzGt7GL.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DO756sgI.js → slide-BaIK52yz.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BRQlIz28.js → statusUtils-3-FHu9_M.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DCSfdybl.js → styleChecker-BkRT68fK.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-LD8dWVve.js → useFlexGapSupport-DHYwKS-s.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BX9uW2LK.js → useFs-DVVUhV8p.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BPSlPuHU.js → usePersonalDataHub-CkrFKAzQ.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BmOILC9V.js → vnode-BuBLFz0c.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-1iKowKGg.js → zoom-kpm6LtXU.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +3 -3
- package/src/commands/cowork.js +418 -41
- package/src/commands/permissions.js +240 -16
- package/src/commands/plugin.js +1293 -56
- package/src/commands/session-location.js +276 -0
- package/src/commands/session.js +2 -0
- package/src/data/changelog.json +28 -2
- package/src/gateways/ws/action-protocol.js +316 -17
- package/src/gateways/ws/message-dispatcher.js +30 -0
- package/src/gateways/ws/remote-session-protocol.js +565 -35
- package/src/gateways/ws/ws-agent-handler.js +12 -0
- package/src/gateways/ws/ws-approval-gate.js +5 -0
- package/src/gateways/ws/ws-server.js +510 -50
- package/src/harness/jsonl-session-store.js +341 -24
- package/src/harness/mcp-client.js +8 -1
- package/src/harness/remote-session-audit.js +2 -0
- package/src/harness/remote-session-crypto.js +929 -21
- package/src/harness/remote-session-registry.js +945 -24
- package/src/harness/session-list-index.js +233 -14
- package/src/lib/agent-authority.js +6 -0
- package/src/lib/auto-mode-config.js +98 -3
- package/src/lib/background-agent-keeper-client.js +248 -0
- package/src/lib/background-agent-keeper-protocol.js +291 -0
- package/src/lib/background-agent-supervisor.js +1357 -85
- package/src/lib/background-interaction-resolver.js +12 -0
- package/src/lib/background-session-transport.js +23 -6
- package/src/lib/background-turn-bootstrap-protocol.js +190 -0
- package/src/lib/cowork-workflow.js +1188 -76
- package/src/lib/delivery-production-adapter.js +38 -2
- package/src/lib/dynamic-workflow-facade.js +1736 -0
- package/src/lib/execution-location-contract.js +551 -0
- package/src/lib/execution-location-runtime.js +130 -0
- package/src/lib/ide-context.js +94 -6
- package/src/lib/mcp-stdio-package-materialization.js +166 -14
- package/src/lib/packer/pkg-config-generator.js +2 -0
- package/src/lib/permission-authority.js +77 -0
- package/src/lib/permission-side-effect-center.js +495 -0
- package/src/lib/plugin-runtime/install.js +514 -13
- package/src/lib/plugin-runtime/marketplace-artifact-readback.js +900 -0
- package/src/lib/plugin-runtime/marketplace-catalog.js +1181 -0
- package/src/lib/plugin-runtime/marketplace-impact.js +408 -0
- package/src/lib/plugin-runtime/marketplace-remote-artifacts.js +1567 -0
- package/src/lib/plugin-security.js +60 -3
- package/src/lib/process-execution-broker/index.js +1095 -57
- package/src/lib/process-execution-broker/linux-bwrap-descriptor-launch.js +375 -0
- package/src/lib/process-execution-broker/linux-generic-bwrap-runtime.js +90 -16
- package/src/lib/process-execution-broker/linux-generic-bwrap.js +159 -18
- package/src/lib/process-execution-broker/macos-mcp-launcher-contract.js +278 -0
- package/src/lib/process-execution-broker/macos-mcp-launcher-protocol.json +23 -0
- package/src/lib/process-execution-broker/macos-mcp-launcher.c +1497 -0
- package/src/lib/process-execution-broker/mcp-fd-entry-bootstrap.js +37 -0
- package/src/lib/process-execution-broker/platform-sandbox.js +2330 -279
- package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
- package/src/lib/process-execution-broker/windows-sandbox.cs +50 -4
- package/src/lib/public-ide-capability-manifest.js +3 -0
- package/src/lib/remote-approval-bridge.js +777 -34
- package/src/lib/remote-control.js +2 -0
- package/src/lib/remote-membership-authority.js +632 -0
- package/src/lib/remote-membership-coordinator.js +2973 -0
- package/src/lib/remote-membership-host-store.js +1799 -0
- package/src/lib/runtime-provenance-ledger.js +171 -46
- package/src/lib/scoped-permission-store.js +369 -0
- package/src/lib/session-anti-rollback-anchor.js +262 -5
- package/src/lib/shell-approval.js +169 -6
- package/src/lib/sub-agent-context.js +4 -0
- package/src/lib/with-file-lock.js +73 -38
- package/src/lib/workflow-definition-contract.js +149 -0
- package/src/repl/agent-repl.js +111 -36
- package/src/repl/chat-repl.js +2 -0
- package/src/repl/clipboard-image.js +735 -16
- package/src/repl/ide-status.js +1 -1
- package/src/repl/prompt-interactions.js +59 -6
- package/src/repl/remote-approval.js +29 -7
- package/src/runtime/agent-core.js +1182 -155
- package/src/runtime/headless-runner.js +52 -30
- package/src/runtime/headless-stream.js +51 -28
- package/src/workers/background-agent-keeper.js +689 -0
- package/src/workers/background-agent-worker.js +365 -13
- package/src/workers/background-turn-bootstrap.js +170 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-yySN5YNM.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Bb1O3Ofr.js +0 -1
- package/src/assets/web-panel/assets/Projects-CMolGhae.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-Biyn2-Ro.js +0 -5
- package/src/assets/web-panel/assets/devWarning-S1ld2LwU.js +0 -1
- package/src/assets/web-panel/assets/index-Drz6yq0m.js +0 -1
- package/src/assets/web-panel/assets/index-uWiUs7S_.js +0 -1
|
@@ -65,6 +65,7 @@ import {
|
|
|
65
65
|
reconcileSideEffects,
|
|
66
66
|
classifyToolSideEffect,
|
|
67
67
|
} from "../lib/side-effect-ledger.js";
|
|
68
|
+
import { collectToolResourceIdentifiers } from "../lib/permission-side-effect-center.js";
|
|
68
69
|
import { DiffReviewFollowUpTracker } from "../lib/diff-review-follow-up.js";
|
|
69
70
|
import { SIDE_EFFECT_LEDGER_EVENT } from "../lib/side-effect-ledger-store.js";
|
|
70
71
|
import {
|
|
@@ -105,6 +106,7 @@ import {
|
|
|
105
106
|
exitCodeForEndReason,
|
|
106
107
|
} from "../lib/exit-codes.cjs";
|
|
107
108
|
import { isolationLevel } from "../lib/agent-sandbox.js";
|
|
109
|
+
import { captureAmbientExecutionLocation } from "../lib/execution-location-runtime.js";
|
|
108
110
|
import { createBackgroundPhaseReporter } from "../lib/background-phase-reporter.js";
|
|
109
111
|
import { createBackgroundInteractionClient } from "../lib/background-interaction-resolver.js";
|
|
110
112
|
import { withQuietStdout } from "./quiet-stdout.js";
|
|
@@ -738,34 +740,26 @@ async function runAgentHeadlessInWorkspace(
|
|
|
738
740
|
let permissionRules = hermeticExecution
|
|
739
741
|
? null
|
|
740
742
|
: options.permissionRules || null;
|
|
743
|
+
let permissionRulesProvider = hermeticExecution
|
|
744
|
+
? null
|
|
745
|
+
: options.permissionRulesProvider || null;
|
|
741
746
|
let managedSettings = null;
|
|
742
747
|
let settingsFiles = [];
|
|
743
748
|
if (!hermeticExecution) {
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
loaded.rules.deny.length;
|
|
759
|
-
permissionRules = total > 0 ? loaded.rules : null;
|
|
760
|
-
} else if (managedSettings) {
|
|
761
|
-
permissionRules = applyManagedPermissionPolicy(
|
|
762
|
-
permissionRules,
|
|
763
|
-
managedSettings,
|
|
764
|
-
);
|
|
765
|
-
}
|
|
766
|
-
} catch (error) {
|
|
767
|
-
if (error?.code === "CC_MANAGED_SETTINGS_INVALID") throw error;
|
|
768
|
-
// Preserve caller-provided rules; absent settings keep legacy behavior.
|
|
749
|
+
const { createPermissionRulesProvider, loadPermissionAuthority } =
|
|
750
|
+
await import("../lib/permission-authority.js");
|
|
751
|
+
const authorityOptions = {
|
|
752
|
+
cwd,
|
|
753
|
+
settingsFile: options.settingsFile,
|
|
754
|
+
managedSettingsFile: options.managedSettingsFile,
|
|
755
|
+
baseRules: options.permissionRules || null,
|
|
756
|
+
};
|
|
757
|
+
const loaded = loadPermissionAuthority(authorityOptions);
|
|
758
|
+
managedSettings = loaded.managed;
|
|
759
|
+
settingsFiles = Array.isArray(loaded.files) ? loaded.files : [];
|
|
760
|
+
permissionRules = loaded.hasRules ? loaded.rules : null;
|
|
761
|
+
if (!permissionRulesProvider) {
|
|
762
|
+
permissionRulesProvider = createPermissionRulesProvider(authorityOptions);
|
|
769
763
|
}
|
|
770
764
|
}
|
|
771
765
|
|
|
@@ -1466,6 +1460,8 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1466
1460
|
if (!hermeticExecution) {
|
|
1467
1461
|
try {
|
|
1468
1462
|
approvalGate = await getApprovalGate();
|
|
1463
|
+
approvalGate =
|
|
1464
|
+
approvalGate?.createSessionScope?.(sessionId) || approvalGate;
|
|
1469
1465
|
if (approvalGate && (options.permissionMode || "default") === "auto") {
|
|
1470
1466
|
// autoMode.decisions: user-configured riskLevel → allow/ask/deny
|
|
1471
1467
|
// classifier. Only wrap when settings actually customize the map so the
|
|
@@ -1489,6 +1485,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1489
1485
|
}
|
|
1490
1486
|
}
|
|
1491
1487
|
if (approvalGate) {
|
|
1488
|
+
approvalGate.setAuthorizationConsumer?.(null);
|
|
1492
1489
|
if (typeof approvalGate.setSessionPolicy === "function") {
|
|
1493
1490
|
approvalGate.setSessionPolicy(sessionId, perm.sessionPolicy);
|
|
1494
1491
|
}
|
|
@@ -1719,6 +1716,10 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1719
1716
|
provider,
|
|
1720
1717
|
model,
|
|
1721
1718
|
observabilityScope: options.observabilityScope,
|
|
1719
|
+
executionLocation: captureAmbientExecutionLocation({
|
|
1720
|
+
provider,
|
|
1721
|
+
model,
|
|
1722
|
+
}),
|
|
1722
1723
|
});
|
|
1723
1724
|
}
|
|
1724
1725
|
// Persist the expanded content so a resumed session faithfully replays
|
|
@@ -1982,6 +1983,18 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1982
1983
|
!options.permissionPromptTool
|
|
1983
1984
|
) {
|
|
1984
1985
|
try {
|
|
1986
|
+
if (
|
|
1987
|
+
!approvalGate ||
|
|
1988
|
+
typeof approvalGate.setConfirmer !== "function" ||
|
|
1989
|
+
typeof approvalGate.setAuthorizationConsumer !== "function" ||
|
|
1990
|
+
typeof approvalGate.consumeAuthorization !== "function"
|
|
1991
|
+
) {
|
|
1992
|
+
const error = new Error(
|
|
1993
|
+
"installed session-core cannot bind and consume durable remote approval",
|
|
1994
|
+
);
|
|
1995
|
+
error.code = "CC_REMOTE_APPROVAL_GATE_UNAVAILABLE";
|
|
1996
|
+
throw error;
|
|
1997
|
+
}
|
|
1985
1998
|
const { startHeadlessRemoteApproval } =
|
|
1986
1999
|
await import("../lib/remote-approval-bridge.js");
|
|
1987
2000
|
_remoteApproval = await (
|
|
@@ -1991,11 +2004,12 @@ async function runAgentHeadlessInWorkspace(
|
|
|
1991
2004
|
writeErr,
|
|
1992
2005
|
isText,
|
|
1993
2006
|
});
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
2007
|
+
approvalGate.setConfirmer(
|
|
2008
|
+
_bgPhase.wrapConfirmer(_remoteApproval.confirmer),
|
|
2009
|
+
);
|
|
2010
|
+
approvalGate.setAuthorizationConsumer(
|
|
2011
|
+
_remoteApproval.consumeAuthorization,
|
|
2012
|
+
);
|
|
1999
2013
|
} catch (err) {
|
|
2000
2014
|
// Remote approval could not come up → keep headless fail-closed rather
|
|
2001
2015
|
// than running un-gated; say why so the user can fix pairing.
|
|
@@ -2163,6 +2177,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2163
2177
|
hookDb: hermeticExecution ? null : db,
|
|
2164
2178
|
approvalGate: hermeticExecution ? null : approvalGate,
|
|
2165
2179
|
permissionRules: hermeticExecution ? null : permissionRules,
|
|
2180
|
+
permissionRulesProvider: hermeticExecution ? null : permissionRulesProvider,
|
|
2166
2181
|
settingsHooks: hermeticExecution ? null : settingsHooks,
|
|
2167
2182
|
// Seed the subagent-contract CEILING with this run's permission mode so a
|
|
2168
2183
|
// spawned sub-agent inherits/tightens from it (tighten-only): a
|
|
@@ -2758,6 +2773,12 @@ async function runAgentHeadlessInWorkspace(
|
|
|
2758
2773
|
// and countDuplicateCommittedEffects can measure `0` repeats.
|
|
2759
2774
|
meta: {
|
|
2760
2775
|
tool: event.tool,
|
|
2776
|
+
toolUseId: telemetryToolId,
|
|
2777
|
+
turnId: event.turn_id || null,
|
|
2778
|
+
resources: collectToolResourceIdentifiers(
|
|
2779
|
+
event.tool,
|
|
2780
|
+
event.args,
|
|
2781
|
+
),
|
|
2761
2782
|
idempotencyKey: operationIdempotencyKey({
|
|
2762
2783
|
tool: event.tool,
|
|
2763
2784
|
args: event.args,
|
|
@@ -3269,6 +3290,7 @@ async function runAgentHeadlessInWorkspace(
|
|
|
3269
3290
|
await cleanupDeadline.run("remote-approval", () =>
|
|
3270
3291
|
_remoteApproval?.close?.(),
|
|
3271
3292
|
);
|
|
3293
|
+
approvalGate?.setAuthorizationConsumer?.(null);
|
|
3272
3294
|
// settings.json Stop + SessionEnd hooks when the run finishes. Stop is the
|
|
3273
3295
|
// canonical async-hook trigger ("run the test suite at turn end"); fire its
|
|
3274
3296
|
// async hooks fire-and-forget, then settle so a fast background check can
|
|
@@ -60,6 +60,7 @@ import {
|
|
|
60
60
|
expandIdeMentions,
|
|
61
61
|
} from "../lib/ide-context.js";
|
|
62
62
|
import { detectVersionSkew, versionSkewMessage } from "../lib/version-skew.js";
|
|
63
|
+
import { captureAmbientExecutionLocation } from "../lib/execution-location-runtime.js";
|
|
63
64
|
import {
|
|
64
65
|
resolveAgentMcp,
|
|
65
66
|
resolvePermissionPromptTool,
|
|
@@ -114,6 +115,7 @@ import {
|
|
|
114
115
|
reconcileSideEffects,
|
|
115
116
|
classifyToolSideEffect,
|
|
116
117
|
} from "../lib/side-effect-ledger.js";
|
|
118
|
+
import { collectToolResourceIdentifiers } from "../lib/permission-side-effect-center.js";
|
|
117
119
|
import { DiffReviewFollowUpTracker } from "../lib/diff-review-follow-up.js";
|
|
118
120
|
import {
|
|
119
121
|
loadSideEffectLedger,
|
|
@@ -909,6 +911,12 @@ async function runTurn(
|
|
|
909
911
|
// and countDuplicateCommittedEffects can measure `0` repeats.
|
|
910
912
|
meta: {
|
|
911
913
|
tool: event.tool,
|
|
914
|
+
toolUseId: toolUseId || null,
|
|
915
|
+
turnId: event.turn_id || null,
|
|
916
|
+
resources: collectToolResourceIdentifiers(
|
|
917
|
+
event.tool,
|
|
918
|
+
event.args,
|
|
919
|
+
),
|
|
912
920
|
idempotencyKey: operationIdempotencyKey({
|
|
913
921
|
tool: event.tool,
|
|
914
922
|
args: event.args,
|
|
@@ -1608,33 +1616,27 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
1608
1616
|
// .claude/settings.json permission rules (deny > ask > allow); see
|
|
1609
1617
|
// runAgentHeadless for the full semantics. null = no file → unchanged.
|
|
1610
1618
|
let permissionRules = options.permissionRules || null;
|
|
1619
|
+
let permissionRulesProvider = options.permissionRulesProvider || null;
|
|
1611
1620
|
let managedSettings = null;
|
|
1612
1621
|
let settingsFiles = [];
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
permissionRules,
|
|
1632
|
-
managedSettings,
|
|
1633
|
-
);
|
|
1634
|
-
}
|
|
1635
|
-
} catch (error) {
|
|
1636
|
-
if (error?.code === "CC_MANAGED_SETTINGS_INVALID") throw error;
|
|
1637
|
-
// Preserve caller-provided rules; absent settings keep legacy behavior.
|
|
1622
|
+
const { createPermissionRulesProvider, loadPermissionAuthority } =
|
|
1623
|
+
await import("../lib/permission-authority.js");
|
|
1624
|
+
const authorityOptions = {
|
|
1625
|
+
cwd,
|
|
1626
|
+
settingsFile: options.settingsFile,
|
|
1627
|
+
managedSettingsFile: options.managedSettingsFile,
|
|
1628
|
+
baseRules: options.permissionRules || null,
|
|
1629
|
+
};
|
|
1630
|
+
const loadedPermissionAuthority = loadPermissionAuthority(authorityOptions);
|
|
1631
|
+
managedSettings = loadedPermissionAuthority.managed;
|
|
1632
|
+
settingsFiles = Array.isArray(loadedPermissionAuthority.files)
|
|
1633
|
+
? loadedPermissionAuthority.files
|
|
1634
|
+
: [];
|
|
1635
|
+
permissionRules = loadedPermissionAuthority.hasRules
|
|
1636
|
+
? loadedPermissionAuthority.rules
|
|
1637
|
+
: null;
|
|
1638
|
+
if (!permissionRulesProvider) {
|
|
1639
|
+
permissionRulesProvider = createPermissionRulesProvider(authorityOptions);
|
|
1638
1640
|
}
|
|
1639
1641
|
|
|
1640
1642
|
// .claude/settings.json `hooks` block (decision-capable PreToolUse/PostToolUse).
|
|
@@ -2057,6 +2059,8 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2057
2059
|
let approvalGate = null;
|
|
2058
2060
|
try {
|
|
2059
2061
|
approvalGate = await getApprovalGate();
|
|
2062
|
+
approvalGate =
|
|
2063
|
+
approvalGate?.createSessionScope?.(sessionId) || approvalGate;
|
|
2060
2064
|
if (approvalGate && (options.permissionMode || "default") === "auto") {
|
|
2061
2065
|
// autoMode.decisions: user-configured riskLevel → allow/ask/deny
|
|
2062
2066
|
// classifier (same wiring as headless-runner). Only wrap when settings
|
|
@@ -2080,6 +2084,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2080
2084
|
}
|
|
2081
2085
|
}
|
|
2082
2086
|
if (approvalGate) {
|
|
2087
|
+
approvalGate.setAuthorizationConsumer?.(null);
|
|
2083
2088
|
approvalGate.setSessionPolicy?.(sessionId, perm.sessionPolicy);
|
|
2084
2089
|
approvalGate.setConfirmer?.(
|
|
2085
2090
|
interactive && perm.allowInteractiveApprovals
|
|
@@ -2368,6 +2373,10 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2368
2373
|
provider,
|
|
2369
2374
|
model,
|
|
2370
2375
|
observabilityScope: options.observabilityScope,
|
|
2376
|
+
executionLocation: captureAmbientExecutionLocation({
|
|
2377
|
+
provider,
|
|
2378
|
+
model,
|
|
2379
|
+
}),
|
|
2371
2380
|
}),
|
|
2372
2381
|
"startSession",
|
|
2373
2382
|
);
|
|
@@ -2736,6 +2745,18 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2736
2745
|
options.interactiveApprovals !== true
|
|
2737
2746
|
) {
|
|
2738
2747
|
try {
|
|
2748
|
+
if (
|
|
2749
|
+
!approvalGate ||
|
|
2750
|
+
typeof approvalGate.setConfirmer !== "function" ||
|
|
2751
|
+
typeof approvalGate.setAuthorizationConsumer !== "function" ||
|
|
2752
|
+
typeof approvalGate.consumeAuthorization !== "function"
|
|
2753
|
+
) {
|
|
2754
|
+
const error = new Error(
|
|
2755
|
+
"installed session-core cannot bind and consume durable remote approval",
|
|
2756
|
+
);
|
|
2757
|
+
error.code = "CC_REMOTE_APPROVAL_GATE_UNAVAILABLE";
|
|
2758
|
+
throw error;
|
|
2759
|
+
}
|
|
2739
2760
|
const startRemoteApproval =
|
|
2740
2761
|
deps.startHeadlessRemoteApproval ||
|
|
2741
2762
|
(await import("../lib/remote-approval-bridge.js"))
|
|
@@ -2751,9 +2772,10 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2751
2772
|
remote_session_id: _remoteApproval.pairing.remoteSessionId,
|
|
2752
2773
|
expires_at: _remoteApproval.pairing.expiresAt,
|
|
2753
2774
|
});
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2775
|
+
approvalGate.setConfirmer(_remoteApproval.confirmer);
|
|
2776
|
+
approvalGate.setAuthorizationConsumer(
|
|
2777
|
+
_remoteApproval.consumeAuthorization,
|
|
2778
|
+
);
|
|
2757
2779
|
} catch (err) {
|
|
2758
2780
|
emit({
|
|
2759
2781
|
type: "remote_control",
|
|
@@ -2791,6 +2813,7 @@ async function runAgentHeadlessStreamInWorkspace(
|
|
|
2791
2813
|
hookDb: db,
|
|
2792
2814
|
approvalGate,
|
|
2793
2815
|
permissionRules,
|
|
2816
|
+
permissionRulesProvider,
|
|
2794
2817
|
settingsHooks,
|
|
2795
2818
|
toolAdmission: options.toolAdmission || null,
|
|
2796
2819
|
classifyAllShell,
|