very-happy-cli 0.2.188 → 0.2.190

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 (202) hide show
  1. package/dist/{AcpBackend-2loP7MpF.mjs → AcpBackend-Dd1h-Rgt.mjs} +3 -3
  2. package/dist/{AcpBackend-B8AYkp5n.cjs → AcpBackend-dkRv9QHm.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CLqo9R9Y.cjs → AcpSessionManager-AqWAqahm.cjs} +3 -3
  4. package/dist/{AcpSessionManager-C17doAoR.mjs → AcpSessionManager-QBZ-CIf7.mjs} +4 -4
  5. package/dist/{BasePermissionHandler-CrfyUmqO.mjs → BasePermissionHandler-CLp1ge-4.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-C8UEcFz0.cjs → BasePermissionHandler-CpSugp7Z.cjs} +1 -1
  7. package/dist/{acpSessionResume-OuYlLGxL.cjs → acpSessionResume-CZao6QEd.cjs} +1 -1
  8. package/dist/{acpSessionResume-F705a1cF.mjs → acpSessionResume-CcpDuIO5.mjs} +1 -1
  9. package/dist/{agentHome-Dc7LYF3d.mjs → agentHome-BJGRA2Kx.mjs} +4 -4
  10. package/dist/{agentHome-DsKHJ_Sf.cjs → agentHome-fIUqT-pn.cjs} +4 -4
  11. package/dist/{api-BOqjYd5r.cjs → api-CXL6jp-p.cjs} +18 -9
  12. package/dist/{api-DNKa7kVy.mjs → api-Dw8gFsQi.mjs} +19 -10
  13. package/dist/{apiMachine-Di1G9ECW.mjs → apiMachine-BBNEtjf7.mjs} +56 -15
  14. package/dist/{apiMachine--rcPpMmt.cjs → apiMachine-C6UqHoPF.cjs} +55 -14
  15. package/dist/{attachmentContent-C9S4ekAz.mjs → attachmentContent-CC4yIrSm.mjs} +2 -2
  16. package/dist/{attachmentContent-BFRMLong.cjs → attachmentContent-NmVfKp-B.cjs} +2 -2
  17. package/dist/{auth-CXmI92aj.cjs → auth-Bb_SL2os.cjs} +5 -5
  18. package/dist/{auth-Bzwo_vOM.mjs → auth-Bh6SUoGi.mjs} +8 -8
  19. package/dist/{auth-BNhhk2Fr.mjs → auth-Bj0psrD2.mjs} +5 -5
  20. package/dist/{auth-CQtfznF0.cjs → auth-DKa4MsAi.cjs} +8 -8
  21. package/dist/{auto-DXLdaX5O.cjs → auto-C9Qohh0P.cjs} +17 -16
  22. package/dist/{auto-DHYOLnXB.mjs → auto-DK7pbCnV.mjs} +19 -18
  23. package/dist/{bootstrap-Di38SnpN.mjs → bootstrap-Ct9Nb4sv.mjs} +2 -2
  24. package/dist/{bootstrap-eJ1l7VYl.cjs → bootstrap-DBJB0y-H.cjs} +2 -2
  25. package/dist/{browser-6Cg7G6bb.mjs → browser-BGxDRhHy.mjs} +1 -1
  26. package/dist/{browser-D3uBFRQu.cjs → browser-CLJWcodR.cjs} +1 -1
  27. package/dist/{claudeLocal-BBaE4QF_.cjs → claudeLocal-B6YDYlnY.cjs} +4 -4
  28. package/dist/{claudeLocal-CqaEs-81.mjs → claudeLocal-Ux31hZyC.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-BDUPxtsI.mjs → claudeLocalLauncher-D06QijMw.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-wPxKtH_P.cjs → claudeLocalLauncher-DFvmF8rC.cjs} +9 -9
  31. package/dist/{claudeSessionFork-DzWFzj9m.mjs → claudeSessionFork-D2GI7P59.mjs} +1 -1
  32. package/dist/{claudeSessionFork-CmY25Fl3.cjs → claudeSessionFork-DTLZ2rek.cjs} +1 -1
  33. package/dist/{client-DmY03OZZ.cjs → client-Bffkrs5p.cjs} +2 -2
  34. package/dist/{client-C2HcMqRF.cjs → client-CARZ_lNS.cjs} +3 -3
  35. package/dist/{client-agH03Irm.cjs → client-CMKGrnmT.cjs} +2 -2
  36. package/dist/{client-DWws_aQK.mjs → client-CnGNYidN.mjs} +2 -2
  37. package/dist/{client-qJ0y8fus.mjs → client-CtL0Vtww.mjs} +4 -4
  38. package/dist/{client-DcDE6Ifk.mjs → client-DZkBUoh9.mjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -15
  40. package/dist/codex/happyMcpStdioBridge.mjs +17 -16
  41. package/dist/{codexAppServerClient-DgE99i7X.mjs → codexAppServerClient-CLc5nhLT.mjs} +37 -6
  42. package/dist/{codexAppServerClient-DwzC8LR0.cjs → codexAppServerClient-CpT9F6EM.cjs} +37 -6
  43. package/dist/{codexCommand-1vFEA1KT.cjs → codexCommand-39kH99SJ.cjs} +148 -61
  44. package/dist/{codexCommand-DUSVzbKh.mjs → codexCommand-Dliq3EBv.mjs} +143 -56
  45. package/dist/{codexTermination-DuDPyBRR.cjs → codexTermination-ByW7tRjr.cjs} +1 -1
  46. package/dist/{codexTermination-Bybovr2z.mjs → codexTermination-ORIw0gpU.mjs} +1 -1
  47. package/dist/{codexThreadFork-DNekT4nQ.cjs → codexThreadFork-5kwoKjMu.cjs} +11 -17
  48. package/dist/{codexThreadFork-R76RU5H0.mjs → codexThreadFork-DobPd19R.mjs} +11 -17
  49. package/dist/{config-C4xOL5bH.cjs → config-CeIzCsfj.cjs} +3 -3
  50. package/dist/{config-BrzZ0O-6.mjs → config-CxSsGO1Z.mjs} +3 -3
  51. package/dist/{configuration-BZHpFD7K.mjs → configuration-Dechcvd-.mjs} +1 -1
  52. package/dist/{configuration-DyPW9mVa.cjs → configuration-Dt5lKW3P.cjs} +1 -1
  53. package/dist/{connect-DurKwMEo.cjs → connect-NPDzIVC6.cjs} +12 -12
  54. package/dist/{connect-Cw_INlj8.mjs → connect-UwQHvCpR.mjs} +13 -13
  55. package/dist/{context-2xDvjkQp.cjs → context-BdZssgF0.cjs} +1 -1
  56. package/dist/{context-t7YV0aZc.mjs → context-C9JbJoNe.mjs} +1 -1
  57. package/dist/{controlClient-DvFaPsg6.cjs → controlClient-BRk65BRO.cjs} +3 -3
  58. package/dist/{controlClient-Bw56NIrj.mjs → controlClient-D7NGfmtq.mjs} +3 -3
  59. package/dist/{createSessionMetadata-Dpg6bV6f.cjs → createSessionMetadata-B_HZCDj_.cjs} +2 -2
  60. package/dist/{createSessionMetadata-Dn5BkLfU.mjs → createSessionMetadata-DyhFKAby.mjs} +2 -2
  61. package/dist/defaultPermissionMode-BnxJPVHT.mjs +4 -0
  62. package/dist/defaultPermissionMode-CxmTXUQR.cjs +7 -0
  63. package/dist/{deterministicJson-D0BrV1FD.cjs → deterministicJson-BEygolBQ.cjs} +12 -12
  64. package/dist/{deterministicJson-CsRckxVq.mjs → deterministicJson-DNmMVhFu.mjs} +13 -13
  65. package/dist/{doctor-CYe4d9kU.cjs → doctor-B9lW1WlG.cjs} +7 -7
  66. package/dist/{doctor-B4HQiW6j.mjs → doctor-BdBi7TFZ.mjs} +7 -7
  67. package/dist/{downloadTarget-tYMV_VHo.mjs → downloadTarget-CGojGjaN.mjs} +6 -6
  68. package/dist/{downloadTarget-CuhBVvuC.cjs → downloadTarget-DS0zT2AU.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-DVtIG9z7.mjs → ensureDaemonRunning-BOdbryDM.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-Ce3BlWiR.cjs → ensureDaemonRunning-Bibp6vhe.cjs} +5 -5
  71. package/dist/exitAfterFlush-AbKNZM0N.mjs +23 -0
  72. package/dist/exitAfterFlush-DIT_sIxR.cjs +25 -0
  73. package/dist/{handleResumeCommand-BU1uMNyv.mjs → handleResumeCommand-CgLzBYne.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CLxsmAW0.cjs → handleResumeCommand-DXOuWr4p.cjs} +5 -5
  75. package/dist/{agentAttachments-Dbw8iMCZ.cjs → heldInput-BOtqFO2r.cjs} +27 -0
  76. package/dist/heldInput-C69lA2dH.mjs +44 -0
  77. package/dist/{index-KwuXqLwe.cjs → index-Bs5FD8JF.cjs} +4 -4
  78. package/dist/{index-ChX0eVXw.mjs → index-CBHfkQNY.mjs} +142 -60
  79. package/dist/{index-DoXbGEAi.cjs → index-CwRW11hT.cjs} +3 -3
  80. package/dist/{index-CVHRt3SS.mjs → index-DUByZsKe.mjs} +4 -4
  81. package/dist/{index-wWJJAQRk.cjs → index-DXSIi6j_.cjs} +4 -4
  82. package/dist/{index-DDz0Ftoy.mjs → index-Db0HIC-k.mjs} +4 -4
  83. package/dist/{index-WKyN-bNy.mjs → index-DmqsRnV7.mjs} +1 -1
  84. package/dist/{index-DG1kGjkF.cjs → index-f8oDidjV.cjs} +142 -60
  85. package/dist/{index-B1OxWiNG.mjs → index-rNTX33in.mjs} +3 -3
  86. package/dist/index.cjs +2 -2
  87. package/dist/index.mjs +2 -2
  88. package/dist/{install-cAYvHxXR.cjs → install-CXIL_FYx.cjs} +3 -3
  89. package/dist/{install-CMa_FOWu.mjs → install-DfPrEWGG.mjs} +3 -3
  90. package/dist/lib.cjs +11 -11
  91. package/dist/lib.d.cts +61 -1
  92. package/dist/lib.d.mts +61 -1
  93. package/dist/lib.mjs +12 -12
  94. package/dist/{lidState-D-lsD1FS.mjs → lidState-D0DF20oG.mjs} +1 -1
  95. package/dist/{lidState-d1vgQ3n7.cjs → lidState-q_XFYg33.cjs} +1 -1
  96. package/dist/{localHappyAgentAuth-wvDp-nGj.mjs → localHappyAgentAuth-BBhM4Qk1.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-DucSnCg3.cjs → localHappyAgentAuth-CKNW-MXw.cjs} +1 -1
  98. package/dist/{logger-C3vZG6Q0.cjs → logger-BBRTTVsQ.cjs} +2 -2
  99. package/dist/{logger-RpzJ4d8V.mjs → logger-CL7pin9b.mjs} +2 -2
  100. package/dist/{machineMetadata-CiQ2_1Mq.mjs → machineMetadata-DP06qdBk.mjs} +3 -3
  101. package/dist/{machineMetadata-CAvFq1Jg.cjs → machineMetadata-DnFNlrVK.cjs} +3 -3
  102. package/dist/{main-ChpYcFZi.cjs → main-DLOXykOR.cjs} +49 -48
  103. package/dist/{main-IPhaImjm.mjs → main-DO7nRvhf.mjs} +49 -48
  104. package/dist/{mcp-CWnMvju6.mjs → mcp-C-4sPTae.mjs} +16 -15
  105. package/dist/{mcp-2xF232hL.cjs → mcp-Du0MgR7e.cjs} +15 -14
  106. package/dist/{mirrorProtocol-CVzPObON.cjs → mirrorProtocol-GuWMxLkh.cjs} +2 -2
  107. package/dist/{mirrorProtocol-Dr7fNq8V.mjs → mirrorProtocol-dkq2ZENA.mjs} +3 -3
  108. package/dist/{package-CwB8rFJt.mjs → package-C6uiXULx.mjs} +7 -7
  109. package/dist/{package-Gnf_935w.cjs → package-DrY090nZ.cjs} +7 -7
  110. package/dist/{panels-DTlTsndU.cjs → panels-4DRBKHZP.cjs} +5 -5
  111. package/dist/{panels-L1mSkC-y.mjs → panels-DXYdJA6n.mjs} +5 -5
  112. package/dist/{peerTools-C1E5cQ86.cjs → peerTools-5ZM4spcZ.cjs} +5 -5
  113. package/dist/{peerTools-2_8Bw9PU.mjs → peerTools-dY1aJez4.mjs} +5 -5
  114. package/dist/{persistence-CqtjFiD1.cjs → persistence-Bl5S3TLB.cjs} +6 -2
  115. package/dist/{persistence-Bn4qEbDg.mjs → persistence-Dogj7JIp.mjs} +6 -3
  116. package/dist/{piRunnerArgs-BI8yQRBZ.cjs → piRunnerArgs-C3jZ1M6b.cjs} +1 -1
  117. package/dist/{piRunnerArgs-DWBb63W9.mjs → piRunnerArgs-D8nN_Iit.mjs} +1 -1
  118. package/dist/{piRuntime--mQ43MSM.cjs → piRuntime-Bd9-eq6M.cjs} +1 -1
  119. package/dist/{piRuntime-Do8oqbm3.mjs → piRuntime-BoeMsAXK.mjs} +1 -1
  120. package/dist/{piTerminal-BzcvLFsP.cjs → piTerminal-C3j1ca3x.cjs} +17 -16
  121. package/dist/{piTerminal-GC1KHTYQ.mjs → piTerminal-GEPkIGD4.mjs} +18 -17
  122. package/dist/{pushNotifications-Bb-QSqXw.cjs → pushNotifications-CfspRcl-.cjs} +20 -2
  123. package/dist/{pushNotifications-BThg4nVd.mjs → pushNotifications-dUceOIni.mjs} +21 -3
  124. package/dist/{query-Bz3pocKH.cjs → query-DjsVgG3E.cjs} +1 -1
  125. package/dist/{query-CkgIJ_Dy.mjs → query-iYH-tm7L.mjs} +1 -1
  126. package/dist/{rateLimitReporter-BkHyvLru.cjs → rateLimitReporter-DUu2KydZ.cjs} +3 -3
  127. package/dist/{rateLimitReporter-Iw4k3Bbr.mjs → rateLimitReporter-jeVi-fym.mjs} +3 -3
  128. package/dist/{rateLimitWindows-Bm_dcQGW.cjs → rateLimitWindows-Bx3ROBP5.cjs} +1 -1
  129. package/dist/{rateLimitWindows-CQ4tIQnx.mjs → rateLimitWindows-CEn0DXaX.mjs} +1 -1
  130. package/dist/{registerCommonHandlers-CIs6H2DV.cjs → registerCommonHandlers-Beun-cQv.cjs} +2 -2
  131. package/dist/{registerCommonHandlers-CaWl9ll1.mjs → registerCommonHandlers-DWZ7mfdt.mjs} +2 -2
  132. package/dist/{specialCommands-BsvSoDhC.cjs → registerKillSessionHandler-CA1FFr_F.cjs} +15 -62
  133. package/dist/{specialCommands-DHU7TNeK.mjs → registerKillSessionHandler-CzgklwLG.mjs} +17 -60
  134. package/dist/{remoteSessionClient-uPj7omsw.mjs → remoteSessionClient-BiC2KDew.mjs} +5 -5
  135. package/dist/{remoteSessionClient-DgUMfPW4.cjs → remoteSessionClient-DGFI__5Z.cjs} +5 -5
  136. package/dist/{reportProgressTool-DUEq3xAL.mjs → reportProgressTool-CgPy6n_7.mjs} +3 -3
  137. package/dist/{reportProgressTool-CaJ8EwLq.cjs → reportProgressTool-CvPGov1F.cjs} +2 -2
  138. package/dist/{run-DTUJBD6p.mjs → run-B_gFgJVB.mjs} +393 -42
  139. package/dist/{run-DyyGMqND.cjs → run-rPqQwDi_.cjs} +391 -40
  140. package/dist/{runClaude-DTNvIz2J.mjs → runClaude-CykqeXK7.mjs} +26 -23
  141. package/dist/{runClaude-8JDaPoGQ.cjs → runClaude-DM8gm8iu.cjs} +27 -24
  142. package/dist/{runClaudeDeps-CgGkgg7e.mjs → runClaudeDeps-D2phXGut.mjs} +106 -46
  143. package/dist/{runClaudeDeps-BeLo5zss.cjs → runClaudeDeps-DGAomimZ.cjs} +101 -40
  144. package/dist/{runGemini-BSOdU563.cjs → runGemini-CXTeSOZp.cjs} +50 -49
  145. package/dist/{runGemini-eU8UOzfc.mjs → runGemini-CtWCVkj5.mjs} +49 -48
  146. package/dist/{runOpenClaw-D8RZiA1e.mjs → runOpenClaw-BBdjlViJ.mjs} +25 -24
  147. package/dist/{runOpenClaw-CYyFoGRZ.cjs → runOpenClaw-CH_9_RyZ.cjs} +26 -25
  148. package/dist/{sandbox-C8zfNX-4.cjs → sandbox-Bb5IMun3.cjs} +4 -4
  149. package/dist/{sandbox-DlPahdhl.mjs → sandbox-DGmXZ6Zz.mjs} +4 -4
  150. package/dist/selfCheck-BfK945YQ.mjs +86 -0
  151. package/dist/{selfCheck-D28nvuPJ.cjs → selfCheck-CccwNTTK.cjs} +37 -37
  152. package/dist/{send-DBpv-1eh.mjs → send-B6rHg8GT.mjs} +9 -8
  153. package/dist/{send-C58kX4qz.cjs → send-BpiXPkDo.cjs} +9 -8
  154. package/dist/{server-J5K6pOox.mjs → server-BkdAyHhC.mjs} +4 -4
  155. package/dist/{server-I_CETZzn.cjs → server-DHUzjApC.cjs} +6 -6
  156. package/dist/{sessionLock-DjE7O0LS.cjs → sessionLock-BFBReiKq.cjs} +134 -3
  157. package/dist/{sessionLock-C7Wg1RVd.mjs → sessionLock-Ca_bIo50.mjs} +121 -4
  158. package/dist/{sessionOps-CYjMT7Ad.mjs → sessionOps-CA2kpm66.mjs} +36 -5
  159. package/dist/{sessionOps-DGMpl9NB.cjs → sessionOps-DeWVqpe4.cjs} +36 -4
  160. package/dist/{sessionProvider-DVtxrOuM.cjs → sessionProvider-VFbtUmMR.cjs} +5 -5
  161. package/dist/{sessionProvider-TLiFn9kD.mjs → sessionProvider-g18IiK74.mjs} +5 -5
  162. package/dist/{sessionScanner-BZ1ZSn6I.cjs → sessionScanner-CGzsN8V6.cjs} +3 -3
  163. package/dist/{sessionScanner-CknV1IlN.mjs → sessionScanner-DDDud5re.mjs} +3 -3
  164. package/dist/{sessions-DU4bxkap.mjs → sessions-B4d50sCI.mjs} +36 -26
  165. package/dist/{sessions-CTkBKs5U.cjs → sessions-CKJPWFgu.cjs} +37 -25
  166. package/dist/{setupOfflineReconnection-DaOXnGuH.mjs → setupOfflineReconnection-CyPNgyCe.mjs} +2 -2
  167. package/dist/{setupOfflineReconnection-CQHNuP_0.cjs → setupOfflineReconnection-DPXRo_zf.cjs} +2 -2
  168. package/dist/{spawn-C0wZc03S.cjs → spawn-CgSJzzWS.cjs} +17 -16
  169. package/dist/{spawn-DdnYTtQe.mjs → spawn-CrYN_OOT.mjs} +18 -17
  170. package/dist/{spawnAgents-BjyU78Ue.cjs → spawnAgents-C1-4m7aN.cjs} +3 -1
  171. package/dist/{spawnAgents-D-7wMw-a.mjs → spawnAgents-DWCDYCQ1.mjs} +4 -2
  172. package/dist/{spawnHappyCLI-BJUd974I.cjs → spawnHappyCLI-CTy3p6V_.cjs} +1 -1
  173. package/dist/{spawnHappyCLI-CnyyJk74.mjs → spawnHappyCLI-DjbkiSH1.mjs} +1 -1
  174. package/dist/specialCommands-J3JFOq0J.cjs +60 -0
  175. package/dist/specialCommands-MXUN0wfI.mjs +54 -0
  176. package/dist/{startFileWatcher-DBboREco.cjs → startFileWatcher-BQs0cJA-.cjs} +1 -1
  177. package/dist/{startFileWatcher-CpO5Mwbr.mjs → startFileWatcher-Dedtu1vq.mjs} +1 -1
  178. package/dist/{defaultPermissionMode-DMTnlccv.mjs → startupSessionCreate-BKFU4v_h.mjs} +25 -6
  179. package/dist/{defaultPermissionMode-Dlm0q1m0.cjs → startupSessionCreate-Dxy3X4DG.cjs} +25 -7
  180. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-P9e7Sohm.mjs} +1 -1
  181. package/dist/{sync-6HFRJP1h.cjs → sync-DtWB7RzA.cjs} +1 -1
  182. package/dist/{sync-I8NYmycF.mjs → sync-eZkXnsW_.mjs} +1 -1
  183. package/dist/{systemPrompt-BDWj5QSL.cjs → systemPrompt-2XOpZ1j6.cjs} +1 -1
  184. package/dist/{systemPrompt-C1RSY_60.mjs → systemPrompt-Bn6g6aCH.mjs} +2 -2
  185. package/dist/{teams-eUD7ymif.cjs → teams-ecFay4Gn.cjs} +6 -6
  186. package/dist/{teams-GpLFbXXE.mjs → teams-nadkqrbW.mjs} +7 -7
  187. package/dist/{template-CEK8MEjo.mjs → template-BiTD-jI9.mjs} +1 -1
  188. package/dist/{time-umG7yHkb.mjs → time-CN3TuSVG.mjs} +1 -1
  189. package/dist/{time-BAJRbB6U.cjs → time-gPD_EmA-.cjs} +1 -1
  190. package/dist/{titleGenerator-dmFlxkRs.mjs → titleGenerator-DgzTQdn2.mjs} +1 -1
  191. package/dist/{titleGenerator-iqb2jOF1.cjs → titleGenerator-lT5ldPuN.cjs} +2 -2
  192. package/dist/{todo-DsR7WnQS.cjs → todo-B1VeMk5A.cjs} +5 -5
  193. package/dist/{todo-CT4AJ3sH.mjs → todo-BIxd7l2Q.mjs} +6 -6
  194. package/dist/{tools-30E66QL_.cjs → tools-DvqbLsCF.cjs} +1 -1
  195. package/dist/{tools-BOWazSD6.mjs → tools-zXJpxiG_.mjs} +1 -1
  196. package/dist/{uninstall-DImXs6VZ.mjs → uninstall-9htK6mb7.mjs} +3 -3
  197. package/dist/{uninstall-BtTc9hHa.cjs → uninstall-CvIOpwB5.cjs} +3 -3
  198. package/package.json +7 -7
  199. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  200. package/dist/selfCheck-4bcdHPFQ.mjs +0 -86
  201. package/dist/startupSessionCreate-BgaVuvQp.mjs +0 -24
  202. package/dist/startupSessionCreate-C1u2dtz8.cjs +0 -26
@@ -1,94 +1,96 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-B8AYkp5n.cjs');
4
- var logger = require('./logger-C3vZG6Q0.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-CLqo9R9Y.cjs');
3
+ var AcpBackend = require('./AcpBackend-dkRv9QHm.cjs');
4
+ var logger = require('./logger-BBRTTVsQ.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-AqWAqahm.cjs');
6
6
  var index = require('./index-BOe6dKnL.cjs');
7
- var deterministicJson = require('./deterministicJson-D0BrV1FD.cjs');
8
- var specialCommands = require('./specialCommands-BsvSoDhC.cjs');
9
- var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
10
- var configuration = require('./configuration-DyPW9mVa.cjs');
11
- var attachmentContent = require('./attachmentContent-BFRMLong.cjs');
12
- var piRuntime = require('./piRuntime--mQ43MSM.cjs');
7
+ var deterministicJson = require('./deterministicJson-BEygolBQ.cjs');
8
+ var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
9
+ var heldInput = require('./heldInput-BOtqFO2r.cjs');
10
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
11
+ var attachmentContent = require('./attachmentContent-NmVfKp-B.cjs');
12
+ var piRuntime = require('./piRuntime-Bd9-eq6M.cjs');
13
13
  var node_crypto = require('node:crypto');
14
14
  var path = require('node:path');
15
- var api = require('./api-BOqjYd5r.cjs');
16
- var client = require('./client-agH03Irm.cjs');
17
- var persistence = require('./persistence-CqtjFiD1.cjs');
18
- var machineMetadata = require('./machineMetadata-CAvFq1Jg.cjs');
19
- var createSessionMetadata = require('./createSessionMetadata-Dpg6bV6f.cjs');
20
- var setupOfflineReconnection = require('./setupOfflineReconnection-CQHNuP_0.cjs');
21
- var startupSessionCreate = require('./startupSessionCreate-C1u2dtz8.cjs');
22
- var controlClient = require('./controlClient-DvFaPsg6.cjs');
15
+ var api = require('./api-CXL6jp-p.cjs');
16
+ var client = require('./client-CMKGrnmT.cjs');
17
+ var registerKillSessionHandler = require('./registerKillSessionHandler-CA1FFr_F.cjs');
18
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
19
+ var machineMetadata = require('./machineMetadata-DnFNlrVK.cjs');
20
+ var createSessionMetadata = require('./createSessionMetadata-B_HZCDj_.cjs');
21
+ var setupOfflineReconnection = require('./setupOfflineReconnection-DPXRo_zf.cjs');
22
+ var startupSessionCreate = require('./startupSessionCreate-Dxy3X4DG.cjs');
23
+ var controlClient = require('./controlClient-BRk65BRO.cjs');
23
24
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
24
- var sessionLock = require('./sessionLock-DjE7O0LS.cjs');
25
- var acpSessionResume = require('./acpSessionResume-OuYlLGxL.cjs');
25
+ var sessionLock = require('./sessionLock-BFBReiKq.cjs');
26
+ var acpSessionResume = require('./acpSessionResume-CZao6QEd.cjs');
26
27
  var streamRelay = require('./streamRelay-D9a4cBEa.cjs');
27
28
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
28
- var BasePermissionHandler = require('./BasePermissionHandler-C8UEcFz0.cjs');
29
- var titleGenerator = require('./titleGenerator-iqb2jOF1.cjs');
29
+ var BasePermissionHandler = require('./BasePermissionHandler-CpSugp7Z.cjs');
30
+ var titleGenerator = require('./titleGenerator-lT5ldPuN.cjs');
30
31
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
31
32
  var node_fs = require('node:fs');
32
33
  var os = require('node:os');
33
34
  require('node:child_process');
34
35
  require('@agentclientprotocol/sdk');
35
- require('./time-BAJRbB6U.cjs');
36
+ require('./time-gPD_EmA-.cjs');
36
37
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
37
38
  require('./processTree-CMHWlVse.cjs');
38
- require('./package-Gnf_935w.cjs');
39
+ require('./package-DrY090nZ.cjs');
39
40
  require('chalk');
40
41
  require('node:util');
41
42
  require('@paralleldrive/cuid2');
42
43
  require('zod');
43
44
  require('./prompt-Bof2aQkI.cjs');
44
- require('./reportProgressTool-CaJ8EwLq.cjs');
45
- require('./client-DmY03OZZ.cjs');
45
+ require('./reportProgressTool-CvPGov1F.cjs');
46
+ require('./client-Bffkrs5p.cjs');
46
47
  require('./precheckCompat-CWOi5c9L.cjs');
47
48
  require('./agentGuidance-BtBx2xxE.cjs');
48
49
  require('./trimIdent-4gvk9Wk6.cjs');
49
50
  require('./pi-DlsrPCTa.cjs');
50
51
  require('./fileStore-7qhnbs6N.cjs');
51
52
  require('node:fs/promises');
52
- require('./client-C2HcMqRF.cjs');
53
- require('./context-2xDvjkQp.cjs');
54
- require('./sessionOps-DGMpl9NB.cjs');
53
+ require('./client-CARZ_lNS.cjs');
54
+ require('./context-BdZssgF0.cjs');
55
+ require('./sessionOps-DeWVqpe4.cjs');
55
56
  require('axios');
56
57
  require('socket.io-client');
57
58
  require('./backgroundTaskActivity-CBvUdj39.cjs');
58
59
  require('./resources-BZ_Be0qM.cjs');
59
- require('./tools-30E66QL_.cjs');
60
- require('./peerTools-C1E5cQ86.cjs');
60
+ require('./tools-DvqbLsCF.cjs');
61
+ require('./peerTools-5ZM4spcZ.cjs');
61
62
  require('./ids-B6ZC0HGt.cjs');
62
- require('./remoteSessionClient-DgUMfPW4.cjs');
63
+ require('./remoteSessionClient-DGFI__5Z.cjs');
63
64
  require('@modelcontextprotocol/sdk/server/mcp.js');
64
65
  require('node:http');
65
66
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
66
67
  require('./limits-C-a7gr04.cjs');
67
- require('./downloadTarget-CuhBVvuC.cjs');
68
+ require('./downloadTarget-DS0zT2AU.cjs');
68
69
  require('./terminals-B_bfC9c2.cjs');
69
70
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
70
71
  require('./tmuxSocket-D-Xt6Vn-.cjs');
71
- require('./bootstrap-eJ1l7VYl.cjs');
72
+ require('./bootstrap-DBJB0y-H.cjs');
72
73
  require('./webPanels-FCgFKvVe.cjs');
73
- require('./pushNotifications-Bb-QSqXw.cjs');
74
+ require('./pushNotifications-CfspRcl-.cjs');
74
75
  require('./previewPath-B0rBdhy1.cjs');
75
76
  require('crypto');
76
- require('node:events');
77
- require('tweetnacl');
78
- require('./registerCommonHandlers-CIs6H2DV.cjs');
77
+ require('./lidState-q_XFYg33.cjs');
78
+ require('os');
79
79
  require('child_process');
80
+ require('node:events');
81
+ require('./registerCommonHandlers-Beun-cQv.cjs');
80
82
  require('util');
81
83
  require('fs/promises');
82
84
  require('path');
83
85
  require('cross-spawn');
84
- require('os');
86
+ require('./sync-DtWB7RzA.cjs');
87
+ require('tweetnacl');
85
88
  require('./types-CRS-srZK.cjs');
86
- require('./lidState-d1vgQ3n7.cjs');
87
- require('./sync-6HFRJP1h.cjs');
88
89
  require('./detectCLI-BuYR_Qxe.cjs');
89
90
  require('fs');
90
- require('./localHappyAgentAuth-DucSnCg3.cjs');
91
+ require('./localHappyAgentAuth-CKNW-MXw.cjs');
91
92
  require('./fsMkdir-0K3yENml.cjs');
93
+ require('./cliUpdate-DsKXPFYp.cjs');
92
94
  require('./processTreeSnapshot-mDbnuojn.cjs');
93
95
  require('url');
94
96
  require('node:module');
@@ -154,9 +156,15 @@ function oneLine(text) {
154
156
  }
155
157
  function describeAcpTurnFailure(agentName, error) {
156
158
  if (AcpBackend.isAgentExitError(error)) {
157
- return { message: `Process exited unexpectedly: ${oneLine(error.message)}`, exited: true };
159
+ const detail2 = oneLine(error.message);
160
+ return { message: `Process exited unexpectedly: ${detail2}`, error: detail2, exited: true };
158
161
  }
159
- return { message: `${agentName} error: ${oneLine(detailOf(error))}`, exited: false };
162
+ const detail = oneLine(detailOf(error));
163
+ return { message: `${agentName} error: ${detail}`, error: detail, exited: false };
164
+ }
165
+
166
+ function acpExitIntent(exit) {
167
+ return exit?.intent ?? "offline";
160
168
  }
161
169
 
162
170
  const OUT_OF_TURN_QUIET_MS = 6e4;
@@ -824,7 +832,9 @@ async function runAcp(opts) {
824
832
  machineId: settings.machineId,
825
833
  startedBy: opts.startedBy,
826
834
  sandbox: settings.sandboxConfig,
827
- capabilities: [index.PROMPT_QUEUE_CAPABILITY, index.PROJECT_SESSION_CAPABILITY]
835
+ // B-852: a daemon-spawned pi session reports when it is quiescent, so the
836
+ // daemon can restart it onto new code after an upgrade.
837
+ capabilities: [index.PROMPT_QUEUE_CAPABILITY, index.PROJECT_SESSION_CAPABILITY, ...opts.agentName === "pi" && opts.startedBy === "daemon" ? [sessionLock.AUTO_RESTART_CAPABILITY] : []]
828
838
  });
829
839
  metadata.attachmentKinds = [];
830
840
  if (opts.agentName === "gemini") metadata.configuredModel = readGeminiConfiguredModel();
@@ -909,7 +919,7 @@ async function runAcp(opts) {
909
919
  send: (frame) => session.sendStreamFrame(frame)
910
920
  });
911
921
  const sessionManager = new AcpSessionManager.AcpSessionManager(streamingEnabled ? { stream: streamRelay$1 } : {});
912
- const messageQueue = new specialCommands.MessageQueue2((mode) => deterministicJson.hashObject(mode));
922
+ const messageQueue = new registerKillSessionHandler.MessageQueue2((mode) => deterministicJson.hashObject(mode));
913
923
  function attachPromptQueueDrain(client) {
914
924
  const drain = client.attachPromptQueueDrain({
915
925
  isIdle: () => messageQueue.size() === 0 && messageQueue.isWaiting()
@@ -917,6 +927,11 @@ async function runAcp(opts) {
917
927
  messageQueue.setOnWait(() => drain.onIdle());
918
928
  }
919
929
  attachPromptQueueDrain(session);
930
+ messageQueue.setOnDiscard((entries) => {
931
+ const keys = entries.map((entry) => entry.sourceId).filter((key) => typeof key === "string");
932
+ if (keys.length > 0) session.sendQueueCancelReason(keys, entries[0].reason);
933
+ });
934
+ const heldInput$1 = new heldInput.HeldInput((keys, reason) => session.sendQueueCancelReason(keys, reason));
920
935
  let currentPermissionMode;
921
936
  let currentModel;
922
937
  let modeSelector = null;
@@ -1011,7 +1026,16 @@ async function runAcp(opts) {
1011
1026
  session.keepAlive(thinking, "remote");
1012
1027
  };
1013
1028
  let acpSessionId = null;
1029
+ let piProbe = null;
1014
1030
  let shouldExit = false;
1031
+ let exit = null;
1032
+ const beginExit = (intent, reason) => {
1033
+ if (!exit) exit = { intent, reason };
1034
+ shouldExit = true;
1035
+ heldInput$1.drop(exit.reason);
1036
+ messageQueue.discardAll(exit.reason);
1037
+ messageQueue.close();
1038
+ };
1015
1039
  let abortController = new AbortController();
1016
1040
  let turnCancelled = false;
1017
1041
  let backendStarted = false;
@@ -1021,8 +1045,8 @@ async function runAcp(opts) {
1021
1045
  const stopRunnerFromBackendStatus = (status, detail) => {
1022
1046
  const reason = detail ? `${opts.agentName} backend ${status}: ${detail}` : `${opts.agentName} backend ${status}`;
1023
1047
  logger.logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
1024
- shouldExit = true;
1025
- messageQueue.close();
1048
+ session.sendSessionEvent({ type: "message", message: reason });
1049
+ beginExit("offline", "failed");
1026
1050
  };
1027
1051
  const sendEnvelopes = (envelopes) => {
1028
1052
  for (const envelope of envelopes) {
@@ -1331,7 +1355,7 @@ async function runAcp(opts) {
1331
1355
  };
1332
1356
  backend.onMessage(onBackendMessage);
1333
1357
  const titleGenerator$1 = new titleGenerator.TitleGenerator(session);
1334
- agentAttachments.registerAgentAttachmentDownloads(session);
1358
+ heldInput.registerAgentAttachmentDownloads(session);
1335
1359
  let userMessageDelivery = Promise.resolve();
1336
1360
  session.onUserMessage((message) => {
1337
1361
  const downloads = session.drainAttachmentsForUserMessage();
@@ -1380,6 +1404,7 @@ async function runAcp(opts) {
1380
1404
  }).catch(() => {
1381
1405
  logger.logger.warn("[ACP] Failed to prepare user attachments");
1382
1406
  session.sendSessionEvent({ type: "message", message: "Could not prepare this message. Please send it again." });
1407
+ if (message.localKey) session.sendQueueCancelReason([message.localKey], exit?.reason ?? "failed");
1383
1408
  });
1384
1409
  });
1385
1410
  session.keepAlive(thinking, "remote");
@@ -1418,11 +1443,16 @@ async function runAcp(opts) {
1418
1443
  return { mode };
1419
1444
  }
1420
1445
  );
1421
- const disposeTermination = specialCommands.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1422
- shouldExit = true;
1423
- messageQueue.close();
1446
+ const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1447
+ beginExit("archive", "aborted");
1424
1448
  await handleAbort();
1425
- }, session, { processSignals: true });
1449
+ }, session, {
1450
+ processSignals: true,
1451
+ onSignal: async () => {
1452
+ beginExit("offline", "restarted");
1453
+ await handleAbort();
1454
+ }
1455
+ });
1426
1456
  const afterSessionStarted = async (requestedModel) => {
1427
1457
  if (requestedModel) {
1428
1458
  await switchModelIfRequested(requestedModel);
@@ -1476,6 +1506,36 @@ async function runAcp(opts) {
1476
1506
  logger.logger.debug(`[${opts.agentName}] Resume of agent session ${resumeId}: ${started.resumed ?? "new"}${started.loadFailure ? ` (${started.loadFailure})` : ""}`);
1477
1507
  if (started.resumed !== "loaded") session.sendSessionEvent({ type: "message", message: acpSessionResume.piRestartNotice(opts.agentName, "resume", started) });
1478
1508
  }
1509
+ if (opts.agentName === "pi" && opts.startedBy === "daemon") {
1510
+ const piSnapshot = () => {
1511
+ const meta = session.getMetadata();
1512
+ return {
1513
+ flavor: "acp",
1514
+ resumable: typeof meta?.piSessionId === "string" && meta.piSessionId.length > 0,
1515
+ uiSession: true,
1516
+ ...isAssistantVariant ? { variant: "assistant" } : {},
1517
+ ...process.env.HAPPY_SPAWNED_BY ? { spawnedBy: process.env.HAPPY_SPAWNED_BY } : {},
1518
+ ...meta?.tags ? { tags: meta.tags } : {},
1519
+ keepAwake: false,
1520
+ thinking,
1521
+ queuedInputs: messageQueue.size() + (session.promptQueueHasPending() ? 1 : 0),
1522
+ waitingForInput: messageQueue.isWaiting(),
1523
+ pendingRequests: Object.keys(session.getAgentState()?.requests ?? {}).length,
1524
+ backgroundTasks: 0,
1525
+ lastActivityAt: session.lastActivityAt,
1526
+ ...shouldExit ? { exiting: true } : {}
1527
+ };
1528
+ };
1529
+ piProbe = new startupSessionCreate.HibernationProbe({
1530
+ checkMs: persistence.resolveCheckMs(),
1531
+ snapshot: piSnapshot,
1532
+ ask: (report) => controlClient.checkDaemonHibernation({ sessionId: session.sessionId, pid: process.pid, report }),
1533
+ commit: async () => false
1534
+ });
1535
+ piProbe.start();
1536
+ }
1537
+ const autoUpdated = sessionLock.takeAutoRestartedEvent(process.env);
1538
+ if (autoUpdated) session.sendSessionEvent(autoUpdated);
1479
1539
  if (verbose) {
1480
1540
  if (!sawSlashCommands) {
1481
1541
  logAcp("muted", `Outgoing slash commands from ${opts.agentName}: not reported yet`);
@@ -1499,6 +1559,7 @@ async function runAcp(opts) {
1499
1559
  }
1500
1560
  break;
1501
1561
  }
1562
+ heldInput$1.hold(batch.sourceIds);
1502
1563
  logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
1503
1564
  endOutOfTurn("prompt");
1504
1565
  sendEnvelopes(sessionManager.startTurn());
@@ -1528,6 +1589,13 @@ async function runAcp(opts) {
1528
1589
  happyHomeDir: configuration.configuration.happyHomeDir,
1529
1590
  sessionId: session.sessionId
1530
1591
  }) : [];
1592
+ if (shouldExit) {
1593
+ sendEnvelopes(sessionManager.endTurn("cancelled"));
1594
+ streamRelay$1.endTurn();
1595
+ setThinking(false);
1596
+ break;
1597
+ }
1598
+ heldInput$1.delivered();
1531
1599
  promptInFlight = true;
1532
1600
  let outcome;
1533
1601
  try {
@@ -1554,7 +1622,8 @@ async function runAcp(opts) {
1554
1622
  } catch (error) {
1555
1623
  const failure = describeAcpTurnFailure(opts.agentName, error);
1556
1624
  session.sendSessionEvent({ type: "message", message: failure.message });
1557
- sendEnvelopes(sessionManager.endTurn("failed"));
1625
+ heldInput$1.drop("failed");
1626
+ sendEnvelopes(sessionManager.endTurn("failed", failure.error));
1558
1627
  streamRelay$1.endTurn();
1559
1628
  setThinking(false);
1560
1629
  session.sendSessionEvent({ type: "ready" });
@@ -1566,6 +1635,7 @@ async function runAcp(opts) {
1566
1635
  }
1567
1636
  } finally {
1568
1637
  disposeTermination?.();
1638
+ piProbe?.stop();
1569
1639
  setThinking(false);
1570
1640
  clearInterval(keepAliveInterval);
1571
1641
  streamRelay$1.endTurn();
@@ -1592,15 +1662,27 @@ async function runAcp(opts) {
1592
1662
  }
1593
1663
  try {
1594
1664
  session.closePromptQueueDrain();
1595
- session.updateMetadata((currentMetadata) => ({
1596
- ...currentMetadata,
1597
- lifecycleState: "archived",
1598
- lifecycleStateSince: Date.now(),
1599
- archivedBy: "cli",
1600
- archiveReason: "Session ended"
1601
- }));
1665
+ heldInput$1.drop(exit?.reason ?? "failed");
1666
+ messageQueue.discardAll(exit?.reason ?? "failed");
1667
+ const intent = acpExitIntent(exit);
1668
+ if (intent === "archive") {
1669
+ session.updateMetadata((currentMetadata) => ({
1670
+ ...currentMetadata,
1671
+ lifecycleState: "archived",
1672
+ lifecycleStateSince: Date.now(),
1673
+ archivedBy: "cli",
1674
+ archiveReason: "Session ended"
1675
+ }));
1676
+ }
1602
1677
  session.sendSessionDeath();
1603
1678
  await session.flush();
1679
+ if (intent === "offline") {
1680
+ try {
1681
+ await api$1.deactivateSession(session.sessionId);
1682
+ } catch (error) {
1683
+ logger.logger.debug(`[${opts.agentName}] deactivate on exit failed:`, error);
1684
+ }
1685
+ }
1604
1686
  await session.close();
1605
1687
  } catch (error) {
1606
1688
  logger.logger.debug(`[${opts.agentName}] Session close failed:`, error);
@@ -1,4 +1,4 @@
1
- import { p as packageJson } from './package-CwB8rFJt.mjs';
1
+ import { p as packageJson } from './package-C6uiXULx.mjs';
2
2
  import module$1 from 'node:module';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { readdir, rm } from 'node:fs/promises';
@@ -57,10 +57,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
57
57
  async function run(args) {
58
58
  enableCompileCacheIfPossible(packageJson.version);
59
59
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
60
- const { selfCheckMain } = await import('./selfCheck-4bcdHPFQ.mjs');
60
+ const { selfCheckMain } = await import('./selfCheck-BfK945YQ.mjs');
61
61
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
62
62
  }
63
- const { main } = await import('./main-IPhaImjm.mjs');
63
+ const { main } = await import('./main-DO7nRvhf.mjs');
64
64
  await main();
65
65
  }
66
66
  void run(process.argv.slice(2));
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- require('./package-Gnf_935w.cjs');
4
- require('./index-DoXbGEAi.cjs');
3
+ require('./package-DrY090nZ.cjs');
4
+ require('./index-CwRW11hT.cjs');
5
5
  require('node:module');
6
6
  require('node:fs');
7
7
  require('node:fs/promises');
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import './package-CwB8rFJt.mjs';
2
- import './index-B1OxWiNG.mjs';
1
+ import './package-C6uiXULx.mjs';
2
+ import './index-rNTX33in.mjs';
3
3
  import 'node:module';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-C3vZG6Q0.cjs');
3
+ var logger = require('./logger-BBRTTVsQ.cjs');
4
4
  var require$$0 = require('fs');
5
5
  var child_process = require('child_process');
6
6
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
7
7
  var os = require('os');
8
8
  require('chalk');
9
9
  require('node:util');
10
- require('./configuration-DyPW9mVa.cjs');
10
+ require('./configuration-Dt5lKW3P.cjs');
11
11
  require('node:fs');
12
12
  require('node:os');
13
13
  require('node:path');
14
- require('./package-Gnf_935w.cjs');
14
+ require('./package-DrY090nZ.cjs');
15
15
  require('node:fs/promises');
16
16
 
17
17
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,15 +1,15 @@
1
- import { l as logger } from './logger-RpzJ4d8V.mjs';
1
+ import { l as logger } from './logger-CL7pin9b.mjs';
2
2
  import { existsSync, writeFileSync, chmodSync } from 'fs';
3
3
  import { execSync } from 'child_process';
4
4
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
5
5
  import os from 'os';
6
6
  import 'chalk';
7
7
  import 'node:util';
8
- import './configuration-BZHpFD7K.mjs';
8
+ import './configuration-Dechcvd-.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:os';
11
11
  import 'node:path';
12
- import './package-CwB8rFJt.mjs';
12
+ import './package-C6uiXULx.mjs';
13
13
  import 'node:fs/promises';
14
14
 
15
15
  const PLIST_LABEL = "com.happy-cli.daemon";
package/dist/lib.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-BOqjYd5r.cjs');
4
- var logger = require('./logger-C3vZG6Q0.cjs');
5
- var configuration = require('./configuration-DyPW9mVa.cjs');
3
+ var api = require('./api-CXL6jp-p.cjs');
4
+ var logger = require('./logger-BBRTTVsQ.cjs');
5
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
6
6
  var types = require('./types-CRS-srZK.cjs');
7
7
  require('axios');
8
- require('./lidState-d1vgQ3n7.cjs');
8
+ require('./lidState-q_XFYg33.cjs');
9
9
  require('./authRelay-Dy1qU9td.cjs');
10
10
  require('node:crypto');
11
11
  require('tweetnacl');
@@ -13,14 +13,14 @@ require('os');
13
13
  require('child_process');
14
14
  require('node:events');
15
15
  require('socket.io-client');
16
- require('./pushNotifications-Bb-QSqXw.cjs');
16
+ require('./pushNotifications-CfspRcl-.cjs');
17
17
  require('zod');
18
18
  require('./index-BOe6dKnL.cjs');
19
19
  require('@paralleldrive/cuid2');
20
20
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
21
21
  require('./limits-C-a7gr04.cjs');
22
- require('./time-BAJRbB6U.cjs');
23
- require('./registerCommonHandlers-CIs6H2DV.cjs');
22
+ require('./time-gPD_EmA-.cjs');
23
+ require('./registerCommonHandlers-Beun-cQv.cjs');
24
24
  require('util');
25
25
  require('fs/promises');
26
26
  require('crypto');
@@ -28,17 +28,17 @@ require('path');
28
28
  require('cross-spawn');
29
29
  require('./projectPath-C3ioB4Bu.cjs');
30
30
  require('url');
31
- require('./sync-6HFRJP1h.cjs');
31
+ require('./sync-DtWB7RzA.cjs');
32
32
  require('./backgroundTaskActivity-CBvUdj39.cjs');
33
- require('./controlClient-DvFaPsg6.cjs');
34
- require('./persistence-CqtjFiD1.cjs');
33
+ require('./controlClient-BRk65BRO.cjs');
34
+ require('./persistence-Bl5S3TLB.cjs');
35
35
  require('node:fs/promises');
36
36
  require('node:fs');
37
37
  require('chalk');
38
38
  require('node:util');
39
39
  require('node:path');
40
40
  require('node:os');
41
- require('./package-Gnf_935w.cjs');
41
+ require('./package-DrY090nZ.cjs');
42
42
 
43
43
 
44
44
 
package/dist/lib.d.cts CHANGED
@@ -616,6 +616,19 @@ declare const DaemonStateSchema: z$1.ZodObject<{
616
616
  rpcAvailable: z$1.ZodBoolean;
617
617
  detectedAt: z$1.ZodNumber;
618
618
  }, z$1.core.$loose>>;
619
+ autoRestart: z$1.ZodOptional<z$1.ZodObject<{
620
+ enabled: z$1.ZodBoolean;
621
+ rpcAvailable: z$1.ZodBoolean;
622
+ detectedAt: z$1.ZodNumber;
623
+ sessions: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{
624
+ state: z$1.ZodString;
625
+ reason: z$1.ZodOptional<z$1.ZodString>;
626
+ since: z$1.ZodNumber;
627
+ target: z$1.ZodString;
628
+ offline: z$1.ZodOptional<z$1.ZodBoolean>;
629
+ retryAt: z$1.ZodOptional<z$1.ZodNumber>;
630
+ }, z$1.core.$strip>>;
631
+ }, z$1.core.$loose>>;
619
632
  webPanels: z$1.ZodOptional<z$1.ZodObject<{
620
633
  panels: z$1.ZodArray<z$1.ZodObject<{
621
634
  id: z$1.ZodString;
@@ -720,6 +733,14 @@ type Metadata = {
720
733
  * absent = this wrapper cannot tell. "Follow latest" never overrides it.
721
734
  */
722
735
  configuredModel?: string | null;
736
+ /**
737
+ * B-844c: the explicit model this wrapper keeps applying to turns that carry
738
+ * no `model` (sticky per-session override, e.g. an earlier pick). null =
739
+ * none, turns run the machine default; absent = this wrapper cannot tell.
740
+ * The web sends `model: null` to clear it when its picker follows the
741
+ * machine config.
742
+ */
743
+ stickyModel?: string | null;
723
744
  operatingModes?: Array<{
724
745
  code: string;
725
746
  value: string;
@@ -1024,6 +1045,13 @@ declare class RpcHandlerManager {
1024
1045
  private getPrefixedMethod;
1025
1046
  }
1026
1047
 
1048
+ /**
1049
+ * Why the CLI dropped a user message it never ran — the `queue-cancel` reason
1050
+ * (B-332). `failed` (B-854): taken off the queue, but the runner could not hand
1051
+ * it to the agent (a pre-flight check or the agent's start failed).
1052
+ */
1053
+ type QueueDiscardReason = 'cleared' | 'aborted' | 'restarted' | 'failed';
1054
+
1027
1055
  /**
1028
1056
  * B-509 —— server-side prompt queue drain (pure state machine, no I/O).
1029
1057
  *
@@ -1326,7 +1354,7 @@ declare class ApiSessionClient extends EventEmitter {
1326
1354
  private pushCommittedMessagesToRelay;
1327
1355
  private enqueueMessage;
1328
1356
  /** B-332: emit a queue-cancel tombstone, mirroring the web's own signal. */
1329
- sendQueueCancelReason(localKeys: string[], reason: 'cleared' | 'aborted' | 'restarted'): void;
1357
+ sendQueueCancelReason(localKeys: string[], reason: QueueDiscardReason): void;
1330
1358
  /**
1331
1359
  * B-332 site ③: find queued user input this wrapper destroyed (it was still
1332
1360
  * in the previous wrapper's in-memory queue when it died) and tell the web.
@@ -1524,9 +1552,29 @@ declare class ApiSessionClient extends EventEmitter {
1524
1552
  */
1525
1553
  flush(): Promise<void>;
1526
1554
  close(): Promise<void>;
1555
+ /**
1556
+ * B-854: set by close(). The socket's own `disconnect` ("io client
1557
+ * disconnect") must not reconnect a client its owner closed: a runner that
1558
+ * ends without `process.exit` (ACP) stayed alive on that socket — still
1559
+ * "active" for the daemon and the web, with no loop to run anything.
1560
+ */
1561
+ private closedByClient;
1527
1562
  private startSmartReconnect;
1528
1563
  }
1529
1564
 
1565
+ /** What the daemon publishes per behind session (spec §4). */
1566
+ type AutoRestartSessionState = 'waiting' | 'restarting' | 'failed' | 'manual';
1567
+ interface AutoRestartSessionStatus {
1568
+ state: AutoRestartSessionState;
1569
+ reason?: string;
1570
+ since: number;
1571
+ target: string;
1572
+ /** `failed` only: the old wrapper is stopped and no new one came up, so the session is offline (spec §3). */
1573
+ offline?: boolean;
1574
+ /** `failed` + `offline` only: the daemon retries once by itself at this time; absent = left to Restore. */
1575
+ retryAt?: number;
1576
+ }
1577
+
1530
1578
  /**
1531
1579
  * B-510: machine web panels — local web pages a person may need to look at
1532
1580
  * (noVNC, an agent-browser dashboard, Grafana, a dev server), declared ONLY in
@@ -1945,6 +1993,8 @@ declare class ApiMachineClient {
1945
1993
  private claudeAuthState;
1946
1994
  /** B-587: the machine's hibernation threshold, published as a capability. */
1947
1995
  private agentHibernationIdleMs;
1996
+ /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
1997
+ private autoRestart;
1948
1998
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
1949
1999
  private webPanels;
1950
2000
  private webPanelsSignatureSent;
@@ -2036,6 +2086,16 @@ declare class ApiMachineClient {
2036
2086
  */
2037
2087
  setWebPanels(panels: WebPanel[]): Promise<void>;
2038
2088
  private publishAgentHibernation;
2089
+ /**
2090
+ * B-852: the machine page's「会话自动更新」switch (`auto-restart-set`) and
2091
+ * the `daemonState.autoRestart` capability + per-session status. Call
2092
+ * before connect().
2093
+ */
2094
+ setAutoRestartHandlers(initialEnabled: boolean, set: (enabled: boolean) => Promise<boolean>): void;
2095
+ /** B-852: the scheduler's per-session status changed (already signature-deduped). */
2096
+ setAutoRestartSessions(sessions: Record<string, AutoRestartSessionStatus>): Promise<void>;
2097
+ private autoRestartState;
2098
+ private publishAutoRestart;
2039
2099
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
2040
2100
  setClaudeAuthHandlers(handlers: {
2041
2101
  probe: () => Promise<ClaudeAuthState>;