chainlesschain 0.162.189 → 0.162.193
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -11
- package/bin/chainlesschain.js +7 -52
- package/completions/_cc +209 -0
- package/completions/cc.bash +18 -0
- package/completions/cc.fish +13 -0
- package/completions/cc.ps1 +226 -0
- package/package.json +10 -2
- package/src/assets/web-panel/assets/{AIOps-DbZft8w0.js → AIOps-DBLkaTje.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DoOZpwfN.js → ActionButton-BAy-Qebo.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-B0J0KLTW.js → Analytics-Dfb1Mlau.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-D9eIR0qq.js → AppLayout-BbFkN8m0.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-BnZXEVeo.js → Artifacts-kM4-cEEH.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-X1ce4Bjn.js → Audit-BSQfYWf3.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BvWR-y5v.js → BackgroundAgents-CWDbI_fG.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BublSGEd.js → Backup-BxLPbq_Q.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CR_77Hso.js → BaseInput-DuIbdrp6.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DixW52tq.js → Chat-NEmjGahU.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-DDHDpBBA.js → ChatBubbleRenderer-DfJEo-5_.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-CCv1C87K.js → Checkbox-CaoeG3Ns.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-B03Cc3dd.js → Codegen-BFf_g3xY.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CA06-6pU.js → Col-CNOd8mdQ.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Bj881J52.js → Community-BhpDqz-i.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-UZLTPoaL.js → Compact-CQ42T7Z6.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-kGwzRb_0.js → Compliance-DI5PcLMN.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-KundoYM8.js → Cowork-wYYZe0wR.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-BYZyoqDe.js → Cron-Dlq03DD_.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BhrrppBX.js → Crosschain-BzqS8PP3.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CdC6EguZ.js → DID-It55Yem7.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CcQx3J4y.js → Dashboard-9HkH6oxn.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BpijtEzQ.js → Dropdown-00e2YWRB.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-DfZjeZTe.js → EmailListRenderer-By-ugRDL.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BFYSf69C.js → FamilyGuardDashboard-C396yu5m.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-Okdi3pJm.js → Federation-BME5sbZY.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-mH-HebKW.js → FormItemContext-B4TEZCr-.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-xivV69x7.js → GenericCardRenderer-_9CX9ieY.js} +1 -1
- package/src/assets/web-panel/assets/{Git-1rh_YBwg.js → Git-BrS6WVSr.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-eAXkNxdY.js → Governance-BMdCWnKF.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CS6dMVTN.js → Inference-Bcp3vzcA.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Bq_TnkvD.js → KnowledgeGraph-DlLuqGY5.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-KchHtiHt.js → Logs-D-W_6x09.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-TabqHW9B.js → MarkdownRenderer-DElGPxCZ.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-CsmGcX5X.js → Marketplace-Dzn2guvI.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BaPFnnyz.js → McpTools-uPict-KL.js} +6 -6
- package/src/assets/web-panel/assets/{Memory-2m-sUUf7.js → Memory-BCw43kOb.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-D5nVZBRu.js → MobileBridge-DmV8Wv7F.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-C-HaCmSM.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-3GDvamGa.js → Mtc-C6jxJ34Y.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-D2zGuZCH.js → MtcAudit-Za8ExwhQ.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-BBVQ4t6t.js → Multisig-KKDbuEgb.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BIOCyOGp.js → NLProgramming-Dj97zbCk.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DVwBGpzc.js → Notes-DBXvMraU.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-BDnHfIfX.js → NotificationSettings-DOxITLYl.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-7DVjZwMM.js +1 -0
- package/src/assets/web-panel/assets/{Organization-D3SRKaa7.js → Organization-D1i73mjb.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-C2B8ahyn.js → Overflow-kW6Q3rvg.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-2iwQzG65.js → P2P-C-v_8p2v.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CoPiWqMN.js → PdhVaultBrowser-tUbbY64W.js} +5 -5
- package/src/assets/web-panel/assets/{Permissions-yV5XNXo5.js → Permissions-DkHxEZ58.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-uCDJhMUF.js → PersonalDataHub-DWuMPGrK.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-hN7ucMOA.js → Pipeline-30IYXWWm.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-CgU0ptN4.js → Privacy-DZNQ4RrH.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CfYPiT6j.js → ProjectInit-De2MCElf.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B0A2C4nw.js → ProjectSettings-5uHk9wsC.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BE5C0ajn.js → Projects-XjDfrFLb.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CstQPf8W.js → Providers-Bgwj6gcE.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-Co3z_ynk.js → QrScannerModal-gKql9umv.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DMTS6pQ6.js → QuickAsk-BWvmwkh7.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-ETw4odUa.js → Recommend-Uok4hZPd.js} +1 -1
- package/src/assets/web-panel/assets/RemoteSession-DLJzTk9a.js +5 -0
- package/src/assets/web-panel/assets/{Reputation-BTVqQgKq.js → Reputation-ZVwIPMSO.js} +1 -1
- package/src/assets/web-panel/assets/{Row-CBKKwwtO.js → Row-CN04HxWR.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BHUQ438I.js → RssFeed-BdSrEG4g.js} +3 -3
- package/src/assets/web-panel/assets/{Search-B4NqeUsF.js → Search-5PwVd0IR.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BRjoYG5_.js → Security-DdBo4zjN.js} +4 -4
- package/src/assets/web-panel/assets/{Services-CxQzu3p3.js → Services-D3letU7M.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BKzwwmWO.js → Skeleton--Jb83f1v.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DrsFcgth.js → Skills-Bg-CulHX.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-D21tmXCH.js → Sla-7QOa7S-X.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CjyjLfp8.js → SpeechSettings-DQwppjRw.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Cu45-tnx.js → SyncSettings-dNPQGL-s.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-oMcILYOj.js → Tasks-Ggs-Z48q.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Bh-Zcr5R.js → Templates-78TYHgRO.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-68ns63aI.js → Tenant-xHwwv9vO.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-BLJkFykE.js → Terminal-BJXSJfm4.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-xcrJLq-O.js → TimelineRenderer-fLbjRhJw.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-C6PpFJtf.js → Tokens-oMSBSBmB.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BaKA7tdM.js → Trigger-CfnY_wX_.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BzhA57Jc.js → Trust-AdyTgYKO.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-4_U3JkIR.js → UkeySign-C5K_81dS.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-162AANxX.js → VideoEditing-vcGVDqki.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-B1viuql_.js → Wallet-hhOc3hlY.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-ZVWazhCy.js → WebAuthn-CVloC11s.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-tzdyUk-1.js → WorkflowEditor-CYeE32R5.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DmrHNuwq.js → chat-CNROR5bN.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DAJ_M-PK.js → colors-Cjx-cnwU.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-uIzmYwLs.js → compact-item-DOIfelvD.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-D_ZmuLwb.js → createContext-DfA7UZ8u.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-ChcCBGs7.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CDt_shTL.js → hasIn-BMSCzcfM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CaelyMgF.js → index-5-HXgOX5.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4n1lGTB.js → index-AWg-0M1S.js} +1 -1
- package/src/assets/web-panel/assets/{index-saf3VNeP.js → index-B4iYzpkL.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bx4d6c1k.js → index-B5Udeb_6.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdUMcwRB.js → index-B7gf77CJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-clSX4PEc.js → index-BEMwBBHk.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBFmcaCQ.js → index-BM1y_9hM.js} +1 -1
- package/src/assets/web-panel/assets/{index-ByzGvpR9.js → index-BUonmKSE.js} +1 -1
- package/src/assets/web-panel/assets/{index-C16fYKFD.js → index-BbQ2eQ8H.js} +1 -1
- package/src/assets/web-panel/assets/{index-CzXqvMuP.js → index-BemJ2u_E.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9OE8B3d.js → index-BolaOQxx.js} +1 -1
- package/src/assets/web-panel/assets/{index-OzTxFIJP.js → index-BxOk9vkG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DqDSF2RW.js → index-By61ojUx.js} +1 -1
- package/src/assets/web-panel/assets/{index-CG0lY4h3.js → index-C2K9SNVX.js} +1 -1
- package/src/assets/web-panel/assets/{index-QsgfSZrV.js → index-C3L5gdiD.js} +1 -1
- package/src/assets/web-panel/assets/{index-GcKOHD_c.js → index-C7xn0Nub.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRa4kJ_S.js → index-CAnvhwg6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CeUpKjvi.js → index-CEKMcOyU.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cvak6Oe2.js → index-CNC5onm4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbD_WW_6.js → index-CVL27kXC.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHvlm0In.js → index-CVm1_i3t.js} +1 -1
- package/src/assets/web-panel/assets/{index-rS3gl_68.js → index-CdYBye8B.js} +1 -1
- package/src/assets/web-panel/assets/{index-FyplHuNt.js → index-ClNMrqEY.js} +1 -1
- package/src/assets/web-panel/assets/{index-DfSSy9uy.js → index-Cs6l7uRu.js} +1 -1
- package/src/assets/web-panel/assets/{index-rXdwUeE3.js → index-CshQbilz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DeGBoLQA.js → index-Cyweh0Hy.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5WcdJH2.js → index-DBpWXFed.js} +3 -3
- package/src/assets/web-panel/assets/{index-CcZ9xJI9.js → index-DHtpHZAQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKyd472S.js → index-DLmn0BoK.js} +1 -1
- package/src/assets/web-panel/assets/{index-BAvSmJXW.js → index-DPAWBrMf.js} +1 -1
- package/src/assets/web-panel/assets/{index-ifxmu8SY.js → index-DjEsxO5h.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDF6EQBs.js → index-FBc_CJBd.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bbxjfstq.js → index-Icdoqmzt.js} +1 -1
- package/src/assets/web-panel/assets/index-Q2IajL54.js +1 -0
- package/src/assets/web-panel/assets/index-bRkHgOMc.js +1 -0
- package/src/assets/web-panel/assets/{index-BTCXf1t-.js → index-dCd8cSUq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvFhhe6r.js → index-m2vG9gG_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwfvPe-j.js → index-mTpHoEzr.js} +1 -1
- package/src/assets/web-panel/assets/{index-Z8P4BexE.js → index-ti_lnTWl.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-pmfaD-aK.js → initDefaultProps-Bu8k7H1Y.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CaQ2CpYF.js → motion-s3iVK41k.js} +1 -1
- package/src/assets/web-panel/assets/{move-CkKTqNbI.js → move-B6B-E5Jz.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-Dd4xsgRI.js → mtc-parser-BiYgTidA.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BFuA5YEs.js → omit-pU1RdUDA.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DDfxOAJc.js → pickAttrs-Cdoq_SeM.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Be595JCp.js → placementArrow-DIuvAn2K.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-7byljUM3.js → responsiveObserve-8w16YR2D.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CTWfOTaY.js → slide-VZ01cZe3.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CNZOuIxM.js → statusUtils-lh8YMN8Z.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DwOcBV78.js → styleChecker-CmDyreec.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-B6MNwAO9.js → useFlexGapSupport-hiJWMU5y.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CzyQjH9r.js → useFs-Thnu-Iaj.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Dxh3KiVA.js → usePersonalDataHub-LBdOxjwY.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DVfZiS5N.js → vnode-Cg6lFY_X.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BYme7fbY.js → zoom-DVfsR1YO.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/cli-help.js +181 -0
- package/src/command-help-index.json +181 -0
- package/src/command-manifest.json +1107 -175
- package/src/command-surface-policy.js +197 -0
- package/src/commands/agent.js +76 -33
- package/src/commands/artifacts.js +400 -2
- package/src/commands/background-session.js +41 -3
- package/src/commands/checkpoint-restore-recovery.js +1476 -0
- package/src/commands/checkpoint.js +947 -22
- package/src/commands/compact.js +101 -25
- package/src/commands/config.js +506 -20
- package/src/commands/doctor.js +4 -1
- package/src/commands/hub.js +1 -1
- package/src/commands/mcp.js +688 -24
- package/src/commands/pack.js +16 -2
- package/src/commands/plugin.js +20 -12
- package/src/commands/session-mcp-recovery.js +218 -0
- package/src/commands/session.js +470 -110
- package/src/commands/setup.js +36 -10
- package/src/commands/skill.js +181 -110
- package/src/commands/status.js +21 -5
- package/src/commands/update.js +68 -6
- package/src/constants.js +11 -0
- package/src/data/changelog.json +14 -1
- package/src/gateways/ws/action-protocol.js +10 -0
- package/src/gateways/ws/session-protocol.js +555 -27
- package/src/gateways/ws/ws-agent-handler.js +541 -14
- package/src/gateways/ws/ws-session-gateway.js +129 -22
- package/src/gateways/ws/ws-session-state.js +431 -0
- package/src/harness/background-task-manager.js +233 -36
- package/src/harness/jsonl-session-store.js +2551 -167
- package/src/harness/mcp-client.js +802 -61
- package/src/harness/prompt-compressor.js +227 -27
- package/src/harness/session-index.js +89 -38
- package/src/harness/session-list-index.js +254 -0
- package/src/harness/structured-handoff.js +410 -0
- package/src/lazy-dispatch.js +747 -84
- package/src/lib/__tests__/logger.test.js +50 -2
- package/src/lib/advisor-runtime.js +1047 -0
- package/src/lib/agent-core.js +1 -0
- package/src/lib/agent-sandbox.js +120 -26
- package/src/lib/agent-session-export.js +20 -0
- package/src/lib/agent-team/team-runner.js +230 -8
- package/src/lib/artifact-store.js +131 -8
- package/src/lib/background-agent-supervisor.js +185 -13
- package/src/lib/background-interaction-journal.js +37 -9
- package/src/lib/background-launch-profile.js +1058 -0
- package/src/lib/checkpoint-restore-already-completed-controller.js +902 -0
- package/src/lib/checkpoint-restore-orchestrator.js +987 -0
- package/src/lib/checkpoint-restore-partial-rollback-controller.js +1953 -0
- package/src/lib/checkpoint-restore-recovery-controller.js +689 -0
- package/src/lib/checkpoint-restore-recovery.js +884 -0
- package/src/lib/checkpoint-restore-retention.js +126 -0
- package/src/lib/checkpoint-restore-saga.js +5079 -0
- package/src/lib/checkpoint-restore-session-recovery.js +1178 -0
- package/src/lib/checkpoint-restore-workspace-target-verifier.js +270 -0
- package/src/lib/checkpoint-store.js +1688 -97
- package/src/lib/checkpoint-timeline-authority.js +522 -0
- package/src/lib/checkpoint-timeline.js +642 -0
- package/src/lib/config-keys.js +18 -119
- package/src/lib/config-manager.js +446 -27
- package/src/lib/config-redaction.js +57 -0
- package/src/lib/config-schema.js +853 -0
- package/src/lib/cowork-mcp-tools.js +5 -0
- package/src/lib/cowork-task-runner.js +458 -63
- package/src/lib/delivery-coordinator.js +1234 -0
- package/src/lib/delivery-evidence.js +450 -0
- package/src/lib/doctor-checkup.js +199 -14
- package/src/lib/executable-path.js +34 -0
- package/src/lib/fatal-handler.js +16 -0
- package/src/lib/file-checkpoint.js +4909 -186
- package/src/lib/file-lines.js +125 -0
- package/src/lib/headless-config-command.js +16 -5
- package/src/lib/hook-runner.cjs +139 -38
- package/src/lib/hooks-v2-workspace-context.js +10 -0
- package/src/lib/impacted-gate-selector.js +424 -0
- package/src/lib/interaction-adapter.js +62 -0
- package/src/lib/jsonl-session-store.js +1 -35
- package/src/lib/logger.js +66 -14
- package/src/lib/mcp-call-ledger-store.js +1069 -0
- package/src/lib/mcp-call-ledger.js +747 -0
- package/src/lib/mcp-client.js +5 -0
- package/src/lib/mcp-conflict-scheduler.js +468 -0
- package/src/lib/mcp-effect-contract.js +102 -0
- package/src/lib/mcp-headers-helper-trust.js +145 -0
- package/src/lib/mcp-headers-helper.js +616 -0
- package/src/lib/mcp-host-recovery-runtime.js +131 -0
- package/src/lib/mcp-ledger-recovery-admission.js +1065 -0
- package/src/lib/mcp-recovery-adjudication.js +443 -0
- package/src/lib/output-context.js +86 -0
- package/src/lib/packer/file-identity.js +170 -0
- package/src/lib/packer/index.js +3 -0
- package/src/lib/packer/native-update-state.js +277 -0
- package/src/lib/packer/pack-update-applier.js +1983 -136
- package/src/lib/packer/pack-update-checker.js +34 -0
- package/src/lib/packer/pack-update-downloader.js +875 -86
- package/src/lib/packer/pack-update-signature.js +86 -0
- package/src/lib/packer/pkg-config-generator.js +6 -0
- package/src/lib/paths.js +65 -10
- package/src/lib/plan-mode.js +831 -14
- package/src/lib/plan-persistence.js +540 -0
- package/src/lib/plugin-runtime/hooks.js +227 -69
- package/src/lib/plugin-runtime/plugin-options.js +189 -44
- package/src/lib/pr-automation-policy.js +146 -8
- package/src/lib/process-execution-broker/credential-agent.js +7 -0
- package/src/lib/process-execution-broker/index.js +53 -8
- package/src/lib/process-execution-broker/workspace-transaction.js +976 -73
- package/src/lib/project-instructions.js +165 -29
- package/src/lib/project-mcp-trust.js +67 -0
- package/src/lib/public-ide-capability-manifest.js +272 -0
- package/src/lib/public-ide-capability-validation.js +351 -0
- package/src/lib/secret-store.js +267 -43
- package/src/lib/secure-fs.js +1089 -0
- package/src/lib/security-audit.js +58 -0
- package/src/lib/service-manager.js +34 -13
- package/src/lib/session-budget-runtime.js +1452 -0
- package/src/lib/session-host-snapshot.js +388 -0
- package/src/lib/session-message-provenance.js +429 -0
- package/src/lib/session-projection.js +804 -0
- package/src/lib/session-resource-budget.js +1495 -0
- package/src/lib/settings-hooks.cjs +138 -22
- package/src/lib/settings-loader.cjs +25 -2
- package/src/lib/side-effect-ledger-store.js +45 -23
- package/src/lib/skill-execution-identity.js +217 -0
- package/src/lib/skill-loader.js +299 -18
- package/src/lib/sub-agent-context.js +236 -28
- package/src/lib/sub-agent-registry.js +5 -0
- package/src/lib/subagent-contract.js +94 -0
- package/src/lib/todo-manager.js +185 -18
- package/src/lib/todo-persistence.js +417 -0
- package/src/lib/turn-binding-store.js +41 -23
- package/src/lib/with-file-lock.js +25 -1
- package/src/lib/ws-chat-handler.js +21 -0
- package/src/program-base.js +18 -0
- package/src/repl/advisor-command.js +103 -0
- package/src/repl/agent-repl.js +2156 -145
- package/src/repl/btw-command.js +93 -10
- package/src/repl/clipboard-image.js +119 -0
- package/src/repl/config-summary.js +64 -108
- package/src/repl/prompt-editor.js +233 -0
- package/src/repl/prompt-interactions.js +344 -0
- package/src/repl/prompt-stash.js +354 -0
- package/src/repl/prompt-suggestions.js +312 -0
- package/src/repl/repl-keybindings.js +227 -0
- package/src/repl/session-recap.js +217 -0
- package/src/repl/slash-command-registry.js +22 -0
- package/src/repl/terminal-layout.js +88 -0
- package/src/runtime/agent-core.js +1264 -325
- package/src/runtime/coding-agent-contract-shared.cjs +13 -1
- package/src/runtime/coding-agent-managed-tool-policy.cjs +7 -2
- package/src/runtime/diagnostics.js +32 -13
- package/src/runtime/headless-runner.js +298 -118
- package/src/runtime/headless-stream.js +353 -95
- package/src/runtime/mcp-config.js +148 -14
- package/src/runtime/status-diagnostics-lite.js +137 -0
- package/src/assets/web-panel/assets/MobileProjects-Bo8MLZvT.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-C7Ek20ag.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-B0rkE09d.js +0 -5
- package/src/assets/web-panel/assets/devWarning-DIrncrV1.js +0 -1
- package/src/assets/web-panel/assets/index-D-Swwqld.js +0 -1
- package/src/assets/web-panel/assets/index-FMZAMKy8.js +0 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable command-surface policy used by the manifest generator.
|
|
3
|
+
*
|
|
4
|
+
* Keep this module dependency-free: phase-0 help and manifest generation both
|
|
5
|
+
* consume it before the full Commander command graph is loaded.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const COMMAND_MANIFEST_SCHEMA = "chainlesschain.command-manifest.v3";
|
|
9
|
+
export const COMMAND_SURFACE_SCHEMA = "chainlesschain.command-surface.v2";
|
|
10
|
+
export const COMMAND_LIFECYCLE_SCHEMA = "chainlesschain.command-lifecycle.v1";
|
|
11
|
+
export const DEFAULT_COMMAND = "agent";
|
|
12
|
+
|
|
13
|
+
export const TOP_LEVEL_GROWTH_POLICY = Object.freeze({
|
|
14
|
+
baselineCommandCount: 175,
|
|
15
|
+
maximumNetGrowth: 0,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export const COMMAND_NAMESPACES = Object.freeze([
|
|
19
|
+
Object.freeze({
|
|
20
|
+
name: "lab",
|
|
21
|
+
summary: "Compatibility namespace for long-tail and experimental commands",
|
|
22
|
+
visibility: "extended",
|
|
23
|
+
}),
|
|
24
|
+
]);
|
|
25
|
+
|
|
26
|
+
const MINIMUM_COMPATIBILITY_RELEASE_CYCLES = 2;
|
|
27
|
+
|
|
28
|
+
const COMMAND_MIGRATIONS = Object.freeze({
|
|
29
|
+
dao: Object.freeze({
|
|
30
|
+
namespace: "lab",
|
|
31
|
+
deprecatedSince: "0.162.189",
|
|
32
|
+
removalNotBefore: "0.164.0",
|
|
33
|
+
}),
|
|
34
|
+
evomap: Object.freeze({
|
|
35
|
+
namespace: "lab",
|
|
36
|
+
deprecatedSince: "0.162.189",
|
|
37
|
+
removalNotBefore: "0.164.0",
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export const CORE_COMMAND_GROUPS = Object.freeze([
|
|
42
|
+
Object.freeze({
|
|
43
|
+
id: "code",
|
|
44
|
+
label: "Code",
|
|
45
|
+
commands: Object.freeze(["agent", "session", "skill"]),
|
|
46
|
+
}),
|
|
47
|
+
Object.freeze({
|
|
48
|
+
id: "integrations",
|
|
49
|
+
label: "Integrations",
|
|
50
|
+
commands: Object.freeze(["mcp", "plugin"]),
|
|
51
|
+
}),
|
|
52
|
+
Object.freeze({
|
|
53
|
+
id: "configuration",
|
|
54
|
+
label: "Configuration",
|
|
55
|
+
commands: Object.freeze(["config", "auth", "doctor", "status", "update"]),
|
|
56
|
+
}),
|
|
57
|
+
]);
|
|
58
|
+
|
|
59
|
+
const CORE_GROUP_BY_COMMAND = new Map(
|
|
60
|
+
CORE_COMMAND_GROUPS.flatMap((group) =>
|
|
61
|
+
group.commands.map((command) => [command, group]),
|
|
62
|
+
),
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
function parseReleaseVersion(value, label) {
|
|
66
|
+
const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(value);
|
|
67
|
+
if (!match) throw new Error(`${label} must be an exact semver release`);
|
|
68
|
+
return match.slice(1).map(Number);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function releaseCycleDistance(from, to) {
|
|
72
|
+
const [fromMajor, fromMinor] = parseReleaseVersion(from, "deprecatedSince");
|
|
73
|
+
const [toMajor, toMinor] = parseReleaseVersion(to, "removalNotBefore");
|
|
74
|
+
if (fromMajor !== toMajor) {
|
|
75
|
+
throw new Error(
|
|
76
|
+
"command migration windows may not cross a major release boundary",
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
return toMinor - fromMinor;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function lifecycleForCommand(commandName) {
|
|
83
|
+
const migration = COMMAND_MIGRATIONS[commandName];
|
|
84
|
+
if (!migration) return Object.freeze({ state: "active" });
|
|
85
|
+
|
|
86
|
+
const releaseCycles = releaseCycleDistance(
|
|
87
|
+
migration.deprecatedSince,
|
|
88
|
+
migration.removalNotBefore,
|
|
89
|
+
);
|
|
90
|
+
if (releaseCycles < MINIMUM_COMPATIBILITY_RELEASE_CYCLES) {
|
|
91
|
+
throw new Error(
|
|
92
|
+
`${commandName} must remain compatible for at least ${MINIMUM_COMPATIBILITY_RELEASE_CYCLES} release cycles`,
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return Object.freeze({
|
|
97
|
+
state: "deprecated",
|
|
98
|
+
deprecatedSince: migration.deprecatedSince,
|
|
99
|
+
removalNotBefore: migration.removalNotBefore,
|
|
100
|
+
minimumReleaseCycles: MINIMUM_COMPATIBILITY_RELEASE_CYCLES,
|
|
101
|
+
releaseCycle: "minor",
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function validateCommandSurface(entries) {
|
|
106
|
+
if (!Array.isArray(entries)) {
|
|
107
|
+
throw new TypeError("command surface entries must be an array");
|
|
108
|
+
}
|
|
109
|
+
const netGrowth =
|
|
110
|
+
entries.length - TOP_LEVEL_GROWTH_POLICY.baselineCommandCount;
|
|
111
|
+
if (netGrowth > TOP_LEVEL_GROWTH_POLICY.maximumNetGrowth) {
|
|
112
|
+
throw new Error(
|
|
113
|
+
`Top-level command net growth is ${netGrowth}; maximum is ${TOP_LEVEL_GROWTH_POLICY.maximumNetGrowth}`,
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const names = new Set(entries.map((entry) => entry.name));
|
|
118
|
+
const topLevelTokens = new Set(
|
|
119
|
+
entries.flatMap((entry) => [
|
|
120
|
+
entry.name,
|
|
121
|
+
...(Array.isArray(entry.aliases) ? entry.aliases : []),
|
|
122
|
+
]),
|
|
123
|
+
);
|
|
124
|
+
for (const namespace of COMMAND_NAMESPACES) {
|
|
125
|
+
if (topLevelTokens.has(namespace.name)) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
`Virtual command namespace '${namespace.name}' collides with a registered top-level command or alias`,
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (const commandName of Object.keys(COMMAND_MIGRATIONS)) {
|
|
132
|
+
if (!names.has(commandName)) {
|
|
133
|
+
throw new Error(`Migrated command is not registered: ${commandName}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const deprecatedCompatibilityCount = entries.filter(
|
|
138
|
+
(entry) => entry.lifecycle?.state === "deprecated",
|
|
139
|
+
).length;
|
|
140
|
+
const activeRegisteredCommandCount =
|
|
141
|
+
entries.length - deprecatedCompatibilityCount;
|
|
142
|
+
return {
|
|
143
|
+
...TOP_LEVEL_GROWTH_POLICY,
|
|
144
|
+
registeredCommandCount: entries.length,
|
|
145
|
+
activeRegisteredCommandCount,
|
|
146
|
+
virtualNamespaceCount: COMMAND_NAMESPACES.length,
|
|
147
|
+
deprecatedCompatibilityCount,
|
|
148
|
+
recommendedTopLevelCommandCount:
|
|
149
|
+
activeRegisteredCommandCount + COMMAND_NAMESPACES.length,
|
|
150
|
+
netGrowth,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function describeCommandSurface(commandName) {
|
|
155
|
+
const group = CORE_GROUP_BY_COMMAND.get(commandName);
|
|
156
|
+
const migration = COMMAND_MIGRATIONS[commandName];
|
|
157
|
+
return {
|
|
158
|
+
stability: group ? "stable" : "compatibility",
|
|
159
|
+
category: group?.id || "compatibility",
|
|
160
|
+
visibility: group ? "core" : "extended",
|
|
161
|
+
replacement: migration ? `${migration.namespace} ${commandName}` : null,
|
|
162
|
+
lifecycle: lifecycleForCommand(commandName),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export function buildCommandSurfaceDescriptor(entries = []) {
|
|
167
|
+
const migrationCommands = Object.entries(COMMAND_MIGRATIONS).map(
|
|
168
|
+
([command, migration]) => ({
|
|
169
|
+
command,
|
|
170
|
+
replacement: `${migration.namespace} ${command}`,
|
|
171
|
+
}),
|
|
172
|
+
);
|
|
173
|
+
return {
|
|
174
|
+
schema: COMMAND_SURFACE_SCHEMA,
|
|
175
|
+
defaultCommand: DEFAULT_COMMAND,
|
|
176
|
+
lifecyclePolicy: {
|
|
177
|
+
schema: COMMAND_LIFECYCLE_SCHEMA,
|
|
178
|
+
minimumCompatibilityReleaseCycles: MINIMUM_COMPATIBILITY_RELEASE_CYCLES,
|
|
179
|
+
releaseCycle: "minor",
|
|
180
|
+
},
|
|
181
|
+
topLevelGrowth: validateCommandSurface(entries),
|
|
182
|
+
namespaces: COMMAND_NAMESPACES.map((namespace) => ({
|
|
183
|
+
...namespace,
|
|
184
|
+
commands: migrationCommands
|
|
185
|
+
.filter(({ replacement }) =>
|
|
186
|
+
replacement.startsWith(`${namespace.name} `),
|
|
187
|
+
)
|
|
188
|
+
.map(({ command }) => command)
|
|
189
|
+
.sort(),
|
|
190
|
+
})),
|
|
191
|
+
coreGroups: CORE_COMMAND_GROUPS.map((group) => ({
|
|
192
|
+
id: group.id,
|
|
193
|
+
label: group.label,
|
|
194
|
+
commands: [...group.commands],
|
|
195
|
+
})),
|
|
196
|
+
};
|
|
197
|
+
}
|
package/src/commands/agent.js
CHANGED
|
@@ -17,9 +17,11 @@ import {
|
|
|
17
17
|
import { resolveImages, resolveVisionLlm } from "../lib/image-input.js";
|
|
18
18
|
import { loadConfig } from "../lib/config-manager.js";
|
|
19
19
|
import {
|
|
20
|
-
|
|
20
|
+
normalizeAgentSandboxMode,
|
|
21
21
|
assertSandboxAvailable,
|
|
22
|
+
enforceSandboxFailClosed,
|
|
22
23
|
} from "../lib/agent-sandbox.js";
|
|
24
|
+
import { appendSecurityAuditEvent } from "../lib/security-audit.js";
|
|
23
25
|
|
|
24
26
|
/**
|
|
25
27
|
* Resolve + validate `--add-dir` values into absolute, existing, de-duped
|
|
@@ -82,6 +84,12 @@ export function resolveFallbackModels(flagValue, llm = {}) {
|
|
|
82
84
|
return normalizeFallbackModels(configured);
|
|
83
85
|
}
|
|
84
86
|
|
|
87
|
+
export function containsApiKeyArgument(argv = process.argv) {
|
|
88
|
+
return argv.some(
|
|
89
|
+
(value) => value === "--api-key" || String(value).startsWith("--api-key="),
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
85
93
|
/**
|
|
86
94
|
* Read all of stdin as a UTF-8 string. Resolves "" immediately when stdin is a
|
|
87
95
|
* TTY (nothing piped) so we never block an interactive invocation.
|
|
@@ -154,6 +162,10 @@ export function registerAgentCommand(program) {
|
|
|
154
162
|
"--fork-session",
|
|
155
163
|
"When resuming, branch into a NEW session id and leave the original untouched (claude --fork-session parity)",
|
|
156
164
|
)
|
|
165
|
+
.option(
|
|
166
|
+
"--fork-request-id <key>",
|
|
167
|
+
"Stable idempotency key for --fork-session retries (omit for a new fork each invocation)",
|
|
168
|
+
)
|
|
157
169
|
.option(
|
|
158
170
|
"--add-dir <dir>",
|
|
159
171
|
"Extra working directory the agent may read/search/edit (repeatable)",
|
|
@@ -220,6 +232,10 @@ export function registerAgentCommand(program) {
|
|
|
220
232
|
"--sandbox [image]",
|
|
221
233
|
"Run shell commands in an ephemeral Docker sandbox (network disabled by default)",
|
|
222
234
|
)
|
|
235
|
+
.option(
|
|
236
|
+
"--sandbox-mode <mode>",
|
|
237
|
+
"Sandbox posture: off | workspace-write | strict (explicit isolation modes fail closed)",
|
|
238
|
+
)
|
|
223
239
|
.option("--sandbox-network", "Allow network access inside --sandbox")
|
|
224
240
|
.option(
|
|
225
241
|
"--otlp <file>",
|
|
@@ -466,7 +482,7 @@ export function registerAgentCommand(program) {
|
|
|
466
482
|
options.apiKey = process.env.CC_API_KEY;
|
|
467
483
|
} else if (
|
|
468
484
|
options.apiKey &&
|
|
469
|
-
process.argv
|
|
485
|
+
containsApiKeyArgument(process.argv) &&
|
|
470
486
|
!process.env.VITEST &&
|
|
471
487
|
!process.env.VITEST_WORKER_ID
|
|
472
488
|
) {
|
|
@@ -491,6 +507,7 @@ export function registerAgentCommand(program) {
|
|
|
491
507
|
// 2.1.169 parity): flip every customization kill-switch BEFORE anything
|
|
492
508
|
// loads. Permission rules stay active. --bare (CC_BARE) is safe mode
|
|
493
509
|
// PLUS skills, plugins and MCP/IDE/PDH/JetBrains auto-connect off.
|
|
510
|
+
let safeIsolationRequested = options.permissionMode === "auto";
|
|
494
511
|
{
|
|
495
512
|
const {
|
|
496
513
|
applySafeMode,
|
|
@@ -499,6 +516,7 @@ export function registerAgentCommand(program) {
|
|
|
499
516
|
bareModeRequested,
|
|
500
517
|
} = await import("../lib/safe-mode.js");
|
|
501
518
|
if (bareModeRequested(options)) {
|
|
519
|
+
safeIsolationRequested = true;
|
|
502
520
|
const applied = applyBareMode();
|
|
503
521
|
// Ambient auto-connects off; an EXPLICIT --ide/--pdh/--jetbrains
|
|
504
522
|
// (or --mcp-config, handled downstream) still wins — bare kills
|
|
@@ -511,6 +529,7 @@ export function registerAgentCommand(program) {
|
|
|
511
529
|
`bare mode: hooks/skills/plugins/memory/MCP-auto-connect disabled (${applied.join(", ")}) — permission rules stay active.\n`,
|
|
512
530
|
);
|
|
513
531
|
} else if (safeModeRequested(options)) {
|
|
532
|
+
safeIsolationRequested = true;
|
|
514
533
|
const applied = applySafeMode();
|
|
515
534
|
process.stderr.write(
|
|
516
535
|
`safe mode: customizations disabled (${applied.join(", ")}) — permission rules stay active.\n`,
|
|
@@ -734,7 +753,11 @@ export function registerAgentCommand(program) {
|
|
|
734
753
|
const { applyForkSession } =
|
|
735
754
|
await import("../runtime/headless-runner.js");
|
|
736
755
|
const fork = applyForkSession(
|
|
737
|
-
{
|
|
756
|
+
{
|
|
757
|
+
forkSession: true,
|
|
758
|
+
sessionId: options.session,
|
|
759
|
+
forkRequestId: options.forkRequestId,
|
|
760
|
+
},
|
|
738
761
|
store,
|
|
739
762
|
);
|
|
740
763
|
if (fork.missing) {
|
|
@@ -791,6 +814,7 @@ export function registerAgentCommand(program) {
|
|
|
791
814
|
// interactive, which all read options.model) picks it up; env vars are
|
|
792
815
|
// set on the process so the agent loop + child tools inherit them.
|
|
793
816
|
let settingsSandbox = null;
|
|
817
|
+
let managedSettingsSandbox = null;
|
|
794
818
|
try {
|
|
795
819
|
const { loadSettingsConfig } =
|
|
796
820
|
await import("../lib/settings-loader.cjs");
|
|
@@ -813,8 +837,52 @@ export function registerAgentCommand(program) {
|
|
|
813
837
|
}
|
|
814
838
|
if (!options.model && sc.model) options.model = sc.model;
|
|
815
839
|
settingsSandbox = sc.sandbox || null;
|
|
816
|
-
|
|
817
|
-
|
|
840
|
+
managedSettingsSandbox = sc.managedSandbox || null;
|
|
841
|
+
} catch (error) {
|
|
842
|
+
if (error?.code === "CC_MANAGED_SETTINGS_INVALID") {
|
|
843
|
+
process.stderr.write(`Error: ${error.message}\n`);
|
|
844
|
+
await _finishWorktree();
|
|
845
|
+
process.exit(6);
|
|
846
|
+
}
|
|
847
|
+
// User/project settings overrides remain best-effort. Organization
|
|
848
|
+
// managed settings are handled above and may never fail open.
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
let resolvedAgentSandbox;
|
|
852
|
+
try {
|
|
853
|
+
resolvedAgentSandbox = normalizeAgentSandboxMode(
|
|
854
|
+
options.sandboxMode,
|
|
855
|
+
options.sandbox,
|
|
856
|
+
{
|
|
857
|
+
cwd: process.cwd(),
|
|
858
|
+
network: options.sandboxNetwork === true,
|
|
859
|
+
settings: settingsSandbox,
|
|
860
|
+
managedSettings: managedSettingsSandbox,
|
|
861
|
+
},
|
|
862
|
+
);
|
|
863
|
+
if (safeIsolationRequested && resolvedAgentSandbox) {
|
|
864
|
+
resolvedAgentSandbox = enforceSandboxFailClosed(
|
|
865
|
+
resolvedAgentSandbox,
|
|
866
|
+
options.permissionMode === "auto" ? "auto" : "safe",
|
|
867
|
+
);
|
|
868
|
+
}
|
|
869
|
+
assertSandboxAvailable(resolvedAgentSandbox);
|
|
870
|
+
if (options.sandboxMode === "off") {
|
|
871
|
+
appendSecurityAuditEvent("sandbox_mode_off", {
|
|
872
|
+
details: {
|
|
873
|
+
command: "agent",
|
|
874
|
+
permissionMode: options.permissionMode || "default",
|
|
875
|
+
isolation: "policy-only",
|
|
876
|
+
},
|
|
877
|
+
});
|
|
878
|
+
process.stderr.write(
|
|
879
|
+
"Warning: sandbox mode is explicitly off; shell commands use policy checks without OS isolation.\n",
|
|
880
|
+
);
|
|
881
|
+
}
|
|
882
|
+
} catch (err) {
|
|
883
|
+
process.stderr.write(`Error: ${err.message}\n`);
|
|
884
|
+
await _finishWorktree();
|
|
885
|
+
process.exit(6);
|
|
818
886
|
}
|
|
819
887
|
|
|
820
888
|
// Extra workspace roots (--add-dir) 鈥?shared by headless + interactive.
|
|
@@ -1014,6 +1082,7 @@ export function registerAgentCommand(program) {
|
|
|
1014
1082
|
allowedTools: parseToolList(options.allowedTools),
|
|
1015
1083
|
disallowedTools: parseToolList(options.disallowedTools),
|
|
1016
1084
|
additionalDirectories,
|
|
1085
|
+
sandbox: resolvedAgentSandbox,
|
|
1017
1086
|
maxTurns: options.maxTurns
|
|
1018
1087
|
? parseInt(options.maxTurns, 10)
|
|
1019
1088
|
: undefined,
|
|
@@ -1179,20 +1248,6 @@ export function registerAgentCommand(program) {
|
|
|
1179
1248
|
}
|
|
1180
1249
|
return;
|
|
1181
1250
|
}
|
|
1182
|
-
const agentSandbox = normalizeAgentSandbox(options.sandbox, {
|
|
1183
|
-
cwd: process.cwd(),
|
|
1184
|
-
network: options.sandboxNetwork === true,
|
|
1185
|
-
settings: settingsSandbox,
|
|
1186
|
-
});
|
|
1187
|
-
// Strict sandbox mode: failIfUnavailable refuses to START when the
|
|
1188
|
-
// configured engine can't run — no silent per-command degradation.
|
|
1189
|
-
try {
|
|
1190
|
-
assertSandboxAvailable(agentSandbox);
|
|
1191
|
-
} catch (err) {
|
|
1192
|
-
process.stderr.write(`Error: ${err.message}\n`);
|
|
1193
|
-
await _finishWorktree();
|
|
1194
|
-
process.exit(6); // config error (see lib/exit-codes.cjs)
|
|
1195
|
-
}
|
|
1196
1251
|
// Resume requested onto a session with no headless (JSONL) transcript?
|
|
1197
1252
|
// Warn instead of silently starting empty 鈥?headless resume rebuilds
|
|
1198
1253
|
// from the JSONL store only (DB-only sessions are not replayable here).
|
|
@@ -1246,7 +1301,7 @@ export function registerAgentCommand(program) {
|
|
|
1246
1301
|
allowedTools: parseToolList(options.allowedTools),
|
|
1247
1302
|
disallowedTools: parseToolList(options.disallowedTools),
|
|
1248
1303
|
additionalDirectories,
|
|
1249
|
-
sandbox:
|
|
1304
|
+
sandbox: resolvedAgentSandbox,
|
|
1250
1305
|
autoCheckpoint,
|
|
1251
1306
|
managedCheckpoint: options.managedCheckpoint === true,
|
|
1252
1307
|
managedCheckpointStateDir: options.managedCheckpointState || null,
|
|
@@ -1420,18 +1475,6 @@ export function registerAgentCommand(program) {
|
|
|
1420
1475
|
|
|
1421
1476
|
// Strict sandbox mode also guards the interactive session: refuse to
|
|
1422
1477
|
// start when failIfUnavailable is set and the engine can't run.
|
|
1423
|
-
const interactiveSandbox = normalizeAgentSandbox(options.sandbox, {
|
|
1424
|
-
cwd: process.cwd(),
|
|
1425
|
-
network: options.sandboxNetwork === true,
|
|
1426
|
-
settings: settingsSandbox,
|
|
1427
|
-
});
|
|
1428
|
-
try {
|
|
1429
|
-
assertSandboxAvailable(interactiveSandbox);
|
|
1430
|
-
} catch (err) {
|
|
1431
|
-
process.stderr.write(`Error: ${err.message}\n`);
|
|
1432
|
-
process.exit(6); // config error (see lib/exit-codes.cjs)
|
|
1433
|
-
}
|
|
1434
|
-
|
|
1435
1478
|
const runtime = createAgentRuntimeFactory().createAgentRuntime({
|
|
1436
1479
|
model: options.model,
|
|
1437
1480
|
thinking,
|
|
@@ -1453,7 +1496,7 @@ export function registerAgentCommand(program) {
|
|
|
1453
1496
|
parkOnExit: options.parkOnExit, // false when --no-park-on-exit
|
|
1454
1497
|
bundlePath: options.bundle || null,
|
|
1455
1498
|
additionalDirectories,
|
|
1456
|
-
sandbox:
|
|
1499
|
+
sandbox: resolvedAgentSandbox,
|
|
1457
1500
|
autoCheckpoint,
|
|
1458
1501
|
managedCheckpoint: options.managedCheckpoint === true,
|
|
1459
1502
|
managedCheckpointStateDir: options.managedCheckpointState || null,
|