very-happy-cli 0.2.201 → 0.2.203

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 (192) hide show
  1. package/dist/{AcpBackend-BNinFMHZ.mjs → AcpBackend-CAMuhS0Z.mjs} +3 -3
  2. package/dist/{AcpBackend-CMFlng3C.cjs → AcpBackend-DReFgpYD.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CPgoICjp.cjs → AcpSessionManager-BZKM-sCt.cjs} +1 -1
  4. package/dist/{AcpSessionManager-Dg6gKavf.mjs → AcpSessionManager-CJOxMFCF.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-c-NaRa_E.cjs → BasePermissionHandler-BBR9Gkob.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-DwcfWUjr.mjs → BasePermissionHandler-BgX73mQ5.mjs} +1 -1
  7. package/dist/{account-D23SGj7p.cjs → account-41PkJ9nx.cjs} +5 -5
  8. package/dist/{account-pzgzyIXW.mjs → account-hy0rztXY.mjs} +5 -5
  9. package/dist/{acpSessionResume-urFpnGsk.mjs → acpSessionResume-5El4xksf.mjs} +1 -1
  10. package/dist/{acpSessionResume-DklOhwir.cjs → acpSessionResume-DmOPXKpC.cjs} +1 -1
  11. package/dist/{agentHome-BTwMaYw1.cjs → agentHome-BXaVMqHX.cjs} +4 -4
  12. package/dist/{agentHome-DyrLqr8b.mjs → agentHome-DUxArmak.mjs} +4 -4
  13. package/dist/{api-KVVs-GkM.cjs → api-ChhFBuB0.cjs} +9 -9
  14. package/dist/{api-1CD4oRSW.mjs → api-D8ZDxBWw.mjs} +9 -9
  15. package/dist/{apiMachine-1sd5IVIB.cjs → apiMachine-MPwddFXq.cjs} +23 -13
  16. package/dist/{apiMachine-BDVE6MOn.mjs → apiMachine-qav2pnk5.mjs} +23 -13
  17. package/dist/{attachmentContent-CeF54XeO.mjs → attachmentContent-BfSQxccA.mjs} +2 -2
  18. package/dist/{attachmentContent-f3BbOKqz.cjs → attachmentContent-f5gwnv9J.cjs} +2 -2
  19. package/dist/{auth-CV2H-smf.mjs → auth-BxNuFv_0.mjs} +8 -8
  20. package/dist/{auth-eielZ6Sc.cjs → auth-DkPAHXLj.cjs} +8 -8
  21. package/dist/{auth-CXCX-iJ-.cjs → auth-thi2T_T8.cjs} +5 -5
  22. package/dist/{auth-WCd2S1zA.mjs → auth-xW7SDE_7.mjs} +5 -5
  23. package/dist/{auto-49cRCADN.cjs → auto-BiRlQ4tm.cjs} +14 -14
  24. package/dist/{auto-BsCE_UHT.mjs → auto-DmXTwayU.mjs} +14 -14
  25. package/dist/{bootstrap-N1PY4ypX.cjs → bootstrap-EGhaCmXy.cjs} +2 -2
  26. package/dist/{bootstrap-D_1MskAl.mjs → bootstrap-pGaFGbWO.mjs} +2 -2
  27. package/dist/{browser-DL3QIQLS.mjs → browser-BYSYzXvP.mjs} +1 -1
  28. package/dist/{browser-B0SEB6r3.cjs → browser-DSxpOnPb.cjs} +1 -1
  29. package/dist/{claudeLocal-Ix69XJ1t.cjs → claudeLocal-ClqHmkk6.cjs} +4 -4
  30. package/dist/{claudeLocal-DRMWkdCC.mjs → claudeLocal-bDarWqaU.mjs} +4 -4
  31. package/dist/{claudeLocalLauncher-rDojqNoa.cjs → claudeLocalLauncher-Bxi0_eW9.cjs} +9 -9
  32. package/dist/{claudeLocalLauncher-D4tU6R5n.mjs → claudeLocalLauncher-Ccpj2KgW.mjs} +9 -9
  33. package/dist/{claudeSessionFork-H0ZVQALg.mjs → claudeSessionFork-Cize0Y2T.mjs} +1 -1
  34. package/dist/{claudeSessionFork-C_X08LFh.cjs → claudeSessionFork-nyNFjgaf.cjs} +1 -1
  35. package/dist/{client-P1VkI76z.cjs → client-6Y6O72Uq.cjs} +2 -2
  36. package/dist/{client-DGqnrSg4.cjs → client-CMKgB-76.cjs} +4 -4
  37. package/dist/{client-CMUlpYcy.mjs → client-CX8kRedW.mjs} +2 -2
  38. package/dist/{client-BoymtYLP.cjs → client-Cddb1dhi.cjs} +2 -2
  39. package/dist/{client-4YWjreN3.mjs → client-CgMVIP7v.mjs} +2 -2
  40. package/dist/{client-BgInTvr6.mjs → client-DO8DNDC3.mjs} +2 -2
  41. package/dist/{client-DI8Rxsbw.cjs → client-DP8FabOE.cjs} +2 -2
  42. package/dist/{client-CK-jvgM1.mjs → client-Wr_BiOon.mjs} +4 -4
  43. package/dist/codex/happyMcpStdioBridge.cjs +17 -17
  44. package/dist/codex/happyMcpStdioBridge.mjs +17 -17
  45. package/dist/{codexAppServerClient-aDrsSyjS.mjs → codexAppServerClient-D-cD2Dfj.mjs} +3 -3
  46. package/dist/{codexAppServerClient-BnMR-DRn.cjs → codexAppServerClient-EzrHWYhX.cjs} +3 -3
  47. package/dist/{codexCommand-C3oEEpOa.cjs → codexCommand-BMcXtvU3.cjs} +42 -42
  48. package/dist/{codexCommand-BCpJzf3q.mjs → codexCommand-D79GnRhB.mjs} +42 -42
  49. package/dist/{codexTermination-DXhw5Pzi.cjs → codexTermination-CF6xiFbb.cjs} +1 -1
  50. package/dist/{codexTermination-B5haG5wJ.mjs → codexTermination-CK1MYJT7.mjs} +1 -1
  51. package/dist/{config-D9wjo4oa.mjs → config-Crn1mNgr.mjs} +3 -3
  52. package/dist/{config-CdGiZZKy.cjs → config-F6zSRyk2.cjs} +3 -3
  53. package/dist/{configuration-LWFmTxty.cjs → configuration-Cl9kOv09.cjs} +1 -1
  54. package/dist/{configuration-DhEqAYzz.mjs → configuration-i9MVy0a5.mjs} +1 -1
  55. package/dist/{connect-CY_EMXQs.mjs → connect-CiA13Xm4.mjs} +12 -12
  56. package/dist/{connect-BZLD0aVm.cjs → connect-ClklWmnI.cjs} +12 -12
  57. package/dist/{context-BbZ18lX0.cjs → context-BxODP3mG.cjs} +1 -1
  58. package/dist/{context-UzqWaA7f.mjs → context-DvdZsGgl.mjs} +1 -1
  59. package/dist/{controlClient-PaIiDxM6.mjs → controlClient-D6vqMUfi.mjs} +3 -3
  60. package/dist/{controlClient-TVMpETsR.cjs → controlClient-DxCQKfqe.cjs} +3 -3
  61. package/dist/{createSessionMetadata-hGZeo_nR.cjs → createSessionMetadata-B_NZvmhm.cjs} +2 -2
  62. package/dist/{createSessionMetadata-BWb81WZg.mjs → createSessionMetadata-BuAVB-xI.mjs} +2 -2
  63. package/dist/{deterministicJson-Cg3z7uUX.mjs → deterministicJson-B9XrEawW.mjs} +13 -13
  64. package/dist/{deterministicJson-BpDDS7c9.cjs → deterministicJson-kM2OdGZu.cjs} +13 -13
  65. package/dist/{doctor-DOzji0f7.cjs → doctor-DiPRqsqg.cjs} +7 -7
  66. package/dist/{doctor-BanQ3jQg.mjs → doctor-HHS4YegX.mjs} +7 -7
  67. package/dist/{downloadTarget-BCSXmPRE.mjs → downloadTarget-Cd8hx54t.mjs} +6 -6
  68. package/dist/{downloadTarget-BhIAhyEV.cjs → downloadTarget-osB-mGh0.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-BZGBE838.mjs → ensureDaemonRunning-C0iDtuL7.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-DMOCzvQP.cjs → ensureDaemonRunning-CtBvPHVB.cjs} +5 -5
  71. package/dist/{format-CgiY6uup.cjs → format-B5V7ie8N.cjs} +1 -1
  72. package/dist/{format-BxGkJUki.mjs → format-Dc5zMslz.mjs} +1 -1
  73. package/dist/{handleResumeCommand-ChnR-12l.cjs → handleResumeCommand-vcD2qcAM.cjs} +5 -5
  74. package/dist/{handleResumeCommand-BRV-9h0o.mjs → handleResumeCommand-xrOAA1qI.mjs} +5 -5
  75. package/dist/{index-DuOthh8V.cjs → index-AyDwQ6FG.cjs} +39 -39
  76. package/dist/{index-D5abHQNL.mjs → index-B7CXMlrz.mjs} +40 -40
  77. package/dist/{index-C_Y9426m.mjs → index-B7pKBIcn.mjs} +3 -3
  78. package/dist/{index-DnEgpRo4.cjs → index-C_ePuQwB.cjs} +3 -3
  79. package/dist/{index-BuOzDU17.cjs → index-Cl-WkB_6.cjs} +4 -4
  80. package/dist/{index-B7HlUXOX.cjs → index-D0rCXp-e.cjs} +4 -4
  81. package/dist/{index-HJFzeG0B.mjs → index-DIKJMfs2.mjs} +4 -4
  82. package/dist/{index-Do1r62PF.mjs → index-iFVMrlPo.mjs} +4 -4
  83. package/dist/index.cjs +2 -2
  84. package/dist/index.mjs +2 -2
  85. package/dist/{install-CUAUG3u4.cjs → install-BgBgsOlS.cjs} +3 -3
  86. package/dist/{install-BurTXawL.mjs → install-yqS4y1cm.mjs} +3 -3
  87. package/dist/{issue-feEUrjV0.cjs → issue-D7liK6bR.cjs} +7 -7
  88. package/dist/{issue-DpMsnOFm.mjs → issue-aKZd7J55.mjs} +7 -7
  89. package/dist/lib.cjs +11 -11
  90. package/dist/lib.d.cts +3 -0
  91. package/dist/lib.d.mts +3 -0
  92. package/dist/lib.mjs +11 -11
  93. package/dist/{localHappyAgentAuth-kg2RFvOy.mjs → localHappyAgentAuth-B2JJxlE9.mjs} +1 -1
  94. package/dist/{localHappyAgentAuth-DxlQgaer.cjs → localHappyAgentAuth-Dm9obisi.cjs} +1 -1
  95. package/dist/{logger-CFrzcRHD.mjs → logger-BiKmiREe.mjs} +2 -2
  96. package/dist/{logger-Hyhy2boA.cjs → logger-BtWBoP60.cjs} +2 -2
  97. package/dist/{machineMetadata-BLymhM03.cjs → machineMetadata-C0-LyMsb.cjs} +3 -3
  98. package/dist/{machineMetadata-DiStbYik.mjs → machineMetadata-CiyO9wm-.mjs} +3 -3
  99. package/dist/{main-D1rk-68I.mjs → main-BP2TBnp5.mjs} +48 -48
  100. package/dist/{main-7G17Noc3.cjs → main-C7hKf5hG.cjs} +48 -48
  101. package/dist/{mcp-C0DMPeTt.mjs → mcp-Cn4k-PXb.mjs} +14 -14
  102. package/dist/{mcp-DUeAS-D6.cjs → mcp-DO00rr9n.cjs} +14 -14
  103. package/dist/{mirrorProtocol-dRyartIG.mjs → mirrorProtocol-DDtEN49F.mjs} +2 -2
  104. package/dist/{mirrorProtocol-YUoEuIYO.cjs → mirrorProtocol-DwO8QgLM.cjs} +2 -2
  105. package/dist/{package-DxE8PttX.mjs → package-CIW5lwaN.mjs} +7 -7
  106. package/dist/{package-06cGlmeD.cjs → package-Djdgx8nb.cjs} +7 -7
  107. package/dist/{panels-BUqmsRE0.mjs → panels-BpfVEvwF.mjs} +5 -5
  108. package/dist/{panels-D0GHfIJC.cjs → panels-DMLtEOtJ.cjs} +5 -5
  109. package/dist/{peerTools-BiFpxXdf.mjs → peerTools-CQ60fUPp.mjs} +5 -5
  110. package/dist/{peerTools-CTCyRdg2.cjs → peerTools-fYuKq3ev.cjs} +5 -5
  111. package/dist/{persistence-_W9tE-bW.cjs → persistence-BOEZtiKb.cjs} +12 -2
  112. package/dist/{persistence-CF7oV1oH.mjs → persistence-D_zVC4Xz.mjs} +12 -3
  113. package/dist/{piRunnerArgs-Cfc-F-FJ.mjs → piRunnerArgs-DE_YXvS1.mjs} +1 -1
  114. package/dist/{piRunnerArgs-T2cAiaGW.cjs → piRunnerArgs-Dz9P62db.cjs} +1 -1
  115. package/dist/{piRuntime-CzYkZrYV.mjs → piRuntime-8SbpRmNA.mjs} +1 -1
  116. package/dist/{piRuntime-BzECTca4.cjs → piRuntime-Du62fjeU.cjs} +1 -1
  117. package/dist/{piTerminal-WF--dHaC.cjs → piTerminal-CGAw7WDW.cjs} +16 -16
  118. package/dist/{piTerminal-0tOAYsFm.mjs → piTerminal-Cl45kac0.mjs} +16 -16
  119. package/dist/{pushNotifications-DdzTbrA3.cjs → pushNotifications-B19lT5mY.cjs} +2 -2
  120. package/dist/{pushNotifications-CxX10K6n.mjs → pushNotifications-RVpbqrxR.mjs} +2 -2
  121. package/dist/{query-Cwx4pv91.cjs → query-CNWdX2r5.cjs} +1 -1
  122. package/dist/{query-Bkh7d52V.mjs → query-DBRR3TOO.mjs} +1 -1
  123. package/dist/{rateLimitWindows-DdUMUEoy.mjs → rateLimitWindows-DX5y23x_.mjs} +1 -1
  124. package/dist/{rateLimitWindows-DjJjgjt4.cjs → rateLimitWindows-mfdokrkQ.cjs} +1 -1
  125. package/dist/{reconnectGate-DeDhtQJW.cjs → reconnectGate-B8ltzSJD.cjs} +1 -1
  126. package/dist/{reconnectGate-uTLj82tS.mjs → reconnectGate-DSxYUCWy.mjs} +1 -1
  127. package/dist/{registerCommonHandlers-BYrmi-A4.mjs → registerCommonHandlers-CQDRKlkG.mjs} +2 -2
  128. package/dist/{registerCommonHandlers-BrEtSwNk.cjs → registerCommonHandlers-Y2siJGwL.cjs} +2 -2
  129. package/dist/{registerKillSessionHandler-Bp3g11wW.cjs → registerKillSessionHandler-B0pMZOdH.cjs} +5 -5
  130. package/dist/{registerKillSessionHandler-Cuzq6ecP.mjs → registerKillSessionHandler-U4Dxtohy.mjs} +5 -5
  131. package/dist/{registerSideQuestionHandler-ChIbHl_g.cjs → registerSideQuestionHandler--ruKhCdY.cjs} +4 -4
  132. package/dist/{registerSideQuestionHandler-BmEWWaZW.mjs → registerSideQuestionHandler-DM1QqTxf.mjs} +4 -4
  133. package/dist/{remoteSessionClient-DoxfnpnK.cjs → remoteSessionClient-CjINaEs_.cjs} +5 -5
  134. package/dist/{remoteSessionClient-Dj2rV8Az.mjs → remoteSessionClient-T-Raoiy6.mjs} +5 -5
  135. package/dist/{reportProgressTool-DvZhaEiN.cjs → reportProgressTool-DDfL1OY7.cjs} +4 -4
  136. package/dist/{reportProgressTool-qo0QIFNd.mjs → reportProgressTool-Stg0xrjF.mjs} +4 -4
  137. package/dist/{run-BqlWdDTL.cjs → run-BoSVfVCZ.cjs} +196 -45
  138. package/dist/{run-mHeOSOEt.mjs → run-Dq48xBtw.mjs} +196 -45
  139. package/dist/{runClaude-Z4BVFEdC.mjs → runClaude-CJe5atrS.mjs} +20 -20
  140. package/dist/{runClaude-MjIrNrxT.cjs → runClaude-D8ScJdJU.cjs} +20 -20
  141. package/dist/{runClaudeDeps-tPqwAl_m.cjs → runClaudeDeps-4RFRR4cY.cjs} +37 -37
  142. package/dist/{runClaudeDeps-8RXtu0Zc.mjs → runClaudeDeps-CL3goCXG.mjs} +43 -43
  143. package/dist/{runGemini-uc-fViXY.cjs → runGemini-BcbNxgsA.cjs} +34 -34
  144. package/dist/{runGemini-DG3jIxWv.mjs → runGemini-DZv6jPxV.mjs} +34 -34
  145. package/dist/{runOpenClaw-DZtoCmSG.cjs → runOpenClaw-BeSivE0X.cjs} +17 -17
  146. package/dist/{runOpenClaw-C4676Sdl.mjs → runOpenClaw-CRqCoj-_.mjs} +17 -17
  147. package/dist/{sandbox-r29ys6I4.mjs → sandbox-DAvJJZcV.mjs} +4 -4
  148. package/dist/{sandbox-DS7uZ71y.cjs → sandbox-xflHChws.cjs} +4 -4
  149. package/dist/selfCheck-BKOIROoJ.mjs +89 -0
  150. package/dist/{selfCheck-CSZ-wx1W.cjs → selfCheck-DZwdgBg0.cjs} +39 -39
  151. package/dist/{send-BGApHm-z.mjs → send-Co_l_Nmg.mjs} +8 -8
  152. package/dist/{send-CrmLy9lW.cjs → send-ConAuYqL.cjs} +8 -8
  153. package/dist/{server-hutEAAn1.mjs → server-D1Qrmxl7.mjs} +4 -4
  154. package/dist/{server-CjwXsTKP.cjs → server-by6kezmM.cjs} +6 -6
  155. package/dist/{sessionLock-Dj9_lShU.mjs → sessionLock-DFrwAnwR.mjs} +3 -3
  156. package/dist/{sessionLock-unMOEniJ.cjs → sessionLock-Db_uQcUP.cjs} +3 -3
  157. package/dist/{sessionOps-BmhqmPPd.mjs → sessionOps-C7nps7qG.mjs} +4 -4
  158. package/dist/{sessionOps-SxZr9veq.cjs → sessionOps-CptDjoZi.cjs} +4 -4
  159. package/dist/{sessionProvider-CPlvR0nT.mjs → sessionProvider-BaJq1AnY.mjs} +5 -5
  160. package/dist/{sessionProvider-DLlqS4y6.cjs → sessionProvider-D9nsAE14.cjs} +5 -5
  161. package/dist/{sessionScanner-DvVZpLHG.mjs → sessionScanner-BOb33NVJ.mjs} +3 -3
  162. package/dist/{sessionScanner-B7nZ1i40.cjs → sessionScanner-C6OVO0Ne.cjs} +3 -3
  163. package/dist/{sessions-BIYm43CM.mjs → sessions-GCql_3Dl.mjs} +10 -10
  164. package/dist/{sessions-CQQW7u6X.cjs → sessions-qVHDXJa6.cjs} +10 -10
  165. package/dist/{setupOfflineReconnection-D7WJTAi_.cjs → setupOfflineReconnection-B8QKqc9a.cjs} +2 -2
  166. package/dist/{setupOfflineReconnection-BELrtMGG.mjs → setupOfflineReconnection-lu0YbS7m.mjs} +2 -2
  167. package/dist/{spawn-DnPu7h2o.mjs → spawn-C9NSlg99.mjs} +12 -12
  168. package/dist/{spawn-CuWcPkkN.cjs → spawn-tL-724RS.cjs} +12 -12
  169. package/dist/{spawnHappyCLI-CI7Ax4mF.cjs → spawnHappyCLI-D7EO8s4E.cjs} +1 -1
  170. package/dist/{spawnHappyCLI-D6OcgFDR.mjs → spawnHappyCLI-jXUKLUT5.mjs} +1 -1
  171. package/dist/{startFileWatcher-DBW14aP2.cjs → startFileWatcher-6NpLGxg5.cjs} +1 -1
  172. package/dist/{startFileWatcher-BiWGhlGW.mjs → startFileWatcher-C7eFs4hA.mjs} +1 -1
  173. package/dist/{startupSessionCreate-DFl54ozj.cjs → startupSessionCreate-C5wdvraY.cjs} +3 -3
  174. package/dist/{startupSessionCreate-DbBpGQo9.mjs → startupSessionCreate-D3ph1DtL.mjs} +3 -3
  175. package/dist/{sync-CcBrziWp.mjs → sync-BIXH8ijr.mjs} +1 -1
  176. package/dist/{sync-C764ZzE6.cjs → sync-ni64k2OI.cjs} +1 -1
  177. package/dist/{systemPrompt-9i7bQypR.mjs → systemPrompt-B_vnlIr1.mjs} +1 -1
  178. package/dist/{systemPrompt-Xy3Dfj1l.cjs → systemPrompt-DuoULaqr.cjs} +1 -1
  179. package/dist/{teams-BAWOVbdF.mjs → teams-CsR_8p3Q.mjs} +6 -6
  180. package/dist/{teams-VlmzLDSs.cjs → teams-DLfcbOMh.cjs} +6 -6
  181. package/dist/{time-CDBZWYDb.cjs → time-BMCY7zJL.cjs} +1 -1
  182. package/dist/{time-DJF2csbV.mjs → time-Che8GhII.mjs} +1 -1
  183. package/dist/{titleGenerator-DR9evHBh.mjs → titleGenerator-B9LckLDq.mjs} +1 -1
  184. package/dist/{titleGenerator-BYP3fNFo.cjs → titleGenerator-HVEN1e7o.cjs} +2 -2
  185. package/dist/{todo-BkFvwx_z.cjs → todo-B8byb_cy.cjs} +7 -7
  186. package/dist/{todo-DDDQdB-G.mjs → todo-bc7db5NN.mjs} +7 -7
  187. package/dist/{tools-BjiRW_Rg.cjs → tools--RN1SFkD.cjs} +47 -27
  188. package/dist/{tools-CDktvjWL.mjs → tools-BAMaBbbP.mjs} +47 -27
  189. package/dist/{uninstall-BcMGkwJ0.mjs → uninstall-Dv4C-W9z.mjs} +3 -3
  190. package/dist/{uninstall-D5INt3TC.cjs → uninstall-UC0Q8YTj.cjs} +3 -3
  191. package/package.json +7 -7
  192. package/dist/selfCheck-BmT9ihpR.mjs +0 -89
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var mirrorProtocol = require('./mirrorProtocol-YUoEuIYO.cjs');
3
+ var mirrorProtocol = require('./mirrorProtocol-DwO8QgLM.cjs');
4
4
  var fsMkdir = require('./fsMkdir-0K3yENml.cjs');
5
- var piRunnerArgs = require('./piRunnerArgs-T2cAiaGW.cjs');
5
+ var piRunnerArgs = require('./piRunnerArgs-Dz9P62db.cjs');
6
6
  var fs = require('fs/promises');
7
7
  var os$1 = require('os');
8
8
  var tmp = require('tmp');
@@ -10,19 +10,19 @@ var axios = require('axios');
10
10
  var sessionMetadata = require('./sessionMetadata-B44cL4Xj.cjs');
11
11
  var node_fs = require('node:fs');
12
12
  var path = require('node:path');
13
- var configuration = require('./configuration-LWFmTxty.cjs');
14
- var api = require('./api-KVVs-GkM.cjs');
13
+ var configuration = require('./configuration-Cl9kOv09.cjs');
14
+ var api = require('./api-ChhFBuB0.cjs');
15
15
  var spawnAgents = require('./spawnAgents-DvbEDCIq.cjs');
16
- var logger = require('./logger-Hyhy2boA.cjs');
17
- var index$2 = require('./index-DnEgpRo4.cjs');
18
- var auth = require('./auth-CXCX-iJ-.cjs');
16
+ var logger = require('./logger-BtWBoP60.cjs');
17
+ var index$2 = require('./index-C_ePuQwB.cjs');
18
+ var auth = require('./auth-thi2T_T8.cjs');
19
19
  var child_process = require('child_process');
20
- var _package = require('./package-06cGlmeD.cjs');
21
- var doctor = require('./doctor-DOzji0f7.cjs');
22
- var spawnHappyCLI = require('./spawnHappyCLI-CI7Ax4mF.cjs');
23
- var persistence = require('./persistence-_W9tE-bW.cjs');
24
- var controlClient = require('./controlClient-TVMpETsR.cjs');
25
- var sessionOps = require('./sessionOps-SxZr9veq.cjs');
20
+ var _package = require('./package-Djdgx8nb.cjs');
21
+ var doctor = require('./doctor-DiPRqsqg.cjs');
22
+ var spawnHappyCLI = require('./spawnHappyCLI-D7EO8s4E.cjs');
23
+ var persistence = require('./persistence-BOEZtiKb.cjs');
24
+ var controlClient = require('./controlClient-DxCQKfqe.cjs');
25
+ var sessionOps = require('./sessionOps-CptDjoZi.cjs');
26
26
  var index = require('./index-44o_qMvE.cjs');
27
27
  var fastify = require('fastify');
28
28
  var z = require('zod');
@@ -31,37 +31,37 @@ var authRelay = require('./authRelay-Dy1qU9td.cjs');
31
31
  var node_crypto = require('node:crypto');
32
32
  var previewPath = require('./previewPath-B0rBdhy1.cjs');
33
33
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
34
- var rateLimitWindows = require('./rateLimitWindows-DjJjgjt4.cjs');
35
- var peerTools = require('./peerTools-CTCyRdg2.cjs');
34
+ var rateLimitWindows = require('./rateLimitWindows-mfdokrkQ.cjs');
35
+ var peerTools = require('./peerTools-fYuKq3ev.cjs');
36
36
  var os = require('node:os');
37
- var remoteSessionClient = require('./remoteSessionClient-DoxfnpnK.cjs');
38
- var bootstrap = require('./bootstrap-N1PY4ypX.cjs');
39
- var index$1 = require('./index-BuOzDU17.cjs');
37
+ var remoteSessionClient = require('./remoteSessionClient-CjINaEs_.cjs');
38
+ var bootstrap = require('./bootstrap-EGhaCmXy.cjs');
39
+ var index$1 = require('./index-Cl-WkB_6.cjs');
40
40
  var require$$0 = require('fs');
41
41
  var require$$1 = require('path');
42
42
  var node_child_process = require('node:child_process');
43
43
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
44
44
  var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
45
- var machineMetadata = require('./machineMetadata-BLymhM03.cjs');
45
+ var machineMetadata = require('./machineMetadata-C0-LyMsb.cjs');
46
46
  var fileStore = require('./fileStore-7qhnbs6N.cjs');
47
47
  var pi = require('./pi-DlsrPCTa.cjs');
48
48
  var codexAccount = require('./codexAccount-D-OBY29W.cjs');
49
49
  var require$$3 = require('crypto');
50
50
  var detectCLI = require('./detectCLI-BuYR_Qxe.cjs');
51
- var handleResumeCommand = require('./handleResumeCommand-ChnR-12l.cjs');
51
+ var handleResumeCommand = require('./handleResumeCommand-vcD2qcAM.cjs');
52
52
  var webPanels = require('./webPanels-FCgFKvVe.cjs');
53
53
  var promises = require('node:fs/promises');
54
54
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
55
- var client = require('./client-BoymtYLP.cjs');
56
- var sessionLock = require('./sessionLock-unMOEniJ.cjs');
57
- var client$1 = require('./client-P1VkI76z.cjs');
55
+ var client = require('./client-Cddb1dhi.cjs');
56
+ var sessionLock = require('./sessionLock-Db_uQcUP.cjs');
57
+ var client$1 = require('./client-6Y6O72Uq.cjs');
58
58
  var daemonSupervisor = require('./daemonSupervisor-alqGPANc.cjs');
59
59
  var accountService = require('./accountService-Cns8UYGI.cjs');
60
60
  var daemonAccounts = require('./daemonAccounts-ciidbU2h.cjs');
61
61
  var path$1 = require('./path-B7zW-WwE.cjs');
62
62
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
63
- var startFileWatcher = require('./startFileWatcher-DBW14aP2.cjs');
64
- var sync = require('./sync-C764ZzE6.cjs');
63
+ var startFileWatcher = require('./startFileWatcher-6NpLGxg5.cjs');
64
+ var sync = require('./sync-ni64k2OI.cjs');
65
65
  var types = require('./types-CRS-srZK.cjs');
66
66
  var tmuxSocket = require('./tmuxSocket-Dg11Olx0.cjs');
67
67
  var processTermination = require('./processTermination-f17wxlMb.cjs');
@@ -69,30 +69,30 @@ var doctor$1 = require('./doctor-CJpFhHoK.cjs');
69
69
  var resources = require('./resources-BZ_Be0qM.cjs');
70
70
  var node_util = require('node:util');
71
71
  var template = require('./template-3fV9bi0X.cjs');
72
- var client$2 = require('./client-DI8Rxsbw.cjs');
72
+ var client$2 = require('./client-DP8FabOE.cjs');
73
73
  var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
74
74
  var store = require('./store-Cpb1LMNW.cjs');
75
- require('./acpSessionResume-DklOhwir.cjs');
76
- require('./pushNotifications-DdzTbrA3.cjs');
75
+ require('./acpSessionResume-DmOPXKpC.cjs');
76
+ require('./pushNotifications-B19lT5mY.cjs');
77
77
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
78
- require('./reconnectGate-DeDhtQJW.cjs');
78
+ require('./reconnectGate-B8ltzSJD.cjs');
79
79
  require('node:events');
80
80
  require('socket.io-client');
81
81
  require('./limits-C-a7gr04.cjs');
82
- require('./time-CDBZWYDb.cjs');
83
- require('./registerCommonHandlers-BrEtSwNk.cjs');
82
+ require('./time-BMCY7zJL.cjs');
83
+ require('./registerCommonHandlers-Y2siJGwL.cjs');
84
84
  require('util');
85
85
  require('cross-spawn');
86
86
  require('@paralleldrive/cuid2');
87
87
  require('chalk');
88
88
  require('node:module');
89
89
  require('tweetnacl');
90
- require('./browser-B0SEB6r3.cjs');
90
+ require('./browser-DSxpOnPb.cjs');
91
91
  require('open');
92
92
  require('./specialCommands-J3JFOq0J.cjs');
93
93
  require('./ids-B6ZC0HGt.cjs');
94
94
  require('url');
95
- require('./localHappyAgentAuth-DxlQgaer.cjs');
95
+ require('./localHappyAgentAuth-Dm9obisi.cjs');
96
96
  require('./claudeAccountEnv-Btp39mfa.cjs');
97
97
  require('node:readline');
98
98
  require('node-pty');
@@ -3915,8 +3915,9 @@ function createUpdateController(deps) {
3915
3915
  outcome = { state, version, detail, at: now(), ...manualVersion ? { source: "manual" } : {} };
3916
3916
  deps.publish(snapshot());
3917
3917
  }
3918
+ const superseded = () => !!deps.owned && !deps.owned();
3918
3919
  async function evaluate() {
3919
- if (!policy || running) return;
3920
+ if (!policy || running || superseded()) return;
3920
3921
  const target = manualVersion ?? policy.autoUpdateVersion ?? null;
3921
3922
  if (outcome?.version === target && ["failed", "installed", "manual_required"].includes(outcome.state)) {
3922
3923
  const fingerprint = JSON.stringify([policy.checkedAt, outcome.state, outcome.version, outcome.detail, manualVersion, autoUpdateEnabled]);
@@ -4008,19 +4009,23 @@ function createUpdateController(deps) {
4008
4009
  }
4009
4010
  }
4010
4011
  async function refresh() {
4011
- if (operation || blocked) return;
4012
+ if (superseded()) return "superseded";
4013
+ if (blocked) return "blocked";
4014
+ if (operation) return "busy";
4012
4015
  operation = "refresh";
4013
4016
  try {
4014
4017
  const next = await deps.policy();
4015
- if (!next) return;
4018
+ if (!next) return "unavailable";
4016
4019
  if (manualVersion && !validManualTarget(next, manualVersion)) manualVersion = null;
4017
4020
  policy = next;
4018
4021
  await evaluate();
4022
+ return policyStale() ? "stale" : "ok";
4019
4023
  } finally {
4020
4024
  operation = null;
4021
4025
  }
4022
4026
  }
4023
4027
  async function retry(version) {
4028
+ if (superseded()) return { error: "daemon_superseded" };
4024
4029
  if (operation || blocked) return { error: blocked ? "manual_recovery_required" : "update_in_progress" };
4025
4030
  if (typeof version !== "string" || outcome?.state !== "failed" || outcome.version !== version) {
4026
4031
  return { error: "no_matching_failed_update" };
@@ -4045,6 +4050,7 @@ function createUpdateController(deps) {
4045
4050
  }
4046
4051
  }
4047
4052
  async function request(version) {
4053
+ if (superseded()) return { error: "daemon_superseded" };
4048
4054
  if (operation || blocked) return { error: blocked ? "manual_recovery_required" : "update_in_progress" };
4049
4055
  operation = "request";
4050
4056
  try {
@@ -4088,7 +4094,8 @@ function createUpdateController(deps) {
4088
4094
  handoverHold = { reason, at: now() };
4089
4095
  publish("failed", manualVersion ?? policy?.autoUpdateVersion ?? null, "handover_preflight_failed");
4090
4096
  }
4091
- return { refresh, retry, request, tick, withHandover, holdHandover, isRunning: () => running, currentTarget: () => policy?.autoUpdateVersion ?? null };
4097
+ const policyStale = () => !policy || now() - policy.checkedAt > 65 * 6e4;
4098
+ return { refresh, retry, request, tick, withHandover, holdHandover, policyStale, isRunning: () => running, currentTarget: () => policy?.autoUpdateVersion ?? null };
4092
4099
  }
4093
4100
 
4094
4101
  const defaults = {
@@ -4297,6 +4304,132 @@ function createPolicyAnnouncementHandler(deps) {
4297
4304
  };
4298
4305
  }
4299
4306
 
4307
+ const POLICY_REFRESH_MIN_INTERVAL_MS = 5 * 6e4;
4308
+ const POLICY_REFRESH_RETRY_MS = 3e4;
4309
+ const POLICY_REFRESH_MAX_BACKOFF_MS = 30 * 6e4;
4310
+ const WAKE_GAP_SLACK_MS = 2 * 6e4;
4311
+ function createPolicyRefreshTrigger(deps) {
4312
+ const now = deps.now ?? Date.now;
4313
+ const minIntervalMs = deps.minIntervalMs ?? POLICY_REFRESH_MIN_INTERVAL_MS;
4314
+ const retryMs = deps.retryMs ?? POLICY_REFRESH_RETRY_MS;
4315
+ const maxBackoffMs = deps.maxBackoffMs ?? POLICY_REFRESH_MAX_BACKOFF_MS;
4316
+ const setTimer = deps.setTimer ?? ((fn, ms) => {
4317
+ const t = setTimeout(fn, ms);
4318
+ t.unref?.();
4319
+ return t;
4320
+ });
4321
+ const clearTimer = deps.clearTimer ?? ((handle) => clearTimeout(handle));
4322
+ const log = (message, level) => deps.log?.(message, level);
4323
+ let lastSuccessAt = null;
4324
+ let lastAttemptAt = null;
4325
+ let lastBypassAt = null;
4326
+ let failures = 0;
4327
+ let inFlight = false;
4328
+ let timer = null;
4329
+ let stopped = false;
4330
+ const backoff = (n) => n <= 0 ? retryMs : Math.min(retryMs * 2 ** (n - 1), maxBackoffMs);
4331
+ function earliestRun(reason) {
4332
+ const windowEnd = lastSuccessAt === null ? 0 : lastSuccessAt + minIntervalMs;
4333
+ const retryAt = lastAttemptAt === null ? 0 : lastAttemptAt + backoff(failures);
4334
+ if (retryAt <= Math.max(windowEnd, now())) return { at: windowEnd, bypass: false };
4335
+ const mayBypass = (reason === "connect" || reason === "wake") && (lastBypassAt === null || now() - lastBypassAt >= minIntervalMs);
4336
+ return mayBypass ? { at: windowEnd, bypass: true } : { at: retryAt, bypass: false };
4337
+ }
4338
+ function defer(ms) {
4339
+ if (timer !== null) return;
4340
+ timer = setTimer(() => {
4341
+ timer = null;
4342
+ request("scheduled");
4343
+ }, Math.max(0, ms));
4344
+ }
4345
+ function run(reason) {
4346
+ inFlight = true;
4347
+ lastAttemptAt = now();
4348
+ log(`CLI update policy refresh (${reason})`, failures === 0 ? "warn" : "debug");
4349
+ void deps.refresh().catch(() => "unavailable").then((result) => {
4350
+ inFlight = false;
4351
+ if (result === "superseded") {
4352
+ stop();
4353
+ return;
4354
+ }
4355
+ if (result === "ok") {
4356
+ if (failures > 0) log(`CLI update policy refresh recovered after ${failures} failed attempt(s)`, "warn");
4357
+ lastSuccessAt = now();
4358
+ failures = 0;
4359
+ return;
4360
+ }
4361
+ if (result === "busy") lastAttemptAt = now();
4362
+ else {
4363
+ if (result === "stale") lastSuccessAt = now();
4364
+ failures += 1;
4365
+ const stepUp = failures === 1 || backoff(failures) > backoff(failures - 1);
4366
+ const next = result === "blocked" ? "waiting for the next connect / wake / hourly check" : `next try in ${Math.round(backoff(failures) / 1e3)}s`;
4367
+ log(`CLI update policy refresh (${reason}) read no fresh policy (${result}, ${failures} in a row); ${next}`, stepUp ? "warn" : "debug");
4368
+ }
4369
+ if (stopped || result === "blocked") return;
4370
+ defer(earliestRun("scheduled").at - now());
4371
+ });
4372
+ }
4373
+ function request(reason) {
4374
+ if (stopped) return "stopped";
4375
+ if (inFlight) return "in-flight";
4376
+ const { at, bypass } = earliestRun(reason);
4377
+ const wait = at - now();
4378
+ if (wait > 0) {
4379
+ defer(wait);
4380
+ return "deferred";
4381
+ }
4382
+ if (bypass) lastBypassAt = now();
4383
+ if (timer !== null) {
4384
+ clearTimer(timer);
4385
+ timer = null;
4386
+ }
4387
+ run(reason);
4388
+ return "run";
4389
+ }
4390
+ function stop() {
4391
+ stopped = true;
4392
+ if (timer !== null) clearTimer(timer);
4393
+ timer = null;
4394
+ }
4395
+ return {
4396
+ request,
4397
+ /** Any other refresh (startup, hourly, announcement) that read a policy restarts the window (and a fresh one ends the backoff); one that found us superseded stops it. */
4398
+ noteRefreshed(result) {
4399
+ if (result === "ok" || result === "stale") lastSuccessAt = now();
4400
+ if (result === "ok") failures = 0;
4401
+ else if (result === "superseded") stop();
4402
+ },
4403
+ stop
4404
+ };
4405
+ }
4406
+ function createWakeDetector(intervalMs, now = Date.now, slackMs = WAKE_GAP_SLACK_MS) {
4407
+ let last = null;
4408
+ return {
4409
+ /** Call once per heartbeat; true when the process was just suspended. */
4410
+ beat() {
4411
+ const at = now();
4412
+ const woke = last !== null && at - last > intervalMs + slackMs;
4413
+ last = at;
4414
+ return woke;
4415
+ }
4416
+ };
4417
+ }
4418
+
4419
+ function createDaemonOwnership(deps) {
4420
+ let superseded = false;
4421
+ return {
4422
+ owns() {
4423
+ if (superseded) return false;
4424
+ const ownerPid = deps.statePid();
4425
+ if (ownerPid === null || ownerPid === deps.pid) return true;
4426
+ superseded = true;
4427
+ deps.onSuperseded(ownerPid);
4428
+ return false;
4429
+ }
4430
+ };
4431
+ }
4432
+
4300
4433
  const HARNESS_INSTALL_CATALOG = Object.freeze({
4301
4434
  claude: Object.freeze({ packages: [{ name: "@anthropic-ai/claude-code", spec: "latest" }], commands: ["claude"], minNode: "22.0.0", scripts: true }),
4302
4435
  codex: Object.freeze({ packages: [{ name: "@openai/codex", spec: "latest" }], commands: ["codex"], minNode: "16.0.0", scripts: false }),
@@ -8919,6 +9052,14 @@ async function startDaemon() {
8919
9052
  host: initialMachineMetadata.host
8920
9053
  })).then(() => logger.logger.debug(`[DAEMON RUN] claimed the machine record for host ${initialMachineMetadata.host}`)).catch((error) => logger.logger.debug("[DAEMON RUN] could not refresh the recorded host:", error));
8921
9054
  }
9055
+ const daemonOwnership = createDaemonOwnership({
9056
+ pid: process.pid,
9057
+ statePid: persistence.readDaemonStatePidSync,
9058
+ onSuperseded: (ownerPid) => {
9059
+ logger.logger.debug(`[DAEMON RUN] Somehow a different daemon (pid ${ownerPid}) was started without killing us. We should kill ourselves.`);
9060
+ requestShutdown("exception", "A different daemon was started without killing us. We should kill ourselves.");
9061
+ }
9062
+ });
8922
9063
  let lastUpdateLog = "";
8923
9064
  let harnessInstaller = null;
8924
9065
  let handoverInFlight = false;
@@ -8941,7 +9082,9 @@ async function startDaemon() {
8941
9082
  installFenced: () => !!harnessInstaller?.isRunning(),
8942
9083
  busyGraceMs: resolveBusyInstallGrace(process.env.HAPPY_CLI_UPDATE_BUSY_GRACE_MS),
8943
9084
  lastInstall: lastInstallStore(configuration.configuration.happyHomeDir),
9085
+ owned: daemonOwnership.owns,
8944
9086
  publish: (state) => {
9087
+ if (!daemonOwnership.owns()) return;
8945
9088
  cliUpdateStateRef = state;
8946
9089
  fileState = { ...fileState, cliUpdate: state };
8947
9090
  persistence.writeDaemonState(fileState);
@@ -8978,10 +9121,17 @@ async function startDaemon() {
8978
9121
  relayMoveInFlight = null;
8979
9122
  });
8980
9123
  });
8981
- const refreshCliUpdate = () => updateController.refresh().catch((error) => {
9124
+ const policyRefresh = createPolicyRefreshTrigger({
9125
+ refresh: () => updateController.refresh(),
9126
+ log: (message, level) => level === "warn" ? logger.logger.warn(`[DAEMON RUN] ${message}`) : logger.logger.debug(`[DAEMON RUN] ${message}`)
9127
+ });
9128
+ const refreshCliUpdate = () => updateController.refresh().then(policyRefresh.noteRefreshed).catch((error) => {
8982
9129
  logger.logger.debug("[DAEMON RUN] CLI update policy check failed:", error);
8983
9130
  });
8984
- void refreshCliUpdate();
9131
+ apiMachine.setControlConnectedHandler(() => {
9132
+ policyRefresh.request("connect");
9133
+ });
9134
+ policyRefresh.request("startup");
8985
9135
  const cliUpdateIntervalMs = cliUpdate.resolveCliUpdateCheckInterval(process.env.HAPPY_CLI_UPDATE_CHECK_INTERVAL);
8986
9136
  if (process.env.HAPPY_CLI_UPDATE_CHECK_INTERVAL && cliUpdateIntervalMs === cliUpdate.DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS && process.env.HAPPY_CLI_UPDATE_CHECK_INTERVAL.trim() !== String(cliUpdate.DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS)) {
8987
9137
  logger.logger.warn(`[DAEMON RUN] Ignoring invalid HAPPY_CLI_UPDATE_CHECK_INTERVAL; using ${cliUpdate.DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS}ms`);
@@ -9018,6 +9168,7 @@ async function startDaemon() {
9018
9168
  });
9019
9169
  apiMachine.setHarnessInstallHandler((params) => harnessInstaller.request(params));
9020
9170
  const heartbeatIntervalMs = parseInt(process.env.HAPPY_DAEMON_HEARTBEAT_INTERVAL || "60000");
9171
+ const wakeDetector = createWakeDetector(heartbeatIntervalMs);
9021
9172
  const restartOnStaleVersionAndHeartbeat = setInterval(serialTask(async () => {
9022
9173
  try {
9023
9174
  if (process.env.DEBUG) {
@@ -9029,6 +9180,7 @@ async function startDaemon() {
9029
9180
  onChildExited(pid);
9030
9181
  }
9031
9182
  }
9183
+ if (!daemonOwnership.owns()) return;
9032
9184
  await updateController.tick();
9033
9185
  await updateController.withHandover(async () => {
9034
9186
  handoverInFlight = true;
@@ -9065,6 +9217,7 @@ async function startDaemon() {
9065
9217
  clearInterval(restartOnStaleVersionAndHeartbeat);
9066
9218
  clearInterval(cliUpdateInterval);
9067
9219
  policyAnnouncements.stop();
9220
+ policyRefresh.stop();
9068
9221
  stopAgentVersionChecks();
9069
9222
  claudeAuthService.stop();
9070
9223
  stopAccountWatch();
@@ -9092,12 +9245,9 @@ async function startDaemon() {
9092
9245
  handoverInFlight = false;
9093
9246
  }
9094
9247
  });
9095
- const daemonState = await persistence.readDaemonState();
9096
- if (daemonState && daemonState.pid !== process.pid) {
9097
- logger.logger.debug("[DAEMON RUN] Somehow a different daemon was started without killing us. We should kill ourselves.");
9098
- requestShutdown("exception", "A different daemon was started without killing us. We should kill ourselves.");
9099
- return;
9100
- }
9248
+ if (!daemonOwnership.owns()) return;
9249
+ const woke = wakeDetector.beat();
9250
+ if (woke || updateController.policyStale()) policyRefresh.request(woke ? "wake" : "stale");
9101
9251
  try {
9102
9252
  fileState = withDaemonHeartbeat(fileState, (/* @__PURE__ */ new Date()).toLocaleString());
9103
9253
  persistence.writeDaemonState(fileState);
@@ -9209,6 +9359,7 @@ async function startDaemon() {
9209
9359
  clearInterval(cliUpdateInterval);
9210
9360
  clearInterval(autoRestartSweep);
9211
9361
  policyAnnouncements.stop();
9362
+ policyRefresh.stop();
9212
9363
  stopAgentVersionChecks();
9213
9364
  await apiMachine.updateDaemonState((state) => ({
9214
9365
  ...state,