chainlesschain 0.162.174 → 0.162.176
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 +10 -10
- package/src/assets/web-panel/assets/{AIOps-Dcl-X1Hw.js → AIOps-BDLu5Elz.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-ClMh9HzT.js → ActionButton-DH5us-CK.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DPj0rSQ5.js → Analytics-BZ0u8IFG.js} +3 -3
- package/src/assets/web-panel/assets/AppLayout-Duu8xR14.js +9 -0
- package/src/assets/web-panel/assets/{Artifacts-L8781rE8.js → Artifacts-Br2YBbh_.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CffB6WIP.js → Audit-C3C6a482.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BkLhayyY.js → BackgroundAgents-CzHvebcj.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BQnwFI78.js → Backup-DZNHYDFd.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-xuUGHQch.js → BaseInput-VRiC4fIx.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-feQXwWrg.js → Chat-Cm08WWAD.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-CGHYrugQ.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DVaIiUGW.js → Checkbox-DtByk7d7.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-D2kEnzeU.js → Codegen-CphXXOfD.js} +1 -1
- package/src/assets/web-panel/assets/{Col-azDoyusS.js → Col-Hz86TnLR.js} +1 -1
- package/src/assets/web-panel/assets/{Community-OZdnPWM5.js → Community-HP03ltpD.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-VDMvBN-C.js → Compact-B_N1mqQz.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CPJ_zgQ1.js → Compliance-CVztRpi8.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-iRBwcsOA.js → Cowork-wUVOyZih.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-DrxrspUz.js → Cron-DW5TLJKw.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-D-rkAZXF.js → Crosschain-CrAFGhWH.js} +1 -1
- package/src/assets/web-panel/assets/{DID-5Pp1Xnmr.js → DID-pA-oD8ke.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-CXrd5gAw.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-BWj_E0Ie.js → Dropdown-EweJcsek.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BT-wgSEh.js → EmailListRenderer-C9xVLPG4.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-1PzH23pa.js → FamilyGuardDashboard-CDcEEqlu.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BxMIXGC6.js → Federation-DtZda9A_.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-CyJobBln.js → FormItemContext-CiYdcVz3.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-YkjFuQTN.js → GenericCardRenderer-DA13uwA0.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C2a98Wp_.js → Git-DzRhZD1O.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DKL3Fl84.js → Governance-D5RMgOSb.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BJ2cQC_3.js → Inference-BgrPfSNk.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DBAsOngt.js → KnowledgeGraph-DzjnD571.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-COt8g9LO.js → Logs-BhWzVDtN.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-3Lfht1Fd.js → MarkdownRenderer-BDape9cx.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-C9Zk9Pb2.js → Marketplace-DJtL5GV7.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DDWDFWPO.js → McpTools-CZcQygI7.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-BRmVye_o.js → Memory-DUWSDUUu.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CppBbWpD.js → MobileBridge-BTwq2WKY.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-NZvvfDME.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CcWpeGa6.js → Mtc-BiGugEQm.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-BcllEq0K.js → MtcAudit-DY7a6gUe.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-BFD1CarL.js → Multisig-BQbDu_w7.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-QNXXYvjz.js → NLProgramming-CM2wXTLv.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-07YwgQVy.js → Notes-DI6gGs1v.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-bOccEInE.js → NotificationSettings-BsZOLWAB.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DlRi29WL.js → OrderTableRenderer-C48mu09U.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CBaezzEr.js → Organization-Cds0_tXr.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Bl5NohFO.js → Overflow-WunYMD87.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CLMal9Aw.js → P2P-Bo6j4DDv.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CGO0NITk.js → PdhVaultBrowser-Bh2XPD5f.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CPSw48E2.js → Permissions-EMvMMC8N.js} +3 -3
- package/src/assets/web-panel/assets/{PersonalDataHub-CDM5n134.js → PersonalDataHub-AX3ypUDV.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-BdsqG7WV.js → Pipeline-BOx8HOgL.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-B6L4E-M7.js → Privacy-tBeTVQVM.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DXPyZKRs.js → ProjectInit-CVYg1W4M.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BrCC3xYT.js → ProjectSettings-Dvt5I7y1.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BYmuHC2q.js → Projects-Cc7FC9-e.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CbCe2eUl.js → Providers-Ct8xqY-E.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DkukgCrR.js → QrScannerModal-Cni8Ooja.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-D-htOrV8.js → QuickAsk-BJVLKdxr.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Bm7SIfzu.js → Recommend-DPG8Rbbm.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-C9rP-iMc.js → RemoteSession-DsdR7dCt.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-kGlUgbsl.js → Reputation-Csg1YM-b.js} +1 -1
- package/src/assets/web-panel/assets/{Row-PBupbbUA.js → Row-D9DoFoEf.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-njlwKUGK.js → RssFeed-BsvKrXMS.js} +2 -2
- package/src/assets/web-panel/assets/{Search-DLdEmgBw.js → Search-DFUStfgQ.js} +1 -1
- package/src/assets/web-panel/assets/{Security-SXGPSHdu.js → Security-ILg1zxdK.js} +4 -4
- package/src/assets/web-panel/assets/{Services-CuFGnNsb.js → Services-Dd41PCaY.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CtUC0mDa.js → Skeleton-Bzo1cN80.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-P1qgOVFn.js → Skills-BDHh17P0.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-CsppE8YV.js → Sla-jl7UTiRY.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Cq1oG56m.js → SpeechSettings-BePa-RF6.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DdKW6V-C.js → SyncSettings-DiqqDKGZ.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-BCc9san5.js → Tasks-DYQ_6lxj.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CcHC1dMA.js → Templates-JiDeI06L.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CA4PqU22.js → Tenant-hhgI6zwS.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-CjTZPa37.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-DHWTSvOy.js → TimelineRenderer-B8uB5Llk.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Ddz-P_yh.js → Tokens-C3b_6r2z.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-ePmrmLZ1.js → Trigger-tIP7HKVe.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DmuK1CCE.js → Trust-vjoc11vJ.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CqqBuRrT.js → UkeySign-DUPBnGuH.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BGlR3uWM.js → VideoEditing-CBvhUY5T.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Ba_Qx6Ga.js → Wallet-DUaQ0uA5.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-29neXKt2.js → WebAuthn-DllSivjE.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-lD0lR0UQ.js → WorkflowEditor-xc8D3uO6.js} +1 -1
- package/src/assets/web-panel/assets/{chat-B3stH01u.js → chat-BVicU7oA.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Czly56MN.js → colors-DJzLmhLm.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-C0TkbkAJ.js → compact-item-BvYRfThE.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BJmpSlf1.js → createContext-DGXxCBKR.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BT46Y_QI.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-D1q-zw7u.js → hasIn-SBDJB1y4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DV-twjNO.js → index-1SdDS6lR.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-kTvMq7.js → index-9gdI7uUW.js} +1 -1
- package/src/assets/web-panel/assets/index-B7nuIywP.js +1 -0
- package/src/assets/web-panel/assets/{index-Bm_-RKal.js → index-BJZf9DhV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQftlZn-.js → index-BO1itZaY.js} +3 -3
- package/src/assets/web-panel/assets/{index-Dw3L_smW.js → index-BTrBGBJs.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7sFKQ53.js → index-BYqz4Wrr.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlvsSuBC.js → index-Bf-ctERC.js} +1 -1
- package/src/assets/web-panel/assets/{index-ChESIe5r.js → index-CKyEivf8.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaqEHaCg.js → index-CdGY9P8a.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZeoKL6t.js → index-Cf-O_g_8.js} +1 -1
- package/src/assets/web-panel/assets/{index-XWV8JWMc.js → index-CloCgBUR.js} +1 -1
- package/src/assets/web-panel/assets/{index-CpMIdPJ0.js → index-CoJAO1Lm.js} +1 -1
- package/src/assets/web-panel/assets/{index-CgS8XUBU.js → index-Crk5NTb0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmUta2lw.js → index-Cs2rmLFt.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dpz_7sf-.js → index-CtwqO5qo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRcQsPez.js → index-D7HimK0M.js} +1 -1
- package/src/assets/web-panel/assets/{index-BEt2-3x5.js → index-DCdRAgjy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CHvPlzWJ.js → index-DCqRS6da.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDHXx65P.js → index-DHVLJ8q0.js} +1 -1
- package/src/assets/web-panel/assets/{index-K4YaPDOn.js → index-DKrvvWm4.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1pOqU7D.js → index-DMarmfrv.js} +1 -1
- package/src/assets/web-panel/assets/{index-DAhrn9EJ.js → index-DRfiXB_p.js} +1 -1
- package/src/assets/web-panel/assets/{index-cPjWjvmW.js → index-Dm_77jgR.js} +1 -1
- package/src/assets/web-panel/assets/{index-C27TnOoT.js → index-DnjPdvR6.js} +1 -1
- package/src/assets/web-panel/assets/{index-upY9rkGZ.js → index-DonCnfMr.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbvNJUwu.js → index-DvUTDYXX.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVwJ3jht.js → index-FxZzRyE1.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIF6XHIi.js → index-MjC4G09d.js} +1 -1
- package/src/assets/web-panel/assets/{index-B8KqsomG.js → index-VMfwIH5G.js} +1 -1
- package/src/assets/web-panel/assets/{index-8GKykbS4.js → index-YJkzy8ZF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpGs96FC.js → index-d5BVd-cL.js} +1 -1
- package/src/assets/web-panel/assets/{index-DO8xOwxi.js → index-e4fXH_WO.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cu_4HaUS.js → index-hxTODbM1.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cf7Gr3NG.js → index-lpaGoTH3.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBqAm8es.js → index-wcCL-miV.js} +1 -1
- package/src/assets/web-panel/assets/{index-ZDUhX41Z.js → index-xfluRkCT.js} +1 -1
- package/src/assets/web-panel/assets/index-ycwAfC-i.js +1 -0
- package/src/assets/web-panel/assets/{index-z8ATo2aQ.js → index-z1ZylsLq.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-QWEXi6-t.js → initDefaultProps-C1zO1KnY.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BfrQwvV1.js → motion-CWLtEGmC.js} +1 -1
- package/src/assets/web-panel/assets/{move-Dn7x0H9t.js → move-DzD_C3Vm.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-F61D_TgE.js → mtc-parser-D880PYJl.js} +1 -1
- package/src/assets/web-panel/assets/{omit-4SQZ39PF.js → omit-CFR_z2ov.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-C7DTe126.js → pickAttrs-srIhgrSC.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-40NeyzDK.js → placementArrow-C1rXpibP.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BiUJ6qWs.js → responsiveObserve-C30gRcSS.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CacJTM3f.js → slide-CvtKiMfV.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-K812HB-k.js → statusUtils-DNHO7ITG.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CKeHA2eM.js → styleChecker-Dt_Sl-g4.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CKl4FqXF.js → useFlexGapSupport-Cjev42Gh.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DPoiJjSZ.js → useFs-Baxglj2V.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-aHwBspmt.js → usePersonalDataHub-B4NkcLaP.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DrA-GuCT.js → vnode-mIRkdT7o.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-G3LMswgy.js → zoom-HzI5DlH_.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/auth/npm-auth.js +30 -5
- package/src/commands/agenda.js +64 -2
- package/src/commands/agent.js +45 -3
- package/src/commands/background-session.js +103 -0
- package/src/commands/config.js +70 -5
- package/src/commands/context.js +36 -2
- package/src/commands/hub.js +19 -1
- package/src/commands/memory.js +21 -6
- package/src/commands/permissions.js +57 -1
- package/src/commands/plugin.js +2 -0
- package/src/commands/review.js +23 -11
- package/src/commands/routine.js +31 -8
- package/src/commands/session.js +11 -3
- package/src/commands/team.js +20 -7
- package/src/commands/update.js +65 -10
- package/src/esm-bridge.js +3 -0
- package/src/gateways/terminal/PtyManager.js +8 -1
- package/src/gateways/ws/message-dispatcher.js +3 -0
- package/src/gateways/ws/session-protocol.js +26 -0
- package/src/gateways/ws/ws-agent-handler.js +107 -69
- package/src/gateways/ws/ws-server.js +92 -4
- package/src/harness/jsonl-session-store.js +13 -6
- package/src/harness/mcp-client.js +200 -1
- package/src/index.js +123 -55
- package/src/lazy-dispatch.js +86 -85
- package/src/lib/__tests__/personal-data-hub-aichat-wizard.test.js +15 -0
- package/src/lib/agent-coordinator.js +4 -0
- package/src/lib/agent-ipc-bus.js +32 -2
- package/src/lib/agent-sandbox.js +16 -2
- package/src/lib/agent-schedule-store.js +55 -0
- package/src/lib/agent-tool-admission.js +104 -0
- package/src/lib/api-key-helper.js +10 -2
- package/src/lib/async-hook-supervisor.cjs +26 -4
- package/src/lib/background-interaction-resolver.js +71 -0
- package/src/lib/background-session-transport.js +59 -1
- package/src/lib/changelog.js +19 -11
- package/src/lib/channels/channel-manager.js +6 -0
- package/src/lib/channels/telegram-channel.js +11 -1
- package/src/lib/channels/webhook-channel.js +15 -3
- package/src/lib/checkpoint-store.js +10 -2
- package/src/lib/cloud/bundle.js +12 -2
- package/src/lib/code-review.js +32 -8
- package/src/lib/computer-use/control-backend.js +18 -3
- package/src/lib/context-breakdown.js +46 -0
- package/src/lib/context-source-ledger.js +43 -0
- package/src/lib/crash-reporter.js +6 -0
- package/src/lib/diff-review-follow-up.js +154 -0
- package/src/lib/downloader.js +17 -3
- package/src/lib/ensure-utf8.js +11 -3
- package/src/lib/event-runtime-producer.js +58 -0
- package/src/lib/event-runtime-store.js +354 -0
- package/src/lib/event-runtime-worker.js +109 -0
- package/src/lib/execution-backend.js +72 -21
- package/src/lib/git-integration.js +19 -4
- package/src/lib/hook-manager.js +34 -15
- package/src/lib/hook-runner.cjs +48 -3
- package/src/lib/hooks-v2-producers.js +15 -0
- package/src/lib/hooks-v2-runtime.js +70 -21
- package/src/lib/host-adb-bridge.js +111 -21
- package/src/lib/ide-context.js +128 -1
- package/src/lib/interaction-adapter.js +39 -0
- package/src/lib/ipc-attach-protocol.js +98 -0
- package/src/lib/json-schema-validate.js +190 -36
- package/src/lib/lan-pairing-preflight.js +13 -2
- package/src/lib/lsp/__tests__/lsp-server-registry.test.js +18 -0
- package/src/lib/lsp/lsp-client.js +18 -1
- package/src/lib/lsp/lsp-manager.js +4 -0
- package/src/lib/lsp/lsp-server-registry.js +11 -0
- package/src/lib/mcp-oauth.js +8 -2
- package/src/lib/npm-invocation.js +29 -0
- package/src/lib/packer/pkg-runner.js +13 -2
- package/src/lib/packer/precheck.js +33 -16
- package/src/lib/packer/web-panel-builder.js +16 -2
- package/src/lib/permission-rules.cjs +5 -1
- package/src/lib/personal-data-hub-aichat-wizard.js +22 -6
- package/src/lib/personal-data-hub-wiring.js +27 -3
- package/src/lib/plan-mode.js +204 -11
- package/src/lib/plugin-monitor-supervisor.js +39 -4
- package/src/lib/plugin-runtime/bin.js +45 -0
- package/src/lib/plugin-runtime/hooks.js +14 -1
- package/src/lib/plugin-runtime/install.js +2 -1
- package/src/lib/plugin-runtime/lsp.js +3 -0
- package/src/lib/plugin-runtime/mcp.js +8 -1
- package/src/lib/plugin-runtime/monitors.js +4 -0
- package/src/lib/plugin-runtime/plugin-options.js +74 -7
- package/src/lib/plugin-runtime/signature.js +45 -0
- package/src/lib/pr-create.js +21 -8
- package/src/lib/pr-link-ledger.js +15 -3
- package/src/lib/process-execution-broker/credential-agent.js +295 -0
- package/src/lib/process-execution-broker/index.js +440 -14
- package/src/lib/process-execution-broker/patch-child-process.js +2 -3
- package/src/lib/process-execution-broker/platform-sandbox.js +351 -0
- package/src/lib/process-manager.js +18 -3
- package/src/lib/provenance-api.js +6 -0
- package/src/lib/proxy-bootstrap.js +19 -0
- package/src/lib/publish-workspace.js +14 -6
- package/src/lib/repl-rewind.js +9 -4
- package/src/lib/secret-store.js +159 -0
- package/src/lib/service-manager.js +64 -29
- package/src/lib/session-hooks.js +328 -473
- package/src/lib/session-telemetry-middleware.js +6 -0
- package/src/lib/settings-hook-events.cjs +61 -1
- package/src/lib/settings-hooks.cjs +4 -0
- package/src/lib/side-effect-ledger.js +22 -0
- package/src/lib/sub-agent-context.js +5 -0
- package/src/lib/sub-agent-profiles.js +4 -0
- package/src/lib/trace-api.js +6 -0
- package/src/lib/turn-context.js +14 -8
- package/src/lib/unattended-action-policy.js +83 -0
- package/src/lib/update-notice.js +9 -45
- package/src/lib/with-file-lock.js +7 -0
- package/src/lib/ws-server.js +1 -0
- package/src/repl/agent-repl.js +71 -13
- package/src/repl/clipboard-copy.js +8 -2
- package/src/repl/pr-comments.js +30 -7
- package/src/runtime/agent-core.js +439 -87
- package/src/runtime/agent-runtime.js +1 -0
- package/src/runtime/coding-agent-contract-shared.cjs +52 -0
- package/src/runtime/coding-agent-policy.cjs +20 -0
- package/src/runtime/diagnostics.js +73 -8
- package/src/runtime/headless-runner.js +63 -0
- package/src/runtime/headless-stream.js +269 -17
- package/src/runtime/mcp-config.js +16 -1
- package/src/workers/background-agent-worker.js +80 -1
- package/src/assets/web-panel/assets/AppLayout-7iSKDmlI.js +0 -9
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DcbUHeGW.js +0 -1
- package/src/assets/web-panel/assets/Dashboard-BAKYNavw.js +0 -3
- package/src/assets/web-panel/assets/MobileProjects-C4GKn1dH.js +0 -1
- package/src/assets/web-panel/assets/Terminal-Fj7ea0In.js +0 -3
- package/src/assets/web-panel/assets/devWarning-CDI8Sbaj.js +0 -1
- package/src/assets/web-panel/assets/index-96LBR96V.js +0 -1
- package/src/assets/web-panel/assets/index-DyQkiW24.js +0 -1
|
@@ -90,6 +90,58 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
|
|
|
90
90
|
tags: ["tool:write_file", "contract:coding-agent", "tier:mvp"],
|
|
91
91
|
},
|
|
92
92
|
},
|
|
93
|
+
{
|
|
94
|
+
name: "delete_file",
|
|
95
|
+
title: "Delete File",
|
|
96
|
+
kind: "filesystem",
|
|
97
|
+
tier: "mvp",
|
|
98
|
+
description:
|
|
99
|
+
"Delete one file. Directories are rejected. Read the file first; interactive IDE approval shows an explicit deletion diff before applying it.",
|
|
100
|
+
inputSchema: {
|
|
101
|
+
type: "object",
|
|
102
|
+
properties: {
|
|
103
|
+
path: { type: "string", description: "File path to delete" },
|
|
104
|
+
},
|
|
105
|
+
required: ["path"],
|
|
106
|
+
},
|
|
107
|
+
...TOOL_POLICY_METADATA.delete_file,
|
|
108
|
+
permissions: {
|
|
109
|
+
level: "elevated",
|
|
110
|
+
scopes: ["filesystem:write"],
|
|
111
|
+
},
|
|
112
|
+
telemetry: {
|
|
113
|
+
category: "filesystem",
|
|
114
|
+
tags: ["tool:delete_file", "contract:coding-agent", "tier:mvp"],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "move_file",
|
|
119
|
+
title: "Move File",
|
|
120
|
+
kind: "filesystem",
|
|
121
|
+
tier: "mvp",
|
|
122
|
+
description:
|
|
123
|
+
"Rename or move one file without overwriting an existing destination. Directories are rejected. Interactive IDE approval shows the explicit source and destination.",
|
|
124
|
+
inputSchema: {
|
|
125
|
+
type: "object",
|
|
126
|
+
properties: {
|
|
127
|
+
path: { type: "string", description: "Existing source file path" },
|
|
128
|
+
target_path: {
|
|
129
|
+
type: "string",
|
|
130
|
+
description: "New destination file path",
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
required: ["path", "target_path"],
|
|
134
|
+
},
|
|
135
|
+
...TOOL_POLICY_METADATA.move_file,
|
|
136
|
+
permissions: {
|
|
137
|
+
level: "elevated",
|
|
138
|
+
scopes: ["filesystem:write"],
|
|
139
|
+
},
|
|
140
|
+
telemetry: {
|
|
141
|
+
category: "filesystem",
|
|
142
|
+
tags: ["tool:move_file", "contract:coding-agent", "tier:mvp"],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
93
145
|
{
|
|
94
146
|
name: "notebook_edit",
|
|
95
147
|
title: "Edit Notebook",
|
|
@@ -112,6 +112,26 @@ const TOOL_POLICY_METADATA = Object.freeze({
|
|
|
112
112
|
approvalFlow: "plan",
|
|
113
113
|
isReadOnly: false,
|
|
114
114
|
},
|
|
115
|
+
delete_file: {
|
|
116
|
+
riskLevel: RISK_LEVELS.MEDIUM,
|
|
117
|
+
category: TOOL_CATEGORIES.WRITE,
|
|
118
|
+
availableInPlanMode: false,
|
|
119
|
+
planModeBehavior: "blocked",
|
|
120
|
+
requiresPlanApproval: true,
|
|
121
|
+
requiresConfirmation: false,
|
|
122
|
+
approvalFlow: "plan",
|
|
123
|
+
isReadOnly: false,
|
|
124
|
+
},
|
|
125
|
+
move_file: {
|
|
126
|
+
riskLevel: RISK_LEVELS.MEDIUM,
|
|
127
|
+
category: TOOL_CATEGORIES.WRITE,
|
|
128
|
+
availableInPlanMode: false,
|
|
129
|
+
planModeBehavior: "blocked",
|
|
130
|
+
requiresPlanApproval: true,
|
|
131
|
+
requiresConfirmation: false,
|
|
132
|
+
approvalFlow: "plan",
|
|
133
|
+
isReadOnly: false,
|
|
134
|
+
},
|
|
115
135
|
notebook_edit: {
|
|
116
136
|
riskLevel: RISK_LEVELS.MEDIUM,
|
|
117
137
|
category: TOOL_CATEGORIES.WRITE,
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
* Refs: docs/implementation-plans/CLI_RUNTIME_CONVERGENCE_ADR.md
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { execSync } from "node:child_process";
|
|
16
15
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
17
16
|
import { join as pathJoin } from "node:path";
|
|
18
17
|
import { createRequire } from "node:module";
|
|
@@ -30,6 +29,9 @@ import {
|
|
|
30
29
|
import { loadConfig } from "../lib/config-manager.js";
|
|
31
30
|
import { isAppRunning, getAppPid } from "../lib/process-manager.js";
|
|
32
31
|
import { readDiskVersion, versionDiagnosis } from "../lib/version-skew.js";
|
|
32
|
+
import { EventRuntimeStore } from "../lib/event-runtime-store.js";
|
|
33
|
+
import { executionBroker } from "../lib/process-execution-broker/index.js";
|
|
34
|
+
import { resolveNpmInvocation } from "../lib/npm-invocation.js";
|
|
33
35
|
|
|
34
36
|
/** Best-effort read of the npm `latest` cached by the startup update notice. */
|
|
35
37
|
function readCachedLatest() {
|
|
@@ -67,9 +69,31 @@ function readdirSafe(dir) {
|
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
|
|
70
|
-
function
|
|
72
|
+
export function diagnosticProcessInvocations(
|
|
73
|
+
platform = process.platform,
|
|
74
|
+
execPath = process.execPath,
|
|
75
|
+
) {
|
|
76
|
+
return {
|
|
77
|
+
npm: resolveNpmInvocation({ platform, execPath }),
|
|
78
|
+
git: { command: "git", prefixArgs: [] },
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export const _diagnosticDeps = {
|
|
83
|
+
execFileSync: (...args) => executionBroker.execFileSync(...args),
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export function runDiagnosticProbe(file, args = [], deps = _diagnosticDeps) {
|
|
71
87
|
try {
|
|
72
|
-
return
|
|
88
|
+
return String(
|
|
89
|
+
deps.execFileSync(file, args, {
|
|
90
|
+
encoding: "utf-8",
|
|
91
|
+
origin: "runtime:diagnostics",
|
|
92
|
+
policy: "allow",
|
|
93
|
+
scope: "diagnostics",
|
|
94
|
+
shell: false,
|
|
95
|
+
}),
|
|
96
|
+
).trim();
|
|
73
97
|
} catch {
|
|
74
98
|
return null;
|
|
75
99
|
}
|
|
@@ -126,6 +150,7 @@ export function checkPdhPackageIntegrity(deps = {}) {
|
|
|
126
150
|
*/
|
|
127
151
|
export async function collectDoctorReport() {
|
|
128
152
|
const checks = [];
|
|
153
|
+
const invocations = diagnosticProcessInvocations();
|
|
129
154
|
|
|
130
155
|
// Node.js
|
|
131
156
|
const nodeVersion = process.versions.node;
|
|
@@ -139,7 +164,10 @@ export async function collectDoctorReport() {
|
|
|
139
164
|
});
|
|
140
165
|
|
|
141
166
|
// npm
|
|
142
|
-
const npmVersion =
|
|
167
|
+
const npmVersion = runDiagnosticProbe(invocations.npm.command, [
|
|
168
|
+
...invocations.npm.prefixArgs,
|
|
169
|
+
"--version",
|
|
170
|
+
]);
|
|
143
171
|
checks.push({
|
|
144
172
|
id: "npm",
|
|
145
173
|
name: npmVersion ? `npm ${npmVersion}` : "npm",
|
|
@@ -168,7 +196,7 @@ export async function collectDoctorReport() {
|
|
|
168
196
|
});
|
|
169
197
|
|
|
170
198
|
// Git
|
|
171
|
-
const gitVersion =
|
|
199
|
+
const gitVersion = runDiagnosticProbe(invocations.git.command, ["--version"]);
|
|
172
200
|
checks.push({
|
|
173
201
|
id: "git",
|
|
174
202
|
name: gitVersion || "Git",
|
|
@@ -316,7 +344,13 @@ export function parseGitWorktrees(porcelain) {
|
|
|
316
344
|
|
|
317
345
|
/** Best-effort live git worktree list for the current repo. */
|
|
318
346
|
export function collectWorktrees() {
|
|
319
|
-
return parseGitWorktrees(
|
|
347
|
+
return parseGitWorktrees(
|
|
348
|
+
runDiagnosticProbe(diagnosticProcessInvocations().git.command, [
|
|
349
|
+
"worktree",
|
|
350
|
+
"list",
|
|
351
|
+
"--porcelain",
|
|
352
|
+
]),
|
|
353
|
+
);
|
|
320
354
|
}
|
|
321
355
|
|
|
322
356
|
/**
|
|
@@ -364,10 +398,37 @@ export function buildDoctorDiagnosticInput(report, signals = {}) {
|
|
|
364
398
|
* services: Array<{ name, state }> | null,
|
|
365
399
|
* note: string | null
|
|
366
400
|
* },
|
|
367
|
-
* ports: Array<{ name, port, open }
|
|
401
|
+
* ports: Array<{ name, port, open }>,
|
|
402
|
+
* eventRuntime: { enabled, health, error }
|
|
368
403
|
* }
|
|
369
404
|
*/
|
|
370
|
-
export
|
|
405
|
+
export function collectEventRuntimeStatus({
|
|
406
|
+
env = process.env,
|
|
407
|
+
store = null,
|
|
408
|
+
} = {}) {
|
|
409
|
+
const enabled = env?.CC_EVENT_RUNTIME_DURABLE === "1";
|
|
410
|
+
if (!enabled && !store) {
|
|
411
|
+
return { enabled: false, health: null, error: null };
|
|
412
|
+
}
|
|
413
|
+
try {
|
|
414
|
+
return {
|
|
415
|
+
enabled,
|
|
416
|
+
health: (store || new EventRuntimeStore()).getHealthSnapshot(),
|
|
417
|
+
error: null,
|
|
418
|
+
};
|
|
419
|
+
} catch (error) {
|
|
420
|
+
return {
|
|
421
|
+
enabled,
|
|
422
|
+
health: null,
|
|
423
|
+
error: {
|
|
424
|
+
code: error?.code || "CC_EVENT_RUNTIME_STATUS_FAILED",
|
|
425
|
+
message: String(error?.message || error),
|
|
426
|
+
},
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export async function collectStatusReport(options = {}) {
|
|
371
432
|
let config = {};
|
|
372
433
|
try {
|
|
373
434
|
config = loadConfig();
|
|
@@ -443,5 +504,9 @@ export async function collectStatusReport() {
|
|
|
443
504
|
setup,
|
|
444
505
|
docker,
|
|
445
506
|
ports,
|
|
507
|
+
eventRuntime: collectEventRuntimeStatus({
|
|
508
|
+
env: options.eventRuntimeEnv || process.env,
|
|
509
|
+
store: options.eventRuntimeStore || null,
|
|
510
|
+
}),
|
|
446
511
|
};
|
|
447
512
|
}
|
|
@@ -56,6 +56,7 @@ import {
|
|
|
56
56
|
reconcileSideEffects,
|
|
57
57
|
classifyToolSideEffect,
|
|
58
58
|
} from "../lib/side-effect-ledger.js";
|
|
59
|
+
import { DiffReviewFollowUpTracker } from "../lib/diff-review-follow-up.js";
|
|
59
60
|
import { SIDE_EFFECT_LEDGER_EVENT } from "../lib/side-effect-ledger-store.js";
|
|
60
61
|
import { TurnBindingLog, createTurnBindingFeed } from "../lib/turn-binding.js";
|
|
61
62
|
import { TURN_BINDING_EVENT } from "../lib/turn-binding-store.js";
|
|
@@ -80,6 +81,7 @@ import { isolationLevel } from "../lib/agent-sandbox.js";
|
|
|
80
81
|
import { createBackgroundPhaseReporter } from "../lib/background-phase-reporter.js";
|
|
81
82
|
import { withQuietStdout } from "./quiet-stdout.js";
|
|
82
83
|
import { CostBudget } from "../lib/cost-budget.js";
|
|
84
|
+
import { estimateTokens } from "../harness/prompt-compressor.js";
|
|
83
85
|
import {
|
|
84
86
|
classifyDenial,
|
|
85
87
|
recordDenial,
|
|
@@ -859,6 +861,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
859
861
|
}
|
|
860
862
|
}
|
|
861
863
|
}
|
|
864
|
+
const diffReviewFollowUps = new DiffReviewFollowUpTracker(sideEffectLedger);
|
|
862
865
|
|
|
863
866
|
// ── Wire the persistent ApprovalGate with our non-interactive confirmer
|
|
864
867
|
// and force the session-policy tier dictated by --permission-mode. ──────
|
|
@@ -947,6 +950,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
947
950
|
// (undefined) leaves both paths byte-identical.
|
|
948
951
|
const _leanNoProjectMemory = options.projectMemory === false;
|
|
949
952
|
let _loadedInstructions = null;
|
|
953
|
+
let _loadedPersonaSkills = [];
|
|
950
954
|
const systemContent = composeSystemPrompt(
|
|
951
955
|
buildSystemPrompt(cwd, {
|
|
952
956
|
additionalDirectories,
|
|
@@ -961,6 +965,9 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
961
965
|
onInstructionsLoaded: (loaded) => {
|
|
962
966
|
_loadedInstructions = loaded;
|
|
963
967
|
},
|
|
968
|
+
onSkillsLoaded: (skills) => {
|
|
969
|
+
_loadedPersonaSkills = Array.isArray(skills) ? skills : [];
|
|
970
|
+
},
|
|
964
971
|
},
|
|
965
972
|
);
|
|
966
973
|
|
|
@@ -1340,6 +1347,34 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1340
1347
|
});
|
|
1341
1348
|
}
|
|
1342
1349
|
|
|
1350
|
+
// Persist the admitted runtime schema surface so `cc context --sources` can
|
|
1351
|
+
// attribute MCP cost to the actual server/tool definitions used by this run,
|
|
1352
|
+
// rather than guessing from the current environment on a later invocation.
|
|
1353
|
+
if (
|
|
1354
|
+
persist &&
|
|
1355
|
+
(mcp?.extraToolDefinitions?.length || _loadedPersonaSkills.length)
|
|
1356
|
+
) {
|
|
1357
|
+
try {
|
|
1358
|
+
store.appendEvent(sessionId, "context_sources", {
|
|
1359
|
+
mcp: (mcp?.extraToolDefinitions || []).map((definition) => ({
|
|
1360
|
+
function: {
|
|
1361
|
+
name: definition?.function?.name || null,
|
|
1362
|
+
description: definition?.function?.description || "",
|
|
1363
|
+
parameters: definition?.function?.parameters || {},
|
|
1364
|
+
},
|
|
1365
|
+
})),
|
|
1366
|
+
skills: _loadedPersonaSkills.map((skill) => ({
|
|
1367
|
+
id: skill?.id || skill?.displayName || "skill",
|
|
1368
|
+
displayName: skill?.displayName || skill?.id || "skill",
|
|
1369
|
+
source: skill?.source || "skill",
|
|
1370
|
+
body: typeof skill?.body === "string" ? skill.body : "",
|
|
1371
|
+
})),
|
|
1372
|
+
});
|
|
1373
|
+
} catch {
|
|
1374
|
+
// Source attribution is observability-only; never fail the agent run.
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1343
1378
|
const loopOptions = {
|
|
1344
1379
|
model,
|
|
1345
1380
|
provider,
|
|
@@ -1382,6 +1417,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1382
1417
|
enabledToolNames,
|
|
1383
1418
|
disabledTools,
|
|
1384
1419
|
iterationBudget: budget,
|
|
1420
|
+
toolAdmission: options.toolAdmission || null,
|
|
1385
1421
|
// `ask_user_question` in a BACKGROUND turn child (P0 state-machine
|
|
1386
1422
|
// producer for `needs_input`): there is no live channel to a human
|
|
1387
1423
|
// mid-turn, but the question IS the structured needs-input signal. Park
|
|
@@ -1811,6 +1847,13 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1811
1847
|
// P0-2: settle the in-flight side-effect (commit on success, fail on
|
|
1812
1848
|
// a clean error) and persist the updated ledger snapshot.
|
|
1813
1849
|
if (persist && currentSideEffectOpId) {
|
|
1850
|
+
if (event.result?._diffReviewAudit) {
|
|
1851
|
+
diffReviewFollowUps.observe(
|
|
1852
|
+
sideEffectLedger,
|
|
1853
|
+
currentSideEffectOpId,
|
|
1854
|
+
event.result._diffReviewAudit,
|
|
1855
|
+
);
|
|
1856
|
+
}
|
|
1814
1857
|
if (err)
|
|
1815
1858
|
sideEffectLedger.fail(
|
|
1816
1859
|
currentSideEffectOpId,
|
|
@@ -1917,10 +1960,30 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1917
1960
|
}
|
|
1918
1961
|
case "response-complete": {
|
|
1919
1962
|
finalText = event.content || "";
|
|
1963
|
+
if (
|
|
1964
|
+
persist &&
|
|
1965
|
+
diffReviewFollowUps.complete(sideEffectLedger, {
|
|
1966
|
+
status: "completed-without-reproposal",
|
|
1967
|
+
}).length > 0
|
|
1968
|
+
) {
|
|
1969
|
+
persistSideEffectLedger();
|
|
1970
|
+
}
|
|
1920
1971
|
break;
|
|
1921
1972
|
}
|
|
1922
1973
|
case "run-ended": {
|
|
1923
1974
|
if (event.reason) endReason = event.reason;
|
|
1975
|
+
if (
|
|
1976
|
+
persist &&
|
|
1977
|
+
diffReviewFollowUps.complete(sideEffectLedger, {
|
|
1978
|
+
status:
|
|
1979
|
+
event.reason === "complete"
|
|
1980
|
+
? "completed-without-reproposal"
|
|
1981
|
+
: "interrupted",
|
|
1982
|
+
reason: event.reason || endReason,
|
|
1983
|
+
}).length > 0
|
|
1984
|
+
) {
|
|
1985
|
+
persistSideEffectLedger();
|
|
1986
|
+
}
|
|
1924
1987
|
break;
|
|
1925
1988
|
}
|
|
1926
1989
|
default:
|