very-happy-cli 0.2.178 → 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.
Files changed (201) hide show
  1. package/dist/{AcpBackend-DCQXHRzT.mjs → AcpBackend-CHp3y7cb.mjs} +135 -16
  2. package/dist/{AcpBackend-CDkAQXYf.cjs → AcpBackend-DFipFF7-.cjs} +135 -16
  3. package/dist/{AcpSessionManager-DckmUZza.cjs → AcpSessionManager-0zpvRJXc.cjs} +38 -4
  4. package/dist/{AcpSessionManager-BXrQcqwC.mjs → AcpSessionManager-d2-rKWWa.mjs} +38 -4
  5. package/dist/{BasePermissionHandler-DyLmKKtO.cjs → BasePermissionHandler-CH3zuEkA.cjs} +5 -2
  6. package/dist/{BasePermissionHandler-BVlrEhIi.mjs → BasePermissionHandler-DdZBYIR4.mjs} +5 -2
  7. package/dist/acpSessionResume-DTGmAPLt.mjs +67 -0
  8. package/dist/acpSessionResume-oiCBnAVA.cjs +74 -0
  9. package/dist/{agentHome-CEp9RMyK.cjs → agentHome-BWcz8mz0.cjs} +4 -4
  10. package/dist/{agentHome-C1xi37as.mjs → agentHome-CghLvL_1.mjs} +4 -4
  11. package/dist/{api-JANhFdZV.cjs → api-Cmjfr8Z7.cjs} +28 -260
  12. package/dist/{api-Dib0dmqC.mjs → api-CzwFpJQc.mjs} +21 -253
  13. package/dist/{apiMachine-DNTJidYH.mjs → apiMachine-DJkTEiqy.mjs} +43 -15
  14. package/dist/{apiMachine-QhK-sKcr.cjs → apiMachine-G6OogT08.cjs} +43 -15
  15. package/dist/{attachmentContent-DkkdpSSJ.mjs → attachmentContent-B2os4HbA.mjs} +2 -2
  16. package/dist/{attachmentContent-bpQTBJ0y.cjs → attachmentContent-Bo0UAsSu.cjs} +4 -4
  17. package/dist/{auth-BRjd2esb.mjs → auth-BS6PaOOG.mjs} +5 -5
  18. package/dist/{auth-DgIV0Cvt.cjs → auth-D6bBUwZa.cjs} +5 -5
  19. package/dist/{auth-DNct7VUi.mjs → auth-DMX0xPNK.mjs} +8 -8
  20. package/dist/{auth-omWDtgR8.cjs → auth-HEhRaNgL.cjs} +8 -8
  21. package/dist/{auto-CI16FZmX.cjs → auto-C6I55iOh.cjs} +18 -17
  22. package/dist/{auto-DKGFOJBo.mjs → auto-Cl1SEDcD.mjs} +18 -17
  23. package/dist/{bootstrap-DCQ87Aan.cjs → bootstrap-exVucYav.cjs} +2 -2
  24. package/dist/{bootstrap-BUagGC_-.mjs → bootstrap-iuyufnp3.mjs} +2 -2
  25. package/dist/{browser-CSKhc0Bl.cjs → browser-BohJK12g.cjs} +1 -1
  26. package/dist/{browser-Dj_DYQEh.mjs → browser-CSYum7xH.mjs} +1 -1
  27. package/dist/{claudeLocal-CCCvAeMd.mjs → claudeLocal-Dq_R3Ax_.mjs} +6 -5
  28. package/dist/{claudeLocal-CdIVnOZp.cjs → claudeLocal-re4yjSTx.cjs} +6 -5
  29. package/dist/{claudeLocalLauncher-21-xh5gc.cjs → claudeLocalLauncher-B4hJHpCA.cjs} +11 -10
  30. package/dist/{claudeLocalLauncher-BmrpaRYJ.mjs → claudeLocalLauncher-CN67lN7-.mjs} +11 -10
  31. package/dist/{claudeSessionFork-DvxMKAmY.mjs → claudeSessionFork-BihfD0Ik.mjs} +1 -1
  32. package/dist/{claudeSessionFork-kYCP1IJB.cjs → claudeSessionFork-DiSMYerV.cjs} +1 -1
  33. package/dist/{client-Dnza1hgN.cjs → client-BKcK1Bi-.cjs} +3 -3
  34. package/dist/client-BhoEBnuN.mjs +71 -0
  35. package/dist/{client-C4zKGjiJ.cjs → client-CuVdN6PP.cjs} +2 -2
  36. package/dist/{client-BTX9hsbr.mjs → client-DuTDwWSQ.mjs} +3 -3
  37. package/dist/client-ZjOsn6nZ.cjs +76 -0
  38. package/dist/{client-CnlkkrZO.mjs → client-wo9nbxuf.mjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +24 -15
  40. package/dist/codex/happyMcpStdioBridge.mjs +24 -15
  41. package/dist/{codexAppServerClient-DvkpQgyv.mjs → codexAppServerClient-BK3zra_1.mjs} +3 -3
  42. package/dist/{codexAppServerClient-CRlBWGn3.cjs → codexAppServerClient-Dt5zxrun.cjs} +3 -3
  43. package/dist/{codexCommand-BxjogBzU.mjs → codexCommand-B6pY7CMh.mjs} +65 -60
  44. package/dist/{codexCommand-DzxIWXIT.cjs → codexCommand-CAZ1SLjg.cjs} +88 -83
  45. package/dist/{codexTermination-ySDNMEhd.mjs → codexTermination-Cd1Eon_4.mjs} +1 -1
  46. package/dist/{codexTermination-C28FzlLb.cjs → codexTermination-DmGbHxcD.cjs} +1 -1
  47. package/dist/{config-DwfEpFr3.mjs → config-2oMG_fEI.mjs} +3 -3
  48. package/dist/{config-BFB5uJ4t.cjs → config-B0uK6K7n.cjs} +3 -3
  49. package/dist/{configuration-4TGMrjul.cjs → configuration-CMHZnp6G.cjs} +1 -1
  50. package/dist/{configuration-DVrb61aY.mjs → configuration-WMi4idBB.mjs} +1 -1
  51. package/dist/{connect-C7FPY0PI.mjs → connect-BLVHhHzA.mjs} +14 -14
  52. package/dist/{connect-QH2VJGBG.cjs → connect-uaglGrde.cjs} +14 -14
  53. package/dist/{context-JoKu0V54.cjs → context-DXzU5bFM.cjs} +1 -1
  54. package/dist/{context-B3XPVJlj.mjs → context-DploEcoN.mjs} +1 -1
  55. package/dist/{controlClient-BYKyGyxj.mjs → controlClient-BWUJrj3t.mjs} +3 -3
  56. package/dist/{controlClient-BTaZlbC6.cjs → controlClient-C-5qCt8W.cjs} +3 -3
  57. package/dist/{createSessionMetadata-8Fuj2-IV.mjs → createSessionMetadata-3uXrJgOW.mjs} +2 -2
  58. package/dist/{createSessionMetadata-B2NynaWZ.cjs → createSessionMetadata-BkIzHALd.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-B8kJG9uI.mjs → defaultPermissionMode-BzxLh20a.mjs} +2 -2
  60. package/dist/{defaultPermissionMode-BEWCqJU-.cjs → defaultPermissionMode-pS3vmiSg.cjs} +2 -2
  61. package/dist/{deterministicJson-BjNQsAjO.cjs → deterministicJson-B8z2GPi9.cjs} +220 -14
  62. package/dist/{deterministicJson-C5ZwZ7hu.mjs → deterministicJson-D_whDMFd.mjs} +217 -12
  63. package/dist/{doctor-BshRnjLi.cjs → doctor-Br1Kcy2J.cjs} +7 -7
  64. package/dist/{doctor-0BiGwJXk.mjs → doctor-CmtSsR2-.mjs} +7 -7
  65. package/dist/{downloadTarget-BN5vZt3K.cjs → downloadTarget-BQJK_6oH.cjs} +6 -6
  66. package/dist/{downloadTarget-DJPwAZlu.mjs → downloadTarget-BoNwTIH_.mjs} +6 -6
  67. package/dist/{ensureDaemonRunning-C5QfToCe.cjs → ensureDaemonRunning-BRUmsq6J.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-CSmb_mqt.mjs → ensureDaemonRunning-Czo9IHJQ.mjs} +5 -5
  69. package/dist/{handleResumeCommand-CgjpsdDe.mjs → handleResumeCommand-C8thKjqf.mjs} +21 -5
  70. package/dist/{handleResumeCommand-BwnUZmbo.cjs → handleResumeCommand-tKD_Hpxc.cjs} +21 -5
  71. package/dist/{index-BYOZ_8WZ.cjs → index-B0UjHlAe.cjs} +4 -4
  72. package/dist/{index-BehVbAsA.mjs → index-BTxHphpV.mjs} +254 -49
  73. package/dist/index-BiyC7cZ3.mjs +18 -0
  74. package/dist/{index-_l1Sdmbi.cjs → index-C6O2vVjm.cjs} +154 -33
  75. package/dist/index-CUuc6iCn.cjs +24 -0
  76. package/dist/{index-Bvldtdny.mjs → index-CdQI0C9p.mjs} +4 -4
  77. package/dist/{index-BRClDe07.cjs → index-D09T1m8Y.cjs} +3 -3
  78. package/dist/{index-BYgfern_.mjs → index-D3bidoG8.mjs} +3 -3
  79. package/dist/{index-piJPsTsm.cjs → index-DMqDMT1Q.cjs} +256 -51
  80. package/dist/{index-Clqlu17M.mjs → index-DPOa4NhL.mjs} +153 -34
  81. package/dist/index.cjs +2 -2
  82. package/dist/index.mjs +2 -2
  83. package/dist/{install-BdvKiOQw.mjs → install-BX3lv3NO.mjs} +1 -1
  84. package/dist/{install-Cf6AFSWC.cjs → install-BXvf2E3o.cjs} +1 -1
  85. package/dist/{install-TO4taKW7.cjs → install-CYRZxS87.cjs} +3 -3
  86. package/dist/{install-fYWHrPcC.mjs → install-hnve_9vq.mjs} +3 -3
  87. package/dist/lib.cjs +13 -13
  88. package/dist/lib.d.cts +62 -1
  89. package/dist/lib.d.mts +62 -1
  90. package/dist/lib.mjs +13 -13
  91. package/dist/{lidState-DNMlIhX0.mjs → lidState-Bb8fgXg3.mjs} +1 -1
  92. package/dist/{lidState-BeOwj6eW.cjs → lidState-Dv2wwFTj.cjs} +1 -1
  93. package/dist/{localHappyAgentAuth-Br-mgogg.cjs → localHappyAgentAuth-DjYvkXvV.cjs} +1 -1
  94. package/dist/{localHappyAgentAuth-BezKSFDi.mjs → localHappyAgentAuth-NEU7fax7.mjs} +1 -1
  95. package/dist/{logger--vAVtXB_.mjs → logger-BtVhHnD8.mjs} +2 -2
  96. package/dist/{logger-DXTWlPzP.cjs → logger-C1GWx3gi.cjs} +2 -2
  97. package/dist/{machineMetadata-DcUupMje.cjs → machineMetadata-CLHS9sv_.cjs} +3 -3
  98. package/dist/{machineMetadata-B1H9gNbN.mjs → machineMetadata-D-g--oU_.mjs} +3 -3
  99. package/dist/{main-CshDb5-1.mjs → main-B2LWV8DI.mjs} +58 -45
  100. package/dist/{main-DoMFJ2Cl.cjs → main-CWhSsbtU.cjs} +58 -45
  101. package/dist/{mcp-pNc1EbQf.cjs → mcp-CARUsXHV.cjs} +14 -14
  102. package/dist/{mcp-DKT_lrvQ.mjs → mcp-ext92q3Y.mjs} +14 -14
  103. package/dist/{mirrorProtocol-6IFGPpjJ.mjs → mirrorProtocol-BwYibqry.mjs} +3 -3
  104. package/dist/{mirrorProtocol-qKflWTX_.cjs → mirrorProtocol-DEy2g1CB.cjs} +3 -3
  105. package/dist/{package-B7B03ejW.mjs → package-BPPebGQF.mjs} +7 -7
  106. package/dist/{package-DY4zTbKS.cjs → package-SgqTYsjn.cjs} +7 -7
  107. package/dist/panels-BZ0_Tt7B.mjs +137 -0
  108. package/dist/panels-D1c7q2dD.cjs +142 -0
  109. package/dist/{peerTools-3R9RUARX.mjs → peerTools-CWKzcQ7u.mjs} +60 -10
  110. package/dist/{peerTools-iy3_6Yc5.cjs → peerTools-DRQETXaz.cjs} +60 -9
  111. package/dist/{persistence-BfX72dne.cjs → persistence-BegE7NPa.cjs} +2 -2
  112. package/dist/{persistence-DTk4sNpd.mjs → persistence-Cr-wutZ4.mjs} +3 -3
  113. package/dist/{piRunnerArgs-CRQVR9o-.cjs → piRunnerArgs-Cs-378Vz.cjs} +8 -2
  114. package/dist/{piRunnerArgs-AT8QJY7x.mjs → piRunnerArgs-DwvM_yWA.mjs} +7 -1
  115. package/dist/{piRuntime-BHRT5MKO.cjs → piRuntime-BG-1td_n.cjs} +2 -2
  116. package/dist/{piRuntime-E44qTVQ4.mjs → piRuntime-Bue5mnlc.mjs} +2 -2
  117. package/dist/{piTerminal-De8nbciM.mjs → piTerminal-B5x9X5yV.mjs} +17 -17
  118. package/dist/{piTerminal-hI4WFdWm.cjs → piTerminal-G4z-xVyy.cjs} +17 -17
  119. package/dist/processTreeSnapshot-CuLJDNC-.mjs +101 -0
  120. package/dist/processTreeSnapshot-mDbnuojn.cjs +105 -0
  121. package/dist/prompt-BOouDaTM.mjs +99 -0
  122. package/dist/prompt-lgF9IE82.cjs +105 -0
  123. package/dist/{attachmentLimits-UyFn8fkQ.mjs → pushNotifications-BdFjDjQe.mjs} +303 -3
  124. package/dist/{attachmentLimits-SqeAHrVC.cjs → pushNotifications-DaLQUyi0.cjs} +304 -2
  125. package/dist/{index-DFPT4HOO.cjs → query-Ctfg-5gy.cjs} +25 -5
  126. package/dist/{index-CEjJnq05.mjs → query-DYP_W1wp.mjs} +26 -3
  127. package/dist/{rateLimitWindows-XrJiiBpU.mjs → rateLimitWindows-CuEqk_0g.mjs} +1 -1
  128. package/dist/{rateLimitWindows-Czb7_7cK.cjs → rateLimitWindows-Dj_8voBK.cjs} +1 -1
  129. package/dist/{registerCommonHandlers-CvIedVRf.mjs → registerCommonHandlers-BAlP7SGc.mjs} +2 -2
  130. package/dist/{registerCommonHandlers-C0_fyBQ0.cjs → registerCommonHandlers-Cj084Sg7.cjs} +2 -2
  131. package/dist/{registerKillSessionHandler-gwJ5lTf0.mjs → registerKillSessionHandler-PD0jWtQo.mjs} +6 -6
  132. package/dist/{registerKillSessionHandler-DYl7l4Ts.cjs → registerKillSessionHandler-qMju0ZfF.cjs} +6 -6
  133. package/dist/{remoteSessionClient-BRTIOX5b.cjs → remoteSessionClient-B7i7MkYV.cjs} +5 -5
  134. package/dist/{remoteSessionClient-DRb2Jr5s.mjs → remoteSessionClient-Bn2qu5C5.mjs} +5 -5
  135. package/dist/{reportProgressTool-B9nCzbkL.cjs → reportProgressTool-CM1JFAHg.cjs} +84 -2
  136. package/dist/{reportProgressTool-D5tEoXMW.mjs → reportProgressTool-gHItlSzz.mjs} +82 -3
  137. package/dist/{resources-JDPugcDq.cjs → resources-CvIlkzpP.cjs} +30 -0
  138. package/dist/{resources-BdFBQi8r.mjs → resources-y9jfyO-_.mjs} +30 -0
  139. package/dist/{run-BQ_FGaOL.mjs → run-BM4TxiyN.mjs} +177 -41
  140. package/dist/{run-CKe_WeLW.cjs → run-CNXwIe0A.cjs} +191 -55
  141. package/dist/{runClaude-MHI5IKM-.cjs → runClaude-CWhj2V4Q.cjs} +36 -40
  142. package/dist/{runClaude-zrrNcQC_.mjs → runClaude-C_3I8hvR.mjs} +36 -40
  143. package/dist/{runClaudeDeps-RRw-Nusc.cjs → runClaudeDeps-B81cOKnH.cjs} +294 -156
  144. package/dist/{runClaudeDeps-CVBCokOS.mjs → runClaudeDeps-QGrOeDe2.mjs} +294 -159
  145. package/dist/{runGemini-kipag2ag.mjs → runGemini-BEdWEZLR.mjs} +60 -54
  146. package/dist/{runGemini-D7Lg9yCr.cjs → runGemini-CgRLYbt5.cjs} +60 -54
  147. package/dist/{runOpenClaw-DCcQ0L2N.cjs → runOpenClaw-C1NVmzOL.cjs} +18 -18
  148. package/dist/{runOpenClaw-C_lRY3Do.mjs → runOpenClaw-DdQZAYj1.mjs} +18 -18
  149. package/dist/{sandbox-BSyXFVFp.mjs → sandbox-DjQUdCMG.mjs} +4 -4
  150. package/dist/{sandbox-dMwPTmjm.cjs → sandbox-nocIjliq.cjs} +4 -4
  151. package/dist/selfCheck-CjCF4C3v.mjs +85 -0
  152. package/dist/{selfCheck-DkzDDUsE.cjs → selfCheck-DCt4Uzbq.cjs} +36 -35
  153. package/dist/{send-C-k9nsd3.mjs → send-Ct7X4pPU.mjs} +8 -8
  154. package/dist/{send-dxC0miIA.cjs → send-Dydf_hwZ.cjs} +8 -8
  155. package/dist/{server-B-W6P7Qr.cjs → server-CosABFbd.cjs} +6 -6
  156. package/dist/{server-DxoTYNlw.mjs → server-DTQGZMxh.mjs} +4 -4
  157. package/dist/{sessionLock-DWX6BbiU.cjs → sessionLock-DokGab2R.cjs} +16 -3
  158. package/dist/{sessionLock-DBdtZGOL.mjs → sessionLock-WYIyaVO4.mjs} +16 -4
  159. package/dist/{sessionOps-BVoXe12O.mjs → sessionOps-BIGgRube.mjs} +10 -5
  160. package/dist/{sessionOps-BAnr7n8t.cjs → sessionOps-S-qPBLFf.cjs} +10 -5
  161. package/dist/{sessionScanner-CDOYsEUD.cjs → sessionScanner-CIMM2hvZ.cjs} +3 -3
  162. package/dist/{sessionScanner-BtxoeluY.mjs → sessionScanner-o5hnMi5e.mjs} +3 -3
  163. package/dist/{sessions-C3sZJkzI.mjs → sessions-BJHEZpi2.mjs} +39 -17
  164. package/dist/{sessions-hAitoN-m.cjs → sessions-JchI1w3z.cjs} +39 -16
  165. package/dist/{setupOfflineReconnection-C2EeYTFH.cjs → setupOfflineReconnection-CNiAt5ZP.cjs} +2 -2
  166. package/dist/{setupOfflineReconnection-_eD4cuUT.mjs → setupOfflineReconnection-DMiBO2y9.mjs} +2 -2
  167. package/dist/{spawn-Bc9v7pIf.cjs → spawn-6PD7nnoC.cjs} +48 -17
  168. package/dist/{spawn-qNrB2CD_.mjs → spawn-DgvUNYEo.mjs} +48 -17
  169. package/dist/{spawnAgents-BVEaz35W.cjs → spawnAgents-DsXgegHM.cjs} +37 -1
  170. package/dist/spawnAgents-P006Hqio.mjs +79 -0
  171. package/dist/{spawnHappyCLI-C2stUioM.mjs → spawnHappyCLI-CCOrEtf9.mjs} +1 -1
  172. package/dist/{spawnHappyCLI-fzUagkKV.cjs → spawnHappyCLI-Dywezwk6.cjs} +1 -1
  173. package/dist/{specialCommands-C6W-rVyh.mjs → specialCommands-DPcd9edP.mjs} +3 -3
  174. package/dist/{specialCommands-BJ-nqY4s.cjs → specialCommands-QxPpkGKf.cjs} +3 -3
  175. package/dist/{startFileWatcher-CR09Snmz.mjs → startFileWatcher-DghDOCO4.mjs} +1 -1
  176. package/dist/{startFileWatcher-Bqlqjt93.cjs → startFileWatcher-RECH5qY8.cjs} +1 -1
  177. package/dist/{streamRelay-CJoMk_d2.mjs → streamRelay-DMV_TXfS.mjs} +1 -1
  178. package/dist/{streamRelay-9kBPpbvU.cjs → streamRelay-DlUWKUpo.cjs} +1 -1
  179. package/dist/{sync-DbW07iQS.mjs → sync-CSe0Rf45.mjs} +1 -1
  180. package/dist/{sync-Dhmtk66S.cjs → sync-D23jbqVa.cjs} +1 -1
  181. package/dist/{systemPrompt-3PYi3EUY.cjs → systemPrompt-BOy4kU4P.cjs} +4 -3
  182. package/dist/{systemPrompt-CQcuUmVp.mjs → systemPrompt-CFNKnh65.mjs} +4 -3
  183. package/dist/{teams-CwF4Z2fA.mjs → teams-DyY669f0.mjs} +8 -8
  184. package/dist/{teams-DpxLcUU_.cjs → teams-Ov2BDT-A.cjs} +8 -8
  185. package/dist/{time-BuGWTVP6.mjs → time-65DcU6Jx.mjs} +1 -1
  186. package/dist/{time-A6zR3Iy6.cjs → time-CrwIMHta.cjs} +1 -1
  187. package/dist/{titleGenerator-D26gvNaS.cjs → titleGenerator-CS_rh2_J.cjs} +9 -8
  188. package/dist/{titleGenerator-BGEzNWC9.mjs → titleGenerator-CiAMxf7s.mjs} +9 -8
  189. package/dist/{todo-DrZc76H5.mjs → todo-BDONw0sK.mjs} +6 -6
  190. package/dist/{todo-73g3NCIO.cjs → todo-KY-okGii.cjs} +6 -6
  191. package/dist/{tools-BtsrQnNS.mjs → tools-D8-PnZEG.mjs} +1 -1
  192. package/dist/{tools-CxJp4T1T.cjs → tools-_w52DZG6.cjs} +1 -1
  193. package/dist/{uninstall-DWNYvewQ.cjs → uninstall-8vnLN-IE.cjs} +3 -3
  194. package/dist/{uninstall-DOb2mTwV.mjs → uninstall-_fjGRP9b.mjs} +3 -3
  195. package/dist/webPanels-B2_C2-3g.mjs +49 -0
  196. package/dist/webPanels-FCgFKvVe.cjs +53 -0
  197. package/package.json +7 -7
  198. package/dist/selfCheck-CF7XGJPb.mjs +0 -84
  199. package/dist/sessionModeFile-ByLbXTbg.mjs +0 -32
  200. package/dist/sessionModeFile-CLLdidiJ.cjs +0 -36
  201. package/dist/spawnAgents-Bw6j4tqz.mjs +0 -45
@@ -1,35 +1,37 @@
1
- import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-DCQXHRzT.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-DCQXHRzT.mjs';
3
- import { l as logger } from './logger--vAVtXB_.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-BXrQcqwC.mjs';
5
- import { o as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY } from './index-Clqlu17M.mjs';
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-DVrb61aY.mjs';
8
- import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-DkkdpSSJ.mjs';
9
- import { p as preparePiTeamsRuntime } from './piRuntime-E44qTVQ4.mjs';
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-Dib0dmqC.mjs';
13
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-gwJ5lTf0.mjs';
14
- import { h as hashObject, s as startHappyServer } from './deterministicJson-C5ZwZ7hu.mjs';
15
- import { r as readSettings } from './persistence-DTk4sNpd.mjs';
16
- import { g as getInitialMachineMetadata } from './machineMetadata-B1H9gNbN.mjs';
17
- import { c as createSessionMetadata } from './createSessionMetadata-8Fuj2-IV.mjs';
18
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-_eD4cuUT.mjs';
19
- import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon } from './controlClient-BYKyGyxj.mjs';
20
- import { e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
21
- import { S as StreamRelay } from './streamRelay-CJoMk_d2.mjs';
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-BVlrEhIi.mjs';
24
- import { T as TitleGenerator } from './titleGenerator-BGEzNWC9.mjs';
25
- import { w as writeSessionModeFile, n as normalizeAcpPermissionMode, r as removeSessionModeFile } from './sessionModeFile-ByLbXTbg.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-BuGWTVP6.mjs';
31
+ import './time-65DcU6Jx.mjs';
30
32
  import './contentLogMetadata-BlWI0egu.mjs';
31
33
  import './processTree-CP5IvQ2Z.mjs';
32
- import './package-B7B03ejW.mjs';
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 './attachmentLimits-UyFn8fkQ.mjs';
41
- import './resources-BdFBQi8r.mjs';
42
+ import './pushNotifications-BdFjDjQe.mjs';
42
43
  import 'axios';
43
- import './lidState-DNMlIhX0.mjs';
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-CvIedVRf.mjs';
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-DbW07iQS.mjs';
57
+ import './sync-CSe0Rf45.mjs';
56
58
  import './backgroundTaskActivity-BVwJBl02.mjs';
57
- import 'tweetnacl';
58
- import './types-CkqAACXx.mjs';
59
- import './client-BTX9hsbr.mjs';
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';
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 './peerTools-3R9RUARX.mjs';
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-DRb2Jr5s.mjs';
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-DJPwAZlu.mjs';
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-BUagGC_-.mjs';
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-BezKSFDi.mjs';
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 response = await api.getOrCreateSession({ tag: sessionTag, metadata, state });
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: `${opts.agentName} was restarted after its process exited; it does not remember the earlier conversation (the transcript here is kept).` });
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 started = await backend.startSession();
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 prompt = todoDiscoverySent ? batch.message : `${batch.message}
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 };