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,11 +1,11 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { l as logger } from './logger-DOKH3Zbh.mjs';
5
- import { d as delay } from './time-CUK37wiV.mjs';
4
+ import { l as logger } from './logger-CL7pin9b.mjs';
5
+ import { d as delay } from './time-CN3TuSVG.mjs';
6
6
  import { c as contentLogMetadata, e as errorLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
7
7
  import { r as readableStderrTail, a as appendStderrRing, s as stopProcessGracefully, k as killProcessTree } from './processTree-CP5IvQ2Z.mjs';
8
- import { p as packageJson } from './package-DTcaIhjW.mjs';
8
+ import { p as packageJson } from './package-C6uiXULx.mjs';
9
9
 
10
10
  function acpImageBlocks(attachments, supportsImages) {
11
11
  return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
@@ -3,11 +3,11 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var sdk = require('@agentclientprotocol/sdk');
5
5
  var node_crypto = require('node:crypto');
6
- var logger = require('./logger-BP1SW7Cs.cjs');
7
- var time = require('./time-XwEZxKGc.cjs');
6
+ var logger = require('./logger-BBRTTVsQ.cjs');
7
+ var time = require('./time-gPD_EmA-.cjs');
8
8
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
9
9
  var processTree = require('./processTree-CMHWlVse.cjs');
10
- var _package = require('./package-CYDdLA6R.cjs');
10
+ var _package = require('./package-DrY090nZ.cjs');
11
11
 
12
12
  function acpImageBlocks(attachments, supportsImages) {
13
13
  return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  var cuid2 = require('@paralleldrive/cuid2');
4
4
  var index = require('./index-BOe6dKnL.cjs');
5
- var api = require('./api-BDuuyys8.cjs');
5
+ var api = require('./api-CXL6jp-p.cjs');
6
6
 
7
7
  function turnOptions(turnId, time) {
8
8
  return turnId ? { turn: turnId, time } : { time };
@@ -1,6 +1,6 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { s as streamKeyOf, g as createEnvelope } from './index-WKyN-bNy.mjs';
3
- import { t as textResultPayload, b as toolResultPayload } from './api-B0yN68XH.mjs';
2
+ import { s as streamKeyOf, g as createEnvelope } from './index-DmqsRnV7.mjs';
3
+ import { t as textResultPayload, b as toolResultPayload } from './api-Dw8gFsQi.mjs';
4
4
 
5
5
  function turnOptions(turnId, time) {
6
6
  return turnId ? { turn: turnId, time } : { time };
@@ -1,4 +1,4 @@
1
- import { l as logger } from './logger-DOKH3Zbh.mjs';
1
+ import { l as logger } from './logger-CL7pin9b.mjs';
2
2
 
3
3
  class BasePermissionHandler {
4
4
  pendingRequests = /* @__PURE__ */ new Map();
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-BP1SW7Cs.cjs');
3
+ var logger = require('./logger-BBRTTVsQ.cjs');
4
4
 
5
5
  class BasePermissionHandler {
6
6
  pendingRequests = /* @__PURE__ */ new Map();
@@ -2,7 +2,7 @@
2
2
 
3
3
  var node_fs = require('node:fs');
4
4
  var path = require('node:path');
5
- var configuration = require('./configuration-C0ctLGW2.cjs');
5
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
6
6
 
7
7
  const SESSION_MODE_DIR = "session-modes";
8
8
  const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
@@ -1,6 +1,6 @@
1
1
  import { mkdirSync, renameSync, existsSync, unlinkSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { w as writePrivateFileSync, c as configuration } from './configuration-1FabKklB.mjs';
3
+ import { w as writePrivateFileSync, c as configuration } from './configuration-Dechcvd-.mjs';
4
4
 
5
5
  const SESSION_MODE_DIR = "session-modes";
6
6
  const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
@@ -1,13 +1,13 @@
1
1
  import chalk from 'chalk';
2
2
  import { homedir } from 'node:os';
3
- import { r as readSettings, u as updateSettings } from './persistence-0INrP3aB.mjs';
3
+ import { r as readSettings, u as updateSettings } from './persistence-Dogj7JIp.mjs';
4
4
  import 'node:fs';
5
- import './logger-DOKH3Zbh.mjs';
5
+ import './logger-CL7pin9b.mjs';
6
6
  import { d as describeAgentHome, p as probeLoginShellEnv, r as resolveAgentHomes, e as expandHomePath, A as AGENT_HOME_ENV_NAMES } from './loginShellEnv-Dw8M7tkI.mjs';
7
7
  import 'node:fs/promises';
8
- import './configuration-1FabKklB.mjs';
8
+ import './configuration-Dechcvd-.mjs';
9
9
  import 'node:path';
10
- import './package-DTcaIhjW.mjs';
10
+ import './package-C6uiXULx.mjs';
11
11
  import 'zod';
12
12
  import './authRelay-DhQhkBvX.mjs';
13
13
  import 'node:crypto';
@@ -2,14 +2,14 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var os = require('node:os');
5
- var persistence = require('./persistence-CrzC7yr_.cjs');
5
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
6
6
  require('node:fs');
7
- require('./logger-BP1SW7Cs.cjs');
7
+ require('./logger-BBRTTVsQ.cjs');
8
8
  var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
9
9
  require('node:fs/promises');
10
- require('./configuration-C0ctLGW2.cjs');
10
+ require('./configuration-Dt5lKW3P.cjs');
11
11
  require('node:path');
12
- require('./package-CYDdLA6R.cjs');
12
+ require('./package-DrY090nZ.cjs');
13
13
  require('zod');
14
14
  require('./authRelay-Dy1qU9td.cjs');
15
15
  require('node:crypto');
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var logger = require('./logger-BP1SW7Cs.cjs');
5
- var lidState = require('./lidState-B4dHJCeS.cjs');
4
+ var logger = require('./logger-BBRTTVsQ.cjs');
5
+ var lidState = require('./lidState-q_XFYg33.cjs');
6
6
  var node_events = require('node:events');
7
7
  var socket_ioClient = require('socket.io-client');
8
- var pushNotifications = require('./pushNotifications-CalIS9sq.cjs');
8
+ var pushNotifications = require('./pushNotifications-CfspRcl-.cjs');
9
9
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
10
10
  var limits = require('./limits-C-a7gr04.cjs');
11
- var time = require('./time-XwEZxKGc.cjs');
12
- var configuration = require('./configuration-C0ctLGW2.cjs');
11
+ var time = require('./time-gPD_EmA-.cjs');
12
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
13
13
  var node_crypto = require('node:crypto');
14
14
  var index = require('./index-BOe6dKnL.cjs');
15
- var registerCommonHandlers = require('./registerCommonHandlers-DZPozYxc.cjs');
15
+ var registerCommonHandlers = require('./registerCommonHandlers-Beun-cQv.cjs');
16
16
  var cuid2 = require('@paralleldrive/cuid2');
17
- var sync = require('./sync-CoChLEIg.cjs');
17
+ var sync = require('./sync-DtWB7RzA.cjs');
18
18
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
19
- var controlClient = require('./controlClient-F7hAEEy2.cjs');
19
+ var controlClient = require('./controlClient-BRk65BRO.cjs');
20
20
  var chalk = require('chalk');
21
21
 
22
22
  async function hmac_sha512(key, data) {
@@ -2531,6 +2531,7 @@ class ApiSessionClient extends node_events.EventEmitter {
2531
2531
  }
2532
2532
  async close() {
2533
2533
  logger.logger.debug("[API] socket.close() called");
2534
+ this.closedByClient = true;
2534
2535
  this.promptQueueDrain?.close();
2535
2536
  this.sendSync.stop();
2536
2537
  this.receiveSync.stop();
@@ -2542,7 +2543,15 @@ class ApiSessionClient extends node_events.EventEmitter {
2542
2543
  this.relaySocket?.close();
2543
2544
  this.relaySocket = null;
2544
2545
  }
2546
+ /**
2547
+ * B-854: set by close(). The socket's own `disconnect` ("io client
2548
+ * disconnect") must not reconnect a client its owner closed: a runner that
2549
+ * ends without `process.exit` (ACP) stayed alive on that socket — still
2550
+ * "active" for the daemon and the web, with no loop to run anything.
2551
+ */
2552
+ closedByClient = false;
2545
2553
  startSmartReconnect() {
2554
+ if (this.closedByClient) return;
2546
2555
  if (this.reconnectInterval) return;
2547
2556
  this.reconnectInterval = setInterval(() => {
2548
2557
  if (this.socket.connected) {
@@ -3066,7 +3075,7 @@ class ApiClient {
3066
3075
  return new ApiSessionClient(this.credential.token, session, opts);
3067
3076
  }
3068
3077
  async machineSyncClient(machine) {
3069
- const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-iddD-F19.cjs'); });
3078
+ const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-C6UqHoPF.cjs'); });
3070
3079
  return new ApiMachineClient(this.credential.token, machine);
3071
3080
  }
3072
3081
  push() {
@@ -1,20 +1,20 @@
1
1
  import axios from 'axios';
2
- import { l as logger, r as redactLogValue } from './logger-DOKH3Zbh.mjs';
3
- import { R as RpcHandlerManager, a as answerSocketRequest, c as connectGuarded, s as socketConnectGuard, d as describeSocketAckDrop, b as safeAck, i as isRateQuotaCode, p as pauseForRateQuota, e as shouldReconnect } from './lidState-q5Its2Hm.mjs';
2
+ import { l as logger, r as redactLogValue } from './logger-CL7pin9b.mjs';
3
+ import { R as RpcHandlerManager, a as answerSocketRequest, c as connectGuarded, s as socketConnectGuard, d as describeSocketAckDrop, b as safeAck, i as isRateQuotaCode, p as pauseForRateQuota, e as shouldReconnect } from './lidState-D0DF20oG.mjs';
4
4
  import { EventEmitter } from 'node:events';
5
5
  import { io } from 'socket.io-client';
6
- import { A as AsyncLock, a as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema, P as PushNotificationClient } from './pushNotifications-Cq1s8YVK.mjs';
6
+ import { A as AsyncLock, a as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema, P as PushNotificationClient } from './pushNotifications-dUceOIni.mjs';
7
7
  import { h as decrypt, d as decodeBase64, i as decryptBlob, e as encodeBase64, g as encrypt, l as libsodiumEncryptForPublicKey, j as libsodiumPublicKeyFromSecretKey, k as getRandomBytes } from './authRelay-DhQhkBvX.mjs';
8
8
  import { p as prepareClipboardText, d as prepareClipboardHistoryText } from './limits-DIo7rEBR.mjs';
9
- import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-CUK37wiV.mjs';
10
- import { c as configuration } from './configuration-1FabKklB.mjs';
9
+ import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-CN3TuSVG.mjs';
10
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
11
11
  import { createHmac, randomUUID } from 'node:crypto';
12
- import { g as createEnvelope, s as streamKeyOf, R as ReleaseDrainNoticeSchema, I as RelayAssignmentResponseSchema } from './index-WKyN-bNy.mjs';
13
- import { r as registerCommonHandlers } from './registerCommonHandlers-DWkTysjD.mjs';
12
+ import { g as createEnvelope, s as streamKeyOf, R as ReleaseDrainNoticeSchema, I as RelayAssignmentResponseSchema } from './index-DmqsRnV7.mjs';
13
+ import { r as registerCommonHandlers } from './registerCommonHandlers-DWZ7mfdt.mjs';
14
14
  import { createId } from '@paralleldrive/cuid2';
15
- import { I as InvalidateSync } from './sync-BvDMkKAN.mjs';
15
+ import { I as InvalidateSync } from './sync-eZkXnsW_.mjs';
16
16
  import { B as BackgroundTaskReporter } from './backgroundTaskActivity-8PdPxrvy.mjs';
17
- import { m as notifyDaemonTurnEvent, o as notifyDaemonBackgroundTasks } from './controlClient-DwNnNAUx.mjs';
17
+ import { m as notifyDaemonTurnEvent, o as notifyDaemonBackgroundTasks } from './controlClient-D7NGfmtq.mjs';
18
18
  import chalk from 'chalk';
19
19
 
20
20
  async function hmac_sha512(key, data) {
@@ -2529,6 +2529,7 @@ class ApiSessionClient extends EventEmitter {
2529
2529
  }
2530
2530
  async close() {
2531
2531
  logger.debug("[API] socket.close() called");
2532
+ this.closedByClient = true;
2532
2533
  this.promptQueueDrain?.close();
2533
2534
  this.sendSync.stop();
2534
2535
  this.receiveSync.stop();
@@ -2540,7 +2541,15 @@ class ApiSessionClient extends EventEmitter {
2540
2541
  this.relaySocket?.close();
2541
2542
  this.relaySocket = null;
2542
2543
  }
2544
+ /**
2545
+ * B-854: set by close(). The socket's own `disconnect` ("io client
2546
+ * disconnect") must not reconnect a client its owner closed: a runner that
2547
+ * ends without `process.exit` (ACP) stayed alive on that socket — still
2548
+ * "active" for the daemon and the web, with no loop to run anything.
2549
+ */
2550
+ closedByClient = false;
2543
2551
  startSmartReconnect() {
2552
+ if (this.closedByClient) return;
2544
2553
  if (this.reconnectInterval) return;
2545
2554
  this.reconnectInterval = setInterval(() => {
2546
2555
  if (this.socket.connected) {
@@ -3064,7 +3073,7 @@ class ApiClient {
3064
3073
  return new ApiSessionClient(this.credential.token, session, opts);
3065
3074
  }
3066
3075
  async machineSyncClient(machine) {
3067
- const { ApiMachineClient } = await import('./apiMachine-mc9CsKuS.mjs');
3076
+ const { ApiMachineClient } = await import('./apiMachine-BBNEtjf7.mjs');
3068
3077
  return new ApiMachineClient(this.credential.token, machine);
3069
3078
  }
3070
3079
  push() {
@@ -1,44 +1,44 @@
1
1
  import { io } from 'socket.io-client';
2
2
  import { a as webPanelsSignature } from './webPanels-B2_C2-3g.mjs';
3
- import { l as logger } from './logger-DOKH3Zbh.mjs';
4
- import { R as RpcHandlerManager, i as isRateQuotaCode, p as pauseForRateQuota, s as socketConnectGuard, c as connectGuarded, a as answerSocketRequest, e as shouldReconnect, d as describeSocketAckDrop } from './lidState-q5Its2Hm.mjs';
5
- import { i as isClaudeSessionId, s as stableVersion, a as sanitizeTagList, p as pickMirrorForTerminal, l as liveSnapshotChanged, b as sanitizeLiveSnapshot, c as serializeLiveSnapshot, r as registerWorktreeHandlers, d as configureWorktreeService, e as summarizeSpawnSessionForLog, f as parseMirrorSendParams } from './mirrorProtocol-D2vTWteS.mjs';
6
- import { c as configuration } from './configuration-1FabKklB.mjs';
3
+ import { l as logger } from './logger-CL7pin9b.mjs';
4
+ import { R as RpcHandlerManager, i as isRateQuotaCode, p as pauseForRateQuota, s as socketConnectGuard, c as connectGuarded, a as answerSocketRequest, e as shouldReconnect, d as describeSocketAckDrop } from './lidState-D0DF20oG.mjs';
5
+ import { i as isClaudeSessionId, s as stableVersion, a as sanitizeTagList, p as pickMirrorForTerminal, l as liveSnapshotChanged, b as sanitizeLiveSnapshot, c as serializeLiveSnapshot, r as registerWorktreeHandlers, d as configureWorktreeService, e as summarizeSpawnSessionForLog, f as parseMirrorSendParams } from './mirrorProtocol-dkq2ZENA.mjs';
6
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
7
7
  import { w as withCurrentCliUpdateState } from './cliUpdate-Y34VGe9Y.mjs';
8
- import { r as registerCommonHandlers } from './registerCommonHandlers-DWkTysjD.mjs';
8
+ import { r as registerCommonHandlers } from './registerCommonHandlers-DWZ7mfdt.mjs';
9
9
  import { stat, readdir, lstat, open, readFile, rm, mkdir, chmod, writeFile, rename } from 'node:fs/promises';
10
10
  import { join, isAbsolute, resolve } from 'node:path';
11
11
  import os, { homedir } from 'node:os';
12
12
  import { f as fsMkdir } from './fsMkdir-DumgLTzR.mjs';
13
13
  import { spawn, execFile, spawnSync } from 'node:child_process';
14
- import { r as readSettings, c as readPersistedSessions, o as readTrackedClaudeSessionIds, p as readTrackedCodexThreadIds } from './persistence-0INrP3aB.mjs';
14
+ import { r as readSettings, c as readPersistedSessions, p as readTrackedClaudeSessionIds, q as readTrackedCodexThreadIds } from './persistence-Dogj7JIp.mjs';
15
15
  import { M as ModelConfigError } from './fileStore-5qpetZS0.mjs';
16
16
  import { e as encodeBase64, g as encrypt, h as decrypt, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
17
17
  import { p as prepareClipboardText, d as prepareClipboardHistoryText } from './limits-DIo7rEBR.mjs';
18
- import { b as backoff, d as delay } from './time-CUK37wiV.mjs';
18
+ import { b as backoff, d as delay } from './time-CN3TuSVG.mjs';
19
19
  import * as pty from 'node-pty';
20
20
  import { a as attachStartupCommand, v as validateTerminalTags, d as deriveAutoTitle, T as TMUX_SESSION_ID_RE, i as isSafeTmuxSessionName, b as isVhSessionName, U as USER_SESSIONS_FORMAT, p as parseUserSessions, L as LIST_SESSIONS_FORMAT, c as parseSessionListLine, e as LIST_FIELD_SEP, s as sendToVhTerminal } from './terminals-Dlg0x3nY.mjs';
21
21
  import { t as tmuxArgs, V as VH_TMUX_SOCKET_ENV, a as scrubTmuxClientEnv } from './tmuxSocket-B8Yx20sT.mjs';
22
- import { locateClaudeConversation, refreshAgentHomes } from './index-Df0bc_et.mjs';
22
+ import { locateClaudeConversation, refreshAgentHomes } from './index-DUByZsKe.mjs';
23
23
  import { randomBytes } from 'node:crypto';
24
24
  import { readdirSync, unlinkSync, existsSync, mkdirSync, writeFileSync, readFileSync, statSync, chmodSync, renameSync, rmSync, accessSync, constants } from 'node:fs';
25
25
  import axios from 'axios';
26
26
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
27
27
  import { a as isValidTerminalId } from './ids-DU6sLx4C.mjs';
28
28
  import { d as detectCLIAvailability } from './detectCLI-CSGMlV51.mjs';
29
- import { d as detectResumeSupport } from './localHappyAgentAuth-C_G5u5lY.mjs';
29
+ import { d as detectResumeSupport } from './localHappyAgentAuth-BBhM4Qk1.mjs';
30
30
  import { g as getProjectPath, a as getClaudeProjectsRoot } from './path-D2wdaNSk.mjs';
31
31
  import { i as isVeryHappyOneShotPrompt } from './oneShotPrompts-DT4p6RNd.mjs';
32
- import { f as forkSession, F as ForkSourceMissingError, d as discardForkedSession, l as listClaudeRewindPoints, a as forkAndTruncateSession, b as ForkTruncateUuidNotFoundError, c as forkBeforeUserMessage } from './claudeSessionFork-DzecSBO4.mjs';
33
- import { C as CodexAppServerClient } from './codexAppServerClient-BlVmpjR-.mjs';
34
- import { L as RelayCandidatesResponseSchema, I as RelayAssignmentResponseSchema, R as ReleaseDrainNoticeSchema } from './index-WKyN-bNy.mjs';
35
- import { f as forkCodexThread, C as CodexForkRewindPointNotFoundError, l as listCodexRewindPoints, a as forkCodexBeforeUserMessage } from './codexThreadFork-R76RU5H0.mjs';
36
- import { p as planRateLimitWrite, m as mergeRateLimitReports } from './rateLimitWindows-5vIuNjko.mjs';
32
+ import { f as forkSession, F as ForkSourceMissingError, d as discardForkedSession, l as listClaudeRewindPoints, a as forkAndTruncateSession, b as ForkTruncateUuidNotFoundError, c as forkBeforeUserMessage } from './claudeSessionFork-D2GI7P59.mjs';
33
+ import { C as CodexAppServerClient } from './codexAppServerClient-CLc5nhLT.mjs';
34
+ import { L as RelayCandidatesResponseSchema, I as RelayAssignmentResponseSchema, R as ReleaseDrainNoticeSchema } from './index-DmqsRnV7.mjs';
35
+ import { f as forkCodexThread, C as CodexForkRewindPointNotFoundError, l as listCodexRewindPoints, a as forkCodexBeforeUserMessage } from './codexThreadFork-DobPd19R.mjs';
36
+ import { p as planRateLimitWrite, m as mergeRateLimitReports } from './rateLimitWindows-CEn0DXaX.mjs';
37
37
  import 'chalk';
38
38
  import 'node:util';
39
39
  import 'os';
40
40
  import 'child_process';
41
- import './package-DTcaIhjW.mjs';
41
+ import './package-C6uiXULx.mjs';
42
42
  import 'util';
43
43
  import 'fs/promises';
44
44
  import 'crypto';
@@ -10490,6 +10490,8 @@ class ApiMachineClient {
10490
10490
  claudeAuthState = null;
10491
10491
  /** B-587: the machine's hibernation threshold, published as a capability. */
10492
10492
  agentHibernationIdleMs = null;
10493
+ /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
10494
+ autoRestart = null;
10493
10495
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
10494
10496
  webPanels = null;
10495
10497
  webPanelsSignatureSent = null;
@@ -10710,6 +10712,43 @@ class ApiMachineClient {
10710
10712
  this.cliUpdatePushChain = attempt.then(() => void 0);
10711
10713
  return attempt;
10712
10714
  }
10715
+ /**
10716
+ * B-852: the machine page's「会话自动更新」switch (`auto-restart-set`) and
10717
+ * the `daemonState.autoRestart` capability + per-session status. Call
10718
+ * before connect().
10719
+ */
10720
+ setAutoRestartHandlers(initialEnabled, set) {
10721
+ this.autoRestart = { enabled: initialEnabled, sessions: this.autoRestart?.sessions ?? {} };
10722
+ this.rpcHandlerManager.registerHandler("auto-restart-set", async (params) => {
10723
+ if (typeof params?.enabled !== "boolean") return { error: "invalid-enabled" };
10724
+ const enabled = await set(params.enabled);
10725
+ this.autoRestart = { enabled, sessions: enabled ? this.autoRestart?.sessions ?? {} : {} };
10726
+ await this.publishAutoRestart();
10727
+ return { autoRestart: { enabled } };
10728
+ });
10729
+ }
10730
+ /** B-852: the scheduler's per-session status changed (already signature-deduped). */
10731
+ setAutoRestartSessions(sessions) {
10732
+ if (!this.autoRestart) return Promise.resolve();
10733
+ this.autoRestart = { ...this.autoRestart, sessions };
10734
+ return this.publishAutoRestart();
10735
+ }
10736
+ autoRestartState(now) {
10737
+ const state = this.autoRestart;
10738
+ return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, sessions: state.sessions };
10739
+ }
10740
+ publishAutoRestart() {
10741
+ if (!this.autoRestart || !this.socket?.connected) return Promise.resolve();
10742
+ const attempt = this.cliUpdatePushChain.then(() => this.updateDaemonState((current) => ({
10743
+ ...current ?? {},
10744
+ status: current?.status ?? "running",
10745
+ autoRestart: this.autoRestartState(Date.now())
10746
+ }))).catch((error) => {
10747
+ logger.debug("[API MACHINE] Failed to publish auto-restart:", error);
10748
+ });
10749
+ this.cliUpdatePushChain = attempt.then(() => void 0);
10750
+ return attempt;
10751
+ }
10713
10752
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
10714
10753
  setClaudeAuthHandlers(handlers) {
10715
10754
  this.rpcHandlerManager.registerHandler("claude-auth-probe", async () => {
@@ -11436,6 +11475,8 @@ class ApiMachineClient {
11436
11475
  ...this.claudeAuthState ? { claudeAuth: this.claudeAuthState } : {},
11437
11476
  // B-587 capability + setting (same restamp discipline).
11438
11477
  ...this.agentHibernationIdleMs !== null ? { agentHibernation: { idleMs: this.agentHibernationIdleMs, rpcAvailable: true, detectedAt: now } } : {},
11478
+ // B-852 capability + setting + status (same restamp discipline).
11479
+ ...this.autoRestart ? { autoRestart: this.autoRestartState(now) } : {},
11439
11480
  // B-510: re-ship the declared panels (also clears a stale list).
11440
11481
  ...Array.isArray(this.webPanels) ? { webPanels: { panels: this.webPanels, updatedAt: now } } : {}
11441
11482
  };
@@ -2,45 +2,45 @@
2
2
 
3
3
  var socket_ioClient = require('socket.io-client');
4
4
  var webPanels = require('./webPanels-FCgFKvVe.cjs');
5
- var logger = require('./logger-BP1SW7Cs.cjs');
6
- var lidState = require('./lidState-B4dHJCeS.cjs');
7
- var mirrorProtocol = require('./mirrorProtocol-CiA3hO2y.cjs');
8
- var configuration = require('./configuration-C0ctLGW2.cjs');
5
+ var logger = require('./logger-BBRTTVsQ.cjs');
6
+ var lidState = require('./lidState-q_XFYg33.cjs');
7
+ var mirrorProtocol = require('./mirrorProtocol-GuWMxLkh.cjs');
8
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
9
9
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
10
- var registerCommonHandlers = require('./registerCommonHandlers-DZPozYxc.cjs');
10
+ var registerCommonHandlers = require('./registerCommonHandlers-Beun-cQv.cjs');
11
11
  var promises = require('node:fs/promises');
12
12
  var path = require('node:path');
13
13
  var os = require('node:os');
14
14
  var fsMkdir = require('./fsMkdir-0K3yENml.cjs');
15
15
  var node_child_process = require('node:child_process');
16
- var persistence = require('./persistence-CrzC7yr_.cjs');
16
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
17
17
  var fileStore = require('./fileStore-7qhnbs6N.cjs');
18
18
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
19
19
  var limits = require('./limits-C-a7gr04.cjs');
20
- var time = require('./time-XwEZxKGc.cjs');
20
+ var time = require('./time-gPD_EmA-.cjs');
21
21
  var pty = require('node-pty');
22
22
  var terminals = require('./terminals-B_bfC9c2.cjs');
23
23
  var tmuxSocket = require('./tmuxSocket-D-Xt6Vn-.cjs');
24
- var index = require('./index-De02DNu5.cjs');
24
+ var index = require('./index-Bs5FD8JF.cjs');
25
25
  var node_crypto = require('node:crypto');
26
26
  var node_fs = require('node:fs');
27
27
  var axios = require('axios');
28
28
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
29
29
  var ids = require('./ids-B6ZC0HGt.cjs');
30
30
  var detectCLI = require('./detectCLI-BuYR_Qxe.cjs');
31
- var localHappyAgentAuth = require('./localHappyAgentAuth-CG2nPD_H.cjs');
31
+ var localHappyAgentAuth = require('./localHappyAgentAuth-CKNW-MXw.cjs');
32
32
  var path$1 = require('./path-B7zW-WwE.cjs');
33
33
  var oneShotPrompts = require('./oneShotPrompts-CL0dip9C.cjs');
34
- var claudeSessionFork = require('./claudeSessionFork-DsbcuDEJ.cjs');
35
- var codexAppServerClient = require('./codexAppServerClient-CO9f4Jr8.cjs');
34
+ var claudeSessionFork = require('./claudeSessionFork-DTLZ2rek.cjs');
35
+ var codexAppServerClient = require('./codexAppServerClient-CpT9F6EM.cjs');
36
36
  var index$1 = require('./index-BOe6dKnL.cjs');
37
- var codexThreadFork = require('./codexThreadFork-DNekT4nQ.cjs');
38
- var rateLimitWindows = require('./rateLimitWindows-Cs56YJCH.cjs');
37
+ var codexThreadFork = require('./codexThreadFork-5kwoKjMu.cjs');
38
+ var rateLimitWindows = require('./rateLimitWindows-Bx3ROBP5.cjs');
39
39
  require('chalk');
40
40
  require('node:util');
41
41
  require('os');
42
42
  require('child_process');
43
- require('./package-CYDdLA6R.cjs');
43
+ require('./package-DrY090nZ.cjs');
44
44
  require('util');
45
45
  require('fs/promises');
46
46
  require('crypto');
@@ -10511,6 +10511,8 @@ class ApiMachineClient {
10511
10511
  claudeAuthState = null;
10512
10512
  /** B-587: the machine's hibernation threshold, published as a capability. */
10513
10513
  agentHibernationIdleMs = null;
10514
+ /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
10515
+ autoRestart = null;
10514
10516
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
10515
10517
  webPanels = null;
10516
10518
  webPanelsSignatureSent = null;
@@ -10731,6 +10733,43 @@ class ApiMachineClient {
10731
10733
  this.cliUpdatePushChain = attempt.then(() => void 0);
10732
10734
  return attempt;
10733
10735
  }
10736
+ /**
10737
+ * B-852: the machine page's「会话自动更新」switch (`auto-restart-set`) and
10738
+ * the `daemonState.autoRestart` capability + per-session status. Call
10739
+ * before connect().
10740
+ */
10741
+ setAutoRestartHandlers(initialEnabled, set) {
10742
+ this.autoRestart = { enabled: initialEnabled, sessions: this.autoRestart?.sessions ?? {} };
10743
+ this.rpcHandlerManager.registerHandler("auto-restart-set", async (params) => {
10744
+ if (typeof params?.enabled !== "boolean") return { error: "invalid-enabled" };
10745
+ const enabled = await set(params.enabled);
10746
+ this.autoRestart = { enabled, sessions: enabled ? this.autoRestart?.sessions ?? {} : {} };
10747
+ await this.publishAutoRestart();
10748
+ return { autoRestart: { enabled } };
10749
+ });
10750
+ }
10751
+ /** B-852: the scheduler's per-session status changed (already signature-deduped). */
10752
+ setAutoRestartSessions(sessions) {
10753
+ if (!this.autoRestart) return Promise.resolve();
10754
+ this.autoRestart = { ...this.autoRestart, sessions };
10755
+ return this.publishAutoRestart();
10756
+ }
10757
+ autoRestartState(now) {
10758
+ const state = this.autoRestart;
10759
+ return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, sessions: state.sessions };
10760
+ }
10761
+ publishAutoRestart() {
10762
+ if (!this.autoRestart || !this.socket?.connected) return Promise.resolve();
10763
+ const attempt = this.cliUpdatePushChain.then(() => this.updateDaemonState((current) => ({
10764
+ ...current ?? {},
10765
+ status: current?.status ?? "running",
10766
+ autoRestart: this.autoRestartState(Date.now())
10767
+ }))).catch((error) => {
10768
+ logger.logger.debug("[API MACHINE] Failed to publish auto-restart:", error);
10769
+ });
10770
+ this.cliUpdatePushChain = attempt.then(() => void 0);
10771
+ return attempt;
10772
+ }
10734
10773
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
10735
10774
  setClaudeAuthHandlers(handlers) {
10736
10775
  this.rpcHandlerManager.registerHandler("claude-auth-probe", async () => {
@@ -11457,6 +11496,8 @@ class ApiMachineClient {
11457
11496
  ...this.claudeAuthState ? { claudeAuth: this.claudeAuthState } : {},
11458
11497
  // B-587 capability + setting (same restamp discipline).
11459
11498
  ...this.agentHibernationIdleMs !== null ? { agentHibernation: { idleMs: this.agentHibernationIdleMs, rpcAvailable: true, detectedAt: now } } : {},
11499
+ // B-852 capability + setting + status (same restamp discipline).
11500
+ ...this.autoRestart ? { autoRestart: this.autoRestartState(now) } : {},
11460
11501
  // B-510: re-ship the declared panels (also clears a stale list).
11461
11502
  ...Array.isArray(this.webPanels) ? { webPanels: { panels: this.webPanels, updatedAt: now } } : {}
11462
11503
  };
@@ -1,8 +1,8 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { writeFile, rename, unlink } from 'node:fs/promises';
3
3
  import { join, basename } from 'node:path';
4
- import { M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES } from './pushNotifications-Cq1s8YVK.mjs';
5
- import { e as ensurePrivateDirectory, h as hardenPrivateFile } from './configuration-1FabKklB.mjs';
4
+ import { M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES } from './pushNotifications-dUceOIni.mjs';
5
+ import { e as ensurePrivateDirectory, h as hardenPrivateFile } from './configuration-Dechcvd-.mjs';
6
6
 
7
7
  const CLAUDE_ATTACHMENT_KINDS = [
8
8
  "image/jpeg",
@@ -3,8 +3,8 @@
3
3
  var node_crypto = require('node:crypto');
4
4
  var promises = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var pushNotifications = require('./pushNotifications-CalIS9sq.cjs');
7
- var configuration = require('./configuration-C0ctLGW2.cjs');
6
+ var pushNotifications = require('./pushNotifications-CfspRcl-.cjs');
7
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
8
8
 
9
9
  const CLAUDE_ATTACHMENT_KINDS = [
10
10
  "image/jpeg",
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
4
- var configuration = require('./configuration-C0ctLGW2.cjs');
4
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
5
5
  var node_crypto = require('node:crypto');
6
6
  var tweetnacl = require('tweetnacl');
7
7
  var axios = require('axios');
8
- var time = require('./time-XwEZxKGc.cjs');
9
- var persistence = require('./persistence-CrzC7yr_.cjs');
10
- var browser = require('./browser-D1yzC0Tu.cjs');
11
- var logger = require('./logger-BP1SW7Cs.cjs');
8
+ var time = require('./time-gPD_EmA-.cjs');
9
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
10
+ var browser = require('./browser-CLJWcodR.cjs');
11
+ var logger = require('./logger-BBRTTVsQ.cjs');
12
12
 
13
13
  function generateWebAuthUrl(publicKey) {
14
14
  const publicKeyBase64 = authRelay.encodeBase64(publicKey, "base64url");
@@ -1,11 +1,11 @@
1
1
  import chalk from 'chalk';
2
- import { g as readCredentials, r as readSettings, h as clearCredentials, i as clearMachineId } from './persistence-0INrP3aB.mjs';
3
- import { a as authAndSetupMachineIfNeeded } from './auth-CyrVvWHF.mjs';
4
- import { c as configuration } from './configuration-1FabKklB.mjs';
2
+ import { g as readCredentials, r as readSettings, h as clearCredentials, i as clearMachineId } from './persistence-Dogj7JIp.mjs';
3
+ import { a as authAndSetupMachineIfNeeded } from './auth-Bj0psrD2.mjs';
4
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
5
5
  import { existsSync, rmSync } from 'node:fs';
6
6
  import { createInterface } from 'node:readline';
7
- import { b as checkIfDaemonRunningAndCleanupStaleState, s as stopDaemon } from './controlClient-DwNnNAUx.mjs';
8
- import { l as logger } from './logger-DOKH3Zbh.mjs';
7
+ import { b as checkIfDaemonRunningAndCleanupStaleState, s as stopDaemon } from './controlClient-D7NGfmtq.mjs';
8
+ import { l as logger } from './logger-CL7pin9b.mjs';
9
9
  import os from 'node:os';
10
10
  import { c as credentialRelayProblem } from './authRelay-DhQhkBvX.mjs';
11
11
  import 'node:fs/promises';
@@ -13,11 +13,11 @@ import 'zod';
13
13
  import 'node:crypto';
14
14
  import 'tweetnacl';
15
15
  import 'axios';
16
- import './time-CUK37wiV.mjs';
17
- import './browser-vb0k1zfI.mjs';
16
+ import './time-CN3TuSVG.mjs';
17
+ import './browser-BGxDRhHy.mjs';
18
18
  import 'open';
19
19
  import 'node:path';
20
- import './package-DTcaIhjW.mjs';
20
+ import './package-C6uiXULx.mjs';
21
21
  import 'node:util';
22
22
 
23
23
  function localMachineIdentityStatus(machineId) {
@@ -1,12 +1,12 @@
1
1
  import { e as encodeBase64, c as credentialRelayProblem, f as encodeBase64Url, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
2
- import { c as configuration } from './configuration-1FabKklB.mjs';
2
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
3
3
  import { randomUUID, randomBytes } from 'node:crypto';
4
4
  import tweetnacl from 'tweetnacl';
5
5
  import axios from 'axios';
6
- import { d as delay } from './time-CUK37wiV.mjs';
7
- import { g as readCredentials, k as readSettingsOutcome, u as updateSettings, w as writeCredentialsLegacy, m as writeCredentialsDataKey } from './persistence-0INrP3aB.mjs';
8
- import { o as openBrowser } from './browser-vb0k1zfI.mjs';
9
- import { l as logger } from './logger-DOKH3Zbh.mjs';
6
+ import { d as delay } from './time-CN3TuSVG.mjs';
7
+ import { g as readCredentials, m as readSettingsOutcome, u as updateSettings, w as writeCredentialsLegacy, n as writeCredentialsDataKey } from './persistence-Dogj7JIp.mjs';
8
+ import { o as openBrowser } from './browser-BGxDRhHy.mjs';
9
+ import { l as logger } from './logger-CL7pin9b.mjs';
10
10
 
11
11
  function generateWebAuthUrl(publicKey) {
12
12
  const publicKeyBase64 = encodeBase64(publicKey, "base64url");