very-happy-cli 0.2.205 → 0.2.207

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 (194) hide show
  1. package/dist/{AcpBackend-BqkDMgcN.mjs → AcpBackend-Bl-oWkHt.mjs} +3 -3
  2. package/dist/{AcpBackend-Do37yiZg.cjs → AcpBackend-C4SaE4IN.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BpQKu2_m.cjs → AcpSessionManager-CKSM-N3a.cjs} +1 -1
  4. package/dist/{AcpSessionManager-CvEO7Yex.mjs → AcpSessionManager-DqNWNKVy.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-BpaIn9ko.mjs → BasePermissionHandler-BAfjjqWG.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-CUXi-tq4.cjs → BasePermissionHandler-DffP0tjT.cjs} +1 -1
  7. package/dist/{account-C1nsl3ij.mjs → account-CneNvaLv.mjs} +5 -5
  8. package/dist/{account-SwG5Yefp.cjs → account-pH6JQJbQ.cjs} +5 -5
  9. package/dist/{acpSessionResume-DvDKsJTV.mjs → acpSessionResume-C6KuYvK8.mjs} +1 -1
  10. package/dist/{acpSessionResume-BCEol11N.cjs → acpSessionResume-Cp2majJ5.cjs} +1 -1
  11. package/dist/{agentHome-BuFxooEg.mjs → agentHome-BkiHrQwj.mjs} +4 -4
  12. package/dist/{agentHome-8wzmbm0H.cjs → agentHome-ZGpu5XKy.cjs} +4 -4
  13. package/dist/{api-20GbdpxY.mjs → api-D7EAwOT2.mjs} +9 -9
  14. package/dist/{api-BnTF8fkj.cjs → api-eXuwG3LS.cjs} +9 -9
  15. package/dist/{apiMachine-C8NGJHHd.mjs → apiMachine-B5c9zCjB.mjs} +56 -16
  16. package/dist/{apiMachine-cyDRM_S-.cjs → apiMachine-B8ZxgTx1.cjs} +56 -16
  17. package/dist/{attachmentContent-Coo9lUxK.mjs → attachmentContent-DV7W3vw7.mjs} +2 -2
  18. package/dist/{attachmentContent-B7zz_LPF.cjs → attachmentContent-DhTreh-W.cjs} +2 -2
  19. package/dist/{auth-By6u_iKB.cjs → auth-CFUuiMdV.cjs} +5 -5
  20. package/dist/{auth-75rP3vc0.mjs → auth-DX3_VbOL.mjs} +8 -8
  21. package/dist/{auth-w4UTRbIf.cjs → auth-DhZkCYgz.cjs} +8 -8
  22. package/dist/{auth-BX6xrdHv.mjs → auth-hEcrRFkt.mjs} +5 -5
  23. package/dist/{auto-BhmWtRvv.mjs → auto-BI4y9q_F.mjs} +14 -14
  24. package/dist/{auto-xr_gqUoy.cjs → auto-C4fniaPr.cjs} +14 -14
  25. package/dist/{bootstrap-Dn_VvHSt.mjs → bootstrap-CBoerZOm.mjs} +2 -2
  26. package/dist/{bootstrap-3ti7LXMz.cjs → bootstrap-DPbGC_1B.cjs} +2 -2
  27. package/dist/{browser-C4PVyjGe.cjs → browser-BRH_1Tgz.cjs} +1 -1
  28. package/dist/{browser-C4wWGXH7.mjs → browser-ilsUkzwR.mjs} +1 -1
  29. package/dist/{claudeLocal-B8rOA-EB.mjs → claudeLocal-CmRDtqcj.mjs} +4 -4
  30. package/dist/{claudeLocal-DZALKVVc.cjs → claudeLocal-D6-w4R7R.cjs} +4 -4
  31. package/dist/{claudeLocalLauncher-CJPRSv3z.mjs → claudeLocalLauncher-B9gzCvDn.mjs} +9 -9
  32. package/dist/{claudeLocalLauncher-Bf5uj0EA.cjs → claudeLocalLauncher-D93IuVcy.cjs} +9 -9
  33. package/dist/{claudeSessionFork-unEBLW0t.cjs → claudeSessionFork-Bo-LD1DH.cjs} +1 -1
  34. package/dist/{claudeSessionFork-BK4U655i.mjs → claudeSessionFork-ghL7gnlU.mjs} +1 -1
  35. package/dist/{client-Bh-y6cVc.cjs → client-5SAqN0dw.cjs} +4 -4
  36. package/dist/{client-BbYds4AV.mjs → client-BGLgYzYC.mjs} +4 -4
  37. package/dist/{client-DGsdLx8L.cjs → client-BcUWsWK-.cjs} +2 -2
  38. package/dist/{client-wMlUPnrV.cjs → client-CTsx4zlq.cjs} +2 -2
  39. package/dist/{client-BxtaglBR.mjs → client-DCFPJD00.mjs} +2 -2
  40. package/dist/{client-m-K1b6Qa.mjs → client-DTwpdW59.mjs} +2 -2
  41. package/dist/{client-CvLm25Wq.mjs → client-DhnaMxKS.mjs} +2 -2
  42. package/dist/{client-BKjBr6pc.cjs → client-N9svGBOP.cjs} +2 -2
  43. package/dist/codex/happyMcpStdioBridge.cjs +18 -18
  44. package/dist/codex/happyMcpStdioBridge.mjs +18 -18
  45. package/dist/{codexAppServerClient-6aQelpRl.cjs → codexAppServerClient-3mdddlO9.cjs} +3 -3
  46. package/dist/{codexAppServerClient-BeRimnu9.mjs → codexAppServerClient-CBVlr7hu.mjs} +3 -3
  47. package/dist/{codexCommand-CmGNDs45.mjs → codexCommand-BP88QTCU.mjs} +43 -43
  48. package/dist/{codexCommand-CYVaGmhh.cjs → codexCommand-Bps4LkvI.cjs} +43 -43
  49. package/dist/{codexTermination-B09HyYIB.cjs → codexTermination-C9CVmb9Q.cjs} +1 -1
  50. package/dist/{codexTermination-Z18pGkkl.mjs → codexTermination-CUPmLwbF.mjs} +1 -1
  51. package/dist/{config-Dq_N615Z.cjs → config-O4t1U8Bi.cjs} +3 -3
  52. package/dist/{config-4b-sF37g.mjs → config-eTAvnx-a.mjs} +3 -3
  53. package/dist/{configuration-Fx61b4MJ.cjs → configuration-B-smHMf7.cjs} +1 -1
  54. package/dist/{configuration-H8q1sMwk.mjs → configuration-C4w7_yT9.mjs} +1 -1
  55. package/dist/{connect-D54AnDIT.cjs → connect-BGZmkECR.cjs} +12 -12
  56. package/dist/{connect-BwSwKPzI.mjs → connect-BJT1vGf-.mjs} +12 -12
  57. package/dist/{context-CM1Xd_HO.mjs → context-Cy2pdGOi.mjs} +1 -1
  58. package/dist/{context-D-QOcYuX.cjs → context-Dfj4Pjqz.cjs} +1 -1
  59. package/dist/{controlClient-D9DYqW02.mjs → controlClient-CtBRHlbJ.mjs} +3 -3
  60. package/dist/{controlClient-D04wXKoQ.cjs → controlClient-Dlm7wz-k.cjs} +3 -3
  61. package/dist/{createSessionMetadata-Ce539QXK.cjs → createSessionMetadata-B1NbiqH5.cjs} +2 -2
  62. package/dist/{createSessionMetadata-CHa4pufa.mjs → createSessionMetadata-DqBHMEgs.mjs} +2 -2
  63. package/dist/{deterministicJson-BEeXnWCF.mjs → deterministicJson-B94VfD9g.mjs} +14 -14
  64. package/dist/{deterministicJson-D34CnNHO.cjs → deterministicJson-DGheByZm.cjs} +14 -14
  65. package/dist/{doctor-BX8oWKZq.cjs → doctor-CdXBxTms.cjs} +7 -7
  66. package/dist/{doctor-BI0Iywt_.mjs → doctor-D3Ph5EzU.mjs} +7 -7
  67. package/dist/{downloadTarget-TzXJEh6W.cjs → downloadTarget-BpToCct7.cjs} +6 -6
  68. package/dist/{downloadTarget-DX3m00OE.mjs → downloadTarget-DBDqU17k.mjs} +6 -6
  69. package/dist/{ensureDaemonRunning-BBBqZ6vQ.mjs → ensureDaemonRunning-7J9kb-Sj.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-Bvu-yyFn.cjs → ensureDaemonRunning-Balq1x5B.cjs} +5 -5
  71. package/dist/{exitNotice-M4UjtWkr.cjs → exitNotice-CTcWpCmg.cjs} +2 -2
  72. package/dist/{exitNotice-gOAdDcL3.mjs → exitNotice-DkJaD0I0.mjs} +2 -2
  73. package/dist/{format-BPAREVhi.mjs → format-0c3qb7FE.mjs} +1 -1
  74. package/dist/{format-BEktLc45.cjs → format-DoTTSy8C.cjs} +1 -1
  75. package/dist/{handleResumeCommand-DziiqogX.mjs → handleResumeCommand-BUIHxf87.mjs} +5 -5
  76. package/dist/{handleResumeCommand-6dYW_WOi.cjs → handleResumeCommand-Dp-rTs9Q.cjs} +5 -5
  77. package/dist/{index-UuWDafdi.mjs → index-B-hkUPYN.mjs} +41 -41
  78. package/dist/{index-CzBvl9py.mjs → index-BlUhrNAx.mjs} +3 -3
  79. package/dist/{index-Cawt-fgZ.cjs → index-CP6WBAk_.cjs} +4 -4
  80. package/dist/{index-BRq5iitn.mjs → index-D47YHzru.mjs} +4 -4
  81. package/dist/{index-DCvq8Cfw.mjs → index-DE5JMca_.mjs} +4 -4
  82. package/dist/{index-bVMcFi7v.cjs → index-DMhMr4cb.cjs} +4 -4
  83. package/dist/{index-BmacwzcK.cjs → index-DWtaNZd1.cjs} +40 -40
  84. package/dist/{index-CoW4RNEb.cjs → index-Du6DD3Re.cjs} +3 -3
  85. package/dist/index.cjs +2 -2
  86. package/dist/index.mjs +2 -2
  87. package/dist/{install-B4OVUIw5.mjs → install-CwQRBYJL.mjs} +3 -3
  88. package/dist/{install-BQc4Hwuo.cjs → install-Sr04Bhi-.cjs} +3 -3
  89. package/dist/{issue-h_BIrzLs.mjs → issue-D9rmZ2Im.mjs} +7 -7
  90. package/dist/{issue-WpLZYxUQ.cjs → issue-pnYFBO-F.cjs} +7 -7
  91. package/dist/lib.cjs +11 -11
  92. package/dist/lib.d.cts +65 -0
  93. package/dist/lib.d.mts +65 -0
  94. package/dist/lib.mjs +11 -11
  95. package/dist/{localHappyAgentAuth-DgLh3xzW.mjs → localHappyAgentAuth-Bc3bo0fI.mjs} +1 -1
  96. package/dist/{localHappyAgentAuth-DQRWBUxQ.cjs → localHappyAgentAuth-BpBQ_aFo.cjs} +1 -1
  97. package/dist/{logger-BKAKIZdy.mjs → logger-8f-WNgus.mjs} +2 -2
  98. package/dist/{logger-DP35yx-C.cjs → logger-HxTu5uFs.cjs} +2 -2
  99. package/dist/{machineMetadata-CZj0XwM_.cjs → machineMetadata-C7DEm41X.cjs} +3 -3
  100. package/dist/{machineMetadata-DTlMMhj_.mjs → machineMetadata-EyybyGYp.mjs} +3 -3
  101. package/dist/{main-l_nP9IQq.cjs → main-CW8xXpXM.cjs} +48 -48
  102. package/dist/{main-BIE1zeaH.mjs → main-Dmb6KKtB.mjs} +48 -48
  103. package/dist/{mcp-KQHODyR3.cjs → mcp-BHKpSJPk.cjs} +15 -15
  104. package/dist/{mcp-B5F6-_7o.mjs → mcp-DAuW3X2i.mjs} +15 -15
  105. package/dist/{mirrorProtocol-duXHJeBW.cjs → mirrorProtocol-Cmxr0YBU.cjs} +2 -2
  106. package/dist/{mirrorProtocol-DDOUSWqL.mjs → mirrorProtocol-kXv1EaAI.mjs} +2 -2
  107. package/dist/{package-BCJfNMlt.cjs → package-ChmhpzsE.cjs} +8 -8
  108. package/dist/{package-CMmhJwSf.mjs → package-Cp8RjVmm.mjs} +8 -8
  109. package/dist/{panels-CBlIJIu8.cjs → panels-iylFFXPZ.cjs} +5 -5
  110. package/dist/{panels-BWxZMb_x.mjs → panels-x99J6c1O.mjs} +5 -5
  111. package/dist/{peerTools-C6Y28jqG.cjs → peerTools-ZUDz2PCs.cjs} +5 -5
  112. package/dist/{peerTools-ZJzoM48N.mjs → peerTools-jWghbgAH.mjs} +5 -5
  113. package/dist/{persistence-dLgWDclq.mjs → persistence-D1E7jiV4.mjs} +2 -2
  114. package/dist/{persistence-iiVFxhbt.cjs → persistence-DxboRqwb.cjs} +2 -2
  115. package/dist/{piRunnerArgs-DuWYye4f.mjs → piRunnerArgs-BM9b8W_4.mjs} +1 -1
  116. package/dist/{piRunnerArgs-DxWxgOSZ.cjs → piRunnerArgs-gNYQH48T.cjs} +1 -1
  117. package/dist/{piRuntime-Cbwk6bN0.mjs → piRuntime-B6X6ax5K.mjs} +1 -1
  118. package/dist/{piRuntime-6UnkPaS1.cjs → piRuntime-mqdaYw91.cjs} +1 -1
  119. package/dist/{piTerminal-BaoUqlM0.cjs → piTerminal-D-bOYy3E.cjs} +17 -17
  120. package/dist/{piTerminal-Dn0qN9nb.mjs → piTerminal-DaoQF1Rn.mjs} +17 -17
  121. package/dist/{pushNotifications-gcQv61e6.cjs → pushNotifications-EJWZAYed.cjs} +19 -2
  122. package/dist/{pushNotifications-DD9Z0CoN.mjs → pushNotifications-WgO2p0eT.mjs} +19 -2
  123. package/dist/{query-CFdlRD7b.mjs → query-BGtAkN33.mjs} +1 -1
  124. package/dist/{query-12momZSq.cjs → query-ykhx5AZx.cjs} +1 -1
  125. package/dist/{rateLimitWindows-CVS-btq-.mjs → rateLimitWindows-BRImToc6.mjs} +1 -1
  126. package/dist/{rateLimitWindows-D2Gmg7jU.cjs → rateLimitWindows-Cfdnt4On.cjs} +1 -1
  127. package/dist/{reconnectGate-m81ySKhh.mjs → reconnectGate-B9iXSyiI.mjs} +1 -1
  128. package/dist/{reconnectGate-BkSaZdIx.cjs → reconnectGate-DY97bPDg.cjs} +1 -1
  129. package/dist/{registerCommonHandlers-CqLHkmG2.mjs → registerCommonHandlers-YbBzC20u.mjs} +2 -2
  130. package/dist/{registerCommonHandlers-B5p3ZZmp.cjs → registerCommonHandlers-YsrcwRo3.cjs} +2 -2
  131. package/dist/{registerKillSessionHandler-Bf_Q9yii.cjs → registerKillSessionHandler-ClPpvQnu.cjs} +5 -5
  132. package/dist/{registerKillSessionHandler-jYSuGIP1.mjs → registerKillSessionHandler-d3rziH37.mjs} +5 -5
  133. package/dist/{registerSideQuestionHandler-CPR29B9d.mjs → registerSideQuestionHandler-C3K33AGg.mjs} +4 -4
  134. package/dist/{registerSideQuestionHandler-DSIw3xPW.cjs → registerSideQuestionHandler-CMvcaD2A.cjs} +4 -4
  135. package/dist/{remoteSessionClient-CLuxs0_y.mjs → remoteSessionClient-B1C7gwqX.mjs} +5 -5
  136. package/dist/{remoteSessionClient-DX-60nto.cjs → remoteSessionClient-e9jDdGyc.cjs} +5 -5
  137. package/dist/{reportProgressTool-k3g3D6cX.mjs → reportProgressTool-67vB9Y7g.mjs} +4 -4
  138. package/dist/{reportProgressTool-D1XAxeY1.cjs → reportProgressTool-B3yNkD_S.cjs} +4 -4
  139. package/dist/{run-BBJqaIoY.mjs → run-BjpvcAAW.mjs} +269 -37
  140. package/dist/{run-DOb_agpA.cjs → run-c4votzBI.cjs} +269 -37
  141. package/dist/{runClaude-NTvReMNp.mjs → runClaude-B1NEkS3e.mjs} +20 -20
  142. package/dist/{runClaude-BU3Lrd5o.cjs → runClaude-DkaZHsDR.cjs} +20 -20
  143. package/dist/{runClaudeDeps-DQV-QdDi.cjs → runClaudeDeps-C8s0t81_.cjs} +38 -38
  144. package/dist/{runClaudeDeps-Dh2LVY2w.mjs → runClaudeDeps-JYJCSgT2.mjs} +44 -44
  145. package/dist/{runGemini-CGD4bqQ3.mjs → runGemini-Bgmlv2sP.mjs} +35 -35
  146. package/dist/{runGemini-dk877ztP.cjs → runGemini-m1e3OwXi.cjs} +35 -35
  147. package/dist/{runOpenClaw-CQakHPPq.cjs → runOpenClaw-B5iSbZvU.cjs} +17 -17
  148. package/dist/{runOpenClaw-6MAJ_tHi.mjs → runOpenClaw-BTry3E0Y.mjs} +17 -17
  149. package/dist/{sandbox-B3YMD9I6.mjs → sandbox-BPZsegqb.mjs} +4 -4
  150. package/dist/{sandbox-8DeDre0R.cjs → sandbox-D-irSe8t.cjs} +4 -4
  151. package/dist/{selfCheck-BpvUNBmv.cjs → selfCheck-08_EII_I.cjs} +39 -39
  152. package/dist/selfCheck-BPzN6ip2.mjs +89 -0
  153. package/dist/{send-DgrbVZzC.mjs → send-4esWxXzr.mjs} +8 -8
  154. package/dist/{send-Bym_IU4n.cjs → send-DUNnoCVK.cjs} +8 -8
  155. package/dist/{server-CmAgeEhS.mjs → server-Bn1QXAY4.mjs} +4 -4
  156. package/dist/{server-BY-FubRe.cjs → server-NG8ODDc_.cjs} +6 -6
  157. package/dist/{sessionLock-BMtAQ4bW.mjs → sessionLock-BKnXIWnQ.mjs} +9 -4
  158. package/dist/{sessionLock-WXtjQC9q.cjs → sessionLock-CW-P7VU9.cjs} +9 -3
  159. package/dist/{sessionOps-BEVzE38e.cjs → sessionOps-Cei-Q7OB.cjs} +4 -4
  160. package/dist/{sessionOps-BxLhHEhM.mjs → sessionOps-Ct7ayY1X.mjs} +4 -4
  161. package/dist/{sessionProvider-B1tL5K5f.mjs → sessionProvider-D8bZBiAX.mjs} +5 -5
  162. package/dist/{sessionProvider-DCnZFxwe.cjs → sessionProvider-DoXNlG4E.cjs} +5 -5
  163. package/dist/{sessionScanner-eX2f-j0u.cjs → sessionScanner-CGs_Lbq7.cjs} +3 -3
  164. package/dist/{sessionScanner-Ctm9w-AJ.mjs → sessionScanner-DivfvOis.mjs} +3 -3
  165. package/dist/{sessions-BuxOqRcc.mjs → sessions-DN47YSMs.mjs} +10 -10
  166. package/dist/{sessions-BG8r7uht.cjs → sessions-VYh46wvf.cjs} +10 -10
  167. package/dist/{setupOfflineReconnection-65k1yEFn.cjs → setupOfflineReconnection-DHBmg5_6.cjs} +2 -2
  168. package/dist/{setupOfflineReconnection-Dd4NCN9i.mjs → setupOfflineReconnection-DqeCU4SM.mjs} +2 -2
  169. package/dist/{spawn-wys_MPgK.mjs → spawn-ChyfhZlN.mjs} +12 -12
  170. package/dist/{spawn-0YaC-DQg.cjs → spawn-DQLUI6h9.cjs} +12 -12
  171. package/dist/{spawnHappyCLI-EvPb0jB3.mjs → spawnHappyCLI-D6R-aIkL.mjs} +1 -1
  172. package/dist/{spawnHappyCLI-Bf_N42fi.cjs → spawnHappyCLI-DIR-U_rK.cjs} +1 -1
  173. package/dist/{startFileWatcher-GF4BNFA1.mjs → startFileWatcher-CQCQrB3d.mjs} +1 -1
  174. package/dist/{startFileWatcher-ikipjpDk.cjs → startFileWatcher-Qy7f8U4k.cjs} +1 -1
  175. package/dist/{startupSessionCreate-Dp3_kvi_.mjs → startupSessionCreate-BgoNJdcx.mjs} +3 -3
  176. package/dist/{startupSessionCreate-CHU23k6u.cjs → startupSessionCreate-cInaqBEd.cjs} +3 -3
  177. package/dist/{sync-Dm6GaS8P.cjs → sync-DS_emV3g.cjs} +1 -1
  178. package/dist/{sync-Co0wRhGu.mjs → sync-DzKT0Ova.mjs} +1 -1
  179. package/dist/{systemPrompt-Ds7HcfDZ.cjs → systemPrompt-DVy690s2.cjs} +1 -1
  180. package/dist/{systemPrompt-5cZbY0sf.mjs → systemPrompt-rpf-Xff-.mjs} +1 -1
  181. package/dist/{teams-DBWFUOC3.mjs → teams-CbqS5j_2.mjs} +8 -8
  182. package/dist/{teams-nrcZL-1X.cjs → teams-DwBVRsbw.cjs} +8 -8
  183. package/dist/{time-NSglRbyr.cjs → time-i8fiLSHv.cjs} +1 -1
  184. package/dist/{time-Cn0mV-di.mjs → time-o_AW-82H.mjs} +1 -1
  185. package/dist/{titleGenerator-CMIUB04_.cjs → titleGenerator-EGdbOCLR.cjs} +2 -2
  186. package/dist/{titleGenerator-hmxUR3rU.mjs → titleGenerator-rKTQTQN7.mjs} +1 -1
  187. package/dist/{todo-CDdBityL.mjs → todo-CWyVxUyT.mjs} +7 -7
  188. package/dist/{todo-D5BoNMb7.cjs → todo-d8aPaBq_.cjs} +7 -7
  189. package/dist/{tools-BmQbzAfY.mjs → tools--22wuNI5.mjs} +1 -1
  190. package/dist/{tools-CLkNfafW.cjs → tools-DtSHBOmt.cjs} +1 -1
  191. package/dist/{uninstall-DCx_qNMZ.cjs → uninstall-BAaq0c10.cjs} +3 -3
  192. package/dist/{uninstall-DE0SH2qs.mjs → uninstall-CJqFoKZO.mjs} +3 -3
  193. package/package.json +8 -8
  194. package/dist/selfCheck-BCKIF6ST.mjs +0 -89
@@ -1,99 +1,99 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-Do37yiZg.cjs');
4
- var logger = require('./logger-DP35yx-C.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-BpQKu2_m.cjs');
3
+ var AcpBackend = require('./AcpBackend-C4SaE4IN.cjs');
4
+ var logger = require('./logger-HxTu5uFs.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-CKSM-N3a.cjs');
6
6
  var index = require('./index-BYL_X3gP.cjs');
7
- var deterministicJson = require('./deterministicJson-D34CnNHO.cjs');
7
+ var deterministicJson = require('./deterministicJson-DGheByZm.cjs');
8
8
  var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
9
9
  var heldInput = require('./heldInput-BOtqFO2r.cjs');
10
- var configuration = require('./configuration-Fx61b4MJ.cjs');
11
- var attachmentContent = require('./attachmentContent-B7zz_LPF.cjs');
12
- var piRuntime = require('./piRuntime-6UnkPaS1.cjs');
10
+ var configuration = require('./configuration-B-smHMf7.cjs');
11
+ var attachmentContent = require('./attachmentContent-DhTreh-W.cjs');
12
+ var piRuntime = require('./piRuntime-mqdaYw91.cjs');
13
13
  var node_crypto = require('node:crypto');
14
14
  var path = require('node:path');
15
- var api = require('./api-BnTF8fkj.cjs');
15
+ var api = require('./api-eXuwG3LS.cjs');
16
16
  var sessionMetadata = require('./sessionMetadata-B44cL4Xj.cjs');
17
- var client = require('./client-BKjBr6pc.cjs');
18
- var registerKillSessionHandler = require('./registerKillSessionHandler-Bf_Q9yii.cjs');
19
- var persistence = require('./persistence-iiVFxhbt.cjs');
20
- var machineMetadata = require('./machineMetadata-CZj0XwM_.cjs');
21
- var createSessionMetadata = require('./createSessionMetadata-Ce539QXK.cjs');
22
- var setupOfflineReconnection = require('./setupOfflineReconnection-65k1yEFn.cjs');
23
- var startupSessionCreate = require('./startupSessionCreate-CHU23k6u.cjs');
24
- var controlClient = require('./controlClient-D04wXKoQ.cjs');
17
+ var client = require('./client-N9svGBOP.cjs');
18
+ var registerKillSessionHandler = require('./registerKillSessionHandler-ClPpvQnu.cjs');
19
+ var persistence = require('./persistence-DxboRqwb.cjs');
20
+ var machineMetadata = require('./machineMetadata-C7DEm41X.cjs');
21
+ var createSessionMetadata = require('./createSessionMetadata-B1NbiqH5.cjs');
22
+ var setupOfflineReconnection = require('./setupOfflineReconnection-DHBmg5_6.cjs');
23
+ var startupSessionCreate = require('./startupSessionCreate-cInaqBEd.cjs');
24
+ var controlClient = require('./controlClient-Dlm7wz-k.cjs');
25
25
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
26
- var sessionLock = require('./sessionLock-WXtjQC9q.cjs');
27
- var acpSessionResume = require('./acpSessionResume-BCEol11N.cjs');
26
+ var sessionLock = require('./sessionLock-CW-P7VU9.cjs');
27
+ var acpSessionResume = require('./acpSessionResume-Cp2majJ5.cjs');
28
28
  var reconnectEnv = require('./reconnectEnv-B31lY4nR.cjs');
29
29
  var streamRelay = require('./streamRelay-keuifCPQ.cjs');
30
30
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
31
- var BasePermissionHandler = require('./BasePermissionHandler-CUXi-tq4.cjs');
32
- var titleGenerator = require('./titleGenerator-CMIUB04_.cjs');
31
+ var BasePermissionHandler = require('./BasePermissionHandler-DffP0tjT.cjs');
32
+ var titleGenerator = require('./titleGenerator-EGdbOCLR.cjs');
33
33
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
34
34
  var node_fs = require('node:fs');
35
35
  var os = require('node:os');
36
36
  require('node:child_process');
37
37
  require('@agentclientprotocol/sdk');
38
- require('./time-NSglRbyr.cjs');
38
+ require('./time-i8fiLSHv.cjs');
39
39
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
40
40
  require('./processTree-CMHWlVse.cjs');
41
- require('./package-BCJfNMlt.cjs');
41
+ require('./package-ChmhpzsE.cjs');
42
42
  require('chalk');
43
43
  require('node:util');
44
44
  require('@paralleldrive/cuid2');
45
45
  require('zod');
46
46
  require('./prompt-Bof2aQkI.cjs');
47
- require('./client-wMlUPnrV.cjs');
48
- require('./exitNotice-M4UjtWkr.cjs');
49
- require('./reportProgressTool-D1XAxeY1.cjs');
50
- require('./client-DGsdLx8L.cjs');
47
+ require('./client-CTsx4zlq.cjs');
48
+ require('./exitNotice-CTcWpCmg.cjs');
49
+ require('./reportProgressTool-B3yNkD_S.cjs');
50
+ require('./client-BcUWsWK-.cjs');
51
51
  require('./precheckCompat-CWOi5c9L.cjs');
52
- require('./format-BEktLc45.cjs');
52
+ require('./format-DoTTSy8C.cjs');
53
53
  require('./agentGuidance-BtBx2xxE.cjs');
54
54
  require('./trimIdent-4gvk9Wk6.cjs');
55
55
  require('./pi-DlsrPCTa.cjs');
56
56
  require('./fileStore-7qhnbs6N.cjs');
57
57
  require('node:fs/promises');
58
- require('./client-Bh-y6cVc.cjs');
59
- require('./context-D-QOcYuX.cjs');
60
- require('./sessionOps-BEVzE38e.cjs');
58
+ require('./client-5SAqN0dw.cjs');
59
+ require('./context-Dfj4Pjqz.cjs');
60
+ require('./sessionOps-Cei-Q7OB.cjs');
61
61
  require('axios');
62
62
  require('socket.io-client');
63
63
  require('./backgroundTaskActivity-CBvUdj39.cjs');
64
64
  require('./resources-BZ_Be0qM.cjs');
65
- require('./tools-CLkNfafW.cjs');
66
- require('./peerTools-C6Y28jqG.cjs');
65
+ require('./tools-DtSHBOmt.cjs');
66
+ require('./peerTools-ZUDz2PCs.cjs');
67
67
  require('./ids-B6ZC0HGt.cjs');
68
- require('./remoteSessionClient-DX-60nto.cjs');
68
+ require('./remoteSessionClient-e9jDdGyc.cjs');
69
69
  require('@modelcontextprotocol/sdk/server/mcp.js');
70
70
  require('node:http');
71
71
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
72
72
  require('./limits-C-a7gr04.cjs');
73
- require('./downloadTarget-TzXJEh6W.cjs');
73
+ require('./downloadTarget-BpToCct7.cjs');
74
74
  require('./terminals-dK3Lrjfp.cjs');
75
75
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
76
76
  require('./tmuxSocket-Dg11Olx0.cjs');
77
- require('./bootstrap-3ti7LXMz.cjs');
77
+ require('./bootstrap-DPbGC_1B.cjs');
78
78
  require('./webPanels-FCgFKvVe.cjs');
79
- require('./pushNotifications-gcQv61e6.cjs');
79
+ require('./pushNotifications-EJWZAYed.cjs');
80
80
  require('./previewPath-B0rBdhy1.cjs');
81
81
  require('crypto');
82
- require('./reconnectGate-BkSaZdIx.cjs');
82
+ require('./reconnectGate-DY97bPDg.cjs');
83
83
  require('os');
84
84
  require('child_process');
85
85
  require('node:events');
86
- require('./registerCommonHandlers-B5p3ZZmp.cjs');
86
+ require('./registerCommonHandlers-YsrcwRo3.cjs');
87
87
  require('util');
88
88
  require('fs/promises');
89
89
  require('path');
90
90
  require('cross-spawn');
91
- require('./sync-Dm6GaS8P.cjs');
91
+ require('./sync-DS_emV3g.cjs');
92
92
  require('tweetnacl');
93
93
  require('./types-CRS-srZK.cjs');
94
94
  require('./detectCLI-BuYR_Qxe.cjs');
95
95
  require('fs');
96
- require('./localHappyAgentAuth-DQRWBUxQ.cjs');
96
+ require('./localHappyAgentAuth-BpBQ_aFo.cjs');
97
97
  require('./fsMkdir-0K3yENml.cjs');
98
98
  require('./cliUpdate-DsKXPFYp.cjs');
99
99
  require('./processTermination-f17wxlMb.cjs');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _package = require('./package-BCJfNMlt.cjs');
3
+ var _package = require('./package-ChmhpzsE.cjs');
4
4
  var module$1 = require('node:module');
5
5
  var node_fs = require('node:fs');
6
6
  var promises = require('node:fs/promises');
@@ -59,10 +59,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
59
59
  async function run(args) {
60
60
  enableCompileCacheIfPossible(_package.packageJson.version);
61
61
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
62
- const { selfCheckMain } = await Promise.resolve().then(function () { return require('./selfCheck-BpvUNBmv.cjs'); });
62
+ const { selfCheckMain } = await Promise.resolve().then(function () { return require('./selfCheck-08_EII_I.cjs'); });
63
63
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
64
64
  }
65
- const { main } = await Promise.resolve().then(function () { return require('./main-l_nP9IQq.cjs'); });
65
+ const { main } = await Promise.resolve().then(function () { return require('./main-CW8xXpXM.cjs'); });
66
66
  await main();
67
67
  }
68
68
  void run(process.argv.slice(2));
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- require('./package-BCJfNMlt.cjs');
4
- require('./index-CoW4RNEb.cjs');
3
+ require('./package-ChmhpzsE.cjs');
4
+ require('./index-Du6DD3Re.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-CMmhJwSf.mjs';
2
- import './index-CzBvl9py.mjs';
1
+ import './package-Cp8RjVmm.mjs';
2
+ import './index-BlUhrNAx.mjs';
3
3
  import 'node:module';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
@@ -1,15 +1,15 @@
1
- import { l as logger } from './logger-BKAKIZdy.mjs';
1
+ import { l as logger } from './logger-8f-WNgus.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-H8q1sMwk.mjs';
8
+ import './configuration-C4w7_yT9.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:os';
11
11
  import 'node:path';
12
- import './package-CMmhJwSf.mjs';
12
+ import './package-Cp8RjVmm.mjs';
13
13
  import 'node:fs/promises';
14
14
 
15
15
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-DP35yx-C.cjs');
3
+ var logger = require('./logger-HxTu5uFs.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-Fx61b4MJ.cjs');
10
+ require('./configuration-B-smHMf7.cjs');
11
11
  require('node:fs');
12
12
  require('node:os');
13
13
  require('node:path');
14
- require('./package-BCJfNMlt.cjs');
14
+ require('./package-ChmhpzsE.cjs');
15
15
  require('node:fs/promises');
16
16
 
17
17
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,20 +1,20 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { f as ISSUE_ASSIGNABLE_AGENTS, p as parseIssueRef, g as ISSUE_STATUSES, h as ISSUE_PRIORITIES } from './index-DWk-WTU-.mjs';
3
- import { c as configuration } from './configuration-H8q1sMwk.mjs';
4
- import { r as readSettings } from './persistence-dLgWDclq.mjs';
5
- import { r as readTeamScope, t as teamScopePath } from './context-CM1Xd_HO.mjs';
6
- import { s as sharedIssuesClient, i as importLegacyTodosOnce } from './client-m-K1b6Qa.mjs';
7
- import { d as describeIssueError, f as formatIssueLine, a as formatIssueDetail } from './format-BPAREVhi.mjs';
3
+ import { c as configuration } from './configuration-C4w7_yT9.mjs';
4
+ import { r as readSettings } from './persistence-D1E7jiV4.mjs';
5
+ import { r as readTeamScope, t as teamScopePath } from './context-Cy2pdGOi.mjs';
6
+ import { s as sharedIssuesClient, i as importLegacyTodosOnce } from './client-DTwpdW59.mjs';
7
+ import { d as describeIssueError, f as formatIssueLine, a as formatIssueDetail } from './format-0c3qb7FE.mjs';
8
8
  import 'zod';
9
9
  import '@paralleldrive/cuid2';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
12
  import 'node:path';
13
- import './package-CMmhJwSf.mjs';
13
+ import './package-Cp8RjVmm.mjs';
14
14
  import 'node:fs/promises';
15
15
  import './authRelay-DhQhkBvX.mjs';
16
16
  import 'tweetnacl';
17
- import './logger-BKAKIZdy.mjs';
17
+ import './logger-8f-WNgus.mjs';
18
18
  import 'chalk';
19
19
  import 'node:util';
20
20
 
@@ -2,21 +2,21 @@
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
4
  var index = require('./index-BYL_X3gP.cjs');
5
- var configuration = require('./configuration-Fx61b4MJ.cjs');
6
- var persistence = require('./persistence-iiVFxhbt.cjs');
7
- var context = require('./context-D-QOcYuX.cjs');
8
- var client = require('./client-wMlUPnrV.cjs');
9
- var format = require('./format-BEktLc45.cjs');
5
+ var configuration = require('./configuration-B-smHMf7.cjs');
6
+ var persistence = require('./persistence-DxboRqwb.cjs');
7
+ var context = require('./context-Dfj4Pjqz.cjs');
8
+ var client = require('./client-CTsx4zlq.cjs');
9
+ var format = require('./format-DoTTSy8C.cjs');
10
10
  require('zod');
11
11
  require('@paralleldrive/cuid2');
12
12
  require('node:fs');
13
13
  require('node:os');
14
14
  require('node:path');
15
- require('./package-BCJfNMlt.cjs');
15
+ require('./package-ChmhpzsE.cjs');
16
16
  require('node:fs/promises');
17
17
  require('./authRelay-Dy1qU9td.cjs');
18
18
  require('tweetnacl');
19
- require('./logger-DP35yx-C.cjs');
19
+ require('./logger-HxTu5uFs.cjs');
20
20
  require('chalk');
21
21
  require('node:util');
22
22
 
package/dist/lib.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-BnTF8fkj.cjs');
4
- var logger = require('./logger-DP35yx-C.cjs');
5
- var configuration = require('./configuration-Fx61b4MJ.cjs');
3
+ var api = require('./api-eXuwG3LS.cjs');
4
+ var logger = require('./logger-HxTu5uFs.cjs');
5
+ var configuration = require('./configuration-B-smHMf7.cjs');
6
6
  var types = require('./types-CRS-srZK.cjs');
7
7
  require('axios');
8
- require('./pushNotifications-gcQv61e6.cjs');
8
+ require('./pushNotifications-EJWZAYed.cjs');
9
9
  require('node:crypto');
10
10
  require('zod');
11
11
  require('./index-BYL_X3gP.cjs');
12
12
  require('@paralleldrive/cuid2');
13
13
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
14
- require('./reconnectGate-BkSaZdIx.cjs');
14
+ require('./reconnectGate-DY97bPDg.cjs');
15
15
  require('./authRelay-Dy1qU9td.cjs');
16
16
  require('tweetnacl');
17
17
  require('os');
@@ -19,8 +19,8 @@ require('child_process');
19
19
  require('node:events');
20
20
  require('socket.io-client');
21
21
  require('./limits-C-a7gr04.cjs');
22
- require('./time-NSglRbyr.cjs');
23
- require('./registerCommonHandlers-B5p3ZZmp.cjs');
22
+ require('./time-i8fiLSHv.cjs');
23
+ require('./registerCommonHandlers-YsrcwRo3.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-Dm6GaS8P.cjs');
31
+ require('./sync-DS_emV3g.cjs');
32
32
  require('./backgroundTaskActivity-CBvUdj39.cjs');
33
- require('./controlClient-D04wXKoQ.cjs');
34
- require('./persistence-iiVFxhbt.cjs');
33
+ require('./controlClient-Dlm7wz-k.cjs');
34
+ require('./persistence-DxboRqwb.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-BCJfNMlt.cjs');
41
+ require('./package-ChmhpzsE.cjs');
42
42
 
43
43
 
44
44
 
package/dist/lib.d.cts CHANGED
@@ -347,6 +347,15 @@ declare const ContextUsageSchema: z$1.ZodObject<{
347
347
  }, z$1.core.$strip>;
348
348
  type ContextUsage = z$1.infer<typeof ContextUsageSchema>;
349
349
 
350
+ /**
351
+ * B-719 — the coding-agent CLIs a daemon may install or update when the owner
352
+ * clicks Install / Update. The Web and the relay only ever pass one of these
353
+ * ids; which npm packages and versions that means is hardcoded in the CLI
354
+ * (`happy-cli/src/harness/installCatalog.ts`), never sent over the wire.
355
+ */
356
+ declare const HARNESS_INSTALL_IDS: readonly ["claude", "codex", "gemini", "pi"];
357
+ type HarnessInstallId = (typeof HARNESS_INSTALL_IDS)[number];
358
+
350
359
  declare const CLAUDE_AUTH_PROBE_VERSION: 1;
351
360
  type ClaudeAuthStatus = 'ok' | 'not-logged-in' | 'unknown' | 'error' | 'claude-missing';
352
361
  type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'credentials-rejected' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
@@ -803,6 +812,19 @@ declare const DaemonStateSchema: z$1.ZodObject<{
803
812
  retryAt: z$1.ZodOptional<z$1.ZodNumber>;
804
813
  }, z$1.core.$strip>>;
805
814
  }, z$1.core.$loose>>;
815
+ agentAutoUpdate: z$1.ZodOptional<z$1.ZodObject<{
816
+ enabled: z$1.ZodBoolean;
817
+ rpcAvailable: z$1.ZodBoolean;
818
+ detectedAt: z$1.ZodNumber;
819
+ status: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{
820
+ harness: z$1.ZodString;
821
+ target: z$1.ZodString;
822
+ state: z$1.ZodString;
823
+ detail: z$1.ZodOptional<z$1.ZodString>;
824
+ attempts: z$1.ZodNumber;
825
+ at: z$1.ZodNumber;
826
+ }, z$1.core.$strip>>;
827
+ }, z$1.core.$loose>>;
806
828
  webPanels: z$1.ZodOptional<z$1.ZodObject<{
807
829
  panels: z$1.ZodArray<z$1.ZodObject<{
808
830
  id: z$1.ZodString;
@@ -1805,6 +1827,38 @@ interface AutoRestartSessionStatus {
1805
1827
  retryAt?: number;
1806
1828
  }
1807
1829
 
1830
+ /**
1831
+ * B-894 — 「自动更新 agent」: with the owner's per-machine switch on (default
1832
+ * OFF), the daemon updates an outdated Codex CLI through the same B-719
1833
+ * harness installer the machine page's Update button uses.
1834
+ *
1835
+ * - Only when `daemonState.agentVersions` (fresh, this daemon) says
1836
+ * `update-available`, no Codex session has a turn in flight and no install /
1837
+ * CLI update is running. Idle Codex sessions are then moved onto the new
1838
+ * binary by the existing B-852 agent-version auto-restart.
1839
+ * - Never an endless loop: at most MAX_ATTEMPTS installs per target version
1840
+ * (a refusal that is not transient counts), BACKOFF_MS between them, and
1841
+ * none after one succeeded (the version check still says outdated = the
1842
+ * new binary is not the one on PATH). The last outcome is published so the
1843
+ * Web shows a failure instead of silently retrying.
1844
+ * - Attempts, backoff and the last outcome survive daemon restarts / handovers
1845
+ * (agentAutoUpdateStore, B-894c); they are per target, so a new release
1846
+ * starts from zero. An install cut off by the restart counts as a failure.
1847
+ * - Claude is not here: Web/remote sessions run the SDK binary bundled with
1848
+ * the CLI, which moves with CLI releases.
1849
+ */
1850
+
1851
+ /** Published in `daemonState.agentAutoUpdate`; `rpcAvailable` + `detectedAt` = the capability (same rule as autoRestart). */
1852
+ interface AgentAutoUpdateStatus {
1853
+ harness: HarnessInstallId;
1854
+ target: string;
1855
+ /** installing → installed | failed; gave-up = no more automatic attempts for this target. */
1856
+ state: 'installing' | 'installed' | 'failed' | 'gave-up';
1857
+ detail?: string;
1858
+ attempts: number;
1859
+ at: number;
1860
+ }
1861
+
1808
1862
  /**
1809
1863
  * B-510: machine web panels — local web pages a person may need to look at
1810
1864
  * (noVNC, an agent-browser dashboard, Grafana, a dev server), declared ONLY in
@@ -2376,6 +2430,7 @@ type MachineRpcHandlers = {
2376
2430
  restartSession?: (sessionId: string, options?: {
2377
2431
  model?: string;
2378
2432
  permissionMode?: string;
2433
+ ifIdle?: true;
2379
2434
  }) => Promise<SpawnSessionResult>;
2380
2435
  stopSession: (sessionId: string) => boolean;
2381
2436
  listTrackedSessionIds?: () => string[];
@@ -2409,6 +2464,7 @@ declare class ApiMachineClient {
2409
2464
  private agentHibernationIdleMs;
2410
2465
  /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
2411
2466
  private autoRestart;
2467
+ private agentAutoUpdate;
2412
2468
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
2413
2469
  private webPanels;
2414
2470
  private webPanelsSignatureSent;
@@ -2511,6 +2567,15 @@ declare class ApiMachineClient {
2511
2567
  /** B-852: the scheduler's per-session status changed (already signature-deduped). */
2512
2568
  setAutoRestartSessions(sessions: Record<string, AutoRestartSessionStatus>): Promise<void>;
2513
2569
  private autoRestartState;
2570
+ /**
2571
+ * B-894: the machine page's「自动更新 agent」switch (`agent-auto-update-set`)
2572
+ * and `daemonState.agentAutoUpdate` (capability + setting + last outcome).
2573
+ * Call before connect().
2574
+ */
2575
+ setAgentAutoUpdateHandlers(initialEnabled: boolean, set: (enabled: boolean) => Promise<boolean>): void;
2576
+ setAgentAutoUpdateStatus(status: Record<string, AgentAutoUpdateStatus>): Promise<void>;
2577
+ private agentAutoUpdateState;
2578
+ private publishAgentAutoUpdate;
2514
2579
  private publishAutoRestart;
2515
2580
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
2516
2581
  setClaudeAuthHandlers(handlers: {
package/dist/lib.d.mts CHANGED
@@ -347,6 +347,15 @@ declare const ContextUsageSchema: z$1.ZodObject<{
347
347
  }, z$1.core.$strip>;
348
348
  type ContextUsage = z$1.infer<typeof ContextUsageSchema>;
349
349
 
350
+ /**
351
+ * B-719 — the coding-agent CLIs a daemon may install or update when the owner
352
+ * clicks Install / Update. The Web and the relay only ever pass one of these
353
+ * ids; which npm packages and versions that means is hardcoded in the CLI
354
+ * (`happy-cli/src/harness/installCatalog.ts`), never sent over the wire.
355
+ */
356
+ declare const HARNESS_INSTALL_IDS: readonly ["claude", "codex", "gemini", "pi"];
357
+ type HarnessInstallId = (typeof HARNESS_INSTALL_IDS)[number];
358
+
350
359
  declare const CLAUDE_AUTH_PROBE_VERSION: 1;
351
360
  type ClaudeAuthStatus = 'ok' | 'not-logged-in' | 'unknown' | 'error' | 'claude-missing';
352
361
  type ClaudeAuthDiagnosis = 'keychain-empty-item' | 'store-divergence' | 'no-credentials' | 'credentials-rejected' | 'sdk-binary-missing' | 'probe-timeout' | 'probe-crash';
@@ -803,6 +812,19 @@ declare const DaemonStateSchema: z$1.ZodObject<{
803
812
  retryAt: z$1.ZodOptional<z$1.ZodNumber>;
804
813
  }, z$1.core.$strip>>;
805
814
  }, z$1.core.$loose>>;
815
+ agentAutoUpdate: z$1.ZodOptional<z$1.ZodObject<{
816
+ enabled: z$1.ZodBoolean;
817
+ rpcAvailable: z$1.ZodBoolean;
818
+ detectedAt: z$1.ZodNumber;
819
+ status: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{
820
+ harness: z$1.ZodString;
821
+ target: z$1.ZodString;
822
+ state: z$1.ZodString;
823
+ detail: z$1.ZodOptional<z$1.ZodString>;
824
+ attempts: z$1.ZodNumber;
825
+ at: z$1.ZodNumber;
826
+ }, z$1.core.$strip>>;
827
+ }, z$1.core.$loose>>;
806
828
  webPanels: z$1.ZodOptional<z$1.ZodObject<{
807
829
  panels: z$1.ZodArray<z$1.ZodObject<{
808
830
  id: z$1.ZodString;
@@ -1805,6 +1827,38 @@ interface AutoRestartSessionStatus {
1805
1827
  retryAt?: number;
1806
1828
  }
1807
1829
 
1830
+ /**
1831
+ * B-894 — 「自动更新 agent」: with the owner's per-machine switch on (default
1832
+ * OFF), the daemon updates an outdated Codex CLI through the same B-719
1833
+ * harness installer the machine page's Update button uses.
1834
+ *
1835
+ * - Only when `daemonState.agentVersions` (fresh, this daemon) says
1836
+ * `update-available`, no Codex session has a turn in flight and no install /
1837
+ * CLI update is running. Idle Codex sessions are then moved onto the new
1838
+ * binary by the existing B-852 agent-version auto-restart.
1839
+ * - Never an endless loop: at most MAX_ATTEMPTS installs per target version
1840
+ * (a refusal that is not transient counts), BACKOFF_MS between them, and
1841
+ * none after one succeeded (the version check still says outdated = the
1842
+ * new binary is not the one on PATH). The last outcome is published so the
1843
+ * Web shows a failure instead of silently retrying.
1844
+ * - Attempts, backoff and the last outcome survive daemon restarts / handovers
1845
+ * (agentAutoUpdateStore, B-894c); they are per target, so a new release
1846
+ * starts from zero. An install cut off by the restart counts as a failure.
1847
+ * - Claude is not here: Web/remote sessions run the SDK binary bundled with
1848
+ * the CLI, which moves with CLI releases.
1849
+ */
1850
+
1851
+ /** Published in `daemonState.agentAutoUpdate`; `rpcAvailable` + `detectedAt` = the capability (same rule as autoRestart). */
1852
+ interface AgentAutoUpdateStatus {
1853
+ harness: HarnessInstallId;
1854
+ target: string;
1855
+ /** installing → installed | failed; gave-up = no more automatic attempts for this target. */
1856
+ state: 'installing' | 'installed' | 'failed' | 'gave-up';
1857
+ detail?: string;
1858
+ attempts: number;
1859
+ at: number;
1860
+ }
1861
+
1808
1862
  /**
1809
1863
  * B-510: machine web panels — local web pages a person may need to look at
1810
1864
  * (noVNC, an agent-browser dashboard, Grafana, a dev server), declared ONLY in
@@ -2376,6 +2430,7 @@ type MachineRpcHandlers = {
2376
2430
  restartSession?: (sessionId: string, options?: {
2377
2431
  model?: string;
2378
2432
  permissionMode?: string;
2433
+ ifIdle?: true;
2379
2434
  }) => Promise<SpawnSessionResult>;
2380
2435
  stopSession: (sessionId: string) => boolean;
2381
2436
  listTrackedSessionIds?: () => string[];
@@ -2409,6 +2464,7 @@ declare class ApiMachineClient {
2409
2464
  private agentHibernationIdleMs;
2410
2465
  /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
2411
2466
  private autoRestart;
2467
+ private agentAutoUpdate;
2412
2468
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
2413
2469
  private webPanels;
2414
2470
  private webPanelsSignatureSent;
@@ -2511,6 +2567,15 @@ declare class ApiMachineClient {
2511
2567
  /** B-852: the scheduler's per-session status changed (already signature-deduped). */
2512
2568
  setAutoRestartSessions(sessions: Record<string, AutoRestartSessionStatus>): Promise<void>;
2513
2569
  private autoRestartState;
2570
+ /**
2571
+ * B-894: the machine page's「自动更新 agent」switch (`agent-auto-update-set`)
2572
+ * and `daemonState.agentAutoUpdate` (capability + setting + last outcome).
2573
+ * Call before connect().
2574
+ */
2575
+ setAgentAutoUpdateHandlers(initialEnabled: boolean, set: (enabled: boolean) => Promise<boolean>): void;
2576
+ setAgentAutoUpdateStatus(status: Record<string, AgentAutoUpdateStatus>): Promise<void>;
2577
+ private agentAutoUpdateState;
2578
+ private publishAgentAutoUpdate;
2514
2579
  private publishAutoRestart;
2515
2580
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
2516
2581
  setClaudeAuthHandlers(handlers: {
package/dist/lib.mjs CHANGED
@@ -1,15 +1,15 @@
1
- export { A as ApiClient, a as ApiSessionClient } from './api-20GbdpxY.mjs';
2
- export { l as logger } from './logger-BKAKIZdy.mjs';
3
- export { c as configuration } from './configuration-H8q1sMwk.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient } from './api-D7EAwOT2.mjs';
2
+ export { l as logger } from './logger-8f-WNgus.mjs';
3
+ export { c as configuration } from './configuration-C4w7_yT9.mjs';
4
4
  export { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
5
5
  import 'axios';
6
- import './pushNotifications-DD9Z0CoN.mjs';
6
+ import './pushNotifications-WgO2p0eT.mjs';
7
7
  import 'node:crypto';
8
8
  import 'zod';
9
9
  import './index-DWk-WTU-.mjs';
10
10
  import '@paralleldrive/cuid2';
11
11
  import './contentLogMetadata-BlWI0egu.mjs';
12
- import './reconnectGate-m81ySKhh.mjs';
12
+ import './reconnectGate-B9iXSyiI.mjs';
13
13
  import './authRelay-DhQhkBvX.mjs';
14
14
  import 'tweetnacl';
15
15
  import 'os';
@@ -17,8 +17,8 @@ import 'child_process';
17
17
  import 'node:events';
18
18
  import 'socket.io-client';
19
19
  import './limits-DIo7rEBR.mjs';
20
- import './time-Cn0mV-di.mjs';
21
- import './registerCommonHandlers-CqLHkmG2.mjs';
20
+ import './time-o_AW-82H.mjs';
21
+ import './registerCommonHandlers-YbBzC20u.mjs';
22
22
  import 'util';
23
23
  import 'fs/promises';
24
24
  import 'crypto';
@@ -26,14 +26,14 @@ import 'path';
26
26
  import 'cross-spawn';
27
27
  import './projectPath-BTBIMB57.mjs';
28
28
  import 'url';
29
- import './sync-Co0wRhGu.mjs';
29
+ import './sync-DzKT0Ova.mjs';
30
30
  import './backgroundTaskActivity-8PdPxrvy.mjs';
31
- import './controlClient-D9DYqW02.mjs';
32
- import './persistence-dLgWDclq.mjs';
31
+ import './controlClient-CtBRHlbJ.mjs';
32
+ import './persistence-D1E7jiV4.mjs';
33
33
  import 'node:fs/promises';
34
34
  import 'node:fs';
35
35
  import 'chalk';
36
36
  import 'node:util';
37
37
  import 'node:path';
38
38
  import 'node:os';
39
- import './package-CMmhJwSf.mjs';
39
+ import './package-Cp8RjVmm.mjs';
@@ -4,7 +4,7 @@ import { join } from 'node:path';
4
4
  import tweetnacl from 'tweetnacl';
5
5
  import { z } from 'zod';
6
6
  import { c as credentialRelayProblem, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
7
- import { c as configuration } from './configuration-H8q1sMwk.mjs';
7
+ import { c as configuration } from './configuration-C4w7_yT9.mjs';
8
8
 
9
9
  const AgentCredentialsSchema = z.object({
10
10
  token: z.string().min(1),
@@ -6,7 +6,7 @@ var path = require('node:path');
6
6
  var tweetnacl = require('tweetnacl');
7
7
  var z = require('zod');
8
8
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
9
- var configuration = require('./configuration-Fx61b4MJ.cjs');
9
+ var configuration = require('./configuration-B-smHMf7.cjs');
10
10
 
11
11
  const AgentCredentialsSchema = z.z.object({
12
12
  token: z.z.string().min(1),
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { inspect } from 'node:util';
3
- import { d as appendPrivateFileSync, c as configuration } from './configuration-H8q1sMwk.mjs';
3
+ import { d as appendPrivateFileSync, c as configuration } from './configuration-C4w7_yT9.mjs';
4
4
  import { existsSync, readdirSync, statSync } from 'node:fs';
5
5
  import { join, basename } from 'node:path';
6
6
 
@@ -250,7 +250,7 @@ async function listDaemonLogFiles(limit = 50) {
250
250
  return { file, path: fullPath, modified: stats.mtime };
251
251
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
252
252
  try {
253
- const { readDaemonState } = await import('./persistence-dLgWDclq.mjs').then(function (n) { return n.I; });
253
+ const { readDaemonState } = await import('./persistence-D1E7jiV4.mjs').then(function (n) { return n.I; });
254
254
  const state = await readDaemonState();
255
255
  if (!state) {
256
256
  return logs;