very-happy-cli 0.2.189 → 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 (199) hide show
  1. package/dist/{AcpBackend-fj16v_cf.mjs → AcpBackend-Dd1h-Rgt.mjs} +3 -3
  2. package/dist/{AcpBackend-DRPJ2g9G.cjs → AcpBackend-dkRv9QHm.cjs} +3 -3
  3. package/dist/{AcpSessionManager-DM-KKg6v.cjs → AcpSessionManager-AqWAqahm.cjs} +1 -1
  4. package/dist/{AcpSessionManager-BZPmUDL5.mjs → AcpSessionManager-QBZ-CIf7.mjs} +2 -2
  5. package/dist/{BasePermissionHandler-CVtH-snr.mjs → BasePermissionHandler-CLp1ge-4.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-DjM16uJz.cjs → BasePermissionHandler-CpSugp7Z.cjs} +1 -1
  7. package/dist/{acpSessionResume-2BTMsB7_.cjs → acpSessionResume-CZao6QEd.cjs} +1 -1
  8. package/dist/{acpSessionResume-Dxl1LRAT.mjs → acpSessionResume-CcpDuIO5.mjs} +1 -1
  9. package/dist/{agentHome-CHctmMzZ.mjs → agentHome-BJGRA2Kx.mjs} +4 -4
  10. package/dist/{agentHome-W17n1gnH.cjs → agentHome-fIUqT-pn.cjs} +4 -4
  11. package/dist/{api-BDuuyys8.cjs → api-CXL6jp-p.cjs} +18 -9
  12. package/dist/{api-B0yN68XH.mjs → api-Dw8gFsQi.mjs} +19 -10
  13. package/dist/{apiMachine-mc9CsKuS.mjs → apiMachine-BBNEtjf7.mjs} +56 -15
  14. package/dist/{apiMachine-iddD-F19.cjs → apiMachine-C6UqHoPF.cjs} +55 -14
  15. package/dist/{attachmentContent-CcIdMfAx.mjs → attachmentContent-CC4yIrSm.mjs} +2 -2
  16. package/dist/{attachmentContent-Cc5b7TPr.cjs → attachmentContent-NmVfKp-B.cjs} +2 -2
  17. package/dist/{auth-DQKSpaEf.cjs → auth-Bb_SL2os.cjs} +5 -5
  18. package/dist/{auth-DNAgkUkB.mjs → auth-Bh6SUoGi.mjs} +8 -8
  19. package/dist/{auth-CyrVvWHF.mjs → auth-Bj0psrD2.mjs} +5 -5
  20. package/dist/{auth-B7tVmyfX.cjs → auth-DKa4MsAi.cjs} +8 -8
  21. package/dist/{auto-CetlumDo.cjs → auto-C9Qohh0P.cjs} +15 -15
  22. package/dist/{auto-BklCipw1.mjs → auto-DK7pbCnV.mjs} +18 -18
  23. package/dist/{bootstrap-DfXwkUQb.mjs → bootstrap-Ct9Nb4sv.mjs} +2 -2
  24. package/dist/{bootstrap-CDY-Vz8q.cjs → bootstrap-DBJB0y-H.cjs} +2 -2
  25. package/dist/{browser-vb0k1zfI.mjs → browser-BGxDRhHy.mjs} +1 -1
  26. package/dist/{browser-D1yzC0Tu.cjs → browser-CLJWcodR.cjs} +1 -1
  27. package/dist/{claudeLocal-2dJIiTIq.cjs → claudeLocal-B6YDYlnY.cjs} +4 -4
  28. package/dist/{claudeLocal-Bid_rC_v.mjs → claudeLocal-Ux31hZyC.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-5pzpETxd.mjs → claudeLocalLauncher-D06QijMw.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-Jm5oQX5Z.cjs → claudeLocalLauncher-DFvmF8rC.cjs} +9 -9
  31. package/dist/{claudeSessionFork-DzecSBO4.mjs → claudeSessionFork-D2GI7P59.mjs} +1 -1
  32. package/dist/{claudeSessionFork-DsbcuDEJ.cjs → claudeSessionFork-DTLZ2rek.cjs} +1 -1
  33. package/dist/{client-D0aYWt53.cjs → client-Bffkrs5p.cjs} +2 -2
  34. package/dist/{client-BNmFaRXZ.cjs → client-CARZ_lNS.cjs} +3 -3
  35. package/dist/{client-DIfxYk7B.cjs → client-CMKGrnmT.cjs} +2 -2
  36. package/dist/{client-B161HwAk.mjs → client-CnGNYidN.mjs} +2 -2
  37. package/dist/{client-C9Ecbtko.mjs → client-CtL0Vtww.mjs} +4 -4
  38. package/dist/{client-CvjjadIE.mjs → client-DZkBUoh9.mjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +15 -15
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-BlVmpjR-.mjs → codexAppServerClient-CLc5nhLT.mjs} +13 -6
  42. package/dist/{codexAppServerClient-CO9f4Jr8.cjs → codexAppServerClient-CpT9F6EM.cjs} +13 -6
  43. package/dist/{codexCommand-BfoRP6E9.cjs → codexCommand-39kH99SJ.cjs} +72 -48
  44. package/dist/{codexCommand-CAMR4g5o.mjs → codexCommand-Dliq3EBv.mjs} +69 -45
  45. package/dist/{codexTermination-IrLZQzKC.cjs → codexTermination-ByW7tRjr.cjs} +1 -1
  46. package/dist/{codexTermination-BvGlN02_.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-BGFqQGvh.cjs → config-CeIzCsfj.cjs} +3 -3
  50. package/dist/{config-CtMgGPvf.mjs → config-CxSsGO1Z.mjs} +3 -3
  51. package/dist/{configuration-1FabKklB.mjs → configuration-Dechcvd-.mjs} +1 -1
  52. package/dist/{configuration-C0ctLGW2.cjs → configuration-Dt5lKW3P.cjs} +1 -1
  53. package/dist/{connect-DSw-2f52.cjs → connect-NPDzIVC6.cjs} +12 -12
  54. package/dist/{connect-0lSugpjf.mjs → connect-UwQHvCpR.mjs} +13 -13
  55. package/dist/{context-D-hEk5pC.cjs → context-BdZssgF0.cjs} +1 -1
  56. package/dist/{context-BgxbXWKS.mjs → context-C9JbJoNe.mjs} +1 -1
  57. package/dist/{controlClient-F7hAEEy2.cjs → controlClient-BRk65BRO.cjs} +3 -3
  58. package/dist/{controlClient-DwNnNAUx.mjs → controlClient-D7NGfmtq.mjs} +3 -3
  59. package/dist/{createSessionMetadata-DezS33OM.cjs → createSessionMetadata-B_HZCDj_.cjs} +2 -2
  60. package/dist/{createSessionMetadata-CG6Klinp.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-D0LU_XbO.cjs → deterministicJson-BEygolBQ.cjs} +12 -12
  64. package/dist/{deterministicJson-BMwgK21e.mjs → deterministicJson-DNmMVhFu.mjs} +13 -13
  65. package/dist/{doctor-wVNvRarN.cjs → doctor-B9lW1WlG.cjs} +7 -7
  66. package/dist/{doctor-D16hySse.mjs → doctor-BdBi7TFZ.mjs} +7 -7
  67. package/dist/{downloadTarget-C6tqaXGm.mjs → downloadTarget-CGojGjaN.mjs} +6 -6
  68. package/dist/{downloadTarget-aNcCxVRL.cjs → downloadTarget-DS0zT2AU.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-DZq8bvsp.mjs → ensureDaemonRunning-BOdbryDM.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-CIghxgDR.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-BNnD7EuD.mjs → handleResumeCommand-CgLzBYne.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CMUTygsm.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-De02DNu5.cjs → index-Bs5FD8JF.cjs} +4 -4
  78. package/dist/{index-BuiG8hmg.mjs → index-CBHfkQNY.mjs} +133 -54
  79. package/dist/{index-4TpmBb2Q.cjs → index-CwRW11hT.cjs} +3 -3
  80. package/dist/{index-Df0bc_et.mjs → index-DUByZsKe.mjs} +4 -4
  81. package/dist/{index-B81qV_F_.cjs → index-DXSIi6j_.cjs} +4 -4
  82. package/dist/{index-BCQr-5Ei.mjs → index-Db0HIC-k.mjs} +4 -4
  83. package/dist/{index-WKyN-bNy.mjs → index-DmqsRnV7.mjs} +1 -1
  84. package/dist/{index-CnzsOD19.cjs → index-f8oDidjV.cjs} +131 -52
  85. package/dist/{index-CKd20r1W.mjs → index-rNTX33in.mjs} +3 -3
  86. package/dist/index.cjs +2 -2
  87. package/dist/index.mjs +2 -2
  88. package/dist/{install-DNbIEJUk.cjs → install-CXIL_FYx.cjs} +3 -3
  89. package/dist/{install-23ehAdTD.mjs → install-DfPrEWGG.mjs} +3 -3
  90. package/dist/lib.cjs +11 -11
  91. package/dist/lib.d.cts +53 -1
  92. package/dist/lib.d.mts +53 -1
  93. package/dist/lib.mjs +12 -12
  94. package/dist/{lidState-q5Its2Hm.mjs → lidState-D0DF20oG.mjs} +1 -1
  95. package/dist/{lidState-B4dHJCeS.cjs → lidState-q_XFYg33.cjs} +1 -1
  96. package/dist/{localHappyAgentAuth-C_G5u5lY.mjs → localHappyAgentAuth-BBhM4Qk1.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-CG2nPD_H.cjs → localHappyAgentAuth-CKNW-MXw.cjs} +1 -1
  98. package/dist/{logger-BP1SW7Cs.cjs → logger-BBRTTVsQ.cjs} +2 -2
  99. package/dist/{logger-DOKH3Zbh.mjs → logger-CL7pin9b.mjs} +2 -2
  100. package/dist/{machineMetadata-D-5qeIqd.mjs → machineMetadata-DP06qdBk.mjs} +3 -3
  101. package/dist/{machineMetadata-BKX3ov9g.cjs → machineMetadata-DnFNlrVK.cjs} +3 -3
  102. package/dist/{main-ndpVIaSG.cjs → main-DLOXykOR.cjs} +49 -48
  103. package/dist/{main-DODz8DQE.mjs → main-DO7nRvhf.mjs} +49 -48
  104. package/dist/{mcp-BBwbSODp.mjs → mcp-C-4sPTae.mjs} +15 -15
  105. package/dist/{mcp-Bc4U4exu.cjs → mcp-Du0MgR7e.cjs} +14 -14
  106. package/dist/{mirrorProtocol-CiA3hO2y.cjs → mirrorProtocol-GuWMxLkh.cjs} +2 -2
  107. package/dist/{mirrorProtocol-D2vTWteS.mjs → mirrorProtocol-dkq2ZENA.mjs} +3 -3
  108. package/dist/{package-DTcaIhjW.mjs → package-C6uiXULx.mjs} +7 -7
  109. package/dist/{package-CYDdLA6R.cjs → package-DrY090nZ.cjs} +7 -7
  110. package/dist/{panels-C2xZ8rqU.cjs → panels-4DRBKHZP.cjs} +5 -5
  111. package/dist/{panels-DCaLxlSL.mjs → panels-DXYdJA6n.mjs} +5 -5
  112. package/dist/{peerTools-B4315xjX.cjs → peerTools-5ZM4spcZ.cjs} +5 -5
  113. package/dist/{peerTools-BtrUnSwz.mjs → peerTools-dY1aJez4.mjs} +5 -5
  114. package/dist/{persistence-CrzC7yr_.cjs → persistence-Bl5S3TLB.cjs} +6 -2
  115. package/dist/{persistence-0INrP3aB.mjs → persistence-Dogj7JIp.mjs} +6 -3
  116. package/dist/{piRunnerArgs-BtzW_kfh.cjs → piRunnerArgs-C3jZ1M6b.cjs} +1 -1
  117. package/dist/{piRunnerArgs-DRuxMlX1.mjs → piRunnerArgs-D8nN_Iit.mjs} +1 -1
  118. package/dist/{piRuntime-DEbPE_kW.cjs → piRuntime-Bd9-eq6M.cjs} +1 -1
  119. package/dist/{piRuntime-BMAFpIBV.mjs → piRuntime-BoeMsAXK.mjs} +1 -1
  120. package/dist/{piTerminal-MtxDtBE2.cjs → piTerminal-C3j1ca3x.cjs} +16 -16
  121. package/dist/{piTerminal-DQXV8_we.mjs → piTerminal-GEPkIGD4.mjs} +17 -17
  122. package/dist/{pushNotifications-CalIS9sq.cjs → pushNotifications-CfspRcl-.cjs} +20 -2
  123. package/dist/{pushNotifications-Cq1s8YVK.mjs → pushNotifications-dUceOIni.mjs} +21 -3
  124. package/dist/{query-CE2XDhhw.cjs → query-DjsVgG3E.cjs} +1 -1
  125. package/dist/{query-BYiPBHPC.mjs → query-iYH-tm7L.mjs} +1 -1
  126. package/dist/{rateLimitReporter-BKmoOZQi.cjs → rateLimitReporter-DUu2KydZ.cjs} +3 -3
  127. package/dist/{rateLimitReporter-DR5LXuiQ.mjs → rateLimitReporter-jeVi-fym.mjs} +3 -3
  128. package/dist/{rateLimitWindows-Cs56YJCH.cjs → rateLimitWindows-Bx3ROBP5.cjs} +1 -1
  129. package/dist/{rateLimitWindows-5vIuNjko.mjs → rateLimitWindows-CEn0DXaX.mjs} +1 -1
  130. package/dist/{registerCommonHandlers-DZPozYxc.cjs → registerCommonHandlers-Beun-cQv.cjs} +2 -2
  131. package/dist/{registerCommonHandlers-DWkTysjD.mjs → registerCommonHandlers-DWZ7mfdt.mjs} +2 -2
  132. package/dist/{registerKillSessionHandler-DhCjrs44.cjs → registerKillSessionHandler-CA1FFr_F.cjs} +15 -5
  133. package/dist/{registerKillSessionHandler-CSCTRIbI.mjs → registerKillSessionHandler-CzgklwLG.mjs} +16 -6
  134. package/dist/{remoteSessionClient-Vfj_5g2-.mjs → remoteSessionClient-BiC2KDew.mjs} +5 -5
  135. package/dist/{remoteSessionClient-Dq8XTLQP.cjs → remoteSessionClient-DGFI__5Z.cjs} +5 -5
  136. package/dist/{reportProgressTool-B7zmX7NJ.mjs → reportProgressTool-CgPy6n_7.mjs} +3 -3
  137. package/dist/{reportProgressTool-DznxPKES.cjs → reportProgressTool-CvPGov1F.cjs} +2 -2
  138. package/dist/{run-DSfNcR62.mjs → run-B_gFgJVB.mjs} +392 -42
  139. package/dist/{run-Ca8BiNCp.cjs → run-rPqQwDi_.cjs} +389 -39
  140. package/dist/{runClaude-hoepv-0X.mjs → runClaude-CykqeXK7.mjs} +26 -23
  141. package/dist/{runClaude-ClQQcgoO.cjs → runClaude-DM8gm8iu.cjs} +27 -24
  142. package/dist/{runClaudeDeps-D_v8t2SK.mjs → runClaudeDeps-D2phXGut.mjs} +101 -44
  143. package/dist/{runClaudeDeps-ck5_GYlP.cjs → runClaudeDeps-DGAomimZ.cjs} +94 -37
  144. package/dist/{runGemini-Cj0XsMiM.cjs → runGemini-CXTeSOZp.cjs} +32 -32
  145. package/dist/{runGemini-CTr2-cYG.mjs → runGemini-CtWCVkj5.mjs} +33 -33
  146. package/dist/{runOpenClaw-CdDMntiV.mjs → runOpenClaw-BBdjlViJ.mjs} +18 -18
  147. package/dist/{runOpenClaw-BoN1e3lP.cjs → runOpenClaw-CH_9_RyZ.cjs} +17 -17
  148. package/dist/{sandbox-BY2h19gc.cjs → sandbox-Bb5IMun3.cjs} +4 -4
  149. package/dist/{sandbox-DcaWB-Ou.mjs → sandbox-DGmXZ6Zz.mjs} +4 -4
  150. package/dist/selfCheck-BfK945YQ.mjs +86 -0
  151. package/dist/{selfCheck-DFS_GUaQ.cjs → selfCheck-CccwNTTK.cjs} +37 -37
  152. package/dist/{send-UBTHHNvZ.mjs → send-B6rHg8GT.mjs} +8 -8
  153. package/dist/{send-BMsUYU6g.cjs → send-BpiXPkDo.cjs} +8 -8
  154. package/dist/{server-Dt3mCtfQ.mjs → server-BkdAyHhC.mjs} +4 -4
  155. package/dist/{server-YrHMHNz1.cjs → server-DHUzjApC.cjs} +6 -6
  156. package/dist/{sessionLock-DSqiP2lH.cjs → sessionLock-BFBReiKq.cjs} +134 -3
  157. package/dist/{sessionLock-tEFvFXLD.mjs → sessionLock-Ca_bIo50.mjs} +121 -4
  158. package/dist/{sessionOps-CljctDs5.mjs → sessionOps-CA2kpm66.mjs} +13 -5
  159. package/dist/{sessionOps-BzeOKIEF.cjs → sessionOps-DeWVqpe4.cjs} +13 -4
  160. package/dist/{sessionProvider-ORgzmkXy.cjs → sessionProvider-VFbtUmMR.cjs} +5 -5
  161. package/dist/{sessionProvider-BnUFSJXM.mjs → sessionProvider-g18IiK74.mjs} +5 -5
  162. package/dist/{sessionScanner-Cr6PJ3PT.cjs → sessionScanner-CGzsN8V6.cjs} +3 -3
  163. package/dist/{sessionScanner-DZUlkdF6.mjs → sessionScanner-DDDud5re.mjs} +3 -3
  164. package/dist/{sessions-15cag-su.mjs → sessions-B4d50sCI.mjs} +35 -26
  165. package/dist/{sessions-aIo_HjmY.cjs → sessions-CKJPWFgu.cjs} +36 -25
  166. package/dist/{setupOfflineReconnection-B7I8R2Ex.mjs → setupOfflineReconnection-CyPNgyCe.mjs} +2 -2
  167. package/dist/{setupOfflineReconnection-tV0Q1dgR.cjs → setupOfflineReconnection-DPXRo_zf.cjs} +2 -2
  168. package/dist/{spawn-VG-HjJiR.cjs → spawn-CgSJzzWS.cjs} +13 -13
  169. package/dist/{spawn-ByrQgruJ.mjs → spawn-CrYN_OOT.mjs} +15 -15
  170. package/dist/{spawnAgents-Bh1RPShN.mjs → spawnAgents-DWCDYCQ1.mjs} +1 -1
  171. package/dist/{spawnHappyCLI-CxiR2Qoy.cjs → spawnHappyCLI-CTy3p6V_.cjs} +1 -1
  172. package/dist/{spawnHappyCLI-CEsXwz5V.mjs → spawnHappyCLI-DjbkiSH1.mjs} +1 -1
  173. package/dist/{startFileWatcher-C-XCZ5t2.cjs → startFileWatcher-BQs0cJA-.cjs} +1 -1
  174. package/dist/{startFileWatcher-DkEeeAtL.mjs → startFileWatcher-Dedtu1vq.mjs} +1 -1
  175. package/dist/{defaultPermissionMode-e2bIIJG4.mjs → startupSessionCreate-BKFU4v_h.mjs} +25 -6
  176. package/dist/{defaultPermissionMode-5EvgRq38.cjs → startupSessionCreate-Dxy3X4DG.cjs} +25 -7
  177. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-P9e7Sohm.mjs} +1 -1
  178. package/dist/{sync-CoChLEIg.cjs → sync-DtWB7RzA.cjs} +1 -1
  179. package/dist/{sync-BvDMkKAN.mjs → sync-eZkXnsW_.mjs} +1 -1
  180. package/dist/{systemPrompt-Dy_Rf-0Z.cjs → systemPrompt-2XOpZ1j6.cjs} +1 -1
  181. package/dist/{systemPrompt-CgDaPigN.mjs → systemPrompt-Bn6g6aCH.mjs} +2 -2
  182. package/dist/{teams-DPvfLAk8.cjs → teams-ecFay4Gn.cjs} +6 -6
  183. package/dist/{teams-BC4_e5hR.mjs → teams-nadkqrbW.mjs} +7 -7
  184. package/dist/{template-CEK8MEjo.mjs → template-BiTD-jI9.mjs} +1 -1
  185. package/dist/{time-CUK37wiV.mjs → time-CN3TuSVG.mjs} +1 -1
  186. package/dist/{time-XwEZxKGc.cjs → time-gPD_EmA-.cjs} +1 -1
  187. package/dist/{titleGenerator-DWRVdqMU.mjs → titleGenerator-DgzTQdn2.mjs} +1 -1
  188. package/dist/{titleGenerator-DVX0NZUn.cjs → titleGenerator-lT5ldPuN.cjs} +2 -2
  189. package/dist/{todo-CKGrSrRE.cjs → todo-B1VeMk5A.cjs} +5 -5
  190. package/dist/{todo-BNMGXneA.mjs → todo-BIxd7l2Q.mjs} +6 -6
  191. package/dist/{tools-CjMafO_D.cjs → tools-DvqbLsCF.cjs} +1 -1
  192. package/dist/{tools-CCIEAVbB.mjs → tools-zXJpxiG_.mjs} +1 -1
  193. package/dist/{uninstall-CJvJ7gjr.mjs → uninstall-9htK6mb7.mjs} +3 -3
  194. package/dist/{uninstall-BdFbTXnL.cjs → uninstall-CvIOpwB5.cjs} +3 -3
  195. package/package.json +7 -7
  196. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  197. package/dist/selfCheck-BQ_H2Sns.mjs +0 -86
  198. package/dist/startupSessionCreate-CYc8mra-.cjs +0 -26
  199. package/dist/startupSessionCreate-npXe2TdN.mjs +0 -24
@@ -1,95 +1,96 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-DRPJ2g9G.cjs');
4
- var logger = require('./logger-BP1SW7Cs.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-DM-KKg6v.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-D0LU_XbO.cjs');
7
+ var deterministicJson = require('./deterministicJson-BEygolBQ.cjs');
8
8
  var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
9
- var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
10
- var configuration = require('./configuration-C0ctLGW2.cjs');
11
- var attachmentContent = require('./attachmentContent-Cc5b7TPr.cjs');
12
- var piRuntime = require('./piRuntime-DEbPE_kW.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-BDuuyys8.cjs');
16
- var client = require('./client-DIfxYk7B.cjs');
17
- var registerKillSessionHandler = require('./registerKillSessionHandler-DhCjrs44.cjs');
18
- var persistence = require('./persistence-CrzC7yr_.cjs');
19
- var machineMetadata = require('./machineMetadata-BKX3ov9g.cjs');
20
- var createSessionMetadata = require('./createSessionMetadata-DezS33OM.cjs');
21
- var setupOfflineReconnection = require('./setupOfflineReconnection-tV0Q1dgR.cjs');
22
- var startupSessionCreate = require('./startupSessionCreate-CYc8mra-.cjs');
23
- var controlClient = require('./controlClient-F7hAEEy2.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');
24
24
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
25
- var sessionLock = require('./sessionLock-DSqiP2lH.cjs');
26
- var acpSessionResume = require('./acpSessionResume-2BTMsB7_.cjs');
25
+ var sessionLock = require('./sessionLock-BFBReiKq.cjs');
26
+ var acpSessionResume = require('./acpSessionResume-CZao6QEd.cjs');
27
27
  var streamRelay = require('./streamRelay-D9a4cBEa.cjs');
28
28
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
29
- var BasePermissionHandler = require('./BasePermissionHandler-DjM16uJz.cjs');
30
- var titleGenerator = require('./titleGenerator-DVX0NZUn.cjs');
29
+ var BasePermissionHandler = require('./BasePermissionHandler-CpSugp7Z.cjs');
30
+ var titleGenerator = require('./titleGenerator-lT5ldPuN.cjs');
31
31
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
32
32
  var node_fs = require('node:fs');
33
33
  var os = require('node:os');
34
34
  require('node:child_process');
35
35
  require('@agentclientprotocol/sdk');
36
- require('./time-XwEZxKGc.cjs');
36
+ require('./time-gPD_EmA-.cjs');
37
37
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
38
38
  require('./processTree-CMHWlVse.cjs');
39
- require('./package-CYDdLA6R.cjs');
39
+ require('./package-DrY090nZ.cjs');
40
40
  require('chalk');
41
41
  require('node:util');
42
42
  require('@paralleldrive/cuid2');
43
43
  require('zod');
44
44
  require('./prompt-Bof2aQkI.cjs');
45
- require('./reportProgressTool-DznxPKES.cjs');
46
- require('./client-D0aYWt53.cjs');
45
+ require('./reportProgressTool-CvPGov1F.cjs');
46
+ require('./client-Bffkrs5p.cjs');
47
47
  require('./precheckCompat-CWOi5c9L.cjs');
48
48
  require('./agentGuidance-BtBx2xxE.cjs');
49
49
  require('./trimIdent-4gvk9Wk6.cjs');
50
50
  require('./pi-DlsrPCTa.cjs');
51
51
  require('./fileStore-7qhnbs6N.cjs');
52
52
  require('node:fs/promises');
53
- require('./client-BNmFaRXZ.cjs');
54
- require('./context-D-hEk5pC.cjs');
55
- require('./sessionOps-BzeOKIEF.cjs');
53
+ require('./client-CARZ_lNS.cjs');
54
+ require('./context-BdZssgF0.cjs');
55
+ require('./sessionOps-DeWVqpe4.cjs');
56
56
  require('axios');
57
57
  require('socket.io-client');
58
58
  require('./backgroundTaskActivity-CBvUdj39.cjs');
59
59
  require('./resources-BZ_Be0qM.cjs');
60
- require('./tools-CjMafO_D.cjs');
61
- require('./peerTools-B4315xjX.cjs');
60
+ require('./tools-DvqbLsCF.cjs');
61
+ require('./peerTools-5ZM4spcZ.cjs');
62
62
  require('./ids-B6ZC0HGt.cjs');
63
- require('./remoteSessionClient-Dq8XTLQP.cjs');
63
+ require('./remoteSessionClient-DGFI__5Z.cjs');
64
64
  require('@modelcontextprotocol/sdk/server/mcp.js');
65
65
  require('node:http');
66
66
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
67
67
  require('./limits-C-a7gr04.cjs');
68
- require('./downloadTarget-aNcCxVRL.cjs');
68
+ require('./downloadTarget-DS0zT2AU.cjs');
69
69
  require('./terminals-B_bfC9c2.cjs');
70
70
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
71
71
  require('./tmuxSocket-D-Xt6Vn-.cjs');
72
- require('./bootstrap-CDY-Vz8q.cjs');
72
+ require('./bootstrap-DBJB0y-H.cjs');
73
73
  require('./webPanels-FCgFKvVe.cjs');
74
- require('./pushNotifications-CalIS9sq.cjs');
74
+ require('./pushNotifications-CfspRcl-.cjs');
75
75
  require('./previewPath-B0rBdhy1.cjs');
76
76
  require('crypto');
77
- require('./lidState-B4dHJCeS.cjs');
77
+ require('./lidState-q_XFYg33.cjs');
78
78
  require('os');
79
79
  require('child_process');
80
80
  require('node:events');
81
- require('./registerCommonHandlers-DZPozYxc.cjs');
81
+ require('./registerCommonHandlers-Beun-cQv.cjs');
82
82
  require('util');
83
83
  require('fs/promises');
84
84
  require('path');
85
85
  require('cross-spawn');
86
- require('./sync-CoChLEIg.cjs');
86
+ require('./sync-DtWB7RzA.cjs');
87
87
  require('tweetnacl');
88
88
  require('./types-CRS-srZK.cjs');
89
89
  require('./detectCLI-BuYR_Qxe.cjs');
90
90
  require('fs');
91
- require('./localHappyAgentAuth-CG2nPD_H.cjs');
91
+ require('./localHappyAgentAuth-CKNW-MXw.cjs');
92
92
  require('./fsMkdir-0K3yENml.cjs');
93
+ require('./cliUpdate-DsKXPFYp.cjs');
93
94
  require('./processTreeSnapshot-mDbnuojn.cjs');
94
95
  require('url');
95
96
  require('node:module');
@@ -162,6 +163,10 @@ function describeAcpTurnFailure(agentName, error) {
162
163
  return { message: `${agentName} error: ${detail}`, error: detail, exited: false };
163
164
  }
164
165
 
166
+ function acpExitIntent(exit) {
167
+ return exit?.intent ?? "offline";
168
+ }
169
+
165
170
  const OUT_OF_TURN_QUIET_MS = 6e4;
166
171
  function isAcpTurnContent(msg) {
167
172
  if (msg.type === "model-output") return typeof msg.textDelta === "string" && msg.textDelta.length > 0;
@@ -827,7 +832,9 @@ async function runAcp(opts) {
827
832
  machineId: settings.machineId,
828
833
  startedBy: opts.startedBy,
829
834
  sandbox: settings.sandboxConfig,
830
- 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] : []]
831
838
  });
832
839
  metadata.attachmentKinds = [];
833
840
  if (opts.agentName === "gemini") metadata.configuredModel = readGeminiConfiguredModel();
@@ -920,6 +927,11 @@ async function runAcp(opts) {
920
927
  messageQueue.setOnWait(() => drain.onIdle());
921
928
  }
922
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));
923
935
  let currentPermissionMode;
924
936
  let currentModel;
925
937
  let modeSelector = null;
@@ -1014,7 +1026,16 @@ async function runAcp(opts) {
1014
1026
  session.keepAlive(thinking, "remote");
1015
1027
  };
1016
1028
  let acpSessionId = null;
1029
+ let piProbe = null;
1017
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
+ };
1018
1039
  let abortController = new AbortController();
1019
1040
  let turnCancelled = false;
1020
1041
  let backendStarted = false;
@@ -1024,8 +1045,8 @@ async function runAcp(opts) {
1024
1045
  const stopRunnerFromBackendStatus = (status, detail) => {
1025
1046
  const reason = detail ? `${opts.agentName} backend ${status}: ${detail}` : `${opts.agentName} backend ${status}`;
1026
1047
  logger.logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
1027
- shouldExit = true;
1028
- messageQueue.close();
1048
+ session.sendSessionEvent({ type: "message", message: reason });
1049
+ beginExit("offline", "failed");
1029
1050
  };
1030
1051
  const sendEnvelopes = (envelopes) => {
1031
1052
  for (const envelope of envelopes) {
@@ -1334,7 +1355,7 @@ async function runAcp(opts) {
1334
1355
  };
1335
1356
  backend.onMessage(onBackendMessage);
1336
1357
  const titleGenerator$1 = new titleGenerator.TitleGenerator(session);
1337
- agentAttachments.registerAgentAttachmentDownloads(session);
1358
+ heldInput.registerAgentAttachmentDownloads(session);
1338
1359
  let userMessageDelivery = Promise.resolve();
1339
1360
  session.onUserMessage((message) => {
1340
1361
  const downloads = session.drainAttachmentsForUserMessage();
@@ -1383,6 +1404,7 @@ async function runAcp(opts) {
1383
1404
  }).catch(() => {
1384
1405
  logger.logger.warn("[ACP] Failed to prepare user attachments");
1385
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");
1386
1408
  });
1387
1409
  });
1388
1410
  session.keepAlive(thinking, "remote");
@@ -1422,10 +1444,15 @@ async function runAcp(opts) {
1422
1444
  }
1423
1445
  );
1424
1446
  const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1425
- shouldExit = true;
1426
- messageQueue.close();
1447
+ beginExit("archive", "aborted");
1427
1448
  await handleAbort();
1428
- }, session, { processSignals: true });
1449
+ }, session, {
1450
+ processSignals: true,
1451
+ onSignal: async () => {
1452
+ beginExit("offline", "restarted");
1453
+ await handleAbort();
1454
+ }
1455
+ });
1429
1456
  const afterSessionStarted = async (requestedModel) => {
1430
1457
  if (requestedModel) {
1431
1458
  await switchModelIfRequested(requestedModel);
@@ -1479,6 +1506,36 @@ async function runAcp(opts) {
1479
1506
  logger.logger.debug(`[${opts.agentName}] Resume of agent session ${resumeId}: ${started.resumed ?? "new"}${started.loadFailure ? ` (${started.loadFailure})` : ""}`);
1480
1507
  if (started.resumed !== "loaded") session.sendSessionEvent({ type: "message", message: acpSessionResume.piRestartNotice(opts.agentName, "resume", started) });
1481
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);
1482
1539
  if (verbose) {
1483
1540
  if (!sawSlashCommands) {
1484
1541
  logAcp("muted", `Outgoing slash commands from ${opts.agentName}: not reported yet`);
@@ -1502,6 +1559,7 @@ async function runAcp(opts) {
1502
1559
  }
1503
1560
  break;
1504
1561
  }
1562
+ heldInput$1.hold(batch.sourceIds);
1505
1563
  logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
1506
1564
  endOutOfTurn("prompt");
1507
1565
  sendEnvelopes(sessionManager.startTurn());
@@ -1531,6 +1589,13 @@ async function runAcp(opts) {
1531
1589
  happyHomeDir: configuration.configuration.happyHomeDir,
1532
1590
  sessionId: session.sessionId
1533
1591
  }) : [];
1592
+ if (shouldExit) {
1593
+ sendEnvelopes(sessionManager.endTurn("cancelled"));
1594
+ streamRelay$1.endTurn();
1595
+ setThinking(false);
1596
+ break;
1597
+ }
1598
+ heldInput$1.delivered();
1534
1599
  promptInFlight = true;
1535
1600
  let outcome;
1536
1601
  try {
@@ -1557,6 +1622,7 @@ async function runAcp(opts) {
1557
1622
  } catch (error) {
1558
1623
  const failure = describeAcpTurnFailure(opts.agentName, error);
1559
1624
  session.sendSessionEvent({ type: "message", message: failure.message });
1625
+ heldInput$1.drop("failed");
1560
1626
  sendEnvelopes(sessionManager.endTurn("failed", failure.error));
1561
1627
  streamRelay$1.endTurn();
1562
1628
  setThinking(false);
@@ -1569,6 +1635,7 @@ async function runAcp(opts) {
1569
1635
  }
1570
1636
  } finally {
1571
1637
  disposeTermination?.();
1638
+ piProbe?.stop();
1572
1639
  setThinking(false);
1573
1640
  clearInterval(keepAliveInterval);
1574
1641
  streamRelay$1.endTurn();
@@ -1595,15 +1662,27 @@ async function runAcp(opts) {
1595
1662
  }
1596
1663
  try {
1597
1664
  session.closePromptQueueDrain();
1598
- session.updateMetadata((currentMetadata) => ({
1599
- ...currentMetadata,
1600
- lifecycleState: "archived",
1601
- lifecycleStateSince: Date.now(),
1602
- archivedBy: "cli",
1603
- archiveReason: "Session ended"
1604
- }));
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
+ }
1605
1677
  session.sendSessionDeath();
1606
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
+ }
1607
1686
  await session.close();
1608
1687
  } catch (error) {
1609
1688
  logger.logger.debug(`[${opts.agentName}] Session close failed:`, error);
@@ -1,4 +1,4 @@
1
- import { p as packageJson } from './package-DTcaIhjW.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-BQ_H2Sns.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-DODz8DQE.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-CYDdLA6R.cjs');
4
- require('./index-4TpmBb2Q.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-DTcaIhjW.mjs';
2
- import './index-CKd20r1W.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-BP1SW7Cs.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-C0ctLGW2.cjs');
10
+ require('./configuration-Dt5lKW3P.cjs');
11
11
  require('node:fs');
12
12
  require('node:os');
13
13
  require('node:path');
14
- require('./package-CYDdLA6R.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-DOKH3Zbh.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-1FabKklB.mjs';
8
+ import './configuration-Dechcvd-.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:os';
11
11
  import 'node:path';
12
- import './package-DTcaIhjW.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-BDuuyys8.cjs');
4
- var logger = require('./logger-BP1SW7Cs.cjs');
5
- var configuration = require('./configuration-C0ctLGW2.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-B4dHJCeS.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-CalIS9sq.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-XwEZxKGc.cjs');
23
- require('./registerCommonHandlers-DZPozYxc.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-CoChLEIg.cjs');
31
+ require('./sync-DtWB7RzA.cjs');
32
32
  require('./backgroundTaskActivity-CBvUdj39.cjs');
33
- require('./controlClient-F7hAEEy2.cjs');
34
- require('./persistence-CrzC7yr_.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-CYDdLA6R.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;
@@ -1032,6 +1045,13 @@ declare class RpcHandlerManager {
1032
1045
  private getPrefixedMethod;
1033
1046
  }
1034
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
+
1035
1055
  /**
1036
1056
  * B-509 —— server-side prompt queue drain (pure state machine, no I/O).
1037
1057
  *
@@ -1334,7 +1354,7 @@ declare class ApiSessionClient extends EventEmitter {
1334
1354
  private pushCommittedMessagesToRelay;
1335
1355
  private enqueueMessage;
1336
1356
  /** B-332: emit a queue-cancel tombstone, mirroring the web's own signal. */
1337
- sendQueueCancelReason(localKeys: string[], reason: 'cleared' | 'aborted' | 'restarted'): void;
1357
+ sendQueueCancelReason(localKeys: string[], reason: QueueDiscardReason): void;
1338
1358
  /**
1339
1359
  * B-332 site ③: find queued user input this wrapper destroyed (it was still
1340
1360
  * in the previous wrapper's in-memory queue when it died) and tell the web.
@@ -1532,9 +1552,29 @@ declare class ApiSessionClient extends EventEmitter {
1532
1552
  */
1533
1553
  flush(): Promise<void>;
1534
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;
1535
1562
  private startSmartReconnect;
1536
1563
  }
1537
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
+
1538
1578
  /**
1539
1579
  * B-510: machine web panels — local web pages a person may need to look at
1540
1580
  * (noVNC, an agent-browser dashboard, Grafana, a dev server), declared ONLY in
@@ -1953,6 +1993,8 @@ declare class ApiMachineClient {
1953
1993
  private claudeAuthState;
1954
1994
  /** B-587: the machine's hibernation threshold, published as a capability. */
1955
1995
  private agentHibernationIdleMs;
1996
+ /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
1997
+ private autoRestart;
1956
1998
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
1957
1999
  private webPanels;
1958
2000
  private webPanelsSignatureSent;
@@ -2044,6 +2086,16 @@ declare class ApiMachineClient {
2044
2086
  */
2045
2087
  setWebPanels(panels: WebPanel[]): Promise<void>;
2046
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;
2047
2099
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
2048
2100
  setClaudeAuthHandlers(handlers: {
2049
2101
  probe: () => Promise<ClaudeAuthState>;