very-happy-cli 0.2.177 → 0.2.179
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-B0K0WrtW.mjs → AcpBackend-CHp3y7cb.mjs} +135 -16
- package/dist/{AcpBackend-B-ny68XM.cjs → AcpBackend-DFipFF7-.cjs} +135 -16
- package/dist/{AcpSessionManager-CjdJLofq.cjs → AcpSessionManager-0zpvRJXc.cjs} +38 -4
- package/dist/{AcpSessionManager-DykjzBM4.mjs → AcpSessionManager-d2-rKWWa.mjs} +38 -4
- package/dist/{BasePermissionHandler-DR6nxuEn.cjs → BasePermissionHandler-CH3zuEkA.cjs} +5 -2
- package/dist/{BasePermissionHandler-hdY7kTqX.mjs → BasePermissionHandler-DdZBYIR4.mjs} +5 -2
- package/dist/acpSessionResume-DTGmAPLt.mjs +67 -0
- package/dist/acpSessionResume-oiCBnAVA.cjs +74 -0
- package/dist/{agentHome-BdTXEUPe.cjs → agentHome-BWcz8mz0.cjs} +5 -5
- package/dist/{agentHome-GRN2VfHv.mjs → agentHome-CghLvL_1.mjs} +5 -5
- package/dist/{api-BWX10o97.cjs → api-Cmjfr8Z7.cjs} +29 -261
- package/dist/{api-CKBViqI3.mjs → api-CzwFpJQc.mjs} +22 -254
- package/dist/{apiMachine-DttO4UFj.mjs → apiMachine-DJkTEiqy.mjs} +53 -16
- package/dist/{apiMachine-BYYFGgFs.cjs → apiMachine-G6OogT08.cjs} +53 -16
- package/dist/{attachmentContent-cPVF463_.mjs → attachmentContent-B2os4HbA.mjs} +2 -2
- package/dist/{attachmentContent-kJKXpkMX.cjs → attachmentContent-Bo0UAsSu.cjs} +4 -4
- package/dist/{auth-BmESeKuM.mjs → auth-BS6PaOOG.mjs} +6 -6
- package/dist/{auth-CTECt2Oz.cjs → auth-D6bBUwZa.cjs} +6 -6
- package/dist/{auth-CKdXb9zp.mjs → auth-DMX0xPNK.mjs} +9 -9
- package/dist/{auth-DNxVmVbn.cjs → auth-HEhRaNgL.cjs} +9 -9
- package/dist/{authRelay-DSAvg1uv.mjs → authRelay-DhQhkBvX.mjs} +1 -1
- package/dist/{authRelay-BdYkC1Po.cjs → authRelay-Dy1qU9td.cjs} +1 -0
- package/dist/{auto-D1ypjjfx.cjs → auto-C6I55iOh.cjs} +19 -18
- package/dist/{auto-Ch3203qd.mjs → auto-Cl1SEDcD.mjs} +19 -18
- package/dist/{bootstrap-6OI698q9.cjs → bootstrap-exVucYav.cjs} +2 -2
- package/dist/{bootstrap-C0s2bPFQ.mjs → bootstrap-iuyufnp3.mjs} +2 -2
- package/dist/{browser-DG6Uof5O.cjs → browser-BohJK12g.cjs} +1 -1
- package/dist/{browser-BlLWZUMx.mjs → browser-CSYum7xH.mjs} +1 -1
- package/dist/{claudeLocal-CcWcKnoo.mjs → claudeLocal-Dq_R3Ax_.mjs} +6 -5
- package/dist/{claudeLocal-CemsIArT.cjs → claudeLocal-re4yjSTx.cjs} +6 -5
- package/dist/{claudeLocalLauncher-A4VuevIi.cjs → claudeLocalLauncher-B4hJHpCA.cjs} +11 -10
- package/dist/{claudeLocalLauncher-7p6y88nj.mjs → claudeLocalLauncher-CN67lN7-.mjs} +11 -10
- package/dist/{claudeSessionFork-BtROOjqf.mjs → claudeSessionFork-BihfD0Ik.mjs} +1 -1
- package/dist/{claudeSessionFork-CbDfm8Fz.cjs → claudeSessionFork-DiSMYerV.cjs} +1 -1
- package/dist/{client-DyvBTYee.cjs → client-BKcK1Bi-.cjs} +3 -3
- package/dist/client-BhoEBnuN.mjs +71 -0
- package/dist/{client-COmgDDy0.cjs → client-CuVdN6PP.cjs} +2 -2
- package/dist/{client-BPMWutfs.mjs → client-DuTDwWSQ.mjs} +3 -3
- package/dist/client-ZjOsn6nZ.cjs +76 -0
- package/dist/{client-DG5ndWLw.mjs → client-wo9nbxuf.mjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +25 -16
- package/dist/codex/happyMcpStdioBridge.mjs +25 -16
- package/dist/{codexAppServerClient-D-Z8qSfI.mjs → codexAppServerClient-BK3zra_1.mjs} +3 -3
- package/dist/{codexAppServerClient-R24WZZfg.cjs → codexAppServerClient-Dt5zxrun.cjs} +3 -3
- package/dist/{codexCommand-CVTkZJ1o.mjs → codexCommand-B6pY7CMh.mjs} +66 -61
- package/dist/{codexCommand-6hW19gsq.cjs → codexCommand-CAZ1SLjg.cjs} +89 -84
- package/dist/{codexTermination-CCIfwzcx.mjs → codexTermination-Cd1Eon_4.mjs} +1 -1
- package/dist/{codexTermination-BBU7e92y.cjs → codexTermination-DmGbHxcD.cjs} +1 -1
- package/dist/{config-CvsNChKX.mjs → config-2oMG_fEI.mjs} +3 -3
- package/dist/{config-DhdrvOLV.cjs → config-B0uK6K7n.cjs} +3 -3
- package/dist/{configuration-DZPy0T9Z.cjs → configuration-CMHZnp6G.cjs} +1 -1
- package/dist/{configuration-D55F0t16.mjs → configuration-WMi4idBB.mjs} +1 -1
- package/dist/{connect-CwCXMRmD.mjs → connect-BLVHhHzA.mjs} +15 -15
- package/dist/{connect-Wz-XZYXW.cjs → connect-uaglGrde.cjs} +15 -15
- package/dist/{context-BKbrZ55r.cjs → context-DXzU5bFM.cjs} +1 -1
- package/dist/{context-CCRpVXFo.mjs → context-DploEcoN.mjs} +1 -1
- package/dist/{controlClient-C4xB5J6O.mjs → controlClient-BWUJrj3t.mjs} +3 -3
- package/dist/{controlClient-SX8gSza2.cjs → controlClient-C-5qCt8W.cjs} +3 -3
- package/dist/{createSessionMetadata-Bi-m0Y_O.mjs → createSessionMetadata-3uXrJgOW.mjs} +2 -2
- package/dist/{createSessionMetadata-BCFmYlBo.cjs → createSessionMetadata-BkIzHALd.cjs} +2 -2
- package/dist/{defaultPermissionMode-wBcbBezm.mjs → defaultPermissionMode-BzxLh20a.mjs} +2 -2
- package/dist/{defaultPermissionMode-DMBEnXll.cjs → defaultPermissionMode-pS3vmiSg.cjs} +2 -2
- package/dist/{deterministicJson-ChGfQEF6.cjs → deterministicJson-B8z2GPi9.cjs} +220 -14
- package/dist/{deterministicJson-BkQETt8_.mjs → deterministicJson-D_whDMFd.mjs} +217 -12
- package/dist/{doctor-BsN3JZJn.cjs → doctor-Br1Kcy2J.cjs} +8 -8
- package/dist/{doctor-B9c2C9dF.mjs → doctor-CmtSsR2-.mjs} +8 -8
- package/dist/{downloadTarget-Dj3WoVJa.cjs → downloadTarget-BQJK_6oH.cjs} +6 -6
- package/dist/{downloadTarget-ByXzbDK4.mjs → downloadTarget-BoNwTIH_.mjs} +6 -6
- package/dist/{ensureDaemonRunning-7Wb8M7Lv.cjs → ensureDaemonRunning-BRUmsq6J.cjs} +5 -5
- package/dist/{ensureDaemonRunning--HYzs5Ce.mjs → ensureDaemonRunning-Czo9IHJQ.mjs} +5 -5
- package/dist/{handleResumeCommand-DHddBkNJ.mjs → handleResumeCommand-C8thKjqf.mjs} +22 -6
- package/dist/{handleResumeCommand-OmuUGYjQ.cjs → handleResumeCommand-tKD_Hpxc.cjs} +22 -6
- package/dist/{index-CrR4JISa.cjs → index-B0UjHlAe.cjs} +5 -5
- package/dist/{index-BzJNDsJq.mjs → index-BTxHphpV.mjs} +254 -49
- package/dist/index-BiyC7cZ3.mjs +18 -0
- package/dist/{index-De8L5lFK.cjs → index-C6O2vVjm.cjs} +156 -34
- package/dist/index-CUuc6iCn.cjs +24 -0
- package/dist/{index-Dhl6_bw7.mjs → index-CdQI0C9p.mjs} +5 -5
- package/dist/{index-D9NoYc5I.cjs → index-D09T1m8Y.cjs} +3 -3
- package/dist/{index-CEm0MYiS.mjs → index-D3bidoG8.mjs} +3 -3
- package/dist/{index-BRJzH4sc.cjs → index-DMqDMT1Q.cjs} +257 -52
- package/dist/{index-DMy3OCBe.mjs → index-DPOa4NhL.mjs} +154 -35
- 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-1qn-D9FS.cjs → install-CYRZxS87.cjs} +3 -3
- package/dist/{install-BDIUtPXi.mjs → install-hnve_9vq.mjs} +3 -3
- package/dist/lib.cjs +14 -14
- package/dist/lib.d.cts +65 -1
- package/dist/lib.d.mts +65 -1
- package/dist/lib.mjs +14 -14
- package/dist/{lidState-BqVsw7H1.mjs → lidState-Bb8fgXg3.mjs} +2 -2
- package/dist/{lidState-DxbK0qfu.cjs → lidState-Dv2wwFTj.cjs} +2 -2
- package/dist/{localHappyAgentAuth-D5tANdRD.cjs → localHappyAgentAuth-DjYvkXvV.cjs} +2 -2
- package/dist/{localHappyAgentAuth-Ce8kO2yc.mjs → localHappyAgentAuth-NEU7fax7.mjs} +2 -2
- package/dist/{logger-13cBr_ew.mjs → logger-BtVhHnD8.mjs} +2 -2
- package/dist/{logger-LvwVeATU.cjs → logger-C1GWx3gi.cjs} +2 -2
- package/dist/{machineMetadata-29h7vgf4.cjs → machineMetadata-CLHS9sv_.cjs} +3 -3
- package/dist/{machineMetadata-dMida2qq.mjs → machineMetadata-D-g--oU_.mjs} +3 -3
- package/dist/{main-x4nAhdH5.mjs → main-B2LWV8DI.mjs} +59 -46
- package/dist/{main-DpM5jaFH.cjs → main-CWhSsbtU.cjs} +59 -46
- package/dist/{mcp-DQv3caXs.cjs → mcp-CARUsXHV.cjs} +15 -15
- package/dist/{mcp-DMiFGYMT.mjs → mcp-ext92q3Y.mjs} +15 -15
- package/dist/{mirrorProtocol-Bz8tEabR.mjs → mirrorProtocol-BwYibqry.mjs} +3 -3
- package/dist/{mirrorProtocol-BfrERW7Z.cjs → mirrorProtocol-DEy2g1CB.cjs} +3 -3
- package/dist/{package-CjlsAaRe.mjs → package-BPPebGQF.mjs} +7 -7
- package/dist/{package-Ch9WGDV_.cjs → package-SgqTYsjn.cjs} +7 -7
- package/dist/panels-BZ0_Tt7B.mjs +137 -0
- package/dist/panels-D1c7q2dD.cjs +142 -0
- package/dist/{peerTools-CxmrKnfV.mjs → peerTools-CWKzcQ7u.mjs} +60 -10
- package/dist/{peerTools-DtGKWli5.cjs → peerTools-DRQETXaz.cjs} +60 -9
- package/dist/{persistence-DXbKOHxl.cjs → persistence-BegE7NPa.cjs} +14 -3
- package/dist/{persistence-C_tYtOqK.mjs → persistence-Cr-wutZ4.mjs} +14 -4
- package/dist/{piRunnerArgs-BVRZe2AR.cjs → piRunnerArgs-Cs-378Vz.cjs} +8 -2
- package/dist/{piRunnerArgs-BpHc-JZl.mjs → piRunnerArgs-DwvM_yWA.mjs} +7 -1
- package/dist/{piRuntime-D7eio8Ix.cjs → piRuntime-BG-1td_n.cjs} +2 -2
- package/dist/{piRuntime-DOdGF395.mjs → piRuntime-Bue5mnlc.mjs} +2 -2
- package/dist/{piTerminal-dpxz4Q8D.mjs → piTerminal-B5x9X5yV.mjs} +18 -18
- package/dist/{piTerminal-y_PRo2NY.cjs → piTerminal-G4z-xVyy.cjs} +18 -18
- package/dist/processTreeSnapshot-CuLJDNC-.mjs +101 -0
- package/dist/processTreeSnapshot-mDbnuojn.cjs +105 -0
- package/dist/prompt-BOouDaTM.mjs +99 -0
- package/dist/prompt-lgF9IE82.cjs +105 -0
- package/dist/{attachmentLimits-Di1Z93lN.mjs → pushNotifications-BdFjDjQe.mjs} +303 -3
- package/dist/{attachmentLimits-DtFqqiwR.cjs → pushNotifications-DaLQUyi0.cjs} +304 -2
- package/dist/{index-DFPT4HOO.cjs → query-Ctfg-5gy.cjs} +25 -5
- package/dist/{index-CEjJnq05.mjs → query-DYP_W1wp.mjs} +26 -3
- package/dist/{rateLimitWindows-DYHDGuzQ.mjs → rateLimitWindows-CuEqk_0g.mjs} +1 -1
- package/dist/{rateLimitWindows-DFnMU2Vt.cjs → rateLimitWindows-Dj_8voBK.cjs} +1 -1
- package/dist/{registerCommonHandlers-D8OMpBbQ.mjs → registerCommonHandlers-BAlP7SGc.mjs} +2 -2
- package/dist/{registerCommonHandlers-60VuTkdg.cjs → registerCommonHandlers-Cj084Sg7.cjs} +2 -2
- package/dist/{registerKillSessionHandler-Drhf7-Vz.mjs → registerKillSessionHandler-PD0jWtQo.mjs} +6 -6
- package/dist/{registerKillSessionHandler-pqChBKwO.cjs → registerKillSessionHandler-qMju0ZfF.cjs} +6 -6
- package/dist/{remoteSessionClient-B7NvjHD3.cjs → remoteSessionClient-B7i7MkYV.cjs} +5 -5
- package/dist/{remoteSessionClient-D01Hso2-.mjs → remoteSessionClient-Bn2qu5C5.mjs} +5 -5
- package/dist/{reportProgressTool-Du_zAK4h.cjs → reportProgressTool-CM1JFAHg.cjs} +84 -2
- package/dist/{reportProgressTool-B203EZCR.mjs → reportProgressTool-gHItlSzz.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-DX4Zs3Ug.mjs → run-BM4TxiyN.mjs} +249 -45
- package/dist/{run-DZ5jU53c.cjs → run-CNXwIe0A.cjs} +263 -59
- package/dist/{runClaude-ClRhHpwR.cjs → runClaude-CWhj2V4Q.cjs} +37 -41
- package/dist/{runClaude-CgPHXP0L.mjs → runClaude-C_3I8hvR.mjs} +37 -41
- package/dist/{runClaudeDeps-D2v_WDSL.cjs → runClaudeDeps-B81cOKnH.cjs} +295 -157
- package/dist/{runClaudeDeps-Dz2iydq4.mjs → runClaudeDeps-QGrOeDe2.mjs} +295 -160
- package/dist/{runGemini-DBXxpoY8.mjs → runGemini-BEdWEZLR.mjs} +61 -55
- package/dist/{runGemini-BtZqGFkp.cjs → runGemini-CgRLYbt5.cjs} +61 -55
- package/dist/{runOpenClaw-D8q8G57u.cjs → runOpenClaw-C1NVmzOL.cjs} +19 -19
- package/dist/{runOpenClaw-BOHpzCEU.mjs → runOpenClaw-DdQZAYj1.mjs} +19 -19
- package/dist/{sandbox-C452Vrsc.mjs → sandbox-DjQUdCMG.mjs} +5 -5
- package/dist/{sandbox-Cu9mMzjx.cjs → sandbox-nocIjliq.cjs} +5 -5
- package/dist/selfCheck-CjCF4C3v.mjs +85 -0
- package/dist/{selfCheck-gKa3uVr1.cjs → selfCheck-DCt4Uzbq.cjs} +36 -35
- package/dist/{send-B8HARi7x.mjs → send-Ct7X4pPU.mjs} +9 -9
- package/dist/{send-2Vb5eppI.cjs → send-Dydf_hwZ.cjs} +9 -9
- package/dist/{server-Db9Wuam3.cjs → server-CosABFbd.cjs} +7 -7
- package/dist/{server-BBWCIZyS.mjs → server-DTQGZMxh.mjs} +5 -5
- package/dist/{sessionLock-6qL_N6Rn.cjs → sessionLock-DokGab2R.cjs} +16 -3
- package/dist/{sessionLock-ZfvFVdUi.mjs → sessionLock-WYIyaVO4.mjs} +16 -4
- package/dist/{sessionOps-CdgbEJgf.mjs → sessionOps-BIGgRube.mjs} +11 -6
- package/dist/{sessionOps-Dmt7WUUs.cjs → sessionOps-S-qPBLFf.cjs} +11 -6
- package/dist/{sessionScanner-CQL_WSaC.cjs → sessionScanner-CIMM2hvZ.cjs} +3 -3
- package/dist/{sessionScanner-CNVaSNOn.mjs → sessionScanner-o5hnMi5e.mjs} +3 -3
- package/dist/{sessions-DTomHfFg.mjs → sessions-BJHEZpi2.mjs} +40 -18
- package/dist/{sessions-BJblG_Hx.cjs → sessions-JchI1w3z.cjs} +40 -17
- package/dist/{setupOfflineReconnection-DVA0VpQL.cjs → setupOfflineReconnection-CNiAt5ZP.cjs} +2 -2
- package/dist/{setupOfflineReconnection-C5trsV-j.mjs → setupOfflineReconnection-DMiBO2y9.mjs} +2 -2
- package/dist/{spawn-DRyNAqD8.cjs → spawn-6PD7nnoC.cjs} +49 -18
- package/dist/{spawn-CQJFgoOq.mjs → spawn-DgvUNYEo.mjs} +49 -18
- package/dist/{spawnAgents-CCjJifAW.cjs → spawnAgents-DsXgegHM.cjs} +37 -1
- package/dist/spawnAgents-P006Hqio.mjs +79 -0
- package/dist/{spawnHappyCLI-B_0RWxD4.mjs → spawnHappyCLI-CCOrEtf9.mjs} +1 -1
- package/dist/{spawnHappyCLI-ChniczJ5.cjs → spawnHappyCLI-Dywezwk6.cjs} +1 -1
- package/dist/{specialCommands-DkdFJi4N.mjs → specialCommands-DPcd9edP.mjs} +3 -3
- package/dist/{specialCommands-DbntVs0d.cjs → specialCommands-QxPpkGKf.cjs} +3 -3
- package/dist/{startFileWatcher-UQyTSRAP.mjs → startFileWatcher-DghDOCO4.mjs} +1 -1
- package/dist/{startFileWatcher-C292fhra.cjs → startFileWatcher-RECH5qY8.cjs} +1 -1
- package/dist/{streamRelay-_qCd873P.mjs → streamRelay-DMV_TXfS.mjs} +1 -1
- package/dist/{streamRelay-Cx01enfe.cjs → streamRelay-DlUWKUpo.cjs} +1 -1
- package/dist/{sync-C3p7-KLn.mjs → sync-CSe0Rf45.mjs} +1 -1
- package/dist/{sync-C7sxoUYG.cjs → sync-D23jbqVa.cjs} +1 -1
- package/dist/{systemPrompt-DtibzbRU.cjs → systemPrompt-BOy4kU4P.cjs} +4 -3
- package/dist/{systemPrompt-CdHOlyVW.mjs → systemPrompt-CFNKnh65.mjs} +4 -3
- package/dist/{teams-ujXr3AFn.mjs → teams-DyY669f0.mjs} +9 -9
- package/dist/{teams-D7O7TpVU.cjs → teams-Ov2BDT-A.cjs} +9 -9
- package/dist/{time-yEL6wHUF.mjs → time-65DcU6Jx.mjs} +1 -1
- package/dist/{time-Dg5tVB8S.cjs → time-CrwIMHta.cjs} +1 -1
- package/dist/{titleGenerator-BMEaDTwU.cjs → titleGenerator-CS_rh2_J.cjs} +9 -8
- package/dist/{titleGenerator-Dr-BtjzO.mjs → titleGenerator-CiAMxf7s.mjs} +9 -8
- package/dist/{todo-CvJe4M2C.mjs → todo-BDONw0sK.mjs} +7 -7
- package/dist/{todo-CUcFamGs.cjs → todo-KY-okGii.cjs} +7 -7
- package/dist/{tools-BrM3bZW5.mjs → tools-D8-PnZEG.mjs} +1 -1
- package/dist/{tools-DDKTB5aQ.cjs → tools-_w52DZG6.cjs} +1 -1
- package/dist/{uninstall-7oLuhYIu.cjs → uninstall-8vnLN-IE.cjs} +3 -3
- package/dist/{uninstall-CEcMMQGz.mjs → uninstall-_fjGRP9b.mjs} +3 -3
- package/dist/webPanels-B2_C2-3g.mjs +49 -0
- package/dist/webPanels-FCgFKvVe.cjs +53 -0
- package/package.json +7 -7
- package/dist/selfCheck-BAvqBwBR.mjs +0 -84
- package/dist/sessionModeFile-CWVq8AT9.mjs +0 -32
- package/dist/sessionModeFile-CsLtn_PL.cjs +0 -36
- package/dist/spawnAgents-BjtmjBvP.mjs +0 -45
|
@@ -1,35 +1,37 @@
|
|
|
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-CHp3y7cb.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-CHp3y7cb.mjs';
|
|
3
|
+
import { l as logger } from './logger-BtVhHnD8.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-d2-rKWWa.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-DPOa4NhL.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-WMi4idBB.mjs';
|
|
8
|
+
import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-B2os4HbA.mjs';
|
|
9
|
+
import { p as preparePiTeamsRuntime } from './piRuntime-Bue5mnlc.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-CzwFpJQc.mjs';
|
|
13
|
+
import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-D_whDMFd.mjs';
|
|
14
|
+
import { s as sharedProjectsClient } from './client-BhoEBnuN.mjs';
|
|
15
|
+
import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-PD0jWtQo.mjs';
|
|
16
|
+
import { r as readSettings } from './persistence-Cr-wutZ4.mjs';
|
|
17
|
+
import { g as getInitialMachineMetadata } from './machineMetadata-D-g--oU_.mjs';
|
|
18
|
+
import { c as createSessionMetadata } from './createSessionMetadata-3uXrJgOW.mjs';
|
|
19
|
+
import { s as setupOfflineReconnection } from './setupOfflineReconnection-DMiBO2y9.mjs';
|
|
20
|
+
import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon } from './controlClient-BWUJrj3t.mjs';
|
|
21
|
+
import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
|
|
22
|
+
import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-WYIyaVO4.mjs';
|
|
23
|
+
import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-DTGmAPLt.mjs';
|
|
24
|
+
import { S as StreamRelay } from './streamRelay-DMV_TXfS.mjs';
|
|
22
25
|
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-CWVq8AT9.mjs';
|
|
26
|
+
import { B as BasePermissionHandler } from './BasePermissionHandler-DdZBYIR4.mjs';
|
|
27
|
+
import { T as TitleGenerator } from './titleGenerator-CiAMxf7s.mjs';
|
|
26
28
|
import { E as EditReportThrottle, e as extractAcpEditPaths } from './editPaths-BVfS_FFL.mjs';
|
|
27
29
|
import 'node:child_process';
|
|
28
30
|
import '@agentclientprotocol/sdk';
|
|
29
|
-
import './time-
|
|
31
|
+
import './time-65DcU6Jx.mjs';
|
|
30
32
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
31
33
|
import './processTree-CP5IvQ2Z.mjs';
|
|
32
|
-
import './package-
|
|
34
|
+
import './package-BPPebGQF.mjs';
|
|
33
35
|
import 'chalk';
|
|
34
36
|
import 'node:util';
|
|
35
37
|
import 'node:fs';
|
|
@@ -37,49 +39,52 @@ import '@paralleldrive/cuid2';
|
|
|
37
39
|
import 'zod';
|
|
38
40
|
import 'node:os';
|
|
39
41
|
import 'node:fs/promises';
|
|
40
|
-
import './
|
|
41
|
-
import './resources-BdFBQi8r.mjs';
|
|
42
|
+
import './pushNotifications-BdFjDjQe.mjs';
|
|
42
43
|
import 'axios';
|
|
43
|
-
import './
|
|
44
|
+
import './resources-y9jfyO-_.mjs';
|
|
45
|
+
import './lidState-Bb8fgXg3.mjs';
|
|
44
46
|
import 'os';
|
|
45
47
|
import 'child_process';
|
|
46
48
|
import 'node:events';
|
|
47
49
|
import 'socket.io-client';
|
|
48
50
|
import './limits-DIo7rEBR.mjs';
|
|
49
|
-
import './registerCommonHandlers-
|
|
51
|
+
import './registerCommonHandlers-BAlP7SGc.mjs';
|
|
50
52
|
import 'util';
|
|
51
53
|
import 'fs/promises';
|
|
52
54
|
import 'crypto';
|
|
53
55
|
import 'path';
|
|
54
56
|
import 'cross-spawn';
|
|
55
|
-
import './sync-
|
|
57
|
+
import './sync-CSe0Rf45.mjs';
|
|
56
58
|
import './backgroundTaskActivity-BVwJBl02.mjs';
|
|
57
|
-
import '
|
|
58
|
-
import './
|
|
59
|
-
import './client-
|
|
60
|
-
import './context-CCRpVXFo.mjs';
|
|
61
|
-
import './sessionOps-CdgbEJgf.mjs';
|
|
62
|
-
import './tools-BrM3bZW5.mjs';
|
|
63
|
-
import './reportProgressTool-B203EZCR.mjs';
|
|
64
|
-
import './client-DG5ndWLw.mjs';
|
|
59
|
+
import './prompt-BOouDaTM.mjs';
|
|
60
|
+
import './reportProgressTool-gHItlSzz.mjs';
|
|
61
|
+
import './client-wo9nbxuf.mjs';
|
|
65
62
|
import './precheckCompat-DeEbilbr.mjs';
|
|
66
63
|
import './agentGuidance-BDYt2Qy2.mjs';
|
|
67
64
|
import './trimIdent-BAjmv_TG.mjs';
|
|
68
|
-
import './
|
|
65
|
+
import './client-DuTDwWSQ.mjs';
|
|
66
|
+
import './context-DploEcoN.mjs';
|
|
67
|
+
import './sessionOps-BIGgRube.mjs';
|
|
68
|
+
import './tools-D8-PnZEG.mjs';
|
|
69
|
+
import './peerTools-CWKzcQ7u.mjs';
|
|
69
70
|
import './ids-DU6sLx4C.mjs';
|
|
70
|
-
import './remoteSessionClient-
|
|
71
|
+
import './remoteSessionClient-Bn2qu5C5.mjs';
|
|
71
72
|
import '@modelcontextprotocol/sdk/server/mcp.js';
|
|
72
73
|
import 'node:http';
|
|
73
74
|
import '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
74
|
-
import './downloadTarget-
|
|
75
|
+
import './downloadTarget-BoNwTIH_.mjs';
|
|
75
76
|
import './terminals-Dlg0x3nY.mjs';
|
|
76
77
|
import './terminalTitleSuggest-CeKsX_V6.mjs';
|
|
77
78
|
import './tmuxSocket-B8Yx20sT.mjs';
|
|
78
|
-
import './bootstrap-
|
|
79
|
+
import './bootstrap-iuyufnp3.mjs';
|
|
80
|
+
import './webPanels-B2_C2-3g.mjs';
|
|
79
81
|
import './previewPath-CXN4Vag0.mjs';
|
|
82
|
+
import 'tweetnacl';
|
|
83
|
+
import './types-CkqAACXx.mjs';
|
|
80
84
|
import './detectCLI-CSGMlV51.mjs';
|
|
81
85
|
import 'fs';
|
|
82
|
-
import './localHappyAgentAuth-
|
|
86
|
+
import './localHappyAgentAuth-NEU7fax7.mjs';
|
|
87
|
+
import './processTreeSnapshot-CuLJDNC-.mjs';
|
|
83
88
|
import 'url';
|
|
84
89
|
import 'node:module';
|
|
85
90
|
import './oneShotPrompts-DT4p6RNd.mjs';
|
|
@@ -127,6 +132,113 @@ function describeAcpTurnFailure(agentName, error) {
|
|
|
127
132
|
return { message: `${agentName} error: ${oneLine(detailOf(error))}`, exited: false };
|
|
128
133
|
}
|
|
129
134
|
|
|
135
|
+
const OUT_OF_TURN_QUIET_MS = 6e4;
|
|
136
|
+
function isAcpTurnContent(msg) {
|
|
137
|
+
if (msg.type === "model-output") return typeof msg.textDelta === "string" && msg.textDelta.length > 0;
|
|
138
|
+
if (msg.type === "tool-call" || msg.type === "tool-result") return true;
|
|
139
|
+
return msg.type === "event" && msg.name === "thinking";
|
|
140
|
+
}
|
|
141
|
+
function outOfTurnAction(msg, state) {
|
|
142
|
+
if (state.inPromptTurn || !state.backendStarted) return null;
|
|
143
|
+
if (msg.type === "status" && msg.status === "idle") return state.open ? "end" : null;
|
|
144
|
+
if (!isAcpTurnContent(msg)) return null;
|
|
145
|
+
return state.open ? "touch" : "start";
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function createPiSteerChannel() {
|
|
149
|
+
let nextId = 0;
|
|
150
|
+
const pending = [];
|
|
151
|
+
const waiters = /* @__PURE__ */ new Set();
|
|
152
|
+
const offers = /* @__PURE__ */ new Map();
|
|
153
|
+
let ready = false;
|
|
154
|
+
const readyListeners = [];
|
|
155
|
+
const hand = () => {
|
|
156
|
+
while (pending.length > 0 && waiters.size > 0) {
|
|
157
|
+
const waiter = waiters.values().next().value;
|
|
158
|
+
waiters.delete(waiter);
|
|
159
|
+
const item = pending.shift();
|
|
160
|
+
const offer = offers.get(item.id);
|
|
161
|
+
if (offer) offer.taken = true;
|
|
162
|
+
waiter(item);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
return {
|
|
166
|
+
get ready() {
|
|
167
|
+
return ready;
|
|
168
|
+
},
|
|
169
|
+
/** The extension announced itself (first contact). */
|
|
170
|
+
hello() {
|
|
171
|
+
if (ready) return;
|
|
172
|
+
ready = true;
|
|
173
|
+
for (const listener of readyListeners.splice(0)) listener();
|
|
174
|
+
},
|
|
175
|
+
onReady(listener) {
|
|
176
|
+
if (ready) listener();
|
|
177
|
+
else readyListeners.push(listener);
|
|
178
|
+
},
|
|
179
|
+
/** Wrapper side: hand `text` to the running turn; true = pi took it. */
|
|
180
|
+
offer(text, timeoutMs) {
|
|
181
|
+
const item = { id: ++nextId, text };
|
|
182
|
+
return new Promise((resolve) => {
|
|
183
|
+
const timer = setTimeout(() => {
|
|
184
|
+
const offer = offers.get(item.id);
|
|
185
|
+
offers.delete(item.id);
|
|
186
|
+
const index = pending.findIndex((p) => p.id === item.id);
|
|
187
|
+
if (index >= 0) pending.splice(index, 1);
|
|
188
|
+
resolve(offer?.taken === true);
|
|
189
|
+
}, timeoutMs);
|
|
190
|
+
timer.unref?.();
|
|
191
|
+
offers.set(item.id, {
|
|
192
|
+
taken: false,
|
|
193
|
+
settle: (delivered) => {
|
|
194
|
+
clearTimeout(timer);
|
|
195
|
+
offers.delete(item.id);
|
|
196
|
+
resolve(delivered);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
pending.push(item);
|
|
200
|
+
hand();
|
|
201
|
+
});
|
|
202
|
+
},
|
|
203
|
+
/** Extension side (long poll): the next message, or null after `waitMs`. */
|
|
204
|
+
take(waitMs, signal) {
|
|
205
|
+
return new Promise((resolve) => {
|
|
206
|
+
const done = () => {
|
|
207
|
+
clearTimeout(timer);
|
|
208
|
+
signal?.removeEventListener("abort", onAbort);
|
|
209
|
+
};
|
|
210
|
+
const waiter = (item) => {
|
|
211
|
+
done();
|
|
212
|
+
resolve(item);
|
|
213
|
+
};
|
|
214
|
+
const onAbort = () => {
|
|
215
|
+
waiters.delete(waiter);
|
|
216
|
+
done();
|
|
217
|
+
resolve(null);
|
|
218
|
+
};
|
|
219
|
+
const timer = setTimeout(() => {
|
|
220
|
+
waiters.delete(waiter);
|
|
221
|
+
done();
|
|
222
|
+
resolve(null);
|
|
223
|
+
}, waitMs);
|
|
224
|
+
timer.unref?.();
|
|
225
|
+
if (signal?.aborted) {
|
|
226
|
+
resolve(null);
|
|
227
|
+
clearTimeout(timer);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
231
|
+
waiters.add(waiter);
|
|
232
|
+
hand();
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
/** Extension side: what happened to a taken message (false: pi was no longer running). */
|
|
236
|
+
ack(id, delivered) {
|
|
237
|
+
offers.get(id)?.settle(delivered);
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
130
242
|
const SUPPORTED_CATEGORIES = /* @__PURE__ */ new Set(["mode", "model", "thought_level"]);
|
|
131
243
|
function isRecord$1(value) {
|
|
132
244
|
return !!value && typeof value === "object";
|
|
@@ -636,6 +748,7 @@ class GenericAcpPermissionHandler extends BasePermissionHandler {
|
|
|
636
748
|
});
|
|
637
749
|
}
|
|
638
750
|
}
|
|
751
|
+
const PI_STEER_OFFER_TIMEOUT_MS = 5e3;
|
|
639
752
|
function resolveSessionFlavor(agentName) {
|
|
640
753
|
if (agentName === "gemini") {
|
|
641
754
|
return "gemini";
|
|
@@ -664,12 +777,45 @@ async function runAcp(opts) {
|
|
|
664
777
|
machineId: settings.machineId,
|
|
665
778
|
startedBy: opts.startedBy,
|
|
666
779
|
sandbox: settings.sandboxConfig,
|
|
667
|
-
capabilities: [PROMPT_QUEUE_CAPABILITY]
|
|
780
|
+
capabilities: [PROMPT_QUEUE_CAPABILITY, PROJECT_SESSION_CAPABILITY]
|
|
668
781
|
});
|
|
669
782
|
metadata.attachmentKinds = [];
|
|
670
|
-
const
|
|
783
|
+
const reconnect = readAcpReconnectEnv(process.env);
|
|
784
|
+
let response;
|
|
785
|
+
if (reconnect) {
|
|
786
|
+
logger.debug(`[acp] Reconnecting to existing session ${reconnect.sessionId}`);
|
|
787
|
+
response = {
|
|
788
|
+
id: reconnect.sessionId,
|
|
789
|
+
seq: reconnect.seq,
|
|
790
|
+
encryptionKey: decodeBase64(reconnect.encryptionKey),
|
|
791
|
+
encryptionVariant: reconnect.encryptionVariant,
|
|
792
|
+
metadata,
|
|
793
|
+
metadataVersion: reconnect.metadataVersion,
|
|
794
|
+
agentState: state,
|
|
795
|
+
agentStateVersion: reconnect.agentStateVersion
|
|
796
|
+
};
|
|
797
|
+
} else {
|
|
798
|
+
response = await api.getOrCreateSession({ tag: sessionTag, metadata, state });
|
|
799
|
+
}
|
|
671
800
|
if (response) {
|
|
672
801
|
logAcp("muted", `Happy Session ID: ${response.id}`);
|
|
802
|
+
await claimSessionOrExit(response.id, { takeover: !!reconnect, flavor: resolveSessionFlavor(opts.agentName) });
|
|
803
|
+
}
|
|
804
|
+
if (reconnect && response && !await api.reactivateSession(response.id)) {
|
|
805
|
+
throw new Error(`Failed to reactivate archived session ${response.id}`);
|
|
806
|
+
}
|
|
807
|
+
let reconnectSeeded = false;
|
|
808
|
+
let resumedPermissionMode = null;
|
|
809
|
+
if (reconnect && response) {
|
|
810
|
+
const snapshot = await api.getSession(response.id, response.encryptionKey, response.encryptionVariant);
|
|
811
|
+
if (snapshot.ok) {
|
|
812
|
+
response = applyServerSnapshot(response, snapshot.session);
|
|
813
|
+
reconnectSeeded = true;
|
|
814
|
+
resumedPermissionMode = normalizeAcpPermissionMode(snapshot.session.metadata?.permissionMode) ?? null;
|
|
815
|
+
} else {
|
|
816
|
+
response = withoutServerSnapshot(response);
|
|
817
|
+
logger.debug(`[acp] Reconnect without server snapshot (${snapshot.reason}); skipping existing messages`);
|
|
818
|
+
}
|
|
673
819
|
}
|
|
674
820
|
let session;
|
|
675
821
|
let permissionHandler;
|
|
@@ -679,6 +825,7 @@ async function runAcp(opts) {
|
|
|
679
825
|
metadata,
|
|
680
826
|
state,
|
|
681
827
|
response,
|
|
828
|
+
sessionClientOptions: reconnectSeeded && response ? { initialSeq: response.seq } : void 0,
|
|
682
829
|
onSessionSwap: (newSession) => {
|
|
683
830
|
session = newSession;
|
|
684
831
|
if (permissionHandler) {
|
|
@@ -688,6 +835,12 @@ async function runAcp(opts) {
|
|
|
688
835
|
}
|
|
689
836
|
});
|
|
690
837
|
session = initialSession;
|
|
838
|
+
if (reconnect) {
|
|
839
|
+
session.suppressNextArchiveSignal();
|
|
840
|
+
if (!reconnectSeeded) session.skipExistingMessages();
|
|
841
|
+
void session.cancelUndeliveredQueuedInputs();
|
|
842
|
+
session.updateMetadata((meta) => mergeReconnectMetadata(meta, metadata, Date.now()));
|
|
843
|
+
}
|
|
691
844
|
if (response) {
|
|
692
845
|
try {
|
|
693
846
|
await notifyDaemonSessionStarted(response.id, metadata, {
|
|
@@ -727,7 +880,7 @@ async function runAcp(opts) {
|
|
|
727
880
|
let sawSlashCommands = false;
|
|
728
881
|
let sawModes = false;
|
|
729
882
|
let sawModels = false;
|
|
730
|
-
const initialPermissionMode = opts.permissionMode ?? "default";
|
|
883
|
+
const initialPermissionMode = opts.permissionMode ?? resumedPermissionMode ?? "default";
|
|
731
884
|
let fileBackedModeActive = false;
|
|
732
885
|
const permissionModeIsFileBacked = () => opts.agentName === "pi" || !modeSelector && !legacyModes;
|
|
733
886
|
let fileBackedPermissionMode = null;
|
|
@@ -747,8 +900,15 @@ async function runAcp(opts) {
|
|
|
747
900
|
return true;
|
|
748
901
|
};
|
|
749
902
|
const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
|
|
903
|
+
const piSteer = opts.agentName === "pi" ? createPiSteerChannel() : null;
|
|
904
|
+
piSteer?.onReady(() => {
|
|
905
|
+
logger.debug(`[${opts.agentName}] pi extension connected to the steer channel`);
|
|
906
|
+
session.updateMetadata((current) => ({ ...current, capabilities: [.../* @__PURE__ */ new Set([...current.capabilities ?? [], PI_STEER_CAPABILITY])] }));
|
|
907
|
+
});
|
|
750
908
|
const happyServer = await startHappyServer(session, {
|
|
751
909
|
assistant: isAssistantVariant,
|
|
910
|
+
...piSteer ? { piSteer } : {},
|
|
911
|
+
push: { sendAttention: (input) => api.push().sendAttention(input) },
|
|
752
912
|
...opts.agentName === "pi" ? { onContextUsage: (contextUsage) => {
|
|
753
913
|
session.updateAgentState((state2) => ({ ...state2, contextUsage }));
|
|
754
914
|
} } : {}
|
|
@@ -770,6 +930,7 @@ async function runAcp(opts) {
|
|
|
770
930
|
...teamsPiEnv,
|
|
771
931
|
HAPPY_MCP_URL: happyServer.url,
|
|
772
932
|
...happyServer.contextUsageUrl ? { HAPPY_CONTEXT_USAGE_URL: happyServer.contextUsageUrl } : {},
|
|
933
|
+
...happyServer.steerUrl ? { HAPPY_PI_STEER_URL: happyServer.steerUrl } : {},
|
|
773
934
|
HAPPY_SESSION_ID: session.sessionId,
|
|
774
935
|
// B-497: sender identity for `very-happy sessions message|peers` in this shell.
|
|
775
936
|
VH_PEER_SESSION_ID: session.sessionId,
|
|
@@ -782,6 +943,15 @@ async function runAcp(opts) {
|
|
|
782
943
|
});
|
|
783
944
|
let backend = createBackend();
|
|
784
945
|
let thinking = false;
|
|
946
|
+
let outOfTurnTimer = null;
|
|
947
|
+
const endOutOfTurn = (reason) => {
|
|
948
|
+
if (!outOfTurnTimer) return;
|
|
949
|
+
clearTimeout(outOfTurnTimer);
|
|
950
|
+
outOfTurnTimer = null;
|
|
951
|
+
logger.debug(`[${opts.agentName}] Out-of-turn output ended (${reason})`);
|
|
952
|
+
sendEnvelopes(sessionManager.endTurn("completed"));
|
|
953
|
+
setThinking(false);
|
|
954
|
+
};
|
|
785
955
|
const setThinking = (next) => {
|
|
786
956
|
if (thinking === next) {
|
|
787
957
|
return;
|
|
@@ -796,6 +966,7 @@ async function runAcp(opts) {
|
|
|
796
966
|
let backendStarted = false;
|
|
797
967
|
let backendGone = null;
|
|
798
968
|
let todoDiscoverySent = false;
|
|
969
|
+
const projectInjector = createProjectInjector({ client: sharedProjectsClient(), sessionId: () => session?.sessionId, metadata: () => session?.getMetadata?.() ?? null, agent: opts.agentName });
|
|
799
970
|
const stopRunnerFromBackendStatus = (status, detail) => {
|
|
800
971
|
const reason = detail ? `${opts.agentName} backend ${status}: ${detail}` : `${opts.agentName} backend ${status}`;
|
|
801
972
|
logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
|
|
@@ -1093,7 +1264,18 @@ async function runAcp(opts) {
|
|
|
1093
1264
|
reportSessionEditToDaemon({ sessionId: session.sessionId, path: edit.path, tool: edit.tool, cwd: process.cwd() });
|
|
1094
1265
|
}
|
|
1095
1266
|
}
|
|
1267
|
+
const action = outOfTurnAction(msg, { open: outOfTurnTimer !== null, inPromptTurn: thinking && outOfTurnTimer === null, backendStarted });
|
|
1268
|
+
if (action === "start") {
|
|
1269
|
+
sendEnvelopes(sessionManager.startTurn());
|
|
1270
|
+
setThinking(true);
|
|
1271
|
+
}
|
|
1272
|
+
if (action === "start" || action === "touch") {
|
|
1273
|
+
if (outOfTurnTimer) clearTimeout(outOfTurnTimer);
|
|
1274
|
+
outOfTurnTimer = setTimeout(() => endOutOfTurn("quiet"), OUT_OF_TURN_QUIET_MS);
|
|
1275
|
+
outOfTurnTimer.unref?.();
|
|
1276
|
+
}
|
|
1096
1277
|
sendEnvelopes(sessionManager.mapMessage(msg));
|
|
1278
|
+
if (action === "end") endOutOfTurn("idle");
|
|
1097
1279
|
};
|
|
1098
1280
|
backend.onMessage(onBackendMessage);
|
|
1099
1281
|
const titleGenerator = new TitleGenerator(session);
|
|
@@ -1118,6 +1300,13 @@ async function runAcp(opts) {
|
|
|
1118
1300
|
if (message.meta && Object.prototype.hasOwnProperty.call(message.meta, "effort")) {
|
|
1119
1301
|
currentEffort = message.meta.effort ?? null;
|
|
1120
1302
|
}
|
|
1303
|
+
if (message.meta?.delivery === "steer" && piSteer?.ready && thinking && !attachments?.length) {
|
|
1304
|
+
if (await piSteer.offer(message.content.text, PI_STEER_OFFER_TIMEOUT_MS)) {
|
|
1305
|
+
logger.debug(`[${opts.agentName}] User message steered into the running turn`);
|
|
1306
|
+
return;
|
|
1307
|
+
}
|
|
1308
|
+
logger.debug(`[${opts.agentName}] Steer not taken; queued for the next turn`);
|
|
1309
|
+
}
|
|
1121
1310
|
messageQueue.push(message.content.text, {
|
|
1122
1311
|
permissionMode: currentPermissionMode,
|
|
1123
1312
|
model: currentModel,
|
|
@@ -1184,6 +1373,12 @@ async function runAcp(opts) {
|
|
|
1184
1373
|
publishFileBackedPermissionMode(fileBackedPermissionMode ?? initialPermissionMode);
|
|
1185
1374
|
}
|
|
1186
1375
|
};
|
|
1376
|
+
let agentSessionId = opts.resumeAgentSessionId ?? null;
|
|
1377
|
+
const rememberAgentSession = (id) => {
|
|
1378
|
+
if (!id || opts.agentName !== "pi") return;
|
|
1379
|
+
agentSessionId = id;
|
|
1380
|
+
session.updateMetadata((current) => current.piSessionId === id ? current : { ...current, piSessionId: id });
|
|
1381
|
+
};
|
|
1187
1382
|
const restartBackend = async () => {
|
|
1188
1383
|
const gone = backendGone;
|
|
1189
1384
|
backend.offMessage?.(onBackendMessage);
|
|
@@ -1195,19 +1390,27 @@ async function runAcp(opts) {
|
|
|
1195
1390
|
}
|
|
1196
1391
|
backend = createBackend();
|
|
1197
1392
|
backend.onMessage(onBackendMessage);
|
|
1198
|
-
const started = await backend.startSession();
|
|
1393
|
+
const started = await backend.startSession(void 0, agentSessionId ? { loadSessionId: agentSessionId } : {});
|
|
1199
1394
|
acpSessionId = started.sessionId;
|
|
1395
|
+
rememberAgentSession(started.agentSessionId);
|
|
1200
1396
|
backendGone = null;
|
|
1201
1397
|
todoDiscoverySent = false;
|
|
1398
|
+
projectInjector.reset();
|
|
1202
1399
|
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:
|
|
1400
|
+
logger.debug(`[${opts.agentName}] Restarted the agent after it exited: ${gone?.message ?? "unknown"} (conversation: ${started.resumed ?? "new"}${started.loadFailure ? `, ${started.loadFailure}` : ""})`);
|
|
1401
|
+
session.sendSessionEvent({ type: "message", message: piRestartNotice(opts.agentName, "agent-exit", started) });
|
|
1205
1402
|
};
|
|
1206
1403
|
try {
|
|
1207
|
-
const
|
|
1404
|
+
const resumeId = opts.resumeAgentSessionId;
|
|
1405
|
+
const started = await backend.startSession(void 0, resumeId ? { loadSessionId: resumeId } : {});
|
|
1208
1406
|
acpSessionId = started.sessionId;
|
|
1407
|
+
rememberAgentSession(started.agentSessionId);
|
|
1209
1408
|
backendStarted = true;
|
|
1210
1409
|
await afterSessionStarted(opts.model);
|
|
1410
|
+
if (resumeId) {
|
|
1411
|
+
logger.debug(`[${opts.agentName}] Resume of agent session ${resumeId}: ${started.resumed ?? "new"}${started.loadFailure ? ` (${started.loadFailure})` : ""}`);
|
|
1412
|
+
if (started.resumed !== "loaded") session.sendSessionEvent({ type: "message", message: piRestartNotice(opts.agentName, "resume", started) });
|
|
1413
|
+
}
|
|
1211
1414
|
if (verbose) {
|
|
1212
1415
|
if (!sawSlashCommands) {
|
|
1213
1416
|
logAcp("muted", `Outgoing slash commands from ${opts.agentName}: not reported yet`);
|
|
@@ -1232,6 +1435,7 @@ async function runAcp(opts) {
|
|
|
1232
1435
|
break;
|
|
1233
1436
|
}
|
|
1234
1437
|
logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
|
|
1438
|
+
endOutOfTurn("prompt");
|
|
1235
1439
|
sendEnvelopes(sessionManager.startTurn());
|
|
1236
1440
|
turnCancelled = false;
|
|
1237
1441
|
setThinking(true);
|
|
@@ -1249,7 +1453,8 @@ async function runAcp(opts) {
|
|
|
1249
1453
|
if (typeof batch.mode.effort === "string") {
|
|
1250
1454
|
await switchEffortIfRequested(batch.mode.effort, modelChanged);
|
|
1251
1455
|
}
|
|
1252
|
-
const
|
|
1456
|
+
const projected = await projectInjector.decorate(batch.message);
|
|
1457
|
+
const prompt = todoDiscoverySent ? projected : `${projected}
|
|
1253
1458
|
|
|
1254
1459
|
${BUILTIN_TODO_DISCOVERY}`;
|
|
1255
1460
|
const attachments = batch.attachments ?? [];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { q as query } from './query-DYP_W1wp.mjs';
|
|
2
|
+
export { AbortError } from '@anthropic-ai/claude-agent-sdk';
|
|
3
|
+
import './smallFastModel-BLNgMrwR.mjs';
|
|
4
|
+
import './logger-BtVhHnD8.mjs';
|
|
5
|
+
import 'chalk';
|
|
6
|
+
import 'node:util';
|
|
7
|
+
import './configuration-WMi4idBB.mjs';
|
|
8
|
+
import 'node:fs';
|
|
9
|
+
import 'node:os';
|
|
10
|
+
import 'node:path';
|
|
11
|
+
import './package-BPPebGQF.mjs';
|
|
12
|
+
import 'node:fs/promises';
|
|
13
|
+
import './processTreeSnapshot-CuLJDNC-.mjs';
|
|
14
|
+
import 'node:child_process';
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
export { query };
|