very-happy-cli 0.2.178 → 0.2.180
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/dist/{AcpBackend-DCQXHRzT.mjs → AcpBackend-B8Zi30Zh.mjs} +135 -16
- package/dist/{AcpBackend-CDkAQXYf.cjs → AcpBackend-DfRDtMcG.cjs} +135 -16
- package/dist/{AcpSessionManager-DckmUZza.cjs → AcpSessionManager-CASKOnOj.cjs} +38 -4
- package/dist/{AcpSessionManager-BXrQcqwC.mjs → AcpSessionManager-i8Rab0xT.mjs} +38 -4
- package/dist/{BasePermissionHandler-BVlrEhIi.mjs → BasePermissionHandler-26fKbRCm.mjs} +5 -2
- package/dist/{BasePermissionHandler-DyLmKKtO.cjs → BasePermissionHandler-BlM_tfej.cjs} +5 -2
- package/dist/acpSessionResume-B9l54P-X.mjs +67 -0
- package/dist/acpSessionResume-CR5pmgVo.cjs +74 -0
- package/dist/{agentHome-CEp9RMyK.cjs → agentHome-C7Sb7-Tz.cjs} +4 -4
- package/dist/{agentHome-C1xi37as.mjs → agentHome-CmGy0NWv.mjs} +4 -4
- package/dist/{api-JANhFdZV.cjs → api-DM7b1OKj.cjs} +38 -262
- package/dist/{api-Dib0dmqC.mjs → api-Hov8p7CA.mjs} +32 -256
- package/dist/{apiMachine-DNTJidYH.mjs → apiMachine-CwGEhQDT.mjs} +62 -15
- package/dist/{apiMachine-QhK-sKcr.cjs → apiMachine-DkGRj-Ai.cjs} +64 -17
- package/dist/{attachmentContent-bpQTBJ0y.cjs → attachmentContent-CEm13_gF.cjs} +4 -4
- package/dist/{attachmentContent-DkkdpSSJ.mjs → attachmentContent-CIn4iPEk.mjs} +2 -2
- package/dist/{auth-BRjd2esb.mjs → auth-BG1DY0gj.mjs} +5 -5
- package/dist/{auth-DgIV0Cvt.cjs → auth-CBXnm-Mj.cjs} +5 -5
- package/dist/{auth-omWDtgR8.cjs → auth-Dawj7pP5.cjs} +8 -8
- package/dist/{auth-DNct7VUi.mjs → auth-rggxMpEE.mjs} +8 -8
- package/dist/{auto-DKGFOJBo.mjs → auto-CXXLXGeL.mjs} +19 -18
- package/dist/{auto-CI16FZmX.cjs → auto-CbYOfoPS.cjs} +19 -18
- package/dist/{backgroundTaskActivity-BVwJBl02.mjs → backgroundTaskActivity-8PdPxrvy.mjs} +1 -1
- package/dist/{bootstrap-DCQ87Aan.cjs → bootstrap-DoA7okld.cjs} +2 -2
- package/dist/{bootstrap-BUagGC_-.mjs → bootstrap-Dt5I1SOl.mjs} +2 -2
- package/dist/{browser-Dj_DYQEh.mjs → browser-DUNetFT4.mjs} +1 -1
- package/dist/{browser-CSKhc0Bl.cjs → browser-DZ6qRtfH.cjs} +1 -1
- package/dist/{claudeCliPath-U4HHmV4r.cjs → claudeCliPath-GaP3UUz1.cjs} +1 -1
- package/dist/{claudeLocal-CdIVnOZp.cjs → claudeLocal--DNyMOSv.cjs} +8 -7
- package/dist/{claudeLocal-CCCvAeMd.mjs → claudeLocal-OHWQigCl.mjs} +6 -5
- package/dist/{claudeLocalLauncher-BmrpaRYJ.mjs → claudeLocalLauncher-BStvfa7M.mjs} +11 -10
- package/dist/{claudeLocalLauncher-21-xh5gc.cjs → claudeLocalLauncher-BhvPbcyH.cjs} +13 -12
- package/dist/{claudeSessionFork-kYCP1IJB.cjs → claudeSessionFork-Be16vzGc.cjs} +1 -1
- package/dist/{claudeSessionFork-DvxMKAmY.mjs → claudeSessionFork-GAVWhiKG.mjs} +1 -1
- package/dist/{client-C4zKGjiJ.cjs → client-BWjaHKtj.cjs} +2 -2
- package/dist/client-Ca5Pcgy_.mjs +71 -0
- package/dist/{client-CnlkkrZO.mjs → client-CnB7kRCT.mjs} +2 -2
- package/dist/{client-BTX9hsbr.mjs → client-D4uPb1uu.mjs} +3 -3
- package/dist/client-DJplzPjD.cjs +76 -0
- package/dist/{client-Dnza1hgN.cjs → client-D_loZ9IK.cjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +24 -15
- package/dist/codex/happyMcpStdioBridge.mjs +25 -16
- package/dist/{codexAppServerClient-DvkpQgyv.mjs → codexAppServerClient-CO4G6OS4.mjs} +3 -3
- package/dist/{codexAppServerClient-CRlBWGn3.cjs → codexAppServerClient-PE-12AsW.cjs} +3 -3
- package/dist/{codexCommand-DzxIWXIT.cjs → codexCommand-BNoD1t1C.cjs} +127 -116
- package/dist/{codexCommand-BxjogBzU.mjs → codexCommand-B_xUH79E.mjs} +77 -66
- package/dist/{codexTermination-C28FzlLb.cjs → codexTermination-BmBbizFK.cjs} +7 -2
- package/dist/{codexTermination-ySDNMEhd.mjs → codexTermination-Dx48ma6e.mjs} +7 -2
- package/dist/{config-BFB5uJ4t.cjs → config-CtwEUxUP.cjs} +26 -26
- package/dist/{config-DwfEpFr3.mjs → config-DSu0Blos.mjs} +3 -3
- package/dist/{configuration-4TGMrjul.cjs → configuration-CYO-kPOS.cjs} +1 -1
- package/dist/{configuration-DVrb61aY.mjs → configuration-PxzEJumr.mjs} +1 -1
- package/dist/{connect-C7FPY0PI.mjs → connect-BQrg3TB6.mjs} +15 -15
- package/dist/{connect-QH2VJGBG.cjs → connect-Dq7wndzR.cjs} +28 -28
- package/dist/{context-JoKu0V54.cjs → context-6TP-iz_c.cjs} +1 -1
- package/dist/{context-B3XPVJlj.mjs → context-CJGRRGWW.mjs} +1 -1
- package/dist/{controlClient-BTaZlbC6.cjs → controlClient-Bqv5v5OM.cjs} +3 -3
- package/dist/{controlClient-BYKyGyxj.mjs → controlClient-DoeYovwP.mjs} +4 -4
- package/dist/{createSessionMetadata-8Fuj2-IV.mjs → createSessionMetadata-DDIChCx8.mjs} +2 -2
- package/dist/{createSessionMetadata-B2NynaWZ.cjs → createSessionMetadata-xz767pcG.cjs} +3 -3
- package/dist/{defaultPermissionMode-BEWCqJU-.cjs → defaultPermissionMode-PkZGsQDk.cjs} +2 -2
- package/dist/{defaultPermissionMode-B8kJG9uI.mjs → defaultPermissionMode-i5KzdK09.mjs} +2 -2
- package/dist/{detectCLI-DR9ZaN6B.cjs → detectCLI-BuYR_Qxe.cjs} +4 -4
- package/dist/{deterministicJson-C5ZwZ7hu.mjs → deterministicJson-CTEJDqtS.mjs} +217 -12
- package/dist/{deterministicJson-BjNQsAjO.cjs → deterministicJson-xqA6DaOm.cjs} +222 -16
- package/dist/{doctor-BshRnjLi.cjs → doctor-BrgSlfXn.cjs} +9 -9
- package/dist/{doctor-0BiGwJXk.mjs → doctor-IctjVh9T.mjs} +8 -8
- package/dist/{doctorReadiness-BCZGcN0a.cjs → doctorReadiness-Dl6yRQCy.cjs} +1 -1
- package/dist/{downloadTarget-BN5vZt3K.cjs → downloadTarget-CEb9che-.cjs} +6 -6
- package/dist/{downloadTarget-DJPwAZlu.mjs → downloadTarget-jbOz1egC.mjs} +6 -6
- package/dist/{ensureDaemonRunning-C5QfToCe.cjs → ensureDaemonRunning-D-HyjGIX.cjs} +6 -6
- package/dist/{ensureDaemonRunning-CSmb_mqt.mjs → ensureDaemonRunning-b1e8LCSM.mjs} +5 -5
- package/dist/{handleResumeCommand-BwnUZmbo.cjs → handleResumeCommand-BvWVuRwH.cjs} +23 -7
- package/dist/{handleResumeCommand-CgjpsdDe.mjs → handleResumeCommand-DpaZvm2c.mjs} +22 -6
- package/dist/{index-piJPsTsm.cjs → index-B2p2Mut7.cjs} +259 -53
- package/dist/{index-BehVbAsA.mjs → index-BUNnpGFF.mjs} +256 -50
- package/dist/{index-Bvldtdny.mjs → index-Bsvbgh9e.mjs} +4 -4
- package/dist/{index-BYOZ_8WZ.cjs → index-C64Ufj4D.cjs} +4 -4
- package/dist/{index-Clqlu17M.mjs → index-C6Vn5Eac.mjs} +155 -34
- package/dist/index-CMf5VbzG.mjs +18 -0
- package/dist/index-DmTlDRSL.cjs +24 -0
- package/dist/{index-_l1Sdmbi.cjs → index-Dv0Q48P3.cjs} +156 -33
- package/dist/{index-BRClDe07.cjs → index-F2UejqYs.cjs} +3 -3
- package/dist/{index-BYgfern_.mjs → index-wCbtF4BK.mjs} +3 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-BdvKiOQw.mjs → install-BX3lv3NO.mjs} +1 -1
- package/dist/{install-Cf6AFSWC.cjs → install-BXvf2E3o.cjs} +1 -1
- package/dist/{install-TO4taKW7.cjs → install-C0ANcEAW.cjs} +7 -7
- package/dist/{install-fYWHrPcC.mjs → install-CdzSV7qO.mjs} +3 -3
- package/dist/{installPiTools-BKnXjrVu.cjs → installPiTools-CL_axh_6.cjs} +1 -1
- package/dist/{installTerminalHooks-BQZbvxsZ.cjs → installTerminalHooks-BETLKAtd.cjs} +3 -3
- package/dist/lib.cjs +14 -14
- package/dist/lib.d.cts +239 -2
- package/dist/lib.d.mts +239 -2
- package/dist/lib.mjs +14 -14
- package/dist/{lidState-BeOwj6eW.cjs → lidState-DWGnm2H4.cjs} +1 -1
- package/dist/{lidState-DNMlIhX0.mjs → lidState-bBrmaQd2.mjs} +1 -1
- package/dist/{localHappyAgentAuth-Br-mgogg.cjs → localHappyAgentAuth-DZHQnIW9.cjs} +1 -1
- package/dist/{localHappyAgentAuth-BezKSFDi.mjs → localHappyAgentAuth-Dn1jYDpt.mjs} +1 -1
- package/dist/{logger--vAVtXB_.mjs → logger-BUngm5Xg.mjs} +2 -2
- package/dist/{logger-DXTWlPzP.cjs → logger-CphW5nUE.cjs} +2 -2
- package/dist/machineMetadata-BQm9YTcI.cjs +79 -0
- package/dist/machineMetadata-BXN_bKU3.mjs +68 -0
- package/dist/{main-DoMFJ2Cl.cjs → main-B2UV51nK.cjs} +112 -132
- package/dist/{main-CshDb5-1.mjs → main-DGkdYfEq.mjs} +106 -126
- package/dist/{mcp-pNc1EbQf.cjs → mcp-BFvAEIRz.cjs} +15 -15
- package/dist/{mcp-DKT_lrvQ.mjs → mcp-CbTtbs0f.mjs} +15 -15
- package/dist/{mirrorProtocol-6IFGPpjJ.mjs → mirrorProtocol-BR4luBC0.mjs} +148 -7
- package/dist/{mirrorProtocol-qKflWTX_.cjs → mirrorProtocol-HKPivs5o.cjs} +150 -4
- package/dist/{package-B7B03ejW.mjs → package-7Ld1YMhh.mjs} +8 -7
- package/dist/{package-DY4zTbKS.cjs → package-KhLqBDX9.cjs} +8 -7
- package/dist/panels-C7IVqpJk.mjs +137 -0
- package/dist/panels-Njf6GelF.cjs +142 -0
- package/dist/{peerTools-3R9RUARX.mjs → peerTools-BOlDRyhi.mjs} +60 -10
- package/dist/{peerTools-iy3_6Yc5.cjs → peerTools-DQNlrcqM.cjs} +60 -9
- package/dist/{persistence-BfX72dne.cjs → persistence-9BMYspxG.cjs} +2 -2
- package/dist/{persistence-DTk4sNpd.mjs → persistence-BFUOHW5h.mjs} +3 -3
- package/dist/{piRunnerArgs-CRQVR9o-.cjs → piRunnerArgs-DGaq6VYM.cjs} +8 -2
- package/dist/{piRunnerArgs-AT8QJY7x.mjs → piRunnerArgs-H2pgpA5z.mjs} +7 -1
- package/dist/{piRuntime-BHRT5MKO.cjs → piRuntime-CT5xv_3h.cjs} +2 -2
- package/dist/{piRuntime-E44qTVQ4.mjs → piRuntime-CdN0JAsa.mjs} +2 -2
- package/dist/{piTerminal-hI4WFdWm.cjs → piTerminal-0FBtXTHK.cjs} +18 -18
- package/dist/{piTerminal-De8nbciM.mjs → piTerminal-C4m9YXAV.mjs} +18 -18
- package/dist/processTreeSnapshot-CuLJDNC-.mjs +101 -0
- package/dist/processTreeSnapshot-mDbnuojn.cjs +105 -0
- package/dist/projectPath-C3ioB4Bu.cjs +13 -0
- package/dist/prompt-BOouDaTM.mjs +99 -0
- package/dist/prompt-lgF9IE82.cjs +105 -0
- package/dist/{attachmentLimits-UyFn8fkQ.mjs → pushNotifications-DCiBEVeC.mjs} +307 -3
- package/dist/{attachmentLimits-SqeAHrVC.cjs → pushNotifications-DI92havG.cjs} +308 -2
- package/dist/{index-DFPT4HOO.cjs → query-BETKBrnz.cjs} +25 -5
- package/dist/{index-CEjJnq05.mjs → query-ywZbQUzR.mjs} +26 -3
- package/dist/{rateLimitWindows-XrJiiBpU.mjs → rateLimitWindows-BkfuUB1a.mjs} +1 -1
- package/dist/{rateLimitWindows-Czb7_7cK.cjs → rateLimitWindows-YRIYVdo4.cjs} +1 -1
- package/dist/{registerCommonHandlers-C0_fyBQ0.cjs → registerCommonHandlers-C7a_dUWs.cjs} +30 -30
- package/dist/{registerCommonHandlers-CvIedVRf.mjs → registerCommonHandlers-CTkCvjxt.mjs} +2 -2
- package/dist/{registerKillSessionHandler-DYl7l4Ts.cjs → registerKillSessionHandler-CIsvBrVe.cjs} +6 -6
- package/dist/{registerKillSessionHandler-gwJ5lTf0.mjs → registerKillSessionHandler-CaqqRYq6.mjs} +6 -6
- package/dist/{remoteSessionClient-BRTIOX5b.cjs → remoteSessionClient-D843fkzL.cjs} +5 -5
- package/dist/{remoteSessionClient-DRb2Jr5s.mjs → remoteSessionClient-PP-mOKmw.mjs} +5 -5
- package/dist/{reportProgressTool-B9nCzbkL.cjs → reportProgressTool-14AXr959.cjs} +84 -2
- package/dist/{reportProgressTool-D5tEoXMW.mjs → reportProgressTool-ZOCNjWHr.mjs} +82 -3
- package/dist/{resources-JDPugcDq.cjs → resources-CvIlkzpP.cjs} +30 -0
- package/dist/{resources-BdFBQi8r.mjs → resources-y9jfyO-_.mjs} +30 -0
- package/dist/{run-CKe_WeLW.cjs → run-CAOCYYfT.cjs} +2806 -110
- package/dist/{run-BQ_FGaOL.mjs → run-Dajw2E5j.mjs} +2787 -91
- package/dist/{runClaude-zrrNcQC_.mjs → runClaude-C6oxWYbp.mjs} +49 -47
- package/dist/{runClaude-MHI5IKM-.cjs → runClaude-CRRKt-tm.cjs} +50 -48
- package/dist/{runClaudeDeps-RRw-Nusc.cjs → runClaudeDeps-B1ysqTvx.cjs} +310 -237
- package/dist/{runClaudeDeps-CVBCokOS.mjs → runClaudeDeps-BcZ68cX3.mjs} +297 -226
- package/dist/{runGemini-kipag2ag.mjs → runGemini-D7yKc4wD.mjs} +61 -55
- package/dist/{runGemini-D7Lg9yCr.cjs → runGemini-DtKFXqf-.cjs} +89 -83
- package/dist/{runOpenClaw-C_lRY3Do.mjs → runOpenClaw-C8ilyLP9.mjs} +19 -19
- package/dist/{runOpenClaw-DCcQ0L2N.cjs → runOpenClaw-Cq29mryb.cjs} +20 -20
- package/dist/{sandbox-BSyXFVFp.mjs → sandbox-CbCutma4.mjs} +4 -4
- package/dist/{sandbox-dMwPTmjm.cjs → sandbox-gIj-EuF4.cjs} +4 -4
- package/dist/{selfCheck-DkzDDUsE.cjs → selfCheck-BTGBVthv.cjs} +39 -38
- package/dist/selfCheck-Smt-5Xiq.mjs +85 -0
- package/dist/{send-dxC0miIA.cjs → send-CZf5lLw_.cjs} +8 -8
- package/dist/{send-C-k9nsd3.mjs → send-YZRMQvMJ.mjs} +9 -9
- package/dist/{server-DxoTYNlw.mjs → server-BqwXRzFZ.mjs} +4 -4
- package/dist/{server-B-W6P7Qr.cjs → server-CknFq6xG.cjs} +6 -6
- package/dist/sessionExitLifecycle-CzkLIgNZ.mjs +142 -0
- package/dist/sessionExitLifecycle-DFltxXU8.cjs +148 -0
- package/dist/{sessionLock-DWX6BbiU.cjs → sessionLock-DRZUcKHT.cjs} +38 -5
- package/dist/{sessionLock-DBdtZGOL.mjs → sessionLock-nBXdJxJm.mjs} +36 -5
- package/dist/{sessionOps-BAnr7n8t.cjs → sessionOps-BrGiU9-s.cjs} +10 -5
- package/dist/{sessionOps-BVoXe12O.mjs → sessionOps-C58iDeD5.mjs} +11 -6
- package/dist/{sessionScanner-BtxoeluY.mjs → sessionScanner-Bm57LEXe.mjs} +3 -3
- package/dist/{sessionScanner-CDOYsEUD.cjs → sessionScanner-CaO8bLaG.cjs} +3 -3
- package/dist/{sessions-C3sZJkzI.mjs → sessions-BXyBHo8n.mjs} +40 -18
- package/dist/{sessions-hAitoN-m.cjs → sessions-uzqPCc37.cjs} +39 -16
- package/dist/{setupOfflineReconnection-_eD4cuUT.mjs → setupOfflineReconnection-1Qlek3wl.mjs} +2 -2
- package/dist/{setupOfflineReconnection-C2EeYTFH.cjs → setupOfflineReconnection-DvvVX3TB.cjs} +2 -2
- package/dist/{spawn-Bc9v7pIf.cjs → spawn-DBkodJEO.cjs} +49 -18
- package/dist/{spawn-qNrB2CD_.mjs → spawn-vn93PhYL.mjs} +49 -18
- package/dist/spawnAgents-CgPMWexP.mjs +79 -0
- package/dist/{spawnAgents-BVEaz35W.cjs → spawnAgents-DLNMlhWJ.cjs} +37 -1
- package/dist/{spawnHappyCLI-C2stUioM.mjs → spawnHappyCLI-BjFZc_7V.mjs} +1 -1
- package/dist/{spawnHappyCLI-fzUagkKV.cjs → spawnHappyCLI-DnUZv0X2.cjs} +2 -2
- package/dist/{specialCommands-BJ-nqY4s.cjs → specialCommands-BRufxlqe.cjs} +3 -3
- package/dist/{specialCommands-C6W-rVyh.mjs → specialCommands-D3ND9bdg.mjs} +3 -3
- package/dist/{startFileWatcher-Bqlqjt93.cjs → startFileWatcher-D9cYzZOq.cjs} +1 -1
- package/dist/{startFileWatcher-CR09Snmz.mjs → startFileWatcher-DXJ7yB5v.mjs} +1 -1
- package/dist/startupSessionCreate-kdr3m1uX.cjs +26 -0
- package/dist/startupSessionCreate-uZ6BM0ty.mjs +24 -0
- package/dist/{streamRelay-CJoMk_d2.mjs → streamRelay-DnMCMMfV.mjs} +1 -1
- package/dist/{streamRelay-9kBPpbvU.cjs → streamRelay-Dy6amlzx.cjs} +1 -1
- package/dist/{sync-Dhmtk66S.cjs → sync-Bn-idAoy.cjs} +1 -1
- package/dist/{sync-DbW07iQS.mjs → sync-BvVhDO40.mjs} +1 -1
- package/dist/{systemPrompt-CQcuUmVp.mjs → systemPrompt-CIZcJuJF.mjs} +4 -3
- package/dist/{systemPrompt-3PYi3EUY.cjs → systemPrompt-DlyEk35T.cjs} +4 -3
- package/dist/{teams-DpxLcUU_.cjs → teams-BLeRpDxv.cjs} +8 -8
- package/dist/{teams-CwF4Z2fA.mjs → teams-DLY3B5yi.mjs} +8 -8
- package/dist/{time-A6zR3Iy6.cjs → time-Cjv0zxQO.cjs} +1 -1
- package/dist/{time-BuGWTVP6.mjs → time-D3ETL7Jb.mjs} +1 -1
- package/dist/{titleGenerator-D26gvNaS.cjs → titleGenerator-Cgp5ihFb.cjs} +10 -9
- package/dist/{titleGenerator-BGEzNWC9.mjs → titleGenerator-Uzbd4utr.mjs} +9 -8
- package/dist/{todo-DrZc76H5.mjs → todo-C9Ga-oEM.mjs} +6 -6
- package/dist/{todo-73g3NCIO.cjs → todo-pOMcEECE.cjs} +6 -6
- package/dist/{tools-CxJp4T1T.cjs → tools-BL7Byl_x.cjs} +1 -1
- package/dist/{tools-BtsrQnNS.mjs → tools-Cho7iIWf.mjs} +1 -1
- package/dist/{uninstall-DWNYvewQ.cjs → uninstall-CbayEVoV.cjs} +6 -6
- package/dist/{uninstall-DOb2mTwV.mjs → uninstall-CvZHVY9C.mjs} +3 -3
- package/dist/webPanels-B2_C2-3g.mjs +49 -0
- package/dist/webPanels-FCgFKvVe.cjs +53 -0
- package/package.json +8 -7
- package/dist/machineMetadata-B1H9gNbN.mjs +0 -39
- package/dist/machineMetadata-DcUupMje.cjs +0 -42
- package/dist/messageBuffer-BWlGgR3A.mjs +0 -71
- package/dist/messageBuffer-fJMH6uY8.cjs +0 -73
- package/dist/projectPath-ChLhdOyt.cjs +0 -13
- package/dist/selfCheck-CF7XGJPb.mjs +0 -84
- package/dist/sessionModeFile-ByLbXTbg.mjs +0 -32
- package/dist/sessionModeFile-CLLdidiJ.cjs +0 -36
- package/dist/spawnAgents-Bw6j4tqz.mjs +0 -45
|
@@ -1,35 +1,38 @@
|
|
|
1
|
-
import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-
|
|
2
|
-
export { b as DEFAULT_IDLE_TIMEOUT_MS, c as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, d as formatDurationMinutes, h as handleAgentMessageChunk, g as handleAgentThoughtChunk, j as handleLegacyMessageChunk, k as handlePlanUpdate, l as handleThinkingUpdate, m as handleToolCall, n as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-
|
|
3
|
-
import { l as logger } from './logger
|
|
4
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
5
|
-
import {
|
|
1
|
+
import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-B8Zi30Zh.mjs';
|
|
2
|
+
export { b as DEFAULT_IDLE_TIMEOUT_MS, c as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, d as formatDurationMinutes, h as handleAgentMessageChunk, g as handleAgentThoughtChunk, j as handleLegacyMessageChunk, k as handlePlanUpdate, l as handleThinkingUpdate, m as handleToolCall, n as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-B8Zi30Zh.mjs';
|
|
3
|
+
import { l as logger } from './logger-BUngm5Xg.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-i8Rab0xT.mjs';
|
|
5
|
+
import { q as PI_STEER_CAPABILITY, f as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-C6Vn5Eac.mjs';
|
|
6
6
|
import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
|
|
7
|
-
import { c as configuration } from './configuration-
|
|
8
|
-
import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-
|
|
9
|
-
import { p as preparePiTeamsRuntime } from './piRuntime-
|
|
7
|
+
import { c as configuration } from './configuration-PxzEJumr.mjs';
|
|
8
|
+
import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-CIn4iPEk.mjs';
|
|
9
|
+
import { p as preparePiTeamsRuntime } from './piRuntime-CdN0JAsa.mjs';
|
|
10
10
|
import { randomUUID } from 'node:crypto';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
|
-
import { c as connectionState, A as ApiClient } from './api-
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { r as
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
12
|
+
import { c as connectionState, A as ApiClient } from './api-Hov8p7CA.mjs';
|
|
13
|
+
import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-CTEJDqtS.mjs';
|
|
14
|
+
import { s as sharedProjectsClient } from './client-Ca5Pcgy_.mjs';
|
|
15
|
+
import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CaqqRYq6.mjs';
|
|
16
|
+
import { r as readSettings } from './persistence-BFUOHW5h.mjs';
|
|
17
|
+
import { g as getInitialMachineMetadata } from './machineMetadata-BXN_bKU3.mjs';
|
|
18
|
+
import { c as createSessionMetadata } from './createSessionMetadata-DDIChCx8.mjs';
|
|
19
|
+
import { s as setupOfflineReconnection } from './setupOfflineReconnection-1Qlek3wl.mjs';
|
|
20
|
+
import { c as createSessionForStartup } from './startupSessionCreate-uZ6BM0ty.mjs';
|
|
21
|
+
import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon } from './controlClient-DoeYovwP.mjs';
|
|
22
|
+
import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
|
|
23
|
+
import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-nBXdJxJm.mjs';
|
|
24
|
+
import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-B9l54P-X.mjs';
|
|
25
|
+
import { S as StreamRelay } from './streamRelay-DnMCMMfV.mjs';
|
|
22
26
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
23
|
-
import { B as BasePermissionHandler } from './BasePermissionHandler-
|
|
24
|
-
import { T as TitleGenerator } from './titleGenerator-
|
|
25
|
-
import { w as writeSessionModeFile, n as normalizeAcpPermissionMode, r as removeSessionModeFile } from './sessionModeFile-ByLbXTbg.mjs';
|
|
27
|
+
import { B as BasePermissionHandler } from './BasePermissionHandler-26fKbRCm.mjs';
|
|
28
|
+
import { T as TitleGenerator } from './titleGenerator-Uzbd4utr.mjs';
|
|
26
29
|
import { E as EditReportThrottle, e as extractAcpEditPaths } from './editPaths-BVfS_FFL.mjs';
|
|
27
30
|
import 'node:child_process';
|
|
28
31
|
import '@agentclientprotocol/sdk';
|
|
29
|
-
import './time-
|
|
32
|
+
import './time-D3ETL7Jb.mjs';
|
|
30
33
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
31
34
|
import './processTree-CP5IvQ2Z.mjs';
|
|
32
|
-
import './package-
|
|
35
|
+
import './package-7Ld1YMhh.mjs';
|
|
33
36
|
import 'chalk';
|
|
34
37
|
import 'node:util';
|
|
35
38
|
import 'node:fs';
|
|
@@ -37,49 +40,52 @@ import '@paralleldrive/cuid2';
|
|
|
37
40
|
import 'zod';
|
|
38
41
|
import 'node:os';
|
|
39
42
|
import 'node:fs/promises';
|
|
40
|
-
import './
|
|
41
|
-
import './resources-BdFBQi8r.mjs';
|
|
43
|
+
import './pushNotifications-DCiBEVeC.mjs';
|
|
42
44
|
import 'axios';
|
|
43
|
-
import './
|
|
45
|
+
import './resources-y9jfyO-_.mjs';
|
|
46
|
+
import './lidState-bBrmaQd2.mjs';
|
|
44
47
|
import 'os';
|
|
45
48
|
import 'child_process';
|
|
46
49
|
import 'node:events';
|
|
47
50
|
import 'socket.io-client';
|
|
48
51
|
import './limits-DIo7rEBR.mjs';
|
|
49
|
-
import './registerCommonHandlers-
|
|
52
|
+
import './registerCommonHandlers-CTkCvjxt.mjs';
|
|
50
53
|
import 'util';
|
|
51
54
|
import 'fs/promises';
|
|
52
55
|
import 'crypto';
|
|
53
56
|
import 'path';
|
|
54
57
|
import 'cross-spawn';
|
|
55
|
-
import './sync-
|
|
56
|
-
import './backgroundTaskActivity-
|
|
57
|
-
import '
|
|
58
|
-
import './
|
|
59
|
-
import './client-
|
|
60
|
-
import './context-B3XPVJlj.mjs';
|
|
61
|
-
import './sessionOps-BVoXe12O.mjs';
|
|
62
|
-
import './tools-BtsrQnNS.mjs';
|
|
63
|
-
import './reportProgressTool-D5tEoXMW.mjs';
|
|
64
|
-
import './client-CnlkkrZO.mjs';
|
|
58
|
+
import './sync-BvVhDO40.mjs';
|
|
59
|
+
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
60
|
+
import './prompt-BOouDaTM.mjs';
|
|
61
|
+
import './reportProgressTool-ZOCNjWHr.mjs';
|
|
62
|
+
import './client-CnB7kRCT.mjs';
|
|
65
63
|
import './precheckCompat-DeEbilbr.mjs';
|
|
66
64
|
import './agentGuidance-BDYt2Qy2.mjs';
|
|
67
65
|
import './trimIdent-BAjmv_TG.mjs';
|
|
68
|
-
import './
|
|
66
|
+
import './client-D4uPb1uu.mjs';
|
|
67
|
+
import './context-CJGRRGWW.mjs';
|
|
68
|
+
import './sessionOps-C58iDeD5.mjs';
|
|
69
|
+
import './tools-Cho7iIWf.mjs';
|
|
70
|
+
import './peerTools-BOlDRyhi.mjs';
|
|
69
71
|
import './ids-DU6sLx4C.mjs';
|
|
70
|
-
import './remoteSessionClient-
|
|
72
|
+
import './remoteSessionClient-PP-mOKmw.mjs';
|
|
71
73
|
import '@modelcontextprotocol/sdk/server/mcp.js';
|
|
72
74
|
import 'node:http';
|
|
73
75
|
import '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
74
|
-
import './downloadTarget-
|
|
76
|
+
import './downloadTarget-jbOz1egC.mjs';
|
|
75
77
|
import './terminals-Dlg0x3nY.mjs';
|
|
76
78
|
import './terminalTitleSuggest-CeKsX_V6.mjs';
|
|
77
79
|
import './tmuxSocket-B8Yx20sT.mjs';
|
|
78
|
-
import './bootstrap-
|
|
80
|
+
import './bootstrap-Dt5I1SOl.mjs';
|
|
81
|
+
import './webPanels-B2_C2-3g.mjs';
|
|
79
82
|
import './previewPath-CXN4Vag0.mjs';
|
|
83
|
+
import 'tweetnacl';
|
|
84
|
+
import './types-CkqAACXx.mjs';
|
|
80
85
|
import './detectCLI-CSGMlV51.mjs';
|
|
81
86
|
import 'fs';
|
|
82
|
-
import './localHappyAgentAuth-
|
|
87
|
+
import './localHappyAgentAuth-Dn1jYDpt.mjs';
|
|
88
|
+
import './processTreeSnapshot-CuLJDNC-.mjs';
|
|
83
89
|
import 'url';
|
|
84
90
|
import 'node:module';
|
|
85
91
|
import './oneShotPrompts-DT4p6RNd.mjs';
|
|
@@ -127,6 +133,113 @@ function describeAcpTurnFailure(agentName, error) {
|
|
|
127
133
|
return { message: `${agentName} error: ${oneLine(detailOf(error))}`, exited: false };
|
|
128
134
|
}
|
|
129
135
|
|
|
136
|
+
const OUT_OF_TURN_QUIET_MS = 6e4;
|
|
137
|
+
function isAcpTurnContent(msg) {
|
|
138
|
+
if (msg.type === "model-output") return typeof msg.textDelta === "string" && msg.textDelta.length > 0;
|
|
139
|
+
if (msg.type === "tool-call" || msg.type === "tool-result") return true;
|
|
140
|
+
return msg.type === "event" && msg.name === "thinking";
|
|
141
|
+
}
|
|
142
|
+
function outOfTurnAction(msg, state) {
|
|
143
|
+
if (state.inPromptTurn || !state.backendStarted) return null;
|
|
144
|
+
if (msg.type === "status" && msg.status === "idle") return state.open ? "end" : null;
|
|
145
|
+
if (!isAcpTurnContent(msg)) return null;
|
|
146
|
+
return state.open ? "touch" : "start";
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function createPiSteerChannel() {
|
|
150
|
+
let nextId = 0;
|
|
151
|
+
const pending = [];
|
|
152
|
+
const waiters = /* @__PURE__ */ new Set();
|
|
153
|
+
const offers = /* @__PURE__ */ new Map();
|
|
154
|
+
let ready = false;
|
|
155
|
+
const readyListeners = [];
|
|
156
|
+
const hand = () => {
|
|
157
|
+
while (pending.length > 0 && waiters.size > 0) {
|
|
158
|
+
const waiter = waiters.values().next().value;
|
|
159
|
+
waiters.delete(waiter);
|
|
160
|
+
const item = pending.shift();
|
|
161
|
+
const offer = offers.get(item.id);
|
|
162
|
+
if (offer) offer.taken = true;
|
|
163
|
+
waiter(item);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
return {
|
|
167
|
+
get ready() {
|
|
168
|
+
return ready;
|
|
169
|
+
},
|
|
170
|
+
/** The extension announced itself (first contact). */
|
|
171
|
+
hello() {
|
|
172
|
+
if (ready) return;
|
|
173
|
+
ready = true;
|
|
174
|
+
for (const listener of readyListeners.splice(0)) listener();
|
|
175
|
+
},
|
|
176
|
+
onReady(listener) {
|
|
177
|
+
if (ready) listener();
|
|
178
|
+
else readyListeners.push(listener);
|
|
179
|
+
},
|
|
180
|
+
/** Wrapper side: hand `text` to the running turn; true = pi took it. */
|
|
181
|
+
offer(text, timeoutMs) {
|
|
182
|
+
const item = { id: ++nextId, text };
|
|
183
|
+
return new Promise((resolve) => {
|
|
184
|
+
const timer = setTimeout(() => {
|
|
185
|
+
const offer = offers.get(item.id);
|
|
186
|
+
offers.delete(item.id);
|
|
187
|
+
const index = pending.findIndex((p) => p.id === item.id);
|
|
188
|
+
if (index >= 0) pending.splice(index, 1);
|
|
189
|
+
resolve(offer?.taken === true);
|
|
190
|
+
}, timeoutMs);
|
|
191
|
+
timer.unref?.();
|
|
192
|
+
offers.set(item.id, {
|
|
193
|
+
taken: false,
|
|
194
|
+
settle: (delivered) => {
|
|
195
|
+
clearTimeout(timer);
|
|
196
|
+
offers.delete(item.id);
|
|
197
|
+
resolve(delivered);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
pending.push(item);
|
|
201
|
+
hand();
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
/** Extension side (long poll): the next message, or null after `waitMs`. */
|
|
205
|
+
take(waitMs, signal) {
|
|
206
|
+
return new Promise((resolve) => {
|
|
207
|
+
const done = () => {
|
|
208
|
+
clearTimeout(timer);
|
|
209
|
+
signal?.removeEventListener("abort", onAbort);
|
|
210
|
+
};
|
|
211
|
+
const waiter = (item) => {
|
|
212
|
+
done();
|
|
213
|
+
resolve(item);
|
|
214
|
+
};
|
|
215
|
+
const onAbort = () => {
|
|
216
|
+
waiters.delete(waiter);
|
|
217
|
+
done();
|
|
218
|
+
resolve(null);
|
|
219
|
+
};
|
|
220
|
+
const timer = setTimeout(() => {
|
|
221
|
+
waiters.delete(waiter);
|
|
222
|
+
done();
|
|
223
|
+
resolve(null);
|
|
224
|
+
}, waitMs);
|
|
225
|
+
timer.unref?.();
|
|
226
|
+
if (signal?.aborted) {
|
|
227
|
+
resolve(null);
|
|
228
|
+
clearTimeout(timer);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
232
|
+
waiters.add(waiter);
|
|
233
|
+
hand();
|
|
234
|
+
});
|
|
235
|
+
},
|
|
236
|
+
/** Extension side: what happened to a taken message (false: pi was no longer running). */
|
|
237
|
+
ack(id, delivered) {
|
|
238
|
+
offers.get(id)?.settle(delivered);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
|
|
130
243
|
const SUPPORTED_CATEGORIES = /* @__PURE__ */ new Set(["mode", "model", "thought_level"]);
|
|
131
244
|
function isRecord$1(value) {
|
|
132
245
|
return !!value && typeof value === "object";
|
|
@@ -636,6 +749,7 @@ class GenericAcpPermissionHandler extends BasePermissionHandler {
|
|
|
636
749
|
});
|
|
637
750
|
}
|
|
638
751
|
}
|
|
752
|
+
const PI_STEER_OFFER_TIMEOUT_MS = 5e3;
|
|
639
753
|
function resolveSessionFlavor(agentName) {
|
|
640
754
|
if (agentName === "gemini") {
|
|
641
755
|
return "gemini";
|
|
@@ -664,12 +778,45 @@ async function runAcp(opts) {
|
|
|
664
778
|
machineId: settings.machineId,
|
|
665
779
|
startedBy: opts.startedBy,
|
|
666
780
|
sandbox: settings.sandboxConfig,
|
|
667
|
-
capabilities: [PROMPT_QUEUE_CAPABILITY]
|
|
781
|
+
capabilities: [PROMPT_QUEUE_CAPABILITY, PROJECT_SESSION_CAPABILITY]
|
|
668
782
|
});
|
|
669
783
|
metadata.attachmentKinds = [];
|
|
670
|
-
const
|
|
784
|
+
const reconnect = readAcpReconnectEnv(process.env);
|
|
785
|
+
let response;
|
|
786
|
+
if (reconnect) {
|
|
787
|
+
logger.debug(`[acp] Reconnecting to existing session ${reconnect.sessionId}`);
|
|
788
|
+
response = {
|
|
789
|
+
id: reconnect.sessionId,
|
|
790
|
+
seq: reconnect.seq,
|
|
791
|
+
encryptionKey: decodeBase64(reconnect.encryptionKey),
|
|
792
|
+
encryptionVariant: reconnect.encryptionVariant,
|
|
793
|
+
metadata,
|
|
794
|
+
metadataVersion: reconnect.metadataVersion,
|
|
795
|
+
agentState: state,
|
|
796
|
+
agentStateVersion: reconnect.agentStateVersion
|
|
797
|
+
};
|
|
798
|
+
} else {
|
|
799
|
+
response = await createSessionForStartup(() => api.getOrCreateSession({ tag: sessionTag, metadata, state }), { startedBy: opts.startedBy, log: (m) => logger.debug(m) });
|
|
800
|
+
}
|
|
671
801
|
if (response) {
|
|
672
802
|
logAcp("muted", `Happy Session ID: ${response.id}`);
|
|
803
|
+
await claimSessionOrExit(response.id, { takeover: !!reconnect, flavor: resolveSessionFlavor(opts.agentName) });
|
|
804
|
+
}
|
|
805
|
+
if (reconnect && response && !await api.reactivateSession(response.id)) {
|
|
806
|
+
throw new Error(`Failed to reactivate archived session ${response.id}`);
|
|
807
|
+
}
|
|
808
|
+
let reconnectSeeded = false;
|
|
809
|
+
let resumedPermissionMode = null;
|
|
810
|
+
if (reconnect && response) {
|
|
811
|
+
const snapshot = await api.getSession(response.id, response.encryptionKey, response.encryptionVariant);
|
|
812
|
+
if (snapshot.ok) {
|
|
813
|
+
response = applyServerSnapshot(response, snapshot.session);
|
|
814
|
+
reconnectSeeded = true;
|
|
815
|
+
resumedPermissionMode = normalizeAcpPermissionMode(snapshot.session.metadata?.permissionMode) ?? null;
|
|
816
|
+
} else {
|
|
817
|
+
response = withoutServerSnapshot(response);
|
|
818
|
+
logger.debug(`[acp] Reconnect without server snapshot (${snapshot.reason}); skipping existing messages`);
|
|
819
|
+
}
|
|
673
820
|
}
|
|
674
821
|
let session;
|
|
675
822
|
let permissionHandler;
|
|
@@ -679,6 +826,7 @@ async function runAcp(opts) {
|
|
|
679
826
|
metadata,
|
|
680
827
|
state,
|
|
681
828
|
response,
|
|
829
|
+
sessionClientOptions: reconnectSeeded && response ? { initialSeq: response.seq } : void 0,
|
|
682
830
|
onSessionSwap: (newSession) => {
|
|
683
831
|
session = newSession;
|
|
684
832
|
if (permissionHandler) {
|
|
@@ -688,6 +836,12 @@ async function runAcp(opts) {
|
|
|
688
836
|
}
|
|
689
837
|
});
|
|
690
838
|
session = initialSession;
|
|
839
|
+
if (reconnect) {
|
|
840
|
+
session.suppressNextArchiveSignal();
|
|
841
|
+
if (!reconnectSeeded) session.skipExistingMessages();
|
|
842
|
+
void session.cancelUndeliveredQueuedInputs();
|
|
843
|
+
session.updateMetadata((meta) => mergeReconnectMetadata(meta, metadata, Date.now()));
|
|
844
|
+
}
|
|
691
845
|
if (response) {
|
|
692
846
|
try {
|
|
693
847
|
await notifyDaemonSessionStarted(response.id, metadata, {
|
|
@@ -727,7 +881,7 @@ async function runAcp(opts) {
|
|
|
727
881
|
let sawSlashCommands = false;
|
|
728
882
|
let sawModes = false;
|
|
729
883
|
let sawModels = false;
|
|
730
|
-
const initialPermissionMode = opts.permissionMode ?? "default";
|
|
884
|
+
const initialPermissionMode = opts.permissionMode ?? resumedPermissionMode ?? "default";
|
|
731
885
|
let fileBackedModeActive = false;
|
|
732
886
|
const permissionModeIsFileBacked = () => opts.agentName === "pi" || !modeSelector && !legacyModes;
|
|
733
887
|
let fileBackedPermissionMode = null;
|
|
@@ -747,8 +901,15 @@ async function runAcp(opts) {
|
|
|
747
901
|
return true;
|
|
748
902
|
};
|
|
749
903
|
const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
|
|
904
|
+
const piSteer = opts.agentName === "pi" ? createPiSteerChannel() : null;
|
|
905
|
+
piSteer?.onReady(() => {
|
|
906
|
+
logger.debug(`[${opts.agentName}] pi extension connected to the steer channel`);
|
|
907
|
+
session.updateMetadata((current) => ({ ...current, capabilities: [.../* @__PURE__ */ new Set([...current.capabilities ?? [], PI_STEER_CAPABILITY])] }));
|
|
908
|
+
});
|
|
750
909
|
const happyServer = await startHappyServer(session, {
|
|
751
910
|
assistant: isAssistantVariant,
|
|
911
|
+
...piSteer ? { piSteer } : {},
|
|
912
|
+
push: { sendAttention: (input) => api.push().sendAttention(input) },
|
|
752
913
|
...opts.agentName === "pi" ? { onContextUsage: (contextUsage) => {
|
|
753
914
|
session.updateAgentState((state2) => ({ ...state2, contextUsage }));
|
|
754
915
|
} } : {}
|
|
@@ -770,6 +931,7 @@ async function runAcp(opts) {
|
|
|
770
931
|
...teamsPiEnv,
|
|
771
932
|
HAPPY_MCP_URL: happyServer.url,
|
|
772
933
|
...happyServer.contextUsageUrl ? { HAPPY_CONTEXT_USAGE_URL: happyServer.contextUsageUrl } : {},
|
|
934
|
+
...happyServer.steerUrl ? { HAPPY_PI_STEER_URL: happyServer.steerUrl } : {},
|
|
773
935
|
HAPPY_SESSION_ID: session.sessionId,
|
|
774
936
|
// B-497: sender identity for `very-happy sessions message|peers` in this shell.
|
|
775
937
|
VH_PEER_SESSION_ID: session.sessionId,
|
|
@@ -782,6 +944,15 @@ async function runAcp(opts) {
|
|
|
782
944
|
});
|
|
783
945
|
let backend = createBackend();
|
|
784
946
|
let thinking = false;
|
|
947
|
+
let outOfTurnTimer = null;
|
|
948
|
+
const endOutOfTurn = (reason) => {
|
|
949
|
+
if (!outOfTurnTimer) return;
|
|
950
|
+
clearTimeout(outOfTurnTimer);
|
|
951
|
+
outOfTurnTimer = null;
|
|
952
|
+
logger.debug(`[${opts.agentName}] Out-of-turn output ended (${reason})`);
|
|
953
|
+
sendEnvelopes(sessionManager.endTurn("completed"));
|
|
954
|
+
setThinking(false);
|
|
955
|
+
};
|
|
785
956
|
const setThinking = (next) => {
|
|
786
957
|
if (thinking === next) {
|
|
787
958
|
return;
|
|
@@ -796,6 +967,7 @@ async function runAcp(opts) {
|
|
|
796
967
|
let backendStarted = false;
|
|
797
968
|
let backendGone = null;
|
|
798
969
|
let todoDiscoverySent = false;
|
|
970
|
+
const projectInjector = createProjectInjector({ client: sharedProjectsClient(), sessionId: () => session?.sessionId, metadata: () => session?.getMetadata?.() ?? null, agent: opts.agentName });
|
|
799
971
|
const stopRunnerFromBackendStatus = (status, detail) => {
|
|
800
972
|
const reason = detail ? `${opts.agentName} backend ${status}: ${detail}` : `${opts.agentName} backend ${status}`;
|
|
801
973
|
logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
|
|
@@ -1093,7 +1265,18 @@ async function runAcp(opts) {
|
|
|
1093
1265
|
reportSessionEditToDaemon({ sessionId: session.sessionId, path: edit.path, tool: edit.tool, cwd: process.cwd() });
|
|
1094
1266
|
}
|
|
1095
1267
|
}
|
|
1268
|
+
const action = outOfTurnAction(msg, { open: outOfTurnTimer !== null, inPromptTurn: thinking && outOfTurnTimer === null, backendStarted });
|
|
1269
|
+
if (action === "start") {
|
|
1270
|
+
sendEnvelopes(sessionManager.startTurn());
|
|
1271
|
+
setThinking(true);
|
|
1272
|
+
}
|
|
1273
|
+
if (action === "start" || action === "touch") {
|
|
1274
|
+
if (outOfTurnTimer) clearTimeout(outOfTurnTimer);
|
|
1275
|
+
outOfTurnTimer = setTimeout(() => endOutOfTurn("quiet"), OUT_OF_TURN_QUIET_MS);
|
|
1276
|
+
outOfTurnTimer.unref?.();
|
|
1277
|
+
}
|
|
1096
1278
|
sendEnvelopes(sessionManager.mapMessage(msg));
|
|
1279
|
+
if (action === "end") endOutOfTurn("idle");
|
|
1097
1280
|
};
|
|
1098
1281
|
backend.onMessage(onBackendMessage);
|
|
1099
1282
|
const titleGenerator = new TitleGenerator(session);
|
|
@@ -1118,6 +1301,13 @@ async function runAcp(opts) {
|
|
|
1118
1301
|
if (message.meta && Object.prototype.hasOwnProperty.call(message.meta, "effort")) {
|
|
1119
1302
|
currentEffort = message.meta.effort ?? null;
|
|
1120
1303
|
}
|
|
1304
|
+
if (message.meta?.delivery === "steer" && piSteer?.ready && thinking && !attachments?.length) {
|
|
1305
|
+
if (await piSteer.offer(message.content.text, PI_STEER_OFFER_TIMEOUT_MS)) {
|
|
1306
|
+
logger.debug(`[${opts.agentName}] User message steered into the running turn`);
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1309
|
+
logger.debug(`[${opts.agentName}] Steer not taken; queued for the next turn`);
|
|
1310
|
+
}
|
|
1121
1311
|
messageQueue.push(message.content.text, {
|
|
1122
1312
|
permissionMode: currentPermissionMode,
|
|
1123
1313
|
model: currentModel,
|
|
@@ -1184,6 +1374,12 @@ async function runAcp(opts) {
|
|
|
1184
1374
|
publishFileBackedPermissionMode(fileBackedPermissionMode ?? initialPermissionMode);
|
|
1185
1375
|
}
|
|
1186
1376
|
};
|
|
1377
|
+
let agentSessionId = opts.resumeAgentSessionId ?? null;
|
|
1378
|
+
const rememberAgentSession = (id) => {
|
|
1379
|
+
if (!id || opts.agentName !== "pi") return;
|
|
1380
|
+
agentSessionId = id;
|
|
1381
|
+
session.updateMetadata((current) => current.piSessionId === id ? current : { ...current, piSessionId: id });
|
|
1382
|
+
};
|
|
1187
1383
|
const restartBackend = async () => {
|
|
1188
1384
|
const gone = backendGone;
|
|
1189
1385
|
backend.offMessage?.(onBackendMessage);
|
|
@@ -1195,19 +1391,27 @@ async function runAcp(opts) {
|
|
|
1195
1391
|
}
|
|
1196
1392
|
backend = createBackend();
|
|
1197
1393
|
backend.onMessage(onBackendMessage);
|
|
1198
|
-
const started = await backend.startSession();
|
|
1394
|
+
const started = await backend.startSession(void 0, agentSessionId ? { loadSessionId: agentSessionId } : {});
|
|
1199
1395
|
acpSessionId = started.sessionId;
|
|
1396
|
+
rememberAgentSession(started.agentSessionId);
|
|
1200
1397
|
backendGone = null;
|
|
1201
1398
|
todoDiscoverySent = false;
|
|
1399
|
+
projectInjector.reset();
|
|
1202
1400
|
await afterSessionStarted(currentModel ?? opts.model);
|
|
1203
|
-
logger.debug(`[${opts.agentName}] Restarted the agent after it exited: ${gone?.message ?? "unknown"}`);
|
|
1204
|
-
session.sendSessionEvent({ type: "message", message:
|
|
1401
|
+
logger.debug(`[${opts.agentName}] Restarted the agent after it exited: ${gone?.message ?? "unknown"} (conversation: ${started.resumed ?? "new"}${started.loadFailure ? `, ${started.loadFailure}` : ""})`);
|
|
1402
|
+
session.sendSessionEvent({ type: "message", message: piRestartNotice(opts.agentName, "agent-exit", started) });
|
|
1205
1403
|
};
|
|
1206
1404
|
try {
|
|
1207
|
-
const
|
|
1405
|
+
const resumeId = opts.resumeAgentSessionId;
|
|
1406
|
+
const started = await backend.startSession(void 0, resumeId ? { loadSessionId: resumeId } : {});
|
|
1208
1407
|
acpSessionId = started.sessionId;
|
|
1408
|
+
rememberAgentSession(started.agentSessionId);
|
|
1209
1409
|
backendStarted = true;
|
|
1210
1410
|
await afterSessionStarted(opts.model);
|
|
1411
|
+
if (resumeId) {
|
|
1412
|
+
logger.debug(`[${opts.agentName}] Resume of agent session ${resumeId}: ${started.resumed ?? "new"}${started.loadFailure ? ` (${started.loadFailure})` : ""}`);
|
|
1413
|
+
if (started.resumed !== "loaded") session.sendSessionEvent({ type: "message", message: piRestartNotice(opts.agentName, "resume", started) });
|
|
1414
|
+
}
|
|
1211
1415
|
if (verbose) {
|
|
1212
1416
|
if (!sawSlashCommands) {
|
|
1213
1417
|
logAcp("muted", `Outgoing slash commands from ${opts.agentName}: not reported yet`);
|
|
@@ -1232,6 +1436,7 @@ async function runAcp(opts) {
|
|
|
1232
1436
|
break;
|
|
1233
1437
|
}
|
|
1234
1438
|
logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
|
|
1439
|
+
endOutOfTurn("prompt");
|
|
1235
1440
|
sendEnvelopes(sessionManager.startTurn());
|
|
1236
1441
|
turnCancelled = false;
|
|
1237
1442
|
setThinking(true);
|
|
@@ -1249,7 +1454,8 @@ async function runAcp(opts) {
|
|
|
1249
1454
|
if (typeof batch.mode.effort === "string") {
|
|
1250
1455
|
await switchEffortIfRequested(batch.mode.effort, modelChanged);
|
|
1251
1456
|
}
|
|
1252
|
-
const
|
|
1457
|
+
const projected = await projectInjector.decorate(batch.message);
|
|
1458
|
+
const prompt = todoDiscoverySent ? projected : `${projected}
|
|
1253
1459
|
|
|
1254
1460
|
${BUILTIN_TODO_DISCOVERY}`;
|
|
1255
1461
|
const attachments = batch.attachments ?? [];
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { statSync, readdirSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
|
-
import { l as logger } from './logger
|
|
4
|
-
import { r as readSettings } from './persistence-
|
|
3
|
+
import { l as logger } from './logger-BUngm5Xg.mjs';
|
|
4
|
+
import { r as readSettings } from './persistence-BFUOHW5h.mjs';
|
|
5
5
|
import { d as describeAgentHome, C as CLAUDE_CONFIG_DIR_ENV, a as CODEX_HOME_ENV, f as findClaudeConversation, b as agentHomeCandidates, c as findCodexThread, r as resolveAgentHomes, A as AGENT_HOME_ENV_NAMES, g as agentHomeEnv, p as probeLoginShellEnv } from './loginShellEnv-Dw8M7tkI.mjs';
|
|
6
6
|
export { h as claudeConversationPath, i as claudeProjectDirName, j as codexRolloutFileMatches, e as expandHomePath } from './loginShellEnv-Dw8M7tkI.mjs';
|
|
7
7
|
import 'chalk';
|
|
8
8
|
import 'node:util';
|
|
9
|
-
import './configuration-
|
|
9
|
+
import './configuration-PxzEJumr.mjs';
|
|
10
10
|
import 'node:path';
|
|
11
|
-
import './package-
|
|
11
|
+
import './package-7Ld1YMhh.mjs';
|
|
12
12
|
import 'node:fs/promises';
|
|
13
13
|
import 'zod';
|
|
14
14
|
import './authRelay-DhQhkBvX.mjs';
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var node_fs = require('node:fs');
|
|
4
4
|
var os = require('node:os');
|
|
5
|
-
var logger = require('./logger-
|
|
6
|
-
var persistence = require('./persistence-
|
|
5
|
+
var logger = require('./logger-CphW5nUE.cjs');
|
|
6
|
+
var persistence = require('./persistence-9BMYspxG.cjs');
|
|
7
7
|
var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
|
|
8
8
|
require('chalk');
|
|
9
9
|
require('node:util');
|
|
10
|
-
require('./configuration-
|
|
10
|
+
require('./configuration-CYO-kPOS.cjs');
|
|
11
11
|
require('node:path');
|
|
12
|
-
require('./package-
|
|
12
|
+
require('./package-KhLqBDX9.cjs');
|
|
13
13
|
require('node:fs/promises');
|
|
14
14
|
require('zod');
|
|
15
15
|
require('./authRelay-Dy1qU9td.cjs');
|