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.
Files changed (203) hide show
  1. package/dist/{AcpBackend-B0K0WrtW.mjs → AcpBackend-CHp3y7cb.mjs} +135 -16
  2. package/dist/{AcpBackend-B-ny68XM.cjs → AcpBackend-DFipFF7-.cjs} +135 -16
  3. package/dist/{AcpSessionManager-CjdJLofq.cjs → AcpSessionManager-0zpvRJXc.cjs} +38 -4
  4. package/dist/{AcpSessionManager-DykjzBM4.mjs → AcpSessionManager-d2-rKWWa.mjs} +38 -4
  5. package/dist/{BasePermissionHandler-DR6nxuEn.cjs → BasePermissionHandler-CH3zuEkA.cjs} +5 -2
  6. package/dist/{BasePermissionHandler-hdY7kTqX.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-BdTXEUPe.cjs → agentHome-BWcz8mz0.cjs} +5 -5
  10. package/dist/{agentHome-GRN2VfHv.mjs → agentHome-CghLvL_1.mjs} +5 -5
  11. package/dist/{api-BWX10o97.cjs → api-Cmjfr8Z7.cjs} +29 -261
  12. package/dist/{api-CKBViqI3.mjs → api-CzwFpJQc.mjs} +22 -254
  13. package/dist/{apiMachine-DttO4UFj.mjs → apiMachine-DJkTEiqy.mjs} +53 -16
  14. package/dist/{apiMachine-BYYFGgFs.cjs → apiMachine-G6OogT08.cjs} +53 -16
  15. package/dist/{attachmentContent-cPVF463_.mjs → attachmentContent-B2os4HbA.mjs} +2 -2
  16. package/dist/{attachmentContent-kJKXpkMX.cjs → attachmentContent-Bo0UAsSu.cjs} +4 -4
  17. package/dist/{auth-BmESeKuM.mjs → auth-BS6PaOOG.mjs} +6 -6
  18. package/dist/{auth-CTECt2Oz.cjs → auth-D6bBUwZa.cjs} +6 -6
  19. package/dist/{auth-CKdXb9zp.mjs → auth-DMX0xPNK.mjs} +9 -9
  20. package/dist/{auth-DNxVmVbn.cjs → auth-HEhRaNgL.cjs} +9 -9
  21. package/dist/{authRelay-DSAvg1uv.mjs → authRelay-DhQhkBvX.mjs} +1 -1
  22. package/dist/{authRelay-BdYkC1Po.cjs → authRelay-Dy1qU9td.cjs} +1 -0
  23. package/dist/{auto-D1ypjjfx.cjs → auto-C6I55iOh.cjs} +19 -18
  24. package/dist/{auto-Ch3203qd.mjs → auto-Cl1SEDcD.mjs} +19 -18
  25. package/dist/{bootstrap-6OI698q9.cjs → bootstrap-exVucYav.cjs} +2 -2
  26. package/dist/{bootstrap-C0s2bPFQ.mjs → bootstrap-iuyufnp3.mjs} +2 -2
  27. package/dist/{browser-DG6Uof5O.cjs → browser-BohJK12g.cjs} +1 -1
  28. package/dist/{browser-BlLWZUMx.mjs → browser-CSYum7xH.mjs} +1 -1
  29. package/dist/{claudeLocal-CcWcKnoo.mjs → claudeLocal-Dq_R3Ax_.mjs} +6 -5
  30. package/dist/{claudeLocal-CemsIArT.cjs → claudeLocal-re4yjSTx.cjs} +6 -5
  31. package/dist/{claudeLocalLauncher-A4VuevIi.cjs → claudeLocalLauncher-B4hJHpCA.cjs} +11 -10
  32. package/dist/{claudeLocalLauncher-7p6y88nj.mjs → claudeLocalLauncher-CN67lN7-.mjs} +11 -10
  33. package/dist/{claudeSessionFork-BtROOjqf.mjs → claudeSessionFork-BihfD0Ik.mjs} +1 -1
  34. package/dist/{claudeSessionFork-CbDfm8Fz.cjs → claudeSessionFork-DiSMYerV.cjs} +1 -1
  35. package/dist/{client-DyvBTYee.cjs → client-BKcK1Bi-.cjs} +3 -3
  36. package/dist/client-BhoEBnuN.mjs +71 -0
  37. package/dist/{client-COmgDDy0.cjs → client-CuVdN6PP.cjs} +2 -2
  38. package/dist/{client-BPMWutfs.mjs → client-DuTDwWSQ.mjs} +3 -3
  39. package/dist/client-ZjOsn6nZ.cjs +76 -0
  40. package/dist/{client-DG5ndWLw.mjs → client-wo9nbxuf.mjs} +2 -2
  41. package/dist/codex/happyMcpStdioBridge.cjs +25 -16
  42. package/dist/codex/happyMcpStdioBridge.mjs +25 -16
  43. package/dist/{codexAppServerClient-D-Z8qSfI.mjs → codexAppServerClient-BK3zra_1.mjs} +3 -3
  44. package/dist/{codexAppServerClient-R24WZZfg.cjs → codexAppServerClient-Dt5zxrun.cjs} +3 -3
  45. package/dist/{codexCommand-CVTkZJ1o.mjs → codexCommand-B6pY7CMh.mjs} +66 -61
  46. package/dist/{codexCommand-6hW19gsq.cjs → codexCommand-CAZ1SLjg.cjs} +89 -84
  47. package/dist/{codexTermination-CCIfwzcx.mjs → codexTermination-Cd1Eon_4.mjs} +1 -1
  48. package/dist/{codexTermination-BBU7e92y.cjs → codexTermination-DmGbHxcD.cjs} +1 -1
  49. package/dist/{config-CvsNChKX.mjs → config-2oMG_fEI.mjs} +3 -3
  50. package/dist/{config-DhdrvOLV.cjs → config-B0uK6K7n.cjs} +3 -3
  51. package/dist/{configuration-DZPy0T9Z.cjs → configuration-CMHZnp6G.cjs} +1 -1
  52. package/dist/{configuration-D55F0t16.mjs → configuration-WMi4idBB.mjs} +1 -1
  53. package/dist/{connect-CwCXMRmD.mjs → connect-BLVHhHzA.mjs} +15 -15
  54. package/dist/{connect-Wz-XZYXW.cjs → connect-uaglGrde.cjs} +15 -15
  55. package/dist/{context-BKbrZ55r.cjs → context-DXzU5bFM.cjs} +1 -1
  56. package/dist/{context-CCRpVXFo.mjs → context-DploEcoN.mjs} +1 -1
  57. package/dist/{controlClient-C4xB5J6O.mjs → controlClient-BWUJrj3t.mjs} +3 -3
  58. package/dist/{controlClient-SX8gSza2.cjs → controlClient-C-5qCt8W.cjs} +3 -3
  59. package/dist/{createSessionMetadata-Bi-m0Y_O.mjs → createSessionMetadata-3uXrJgOW.mjs} +2 -2
  60. package/dist/{createSessionMetadata-BCFmYlBo.cjs → createSessionMetadata-BkIzHALd.cjs} +2 -2
  61. package/dist/{defaultPermissionMode-wBcbBezm.mjs → defaultPermissionMode-BzxLh20a.mjs} +2 -2
  62. package/dist/{defaultPermissionMode-DMBEnXll.cjs → defaultPermissionMode-pS3vmiSg.cjs} +2 -2
  63. package/dist/{deterministicJson-ChGfQEF6.cjs → deterministicJson-B8z2GPi9.cjs} +220 -14
  64. package/dist/{deterministicJson-BkQETt8_.mjs → deterministicJson-D_whDMFd.mjs} +217 -12
  65. package/dist/{doctor-BsN3JZJn.cjs → doctor-Br1Kcy2J.cjs} +8 -8
  66. package/dist/{doctor-B9c2C9dF.mjs → doctor-CmtSsR2-.mjs} +8 -8
  67. package/dist/{downloadTarget-Dj3WoVJa.cjs → downloadTarget-BQJK_6oH.cjs} +6 -6
  68. package/dist/{downloadTarget-ByXzbDK4.mjs → downloadTarget-BoNwTIH_.mjs} +6 -6
  69. package/dist/{ensureDaemonRunning-7Wb8M7Lv.cjs → ensureDaemonRunning-BRUmsq6J.cjs} +5 -5
  70. package/dist/{ensureDaemonRunning--HYzs5Ce.mjs → ensureDaemonRunning-Czo9IHJQ.mjs} +5 -5
  71. package/dist/{handleResumeCommand-DHddBkNJ.mjs → handleResumeCommand-C8thKjqf.mjs} +22 -6
  72. package/dist/{handleResumeCommand-OmuUGYjQ.cjs → handleResumeCommand-tKD_Hpxc.cjs} +22 -6
  73. package/dist/{index-CrR4JISa.cjs → index-B0UjHlAe.cjs} +5 -5
  74. package/dist/{index-BzJNDsJq.mjs → index-BTxHphpV.mjs} +254 -49
  75. package/dist/index-BiyC7cZ3.mjs +18 -0
  76. package/dist/{index-De8L5lFK.cjs → index-C6O2vVjm.cjs} +156 -34
  77. package/dist/index-CUuc6iCn.cjs +24 -0
  78. package/dist/{index-Dhl6_bw7.mjs → index-CdQI0C9p.mjs} +5 -5
  79. package/dist/{index-D9NoYc5I.cjs → index-D09T1m8Y.cjs} +3 -3
  80. package/dist/{index-CEm0MYiS.mjs → index-D3bidoG8.mjs} +3 -3
  81. package/dist/{index-BRJzH4sc.cjs → index-DMqDMT1Q.cjs} +257 -52
  82. package/dist/{index-DMy3OCBe.mjs → index-DPOa4NhL.mjs} +154 -35
  83. package/dist/index.cjs +2 -2
  84. package/dist/index.mjs +2 -2
  85. package/dist/{install-BdvKiOQw.mjs → install-BX3lv3NO.mjs} +1 -1
  86. package/dist/{install-Cf6AFSWC.cjs → install-BXvf2E3o.cjs} +1 -1
  87. package/dist/{install-1qn-D9FS.cjs → install-CYRZxS87.cjs} +3 -3
  88. package/dist/{install-BDIUtPXi.mjs → install-hnve_9vq.mjs} +3 -3
  89. package/dist/lib.cjs +14 -14
  90. package/dist/lib.d.cts +65 -1
  91. package/dist/lib.d.mts +65 -1
  92. package/dist/lib.mjs +14 -14
  93. package/dist/{lidState-BqVsw7H1.mjs → lidState-Bb8fgXg3.mjs} +2 -2
  94. package/dist/{lidState-DxbK0qfu.cjs → lidState-Dv2wwFTj.cjs} +2 -2
  95. package/dist/{localHappyAgentAuth-D5tANdRD.cjs → localHappyAgentAuth-DjYvkXvV.cjs} +2 -2
  96. package/dist/{localHappyAgentAuth-Ce8kO2yc.mjs → localHappyAgentAuth-NEU7fax7.mjs} +2 -2
  97. package/dist/{logger-13cBr_ew.mjs → logger-BtVhHnD8.mjs} +2 -2
  98. package/dist/{logger-LvwVeATU.cjs → logger-C1GWx3gi.cjs} +2 -2
  99. package/dist/{machineMetadata-29h7vgf4.cjs → machineMetadata-CLHS9sv_.cjs} +3 -3
  100. package/dist/{machineMetadata-dMida2qq.mjs → machineMetadata-D-g--oU_.mjs} +3 -3
  101. package/dist/{main-x4nAhdH5.mjs → main-B2LWV8DI.mjs} +59 -46
  102. package/dist/{main-DpM5jaFH.cjs → main-CWhSsbtU.cjs} +59 -46
  103. package/dist/{mcp-DQv3caXs.cjs → mcp-CARUsXHV.cjs} +15 -15
  104. package/dist/{mcp-DMiFGYMT.mjs → mcp-ext92q3Y.mjs} +15 -15
  105. package/dist/{mirrorProtocol-Bz8tEabR.mjs → mirrorProtocol-BwYibqry.mjs} +3 -3
  106. package/dist/{mirrorProtocol-BfrERW7Z.cjs → mirrorProtocol-DEy2g1CB.cjs} +3 -3
  107. package/dist/{package-CjlsAaRe.mjs → package-BPPebGQF.mjs} +7 -7
  108. package/dist/{package-Ch9WGDV_.cjs → package-SgqTYsjn.cjs} +7 -7
  109. package/dist/panels-BZ0_Tt7B.mjs +137 -0
  110. package/dist/panels-D1c7q2dD.cjs +142 -0
  111. package/dist/{peerTools-CxmrKnfV.mjs → peerTools-CWKzcQ7u.mjs} +60 -10
  112. package/dist/{peerTools-DtGKWli5.cjs → peerTools-DRQETXaz.cjs} +60 -9
  113. package/dist/{persistence-DXbKOHxl.cjs → persistence-BegE7NPa.cjs} +14 -3
  114. package/dist/{persistence-C_tYtOqK.mjs → persistence-Cr-wutZ4.mjs} +14 -4
  115. package/dist/{piRunnerArgs-BVRZe2AR.cjs → piRunnerArgs-Cs-378Vz.cjs} +8 -2
  116. package/dist/{piRunnerArgs-BpHc-JZl.mjs → piRunnerArgs-DwvM_yWA.mjs} +7 -1
  117. package/dist/{piRuntime-D7eio8Ix.cjs → piRuntime-BG-1td_n.cjs} +2 -2
  118. package/dist/{piRuntime-DOdGF395.mjs → piRuntime-Bue5mnlc.mjs} +2 -2
  119. package/dist/{piTerminal-dpxz4Q8D.mjs → piTerminal-B5x9X5yV.mjs} +18 -18
  120. package/dist/{piTerminal-y_PRo2NY.cjs → piTerminal-G4z-xVyy.cjs} +18 -18
  121. package/dist/processTreeSnapshot-CuLJDNC-.mjs +101 -0
  122. package/dist/processTreeSnapshot-mDbnuojn.cjs +105 -0
  123. package/dist/prompt-BOouDaTM.mjs +99 -0
  124. package/dist/prompt-lgF9IE82.cjs +105 -0
  125. package/dist/{attachmentLimits-Di1Z93lN.mjs → pushNotifications-BdFjDjQe.mjs} +303 -3
  126. package/dist/{attachmentLimits-DtFqqiwR.cjs → pushNotifications-DaLQUyi0.cjs} +304 -2
  127. package/dist/{index-DFPT4HOO.cjs → query-Ctfg-5gy.cjs} +25 -5
  128. package/dist/{index-CEjJnq05.mjs → query-DYP_W1wp.mjs} +26 -3
  129. package/dist/{rateLimitWindows-DYHDGuzQ.mjs → rateLimitWindows-CuEqk_0g.mjs} +1 -1
  130. package/dist/{rateLimitWindows-DFnMU2Vt.cjs → rateLimitWindows-Dj_8voBK.cjs} +1 -1
  131. package/dist/{registerCommonHandlers-D8OMpBbQ.mjs → registerCommonHandlers-BAlP7SGc.mjs} +2 -2
  132. package/dist/{registerCommonHandlers-60VuTkdg.cjs → registerCommonHandlers-Cj084Sg7.cjs} +2 -2
  133. package/dist/{registerKillSessionHandler-Drhf7-Vz.mjs → registerKillSessionHandler-PD0jWtQo.mjs} +6 -6
  134. package/dist/{registerKillSessionHandler-pqChBKwO.cjs → registerKillSessionHandler-qMju0ZfF.cjs} +6 -6
  135. package/dist/{remoteSessionClient-B7NvjHD3.cjs → remoteSessionClient-B7i7MkYV.cjs} +5 -5
  136. package/dist/{remoteSessionClient-D01Hso2-.mjs → remoteSessionClient-Bn2qu5C5.mjs} +5 -5
  137. package/dist/{reportProgressTool-Du_zAK4h.cjs → reportProgressTool-CM1JFAHg.cjs} +84 -2
  138. package/dist/{reportProgressTool-B203EZCR.mjs → reportProgressTool-gHItlSzz.mjs} +82 -3
  139. package/dist/{resources-JDPugcDq.cjs → resources-CvIlkzpP.cjs} +30 -0
  140. package/dist/{resources-BdFBQi8r.mjs → resources-y9jfyO-_.mjs} +30 -0
  141. package/dist/{run-DX4Zs3Ug.mjs → run-BM4TxiyN.mjs} +249 -45
  142. package/dist/{run-DZ5jU53c.cjs → run-CNXwIe0A.cjs} +263 -59
  143. package/dist/{runClaude-ClRhHpwR.cjs → runClaude-CWhj2V4Q.cjs} +37 -41
  144. package/dist/{runClaude-CgPHXP0L.mjs → runClaude-C_3I8hvR.mjs} +37 -41
  145. package/dist/{runClaudeDeps-D2v_WDSL.cjs → runClaudeDeps-B81cOKnH.cjs} +295 -157
  146. package/dist/{runClaudeDeps-Dz2iydq4.mjs → runClaudeDeps-QGrOeDe2.mjs} +295 -160
  147. package/dist/{runGemini-DBXxpoY8.mjs → runGemini-BEdWEZLR.mjs} +61 -55
  148. package/dist/{runGemini-BtZqGFkp.cjs → runGemini-CgRLYbt5.cjs} +61 -55
  149. package/dist/{runOpenClaw-D8q8G57u.cjs → runOpenClaw-C1NVmzOL.cjs} +19 -19
  150. package/dist/{runOpenClaw-BOHpzCEU.mjs → runOpenClaw-DdQZAYj1.mjs} +19 -19
  151. package/dist/{sandbox-C452Vrsc.mjs → sandbox-DjQUdCMG.mjs} +5 -5
  152. package/dist/{sandbox-Cu9mMzjx.cjs → sandbox-nocIjliq.cjs} +5 -5
  153. package/dist/selfCheck-CjCF4C3v.mjs +85 -0
  154. package/dist/{selfCheck-gKa3uVr1.cjs → selfCheck-DCt4Uzbq.cjs} +36 -35
  155. package/dist/{send-B8HARi7x.mjs → send-Ct7X4pPU.mjs} +9 -9
  156. package/dist/{send-2Vb5eppI.cjs → send-Dydf_hwZ.cjs} +9 -9
  157. package/dist/{server-Db9Wuam3.cjs → server-CosABFbd.cjs} +7 -7
  158. package/dist/{server-BBWCIZyS.mjs → server-DTQGZMxh.mjs} +5 -5
  159. package/dist/{sessionLock-6qL_N6Rn.cjs → sessionLock-DokGab2R.cjs} +16 -3
  160. package/dist/{sessionLock-ZfvFVdUi.mjs → sessionLock-WYIyaVO4.mjs} +16 -4
  161. package/dist/{sessionOps-CdgbEJgf.mjs → sessionOps-BIGgRube.mjs} +11 -6
  162. package/dist/{sessionOps-Dmt7WUUs.cjs → sessionOps-S-qPBLFf.cjs} +11 -6
  163. package/dist/{sessionScanner-CQL_WSaC.cjs → sessionScanner-CIMM2hvZ.cjs} +3 -3
  164. package/dist/{sessionScanner-CNVaSNOn.mjs → sessionScanner-o5hnMi5e.mjs} +3 -3
  165. package/dist/{sessions-DTomHfFg.mjs → sessions-BJHEZpi2.mjs} +40 -18
  166. package/dist/{sessions-BJblG_Hx.cjs → sessions-JchI1w3z.cjs} +40 -17
  167. package/dist/{setupOfflineReconnection-DVA0VpQL.cjs → setupOfflineReconnection-CNiAt5ZP.cjs} +2 -2
  168. package/dist/{setupOfflineReconnection-C5trsV-j.mjs → setupOfflineReconnection-DMiBO2y9.mjs} +2 -2
  169. package/dist/{spawn-DRyNAqD8.cjs → spawn-6PD7nnoC.cjs} +49 -18
  170. package/dist/{spawn-CQJFgoOq.mjs → spawn-DgvUNYEo.mjs} +49 -18
  171. package/dist/{spawnAgents-CCjJifAW.cjs → spawnAgents-DsXgegHM.cjs} +37 -1
  172. package/dist/spawnAgents-P006Hqio.mjs +79 -0
  173. package/dist/{spawnHappyCLI-B_0RWxD4.mjs → spawnHappyCLI-CCOrEtf9.mjs} +1 -1
  174. package/dist/{spawnHappyCLI-ChniczJ5.cjs → spawnHappyCLI-Dywezwk6.cjs} +1 -1
  175. package/dist/{specialCommands-DkdFJi4N.mjs → specialCommands-DPcd9edP.mjs} +3 -3
  176. package/dist/{specialCommands-DbntVs0d.cjs → specialCommands-QxPpkGKf.cjs} +3 -3
  177. package/dist/{startFileWatcher-UQyTSRAP.mjs → startFileWatcher-DghDOCO4.mjs} +1 -1
  178. package/dist/{startFileWatcher-C292fhra.cjs → startFileWatcher-RECH5qY8.cjs} +1 -1
  179. package/dist/{streamRelay-_qCd873P.mjs → streamRelay-DMV_TXfS.mjs} +1 -1
  180. package/dist/{streamRelay-Cx01enfe.cjs → streamRelay-DlUWKUpo.cjs} +1 -1
  181. package/dist/{sync-C3p7-KLn.mjs → sync-CSe0Rf45.mjs} +1 -1
  182. package/dist/{sync-C7sxoUYG.cjs → sync-D23jbqVa.cjs} +1 -1
  183. package/dist/{systemPrompt-DtibzbRU.cjs → systemPrompt-BOy4kU4P.cjs} +4 -3
  184. package/dist/{systemPrompt-CdHOlyVW.mjs → systemPrompt-CFNKnh65.mjs} +4 -3
  185. package/dist/{teams-ujXr3AFn.mjs → teams-DyY669f0.mjs} +9 -9
  186. package/dist/{teams-D7O7TpVU.cjs → teams-Ov2BDT-A.cjs} +9 -9
  187. package/dist/{time-yEL6wHUF.mjs → time-65DcU6Jx.mjs} +1 -1
  188. package/dist/{time-Dg5tVB8S.cjs → time-CrwIMHta.cjs} +1 -1
  189. package/dist/{titleGenerator-BMEaDTwU.cjs → titleGenerator-CS_rh2_J.cjs} +9 -8
  190. package/dist/{titleGenerator-Dr-BtjzO.mjs → titleGenerator-CiAMxf7s.mjs} +9 -8
  191. package/dist/{todo-CvJe4M2C.mjs → todo-BDONw0sK.mjs} +7 -7
  192. package/dist/{todo-CUcFamGs.cjs → todo-KY-okGii.cjs} +7 -7
  193. package/dist/{tools-BrM3bZW5.mjs → tools-D8-PnZEG.mjs} +1 -1
  194. package/dist/{tools-DDKTB5aQ.cjs → tools-_w52DZG6.cjs} +1 -1
  195. package/dist/{uninstall-7oLuhYIu.cjs → uninstall-8vnLN-IE.cjs} +3 -3
  196. package/dist/{uninstall-CEcMMQGz.mjs → uninstall-_fjGRP9b.mjs} +3 -3
  197. package/dist/webPanels-B2_C2-3g.mjs +49 -0
  198. package/dist/webPanels-FCgFKvVe.cjs +53 -0
  199. package/package.json +7 -7
  200. package/dist/selfCheck-BAvqBwBR.mjs +0 -84
  201. package/dist/sessionModeFile-CWVq8AT9.mjs +0 -32
  202. package/dist/sessionModeFile-CsLtn_PL.cjs +0 -36
  203. package/dist/spawnAgents-BjtmjBvP.mjs +0 -45
@@ -1,50 +1,51 @@
1
1
  'use strict';
2
2
 
3
- var _package = require('./package-Ch9WGDV_.cjs');
3
+ var _package = require('./package-SgqTYsjn.cjs');
4
4
 
5
5
  const LAZY_MODULES = [
6
6
  // Entry
7
- ["main", () => Promise.resolve().then(function () { return require('./main-DpM5jaFH.cjs'); })],
7
+ ["main", () => Promise.resolve().then(function () { return require('./main-CWhSsbtU.cjs'); })],
8
8
  ["selfCheck", () => Promise.resolve().then(function () { return selfCheck; })],
9
9
  // Subcommands (main.ts)
10
- ["api/api", () => Promise.resolve().then(function () { return require('./api-BWX10o97.cjs'); }).then(function (n) { return n.api; })],
10
+ ["api/api", () => Promise.resolve().then(function () { return require('./api-Cmjfr8Z7.cjs'); }).then(function (n) { return n.api; })],
11
11
  ["claude/claudeCliPath", () => Promise.resolve().then(function () { return require('./claudeCliPath-U4HHmV4r.cjs'); })],
12
- ["claude/runClaude", () => Promise.resolve().then(function () { return require('./runClaude-ClRhHpwR.cjs'); })],
13
- ["commands/agentHome", () => Promise.resolve().then(function () { return require('./agentHome-BdTXEUPe.cjs'); })],
14
- ["commands/auth", () => Promise.resolve().then(function () { return require('./auth-DNxVmVbn.cjs'); })],
15
- ["commands/auto", () => Promise.resolve().then(function () { return require('./auto-D1ypjjfx.cjs'); })],
16
- ["commands/codexCommand", () => Promise.resolve().then(function () { return require('./codexCommand-6hW19gsq.cjs'); })],
17
- ["commands/connect", () => Promise.resolve().then(function () { return require('./connect-Wz-XZYXW.cjs'); })],
12
+ ["claude/runClaude", () => Promise.resolve().then(function () { return require('./runClaude-CWhj2V4Q.cjs'); })],
13
+ ["commands/agentHome", () => Promise.resolve().then(function () { return require('./agentHome-BWcz8mz0.cjs'); })],
14
+ ["commands/auth", () => Promise.resolve().then(function () { return require('./auth-HEhRaNgL.cjs'); })],
15
+ ["commands/auto", () => Promise.resolve().then(function () { return require('./auto-C6I55iOh.cjs'); })],
16
+ ["commands/codexCommand", () => Promise.resolve().then(function () { return require('./codexCommand-CAZ1SLjg.cjs'); })],
17
+ ["commands/connect", () => Promise.resolve().then(function () { return require('./connect-uaglGrde.cjs'); })],
18
18
  ["commands/installPiTools", () => Promise.resolve().then(function () { return require('./installPiTools-BKnXjrVu.cjs'); })],
19
19
  ["commands/installTerminalHooks", () => Promise.resolve().then(function () { return require('./installTerminalHooks-BQZbvxsZ.cjs'); })],
20
- ["commands/mcp", () => Promise.resolve().then(function () { return require('./mcp-DQv3caXs.cjs'); })],
21
- ["commands/piTerminal", () => Promise.resolve().then(function () { return require('./piTerminal-y_PRo2NY.cjs'); })],
22
- ["commands/sandbox", () => Promise.resolve().then(function () { return require('./sandbox-Cu9mMzjx.cjs'); })],
23
- ["commands/send", () => Promise.resolve().then(function () { return require('./send-2Vb5eppI.cjs'); })],
24
- ["commands/server", () => Promise.resolve().then(function () { return require('./server-Db9Wuam3.cjs'); })],
25
- ["commands/sessions", () => Promise.resolve().then(function () { return require('./sessions-BJblG_Hx.cjs'); })],
26
- ["commands/spawn", () => Promise.resolve().then(function () { return require('./spawn-DRyNAqD8.cjs'); })],
27
- ["commands/teams", () => Promise.resolve().then(function () { return require('./teams-D7O7TpVU.cjs'); })],
28
- ["commands/todo", () => Promise.resolve().then(function () { return require('./todo-CUcFamGs.cjs'); })],
20
+ ["commands/mcp", () => Promise.resolve().then(function () { return require('./mcp-CARUsXHV.cjs'); })],
21
+ ["commands/panels", () => Promise.resolve().then(function () { return require('./panels-D1c7q2dD.cjs'); })],
22
+ ["commands/piTerminal", () => Promise.resolve().then(function () { return require('./piTerminal-G4z-xVyy.cjs'); })],
23
+ ["commands/sandbox", () => Promise.resolve().then(function () { return require('./sandbox-nocIjliq.cjs'); })],
24
+ ["commands/send", () => Promise.resolve().then(function () { return require('./send-Dydf_hwZ.cjs'); })],
25
+ ["commands/server", () => Promise.resolve().then(function () { return require('./server-CosABFbd.cjs'); })],
26
+ ["commands/sessions", () => Promise.resolve().then(function () { return require('./sessions-JchI1w3z.cjs'); })],
27
+ ["commands/spawn", () => Promise.resolve().then(function () { return require('./spawn-6PD7nnoC.cjs'); })],
28
+ ["commands/teams", () => Promise.resolve().then(function () { return require('./teams-Ov2BDT-A.cjs'); })],
29
+ ["commands/todo", () => Promise.resolve().then(function () { return require('./todo-KY-okGii.cjs'); })],
29
30
  ["daemon/doctor", () => Promise.resolve().then(function () { return require('./doctor-u46qYYKX.cjs'); })],
30
- ["daemon/install", () => Promise.resolve().then(function () { return require('./install-1qn-D9FS.cjs'); })],
31
- ["daemon/run", () => Promise.resolve().then(function () { return require('./run-DZ5jU53c.cjs'); })],
32
- ["daemon/uninstall", () => Promise.resolve().then(function () { return require('./uninstall-7oLuhYIu.cjs'); })],
33
- ["resume/handleResumeCommand", () => Promise.resolve().then(function () { return require('./handleResumeCommand-OmuUGYjQ.cjs'); })],
34
- ["ui/doctor", () => Promise.resolve().then(function () { return require('./doctor-BsN3JZJn.cjs'); }).then(function (n) { return n.doctor; })],
35
- ["agent/acp", () => Promise.resolve().then(function () { return require('./index-BRJzH4sc.cjs'); })],
36
- ["gemini/runGemini", () => Promise.resolve().then(function () { return require('./runGemini-BtZqGFkp.cjs'); })],
37
- ["gemini/utils/config", () => Promise.resolve().then(function () { return require('./config-DhdrvOLV.cjs'); })],
38
- ["openclaw/runOpenClaw", () => Promise.resolve().then(function () { return require('./runOpenClaw-D8q8G57u.cjs'); })],
39
- ["persistence", () => Promise.resolve().then(function () { return require('./persistence-DXbKOHxl.cjs'); }).then(function (n) { return n.persistence; })],
31
+ ["daemon/install", () => Promise.resolve().then(function () { return require('./install-CYRZxS87.cjs'); })],
32
+ ["daemon/run", () => Promise.resolve().then(function () { return require('./run-CNXwIe0A.cjs'); })],
33
+ ["daemon/uninstall", () => Promise.resolve().then(function () { return require('./uninstall-8vnLN-IE.cjs'); })],
34
+ ["resume/handleResumeCommand", () => Promise.resolve().then(function () { return require('./handleResumeCommand-tKD_Hpxc.cjs'); })],
35
+ ["ui/doctor", () => Promise.resolve().then(function () { return require('./doctor-Br1Kcy2J.cjs'); }).then(function (n) { return n.doctor; })],
36
+ ["agent/acp", () => Promise.resolve().then(function () { return require('./index-DMqDMT1Q.cjs'); })],
37
+ ["gemini/runGemini", () => Promise.resolve().then(function () { return require('./runGemini-CgRLYbt5.cjs'); })],
38
+ ["gemini/utils/config", () => Promise.resolve().then(function () { return require('./config-B0uK6K7n.cjs'); })],
39
+ ["openclaw/runOpenClaw", () => Promise.resolve().then(function () { return require('./runOpenClaw-C1NVmzOL.cjs'); })],
40
+ ["persistence", () => Promise.resolve().then(function () { return require('./persistence-BegE7NPa.cjs'); }).then(function (n) { return n.persistence; })],
40
41
  // Deferred halves of the runners and clients
41
- ["api/apiMachine", () => Promise.resolve().then(function () { return require('./apiMachine-BYYFGgFs.cjs'); })],
42
- ["claude/runClaudeDeps", () => Promise.resolve().then(function () { return require('./runClaudeDeps-D2v_WDSL.cjs'); })],
43
- ["claude/claudeLocal", () => Promise.resolve().then(function () { return require('./claudeLocal-CemsIArT.cjs'); })],
44
- ["claude/claudeLocalLauncher", () => Promise.resolve().then(function () { return require('./claudeLocalLauncher-A4VuevIi.cjs'); })],
45
- ["claude/sdk", () => Promise.resolve().then(function () { return require('./index-DFPT4HOO.cjs'); })],
46
- ["assistant/bootstrap", () => Promise.resolve().then(function () { return require('./bootstrap-6OI698q9.cjs'); })],
47
- ["agentHome", () => Promise.resolve().then(function () { return require('./index-CrR4JISa.cjs'); })],
42
+ ["api/apiMachine", () => Promise.resolve().then(function () { return require('./apiMachine-G6OogT08.cjs'); })],
43
+ ["claude/runClaudeDeps", () => Promise.resolve().then(function () { return require('./runClaudeDeps-B81cOKnH.cjs'); })],
44
+ ["claude/claudeLocal", () => Promise.resolve().then(function () { return require('./claudeLocal-re4yjSTx.cjs'); })],
45
+ ["claude/claudeLocalLauncher", () => Promise.resolve().then(function () { return require('./claudeLocalLauncher-B4hJHpCA.cjs'); })],
46
+ ["claude/sdk", () => Promise.resolve().then(function () { return require('./index-CUuc6iCn.cjs'); })],
47
+ ["assistant/bootstrap", () => Promise.resolve().then(function () { return require('./bootstrap-exVucYav.cjs'); })],
48
+ ["agentHome", () => Promise.resolve().then(function () { return require('./index-B0UjHlAe.cjs'); })],
48
49
  ["ui/ink/RemoteModeDisplay", () => Promise.resolve().then(function () { return require('./RemoteModeDisplay-NC1gPHtj.cjs'); })],
49
50
  // External packages imported on demand
50
51
  ["expo-server-sdk", () => import('expo-server-sdk')],
@@ -1,22 +1,22 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { b as readPersistedSessions } from './persistence-C_tYtOqK.mjs';
5
- import { s as sessionWebUrl } from './sessionOps-CdgbEJgf.mjs';
6
- import { d as deliverToSession, s as sendRemoteMessage } from './remoteSessionClient-D01Hso2-.mjs';
4
+ import { c as readPersistedSessions } from './persistence-Cr-wutZ4.mjs';
5
+ import { s as sessionWebUrl } from './sessionOps-BIGgRube.mjs';
6
+ import { d as deliverToSession, s as sendRemoteMessage } from './remoteSessionClient-Bn2qu5C5.mjs';
7
7
  import 'node:fs/promises';
8
- import './configuration-D55F0t16.mjs';
8
+ import './configuration-WMi4idBB.mjs';
9
9
  import 'node:os';
10
- import './package-CjlsAaRe.mjs';
10
+ import './package-BPPebGQF.mjs';
11
11
  import 'zod';
12
- import './authRelay-DSAvg1uv.mjs';
12
+ import './authRelay-DhQhkBvX.mjs';
13
13
  import 'node:crypto';
14
14
  import 'tweetnacl';
15
- import './logger-13cBr_ew.mjs';
15
+ import './logger-BtVhHnD8.mjs';
16
16
  import 'node:util';
17
17
  import 'axios';
18
- import './controlClient-C4xB5J6O.mjs';
19
- import './time-yEL6wHUF.mjs';
18
+ import './controlClient-BWUJrj3t.mjs';
19
+ import './time-65DcU6Jx.mjs';
20
20
  import 'socket.io-client';
21
21
  import './backgroundTaskActivity-BVwJBl02.mjs';
22
22
 
@@ -3,22 +3,22 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var persistence = require('./persistence-DXbKOHxl.cjs');
7
- var sessionOps = require('./sessionOps-Dmt7WUUs.cjs');
8
- var remoteSessionClient = require('./remoteSessionClient-B7NvjHD3.cjs');
6
+ var persistence = require('./persistence-BegE7NPa.cjs');
7
+ var sessionOps = require('./sessionOps-S-qPBLFf.cjs');
8
+ var remoteSessionClient = require('./remoteSessionClient-B7i7MkYV.cjs');
9
9
  require('node:fs/promises');
10
- require('./configuration-DZPy0T9Z.cjs');
10
+ require('./configuration-CMHZnp6G.cjs');
11
11
  require('node:os');
12
- require('./package-Ch9WGDV_.cjs');
12
+ require('./package-SgqTYsjn.cjs');
13
13
  require('zod');
14
- require('./authRelay-BdYkC1Po.cjs');
14
+ require('./authRelay-Dy1qU9td.cjs');
15
15
  require('node:crypto');
16
16
  require('tweetnacl');
17
- require('./logger-LvwVeATU.cjs');
17
+ require('./logger-C1GWx3gi.cjs');
18
18
  require('node:util');
19
19
  require('axios');
20
- require('./controlClient-SX8gSza2.cjs');
21
- require('./time-Dg5tVB8S.cjs');
20
+ require('./controlClient-C-5qCt8W.cjs');
21
+ require('./time-CrwIMHta.cjs');
22
22
  require('socket.io-client');
23
23
  require('./backgroundTaskActivity-CBvUdj39.cjs');
24
24
 
@@ -8,15 +8,15 @@ var module$1 = require('node:module');
8
8
  var node_crypto = require('node:crypto');
9
9
  var node_child_process = require('node:child_process');
10
10
  var promises = require('node:readline/promises');
11
- var configuration = require('./configuration-DZPy0T9Z.cjs');
12
- var persistence = require('./persistence-DXbKOHxl.cjs');
11
+ var configuration = require('./configuration-CMHZnp6G.cjs');
12
+ var persistence = require('./persistence-BegE7NPa.cjs');
13
13
  require('node:os');
14
- require('./package-Ch9WGDV_.cjs');
14
+ require('./package-SgqTYsjn.cjs');
15
15
  require('node:fs/promises');
16
16
  require('zod');
17
- require('./authRelay-BdYkC1Po.cjs');
17
+ require('./authRelay-Dy1qU9td.cjs');
18
18
  require('tweetnacl');
19
- require('./logger-LvwVeATU.cjs');
19
+ require('./logger-C1GWx3gi.cjs');
20
20
  require('node:util');
21
21
 
22
22
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -33,9 +33,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
33
33
  };
34
34
  }
35
35
 
36
- const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-Db9Wuam3.cjs', document.baseURI).href)));
36
+ const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-CosABFbd.cjs', document.baseURI).href)));
37
37
  const __dirname$1 = path.dirname(__filename$1);
38
- const require_ = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-Db9Wuam3.cjs', document.baseURI).href)));
38
+ const require_ = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-CosABFbd.cjs', document.baseURI).href)));
39
39
  const PRISMA_QUERY_ENGINE_FILES = {
40
40
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
41
41
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -6,15 +6,15 @@ import { createRequire } from 'node:module';
6
6
  import { randomBytes } from 'node:crypto';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { createInterface } from 'node:readline/promises';
9
- import { c as configuration } from './configuration-D55F0t16.mjs';
10
- import { u as updateSettings } from './persistence-C_tYtOqK.mjs';
9
+ import { c as configuration } from './configuration-WMi4idBB.mjs';
10
+ import { u as updateSettings } from './persistence-Cr-wutZ4.mjs';
11
11
  import 'node:os';
12
- import './package-CjlsAaRe.mjs';
12
+ import './package-BPPebGQF.mjs';
13
13
  import 'node:fs/promises';
14
14
  import 'zod';
15
- import './authRelay-DSAvg1uv.mjs';
15
+ import './authRelay-DhQhkBvX.mjs';
16
16
  import 'tweetnacl';
17
- import './logger-13cBr_ew.mjs';
17
+ import './logger-BtVhHnD8.mjs';
18
18
  import 'node:util';
19
19
 
20
20
  function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, generatedInviteCode) {
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./persistence-DXbKOHxl.cjs');
3
+ var persistence = require('./persistence-BegE7NPa.cjs');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var configuration = require('./configuration-DZPy0T9Z.cjs');
7
- var logger = require('./logger-LvwVeATU.cjs');
6
+ var configuration = require('./configuration-CMHZnp6G.cjs');
7
+ var logger = require('./logger-C1GWx3gi.cjs');
8
+ var processTreeSnapshot = require('./processTreeSnapshot-mDbnuojn.cjs');
8
9
 
9
10
  const PROCESS_IDENTITY_FIELDS = [
10
11
  "hostPid",
@@ -100,6 +101,17 @@ function terminateProcess(pid, onSettled, impl = runtime, graceMs = 2e3) {
100
101
  }, graceMs);
101
102
  return true;
102
103
  }
104
+ function terminateProcessTree(pid, onSettled, deps = {}) {
105
+ const snapshot = (deps.snapshot ?? ((root) => processTreeSnapshot.snapshotTree(root)))(pid);
106
+ const reap = deps.reap ?? ((entries) => processTreeSnapshot.killSurvivors(entries));
107
+ return (deps.terminate ?? terminateProcess)(pid, (stopped) => {
108
+ try {
109
+ reap(snapshot);
110
+ } catch {
111
+ }
112
+ onSettled(stopped);
113
+ });
114
+ }
103
115
 
104
116
  const SESSION_LOCK_DIR = "session-locks";
105
117
  const defaultRuntime = () => ({
@@ -211,4 +223,5 @@ exports.mergeReconnectMetadata = mergeReconnectMetadata;
211
223
  exports.processIdentityFields = processIdentityFields;
212
224
  exports.readSessionLock = readSessionLock;
213
225
  exports.terminateProcess = terminateProcess;
226
+ exports.terminateProcessTree = terminateProcessTree;
214
227
  exports.withoutServerSnapshot = withoutServerSnapshot;
@@ -1,8 +1,9 @@
1
- import { k as hibernationReplaySeq } from './persistence-C_tYtOqK.mjs';
1
+ import { n as hibernationReplaySeq } from './persistence-Cr-wutZ4.mjs';
2
2
  import { existsSync, readFileSync, unlinkSync, mkdirSync, renameSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { c as configuration, w as writePrivateFileSync } from './configuration-D55F0t16.mjs';
5
- import { l as logger } from './logger-13cBr_ew.mjs';
4
+ import { c as configuration, w as writePrivateFileSync } from './configuration-WMi4idBB.mjs';
5
+ import { l as logger } from './logger-BtVhHnD8.mjs';
6
+ import { s as snapshotTree, k as killSurvivors } from './processTreeSnapshot-CuLJDNC-.mjs';
6
7
 
7
8
  const PROCESS_IDENTITY_FIELDS = [
8
9
  "hostPid",
@@ -98,6 +99,17 @@ function terminateProcess(pid, onSettled, impl = runtime, graceMs = 2e3) {
98
99
  }, graceMs);
99
100
  return true;
100
101
  }
102
+ function terminateProcessTree(pid, onSettled, deps = {}) {
103
+ const snapshot = (deps.snapshot ?? ((root) => snapshotTree(root)))(pid);
104
+ const reap = deps.reap ?? ((entries) => killSurvivors(entries));
105
+ return (deps.terminate ?? terminateProcess)(pid, (stopped) => {
106
+ try {
107
+ reap(snapshot);
108
+ } catch {
109
+ }
110
+ onSettled(stopped);
111
+ });
112
+ }
101
113
 
102
114
  const SESSION_LOCK_DIR = "session-locks";
103
115
  const defaultRuntime = () => ({
@@ -202,4 +214,4 @@ async function claimSessionOrExit(happySessionId, options) {
202
214
  process.on("exit", () => releaseSessionLock(happySessionId));
203
215
  }
204
216
 
205
- export { applyServerSnapshot as a, applyHibernationReplay as b, claimSessionOrExit as c, mergeReconnectMetadata as m, processIdentityFields as p, readSessionLock as r, terminateProcess as t, withoutServerSnapshot as w };
217
+ export { applyServerSnapshot as a, applyHibernationReplay as b, claimSessionOrExit as c, terminateProcessTree as d, mergeReconnectMetadata as m, processIdentityFields as p, readSessionLock as r, terminateProcess as t, withoutServerSnapshot as w };
@@ -1,10 +1,10 @@
1
1
  import axios from 'axios';
2
- import { c as configuration } from './configuration-D55F0t16.mjs';
3
- import { e as encodeBase64, g as encrypt, d as decodeBase64, h as decrypt } from './authRelay-DSAvg1uv.mjs';
4
- import { l as listDaemonSessions, s as stopDaemonSession } from './controlClient-C4xB5J6O.mjs';
5
- import { c as readCredentialsForConfiguredRelay, b as readPersistedSessions } from './persistence-C_tYtOqK.mjs';
2
+ import { c as configuration } from './configuration-WMi4idBB.mjs';
3
+ import { e as encodeBase64, g as encrypt, d as decodeBase64, h as decrypt } from './authRelay-DhQhkBvX.mjs';
4
+ import { l as listDaemonSessions, s as stopDaemonSession } from './controlClient-BWUJrj3t.mjs';
5
+ import { b as readCredentialsForConfiguredRelay, c as readPersistedSessions } from './persistence-Cr-wutZ4.mjs';
6
6
  import { randomUUID } from 'node:crypto';
7
- import { d as delay } from './time-yEL6wHUF.mjs';
7
+ import { d as delay } from './time-65DcU6Jx.mjs';
8
8
  import { io } from 'socket.io-client';
9
9
  import { b as backgroundTasksReport } from './backgroundTaskActivity-BVwJBl02.mjs';
10
10
 
@@ -193,6 +193,10 @@ function agentPiece(body) {
193
193
  }
194
194
  return null;
195
195
  }
196
+ function isSteerPrompt(body) {
197
+ const b = asRecord(body);
198
+ return !!b && asRecord(b.meta)?.delivery === "steer";
199
+ }
196
200
  function userPromptText(body) {
197
201
  return isUserPrompt(body) ? body.content.text : null;
198
202
  }
@@ -212,6 +216,7 @@ function analyzeLatestTurn(entries, options = {}) {
212
216
  let lastMarker = null;
213
217
  let startedAfterPrompt = false;
214
218
  const emitsStarts = entries.some((entry) => sessionEnvelope(entry.body)?.ev?.t === "turn-start");
219
+ const steerAnchor = userIndex >= 0 && isSteerPrompt(entries[userIndex].body);
215
220
  for (let i = userIndex + 1; i < entries.length; i++) {
216
221
  const body = entries[i].body;
217
222
  if (options.anchor && isUserPrompt(body)) {
@@ -230,7 +235,7 @@ function analyzeLatestTurn(entries, options = {}) {
230
235
  }
231
236
  if (env?.ev?.t === "turn-end") {
232
237
  lastMarker = "end";
233
- if (userIndex >= 0 && emitsStarts && !startedAfterPrompt) continue;
238
+ if (userIndex >= 0 && emitsStarts && !startedAfterPrompt && !steerAnchor) continue;
234
239
  ended = true;
235
240
  status = typeof env.ev.status === "string" ? env.ev.status : null;
236
241
  error = typeof env.ev.error === "string" ? env.ev.error : null;
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var configuration = require('./configuration-DZPy0T9Z.cjs');
5
- var authRelay = require('./authRelay-BdYkC1Po.cjs');
6
- var controlClient = require('./controlClient-SX8gSza2.cjs');
7
- var persistence = require('./persistence-DXbKOHxl.cjs');
4
+ var configuration = require('./configuration-CMHZnp6G.cjs');
5
+ var authRelay = require('./authRelay-Dy1qU9td.cjs');
6
+ var controlClient = require('./controlClient-C-5qCt8W.cjs');
7
+ var persistence = require('./persistence-BegE7NPa.cjs');
8
8
  var node_crypto = require('node:crypto');
9
- var time = require('./time-Dg5tVB8S.cjs');
9
+ var time = require('./time-CrwIMHta.cjs');
10
10
  var socket_ioClient = require('socket.io-client');
11
11
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
12
12
 
@@ -195,6 +195,10 @@ function agentPiece(body) {
195
195
  }
196
196
  return null;
197
197
  }
198
+ function isSteerPrompt(body) {
199
+ const b = asRecord(body);
200
+ return !!b && asRecord(b.meta)?.delivery === "steer";
201
+ }
198
202
  function userPromptText(body) {
199
203
  return isUserPrompt(body) ? body.content.text : null;
200
204
  }
@@ -214,6 +218,7 @@ function analyzeLatestTurn(entries, options = {}) {
214
218
  let lastMarker = null;
215
219
  let startedAfterPrompt = false;
216
220
  const emitsStarts = entries.some((entry) => sessionEnvelope(entry.body)?.ev?.t === "turn-start");
221
+ const steerAnchor = userIndex >= 0 && isSteerPrompt(entries[userIndex].body);
217
222
  for (let i = userIndex + 1; i < entries.length; i++) {
218
223
  const body = entries[i].body;
219
224
  if (options.anchor && isUserPrompt(body)) {
@@ -232,7 +237,7 @@ function analyzeLatestTurn(entries, options = {}) {
232
237
  }
233
238
  if (env?.ev?.t === "turn-end") {
234
239
  lastMarker = "end";
235
- if (userIndex >= 0 && emitsStarts && !startedAfterPrompt) continue;
240
+ if (userIndex >= 0 && emitsStarts && !startedAfterPrompt && !steerAnchor) continue;
236
241
  ended = true;
237
242
  status = typeof env.ev.status === "string" ? env.ev.status : null;
238
243
  error = typeof env.ev.error === "string" ? env.ev.error : null;
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var sync = require('./sync-C7sxoUYG.cjs');
3
+ var sync = require('./sync-D23jbqVa.cjs');
4
4
  var types = require('./types-CRS-srZK.cjs');
5
5
  var path$1 = require('node:path');
6
6
  var node_fs = require('node:fs');
7
7
  var transcriptCursor = require('./transcriptCursor-DcXGLeSc.cjs');
8
- var logger = require('./logger-LvwVeATU.cjs');
9
- var startFileWatcher = require('./startFileWatcher-C292fhra.cjs');
8
+ var logger = require('./logger-C1GWx3gi.cjs');
9
+ var startFileWatcher = require('./startFileWatcher-RECH5qY8.cjs');
10
10
  var path = require('./path-B7zW-WwE.cjs');
11
11
 
12
12
  class Future {
@@ -1,10 +1,10 @@
1
- import { I as InvalidateSync } from './sync-C3p7-KLn.mjs';
1
+ import { I as InvalidateSync } from './sync-CSe0Rf45.mjs';
2
2
  import { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
3
3
  import { join } from 'node:path';
4
4
  import { statSync } from 'node:fs';
5
5
  import { r as readTranscriptIncrement, i as isValidTranscriptHint } from './transcriptCursor-B7T_gkQ0.mjs';
6
- import { l as logger } from './logger-13cBr_ew.mjs';
7
- import { s as startFileWatcher } from './startFileWatcher-UQyTSRAP.mjs';
6
+ import { l as logger } from './logger-BtVhHnD8.mjs';
7
+ import { s as startFileWatcher } from './startFileWatcher-DghDOCO4.mjs';
8
8
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
9
9
 
10
10
  class Future {
@@ -1,26 +1,27 @@
1
1
  import chalk from 'chalk';
2
- import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, b as stopSession, c as resolvePermissionRequest, d as archiveSession } from './sessionOps-CdgbEJgf.mjs';
2
+ import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, b as stopSession, c as resolvePermissionRequest, d as archiveSession } from './sessionOps-BIGgRube.mjs';
3
3
  import { i as isValidSessionId } from './ids-DU6sLx4C.mjs';
4
- import { c as cliPeerSelf, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-CxmrKnfV.mjs';
5
- import { b as readPersistedSessions } from './persistence-C_tYtOqK.mjs';
4
+ import { c as cliPeerSelf, e as executeSessionPeerTool, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-CWKzcQ7u.mjs';
5
+ import { c as readPersistedSessions } from './persistence-Cr-wutZ4.mjs';
6
6
  import { resolve } from 'node:path';
7
- import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-D01Hso2-.mjs';
7
+ import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-Bn2qu5C5.mjs';
8
8
  import 'axios';
9
- import './configuration-D55F0t16.mjs';
9
+ import './configuration-WMi4idBB.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
- import './package-CjlsAaRe.mjs';
12
+ import './package-BPPebGQF.mjs';
13
13
  import 'node:fs/promises';
14
- import './authRelay-DSAvg1uv.mjs';
14
+ import './authRelay-DhQhkBvX.mjs';
15
15
  import 'node:crypto';
16
16
  import 'tweetnacl';
17
- import './controlClient-C4xB5J6O.mjs';
18
- import './logger-13cBr_ew.mjs';
17
+ import './controlClient-BWUJrj3t.mjs';
18
+ import './logger-BtVhHnD8.mjs';
19
19
  import 'node:util';
20
- import './time-yEL6wHUF.mjs';
20
+ import './time-65DcU6Jx.mjs';
21
21
  import 'socket.io-client';
22
22
  import './backgroundTaskActivity-BVwJBl02.mjs';
23
23
  import 'zod';
24
+ import './client-BhoEBnuN.mjs';
24
25
 
25
26
  const MACHINE_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
26
27
  const ACTIONS = ["list", "read", "stop", "archive", "approve", "deny", "peers", "message"];
@@ -65,7 +66,7 @@ function parseSessionsArgs(args) {
65
66
  } else if (arg === "--scope") {
66
67
  const value = args[++i];
67
68
  if (value === void 0) throw new Error("--scope requires a value");
68
- if (!PEER_SCOPES.includes(value)) throw new Error(`--scope must be one of ${PEER_SCOPES.join(", ")}`);
69
+ if (value !== "project" && !PEER_SCOPES.includes(value)) throw new Error(`--scope must be one of ${[...PEER_SCOPES, "project"].join(", ")}`);
69
70
  options.scope = value;
70
71
  } else if (arg === "--cwd") {
71
72
  const value = args[++i];
@@ -162,7 +163,7 @@ ${chalk.bold("Usage:")}
162
163
  very-happy sessions archive <id> [--json]
163
164
  very-happy sessions approve <id> <requestId> [--for-session] [--json]
164
165
  very-happy sessions deny <id> <requestId> [--reason <text>] [--json]
165
- very-happy sessions peers [--scope repo|cwd|machine] [--cwd <dir>] [--machine <id>] [--json]
166
+ very-happy sessions peers [--scope repo|cwd|machine|project] [--cwd <dir>] [--machine <id>] [--json]
166
167
  very-happy sessions message <id> <text> [--reply-to <msgId>] [--machine <id>] [--json]
167
168
 
168
169
  ${chalk.bold("Actions:")}
@@ -200,7 +201,10 @@ ${chalk.bold("Actions:")}
200
201
  managed session's shell, else this CLI) and tells the peer how to
201
202
  reply. A session another machine spawned is delivered through
202
203
  that machine's daemon, with this host named in the header.
203
- Refused for sessions that are not running, or terminal mirrors.
204
+ Refused for sessions that are not running, or terminal mirrors \u2014
205
+ except a session in the same project as the sender: there the
206
+ message is kept server-side and read on its next turn
207
+ (\`status: offline-stored\`, exit 0).
204
208
  \`delivered\` follows \`very-happy send\`: true only when a
205
209
  wrapper was attached before and after the POST (\`stored\` = it
206
210
  is on the server anyway).
@@ -225,7 +229,9 @@ ${chalk.bold("Options:")}
225
229
  --timeout <s> read --wait only: give up after <s> seconds (default 600).
226
230
  --for-session approve only: approved_for_session instead of approved.
227
231
  --reason <text> deny only: reason forwarded to the wrapper.
228
- --scope <s> peers only: repo (default) | cwd | machine.
232
+ --scope <s> peers only: repo (default) | cwd | machine | project
233
+ (project = the other sessions of the calling session's
234
+ Very Happy project on any machine).
229
235
  --cwd <dir> peers only: directory the scope is computed from
230
236
  (default: the process cwd, or HAPPY_SESSION_ID's cwd).
231
237
  --reply-to <id> message only: the peer message id being answered.
@@ -249,7 +255,8 @@ ${chalk.bold("Exit codes:")}
249
255
  2 read --wait: the turn had not ended when --timeout ran out (the
250
256
  partial state is still printed)
251
257
  0 success (approve/deny: the wrapper acknowledged the verdict; check
252
- \`settled\` in --json to see whether the request has left the pending set)
258
+ \`settled\` in --json to see whether the request has left the pending set;
259
+ message: delivered, or kept for a same-project session's next turn)
253
260
  1 bad arguments, unknown session, no machine of the account holds it (or
254
261
  its machine is offline / too old), request not pending, session not
255
262
  online, or the operation failed (including \`stop\` on a session the
@@ -282,6 +289,9 @@ function formatAccountSummaryLine(summary) {
282
289
  parts.push(summary.url);
283
290
  return parts.join(" ");
284
291
  }
292
+ function peerMessageExitCode(result) {
293
+ return result.delivered || result.status === "offline-stored" ? 0 : 1;
294
+ }
285
295
  function permissionFailureRecord(sessionId, requestId, error) {
286
296
  return { sessionId, requestId, error: error instanceof Error ? error.message : String(error) };
287
297
  }
@@ -373,8 +383,18 @@ async function handleSessionsCommand(args) {
373
383
  const cwd = options.cwd ? resolve(options.cwd) : process.cwd();
374
384
  const persisted = readPersistedSessions();
375
385
  const context = { self: () => cliPeerSelf(process.env, cwd, persisted), readPersisted: () => persisted };
386
+ if (options.action === "peers" && options.scope === "project") {
387
+ const self = cliPeerSelf(process.env, cwd, persisted);
388
+ const listing = await executeSessionPeerTool("session_peers", { scope: "project" }, context);
389
+ if (options.json) console.log(JSON.stringify(listing));
390
+ else if (!listing.project) console.log(`Not in a project (${self.sessionId}).`);
391
+ else if (listing.peers.length === 0) console.log(`No other sessions in project "${listing.project.name}".`);
392
+ else for (const peer of listing.peers) console.log([peer.sessionId, `[${peer.state ?? "?"}]`, peer.title ? `title="${peer.title}"` : "", peer.agent ? `agent=${peer.agent}` : "", peer.machine ? `machine=${peer.machine}` : "", peer.doing ? `doing="${peer.doing}"` : "", peer.url].filter(Boolean).join(" "));
393
+ process.exit(0);
394
+ }
376
395
  if (options.action === "peers") {
377
- const listing = options.machine ? await listRemotePeers(options.machine, { ...options.scope ? { scope: options.scope } : {}, ...options.cwd ? { cwd: options.cwd } : {} }) : await listPeerSessions(context, options.scope ?? "repo");
396
+ const scope = options.scope === "project" ? void 0 : options.scope;
397
+ const listing = options.machine ? await listRemotePeers(options.machine, { ...scope ? { scope } : {}, ...options.cwd ? { cwd: options.cwd } : {} }) : await listPeerSessions(context, scope ?? "repo");
378
398
  if (options.json) {
379
399
  console.log(JSON.stringify(listing));
380
400
  } else if (listing.peers.length === 0) {
@@ -398,9 +418,11 @@ async function handleSessionsCommand(args) {
398
418
  const result = await sendPeerMessage(context, { to: target, body: options.text, replyTo: options.replyTo, ...options.machine ? { machineId: options.machine } : {} });
399
419
  if (options.json) console.log(JSON.stringify(result));
400
420
  else if (result.delivered) console.log(`Message ${result.messageId} delivered to ${target}${result.machine ? ` on ${result.machine.host}` : ""}
421
+ ${result.url}`);
422
+ else if (result.status === "offline-stored") console.log(`Message ${result.messageId} ${result.note ?? "stored"} (${target} is not running; same project)
401
423
  ${result.url}`);
402
424
  else console.error(chalk.yellow("Not delivered:"), result.error ?? `session is ${result.status}`, result.stored ? "(stored server-side, unread)" : "");
403
- process.exit(result.delivered ? 0 : 1);
425
+ process.exit(peerMessageExitCode(result));
404
426
  } catch (error) {
405
427
  if (options.json) console.log(JSON.stringify({ delivered: false, to: target, error: error instanceof Error ? error.message : String(error) }));
406
428
  throw error;
@@ -504,4 +526,4 @@ ${result.url}`);
504
526
  }
505
527
  }
506
528
 
507
- export { SESSIONS_HELP, handleSessionsCommand, parseSessionsArgs, permissionFailureRecord };
529
+ export { SESSIONS_HELP, handleSessionsCommand, parseSessionsArgs, peerMessageExitCode, permissionFailureRecord };