chainlesschain 0.162.188 → 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-Brr1LVcE.js → AIOps-DBLkaTje.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DQU74DKG.js → ActionButton-BAy-Qebo.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CYp9178y.js → Analytics-Dfb1Mlau.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-DW4SCYsW.js → AppLayout-BbFkN8m0.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CYlD_ed1.js → Artifacts-kM4-cEEH.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CWl1rZOi.js → Audit-BSQfYWf3.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BOR-LPsa.js → BackgroundAgents-CWDbI_fG.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DLpG7j1X.js → Backup-BxLPbq_Q.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-B35K9wdr.js → BaseInput-DuIbdrp6.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CwUJb9gB.js → Chat-NEmjGahU.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-1v6aMS1m.js → ChatBubbleRenderer-DfJEo-5_.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-pi3-tPNW.js → Checkbox-CaoeG3Ns.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-FyNF35eL.js → Codegen-BFf_g3xY.js} +1 -1
- package/src/assets/web-panel/assets/{Col-tGt_JDEr.js → Col-CNOd8mdQ.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CC7LonQX.js → Community-BhpDqz-i.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BGXrHHjE.js → Compact-CQ42T7Z6.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DSW0TBZ8.js → Compliance-DI5PcLMN.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Bhk7rbvE.js → Cowork-wYYZe0wR.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DxyiQ2NZ.js → Cron-Dlq03DD_.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-B2ZkxHok.js → Crosschain-BzqS8PP3.js} +1 -1
- package/src/assets/web-panel/assets/{DID-yOJV99eJ.js → DID-It55Yem7.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CKsttz7D.js → Dashboard-9HkH6oxn.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CVFldXSL.js → Dropdown-00e2YWRB.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Bufv638J.js → EmailListRenderer-By-ugRDL.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-4ncjoIjL.js → FamilyGuardDashboard-C396yu5m.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DsknEDoX.js → Federation-BME5sbZY.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Cqe5jWXA.js → FormItemContext-B4TEZCr-.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-NAJaFKxc.js → GenericCardRenderer-_9CX9ieY.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CszKQpnl.js → Git-BrS6WVSr.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BXGodXi6.js → Governance-BMdCWnKF.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CkoYuG2c.js → Inference-Bcp3vzcA.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DFlEr_T0.js → KnowledgeGraph-DlLuqGY5.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CVaENddA.js → Logs-D-W_6x09.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-DElGPxCZ.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-CDlLT0fw.js → Marketplace-Dzn2guvI.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DdwOyszN.js → McpTools-uPict-KL.js} +6 -6
- package/src/assets/web-panel/assets/{Memory-DKQnkKuG.js → Memory-BCw43kOb.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DGseqlzJ.js → MobileBridge-DmV8Wv7F.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-COBbEOlj.js → MobileProjects-C-HaCmSM.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-O61Vwyli.js → Mtc-C6jxJ34Y.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-Dw2SyasS.js → MtcAudit-Za8ExwhQ.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-hSu_l8kf.js → Multisig-KKDbuEgb.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CX1Epurr.js → NLProgramming-Dj97zbCk.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-R9xX8o8_.js → Notes-DBXvMraU.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-jtSNLCuK.js → NotificationSettings-DOxITLYl.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-7DVjZwMM.js +1 -0
- package/src/assets/web-panel/assets/{Organization-Pu2WO-U3.js → Organization-D1i73mjb.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BjnqUyFp.js → Overflow-kW6Q3rvg.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-jjkvz44c.js → P2P-C-v_8p2v.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-tUbbY64W.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-D4yDpivd.js → Permissions-DkHxEZ58.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-0qsL6iH1.js → PersonalDataHub-DWuMPGrK.js} +5 -5
- package/src/assets/web-panel/assets/{Pipeline-Cx7Ybrk2.js → Pipeline-30IYXWWm.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-PbfR_M_V.js → Privacy-DZNQ4RrH.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CyV6Gsub.js → ProjectInit-De2MCElf.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-C7KZ2Wdk.js → ProjectSettings-5uHk9wsC.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-DQDjO-yK.js → Projects-XjDfrFLb.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DyFVBBMX.js → Providers-Bgwj6gcE.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CzB1BC9_.js → QrScannerModal-gKql9umv.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Bk636mC1.js → QuickAsk-BWvmwkh7.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DoWxHIT3.js → Recommend-Uok4hZPd.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-oOVIv9wq.js → RemoteSession-DLJzTk9a.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-BucoReGG.js → Reputation-ZVwIPMSO.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DzmOdJU7.js → Row-CN04HxWR.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-C1tK7KGU.js → RssFeed-BdSrEG4g.js} +3 -3
- package/src/assets/web-panel/assets/{Search-CSnInOqk.js → Search-5PwVd0IR.js} +1 -1
- package/src/assets/web-panel/assets/{Security-dlejr15l.js → Security-DdBo4zjN.js} +3 -3
- package/src/assets/web-panel/assets/{Services-BioPZuNh.js → Services-D3letU7M.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DWMibwpC.js → Skeleton--Jb83f1v.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BAAnx1B2.js → Skills-Bg-CulHX.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-jWNp4hNO.js → Sla-7QOa7S-X.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-y5kqKha-.js → SpeechSettings-DQwppjRw.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-B9GNsc3e.js → SyncSettings-dNPQGL-s.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BDBYKRen.js → Tasks-Ggs-Z48q.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DRiE5eaN.js → Templates-78TYHgRO.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BGlAvExF.js → Tenant-xHwwv9vO.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-B8uzrbNY.js → Terminal-BJXSJfm4.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Df48iveY.js → TimelineRenderer-fLbjRhJw.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CcmHndN6.js → Tokens-oMSBSBmB.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DPkWxmQ2.js → Trigger-CfnY_wX_.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DTb5a5AV.js → Trust-AdyTgYKO.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CBmg5vch.js → UkeySign-C5K_81dS.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-B0mZrz4O.js → VideoEditing-vcGVDqki.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Bxs7_mpd.js → Wallet-hhOc3hlY.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-C8x3cMxU.js → WebAuthn-CVloC11s.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-DPrNznrP.js → WorkflowEditor-CYeE32R5.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D3bYWu7S.js → chat-CNROR5bN.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DY-PwMu4.js → colors-Cjx-cnwU.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-LDk10Kw6.js → compact-item-DOIfelvD.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C-2MZnFq.js → createContext-DfA7UZ8u.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-ChcCBGs7.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BQIBjcnB.js → hasIn-BMSCzcfM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQVb2dWp.js → index-5-HXgOX5.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdXnYMCZ.js → index-AWg-0M1S.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cx6D_dx2.js → index-B4iYzpkL.js} +1 -1
- package/src/assets/web-panel/assets/{index-_HRO_cIu.js → index-B5Udeb_6.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlRYqt3S.js → index-B7gf77CJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BrnRO9yE.js → index-BEMwBBHk.js} +1 -1
- package/src/assets/web-panel/assets/{index-VCh5zNJo.js → index-BM1y_9hM.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRI3ngNg.js → index-BUonmKSE.js} +1 -1
- package/src/assets/web-panel/assets/{index-C3GNvExG.js → index-BbQ2eQ8H.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSvo_bp0.js → index-BemJ2u_E.js} +1 -1
- package/src/assets/web-panel/assets/{index-L6qixyLc.js → index-BolaOQxx.js} +1 -1
- package/src/assets/web-panel/assets/{index-BI4KgcYC.js → index-BxOk9vkG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CY4KnaO9.js → index-By61ojUx.js} +1 -1
- package/src/assets/web-panel/assets/{index-L3smcoQX.js → index-C2K9SNVX.js} +1 -1
- package/src/assets/web-panel/assets/{index-BX2b9Orc.js → index-C3L5gdiD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz4b6Z_7.js → index-C7xn0Nub.js} +1 -1
- package/src/assets/web-panel/assets/{index-COG61sRv.js → index-CAnvhwg6.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7FC8cP2.js → index-CEKMcOyU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BN-xdSWZ.js → index-CNC5onm4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DY2FIrmz.js → index-CVL27kXC.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiTvBAr-.js → index-CVm1_i3t.js} +1 -1
- package/src/assets/web-panel/assets/{index-DhRt9cYJ.js → index-CdYBye8B.js} +1 -1
- package/src/assets/web-panel/assets/{index-B5pgtZnY.js → index-ClNMrqEY.js} +1 -1
- package/src/assets/web-panel/assets/{index-7xKu7Fns.js → index-Cs6l7uRu.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4K1weKc.js → index-CshQbilz.js} +1 -1
- package/src/assets/web-panel/assets/{index-k7C_oDCO.js → index-Cyweh0Hy.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3Oq-DLL.js → index-DBpWXFed.js} +3 -3
- package/src/assets/web-panel/assets/{index-DYyLJPlF.js → index-DHtpHZAQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dh-tkpKQ.js → index-DLmn0BoK.js} +1 -1
- package/src/assets/web-panel/assets/{index-8JC9BJa1.js → index-DPAWBrMf.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dd2Km97U.js → index-DjEsxO5h.js} +1 -1
- package/src/assets/web-panel/assets/{index-KFZO_lcx.js → index-FBc_CJBd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTIZpPtG.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-lmm9p-jm.js → index-dCd8cSUq.js} +1 -1
- package/src/assets/web-panel/assets/{index-HasPt4-h.js → index-m2vG9gG_.js} +1 -1
- package/src/assets/web-panel/assets/{index-CaslYch6.js → index-mTpHoEzr.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbR6ROOa.js → index-ti_lnTWl.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-zQPSHf2C.js → initDefaultProps-Bu8k7H1Y.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CKCStGVk.js → motion-s3iVK41k.js} +1 -1
- package/src/assets/web-panel/assets/{move-BufVDGYF.js → move-B6B-E5Jz.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DcaFxy5D.js → mtc-parser-BiYgTidA.js} +1 -1
- package/src/assets/web-panel/assets/{omit-EScpkGdo.js → omit-pU1RdUDA.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-72hG_qfT.js → pickAttrs-Cdoq_SeM.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CMFWiH20.js → placementArrow-DIuvAn2K.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DKQHS41p.js → responsiveObserve-8w16YR2D.js} +1 -1
- package/src/assets/web-panel/assets/{slide-QVAFHTIQ.js → slide-VZ01cZe3.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DIz38e2G.js → statusUtils-lh8YMN8Z.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-zK5cyLby.js → styleChecker-CmDyreec.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DhZngk62.js → useFlexGapSupport-hiJWMU5y.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BvV2cvkg.js → useFs-Thnu-Iaj.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CRmxb9l3.js → usePersonalDataHub-LBdOxjwY.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CgQIbobP.js → vnode-Cg6lFY_X.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-D4XrrO0R.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 +98 -33
- package/src/commands/artifacts.js +400 -2
- package/src/commands/background-session.js +41 -3
- package/src/commands/checkpoint-managed.js +1059 -0
- package/src/commands/checkpoint-restore-recovery.js +1476 -0
- package/src/commands/checkpoint.js +950 -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/team-distributed.js +3324 -0
- package/src/commands/team.js +1130 -74
- package/src/commands/update.js +68 -6
- package/src/constants.js +11 -0
- package/src/data/changelog.json +26 -0
- 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 +2 -0
- package/src/lib/agent-sandbox.js +120 -26
- package/src/lib/agent-session-export.js +20 -0
- package/src/lib/agent-team/task-lease.js +271 -3
- package/src/lib/agent-team/team-adjudication.js +1501 -0
- package/src/lib/agent-team/team-budget.js +4 -1
- package/src/lib/agent-team/team-control-store.js +582 -0
- package/src/lib/agent-team/team-distributed-queue.js +5246 -0
- package/src/lib/agent-team/team-process-checkpoint.js +211 -0
- package/src/lib/agent-team/team-runner.js +543 -24
- package/src/lib/agent-team/team-worktree.js +1403 -95
- 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/managed-checkpoint-render.js +60 -0
- package/src/lib/managed-tool-checkpoint.js +194 -0
- 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 +491 -13
- package/src/lib/process-execution-broker/linux-generic-bwrap-runtime.js +28 -1
- package/src/lib/process-execution-broker/linux-generic-bwrap.js +28 -4
- package/src/lib/process-execution-broker/platform-sandbox.js +92 -70
- 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 +284 -19
- package/src/lib/process-execution-broker/workspace-transaction.js +4459 -0
- 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-file-identity.js +433 -0
- 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/turn-binding.js +160 -2
- package/src/lib/with-file-lock.js +165 -24
- 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 +2175 -146
- 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 +1630 -447
- 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 +310 -118
- package/src/runtime/headless-stream.js +356 -95
- package/src/runtime/mcp-config.js +148 -14
- package/src/runtime/policies/agent-policy.js +14 -0
- package/src/runtime/status-diagnostics-lite.js +137 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-7iWGwZ-r.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BU2Yqq5H.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-69ca_WeR.js +0 -7
- package/src/assets/web-panel/assets/devWarning-B4dXIJqD.js +0 -1
- package/src/assets/web-panel/assets/index-C-C7DaG6.js +0 -1
- package/src/assets/web-panel/assets/index-DkfWzWtd.js +0 -1
package/src/commands/pack.js
CHANGED
|
@@ -61,7 +61,6 @@ export function registerPackCommand(program) {
|
|
|
61
61
|
.option(
|
|
62
62
|
"-t, --targets <list>",
|
|
63
63
|
"Comma-separated pkg targets (defaults to current host platform)",
|
|
64
|
-
defaultPkgTarget(),
|
|
65
64
|
)
|
|
66
65
|
.option("--ws-port <n>", "Default WS port baked into the artifact", "18800")
|
|
67
66
|
.option(
|
|
@@ -154,9 +153,20 @@ export function registerPackCommand(program) {
|
|
|
154
153
|
"--update-manifest-url <url>",
|
|
155
154
|
"OTA manifest URL to bake into the artifact (enables `cc pack check-update`)",
|
|
156
155
|
)
|
|
156
|
+
.option(
|
|
157
|
+
"--update-public-key <path>",
|
|
158
|
+
"Trusted Ed25519 public key PEM to bake in for signed update manifests",
|
|
159
|
+
)
|
|
157
160
|
.action(async (opts) => {
|
|
158
161
|
try {
|
|
159
|
-
|
|
162
|
+
// Resolve the host-aware default at execution time. Supplying it as
|
|
163
|
+
// Commander's option default makes generated help platform-dependent,
|
|
164
|
+
// which causes the committed help index to drift across CI hosts.
|
|
165
|
+
const runOptions = {
|
|
166
|
+
...opts,
|
|
167
|
+
targets: opts.targets || defaultPkgTarget(),
|
|
168
|
+
};
|
|
169
|
+
const result = await runPack(runOptions, { logger });
|
|
160
170
|
if (opts.dryRun) {
|
|
161
171
|
logger.log(
|
|
162
172
|
chalk.green(
|
|
@@ -420,7 +430,9 @@ export function registerPackCommand(program) {
|
|
|
420
430
|
const plan = await scheduleReplace({
|
|
421
431
|
newExePath: dl.outputPath,
|
|
422
432
|
targetExePath: targetExe,
|
|
433
|
+
expectedSha256: dl.sha256,
|
|
423
434
|
restart: Boolean(opts.restart),
|
|
435
|
+
verify: true,
|
|
424
436
|
});
|
|
425
437
|
if (opts.json) {
|
|
426
438
|
logger.log(JSON.stringify({ applied: true, ...plan }, null, 2));
|
|
@@ -732,7 +744,9 @@ export async function runAutoUpdate({
|
|
|
732
744
|
plan = await applyImpl({
|
|
733
745
|
newExePath: dl.outputPath,
|
|
734
746
|
targetExePath: targetExe,
|
|
747
|
+
expectedSha256: dl.sha256,
|
|
735
748
|
restart,
|
|
749
|
+
verify: true,
|
|
736
750
|
});
|
|
737
751
|
} catch (err) {
|
|
738
752
|
const code = err instanceof ApplyError ? err.code : "UNKNOWN";
|
package/src/commands/plugin.js
CHANGED
|
@@ -1369,10 +1369,10 @@ export function registerPluginCommand(program) {
|
|
|
1369
1369
|
}
|
|
1370
1370
|
});
|
|
1371
1371
|
|
|
1372
|
-
// plugin options — view a plugin's resolved typed options, or set
|
|
1373
|
-
//
|
|
1374
|
-
//
|
|
1375
|
-
//
|
|
1372
|
+
// plugin options — view a plugin's resolved typed options, or set
|
|
1373
|
+
// non-sensitive values at a scope. Sensitive values are rejected on this
|
|
1374
|
+
// argv-based surface because process arguments and shell history are not a
|
|
1375
|
+
// credential transport.
|
|
1376
1376
|
plugin
|
|
1377
1377
|
.command("options <name>")
|
|
1378
1378
|
.description(
|
|
@@ -1381,7 +1381,7 @@ export function registerPluginCommand(program) {
|
|
|
1381
1381
|
.option("--scope <scope>", "Scope for --set (user|project)", "user")
|
|
1382
1382
|
.option(
|
|
1383
1383
|
"--set <pair>",
|
|
1384
|
-
"Set
|
|
1384
|
+
"Set a non-sensitive option value (key=value); repeatable",
|
|
1385
1385
|
(v, acc) => {
|
|
1386
1386
|
acc.push(v);
|
|
1387
1387
|
return acc;
|
|
@@ -1413,20 +1413,28 @@ export function registerPluginCommand(program) {
|
|
|
1413
1413
|
// --set: persist values at the requested scope (then fall through to show).
|
|
1414
1414
|
if (options.set && options.set.length) {
|
|
1415
1415
|
const scope = options.scope === "project" ? "project" : "user";
|
|
1416
|
-
const
|
|
1417
|
-
cwd: process.cwd(),
|
|
1418
|
-
schema,
|
|
1419
|
-
});
|
|
1416
|
+
const updates = Object.create(null);
|
|
1420
1417
|
for (const pair of options.set) {
|
|
1421
1418
|
const eq = pair.indexOf("=");
|
|
1422
1419
|
if (eq <= 0) {
|
|
1423
|
-
logger.error(
|
|
1420
|
+
logger.error("Invalid --set value (expected key=value)");
|
|
1421
|
+
process.exitCode = 1;
|
|
1422
|
+
return;
|
|
1423
|
+
}
|
|
1424
|
+
const key = pair.slice(0, eq);
|
|
1425
|
+
const descriptor = Object.prototype.hasOwnProperty.call(schema, key)
|
|
1426
|
+
? schema[key]
|
|
1427
|
+
: null;
|
|
1428
|
+
if (descriptor?.sensitive) {
|
|
1429
|
+
logger.error(
|
|
1430
|
+
`Sensitive option "${key}" cannot be supplied via --set because command-line arguments are observable`,
|
|
1431
|
+
);
|
|
1424
1432
|
process.exitCode = 1;
|
|
1425
1433
|
return;
|
|
1426
1434
|
}
|
|
1427
|
-
|
|
1435
|
+
updates[key] = pair.slice(eq + 1);
|
|
1428
1436
|
}
|
|
1429
|
-
optsMod.
|
|
1437
|
+
optsMod.patchPluginOptionValues(name, updates, scope, {
|
|
1430
1438
|
cwd: process.cwd(),
|
|
1431
1439
|
schema,
|
|
1432
1440
|
});
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { logger } from "../lib/logger.js";
|
|
3
|
+
import { resolveSessionId as storeResolveSessionId } from "../harness/jsonl-session-store.js";
|
|
4
|
+
import {
|
|
5
|
+
adjudicateMcpRecovery,
|
|
6
|
+
buildMcpRecoveryAdjudicationChallenge,
|
|
7
|
+
publicMcpRecoveryAuthority,
|
|
8
|
+
readMcpRecoveryAuthority,
|
|
9
|
+
} from "../lib/mcp-recovery-adjudication.js";
|
|
10
|
+
|
|
11
|
+
function commandError(code, message) {
|
|
12
|
+
const error = new Error(message);
|
|
13
|
+
error.code = code;
|
|
14
|
+
return error;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function resolveJsonlSession(id, dependencies = {}) {
|
|
18
|
+
const resolveSessionId =
|
|
19
|
+
dependencies.resolveSessionId || storeResolveSessionId;
|
|
20
|
+
const sessionId = resolveSessionId(id);
|
|
21
|
+
if (!sessionId) {
|
|
22
|
+
throw commandError(
|
|
23
|
+
"CC_MCP_RECOVERY_SESSION_NOT_FOUND",
|
|
24
|
+
`JSONL session not found: ${id}`,
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
return sessionId;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export async function requireMcpRecoveryTypedChallenge(
|
|
31
|
+
request,
|
|
32
|
+
dependencies = {},
|
|
33
|
+
) {
|
|
34
|
+
const stdin = dependencies.stdin || process.stdin;
|
|
35
|
+
const stdout = dependencies.stdout || process.stdout;
|
|
36
|
+
if (stdin?.isTTY !== true || stdout?.isTTY !== true) {
|
|
37
|
+
throw commandError(
|
|
38
|
+
"CC_MCP_RECOVERY_ADJUDICATION_NON_INTERACTIVE",
|
|
39
|
+
"MCP recovery adjudication requires an interactive TTY",
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
const challenge = buildMcpRecoveryAdjudicationChallenge(request);
|
|
43
|
+
const readChallenge =
|
|
44
|
+
dependencies.readChallenge ||
|
|
45
|
+
(async (expected) => {
|
|
46
|
+
const { input } = await import("@inquirer/prompts");
|
|
47
|
+
return input({
|
|
48
|
+
message:
|
|
49
|
+
"First stop every active host for this session. " +
|
|
50
|
+
`Then type this operator attestation exactly:\n${expected}`,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
const answer = await readChallenge(challenge);
|
|
54
|
+
if (answer !== challenge) {
|
|
55
|
+
throw commandError(
|
|
56
|
+
"CC_MCP_RECOVERY_ADJUDICATION_CHALLENGE_FAILED",
|
|
57
|
+
"MCP recovery adjudication challenge did not match; no change was made",
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
return challenge;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export async function readMcpRecoveryReason(dependencies = {}) {
|
|
64
|
+
const stdin = dependencies.stdin || process.stdin;
|
|
65
|
+
const stdout = dependencies.stdout || process.stdout;
|
|
66
|
+
if (stdin?.isTTY !== true || stdout?.isTTY !== true) {
|
|
67
|
+
throw commandError(
|
|
68
|
+
"CC_MCP_RECOVERY_ADJUDICATION_NON_INTERACTIVE",
|
|
69
|
+
"MCP recovery adjudication requires an interactive TTY",
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
const readReason =
|
|
73
|
+
dependencies.readReason ||
|
|
74
|
+
(async () => {
|
|
75
|
+
const { input } = await import("@inquirer/prompts");
|
|
76
|
+
return input({
|
|
77
|
+
message: "Reason (its digest only is persisted; do not enter secrets)",
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
return readReason();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function showMcpRecoveryCommand(id, dependencies = {}) {
|
|
84
|
+
const sessionId = resolveJsonlSession(id, dependencies);
|
|
85
|
+
const recovery = readMcpRecoveryAuthority(sessionId, dependencies);
|
|
86
|
+
return publicMcpRecoveryAuthority(sessionId, recovery);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export async function adjudicateMcpRecoveryCommand(
|
|
90
|
+
id,
|
|
91
|
+
options,
|
|
92
|
+
dependencies = {},
|
|
93
|
+
) {
|
|
94
|
+
const sessionId = resolveJsonlSession(id, dependencies);
|
|
95
|
+
const challengeRequest = {
|
|
96
|
+
sessionId,
|
|
97
|
+
ledgerId: options.ledgerId,
|
|
98
|
+
decision: options.decision,
|
|
99
|
+
recoveryDigest: options.expectedRecoveryDigest,
|
|
100
|
+
};
|
|
101
|
+
const reason = await readMcpRecoveryReason(dependencies);
|
|
102
|
+
await requireMcpRecoveryTypedChallenge(challengeRequest, dependencies);
|
|
103
|
+
return adjudicateMcpRecovery(
|
|
104
|
+
{
|
|
105
|
+
sessionId,
|
|
106
|
+
ledgerId: options.ledgerId,
|
|
107
|
+
decision: options.decision,
|
|
108
|
+
expectedHeadHash: options.expectedHeadHash,
|
|
109
|
+
expectedRecoveryDigest: options.expectedRecoveryDigest,
|
|
110
|
+
reason,
|
|
111
|
+
},
|
|
112
|
+
dependencies,
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function printRecoveryAuthority(authority, outputLogger = logger) {
|
|
117
|
+
outputLogger.log(chalk.bold(`MCP recovery: ${authority.sessionId}`));
|
|
118
|
+
outputLogger.log(` verified: ${authority.verified ? "yes" : "no"}`);
|
|
119
|
+
outputLogger.log(` headHash: ${authority.headHash || "(none)"}`);
|
|
120
|
+
outputLogger.log(` recoveryDigest: ${authority.recoveryDigest || "(none)"}`);
|
|
121
|
+
outputLogger.log(` blockMode: ${authority.blockMode || "none"}`);
|
|
122
|
+
outputLogger.log(` remediation: ${authority.remediation || "none"}`);
|
|
123
|
+
for (const record of authority.unsettled) {
|
|
124
|
+
outputLogger.log(
|
|
125
|
+
` outcome unknown: ${record.ledgerId} ${record.serverName}/${record.toolName} [${record.effect}]`,
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
for (const incident of authority.incidents) {
|
|
129
|
+
outputLogger.log(
|
|
130
|
+
` incident: ${incident.code}${incident.ledgerId ? ` (${incident.ledgerId})` : ""}`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
for (const adjudication of authority.adjudications) {
|
|
134
|
+
outputLogger.log(
|
|
135
|
+
` adjudication: ${adjudication.ledgerId} ${adjudication.decision} ` +
|
|
136
|
+
`${adjudication.requestId} ${adjudication.reasonDigest}`,
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
for (const deny of authority.replayDenied) {
|
|
140
|
+
outputLogger.log(
|
|
141
|
+
` replay denied: ${deny.ledgerId} ${deny.serverName}/${deny.toolName} ${deny.replayDigest}`,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function registerSessionMcpRecoveryCommands(session, dependencies = {}) {
|
|
147
|
+
const outputLogger = dependencies.logger || logger;
|
|
148
|
+
const recovery = session
|
|
149
|
+
.command("mcp-recovery")
|
|
150
|
+
.description("Inspect or adjudicate verified MCP outcome-unknown calls");
|
|
151
|
+
|
|
152
|
+
recovery
|
|
153
|
+
.command("show", { isDefault: true })
|
|
154
|
+
.description("Show verified MCP recovery authority (read-only)")
|
|
155
|
+
.argument("<id>", "JSONL session ID or prefix")
|
|
156
|
+
.option("--json", "Output as JSON")
|
|
157
|
+
.action(async (id, options) => {
|
|
158
|
+
try {
|
|
159
|
+
const authority = showMcpRecoveryCommand(id, dependencies);
|
|
160
|
+
if (options.json) {
|
|
161
|
+
console.log(JSON.stringify(authority, null, 2));
|
|
162
|
+
} else {
|
|
163
|
+
printRecoveryAuthority(authority, outputLogger);
|
|
164
|
+
}
|
|
165
|
+
} catch (error) {
|
|
166
|
+
outputLogger.error(`MCP recovery show failed: ${error.message}`);
|
|
167
|
+
process.exitCode = 1;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
recovery
|
|
172
|
+
.command("adjudicate")
|
|
173
|
+
.description(
|
|
174
|
+
"Attest hosts are stopped, then append one TTY-confirmed recovery decision",
|
|
175
|
+
)
|
|
176
|
+
.argument("<id>", "JSONL session ID or prefix")
|
|
177
|
+
.requiredOption("--ledger-id <id>", "Started-only MCP ledger ID")
|
|
178
|
+
.requiredOption(
|
|
179
|
+
"--decision <decision>",
|
|
180
|
+
"confirmed_applied or confirmed_not_applied",
|
|
181
|
+
)
|
|
182
|
+
.requiredOption(
|
|
183
|
+
"--expected-head-hash <digest>",
|
|
184
|
+
"Exact headHash from the latest mcp-recovery show",
|
|
185
|
+
)
|
|
186
|
+
.requiredOption(
|
|
187
|
+
"--expected-recovery-digest <digest>",
|
|
188
|
+
"Exact recoveryDigest from the latest mcp-recovery show",
|
|
189
|
+
)
|
|
190
|
+
.option("--json", "Output as JSON after interactive confirmation")
|
|
191
|
+
.action(async (id, options) => {
|
|
192
|
+
try {
|
|
193
|
+
const result = await adjudicateMcpRecoveryCommand(
|
|
194
|
+
id,
|
|
195
|
+
options,
|
|
196
|
+
dependencies,
|
|
197
|
+
);
|
|
198
|
+
if (options.json) {
|
|
199
|
+
console.log(JSON.stringify(result, null, 2));
|
|
200
|
+
} else {
|
|
201
|
+
outputLogger.success(
|
|
202
|
+
`Recorded ${result.decision} for ${result.ledgerId} at ${result.headHash}`,
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
outputLogger.warn(
|
|
206
|
+
"Recorded authority is not adopted by any host until restart/resume. " +
|
|
207
|
+
"Keep every prior host stopped; if one remained active, stop it and inspect the transcript before any MCP call.",
|
|
208
|
+
);
|
|
209
|
+
} catch (error) {
|
|
210
|
+
outputLogger.error(
|
|
211
|
+
`MCP recovery adjudication failed: ${error.message}`,
|
|
212
|
+
);
|
|
213
|
+
process.exitCode = 1;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
return recovery;
|
|
218
|
+
}
|