very-happy-cli 0.2.204 → 0.2.206

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-BBfcpIDj.mjs → AcpBackend-CfTTWCK_.mjs} +3 -3
  2. package/dist/{AcpBackend-BupxHXGp.cjs → AcpBackend-dO5GAvaj.cjs} +3 -3
  3. package/dist/{AcpSessionManager-JJrnenKM.cjs → AcpSessionManager-DpT9znny.cjs} +1 -1
  4. package/dist/{AcpSessionManager-B9UkPYGi.mjs → AcpSessionManager-a-A4YDP7.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-86_xnisC.cjs → BasePermissionHandler-C917oi-W.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-tGylJLUH.mjs → BasePermissionHandler-Cg2py7Mi.mjs} +1 -1
  7. package/dist/{account-C91_R-kw.cjs → account-BpEOGAi-.cjs} +5 -5
  8. package/dist/{account-BRqUOj_D.mjs → account-CY_3dfMO.mjs} +5 -5
  9. package/dist/{acpSessionResume-DK8EjIY0.cjs → acpSessionResume-BTchDv4R.cjs} +1 -1
  10. package/dist/{acpSessionResume-CZQ91ano.mjs → acpSessionResume-D1v1ZqjL.mjs} +1 -1
  11. package/dist/{agentHome-BZvbPuy1.cjs → agentHome-B8Fp21kp.cjs} +4 -4
  12. package/dist/{agentHome-71zGywwx.mjs → agentHome-Bb0sGzgt.mjs} +4 -4
  13. package/dist/{api-BoJA-zK3.cjs → api-B-u-Mk6V.cjs} +9 -9
  14. package/dist/{api-BYh1VGBa.mjs → api-DGJVcaIF.mjs} +9 -9
  15. package/dist/{apiMachine--_eI4PTv.mjs → apiMachine-B-GyYD22.mjs} +56 -16
  16. package/dist/{apiMachine-CA58NM_V.cjs → apiMachine-Bi15f6YB.cjs} +56 -16
  17. package/dist/{attachmentContent-y621KwMz.cjs → attachmentContent-BvGKA5QH.cjs} +2 -2
  18. package/dist/{attachmentContent-D95cCBX5.mjs → attachmentContent-C-qFMirp.mjs} +2 -2
  19. package/dist/{auth-CAkpHr8F.cjs → auth-Bnj_x4XN.cjs} +5 -5
  20. package/dist/{auth-DRJ_WPn3.mjs → auth-CP7a7YqH.mjs} +5 -5
  21. package/dist/{auth-Dofm64Kp.cjs → auth-CT2084Ag.cjs} +8 -8
  22. package/dist/{auth-DCzFx5BN.mjs → auth-FRjFFR7K.mjs} +8 -8
  23. package/dist/{auto-CrgOy5OR.mjs → auto-CxItjek7.mjs} +14 -14
  24. package/dist/{auto-D4IBwJEE.cjs → auto-DaADkeaT.cjs} +14 -14
  25. package/dist/{bootstrap-PnL2FX64.mjs → bootstrap-BCuF4Kla.mjs} +2 -2
  26. package/dist/{bootstrap-D16MMPNP.cjs → bootstrap-Cq_W1C3z.cjs} +2 -2
  27. package/dist/{browser-D2enJJfv.mjs → browser-C-PWxfCE.mjs} +1 -1
  28. package/dist/{browser-DK2GfyEr.cjs → browser-CHC75A5J.cjs} +1 -1
  29. package/dist/{claudeLocal-DaqiRW9N.cjs → claudeLocal-TVtTBsHi.cjs} +4 -4
  30. package/dist/{claudeLocal-BbzN1qly.mjs → claudeLocal-XsMte9X2.mjs} +4 -4
  31. package/dist/{claudeLocalLauncher-B0qbyOUc.cjs → claudeLocalLauncher-D5XU298r.cjs} +9 -9
  32. package/dist/{claudeLocalLauncher-D7bhZ9rp.mjs → claudeLocalLauncher-DDU1kyxO.mjs} +9 -9
  33. package/dist/{claudeSessionFork-BPF3cpGs.mjs → claudeSessionFork-CZpugNK3.mjs} +1 -1
  34. package/dist/{claudeSessionFork-lcajftLB.cjs → claudeSessionFork-CzzRjCFN.cjs} +1 -1
  35. package/dist/{client-t1vQ7gho.mjs → client-5ekzs8hv.mjs} +2 -2
  36. package/dist/{client-Og5iNZ6S.mjs → client-Bqyfl2t0.mjs} +4 -4
  37. package/dist/{client-xA44FUnf.cjs → client-C2F0G1gB.cjs} +4 -4
  38. package/dist/{client-D5_YDMpA.cjs → client-Cdax95Aw.cjs} +2 -2
  39. package/dist/{client-ByK8-iRd.cjs → client-D9viv5fT.cjs} +2 -2
  40. package/dist/{client-BH4s6mzX.mjs → client-DizbJlbC.mjs} +2 -2
  41. package/dist/{client-CqmT_ur8.cjs → client-jlIx75iG.cjs} +2 -2
  42. package/dist/{client-BHt14nix.mjs → client-ztj20uaj.mjs} +2 -2
  43. package/dist/codex/happyMcpStdioBridge.cjs +18 -18
  44. package/dist/codex/happyMcpStdioBridge.mjs +18 -18
  45. package/dist/{codexAppServerClient-CvL3eBlM.mjs → codexAppServerClient-DFRZ__3w.mjs} +3 -3
  46. package/dist/{codexAppServerClient-CyLtj1kP.cjs → codexAppServerClient-oSG91fFK.cjs} +3 -3
  47. package/dist/{codexCommand-CXytYlk9.mjs → codexCommand-BE__EfSf.mjs} +43 -43
  48. package/dist/{codexCommand-B0Slfvne.cjs → codexCommand-BNjxG3C_.cjs} +43 -43
  49. package/dist/{codexTermination-D0sBaTvW.mjs → codexTermination-DuGPgcGv.mjs} +1 -1
  50. package/dist/{codexTermination-CykPnK3G.cjs → codexTermination-_YHZVugN.cjs} +1 -1
  51. package/dist/{config-7Z5qIB3k.cjs → config-BH7N9kZX.cjs} +3 -3
  52. package/dist/{config-DeXK_5y4.mjs → config-DXO9RUqb.mjs} +3 -3
  53. package/dist/{configuration-D_YrWa_i.mjs → configuration-BreL0beF.mjs} +1 -1
  54. package/dist/{configuration-CDqmWkHO.cjs → configuration-Da2jFKHx.cjs} +1 -1
  55. package/dist/{connect-D_tzdR4l.cjs → connect-BIIxh5a9.cjs} +12 -12
  56. package/dist/{connect-CivOym_v.mjs → connect-B_UrNMnp.mjs} +12 -12
  57. package/dist/{context-DXfkj_FL.mjs → context-DFudPCad.mjs} +1 -1
  58. package/dist/{context-k2CbuBtp.cjs → context-n1LlNbjT.cjs} +1 -1
  59. package/dist/{controlClient-BS86Ksm8.cjs → controlClient-Dlait4BW.cjs} +3 -3
  60. package/dist/{controlClient-Daki7wgo.mjs → controlClient-DwiujrH8.mjs} +3 -3
  61. package/dist/{createSessionMetadata-2s80RDL1.cjs → createSessionMetadata-83WjQzAt.cjs} +2 -2
  62. package/dist/{createSessionMetadata-B_hQ8lDn.mjs → createSessionMetadata-B0wB4nIY.mjs} +2 -2
  63. package/dist/{deterministicJson-DKiOtrSA.mjs → deterministicJson-BUtDwjAU.mjs} +54 -19
  64. package/dist/{deterministicJson-lwG_VzWd.cjs → deterministicJson-Dppskedb.cjs} +53 -18
  65. package/dist/{doctor-C0kONAQn.cjs → doctor-BtVympkn.cjs} +7 -7
  66. package/dist/{doctor-DegBfYjz.mjs → doctor-QQS5dGqG.mjs} +7 -7
  67. package/dist/{downloadTarget-osakJyyA.mjs → downloadTarget-CVm8ey3W.mjs} +6 -6
  68. package/dist/{downloadTarget-BTEVg8t6.cjs → downloadTarget-CxGQUh-7.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-vxHxmXo2.cjs → ensureDaemonRunning-CjD9jtqp.cjs} +5 -5
  70. package/dist/{ensureDaemonRunning-ED6UVEbk.mjs → ensureDaemonRunning-m6Kd3BM7.mjs} +5 -5
  71. package/dist/{exitNotice-D1tMULzu.mjs → exitNotice-HOwYf-97.mjs} +10 -5
  72. package/dist/{exitNotice-BhRrv8dx.cjs → exitNotice-bUdz2C4L.cjs} +11 -4
  73. package/dist/{format-DJwRUrQm.mjs → format-2GqpXiRX.mjs} +1 -1
  74. package/dist/{format-9KvRMdvY.cjs → format-BXxqj69f.cjs} +1 -1
  75. package/dist/{handleResumeCommand-PfKmR-hv.mjs → handleResumeCommand-CTT8lfhV.mjs} +5 -5
  76. package/dist/{handleResumeCommand-0lsgLgBB.cjs → handleResumeCommand-D_NUSPvz.cjs} +5 -5
  77. package/dist/{index-B_narjYR.cjs → index-B2xEPLkK.cjs} +40 -40
  78. package/dist/{index-CUJZx4cs.mjs → index-BLL_KBUA.mjs} +3 -3
  79. package/dist/{index-Bm_9wBaO.cjs → index-BrvS8Bor.cjs} +4 -4
  80. package/dist/{index-CUeuMsap.mjs → index-C2PX_W49.mjs} +4 -4
  81. package/dist/{index-D1rxFJ2b.mjs → index-CDO9rljT.mjs} +41 -41
  82. package/dist/{index-BNcFxRSt.mjs → index-CIWLX_eM.mjs} +4 -4
  83. package/dist/{index-C7yXrMau.cjs → index-CJXPB8kU.cjs} +3 -3
  84. package/dist/{index-l8Xg3Mbf.cjs → index-TDGlRjkn.cjs} +4 -4
  85. package/dist/index.cjs +2 -2
  86. package/dist/index.mjs +2 -2
  87. package/dist/{install-C0I1a5sL.cjs → install-BaUw2G6E.cjs} +3 -3
  88. package/dist/{install-B593oYZs.mjs → install-DDfCEbu9.mjs} +3 -3
  89. package/dist/{issue-CJrXCpnf.cjs → issue-BrxmnVRr.cjs} +7 -7
  90. package/dist/{issue-D9ukoK-U.mjs → issue-Mh6p_OMm.mjs} +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-CxNcSjMM.mjs → localHappyAgentAuth-B2bOV9RF.mjs} +1 -1
  96. package/dist/{localHappyAgentAuth-D3GKuEC2.cjs → localHappyAgentAuth-BtDypYZb.cjs} +1 -1
  97. package/dist/{logger-C8anCmdW.cjs → logger-B_GiBdoD.cjs} +2 -2
  98. package/dist/{logger-BcdURxNR.mjs → logger-DOp6YYAW.mjs} +2 -2
  99. package/dist/{machineMetadata-BQaQQk6Z.mjs → machineMetadata-8PjdzhIk.mjs} +3 -3
  100. package/dist/{machineMetadata-DYWtdEtE.cjs → machineMetadata-rjOkg7or.cjs} +3 -3
  101. package/dist/{main-KsUdHnwc.mjs → main-BfSuibka.mjs} +48 -48
  102. package/dist/{main-Bw7qSCWA.cjs → main-Dxj1sGm3.cjs} +48 -48
  103. package/dist/{mcp-OeLaQ2XR.mjs → mcp-C_G7MsCo.mjs} +15 -15
  104. package/dist/{mcp-CxPUFOEd.cjs → mcp-DmRG6Yyk.cjs} +15 -15
  105. package/dist/{mirrorProtocol-cTQcrW55.cjs → mirrorProtocol-C8ZsCJzM.cjs} +2 -2
  106. package/dist/{mirrorProtocol-Sj0yEHHU.mjs → mirrorProtocol-N8M4o7UD.mjs} +2 -2
  107. package/dist/{package-Dx3hbh9J.mjs → package-CJeweE1o.mjs} +8 -8
  108. package/dist/{package-DkpXQvp1.cjs → package-DTEEvw5V.cjs} +8 -8
  109. package/dist/{panels-DKYO14Sq.mjs → panels-BJGEusTH.mjs} +5 -5
  110. package/dist/{panels-CPNZnwCH.cjs → panels-D9DTAY7b.cjs} +5 -5
  111. package/dist/{peerTools-DpCWFxI6.cjs → peerTools-Cs7_fbtQ.cjs} +5 -5
  112. package/dist/{peerTools-DYFslv6R.mjs → peerTools-D66WcwUZ.mjs} +5 -5
  113. package/dist/{persistence-3iZXGbfb.mjs → persistence-DURvN3Hm.mjs} +2 -2
  114. package/dist/{persistence-Ch78xygf.cjs → persistence-_HpJ8Xqx.cjs} +2 -2
  115. package/dist/{piRunnerArgs-CA6jqQ0k.cjs → piRunnerArgs-BqqnRbD2.cjs} +1 -1
  116. package/dist/{piRunnerArgs-DEuYl6FL.mjs → piRunnerArgs-Q9_OZpgB.mjs} +1 -1
  117. package/dist/{piRuntime-BIVHf-hN.cjs → piRuntime-CfymNU4r.cjs} +1 -1
  118. package/dist/{piRuntime-CyN43ILm.mjs → piRuntime-DVfBZwGV.mjs} +1 -1
  119. package/dist/{piTerminal-DXz5L73L.mjs → piTerminal-BmVTobWw.mjs} +17 -17
  120. package/dist/{piTerminal-Hw4StZWN.cjs → piTerminal-SWzeud-Y.cjs} +17 -17
  121. package/dist/{pushNotifications-Db1NGJiA.mjs → pushNotifications-CrN3Ja_a.mjs} +19 -2
  122. package/dist/{pushNotifications-D2ejrxlN.cjs → pushNotifications-DzWubbyC.cjs} +19 -2
  123. package/dist/{query-CeYpZWVb.mjs → query-CcFiFfJ8.mjs} +1 -1
  124. package/dist/{query-velpFYxW.cjs → query-DXKQY4gV.cjs} +1 -1
  125. package/dist/{rateLimitWindows-C78D8Uf-.cjs → rateLimitWindows-BmZ6gZY8.cjs} +1 -1
  126. package/dist/{rateLimitWindows-BSQttrPk.mjs → rateLimitWindows-BrCPAQCV.mjs} +1 -1
  127. package/dist/{reconnectGate-Ie4nSKNl.mjs → reconnectGate-BbxwTsar.mjs} +1 -1
  128. package/dist/{reconnectGate-S9yNiuY7.cjs → reconnectGate-DBf3oDWw.cjs} +1 -1
  129. package/dist/{registerCommonHandlers-51llVpLx.cjs → registerCommonHandlers-DJcGS4eV.cjs} +2 -2
  130. package/dist/{registerCommonHandlers-BR7BeGX3.mjs → registerCommonHandlers-Dd5Ld0CL.mjs} +2 -2
  131. package/dist/{registerKillSessionHandler-BjY79qBi.cjs → registerKillSessionHandler-CCpSkYc2.cjs} +5 -5
  132. package/dist/{registerKillSessionHandler-RbWPmKnK.mjs → registerKillSessionHandler-DNLUoqKq.mjs} +5 -5
  133. package/dist/{registerSideQuestionHandler-B1Xk7dFK.cjs → registerSideQuestionHandler-D7zu0Z-I.cjs} +4 -4
  134. package/dist/{registerSideQuestionHandler-BbYT7QfR.mjs → registerSideQuestionHandler-_YMnEk1L.mjs} +4 -4
  135. package/dist/{remoteSessionClient-r-UnqHor.cjs → remoteSessionClient-Don4DO6r.cjs} +5 -5
  136. package/dist/{remoteSessionClient-Ddns3U8M.mjs → remoteSessionClient-iIWEgwCP.mjs} +5 -5
  137. package/dist/{reportProgressTool-C3sf9D8m.mjs → reportProgressTool-B9DJTgdO.mjs} +4 -4
  138. package/dist/{reportProgressTool-ByadxJtc.cjs → reportProgressTool-DwHrvFHn.cjs} +4 -4
  139. package/dist/{run-r5sY3wHk.cjs → run-CbsSCESl.cjs} +269 -37
  140. package/dist/{run-jsINwBOz.mjs → run-RKaV1s5m.mjs} +269 -37
  141. package/dist/{runClaude-CRKsRfnq.cjs → runClaude-B4hSm06m.cjs} +20 -20
  142. package/dist/{runClaude-D8CuiZhi.mjs → runClaude-BnMkhjUP.mjs} +20 -20
  143. package/dist/{runClaudeDeps-BiVzNIE6.cjs → runClaudeDeps-BrS568YD.cjs} +38 -38
  144. package/dist/{runClaudeDeps-CUuPWcg9.mjs → runClaudeDeps-jlxTi74f.mjs} +44 -44
  145. package/dist/{runGemini-cqVZjPT6.mjs → runGemini-D34l_LpW.mjs} +35 -35
  146. package/dist/{runGemini-DANnc0BW.cjs → runGemini-DMLMq-y1.cjs} +35 -35
  147. package/dist/{runOpenClaw-CGwc6mfJ.cjs → runOpenClaw-BGKlUFHd.cjs} +17 -17
  148. package/dist/{runOpenClaw-B6V2nz8J.mjs → runOpenClaw-Dezk2LNe.mjs} +17 -17
  149. package/dist/{sandbox-CNheYPva.cjs → sandbox-C70ODcxh.cjs} +4 -4
  150. package/dist/{sandbox-JYBMckKE.mjs → sandbox-Db7g31zm.mjs} +4 -4
  151. package/dist/selfCheck-CUVp2nQo.mjs +89 -0
  152. package/dist/{selfCheck-DtSEBt0g.cjs → selfCheck-UKA82vpj.cjs} +39 -39
  153. package/dist/{send-BHrbbGJ7.mjs → send-8-CnqJTX.mjs} +8 -8
  154. package/dist/{send-DNdJR3n8.cjs → send-BD8y_Dvq.cjs} +8 -8
  155. package/dist/{server-CvP_b3eb.cjs → server-B-0TJW4B.cjs} +6 -6
  156. package/dist/{server-DhQjVsyZ.mjs → server-CxmH3n3Y.mjs} +4 -4
  157. package/dist/{sessionLock-UkF8M3j5.cjs → sessionLock-BRaWaYhl.cjs} +9 -3
  158. package/dist/{sessionLock-5i516L-w.mjs → sessionLock-Cg33c_Um.mjs} +9 -4
  159. package/dist/{sessionOps-DX49XNAT.mjs → sessionOps-1_wWgsXG.mjs} +4 -4
  160. package/dist/{sessionOps-D77IeFSt.cjs → sessionOps-C-ms5bYE.cjs} +4 -4
  161. package/dist/{sessionProvider-C5xW4Dt3.mjs → sessionProvider-BKJ7EW-9.mjs} +5 -5
  162. package/dist/{sessionProvider-mSI2UgLX.cjs → sessionProvider-nbK5DYvh.cjs} +5 -5
  163. package/dist/{sessionScanner-BZkOnp5a.mjs → sessionScanner-CGP1nnOy.mjs} +3 -3
  164. package/dist/{sessionScanner-B1Am8D4Y.cjs → sessionScanner-S7FsjWqu.cjs} +3 -3
  165. package/dist/{sessions-ClQFpjcA.mjs → sessions-7B68T5D2.mjs} +10 -10
  166. package/dist/{sessions-DDDEiHVR.cjs → sessions-CwC-s7iA.cjs} +10 -10
  167. package/dist/{setupOfflineReconnection-Cn2_vuvO.cjs → setupOfflineReconnection-D9BD_Cha.cjs} +2 -2
  168. package/dist/{setupOfflineReconnection-PjK9laDd.mjs → setupOfflineReconnection-DSlXZLP9.mjs} +2 -2
  169. package/dist/{spawn-BJGaxdot.mjs → spawn-CJ6ow1Et.mjs} +12 -12
  170. package/dist/{spawn-DOj-sY6W.cjs → spawn-D4gyZP6A.cjs} +12 -12
  171. package/dist/{spawnHappyCLI-CpOMz9hX.mjs → spawnHappyCLI-BRcxn8Ui.mjs} +1 -1
  172. package/dist/{spawnHappyCLI-DvxZ7elP.cjs → spawnHappyCLI-CKgAt8NU.cjs} +1 -1
  173. package/dist/{startFileWatcher-1ar7WS96.cjs → startFileWatcher-Baw_dgs_.cjs} +1 -1
  174. package/dist/{startFileWatcher-CPbPNFGY.mjs → startFileWatcher-DJ_IPi0y.mjs} +1 -1
  175. package/dist/{startupSessionCreate-COc5Nnr9.cjs → startupSessionCreate-Cjl3wk3-.cjs} +3 -3
  176. package/dist/{startupSessionCreate-CnVaUZ16.mjs → startupSessionCreate-DeJNxWtb.mjs} +3 -3
  177. package/dist/{sync-DzInYE_l.cjs → sync-BqlAL8Iu.cjs} +1 -1
  178. package/dist/{sync-BZji3J2r.mjs → sync-COxP1DF-.mjs} +1 -1
  179. package/dist/{systemPrompt-CvpjNmQL.cjs → systemPrompt-Ch052UGr.cjs} +1 -1
  180. package/dist/{systemPrompt-Dhdq8hGf.mjs → systemPrompt-bX3lhFwJ.mjs} +1 -1
  181. package/dist/{teams-CRCbDPob.cjs → teams-B15InkZ8.cjs} +8 -8
  182. package/dist/{teams-CVW4ZvmW.mjs → teams-DCCFeNBI.mjs} +8 -8
  183. package/dist/{time-BWVJTcWI.mjs → time-BHGz6WMO.mjs} +1 -1
  184. package/dist/{time-UUMqbIq8.cjs → time-COyPPTSV.cjs} +1 -1
  185. package/dist/{titleGenerator-BHOA2Wkx.cjs → titleGenerator-D4FFE3Mo.cjs} +2 -2
  186. package/dist/{titleGenerator-Ck82YoB7.mjs → titleGenerator-J99R5x-_.mjs} +1 -1
  187. package/dist/{todo-Cwo7joub.cjs → todo-BHGF7oHm.cjs} +7 -7
  188. package/dist/{todo-Cf52TlmX.mjs → todo-BZAJpKe1.mjs} +7 -7
  189. package/dist/{tools-DmNaOlUF.mjs → tools-Ck6hDYQh.mjs} +1 -1
  190. package/dist/{tools-DEErCtZG.cjs → tools-DswZApdy.cjs} +1 -1
  191. package/dist/{uninstall-B85MiNK2.mjs → uninstall-33r_D-SV.mjs} +3 -3
  192. package/dist/{uninstall-CoAK4ANz.cjs → uninstall-DUBwOYXT.cjs} +3 -3
  193. package/package.json +8 -8
  194. package/dist/selfCheck-Jjy_wMw3.mjs +0 -89
@@ -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-BcdURxNR.mjs';
5
- import { d as delay } from './time-BWVJTcWI.mjs';
4
+ import { l as logger } from './logger-DOp6YYAW.mjs';
5
+ import { d as delay } from './time-BHGz6WMO.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-Dx3hbh9J.mjs';
8
+ import { p as packageJson } from './package-CJeweE1o.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-C8anCmdW.cjs');
7
- var time = require('./time-UUMqbIq8.cjs');
6
+ var logger = require('./logger-B_GiBdoD.cjs');
7
+ var time = require('./time-COyPPTSV.cjs');
8
8
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
9
9
  var processTree = require('./processTree-CMHWlVse.cjs');
10
- var _package = require('./package-DkpXQvp1.cjs');
10
+ var _package = require('./package-DTEEvw5V.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-BYL_X3gP.cjs');
5
- var api = require('./api-BoJA-zK3.cjs');
5
+ var api = require('./api-B-u-Mk6V.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
2
  import { s as streamKeyOf, t as createEnvelope } from './index-DWk-WTU-.mjs';
3
- import { t as textResultPayload, b as toolResultPayload } from './api-BYh1VGBa.mjs';
3
+ import { t as textResultPayload, b as toolResultPayload } from './api-DGJVcaIF.mjs';
4
4
 
5
5
  function turnOptions(turnId, time) {
6
6
  return turnId ? { turn: turnId, time } : { time };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-C8anCmdW.cjs');
3
+ var logger = require('./logger-B_GiBdoD.cjs');
4
4
 
5
5
  class BasePermissionHandler {
6
6
  pendingRequests = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- import { l as logger } from './logger-BcdURxNR.mjs';
1
+ import { l as logger } from './logger-DOp6YYAW.mjs';
2
2
 
3
3
  class BasePermissionHandler {
4
4
  pendingRequests = /* @__PURE__ */ new Map();
@@ -2,17 +2,17 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var promises = require('node:readline/promises');
5
- var configuration = require('./configuration-CDqmWkHO.cjs');
6
- var controlClient = require('./controlClient-BS86Ksm8.cjs');
5
+ var configuration = require('./configuration-Da2jFKHx.cjs');
6
+ var controlClient = require('./controlClient-Dlait4BW.cjs');
7
7
  var accountService = require('./accountService-SOeB_21A.cjs');
8
8
  require('node:fs');
9
9
  require('node:os');
10
10
  require('node:path');
11
- require('./package-DkpXQvp1.cjs');
11
+ require('./package-DTEEvw5V.cjs');
12
12
  require('node:fs/promises');
13
- require('./logger-C8anCmdW.cjs');
13
+ require('./logger-B_GiBdoD.cjs');
14
14
  require('node:util');
15
- require('./persistence-Ch78xygf.cjs');
15
+ require('./persistence-_HpJ8Xqx.cjs');
16
16
  require('zod');
17
17
  require('./authRelay-Dy1qU9td.cjs');
18
18
  require('node:crypto');
@@ -1,16 +1,16 @@
1
1
  import chalk from 'chalk';
2
2
  import { createInterface } from 'node:readline/promises';
3
- import { c as configuration } from './configuration-D_YrWa_i.mjs';
4
- import { g as getDaemonAgentProfiles, r as restartDaemonSession, l as listDaemonSessions } from './controlClient-Daki7wgo.mjs';
3
+ import { c as configuration } from './configuration-BreL0beF.mjs';
4
+ import { g as getDaemonAgentProfiles, r as restartDaemonSession, l as listDaemonSessions } from './controlClient-DwiujrH8.mjs';
5
5
  import { A as AccountService, b as bindResultMessages, a as AccountError, l as localRestartFailure } from './accountService-CqrWNH8K.mjs';
6
6
  import 'node:fs';
7
7
  import 'node:os';
8
8
  import 'node:path';
9
- import './package-Dx3hbh9J.mjs';
9
+ import './package-CJeweE1o.mjs';
10
10
  import 'node:fs/promises';
11
- import './logger-BcdURxNR.mjs';
11
+ import './logger-DOp6YYAW.mjs';
12
12
  import 'node:util';
13
- import './persistence-3iZXGbfb.mjs';
13
+ import './persistence-DURvN3Hm.mjs';
14
14
  import 'zod';
15
15
  import './authRelay-DhQhkBvX.mjs';
16
16
  import 'node:crypto';
@@ -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-CDqmWkHO.cjs');
5
+ var configuration = require('./configuration-Da2jFKHx.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-D_YrWa_i.mjs';
3
+ import { w as writePrivateFileSync, c as configuration } from './configuration-BreL0beF.mjs';
4
4
 
5
5
  const SESSION_MODE_DIR = "session-modes";
6
6
  const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
@@ -2,14 +2,14 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var os = require('node:os');
5
- var persistence = require('./persistence-Ch78xygf.cjs');
5
+ var persistence = require('./persistence-_HpJ8Xqx.cjs');
6
6
  require('node:fs');
7
- require('./logger-C8anCmdW.cjs');
7
+ require('./logger-B_GiBdoD.cjs');
8
8
  var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
9
9
  require('node:fs/promises');
10
- require('./configuration-CDqmWkHO.cjs');
10
+ require('./configuration-Da2jFKHx.cjs');
11
11
  require('node:path');
12
- require('./package-DkpXQvp1.cjs');
12
+ require('./package-DTEEvw5V.cjs');
13
13
  require('zod');
14
14
  require('./authRelay-Dy1qU9td.cjs');
15
15
  require('node:crypto');
@@ -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-3iZXGbfb.mjs';
3
+ import { r as readSettings, u as updateSettings } from './persistence-DURvN3Hm.mjs';
4
4
  import 'node:fs';
5
- import './logger-BcdURxNR.mjs';
5
+ import './logger-DOp6YYAW.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-D_YrWa_i.mjs';
8
+ import './configuration-BreL0beF.mjs';
9
9
  import 'node:path';
10
- import './package-Dx3hbh9J.mjs';
10
+ import './package-CJeweE1o.mjs';
11
11
  import 'zod';
12
12
  import './authRelay-DhQhkBvX.mjs';
13
13
  import 'node:crypto';
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var logger = require('./logger-C8anCmdW.cjs');
5
- var pushNotifications = require('./pushNotifications-D2ejrxlN.cjs');
6
- var reconnectGate = require('./reconnectGate-S9yNiuY7.cjs');
4
+ var logger = require('./logger-B_GiBdoD.cjs');
5
+ var pushNotifications = require('./pushNotifications-DzWubbyC.cjs');
6
+ var reconnectGate = require('./reconnectGate-DBf3oDWw.cjs');
7
7
  var node_events = require('node:events');
8
8
  var socket_ioClient = require('socket.io-client');
9
9
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
10
10
  var limits = require('./limits-C-a7gr04.cjs');
11
- var time = require('./time-UUMqbIq8.cjs');
12
- var configuration = require('./configuration-CDqmWkHO.cjs');
11
+ var time = require('./time-COyPPTSV.cjs');
12
+ var configuration = require('./configuration-Da2jFKHx.cjs');
13
13
  var node_crypto = require('node:crypto');
14
14
  var index = require('./index-BYL_X3gP.cjs');
15
- var registerCommonHandlers = require('./registerCommonHandlers-51llVpLx.cjs');
15
+ var registerCommonHandlers = require('./registerCommonHandlers-DJcGS4eV.cjs');
16
16
  var cuid2 = require('@paralleldrive/cuid2');
17
- var sync = require('./sync-DzInYE_l.cjs');
17
+ var sync = require('./sync-BqlAL8Iu.cjs');
18
18
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
19
- var controlClient = require('./controlClient-BS86Ksm8.cjs');
19
+ var controlClient = require('./controlClient-Dlait4BW.cjs');
20
20
  var chalk = require('chalk');
21
21
 
22
22
  async function hmac_sha512(key, data) {
@@ -3205,7 +3205,7 @@ class ApiClient {
3205
3205
  return new ApiSessionClient(this.credential.token, session, opts);
3206
3206
  }
3207
3207
  async machineSyncClient(machine) {
3208
- const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-CA58NM_V.cjs'); });
3208
+ const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-Bi15f6YB.cjs'); });
3209
3209
  return new ApiMachineClient(this.credential.token, machine);
3210
3210
  }
3211
3211
  push() {
@@ -1,20 +1,20 @@
1
1
  import axios from 'axios';
2
- import { l as logger, a as redactLogValue } from './logger-BcdURxNR.mjs';
3
- import { A as AsyncLock, S as SESSION_SUPERSEDED_ERROR, a as agentInstanceAuth, b as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema, P as PushNotificationClient } from './pushNotifications-Db1NGJiA.mjs';
4
- 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, f as createReconnectGate } from './reconnectGate-Ie4nSKNl.mjs';
2
+ import { l as logger, a as redactLogValue } from './logger-DOp6YYAW.mjs';
3
+ import { A as AsyncLock, S as SESSION_SUPERSEDED_ERROR, a as agentInstanceAuth, b as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema, P as PushNotificationClient } from './pushNotifications-CrN3Ja_a.mjs';
4
+ 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, f as createReconnectGate } from './reconnectGate-BbxwTsar.mjs';
5
5
  import { EventEmitter } from 'node:events';
6
6
  import { io } from 'socket.io-client';
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-BWVJTcWI.mjs';
10
- import { c as configuration } from './configuration-D_YrWa_i.mjs';
9
+ import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-BHGz6WMO.mjs';
10
+ import { c as configuration } from './configuration-BreL0beF.mjs';
11
11
  import { createHmac, randomUUID } from 'node:crypto';
12
12
  import { t as createEnvelope, s as streamKeyOf, ag as ReleaseDrainNoticeSchema, ah as RelayAssignmentResponseSchema } from './index-DWk-WTU-.mjs';
13
- import { r as registerCommonHandlers } from './registerCommonHandlers-BR7BeGX3.mjs';
13
+ import { r as registerCommonHandlers } from './registerCommonHandlers-Dd5Ld0CL.mjs';
14
14
  import { createId } from '@paralleldrive/cuid2';
15
- import { I as InvalidateSync } from './sync-BZji3J2r.mjs';
15
+ import { I as InvalidateSync } from './sync-COxP1DF-.mjs';
16
16
  import { B as BackgroundTaskReporter } from './backgroundTaskActivity-8PdPxrvy.mjs';
17
- import { t as notifyDaemonTurnEvent, u as notifyDaemonBackgroundTasks } from './controlClient-Daki7wgo.mjs';
17
+ import { t as notifyDaemonTurnEvent, u as notifyDaemonBackgroundTasks } from './controlClient-DwiujrH8.mjs';
18
18
  import chalk from 'chalk';
19
19
 
20
20
  async function hmac_sha512(key, data) {
@@ -3203,7 +3203,7 @@ class ApiClient {
3203
3203
  return new ApiSessionClient(this.credential.token, session, opts);
3204
3204
  }
3205
3205
  async machineSyncClient(machine) {
3206
- const { ApiMachineClient } = await import('./apiMachine--_eI4PTv.mjs');
3206
+ const { ApiMachineClient } = await import('./apiMachine-B-GyYD22.mjs');
3207
3207
  return new ApiMachineClient(this.credential.token, machine);
3208
3208
  }
3209
3209
  push() {
@@ -1,45 +1,45 @@
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-BcdURxNR.mjs';
4
- import { R as RpcHandlerManager, i as isRateQuotaCode, p as pauseForRateQuota, s as socketConnectGuard, c as connectGuarded, a as answerSocketRequest, e as shouldReconnect, f as createReconnectGate, d as describeSocketAckDrop } from './reconnectGate-Ie4nSKNl.mjs';
5
- import { i as isClaudeSessionId, s as stableVersion, a as sanitizeTagList, p as projectField, b as pickMirrorForTerminal, l as liveSnapshotChanged, c as sanitizeLiveSnapshot, d as serializeLiveSnapshot, r as registerWorktreeHandlers, e as configureWorktreeService, f as summarizeSpawnSessionForLog, g as parseMirrorSendParams } from './mirrorProtocol-Sj0yEHHU.mjs';
6
- import { c as configuration } from './configuration-D_YrWa_i.mjs';
3
+ import { l as logger } from './logger-DOp6YYAW.mjs';
4
+ import { R as RpcHandlerManager, i as isRateQuotaCode, p as pauseForRateQuota, s as socketConnectGuard, c as connectGuarded, a as answerSocketRequest, e as shouldReconnect, f as createReconnectGate, d as describeSocketAckDrop } from './reconnectGate-BbxwTsar.mjs';
5
+ import { i as isClaudeSessionId, s as stableVersion, a as sanitizeTagList, p as projectField, b as pickMirrorForTerminal, l as liveSnapshotChanged, c as sanitizeLiveSnapshot, d as serializeLiveSnapshot, r as registerWorktreeHandlers, e as configureWorktreeService, f as summarizeSpawnSessionForLog, g as parseMirrorSendParams } from './mirrorProtocol-N8M4o7UD.mjs';
6
+ import { c as configuration } from './configuration-BreL0beF.mjs';
7
7
  import { w as withCurrentCliUpdateState } from './cliUpdate-Y34VGe9Y.mjs';
8
- import { r as registerCommonHandlers } from './registerCommonHandlers-BR7BeGX3.mjs';
8
+ import { r as registerCommonHandlers } from './registerCommonHandlers-Dd5Ld0CL.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, p as readTrackedClaudeSessionIds, q as readTrackedCodexThreadIds } from './persistence-3iZXGbfb.mjs';
14
+ import { r as readSettings, c as readPersistedSessions, p as readTrackedClaudeSessionIds, q as readTrackedCodexThreadIds } from './persistence-DURvN3Hm.mjs';
15
15
  import { M as ModelConfigError } from './fileStore-5qpetZS0.mjs';
16
16
  import { am as AGENT_PROFILE_RPC, an as RelayCandidatesResponseSchema, ah as RelayAssignmentResponseSchema, ag as ReleaseDrainNoticeSchema } from './index-DWk-WTU-.mjs';
17
17
  import { a as AccountError } from './accountService-CqrWNH8K.mjs';
18
18
  import { e as encodeBase64, g as encrypt, h as decrypt, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
19
19
  import { p as prepareClipboardText, d as prepareClipboardHistoryText } from './limits-DIo7rEBR.mjs';
20
- import { b as backoff, d as delay } from './time-BWVJTcWI.mjs';
20
+ import { b as backoff, d as delay } from './time-BHGz6WMO.mjs';
21
21
  import * as pty from 'node-pty';
22
22
  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-Dc38XmZv.mjs';
23
23
  import { t as tmuxArgs, V as VH_TMUX_SOCKET_ENV, v as validateTerminalProjectId, a as scrubTmuxClientEnv } from './tmuxSocket-BmZyixRM.mjs';
24
- import { locateClaudeConversation, refreshAgentHomes } from './index-CUeuMsap.mjs';
24
+ import { locateClaudeConversation, refreshAgentHomes } from './index-C2PX_W49.mjs';
25
25
  import { randomBytes } from 'node:crypto';
26
26
  import { readdirSync, unlinkSync, existsSync, mkdirSync, writeFileSync, readFileSync, statSync, chmodSync, renameSync, rmSync, accessSync, constants } from 'node:fs';
27
27
  import axios from 'axios';
28
28
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
29
29
  import { a as isValidTerminalId } from './ids-DU6sLx4C.mjs';
30
30
  import { d as detectCLIAvailability } from './detectCLI-CSGMlV51.mjs';
31
- import { d as detectResumeSupport } from './localHappyAgentAuth-CxNcSjMM.mjs';
31
+ import { d as detectResumeSupport } from './localHappyAgentAuth-B2bOV9RF.mjs';
32
32
  import { g as getProjectPath, a as getClaudeProjectsRoot } from './path-D2wdaNSk.mjs';
33
33
  import { i as isVeryHappyOneShotPrompt } from './oneShotPrompts-DT4p6RNd.mjs';
34
- import { f as forkSession, F as ForkSourceMissingError, d as discardForkedSession, l as listClaudeRewindPoints, b as forkAndTruncateSession, c as ForkTruncateUuidNotFoundError, e as forkBeforeUserMessage, a as forkCompletedTurns } from './claudeSessionFork-BPF3cpGs.mjs';
35
- import { C as CodexAppServerClient } from './codexAppServerClient-CvL3eBlM.mjs';
34
+ import { f as forkSession, F as ForkSourceMissingError, d as discardForkedSession, l as listClaudeRewindPoints, b as forkAndTruncateSession, c as ForkTruncateUuidNotFoundError, e as forkBeforeUserMessage, a as forkCompletedTurns } from './claudeSessionFork-CZpugNK3.mjs';
35
+ import { C as CodexAppServerClient } from './codexAppServerClient-DFRZ__3w.mjs';
36
36
  import { f as forkCodexThread, C as CodexForkRewindPointNotFoundError, l as listCodexRewindPoints, b as forkCodexBeforeUserMessage, a as forkCodexCompletedTurns } from './codexThreadFork-CVzAqELg.mjs';
37
- import { p as planRateLimitWrite, m as mergeRateLimitReports } from './rateLimitWindows-BSQttrPk.mjs';
37
+ import { p as planRateLimitWrite, m as mergeRateLimitReports } from './rateLimitWindows-BrCPAQCV.mjs';
38
38
  import 'chalk';
39
39
  import 'node:util';
40
40
  import 'os';
41
41
  import 'child_process';
42
- import './package-Dx3hbh9J.mjs';
42
+ import './package-CJeweE1o.mjs';
43
43
  import 'util';
44
44
  import 'fs/promises';
45
45
  import 'crypto';
@@ -10643,6 +10643,8 @@ class ApiMachineClient {
10643
10643
  agentHibernationIdleMs = null;
10644
10644
  /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
10645
10645
  autoRestart = null;
10646
+ // B-894:「自动更新 agent」 switch + last automatic install per harness.
10647
+ agentAutoUpdate = null;
10646
10648
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
10647
10649
  webPanels = null;
10648
10650
  webPanelsSignatureSent = null;
@@ -10894,7 +10896,43 @@ class ApiMachineClient {
10894
10896
  }
10895
10897
  autoRestartState(now) {
10896
10898
  const state = this.autoRestart;
10897
- return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, sessions: state.sessions };
10899
+ return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, idleGuard: true, sessions: state.sessions };
10900
+ }
10901
+ /**
10902
+ * B-894: the machine page's「自动更新 agent」switch (`agent-auto-update-set`)
10903
+ * and `daemonState.agentAutoUpdate` (capability + setting + last outcome).
10904
+ * Call before connect().
10905
+ */
10906
+ setAgentAutoUpdateHandlers(initialEnabled, set) {
10907
+ this.agentAutoUpdate = { enabled: initialEnabled, status: this.agentAutoUpdate?.status ?? {} };
10908
+ this.rpcHandlerManager.registerHandler("agent-auto-update-set", async (params) => {
10909
+ if (typeof params?.enabled !== "boolean") return { error: "invalid-enabled" };
10910
+ const enabled = await set(params.enabled);
10911
+ this.agentAutoUpdate = { ...this.agentAutoUpdate, enabled };
10912
+ await this.publishAgentAutoUpdate();
10913
+ return { agentAutoUpdate: { enabled } };
10914
+ });
10915
+ }
10916
+ setAgentAutoUpdateStatus(status) {
10917
+ if (!this.agentAutoUpdate) return Promise.resolve();
10918
+ this.agentAutoUpdate = { ...this.agentAutoUpdate, status };
10919
+ return this.publishAgentAutoUpdate();
10920
+ }
10921
+ agentAutoUpdateState(now) {
10922
+ const state = this.agentAutoUpdate;
10923
+ return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, status: state.status };
10924
+ }
10925
+ publishAgentAutoUpdate() {
10926
+ if (!this.agentAutoUpdate || !this.socket?.connected) return Promise.resolve();
10927
+ const attempt = this.cliUpdatePushChain.then(() => this.updateDaemonState((current) => ({
10928
+ ...current ?? {},
10929
+ status: current?.status ?? "running",
10930
+ agentAutoUpdate: this.agentAutoUpdateState(Date.now())
10931
+ }))).catch((error) => {
10932
+ logger.debug("[API MACHINE] Failed to publish agent auto-update:", error);
10933
+ });
10934
+ this.cliUpdatePushChain = attempt.then(() => void 0);
10935
+ return attempt;
10898
10936
  }
10899
10937
  publishAutoRestart() {
10900
10938
  if (!this.autoRestart || !this.socket?.connected) return Promise.resolve();
@@ -11401,7 +11439,7 @@ class ApiMachineClient {
11401
11439
  if (this.restartSessionHandler) {
11402
11440
  if (!this.rpcHandlerManager.hasHandler(method)) {
11403
11441
  this.rpcHandlerManager.registerHandler(method, async (params) => {
11404
- const { sessionId, model, permissionMode } = params || {};
11442
+ const { sessionId, model, permissionMode, ifIdle } = params || {};
11405
11443
  if (!sessionId || typeof sessionId !== "string") {
11406
11444
  throw new Error("Session ID is required");
11407
11445
  }
@@ -11409,7 +11447,7 @@ class ApiMachineClient {
11409
11447
  if (!handler) {
11410
11448
  throw new Error("Restart session handler not available");
11411
11449
  }
11412
- const result = await handler(sessionId, { model, permissionMode });
11450
+ const result = await handler(sessionId, { model, permissionMode, ...ifIdle === true ? { ifIdle: true } : {} });
11413
11451
  switch (result.type) {
11414
11452
  case "success":
11415
11453
  return { type: "success", sessionId: result.sessionId };
@@ -11705,6 +11743,8 @@ class ApiMachineClient {
11705
11743
  ...this.agentHibernationIdleMs !== null ? { agentHibernation: { idleMs: this.agentHibernationIdleMs, rpcAvailable: true, detectedAt: now } } : {},
11706
11744
  // B-852 capability + setting + status (same restamp discipline).
11707
11745
  ...this.autoRestart ? { autoRestart: this.autoRestartState(now) } : {},
11746
+ // B-894 capability + setting + status (same restamp discipline).
11747
+ ...this.agentAutoUpdate ? { agentAutoUpdate: this.agentAutoUpdateState(now) } : {},
11708
11748
  // B-510: re-ship the declared panels (also clears a stale list).
11709
11749
  ...Array.isArray(this.webPanels) ? { webPanels: { panels: this.webPanels, updatedAt: now } } : {}
11710
11750
  };
@@ -2,46 +2,46 @@
2
2
 
3
3
  var socket_ioClient = require('socket.io-client');
4
4
  var webPanels = require('./webPanels-FCgFKvVe.cjs');
5
- var logger = require('./logger-C8anCmdW.cjs');
6
- var reconnectGate = require('./reconnectGate-S9yNiuY7.cjs');
7
- var mirrorProtocol = require('./mirrorProtocol-cTQcrW55.cjs');
8
- var configuration = require('./configuration-CDqmWkHO.cjs');
5
+ var logger = require('./logger-B_GiBdoD.cjs');
6
+ var reconnectGate = require('./reconnectGate-DBf3oDWw.cjs');
7
+ var mirrorProtocol = require('./mirrorProtocol-C8ZsCJzM.cjs');
8
+ var configuration = require('./configuration-Da2jFKHx.cjs');
9
9
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
10
- var registerCommonHandlers = require('./registerCommonHandlers-51llVpLx.cjs');
10
+ var registerCommonHandlers = require('./registerCommonHandlers-DJcGS4eV.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-Ch78xygf.cjs');
16
+ var persistence = require('./persistence-_HpJ8Xqx.cjs');
17
17
  var fileStore = require('./fileStore-7qhnbs6N.cjs');
18
18
  var index = require('./index-BYL_X3gP.cjs');
19
19
  var accountService = require('./accountService-SOeB_21A.cjs');
20
20
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
21
21
  var limits = require('./limits-C-a7gr04.cjs');
22
- var time = require('./time-UUMqbIq8.cjs');
22
+ var time = require('./time-COyPPTSV.cjs');
23
23
  var pty = require('node-pty');
24
24
  var terminals = require('./terminals-dK3Lrjfp.cjs');
25
25
  var tmuxSocket = require('./tmuxSocket-Dg11Olx0.cjs');
26
- var index$1 = require('./index-Bm_9wBaO.cjs');
26
+ var index$1 = require('./index-BrvS8Bor.cjs');
27
27
  var node_crypto = require('node:crypto');
28
28
  var node_fs = require('node:fs');
29
29
  var axios = require('axios');
30
30
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
31
31
  var ids = require('./ids-B6ZC0HGt.cjs');
32
32
  var detectCLI = require('./detectCLI-BuYR_Qxe.cjs');
33
- var localHappyAgentAuth = require('./localHappyAgentAuth-D3GKuEC2.cjs');
33
+ var localHappyAgentAuth = require('./localHappyAgentAuth-BtDypYZb.cjs');
34
34
  var path$1 = require('./path-B7zW-WwE.cjs');
35
35
  var oneShotPrompts = require('./oneShotPrompts-CL0dip9C.cjs');
36
- var claudeSessionFork = require('./claudeSessionFork-lcajftLB.cjs');
37
- var codexAppServerClient = require('./codexAppServerClient-CyLtj1kP.cjs');
36
+ var claudeSessionFork = require('./claudeSessionFork-CzzRjCFN.cjs');
37
+ var codexAppServerClient = require('./codexAppServerClient-oSG91fFK.cjs');
38
38
  var codexThreadFork = require('./codexThreadFork-C6ZmcT2z.cjs');
39
- var rateLimitWindows = require('./rateLimitWindows-C78D8Uf-.cjs');
39
+ var rateLimitWindows = require('./rateLimitWindows-BmZ6gZY8.cjs');
40
40
  require('chalk');
41
41
  require('node:util');
42
42
  require('os');
43
43
  require('child_process');
44
- require('./package-DkpXQvp1.cjs');
44
+ require('./package-DTEEvw5V.cjs');
45
45
  require('util');
46
46
  require('fs/promises');
47
47
  require('crypto');
@@ -10664,6 +10664,8 @@ class ApiMachineClient {
10664
10664
  agentHibernationIdleMs = null;
10665
10665
  /** B-852: auto-restart setting + per-session status (null until the daemon installs it). */
10666
10666
  autoRestart = null;
10667
+ // B-894:「自动更新 agent」 switch + last automatic install per harness.
10668
+ agentAutoUpdate = null;
10667
10669
  /** B-510: last normalized `webPanels` (null = never set → field not written). */
10668
10670
  webPanels = null;
10669
10671
  webPanelsSignatureSent = null;
@@ -10915,7 +10917,43 @@ class ApiMachineClient {
10915
10917
  }
10916
10918
  autoRestartState(now) {
10917
10919
  const state = this.autoRestart;
10918
- return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, sessions: state.sessions };
10920
+ return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, idleGuard: true, sessions: state.sessions };
10921
+ }
10922
+ /**
10923
+ * B-894: the machine page's「自动更新 agent」switch (`agent-auto-update-set`)
10924
+ * and `daemonState.agentAutoUpdate` (capability + setting + last outcome).
10925
+ * Call before connect().
10926
+ */
10927
+ setAgentAutoUpdateHandlers(initialEnabled, set) {
10928
+ this.agentAutoUpdate = { enabled: initialEnabled, status: this.agentAutoUpdate?.status ?? {} };
10929
+ this.rpcHandlerManager.registerHandler("agent-auto-update-set", async (params) => {
10930
+ if (typeof params?.enabled !== "boolean") return { error: "invalid-enabled" };
10931
+ const enabled = await set(params.enabled);
10932
+ this.agentAutoUpdate = { ...this.agentAutoUpdate, enabled };
10933
+ await this.publishAgentAutoUpdate();
10934
+ return { agentAutoUpdate: { enabled } };
10935
+ });
10936
+ }
10937
+ setAgentAutoUpdateStatus(status) {
10938
+ if (!this.agentAutoUpdate) return Promise.resolve();
10939
+ this.agentAutoUpdate = { ...this.agentAutoUpdate, status };
10940
+ return this.publishAgentAutoUpdate();
10941
+ }
10942
+ agentAutoUpdateState(now) {
10943
+ const state = this.agentAutoUpdate;
10944
+ return { enabled: state.enabled, rpcAvailable: true, detectedAt: now, status: state.status };
10945
+ }
10946
+ publishAgentAutoUpdate() {
10947
+ if (!this.agentAutoUpdate || !this.socket?.connected) return Promise.resolve();
10948
+ const attempt = this.cliUpdatePushChain.then(() => this.updateDaemonState((current) => ({
10949
+ ...current ?? {},
10950
+ status: current?.status ?? "running",
10951
+ agentAutoUpdate: this.agentAutoUpdateState(Date.now())
10952
+ }))).catch((error) => {
10953
+ logger.logger.debug("[API MACHINE] Failed to publish agent auto-update:", error);
10954
+ });
10955
+ this.cliUpdatePushChain = attempt.then(() => void 0);
10956
+ return attempt;
10919
10957
  }
10920
10958
  publishAutoRestart() {
10921
10959
  if (!this.autoRestart || !this.socket?.connected) return Promise.resolve();
@@ -11422,7 +11460,7 @@ class ApiMachineClient {
11422
11460
  if (this.restartSessionHandler) {
11423
11461
  if (!this.rpcHandlerManager.hasHandler(method)) {
11424
11462
  this.rpcHandlerManager.registerHandler(method, async (params) => {
11425
- const { sessionId, model, permissionMode } = params || {};
11463
+ const { sessionId, model, permissionMode, ifIdle } = params || {};
11426
11464
  if (!sessionId || typeof sessionId !== "string") {
11427
11465
  throw new Error("Session ID is required");
11428
11466
  }
@@ -11430,7 +11468,7 @@ class ApiMachineClient {
11430
11468
  if (!handler) {
11431
11469
  throw new Error("Restart session handler not available");
11432
11470
  }
11433
- const result = await handler(sessionId, { model, permissionMode });
11471
+ const result = await handler(sessionId, { model, permissionMode, ...ifIdle === true ? { ifIdle: true } : {} });
11434
11472
  switch (result.type) {
11435
11473
  case "success":
11436
11474
  return { type: "success", sessionId: result.sessionId };
@@ -11726,6 +11764,8 @@ class ApiMachineClient {
11726
11764
  ...this.agentHibernationIdleMs !== null ? { agentHibernation: { idleMs: this.agentHibernationIdleMs, rpcAvailable: true, detectedAt: now } } : {},
11727
11765
  // B-852 capability + setting + status (same restamp discipline).
11728
11766
  ...this.autoRestart ? { autoRestart: this.autoRestartState(now) } : {},
11767
+ // B-894 capability + setting + status (same restamp discipline).
11768
+ ...this.agentAutoUpdate ? { agentAutoUpdate: this.agentAutoUpdateState(now) } : {},
11729
11769
  // B-510: re-ship the declared panels (also clears a stale list).
11730
11770
  ...Array.isArray(this.webPanels) ? { webPanels: { panels: this.webPanels, updatedAt: now } } : {}
11731
11771
  };
@@ -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-D2ejrxlN.cjs');
7
- var configuration = require('./configuration-CDqmWkHO.cjs');
6
+ var pushNotifications = require('./pushNotifications-DzWubbyC.cjs');
7
+ var configuration = require('./configuration-Da2jFKHx.cjs');
8
8
 
9
9
  const CLAUDE_ATTACHMENT_KINDS = [
10
10
  "image/jpeg",
@@ -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-Db1NGJiA.mjs';
5
- import { e as ensurePrivateDirectory, h as hardenPrivateFile } from './configuration-D_YrWa_i.mjs';
4
+ import { M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES } from './pushNotifications-CrN3Ja_a.mjs';
5
+ import { e as ensurePrivateDirectory, h as hardenPrivateFile } from './configuration-BreL0beF.mjs';
6
6
 
7
7
  const CLAUDE_ATTACHMENT_KINDS = [
8
8
  "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-CDqmWkHO.cjs');
4
+ var configuration = require('./configuration-Da2jFKHx.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-UUMqbIq8.cjs');
9
- var persistence = require('./persistence-Ch78xygf.cjs');
10
- var browser = require('./browser-DK2GfyEr.cjs');
11
- var logger = require('./logger-C8anCmdW.cjs');
8
+ var time = require('./time-COyPPTSV.cjs');
9
+ var persistence = require('./persistence-_HpJ8Xqx.cjs');
10
+ var browser = require('./browser-CHC75A5J.cjs');
11
+ var logger = require('./logger-B_GiBdoD.cjs');
12
12
 
13
13
  function generateWebAuthUrl(publicKey) {
14
14
  const publicKeyBase64 = authRelay.encodeBase64(publicKey, "base64url");
@@ -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-D_YrWa_i.mjs';
2
+ import { c as configuration } from './configuration-BreL0beF.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-BWVJTcWI.mjs';
7
- import { g as readCredentials, m as readSettingsOutcome, u as updateSettings, w as writeCredentialsLegacy, n as writeCredentialsDataKey } from './persistence-3iZXGbfb.mjs';
8
- import { o as openBrowser } from './browser-D2enJJfv.mjs';
9
- import { l as logger } from './logger-BcdURxNR.mjs';
6
+ import { d as delay } from './time-BHGz6WMO.mjs';
7
+ import { g as readCredentials, m as readSettingsOutcome, u as updateSettings, w as writeCredentialsLegacy, n as writeCredentialsDataKey } from './persistence-DURvN3Hm.mjs';
8
+ import { o as openBrowser } from './browser-C-PWxfCE.mjs';
9
+ import { l as logger } from './logger-DOp6YYAW.mjs';
10
10
 
11
11
  function generateWebAuthUrl(publicKey) {
12
12
  const publicKeyBase64 = encodeBase64(publicKey, "base64url");