very-happy-cli 0.2.164 → 0.2.166

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 (190) hide show
  1. package/README.md +1 -1
  2. package/dist/{AcpBackend-CHDqSii9.cjs → AcpBackend-20VHOXwb.cjs} +3 -3
  3. package/dist/{AcpBackend-B8l1ZePt.mjs → AcpBackend-tRWk7yi7.mjs} +3 -3
  4. package/dist/{AcpSessionManager-BQnDJvct.mjs → AcpSessionManager-B7FIrsys.mjs} +1 -1
  5. package/dist/{AcpSessionManager-9yN2iH4b.cjs → AcpSessionManager-Zf00QnlL.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-DgtAtJTV.mjs → BasePermissionHandler-CDCLIrZJ.mjs} +1 -1
  7. package/dist/{BasePermissionHandler-DGQYvBPg.cjs → BasePermissionHandler-COKc4pmt.cjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-Dfacnfhj.mjs → BaseReasoningProcessor-BDVKvooR.mjs} +1 -1
  9. package/dist/{BaseReasoningProcessor-BqalZhQO.cjs → BaseReasoningProcessor-DAGQdkNp.cjs} +1 -1
  10. package/dist/{agentGuidance-CQuNlNx8.mjs → agentGuidance-BDYt2Qy2.mjs} +4 -2
  11. package/dist/{agentGuidance-B5NATuFa.cjs → agentGuidance-BtBx2xxE.cjs} +4 -1
  12. package/dist/{agentHome-DM0urHEI.mjs → agentHome-2IbIjKCa.mjs} +4 -4
  13. package/dist/{agentHome-DtsPKfTS.cjs → agentHome-KVWj6nCl.cjs} +4 -4
  14. package/dist/{api-Yoh_zKdR.mjs → api-Cmz3XS4P.mjs} +14 -12
  15. package/dist/{api-EKlS0r1w.cjs → api-DnNL5fLw.cjs} +14 -12
  16. package/dist/{apiMachine-s3HiV-SL.mjs → apiMachine-B6ySCFe0.mjs} +2137 -65
  17. package/dist/{apiMachine-q71suojS.cjs → apiMachine-DeoQ8QbZ.cjs} +2134 -62
  18. package/dist/{attachmentContent-BLyyo1al.mjs → attachmentContent-CTXapi-_.mjs} +2 -2
  19. package/dist/{attachmentContent-Bakb0XV3.cjs → attachmentContent-DPWxHgX4.cjs} +2 -2
  20. package/dist/{attachmentLimits-eJZ4ZBjF.cjs → attachmentLimits-BfgKV5iE.cjs} +28 -2
  21. package/dist/{attachmentLimits-B8nzhw-i.mjs → attachmentLimits-C1PCCM79.mjs} +28 -2
  22. package/dist/{auth-BTfv8yW0.mjs → auth-BMaBjRAj.mjs} +8 -8
  23. package/dist/{auth-Hpg4Yxfa.cjs → auth-D4-eQz85.cjs} +8 -8
  24. package/dist/{auth-Cn3dQInF.cjs → auth-ietHtvwu.cjs} +5 -5
  25. package/dist/{auth-Cxhx5evk.mjs → auth-pzWIFdOD.mjs} +5 -5
  26. package/dist/{auto-BAAEVGZa.mjs → auto-DL75Dx3I.mjs} +83 -21
  27. package/dist/{auto-CK8irHum.cjs → auto-DOWTQDPa.cjs} +84 -20
  28. package/dist/{bootstrap-D9SUykG_.cjs → bootstrap-BpXIc2wn.cjs} +2 -2
  29. package/dist/{bootstrap-CTNjn_aj.mjs → bootstrap-XE8A7Ut2.mjs} +2 -2
  30. package/dist/{browser-C8ztaIkm.cjs → browser-CcG8GLRV.cjs} +1 -1
  31. package/dist/{browser-DydXWySF.mjs → browser-DDFi1T8C.mjs} +1 -1
  32. package/dist/{claudeLocal-CsLFMvFU.cjs → claudeLocal-DXBXwIOG.cjs} +6 -6
  33. package/dist/{claudeLocal-CdJJovWq.mjs → claudeLocal-DmM5Oyhv.mjs} +6 -6
  34. package/dist/{claudeLocalLauncher-DRc-tET5.cjs → claudeLocalLauncher-C41Y6Kp4.cjs} +14 -11
  35. package/dist/{claudeLocalLauncher-CKazNnl0.mjs → claudeLocalLauncher-Cs4eUC3P.mjs} +14 -11
  36. package/dist/{claudeSessionFork-BfPW9D2S.mjs → claudeSessionFork-BdLnc2Hv.mjs} +1 -1
  37. package/dist/{claudeSessionFork-BWdhyy9B.cjs → claudeSessionFork-Cs0I3eGI.cjs} +1 -1
  38. package/dist/{client-Do5CHQnZ.mjs → client-CbK33y_s.mjs} +3 -3
  39. package/dist/{client-BZtKFCJr.cjs → client-DJ0kX_8M.cjs} +2 -2
  40. package/dist/{client-DkoV3VWl.mjs → client-GjTnsq6F.mjs} +2 -2
  41. package/dist/{client-C1GAIJ04.cjs → client-JISJx2f-.cjs} +3 -3
  42. package/dist/codex/happyMcpStdioBridge.cjs +23 -18
  43. package/dist/codex/happyMcpStdioBridge.mjs +22 -17
  44. package/dist/{codexAppServerClient-JddkV_aP.cjs → codexAppServerClient-BTjn2ZCZ.cjs} +46 -2
  45. package/dist/{codexAppServerClient-CfF33X-8.mjs → codexAppServerClient-CldXEojt.mjs} +47 -3
  46. package/dist/{codexCommand-Bdj3XZbi.cjs → codexCommand-BpD0N1F7.cjs} +71 -51
  47. package/dist/{codexCommand-btJso8yC.mjs → codexCommand-DjMU-Ijf.mjs} +71 -51
  48. package/dist/{config-nziuMb7g.mjs → config-DjSJKatx.mjs} +3 -3
  49. package/dist/{config-DpCNivmg.cjs → config-DuLL0Ppe.cjs} +3 -3
  50. package/dist/{configuration-PXAE4-FP.cjs → configuration-B0cb3xA3.cjs} +1 -1
  51. package/dist/{configuration-CiBUH72C.mjs → configuration-D2v3puap.mjs} +1 -1
  52. package/dist/{connect-D7ehaW2C.cjs → connect-B7JWEzyg.cjs} +13 -13
  53. package/dist/{connect-XHdi6Vtc.mjs → connect-CnNNyM9I.mjs} +13 -13
  54. package/dist/{context-DhvXl1oC.cjs → context-BFUpYT39.cjs} +1 -1
  55. package/dist/{context-BpEYcuLv.mjs → context-DjfqLWzE.mjs} +1 -1
  56. package/dist/{controlClient-DzmCQrY_.mjs → controlClient-BMUJfUeF.mjs} +13 -6
  57. package/dist/{controlClient-DI-Er-Ww.cjs → controlClient-CmnHGcyl.cjs} +13 -5
  58. package/dist/{createSessionMetadata-B47GrTX6.mjs → createSessionMetadata-DU0bCg2m.mjs} +2 -2
  59. package/dist/{createSessionMetadata-D04x6OMW.cjs → createSessionMetadata-DbfRBhRu.cjs} +2 -2
  60. package/dist/{deterministicJson-CKqT3awl.mjs → deterministicJson-D-WPUrZb.mjs} +36 -52
  61. package/dist/{deterministicJson-BM8e8QwP.cjs → deterministicJson-Dp3TVyap.cjs} +41 -59
  62. package/dist/{doctor-CSgzbG5L.mjs → doctor-BlXXyQ1L.mjs} +6 -6
  63. package/dist/{doctor-Cl6cqvok.cjs → doctor-CkJmdPbi.cjs} +6 -6
  64. package/dist/{assistantTools-D3cZvgUX.cjs → downloadTarget-CiQqRIc-.cjs} +44 -6
  65. package/dist/{assistantTools-BWfAV349.mjs → downloadTarget-DjSwMHun.mjs} +45 -8
  66. package/dist/{ensureDaemonRunning-fPVSsjIm.mjs → ensureDaemonRunning-CAQag1zE.mjs} +5 -5
  67. package/dist/{ensureDaemonRunning-CJ4-U32n.cjs → ensureDaemonRunning-C_aIOhgG.cjs} +5 -5
  68. package/dist/{handleResumeCommand-bX-aNF_z.cjs → handleResumeCommand-6KzBGDnl.cjs} +5 -5
  69. package/dist/{handleResumeCommand-B84dt2aH.mjs → handleResumeCommand-Ci7wacT-.mjs} +5 -5
  70. package/dist/{index-vVWpCoTr.mjs → index-B0HEEYGh.mjs} +22 -5
  71. package/dist/{index-DqlyNgt4.cjs → index-C9hI8a10.cjs} +26 -4
  72. package/dist/{index-B2UvSWo_.cjs → index-CaFCAlX8.cjs} +3 -3
  73. package/dist/{index-CP2fh7JX.cjs → index-DBmNwMX9.cjs} +39 -38
  74. package/dist/{index-DaTxsAC3.cjs → index-DEKIgZUo.cjs} +4 -4
  75. package/dist/{index-OEGj3BxE.mjs → index-DQplgo0W.mjs} +4 -4
  76. package/dist/{index-CbF87SeZ.mjs → index-HQsigW_J.mjs} +3 -3
  77. package/dist/{index-CRJtZCK-.mjs → index-WGCT6SSV.mjs} +40 -39
  78. package/dist/index.cjs +2 -2
  79. package/dist/index.mjs +2 -2
  80. package/dist/{install-BO_W7VhL.mjs → install-BdvKiOQw.mjs} +2 -0
  81. package/dist/{install-__Mni4NU.cjs → install-CejEiRGW.cjs} +3 -3
  82. package/dist/{install-Cs5qAPrB.cjs → install-Cf6AFSWC.cjs} +2 -0
  83. package/dist/{install-CurvoW2u.mjs → install-oJUvsFu9.mjs} +3 -3
  84. package/dist/lib.cjs +12 -12
  85. package/dist/lib.d.cts +55 -2
  86. package/dist/lib.d.mts +55 -2
  87. package/dist/lib.mjs +12 -12
  88. package/dist/{lidState-BbR6y9rq.mjs → lidState-BfximpjX.mjs} +1 -1
  89. package/dist/{lidState-De2HP6nu.cjs → lidState-D8BmnJV1.cjs} +1 -1
  90. package/dist/{localHappyAgentAuth-C7rDePjF.mjs → localHappyAgentAuth-Ct1aXwqd.mjs} +1 -1
  91. package/dist/{localHappyAgentAuth-CboZb3_a.cjs → localHappyAgentAuth-d7B6S_o7.cjs} +1 -1
  92. package/dist/{logger-8dtZPn3n.mjs → logger-BpQcwNnt.mjs} +2 -2
  93. package/dist/{logger-B1k7eZnq.cjs → logger-JTcJU-uL.cjs} +2 -2
  94. package/dist/{machineMetadata-C4OfKn6I.cjs → machineMetadata-BBg_Njw3.cjs} +3 -3
  95. package/dist/{machineMetadata-Bhp_w3-_.mjs → machineMetadata-CBdxABeI.mjs} +3 -3
  96. package/dist/{main-BQTaUrz0.mjs → main-B5b1gA3K.mjs} +44 -44
  97. package/dist/{main-eAiLspBM.cjs → main-C16fOGgn.cjs} +44 -44
  98. package/dist/{mcp-fapbM7Q4.cjs → mcp-BnNiBBax.cjs} +24 -19
  99. package/dist/{mcp-DXCdbQHM.mjs → mcp-DGNWgVdv.mjs} +23 -18
  100. package/dist/{mirrorProtocol-BUtmg1ws.cjs → mirrorProtocol-BEGk2--0.cjs} +80 -0
  101. package/dist/{mirrorProtocol-BNLtoWjO.mjs → mirrorProtocol-h5WHpdhh.mjs} +79 -1
  102. package/dist/{package-tVYgFJoK.mjs → package-BqwrPxL0.mjs} +7 -7
  103. package/dist/{package-CC_txQ31.cjs → package-C1XvUQFy.cjs} +7 -7
  104. package/dist/{peerTools-C1cduHh1.mjs → peerTools-CeCe-3lk.mjs} +4 -4
  105. package/dist/{peerTools-CqIcCEIg.cjs → peerTools-DPvbcs8V.cjs} +4 -4
  106. package/dist/{persistence-d3ZyER6o.cjs → persistence-2Xp_o6x6.cjs} +3 -3
  107. package/dist/{persistence-C_xFQLsD.mjs → persistence-B9LmhAE2.mjs} +3 -3
  108. package/dist/{piRunnerArgs-aq0zJX1Q.mjs → piRunnerArgs-7FaTyNOq.mjs} +1 -1
  109. package/dist/{piRunnerArgs-DSxolPlV.cjs → piRunnerArgs-DI29dDNo.cjs} +1 -1
  110. package/dist/{piRuntime-BnNl5Lmb.mjs → piRuntime-0qEK5AqE.mjs} +1 -1
  111. package/dist/{piRuntime-Dne1LPu-.cjs → piRuntime-R8XVChxK.cjs} +1 -1
  112. package/dist/{piTerminal-fjado4cR.cjs → piTerminal-Ccj0KNPr.cjs} +17 -17
  113. package/dist/{piTerminal-CKWxWtW-.mjs → piTerminal-zcQKc8Sp.mjs} +17 -17
  114. package/dist/precheckCompat-CWOi5c9L.cjs +29 -0
  115. package/dist/precheckCompat-DeEbilbr.mjs +26 -0
  116. package/dist/rateLimitWindows-C2Jk3Ih7.cjs +258 -0
  117. package/dist/rateLimitWindows-Dhfhbtqu.mjs +248 -0
  118. package/dist/{registerCommonHandlers-Dausbdsb.cjs → registerCommonHandlers-Aha_KfM3.cjs} +2 -2
  119. package/dist/{registerCommonHandlers-bSskMveZ.mjs → registerCommonHandlers-DdfGsFbM.mjs} +2 -2
  120. package/dist/{registerKillSessionHandler-CgKyzwqw.cjs → registerKillSessionHandler-CjitOpUA.cjs} +6 -6
  121. package/dist/{registerKillSessionHandler-Ben5lAsN.mjs → registerKillSessionHandler-DboQlGcH.mjs} +6 -6
  122. package/dist/{remoteSessionClient-DnCIuZpQ.mjs → remoteSessionClient-B2DtWuNP.mjs} +5 -5
  123. package/dist/{remoteSessionClient-BkJt8SHa.cjs → remoteSessionClient-BwI8rpQw.cjs} +5 -5
  124. package/dist/{tools-BTBgpiRc.cjs → reportProgressTool-B-Rcy0s3.cjs} +73 -9
  125. package/dist/{tools-gUjkPpCw.mjs → reportProgressTool-DnAD8wOa.mjs} +67 -10
  126. package/dist/{run-B8dxbDsg.cjs → run-Bh66Xs40.cjs} +289 -133
  127. package/dist/{run-BEYMVE4J.mjs → run-DPEwJpQR.mjs} +287 -131
  128. package/dist/{runClaude-Cy_HzLyO.cjs → runClaude-C-lJdAKD.cjs} +25 -20
  129. package/dist/{runClaude-Dd_P1c0f.mjs → runClaude-DLr_nBzw.mjs} +25 -20
  130. package/dist/{runClaudeDeps-JG7EUH7B.mjs → runClaudeDeps-C7JV7nXG.mjs} +47 -37
  131. package/dist/{runClaudeDeps-dxv910DR.cjs → runClaudeDeps-vWWLod7J.cjs} +44 -35
  132. package/dist/{runGemini-DY1IDW_f.cjs → runGemini-o-CUSayc.cjs} +42 -35
  133. package/dist/{runGemini-CpaBuvoW.mjs → runGemini-tH6sLw-G.mjs} +42 -35
  134. package/dist/{runOpenClaw-C7vrDQbq.mjs → runOpenClaw-C5DZvVhn.mjs} +18 -18
  135. package/dist/{runOpenClaw-C0VARcYj.cjs → runOpenClaw-D24f35l0.cjs} +18 -18
  136. package/dist/{sandbox-DRUJZuaM.mjs → sandbox-BaL1aslA.mjs} +4 -4
  137. package/dist/{sandbox-Bx9-M9rN.cjs → sandbox-TJZJ6ngw.cjs} +4 -4
  138. package/dist/selfCheck-DPi4lqme.mjs +84 -0
  139. package/dist/{selfCheck-Ba1sECTO.cjs → selfCheck-Dugi0Nk_.cjs} +34 -34
  140. package/dist/{send-Dqdpx-w5.cjs → send-CkWOSYmU.cjs} +8 -8
  141. package/dist/{send-BrzkbMy2.mjs → send-DDcJ3ayi.mjs} +8 -8
  142. package/dist/{server-CfB8EWCg.cjs → server-7qFQ8J2u.cjs} +6 -6
  143. package/dist/{server-CPMPoEAA.mjs → server-CUjRvQSd.mjs} +4 -4
  144. package/dist/{sessionLock-BsP3Y_nG.cjs → sessionLock-DfhNICyS.cjs} +2 -2
  145. package/dist/{sessionLock-DukLVzAQ.mjs → sessionLock-DqVyHFAQ.mjs} +2 -2
  146. package/dist/{sessionModeFile-JWWF6Nn7.cjs → sessionModeFile-CIznKD7O.cjs} +1 -1
  147. package/dist/{sessionModeFile-CSvi4H_t.mjs → sessionModeFile-M4OpiyrF.mjs} +1 -1
  148. package/dist/{sessionOps-BlMg1uAa.mjs → sessionOps-BnaEaOKs.mjs} +4 -4
  149. package/dist/{sessionOps-HuoMXcIZ.cjs → sessionOps-DOyy4gkY.cjs} +4 -4
  150. package/dist/{sessionScanner-Ct-JoNHP.mjs → sessionScanner-CcuOn9uU.mjs} +75 -19
  151. package/dist/{sessionScanner-BWU6KvZw.cjs → sessionScanner-Cu1yKlj4.cjs} +75 -19
  152. package/dist/{sessions-AjflCj5y.cjs → sessions-BQgk5Kw8.cjs} +9 -9
  153. package/dist/{sessions-3Hw1xXMV.mjs → sessions-C9O91rL1.mjs} +9 -9
  154. package/dist/{setupOfflineReconnection-B_9xp36H.mjs → setupOfflineReconnection-Byy8aeKT.mjs} +2 -2
  155. package/dist/{setupOfflineReconnection-Cxh9Sz9M.cjs → setupOfflineReconnection-DFmQ8s6I.cjs} +2 -2
  156. package/dist/{spawn-CN8PH11G.cjs → spawn-BS7LPmSm.cjs} +13 -12
  157. package/dist/{spawn-BXEVKCQK.mjs → spawn-EZ2yrtWd.mjs} +13 -12
  158. package/dist/{spawnAgents-Czi2VDzj.mjs → spawnAgents-HDaE3C0-.mjs} +1 -1
  159. package/dist/{spawnAgents-McixdtV1.cjs → spawnAgents-vglexX9N.cjs} +1 -1
  160. package/dist/{spawnHappyCLI-BFN0h2fK.mjs → spawnHappyCLI-BAa49m0q.mjs} +1 -1
  161. package/dist/{spawnHappyCLI-Cj-9-d_7.cjs → spawnHappyCLI-DyaldIe5.cjs} +1 -1
  162. package/dist/specialCommands-CCWtwIGZ.mjs +93 -0
  163. package/dist/specialCommands-DouFaJ_0.cjs +96 -0
  164. package/dist/{startFileWatcher-BfMu444W.cjs → startFileWatcher-DQbbypJv.cjs} +1 -1
  165. package/dist/{startFileWatcher-Csql7gdv.mjs → startFileWatcher-Dfs4whzr.mjs} +1 -1
  166. package/dist/{streamRelay-C0AffuX6.cjs → streamRelay-Ce9sgcOV.cjs} +1 -1
  167. package/dist/{streamRelay-BzMEEvJU.mjs → streamRelay-Iogsh51a.mjs} +1 -1
  168. package/dist/{sync-SCvDzRy6.mjs → sync-BLpH13Kb.mjs} +1 -1
  169. package/dist/{sync--uxtLWbo.cjs → sync-x_lI_3j_.cjs} +1 -1
  170. package/dist/{systemPrompt-C1tRiZ-u.cjs → systemPrompt-4erwILTB.cjs} +3 -3
  171. package/dist/{systemPrompt-D0KMySrK.mjs → systemPrompt-BanyDihy.mjs} +3 -3
  172. package/dist/{teams-By-hcvMF.mjs → teams-D6BOT3lR.mjs} +7 -7
  173. package/dist/{teams-CYDIFXEC.cjs → teams-DzetlGWC.cjs} +7 -7
  174. package/dist/{time-CRvAaC5H.mjs → time-CfDKj6Bx.mjs} +1 -1
  175. package/dist/{time-C7BplxuS.cjs → time-T0YmeOhS.cjs} +1 -1
  176. package/dist/{titleGenerator-CUG-n2r3.mjs → titleGenerator-ChImQ4q-.mjs} +1 -1
  177. package/dist/{titleGenerator-Kw3sTnNQ.cjs → titleGenerator-CoMxqKfP.cjs} +2 -2
  178. package/dist/{todo-B7a7J5Ng.cjs → todo-CZZebKZg.cjs} +6 -6
  179. package/dist/{todo-yuIsUvU8.mjs → todo-SVtYxGON.mjs} +6 -6
  180. package/dist/{tools-RvMKw7yx.mjs → tools-3X2z3YDe.mjs} +1 -1
  181. package/dist/{tools-D7UeLMZ7.cjs → tools-IJ0TAcJs.cjs} +1 -1
  182. package/dist/transcriptCursor-B7T_gkQ0.mjs +102 -0
  183. package/dist/transcriptCursor-DcXGLeSc.cjs +106 -0
  184. package/dist/{uninstall-D5D16-KM.cjs → uninstall-CqqCWj7w.cjs} +3 -3
  185. package/dist/{uninstall-Dx9FmLXs.mjs → uninstall-CypD-kr1.mjs} +3 -3
  186. package/package.json +7 -7
  187. package/scripts/terminal_status_forwarder.cjs +89 -0
  188. package/dist/selfCheck-DdT8r263.mjs +0 -84
  189. package/dist/specialCommands-BSqhYg5X.mjs +0 -52
  190. package/dist/specialCommands-DSsTeRej.cjs +0 -54
@@ -3,14 +3,14 @@
3
3
  var promises = require('node:fs/promises');
4
4
  var os = require('node:os');
5
5
  var z = require('zod');
6
- var logger = require('./logger-B1k7eZnq.cjs');
7
- var persistence = require('./persistence-d3ZyER6o.cjs');
8
- var controlClient = require('./controlClient-DI-Er-Ww.cjs');
9
- var sessionOps = require('./sessionOps-HuoMXcIZ.cjs');
10
- var remoteSessionClient = require('./remoteSessionClient-BkJt8SHa.cjs');
6
+ var logger = require('./logger-JTcJU-uL.cjs');
7
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
8
+ var controlClient = require('./controlClient-CmnHGcyl.cjs');
9
+ var sessionOps = require('./sessionOps-DOyy4gkY.cjs');
10
+ var remoteSessionClient = require('./remoteSessionClient-BwI8rpQw.cjs');
11
11
  var ids = require('./ids-B6ZC0HGt.cjs');
12
12
  var terminals = require('./terminals-B_bfC9c2.cjs');
13
- var bootstrap = require('./bootstrap-D9SUykG_.cjs');
13
+ var bootstrap = require('./bootstrap-BpXIc2wn.cjs');
14
14
  var path = require('node:path');
15
15
 
16
16
  const PERSONAL_MEMORY_SOFT_LIMIT_CHARS = 2e3;
@@ -375,6 +375,44 @@ ${r.text}`);
375
375
  });
376
376
  }
377
377
 
378
+ const WEB_DOWNLOAD_MAX_BYTES = 50 * 1024 * 1024;
379
+ function downloadTargetVerdict(path, target) {
380
+ switch (target.kind) {
381
+ case "missing":
382
+ return { error: `${path} does not exist; create the file first, then call open_preview again`, note: null };
383
+ case "directory":
384
+ return {
385
+ error: `${path} is a directory; the user can only download a single file. Pack it first (e.g. \`zip -r out.zip <dir>\`) and call open_preview with the archive and download: true`,
386
+ note: null
387
+ };
388
+ case "other":
389
+ return { error: `${path} is not a regular file`, note: null };
390
+ case "error":
391
+ return { error: `cannot read ${path}: ${target.code} (${target.message})`, note: null };
392
+ case "file":
393
+ return target.size > WEB_DOWNLOAD_MAX_BYTES ? {
394
+ error: null,
395
+ note: `Note: the file is ${(target.size / 1024 / 1024).toFixed(1)} MiB, above the 50 MiB web download limit, so the user will see its size but cannot download it. Offer to compress it or split it into parts under 50 MiB (e.g. \`zip -s 45m\`).`
396
+ } : { error: null, note: null };
397
+ }
398
+ }
399
+ async function statDownloadTarget(path) {
400
+ try {
401
+ const s = await promises.stat(path);
402
+ if (s.isDirectory()) return { kind: "directory" };
403
+ if (!s.isFile()) return { kind: "other" };
404
+ return { kind: "file", size: s.size };
405
+ } catch (error) {
406
+ const code = error?.code;
407
+ if (code === "ENOENT") return { kind: "missing" };
408
+ return { kind: "error", code: code ?? "UNKNOWN", message: error instanceof Error ? error.message : String(error) };
409
+ }
410
+ }
411
+ async function checkDownloadTarget(path) {
412
+ return downloadTargetVerdict(path, await statDownloadTarget(path));
413
+ }
414
+
378
415
  exports.ASSISTANT_TOOL_NAMES = ASSISTANT_TOOL_NAMES;
416
+ exports.checkDownloadTarget = checkDownloadTarget;
379
417
  exports.registerAssistantSessionTools = registerAssistantSessionTools;
380
418
  exports.registerAssistantTools = registerAssistantTools;
@@ -1,14 +1,14 @@
1
- import { readFile, writeFile, appendFile } from 'node:fs/promises';
1
+ import { readFile, writeFile, appendFile, stat } from 'node:fs/promises';
2
2
  import os from 'node:os';
3
3
  import { z } from 'zod';
4
- import { l as logger } from './logger-8dtZPn3n.mjs';
5
- import { readPersistedSessions } from './persistence-C_xFQLsD.mjs';
6
- import { e as spawnDaemonSession } from './controlClient-DzmCQrY_.mjs';
7
- import { a as listSessions, r as readSessionTranscript, s as sessionWebUrl, g as waitForSessionKey, e as sendUserMessage, b as stopSession, d as archiveSession } from './sessionOps-BlMg1uAa.mjs';
8
- import { r as readRemoteTranscript, s as sendRemoteMessage, d as deliverToSession, R as RemoteSessionOpsError } from './remoteSessionClient-DnCIuZpQ.mjs';
4
+ import { l as logger } from './logger-BpQcwNnt.mjs';
5
+ import { readPersistedSessions } from './persistence-B9LmhAE2.mjs';
6
+ import { e as spawnDaemonSession } from './controlClient-BMUJfUeF.mjs';
7
+ import { a as listSessions, r as readSessionTranscript, s as sessionWebUrl, g as waitForSessionKey, e as sendUserMessage, b as stopSession, d as archiveSession } from './sessionOps-BnaEaOKs.mjs';
8
+ import { r as readRemoteTranscript, s as sendRemoteMessage, d as deliverToSession, R as RemoteSessionOpsError } from './remoteSessionClient-B2DtWuNP.mjs';
9
9
  import { i as isValidSessionId, a as isValidTerminalId } from './ids-DU6sLx4C.mjs';
10
10
  import { l as listVhTerminals, r as readVhTerminal, s as sendToVhTerminal } from './terminals-Dlg0x3nY.mjs';
11
- import { bootstrapAssistantHome, assistantPersonalMemoryPath } from './bootstrap-CTNjn_aj.mjs';
11
+ import { bootstrapAssistantHome, assistantPersonalMemoryPath } from './bootstrap-XE8A7Ut2.mjs';
12
12
  import { join, isAbsolute, normalize } from 'node:path';
13
13
 
14
14
  const PERSONAL_MEMORY_SOFT_LIMIT_CHARS = 2e3;
@@ -373,4 +373,41 @@ ${r.text}`);
373
373
  });
374
374
  }
375
375
 
376
- export { ASSISTANT_TOOL_NAMES as A, registerAssistantTools as a, registerAssistantSessionTools as r };
376
+ const WEB_DOWNLOAD_MAX_BYTES = 50 * 1024 * 1024;
377
+ function downloadTargetVerdict(path, target) {
378
+ switch (target.kind) {
379
+ case "missing":
380
+ return { error: `${path} does not exist; create the file first, then call open_preview again`, note: null };
381
+ case "directory":
382
+ return {
383
+ error: `${path} is a directory; the user can only download a single file. Pack it first (e.g. \`zip -r out.zip <dir>\`) and call open_preview with the archive and download: true`,
384
+ note: null
385
+ };
386
+ case "other":
387
+ return { error: `${path} is not a regular file`, note: null };
388
+ case "error":
389
+ return { error: `cannot read ${path}: ${target.code} (${target.message})`, note: null };
390
+ case "file":
391
+ return target.size > WEB_DOWNLOAD_MAX_BYTES ? {
392
+ error: null,
393
+ note: `Note: the file is ${(target.size / 1024 / 1024).toFixed(1)} MiB, above the 50 MiB web download limit, so the user will see its size but cannot download it. Offer to compress it or split it into parts under 50 MiB (e.g. \`zip -s 45m\`).`
394
+ } : { error: null, note: null };
395
+ }
396
+ }
397
+ async function statDownloadTarget(path) {
398
+ try {
399
+ const s = await stat(path);
400
+ if (s.isDirectory()) return { kind: "directory" };
401
+ if (!s.isFile()) return { kind: "other" };
402
+ return { kind: "file", size: s.size };
403
+ } catch (error) {
404
+ const code = error?.code;
405
+ if (code === "ENOENT") return { kind: "missing" };
406
+ return { kind: "error", code: code ?? "UNKNOWN", message: error instanceof Error ? error.message : String(error) };
407
+ }
408
+ }
409
+ async function checkDownloadTarget(path) {
410
+ return downloadTargetVerdict(path, await statDownloadTarget(path));
411
+ }
412
+
413
+ export { ASSISTANT_TOOL_NAMES as A, registerAssistantTools as a, checkDownloadTarget as c, registerAssistantSessionTools as r };
@@ -1,8 +1,8 @@
1
- import { l as logger } from './logger-8dtZPn3n.mjs';
2
- import { i as isDaemonRunningCurrentlyInstalledHappyVersion, c as checkIfDaemonRunningAndCleanupStaleState, a as stopDaemon } from './controlClient-DzmCQrY_.mjs';
3
- import { s as spawnHappyCLI } from './spawnHappyCLI-BFN0h2fK.mjs';
4
- import { readDaemonState } from './persistence-C_xFQLsD.mjs';
5
- import { c as configuration } from './configuration-CiBUH72C.mjs';
1
+ import { l as logger } from './logger-BpQcwNnt.mjs';
2
+ import { i as isDaemonRunningCurrentlyInstalledHappyVersion, c as checkIfDaemonRunningAndCleanupStaleState, a as stopDaemon } from './controlClient-BMUJfUeF.mjs';
3
+ import { s as spawnHappyCLI } from './spawnHappyCLI-BAa49m0q.mjs';
4
+ import { readDaemonState } from './persistence-B9LmhAE2.mjs';
5
+ import { c as configuration } from './configuration-D2v3puap.mjs';
6
6
  import { d as daemonEndpointsMatch } from './doctorReadiness-C208SMN9.mjs';
7
7
 
8
8
  function extractNoSandboxFlag(args) {
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-B1k7eZnq.cjs');
4
- var controlClient = require('./controlClient-DI-Er-Ww.cjs');
5
- var spawnHappyCLI = require('./spawnHappyCLI-Cj-9-d_7.cjs');
6
- var persistence = require('./persistence-d3ZyER6o.cjs');
7
- var configuration = require('./configuration-PXAE4-FP.cjs');
3
+ var logger = require('./logger-JTcJU-uL.cjs');
4
+ var controlClient = require('./controlClient-CmnHGcyl.cjs');
5
+ var spawnHappyCLI = require('./spawnHappyCLI-DyaldIe5.cjs');
6
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
7
+ var configuration = require('./configuration-B0cb3xA3.cjs');
8
8
  var doctorReadiness = require('./doctorReadiness-BCZGcN0a.cjs');
9
9
 
10
10
  function extractNoSandboxFlag(args) {
@@ -1,24 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  var node_fs = require('node:fs');
4
- var spawnHappyCLI = require('./spawnHappyCLI-Cj-9-d_7.cjs');
4
+ var spawnHappyCLI = require('./spawnHappyCLI-DyaldIe5.cjs');
5
5
  var axios = require('axios');
6
6
  var tweetnacl = require('tweetnacl');
7
7
  var z = require('zod');
8
8
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
9
- var configuration = require('./configuration-PXAE4-FP.cjs');
10
- var localHappyAgentAuth = require('./localHappyAgentAuth-CboZb3_a.cjs');
9
+ var configuration = require('./configuration-B0cb3xA3.cjs');
10
+ var localHappyAgentAuth = require('./localHappyAgentAuth-d7B6S_o7.cjs');
11
11
  require('cross-spawn');
12
12
  require('node:path');
13
13
  require('./projectPath-ChLhdOyt.cjs');
14
14
  require('path');
15
15
  require('url');
16
- require('./logger-B1k7eZnq.cjs');
16
+ require('./logger-JTcJU-uL.cjs');
17
17
  require('chalk');
18
18
  require('node:util');
19
19
  require('node:crypto');
20
20
  require('node:os');
21
- require('./package-CC_txQ31.cjs');
21
+ require('./package-C1XvUQFy.cjs');
22
22
  require('node:fs/promises');
23
23
 
24
24
  const ResumableMetadataSchema = z.z.object({
@@ -1,22 +1,22 @@
1
1
  import { existsSync } from 'node:fs';
2
- import { s as spawnHappyCLI } from './spawnHappyCLI-BFN0h2fK.mjs';
2
+ import { s as spawnHappyCLI } from './spawnHappyCLI-BAa49m0q.mjs';
3
3
  import axios, { AxiosError } from 'axios';
4
4
  import tweetnacl from 'tweetnacl';
5
5
  import { z } from 'zod';
6
6
  import { d as decodeBase64, a as decryptWithDataKey, b as decryptLegacy } from './authRelay-DSAvg1uv.mjs';
7
- import { c as configuration } from './configuration-CiBUH72C.mjs';
8
- import { g as getLocalHappyAgentCredentialPath, r as readLocalHappyAgentCredentials } from './localHappyAgentAuth-C7rDePjF.mjs';
7
+ import { c as configuration } from './configuration-D2v3puap.mjs';
8
+ import { g as getLocalHappyAgentCredentialPath, r as readLocalHappyAgentCredentials } from './localHappyAgentAuth-Ct1aXwqd.mjs';
9
9
  import 'cross-spawn';
10
10
  import 'node:path';
11
11
  import './projectPath-BTBIMB57.mjs';
12
12
  import 'path';
13
13
  import 'url';
14
- import './logger-8dtZPn3n.mjs';
14
+ import './logger-BpQcwNnt.mjs';
15
15
  import 'chalk';
16
16
  import 'node:util';
17
17
  import 'node:crypto';
18
18
  import 'node:os';
19
- import './package-tVYgFJoK.mjs';
19
+ import './package-BqwrPxL0.mjs';
20
20
  import 'node:fs/promises';
21
21
 
22
22
  const ResumableMetadataSchema = z.object({
@@ -466,6 +466,10 @@ const AUTOMATION_PAYLOAD_MAX_BYTES = 65536;
466
466
  const AUTOMATION_SUMMARY_MAX_CHARS = 4096;
467
467
  const AUTOMATION_DEFAULT_LEASE_MS = 6e4;
468
468
  const AUTOMATION_CLAIM_MAX_RUNS = 8;
469
+ const AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS = 6e4;
470
+ const AUTOMATION_PRECHECK_MAX_TIMEOUT_MS = 6e5;
471
+ const AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS = 4e3;
472
+ const AUTOMATION_DAEMON_CAPABILITY_PRECHECK = "precheck";
469
473
  const timestamp = z$1.number().int().positive().max(AUTOMATION_MAX_TIMESTAMP);
470
474
  const AutomationTriggerSchema = z$1.discriminatedUnion("kind", [
471
475
  // `expr` is standard five-field cron (minute hour day-of-month month day-of-week,
@@ -499,6 +503,13 @@ const AutomationActionSchema = z$1.discriminatedUnion("kind", [
499
503
  timeoutMs: z$1.number().int().min(1e3).max(7 * 864e5).optional()
500
504
  })
501
505
  ]);
506
+ const AutomationPrecheckSchema = z$1.object({
507
+ command: z$1.array(z$1.string().min(1).max(4096)).min(1).max(256).optional(),
508
+ shell: z$1.string().trim().min(1).max(8e3).optional(),
509
+ cwd: z$1.string().min(1).max(4096).optional(),
510
+ timeoutMs: z$1.number().int().min(1e3).max(AUTOMATION_PRECHECK_MAX_TIMEOUT_MS).optional(),
511
+ includeOutput: z$1.boolean().optional()
512
+ }).refine((p) => p.command === void 0 !== (p.shell === void 0), "precheck needs exactly one of command (argv) or shell");
502
513
  const AutomationConcurrencySchema = z$1.enum(["skip", "queue"]);
503
514
  const AUTOMATION_STATUSES = ["active", "paused"];
504
515
  const AUTOMATION_RUN_TERMINAL_STATUSES = ["done", "failed", "skipped", "expired", "cancelled"];
@@ -514,7 +525,9 @@ z$1.object({
514
525
  action: AutomationActionSchema,
515
526
  concurrency: AutomationConcurrencySchema.optional(),
516
527
  maxRuntimeMs: maxRuntimeMs.optional(),
517
- status: z$1.enum(AUTOMATION_STATUSES).optional()
528
+ status: z$1.enum(AUTOMATION_STATUSES).optional(),
529
+ /** B-548. Older servers strip it silently — clients must check the response echoes `precheck`. */
530
+ precheck: AutomationPrecheckSchema.nullable().optional()
518
531
  });
519
532
  z$1.object({
520
533
  version: z$1.number().int().positive(),
@@ -524,7 +537,9 @@ z$1.object({
524
537
  trigger: AutomationTriggerSchema.optional(),
525
538
  action: AutomationActionSchema.optional(),
526
539
  concurrency: AutomationConcurrencySchema.optional(),
527
- maxRuntimeMs: maxRuntimeMs.optional()
540
+ maxRuntimeMs: maxRuntimeMs.optional(),
541
+ /** B-548: omitted keeps the current precheck, `null` removes it. Changing `action` alone keeps it too. */
542
+ precheck: AutomationPrecheckSchema.nullable().optional()
528
543
  });
529
544
  const payload = z$1.string().max(AUTOMATION_PAYLOAD_MAX_BYTES).refine((v) => new TextEncoder().encode(v).length <= AUTOMATION_PAYLOAD_MAX_BYTES, "payload exceeds 64KB");
530
545
  z$1.object({ payload: payload.optional(), dedupeKey: z$1.string().min(1).max(256).optional() });
@@ -532,11 +547,13 @@ z$1.object({ payload: payload.optional() });
532
547
  z$1.object({
533
548
  machineId: id,
534
549
  limit: z$1.number().int().min(1).max(AUTOMATION_CLAIM_MAX_RUNS).optional(),
535
- leaseMs: z$1.number().int().min(5e3).max(36e5).optional()
550
+ leaseMs: z$1.number().int().min(5e3).max(36e5).optional(),
551
+ /** B-548: what this daemon can execute (e.g. `precheck`). Older daemons send nothing; older servers strip it. */
552
+ capabilities: z$1.array(z$1.string().min(1).max(64)).max(32).optional()
536
553
  });
537
554
  z$1.object({
538
555
  claimId: id.optional(),
539
- status: z$1.enum(["running", "done", "failed"]).optional(),
556
+ status: z$1.enum(["running", "done", "failed", "skipped"]).optional(),
540
557
  sessionId: id.nullable().optional(),
541
558
  stickyKey: z$1.string().min(1).max(512).optional(),
542
559
  summary: z$1.string().max(AUTOMATION_SUMMARY_MAX_CHARS).nullable().optional(),
@@ -958,4 +975,4 @@ z$1.object({
958
975
  items: z$1.array(PromptQueueItemSchema)
959
976
  });
960
977
 
961
- export { AUTOMATION_NAME_PATTERN as A, BUILTIN_TODO_SKILL as B, ContextUsageSchema as C, PROMPT_QUEUE_CAPABILITY as P, ReleaseDrainNoticeSchema as R, STREAM_DELTA_MAX_CHARS as S, AutomationNameSchema as a, AutomationConcurrencySchema as b, AutomationActionSchema as c, AutomationTriggerSchema as d, createEnvelope as e, createBuiltinTodoClient as f, getAgentCodeDefaults as g, isClaudeOpus55Model as h, isAutomationRunTerminal as i, supportsClaudeOpus55 as j, AgentVersionsSchema as k, BUILTIN_TODO_DISCOVERY as l, RelayAssignmentResponseSchema as m, normalizeAgentKey as n, RelayCandidatesResponseSchema as o, AGENT_VERSION_SOURCES as p, AUTOMATION_SUMMARY_MAX_CHARS as q, AUTOMATION_CLAIM_MAX_RUNS as r, streamKeyOf as s, AUTOMATION_DEFAULT_LEASE_MS as t };
978
+ export { AUTOMATION_NAME_PATTERN as A, BUILTIN_TODO_SKILL as B, ContextUsageSchema as C, PROMPT_QUEUE_CAPABILITY as P, ReleaseDrainNoticeSchema as R, STREAM_DELTA_MAX_CHARS as S, AUTOMATION_PRECHECK_MAX_TIMEOUT_MS as a, AutomationPrecheckSchema as b, createEnvelope as c, createBuiltinTodoClient as d, isClaudeOpus55Model as e, supportsClaudeOpus55 as f, getAgentCodeDefaults as g, AutomationNameSchema as h, isAutomationRunTerminal as i, AutomationConcurrencySchema as j, AutomationActionSchema as k, AutomationTriggerSchema as l, AgentVersionsSchema as m, normalizeAgentKey as n, BUILTIN_TODO_DISCOVERY as o, AGENT_VERSION_SOURCES as p, RelayAssignmentResponseSchema as q, RelayCandidatesResponseSchema as r, streamKeyOf as s, AUTOMATION_SUMMARY_MAX_CHARS as t, AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS as u, AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS as v, AUTOMATION_CLAIM_MAX_RUNS as w, AUTOMATION_DAEMON_CAPABILITY_PRECHECK as x, AUTOMATION_DEFAULT_LEASE_MS as y };
@@ -486,6 +486,10 @@ const AUTOMATION_PAYLOAD_MAX_BYTES = 65536;
486
486
  const AUTOMATION_SUMMARY_MAX_CHARS = 4096;
487
487
  const AUTOMATION_DEFAULT_LEASE_MS = 6e4;
488
488
  const AUTOMATION_CLAIM_MAX_RUNS = 8;
489
+ const AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS = 6e4;
490
+ const AUTOMATION_PRECHECK_MAX_TIMEOUT_MS = 6e5;
491
+ const AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS = 4e3;
492
+ const AUTOMATION_DAEMON_CAPABILITY_PRECHECK = "precheck";
489
493
  const timestamp = z.z.number().int().positive().max(AUTOMATION_MAX_TIMESTAMP);
490
494
  const AutomationTriggerSchema = z.z.discriminatedUnion("kind", [
491
495
  // `expr` is standard five-field cron (minute hour day-of-month month day-of-week,
@@ -519,6 +523,13 @@ const AutomationActionSchema = z.z.discriminatedUnion("kind", [
519
523
  timeoutMs: z.z.number().int().min(1e3).max(7 * 864e5).optional()
520
524
  })
521
525
  ]);
526
+ const AutomationPrecheckSchema = z.z.object({
527
+ command: z.z.array(z.z.string().min(1).max(4096)).min(1).max(256).optional(),
528
+ shell: z.z.string().trim().min(1).max(8e3).optional(),
529
+ cwd: z.z.string().min(1).max(4096).optional(),
530
+ timeoutMs: z.z.number().int().min(1e3).max(AUTOMATION_PRECHECK_MAX_TIMEOUT_MS).optional(),
531
+ includeOutput: z.z.boolean().optional()
532
+ }).refine((p) => p.command === void 0 !== (p.shell === void 0), "precheck needs exactly one of command (argv) or shell");
522
533
  const AutomationConcurrencySchema = z.z.enum(["skip", "queue"]);
523
534
  const AUTOMATION_STATUSES = ["active", "paused"];
524
535
  const AUTOMATION_RUN_TERMINAL_STATUSES = ["done", "failed", "skipped", "expired", "cancelled"];
@@ -534,7 +545,9 @@ z.z.object({
534
545
  action: AutomationActionSchema,
535
546
  concurrency: AutomationConcurrencySchema.optional(),
536
547
  maxRuntimeMs: maxRuntimeMs.optional(),
537
- status: z.z.enum(AUTOMATION_STATUSES).optional()
548
+ status: z.z.enum(AUTOMATION_STATUSES).optional(),
549
+ /** B-548. Older servers strip it silently — clients must check the response echoes `precheck`. */
550
+ precheck: AutomationPrecheckSchema.nullable().optional()
538
551
  });
539
552
  z.z.object({
540
553
  version: z.z.number().int().positive(),
@@ -544,7 +557,9 @@ z.z.object({
544
557
  trigger: AutomationTriggerSchema.optional(),
545
558
  action: AutomationActionSchema.optional(),
546
559
  concurrency: AutomationConcurrencySchema.optional(),
547
- maxRuntimeMs: maxRuntimeMs.optional()
560
+ maxRuntimeMs: maxRuntimeMs.optional(),
561
+ /** B-548: omitted keeps the current precheck, `null` removes it. Changing `action` alone keeps it too. */
562
+ precheck: AutomationPrecheckSchema.nullable().optional()
548
563
  });
549
564
  const payload = z.z.string().max(AUTOMATION_PAYLOAD_MAX_BYTES).refine((v) => new TextEncoder().encode(v).length <= AUTOMATION_PAYLOAD_MAX_BYTES, "payload exceeds 64KB");
550
565
  z.z.object({ payload: payload.optional(), dedupeKey: z.z.string().min(1).max(256).optional() });
@@ -552,11 +567,13 @@ z.z.object({ payload: payload.optional() });
552
567
  z.z.object({
553
568
  machineId: id,
554
569
  limit: z.z.number().int().min(1).max(AUTOMATION_CLAIM_MAX_RUNS).optional(),
555
- leaseMs: z.z.number().int().min(5e3).max(36e5).optional()
570
+ leaseMs: z.z.number().int().min(5e3).max(36e5).optional(),
571
+ /** B-548: what this daemon can execute (e.g. `precheck`). Older daemons send nothing; older servers strip it. */
572
+ capabilities: z.z.array(z.z.string().min(1).max(64)).max(32).optional()
556
573
  });
557
574
  z.z.object({
558
575
  claimId: id.optional(),
559
- status: z.z.enum(["running", "done", "failed"]).optional(),
576
+ status: z.z.enum(["running", "done", "failed", "skipped"]).optional(),
560
577
  sessionId: id.nullable().optional(),
561
578
  stickyKey: z.z.string().min(1).max(512).optional(),
562
579
  summary: z.z.string().max(AUTOMATION_SUMMARY_MAX_CHARS).nullable().optional(),
@@ -980,13 +997,18 @@ z.z.object({
980
997
 
981
998
  exports.AGENT_VERSION_SOURCES = AGENT_VERSION_SOURCES;
982
999
  exports.AUTOMATION_CLAIM_MAX_RUNS = AUTOMATION_CLAIM_MAX_RUNS;
1000
+ exports.AUTOMATION_DAEMON_CAPABILITY_PRECHECK = AUTOMATION_DAEMON_CAPABILITY_PRECHECK;
983
1001
  exports.AUTOMATION_DEFAULT_LEASE_MS = AUTOMATION_DEFAULT_LEASE_MS;
984
1002
  exports.AUTOMATION_NAME_PATTERN = AUTOMATION_NAME_PATTERN;
1003
+ exports.AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS = AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS;
1004
+ exports.AUTOMATION_PRECHECK_MAX_TIMEOUT_MS = AUTOMATION_PRECHECK_MAX_TIMEOUT_MS;
1005
+ exports.AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS = AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS;
985
1006
  exports.AUTOMATION_SUMMARY_MAX_CHARS = AUTOMATION_SUMMARY_MAX_CHARS;
986
1007
  exports.AgentVersionsSchema = AgentVersionsSchema;
987
1008
  exports.AutomationActionSchema = AutomationActionSchema;
988
1009
  exports.AutomationConcurrencySchema = AutomationConcurrencySchema;
989
1010
  exports.AutomationNameSchema = AutomationNameSchema;
1011
+ exports.AutomationPrecheckSchema = AutomationPrecheckSchema;
990
1012
  exports.AutomationTriggerSchema = AutomationTriggerSchema;
991
1013
  exports.BUILTIN_TODO_DISCOVERY = BUILTIN_TODO_DISCOVERY;
992
1014
  exports.BUILTIN_TODO_SKILL = BUILTIN_TODO_SKILL;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _package = require('./package-CC_txQ31.cjs');
3
+ var _package = require('./package-C1XvUQFy.cjs');
4
4
  var module$1 = require('node:module');
5
5
  var node_fs = require('node:fs');
6
6
  var promises = require('node:fs/promises');
@@ -59,10 +59,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
59
59
  async function run(args) {
60
60
  enableCompileCacheIfPossible(_package.packageJson.version);
61
61
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
62
- const { selfCheckMain } = await Promise.resolve().then(function () { return require('./selfCheck-Ba1sECTO.cjs'); });
62
+ const { selfCheckMain } = await Promise.resolve().then(function () { return require('./selfCheck-Dugi0Nk_.cjs'); });
63
63
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
64
64
  }
65
- const { main } = await Promise.resolve().then(function () { return require('./main-eAiLspBM.cjs'); });
65
+ const { main } = await Promise.resolve().then(function () { return require('./main-C16fOGgn.cjs'); });
66
66
  await main();
67
67
  }
68
68
  void run(process.argv.slice(2));
@@ -1,35 +1,35 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-CHDqSii9.cjs');
4
- var logger = require('./logger-B1k7eZnq.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-9yN2iH4b.cjs');
6
- var index = require('./index-DqlyNgt4.cjs');
3
+ var AcpBackend = require('./AcpBackend-20VHOXwb.cjs');
4
+ var logger = require('./logger-JTcJU-uL.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-Zf00QnlL.cjs');
6
+ var index = require('./index-C9hI8a10.cjs');
7
7
  var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
8
- var configuration = require('./configuration-PXAE4-FP.cjs');
9
- var attachmentContent = require('./attachmentContent-Bakb0XV3.cjs');
10
- var piRuntime = require('./piRuntime-Dne1LPu-.cjs');
8
+ var configuration = require('./configuration-B0cb3xA3.cjs');
9
+ var attachmentContent = require('./attachmentContent-DPWxHgX4.cjs');
10
+ var piRuntime = require('./piRuntime-R8XVChxK.cjs');
11
11
  var node_crypto = require('node:crypto');
12
12
  var path = require('node:path');
13
- var api = require('./api-EKlS0r1w.cjs');
14
- var registerKillSessionHandler = require('./registerKillSessionHandler-CgKyzwqw.cjs');
15
- var deterministicJson = require('./deterministicJson-BM8e8QwP.cjs');
16
- var persistence = require('./persistence-d3ZyER6o.cjs');
17
- var machineMetadata = require('./machineMetadata-C4OfKn6I.cjs');
18
- var createSessionMetadata = require('./createSessionMetadata-D04x6OMW.cjs');
19
- var setupOfflineReconnection = require('./setupOfflineReconnection-Cxh9Sz9M.cjs');
20
- var controlClient = require('./controlClient-DI-Er-Ww.cjs');
13
+ var api = require('./api-DnNL5fLw.cjs');
14
+ var registerKillSessionHandler = require('./registerKillSessionHandler-CjitOpUA.cjs');
15
+ var deterministicJson = require('./deterministicJson-Dp3TVyap.cjs');
16
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
17
+ var machineMetadata = require('./machineMetadata-BBg_Njw3.cjs');
18
+ var createSessionMetadata = require('./createSessionMetadata-DbfRBhRu.cjs');
19
+ var setupOfflineReconnection = require('./setupOfflineReconnection-DFmQ8s6I.cjs');
20
+ var controlClient = require('./controlClient-CmnHGcyl.cjs');
21
21
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
22
- var streamRelay = require('./streamRelay-C0AffuX6.cjs');
22
+ var streamRelay = require('./streamRelay-Ce9sgcOV.cjs');
23
23
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
24
- var BasePermissionHandler = require('./BasePermissionHandler-DGQYvBPg.cjs');
25
- var titleGenerator = require('./titleGenerator-Kw3sTnNQ.cjs');
26
- var sessionModeFile = require('./sessionModeFile-JWWF6Nn7.cjs');
24
+ var BasePermissionHandler = require('./BasePermissionHandler-COKc4pmt.cjs');
25
+ var titleGenerator = require('./titleGenerator-CoMxqKfP.cjs');
26
+ var sessionModeFile = require('./sessionModeFile-CIznKD7O.cjs');
27
27
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
28
28
  require('node:child_process');
29
29
  require('@agentclientprotocol/sdk');
30
- require('./time-C7BplxuS.cjs');
30
+ require('./time-T0YmeOhS.cjs');
31
31
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
32
- require('./package-CC_txQ31.cjs');
32
+ require('./package-C1XvUQFy.cjs');
33
33
  require('chalk');
34
34
  require('node:util');
35
35
  require('node:fs');
@@ -37,48 +37,49 @@ require('@paralleldrive/cuid2');
37
37
  require('zod');
38
38
  require('node:os');
39
39
  require('node:fs/promises');
40
- require('./attachmentLimits-eJZ4ZBjF.cjs');
40
+ require('./attachmentLimits-BfgKV5iE.cjs');
41
41
  require('./resources-JDPugcDq.cjs');
42
42
  require('axios');
43
- require('./lidState-De2HP6nu.cjs');
43
+ require('./lidState-D8BmnJV1.cjs');
44
44
  require('os');
45
45
  require('child_process');
46
46
  require('node:events');
47
47
  require('socket.io-client');
48
48
  require('./limits-C-a7gr04.cjs');
49
- require('./registerCommonHandlers-Dausbdsb.cjs');
49
+ require('./registerCommonHandlers-Aha_KfM3.cjs');
50
50
  require('util');
51
51
  require('fs/promises');
52
52
  require('crypto');
53
53
  require('path');
54
54
  require('cross-spawn');
55
- require('./sync--uxtLWbo.cjs');
55
+ require('./sync-x_lI_3j_.cjs');
56
56
  require('./backgroundTaskActivity-CBvUdj39.cjs');
57
57
  require('tweetnacl');
58
58
  require('./types-CRS-srZK.cjs');
59
- require('./client-C1GAIJ04.cjs');
60
- require('./context-DhvXl1oC.cjs');
61
- require('./sessionOps-HuoMXcIZ.cjs');
62
- require('./tools-D7UeLMZ7.cjs');
63
- require('./tools-BTBgpiRc.cjs');
64
- require('./client-BZtKFCJr.cjs');
65
- require('./peerTools-CqIcCEIg.cjs');
59
+ require('./client-JISJx2f-.cjs');
60
+ require('./context-BFUpYT39.cjs');
61
+ require('./sessionOps-DOyy4gkY.cjs');
62
+ require('./tools-IJ0TAcJs.cjs');
63
+ require('./reportProgressTool-B-Rcy0s3.cjs');
64
+ require('./client-DJ0kX_8M.cjs');
65
+ require('./precheckCompat-CWOi5c9L.cjs');
66
+ require('./agentGuidance-BtBx2xxE.cjs');
67
+ require('./trimIdent-4gvk9Wk6.cjs');
68
+ require('./peerTools-DPvbcs8V.cjs');
66
69
  require('./ids-B6ZC0HGt.cjs');
67
- require('./remoteSessionClient-BkJt8SHa.cjs');
70
+ require('./remoteSessionClient-BwI8rpQw.cjs');
68
71
  require('@modelcontextprotocol/sdk/server/mcp.js');
69
72
  require('node:http');
70
73
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
71
- require('./assistantTools-D3cZvgUX.cjs');
74
+ require('./downloadTarget-CiQqRIc-.cjs');
72
75
  require('./terminals-B_bfC9c2.cjs');
73
76
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
74
77
  require('./tmuxSocket-D-Xt6Vn-.cjs');
75
- require('./bootstrap-D9SUykG_.cjs');
76
- require('./agentGuidance-B5NATuFa.cjs');
77
- require('./trimIdent-4gvk9Wk6.cjs');
78
+ require('./bootstrap-BpXIc2wn.cjs');
78
79
  require('./previewPath-B0rBdhy1.cjs');
79
80
  require('./detectCLI-DR9ZaN6B.cjs');
80
81
  require('fs');
81
- require('./localHappyAgentAuth-CboZb3_a.cjs');
82
+ require('./localHappyAgentAuth-d7B6S_o7.cjs');
82
83
  require('url');
83
84
  require('node:module');
84
85
  require('./oneShotPrompts-CL0dip9C.cjs');
@@ -2,14 +2,14 @@
2
2
 
3
3
  var node_fs = require('node:fs');
4
4
  var os = require('node:os');
5
- var logger = require('./logger-B1k7eZnq.cjs');
6
- var persistence = require('./persistence-d3ZyER6o.cjs');
5
+ var logger = require('./logger-JTcJU-uL.cjs');
6
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
7
7
  var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
8
8
  require('chalk');
9
9
  require('node:util');
10
- require('./configuration-PXAE4-FP.cjs');
10
+ require('./configuration-B0cb3xA3.cjs');
11
11
  require('node:path');
12
- require('./package-CC_txQ31.cjs');
12
+ require('./package-C1XvUQFy.cjs');
13
13
  require('node:fs/promises');
14
14
  require('zod');
15
15
  require('./authRelay-BdYkC1Po.cjs');
@@ -1,14 +1,14 @@
1
1
  import { statSync, readdirSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
- import { l as logger } from './logger-8dtZPn3n.mjs';
4
- import { readSettings } from './persistence-C_xFQLsD.mjs';
3
+ import { l as logger } from './logger-BpQcwNnt.mjs';
4
+ import { readSettings } from './persistence-B9LmhAE2.mjs';
5
5
  import { d as describeAgentHome, C as CLAUDE_CONFIG_DIR_ENV, a as CODEX_HOME_ENV, f as findClaudeConversation, b as agentHomeCandidates, c as findCodexThread, r as resolveAgentHomes, A as AGENT_HOME_ENV_NAMES, g as agentHomeEnv, p as probeLoginShellEnv } from './loginShellEnv-Dw8M7tkI.mjs';
6
6
  export { h as claudeConversationPath, i as claudeProjectDirName, j as codexRolloutFileMatches, e as expandHomePath } from './loginShellEnv-Dw8M7tkI.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-CiBUH72C.mjs';
9
+ import './configuration-D2v3puap.mjs';
10
10
  import 'node:path';
11
- import './package-tVYgFJoK.mjs';
11
+ import './package-BqwrPxL0.mjs';
12
12
  import 'node:fs/promises';
13
13
  import 'zod';
14
14
  import './authRelay-DSAvg1uv.mjs';
@@ -1,4 +1,4 @@
1
- import { p as packageJson } from './package-tVYgFJoK.mjs';
1
+ import { p as packageJson } from './package-BqwrPxL0.mjs';
2
2
  import module$1 from 'node:module';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { readdir, rm } from 'node:fs/promises';
@@ -57,10 +57,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
57
57
  async function run(args) {
58
58
  enableCompileCacheIfPossible(packageJson.version);
59
59
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
60
- const { selfCheckMain } = await import('./selfCheck-DdT8r263.mjs');
60
+ const { selfCheckMain } = await import('./selfCheck-DPi4lqme.mjs');
61
61
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
62
62
  }
63
- const { main } = await import('./main-BQTaUrz0.mjs');
63
+ const { main } = await import('./main-B5b1gA3K.mjs');
64
64
  await main();
65
65
  }
66
66
  void run(process.argv.slice(2));