chainlesschain 0.162.176 → 0.162.177
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 +1 -1
- package/src/assets/web-panel/assets/{AIOps-BDLu5Elz.js → AIOps-DT-VPWuN.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DH5us-CK.js → ActionButton-DyOreOVN.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BZ0u8IFG.js → Analytics-DslNsKux.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-Duu8xR14.js → AppLayout-BNJJAYME.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-Br2YBbh_.js → Artifacts-DoaAtEcY.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-C3C6a482.js → Audit-DPG3WdJ9.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CzHvebcj.js → BackgroundAgents-C_JO6R5G.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DZNHYDFd.js → Backup-Cv3BooyX.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-VRiC4fIx.js → BaseInput-D2uQXWu-.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-Cm08WWAD.js → Chat-B4Vczyf3.js} +4 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DE6reP99.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DtByk7d7.js → Checkbox-qTgk4VeP.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CphXXOfD.js → Codegen-DlLWcIzj.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Hz86TnLR.js → Col-DNO73qp7.js} +1 -1
- package/src/assets/web-panel/assets/{Community-HP03ltpD.js → Community-vRDNpc4j.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B_N1mqQz.js → Compact-CEWtIXni.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CVztRpi8.js → Compliance-KgYC9Fxi.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-wUVOyZih.js → Cowork-zj5wvkpT.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-DW5TLJKw.js → Cron-BLDoCozU.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CrAFGhWH.js → Crosschain-BYnff4VY.js} +1 -1
- package/src/assets/web-panel/assets/{DID-pA-oD8ke.js → DID-C75VFsVm.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CXrd5gAw.js → Dashboard-C4Gutni2.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-EweJcsek.js → Dropdown-B5dbO4Kx.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-C9xVLPG4.js → EmailListRenderer-BDipZtHJ.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CDcEEqlu.js → FamilyGuardDashboard-DmIzt8jj.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DtZda9A_.js → Federation-D9QOS-uW.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-CiYdcVz3.js → FormItemContext-B47HRwAm.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DA13uwA0.js → GenericCardRenderer-3R4mXmgV.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DzRhZD1O.js → Git-DrNXZf1C.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-D5RMgOSb.js → Governance-BGd7JR98.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BgrPfSNk.js → Inference-D-2he1ed.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DzjnD571.js → KnowledgeGraph-C0sHIbK5.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BhWzVDtN.js → Logs-DiBQO-jL.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-BDape9cx.js → MarkdownRenderer-DL_5eV2D.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DJtL5GV7.js → Marketplace-VR59OdrC.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CZcQygI7.js → McpTools-DrPzwSd3.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-DUWSDUUu.js → Memory-CBgKALwQ.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BTwq2WKY.js → MobileBridge-pQ9Tn-Mn.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-mASB6jyj.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-BiGugEQm.js → Mtc-DTMgE7HC.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-DY7a6gUe.js → MtcAudit-CwTnCtiL.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-BQbDu_w7.js → Multisig-ngm6WU8f.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CM2wXTLv.js → NLProgramming-4YO4Qww9.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DI6gGs1v.js → Notes-DP1k45mF.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-BsZOLWAB.js → NotificationSettings-r2H8yPKb.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-C48mu09U.js → OrderTableRenderer-CoM_Zw0J.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-Cds0_tXr.js → Organization-DrO7jRWS.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-WunYMD87.js → Overflow-Cnwu4i4t.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Bo6j4DDv.js → P2P-zi-cDwA_.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Bh2XPD5f.js → PdhVaultBrowser-DBEryDv7.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-EMvMMC8N.js → Permissions-lqXK2C3x.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-AX3ypUDV.js → PersonalDataHub-b63T3HJM.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-BOx8HOgL.js → Pipeline-Kep5KAGW.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-tBeTVQVM.js → Privacy-CHdvOAh1.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CVYg1W4M.js → ProjectInit-BhKfdwe9.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-Dvt5I7y1.js → ProjectSettings-Yavk9K8A.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Cc7FC9-e.js → Projects-CN8E_5Mq.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-Ct8xqY-E.js → Providers-Bfym6SQn.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-Cni8Ooja.js → QrScannerModal-CLSQcrlR.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-BJVLKdxr.js → QuickAsk-VPa2WKQN.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DPG8Rbbm.js → Recommend-CGXR8jVU.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-DsdR7dCt.js → RemoteSession-C_20YfMB.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-Csg1YM-b.js → Reputation-awZh68UV.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D9DoFoEf.js → Row-Ctb4oiYN.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BsvKrXMS.js → RssFeed-D3sdjvUV.js} +2 -2
- package/src/assets/web-panel/assets/{Search-DFUStfgQ.js → Search-C-zfA4kT.js} +1 -1
- package/src/assets/web-panel/assets/{Security-ILg1zxdK.js → Security-D9XlmHA3.js} +4 -4
- package/src/assets/web-panel/assets/{Services-Dd41PCaY.js → Services-C3UKnr41.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-Bzo1cN80.js → Skeleton-BQxagZfF.js} +1 -1
- package/src/assets/web-panel/assets/Skills-q6eb6KPZ.js +1 -0
- package/src/assets/web-panel/assets/{Sla-jl7UTiRY.js → Sla-DveENvek.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BePa-RF6.js → SpeechSettings-BFjXLNgF.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DiqqDKGZ.js → SyncSettings-BpHgbaP9.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-DvepRb8-.js +1 -0
- package/src/assets/web-panel/assets/{Templates-JiDeI06L.js → Templates-DEiaoyve.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-hhgI6zwS.js → Tenant-ITg774nY.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-D3ZBcvnb.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-B8uB5Llk.js → TimelineRenderer-BsLU6JjU.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-C3b_6r2z.js → Tokens-Cb5Pquc9.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-tIP7HKVe.js → Trigger-Dwfy-m9N.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-vjoc11vJ.js → Trust-CnlSRGG0.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DUPBnGuH.js → UkeySign-Y4TlvKVo.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CBvhUY5T.js → VideoEditing-BpKLtTTO.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DUaQ0uA5.js → Wallet-LLBzIq8x.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DllSivjE.js → WebAuthn-BeSRiusP.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-xc8D3uO6.js → WorkflowEditor-BK_l1tXO.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BVicU7oA.js → chat-DYd-X7Wg.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DJzLmhLm.js → colors-C9uip71j.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BvYRfThE.js → compact-item-JBrfjUP6.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DGXxCBKR.js → createContext-D03fbuiq.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B8LQ8leS.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-SBDJB1y4.js → hasIn-DLQOR6l-.js} +1 -1
- package/src/assets/web-panel/assets/{index-MjC4G09d.js → index-5YN7F5bO.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dm_77jgR.js → index-6GuLRpBQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CtwqO5qo.js → index-B0X76LjX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRfiXB_p.js → index-B46YcgsV.js} +1 -1
- package/src/assets/web-panel/assets/{index-VMfwIH5G.js → index-BNCdRmWf.js} +1 -1
- package/src/assets/web-panel/assets/{index-hxTODbM1.js → index-BYv-LWdy.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMarmfrv.js → index-Ba-Ps_AJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-xfluRkCT.js → index-BcBZwlnG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BYqz4Wrr.js → index-BdH9l8wl.js} +1 -1
- package/src/assets/web-panel/assets/{index-BO1itZaY.js → index-BfOs_bmg.js} +3 -3
- package/src/assets/web-panel/assets/index-Bh8BPtqR.js +1 -0
- package/src/assets/web-panel/assets/{index-Cf-O_g_8.js → index-BnQgRjsm.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKyEivf8.js → index-BpYKLrUT.js} +1 -1
- package/src/assets/web-panel/assets/{index-CoJAO1Lm.js → index-BuNFCZCx.js} +1 -1
- package/src/assets/web-panel/assets/{index-1SdDS6lR.js → index-ByHO3SqZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DnjPdvR6.js → index-C2zmOsyD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bf-ctERC.js → index-CChQBM1d.js} +1 -1
- package/src/assets/web-panel/assets/{index-DCdRAgjy.js → index-CChaISMb.js} +1 -1
- package/src/assets/web-panel/assets/{index-Crk5NTb0.js → index-CILVyK3b.js} +1 -1
- package/src/assets/web-panel/assets/{index-9gdI7uUW.js → index-CL0ixCxk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BJZf9DhV.js → index-CS63r8h3.js} +1 -1
- package/src/assets/web-panel/assets/{index-DCqRS6da.js → index-CVZWiUE_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DonCnfMr.js → index-Ce0Bf1YF.js} +1 -1
- package/src/assets/web-panel/assets/index-CeVrHLzZ.js +1 -0
- package/src/assets/web-panel/assets/{index-CloCgBUR.js → index-Ck17i0OD.js} +1 -1
- package/src/assets/web-panel/assets/{index-wcCL-miV.js → index-Cpn19c9k.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTrBGBJs.js → index-CqWk1FLG.js} +1 -1
- package/src/assets/web-panel/assets/{index-e4fXH_WO.js → index-CwoDpKzW.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvUTDYXX.js → index-D-1SqEpQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdGY9P8a.js → index-D4UY5Z60.js} +1 -1
- package/src/assets/web-panel/assets/{index-DKrvvWm4.js → index-D8KvuDz0.js} +1 -1
- package/src/assets/web-panel/assets/{index-lpaGoTH3.js → index-DNMAAUVk.js} +1 -1
- package/src/assets/web-panel/assets/{index-YJkzy8ZF.js → index-DYLZY4uh.js} +1 -1
- package/src/assets/web-panel/assets/{index-FxZzRyE1.js → index-DaokIHt3.js} +1 -1
- package/src/assets/web-panel/assets/{index-DHVLJ8q0.js → index-Q7mmL6w4.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cs2rmLFt.js → index-SO6lgMg0.js} +1 -1
- package/src/assets/web-panel/assets/{index-z1ZylsLq.js → index-iahNhZwm.js} +1 -1
- package/src/assets/web-panel/assets/{index-d5BVd-cL.js → index-l08afIbV.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7HimK0M.js → index-rIxxfdTN.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-C1zO1KnY.js → initDefaultProps-CG9z1c6w.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CWLtEGmC.js → motion-B1Ky7Zff.js} +1 -1
- package/src/assets/web-panel/assets/{move-DzD_C3Vm.js → move-DME8X2P1.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-D880PYJl.js → mtc-parser-cuJYSWB7.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CFR_z2ov.js → omit-UI_EE0uZ.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-srIhgrSC.js → pickAttrs-BIoE_Z_V.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-C1rXpibP.js → placementArrow-B48-9HKN.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-C30gRcSS.js → responsiveObserve-D7x_GDgD.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CvtKiMfV.js → slide-DjzC5_7m.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DNHO7ITG.js → statusUtils-C6BIymhh.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Dt_Sl-g4.js → styleChecker-B4dGrdD9.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-Cjev42Gh.js → useFlexGapSupport-Bken4aNE.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Baxglj2V.js → useFs-BMlqECqv.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-B4NkcLaP.js → usePersonalDataHub-DLdrfmMa.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-mIRkdT7o.js → vnode-CKJQmxa0.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-HzI5DlH_.js → zoom-CaZunuau.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agenda.js +22 -6
- package/src/commands/agent.js +3 -3
- package/src/commands/background-session.js +11 -4
- package/src/commands/batch.js +79 -27
- package/src/commands/changelog.js +15 -4
- package/src/commands/eval.js +21 -6
- package/src/commands/hook.js +2 -2
- package/src/commands/loop.js +9 -2
- package/src/commands/skill.js +2 -0
- package/src/commands/statusline.js +3 -3
- package/src/data/changelog.json +293 -51
- package/src/harness/background-task-manager.js +18 -6
- package/src/harness/background-task-worker.js +11 -18
- package/src/harness/mcp-client.js +9 -15
- package/src/harness/worktree-isolator.js +18 -21
- package/src/lib/agent-core.js +5 -0
- package/src/lib/agent-ipc-bus.js +12 -3
- package/src/lib/agent-team/team-worktree.js +28 -6
- package/src/lib/agent-worktree.js +20 -19
- package/src/lib/async-hook-supervisor.cjs +134 -24
- package/src/lib/async-hook-supervisor.js +47 -0
- package/src/lib/background-agent-supervisor.js +35 -12
- package/src/lib/background-task-manager.js +5 -1
- package/src/lib/changelog.js +57 -0
- package/src/lib/chrome-connector.js +6 -2
- package/src/lib/claude-code-bridge.js +24 -8
- package/src/lib/cli-anything-bridge.js +82 -25
- package/src/lib/doctor-checkup.js +18 -6
- package/src/lib/eval/tasks.js +25 -31
- package/src/lib/hook-runner.cjs +71 -36
- package/src/lib/hook-runner.js +55 -0
- package/src/lib/host-adb-bridge.js +18 -3
- package/src/lib/lsp/__tests__/benchmark.test.js +61 -0
- package/src/lib/lsp/__tests__/lsp-client.test.js +6 -1
- package/src/lib/lsp/benchmark.js +20 -4
- package/src/lib/lsp/lsp-client.js +6 -4
- package/src/lib/lsp/lsp-server-registry.js +0 -2
- package/src/lib/orchestrator.js +8 -2
- package/src/lib/packer/pack-update-applier.js +14 -2
- package/src/lib/packer/smoke-runner.js +18 -5
- package/src/lib/paths.js +1 -1
- package/src/lib/plugin-monitor-supervisor.js +20 -13
- package/src/lib/plugin-runtime/install.js +10 -3
- package/src/lib/repl-bang-memorize.js +10 -2
- package/src/lib/repl-goal.js +19 -2
- package/src/lib/settings-hook-events.cjs +13 -8
- package/src/lib/settings-hook-events.js +20 -0
- package/src/lib/skill-packs/generator.js +18 -9
- package/src/lib/skill-process-broker.js +71 -0
- package/src/lib/slash-commands.js +10 -2
- package/src/lib/status-line.cjs +28 -7
- package/src/lib/status-line.js +33 -0
- package/src/repl/agent-repl.js +48 -43
- package/src/runtime/agent-core.js +133 -49
- package/src/runtime/headless-runner.js +25 -10
- package/src/runtime/headless-stream.js +74 -4
- package/src/runtime/session-slash-commands.js +506 -0
- package/src/skills/video-editing/extractors/audio-extractor.js +13 -5
- package/src/skills/video-editing/extractors/video-extractor.js +13 -3
- package/src/skills/video-editing/media-process.js +20 -0
- package/src/skills/video-editing/render/audio-mix.js +13 -3
- package/src/skills/video-editing/render/ffmpeg-concat.js +7 -2
- package/src/skills/video-editing/render/ffmpeg-extract.js +7 -2
- package/src/workers/background-agent-worker.js +6 -2
- package/src/assets/web-panel/assets/ChatBubbleRenderer-CGHYrugQ.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-NZvvfDME.js +0 -1
- package/src/assets/web-panel/assets/Skills-BDHh17P0.js +0 -1
- package/src/assets/web-panel/assets/Tasks-DYQ_6lxj.js +0 -1
- package/src/assets/web-panel/assets/Terminal-CjTZPa37.js +0 -3
- package/src/assets/web-panel/assets/devWarning-BT46Y_QI.js +0 -1
- package/src/assets/web-panel/assets/index-B7nuIywP.js +0 -1
- package/src/assets/web-panel/assets/index-ycwAfC-i.js +0 -1
|
@@ -87,6 +87,23 @@ import {
|
|
|
87
87
|
recordDenial,
|
|
88
88
|
formatDenials,
|
|
89
89
|
} from "../lib/repl-denials.js";
|
|
90
|
+
import executionBroker from "../lib/process-execution-broker/index.js";
|
|
91
|
+
|
|
92
|
+
const goalBrokerRunner = executionBroker.spawnSync.bind(executionBroker);
|
|
93
|
+
|
|
94
|
+
export const _goalProcessDeps = {
|
|
95
|
+
run: goalBrokerRunner,
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
function runHeadlessGoalCommand(command, options = {}) {
|
|
99
|
+
return _goalProcessDeps.run(command, [], {
|
|
100
|
+
...options,
|
|
101
|
+
timeout: options.timeout ?? 30000,
|
|
102
|
+
origin: "headless-goal:exit-zero",
|
|
103
|
+
policy: "allow",
|
|
104
|
+
scope: "headless-goal",
|
|
105
|
+
});
|
|
106
|
+
}
|
|
90
107
|
|
|
91
108
|
/** Tools that cannot mutate the filesystem or run commands. */
|
|
92
109
|
export const READ_ONLY_TOOLS = Object.freeze([
|
|
@@ -975,7 +992,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
975
992
|
if (settingsHooks) {
|
|
976
993
|
try {
|
|
977
994
|
const { runUserPromptSubmitHooks } =
|
|
978
|
-
await import("../lib/settings-hook-events.
|
|
995
|
+
await import("../lib/settings-hook-events.js");
|
|
979
996
|
const ups = runUserPromptSubmitHooks(settingsHooks, {
|
|
980
997
|
prompt: userContent,
|
|
981
998
|
cwd,
|
|
@@ -1006,7 +1023,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1006
1023
|
if (settingsHooks && _loadedInstructions) {
|
|
1007
1024
|
try {
|
|
1008
1025
|
const { runInstructionsLoadedHooks } =
|
|
1009
|
-
await import("../lib/settings-hook-events.
|
|
1026
|
+
await import("../lib/settings-hook-events.js");
|
|
1010
1027
|
instructionsLoadedContext = runInstructionsLoadedHooks(settingsHooks, {
|
|
1011
1028
|
files: _loadedInstructions.files,
|
|
1012
1029
|
cwd,
|
|
@@ -1022,7 +1039,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1022
1039
|
if (settingsHooks) {
|
|
1023
1040
|
try {
|
|
1024
1041
|
const { runSessionStartHooks } =
|
|
1025
|
-
await import("../lib/settings-hook-events.
|
|
1042
|
+
await import("../lib/settings-hook-events.js");
|
|
1026
1043
|
sessionStartContext = runSessionStartHooks(settingsHooks, {
|
|
1027
1044
|
source: resumeId ? "resume" : "startup",
|
|
1028
1045
|
cwd,
|
|
@@ -1041,7 +1058,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1041
1058
|
if (settingsHooks && resumeId && history.length > 0) {
|
|
1042
1059
|
try {
|
|
1043
1060
|
const { runObserveHooks } =
|
|
1044
|
-
await import("../lib/settings-hook-events.
|
|
1061
|
+
await import("../lib/settings-hook-events.js");
|
|
1045
1062
|
runObserveHooks(
|
|
1046
1063
|
settingsHooks,
|
|
1047
1064
|
"SessionResume",
|
|
@@ -1313,7 +1330,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1313
1330
|
if (settingsHooks) {
|
|
1314
1331
|
try {
|
|
1315
1332
|
const { AsyncHookSupervisor } =
|
|
1316
|
-
await import("../lib/async-hook-supervisor.
|
|
1333
|
+
await import("../lib/async-hook-supervisor.js");
|
|
1317
1334
|
_hookSupervisor = new AsyncHookSupervisor({
|
|
1318
1335
|
persistStats: true,
|
|
1319
1336
|
// Durably park failed-rewake signals keyed by session so a crash before
|
|
@@ -1603,7 +1620,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1603
1620
|
const _settleAsyncStop = async () => {
|
|
1604
1621
|
if (!settingsHooks || !_hookSupervisor) return { rewakes: [], results: [] };
|
|
1605
1622
|
const { dispatchAsyncHooks } =
|
|
1606
|
-
await import("../lib/settings-hook-events.
|
|
1623
|
+
await import("../lib/settings-hook-events.js");
|
|
1607
1624
|
dispatchAsyncHooks(
|
|
1608
1625
|
settingsHooks,
|
|
1609
1626
|
"Stop",
|
|
@@ -1783,7 +1800,6 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
1783
1800
|
process.once("SIGTERM", _onHardSignal);
|
|
1784
1801
|
|
|
1785
1802
|
try {
|
|
1786
|
-
// eslint-disable-next-line no-constant-condition
|
|
1787
1803
|
while (true) {
|
|
1788
1804
|
// P1 turn→checkpoint binding: one drain of the loop = one turn. Anchor
|
|
1789
1805
|
// the conversation offset before the model sees the new user turn. A
|
|
@@ -2085,8 +2101,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
2085
2101
|
try {
|
|
2086
2102
|
if (_goalHelpers.isDeterministicCondition(cond)) {
|
|
2087
2103
|
const gc = deps.goalCheck || {};
|
|
2088
|
-
const spawnSync =
|
|
2089
|
-
gc.spawnSync || (await import("node:child_process")).spawnSync;
|
|
2104
|
+
const spawnSync = gc.spawnSync || runHeadlessGoalCommand;
|
|
2090
2105
|
const existsSync =
|
|
2091
2106
|
gc.existsSync || (await import("node:fs")).existsSync;
|
|
2092
2107
|
evaluation = _goalHelpers.runDeterministicCheck(cond, {
|
|
@@ -2221,7 +2236,7 @@ export async function runAgentHeadless(options = {}, deps = {}) {
|
|
|
2221
2236
|
if (settingsHooks) {
|
|
2222
2237
|
try {
|
|
2223
2238
|
const { runObserveHooks, dispatchAsyncHooks } =
|
|
2224
|
-
await import("../lib/settings-hook-events.
|
|
2239
|
+
await import("../lib/settings-hook-events.js");
|
|
2225
2240
|
const stopPayload = { reason: endReason, cwd, session_id: sessionId };
|
|
2226
2241
|
runObserveHooks(settingsHooks, "Stop", stopPayload, { cwd });
|
|
2227
2242
|
// Skip the async Stop dispatch/settle here if the auto-rewake re-drive
|
|
@@ -86,6 +86,11 @@ import {
|
|
|
86
86
|
} from "../lib/side-effect-ledger-store.js";
|
|
87
87
|
import { operationIdempotencyKey } from "../lib/idempotency.js";
|
|
88
88
|
import { getPlanModeManager } from "../lib/plan-mode.js";
|
|
89
|
+
import {
|
|
90
|
+
SESSION_SLASH_COMMANDS,
|
|
91
|
+
executeSessionSlashCommand,
|
|
92
|
+
parseSessionSlashCommandEvent,
|
|
93
|
+
} from "./session-slash-commands.js";
|
|
89
94
|
|
|
90
95
|
/**
|
|
91
96
|
* Resolve the streaming-delta coalesce window (ms). Adjacent partial-message
|
|
@@ -429,6 +434,11 @@ export function parseInputEvent(line) {
|
|
|
429
434
|
if (obj.features !== undefined) offer.features = obj.features;
|
|
430
435
|
return { hello: offer };
|
|
431
436
|
}
|
|
437
|
+
// Session-scoped slash commands (IDE panel / SDK control plane). These are
|
|
438
|
+
// dispatched against live session state and never become model turns:
|
|
439
|
+
// {"type":"slash_command","command":"status","args":"","request_id":"r1"}
|
|
440
|
+
const slashCommand = parseSessionSlashCommandEvent(obj);
|
|
441
|
+
if (slashCommand) return { slashCommand };
|
|
432
442
|
// Plan-mode control events (chat-panel plan UI):
|
|
433
443
|
// {"type":"plan","action":"enter"|"approve"|"reject"}
|
|
434
444
|
if (obj && typeof obj === "object" && obj.type === "plan") {
|
|
@@ -943,6 +953,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
943
953
|
// runAgentHeadless for the full semantics. null = no file → unchanged.
|
|
944
954
|
let permissionRules = options.permissionRules || null;
|
|
945
955
|
let managedSettings = null;
|
|
956
|
+
let settingsFiles = [];
|
|
946
957
|
try {
|
|
947
958
|
const { loadSettings, applyManagedPermissionPolicy } =
|
|
948
959
|
await import("../lib/settings-loader.cjs");
|
|
@@ -952,6 +963,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
952
963
|
managedSettingsFile: options.managedSettingsFile,
|
|
953
964
|
});
|
|
954
965
|
managedSettings = loaded.managed;
|
|
966
|
+
settingsFiles = Array.isArray(loaded.files) ? loaded.files : [];
|
|
955
967
|
if (!permissionRules) {
|
|
956
968
|
const total =
|
|
957
969
|
loaded.rules.allow.length +
|
|
@@ -1016,6 +1028,8 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1016
1028
|
const runLoop = deps.agentLoop || coreAgentLoop;
|
|
1017
1029
|
const doBootstrap = deps.bootstrap || bootstrap;
|
|
1018
1030
|
const doExpand = deps.expandFileRefs || expandFileRefsAsync;
|
|
1031
|
+
const runSessionSlashCommand =
|
|
1032
|
+
deps.executeSessionSlashCommand || executeSessionSlashCommand;
|
|
1019
1033
|
const writeOut = deps.writeOut || ((s) => process.stdout.write(s));
|
|
1020
1034
|
const writeErr = deps.writeErr || ((s) => process.stderr.write(s));
|
|
1021
1035
|
// Guard the real stdout/stderr against a downstream `| head` closing the pipe
|
|
@@ -1395,7 +1409,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1395
1409
|
if (settingsHooks && _loadedInstructions) {
|
|
1396
1410
|
try {
|
|
1397
1411
|
const { runInstructionsLoadedHooks } =
|
|
1398
|
-
await import("../lib/settings-hook-events.
|
|
1412
|
+
await import("../lib/settings-hook-events.js");
|
|
1399
1413
|
const ctx = runInstructionsLoadedHooks(settingsHooks, {
|
|
1400
1414
|
files: _loadedInstructions.files,
|
|
1401
1415
|
cwd,
|
|
@@ -1436,7 +1450,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1436
1450
|
if (settingsHooks) {
|
|
1437
1451
|
try {
|
|
1438
1452
|
const { runSessionStartHooks } =
|
|
1439
|
-
await import("../lib/settings-hook-events.
|
|
1453
|
+
await import("../lib/settings-hook-events.js");
|
|
1440
1454
|
const ctx = runSessionStartHooks(settingsHooks, {
|
|
1441
1455
|
source: "startup",
|
|
1442
1456
|
cwd,
|
|
@@ -1520,6 +1534,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1520
1534
|
mcp: Boolean(options.mcpConfig) || options.useRegisteredMcp !== false,
|
|
1521
1535
|
enabledToolNames,
|
|
1522
1536
|
}),
|
|
1537
|
+
slash_commands: [...SESSION_SLASH_COMMANDS],
|
|
1523
1538
|
input_format: "stream-json",
|
|
1524
1539
|
additional_directories: additionalDirectories,
|
|
1525
1540
|
resumed_messages: resumedMessages,
|
|
@@ -1858,6 +1873,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1858
1873
|
let wakeQueue = null;
|
|
1859
1874
|
let inputDone = false;
|
|
1860
1875
|
let currentAbort = null;
|
|
1876
|
+
let slashRequestSeq = 0;
|
|
1861
1877
|
(async () => {
|
|
1862
1878
|
try {
|
|
1863
1879
|
for await (const line of readJsonLines(input)) {
|
|
@@ -1947,6 +1963,60 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
1947
1963
|
const parsed = await nextEvent();
|
|
1948
1964
|
if (parsed == null) break; // stdin closed
|
|
1949
1965
|
|
|
1966
|
+
if (parsed.slashCommand) {
|
|
1967
|
+
const requestId =
|
|
1968
|
+
parsed.slashCommand.requestId || `slash-${++slashRequestSeq}`;
|
|
1969
|
+
let result;
|
|
1970
|
+
try {
|
|
1971
|
+
result = await runSessionSlashCommand(
|
|
1972
|
+
parsed.slashCommand,
|
|
1973
|
+
{
|
|
1974
|
+
sessionId,
|
|
1975
|
+
cwd,
|
|
1976
|
+
provider,
|
|
1977
|
+
model,
|
|
1978
|
+
apiKey,
|
|
1979
|
+
messages,
|
|
1980
|
+
messageCount: messages.length,
|
|
1981
|
+
additionalDirectories,
|
|
1982
|
+
extraRoots: additionalDirectories.length,
|
|
1983
|
+
mcp,
|
|
1984
|
+
permissionRules,
|
|
1985
|
+
permissionMode: options.permissionMode || "default",
|
|
1986
|
+
settingsHooks,
|
|
1987
|
+
settingsFiles,
|
|
1988
|
+
loadedInstructions: _loadedInstructions,
|
|
1989
|
+
projectMemoryEnabled:
|
|
1990
|
+
options.projectMemory !== false &&
|
|
1991
|
+
process.env.CC_PROJECT_MEMORY !== "0",
|
|
1992
|
+
},
|
|
1993
|
+
deps.sessionSlashCommandDeps || {},
|
|
1994
|
+
);
|
|
1995
|
+
} catch (error) {
|
|
1996
|
+
result = {
|
|
1997
|
+
ok: false,
|
|
1998
|
+
code: "COMMAND_FAILED",
|
|
1999
|
+
error: String(error?.message || error),
|
|
2000
|
+
};
|
|
2001
|
+
}
|
|
2002
|
+
emit({
|
|
2003
|
+
type: "slash_command_result",
|
|
2004
|
+
request_id: requestId,
|
|
2005
|
+
command: parsed.slashCommand.command,
|
|
2006
|
+
session_id: sessionId,
|
|
2007
|
+
ok: result?.ok === true,
|
|
2008
|
+
...(result?.ok === true
|
|
2009
|
+
? { text: String(result.output || "") }
|
|
2010
|
+
: {
|
|
2011
|
+
error: {
|
|
2012
|
+
code: result?.code || "COMMAND_FAILED",
|
|
2013
|
+
message: String(result?.error || "Slash command failed"),
|
|
2014
|
+
},
|
|
2015
|
+
}),
|
|
2016
|
+
});
|
|
2017
|
+
continue;
|
|
2018
|
+
}
|
|
2019
|
+
|
|
1950
2020
|
// One-time version-skew reminder (see flag declaration above). Best-effort;
|
|
1951
2021
|
// never blocks a turn. detectVersionSkew() returns null when this process is
|
|
1952
2022
|
// running the currently-installed version, so a fresh/up-to-date session
|
|
@@ -2244,7 +2314,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
2244
2314
|
if (settingsHooks) {
|
|
2245
2315
|
try {
|
|
2246
2316
|
const { runUserPromptSubmitHooks } =
|
|
2247
|
-
await import("../lib/settings-hook-events.
|
|
2317
|
+
await import("../lib/settings-hook-events.js");
|
|
2248
2318
|
const ups = runUserPromptSubmitHooks(settingsHooks, {
|
|
2249
2319
|
prompt: userContent,
|
|
2250
2320
|
cwd,
|
|
@@ -2596,7 +2666,7 @@ export async function runAgentHeadlessStream(options = {}, deps = {}) {
|
|
|
2596
2666
|
if (settingsHooks) {
|
|
2597
2667
|
try {
|
|
2598
2668
|
const { runObserveHooks } =
|
|
2599
|
-
await import("../lib/settings-hook-events.
|
|
2669
|
+
await import("../lib/settings-hook-events.js");
|
|
2600
2670
|
runObserveHooks(
|
|
2601
2671
|
settingsHooks,
|
|
2602
2672
|
"SessionEnd",
|