very-happy-cli 0.2.165 → 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-DCfNt9bD.cjs → AcpBackend-20VHOXwb.cjs} +3 -3
  3. package/dist/{AcpBackend-C11FnVw5.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-CwJ48yiB.mjs → BasePermissionHandler-CDCLIrZJ.mjs} +1 -1
  7. package/dist/{BasePermissionHandler-BwQHxl6M.cjs → BasePermissionHandler-COKc4pmt.cjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-ClF2g1qz.mjs → BaseReasoningProcessor-BDVKvooR.mjs} +1 -1
  9. package/dist/{BaseReasoningProcessor-81lf_M8G.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-DvR176E5.mjs → agentHome-2IbIjKCa.mjs} +4 -4
  13. package/dist/{agentHome-D3Nn82kI.cjs → agentHome-KVWj6nCl.cjs} +4 -4
  14. package/dist/{api-DTVPUE7g.mjs → api-Cmz3XS4P.mjs} +14 -12
  15. package/dist/{api-AzdzTKFs.cjs → api-DnNL5fLw.cjs} +14 -12
  16. package/dist/{apiMachine-BQ-b4Lu3.mjs → apiMachine-B6ySCFe0.mjs} +2137 -65
  17. package/dist/{apiMachine-B_cJldfa.cjs → apiMachine-DeoQ8QbZ.cjs} +2134 -62
  18. package/dist/{attachmentContent-dzIs-wis.mjs → attachmentContent-CTXapi-_.mjs} +2 -2
  19. package/dist/{attachmentContent-muDCe4Gy.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-Jtmvh1w4.mjs → auth-BMaBjRAj.mjs} +8 -8
  23. package/dist/{auth-DtP-B4gf.cjs → auth-D4-eQz85.cjs} +8 -8
  24. package/dist/{auth-CfLd3phE.cjs → auth-ietHtvwu.cjs} +5 -5
  25. package/dist/{auth-BY5ujhGn.mjs → auth-pzWIFdOD.mjs} +5 -5
  26. package/dist/{auto-DjWfR1UB.mjs → auto-DL75Dx3I.mjs} +83 -21
  27. package/dist/{auto-ClNnbSoF.cjs → auto-DOWTQDPa.cjs} +84 -20
  28. package/dist/{bootstrap-B1dMZA-u.cjs → bootstrap-BpXIc2wn.cjs} +2 -2
  29. package/dist/{bootstrap-D_ExGrY2.mjs → bootstrap-XE8A7Ut2.mjs} +2 -2
  30. package/dist/{browser-_gV7tcPs.cjs → browser-CcG8GLRV.cjs} +1 -1
  31. package/dist/{browser-mwzpOmcw.mjs → browser-DDFi1T8C.mjs} +1 -1
  32. package/dist/{claudeLocal-G5UmJ81F.cjs → claudeLocal-DXBXwIOG.cjs} +6 -6
  33. package/dist/{claudeLocal-BeHToEK5.mjs → claudeLocal-DmM5Oyhv.mjs} +6 -6
  34. package/dist/{claudeLocalLauncher-B4y2BsmO.cjs → claudeLocalLauncher-C41Y6Kp4.cjs} +14 -11
  35. package/dist/{claudeLocalLauncher-Cq6bqAT4.mjs → claudeLocalLauncher-Cs4eUC3P.mjs} +14 -11
  36. package/dist/{claudeSessionFork-CokUhS4r.mjs → claudeSessionFork-BdLnc2Hv.mjs} +1 -1
  37. package/dist/{claudeSessionFork-CDJq_b9r.cjs → claudeSessionFork-Cs0I3eGI.cjs} +1 -1
  38. package/dist/{client-BwaWdlCm.mjs → client-CbK33y_s.mjs} +3 -3
  39. package/dist/{client-uN9d6Git.cjs → client-DJ0kX_8M.cjs} +2 -2
  40. package/dist/{client-CJZKBZCE.mjs → client-GjTnsq6F.mjs} +2 -2
  41. package/dist/{client-Do7cGPEq.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-BuSdeUxT.cjs → codexAppServerClient-BTjn2ZCZ.cjs} +46 -2
  45. package/dist/{codexAppServerClient-B0QaMQsC.mjs → codexAppServerClient-CldXEojt.mjs} +47 -3
  46. package/dist/{codexCommand-YdYmykAR.cjs → codexCommand-BpD0N1F7.cjs} +71 -51
  47. package/dist/{codexCommand-C3gdjMAw.mjs → codexCommand-DjMU-Ijf.mjs} +71 -51
  48. package/dist/{config-CGCIFRCN.mjs → config-DjSJKatx.mjs} +3 -3
  49. package/dist/{config-ChoHFnfO.cjs → config-DuLL0Ppe.cjs} +3 -3
  50. package/dist/{configuration-BE61XNsg.cjs → configuration-B0cb3xA3.cjs} +1 -1
  51. package/dist/{configuration-L1qcGTFM.mjs → configuration-D2v3puap.mjs} +1 -1
  52. package/dist/{connect-D5IKfcfd.cjs → connect-B7JWEzyg.cjs} +13 -13
  53. package/dist/{connect-CFD0Em6a.mjs → connect-CnNNyM9I.mjs} +13 -13
  54. package/dist/{context-3WVw8qPz.cjs → context-BFUpYT39.cjs} +1 -1
  55. package/dist/{context-DaCCB4cm.mjs → context-DjfqLWzE.mjs} +1 -1
  56. package/dist/{controlClient-Ci7HTMII.mjs → controlClient-BMUJfUeF.mjs} +13 -6
  57. package/dist/{controlClient-RWTlQA4_.cjs → controlClient-CmnHGcyl.cjs} +13 -5
  58. package/dist/{createSessionMetadata-CWR-AB2A.mjs → createSessionMetadata-DU0bCg2m.mjs} +2 -2
  59. package/dist/{createSessionMetadata-CPGTztXP.cjs → createSessionMetadata-DbfRBhRu.cjs} +2 -2
  60. package/dist/{deterministicJson-BBwG-Ase.mjs → deterministicJson-D-WPUrZb.mjs} +36 -52
  61. package/dist/{deterministicJson-C4Jo2RWy.cjs → deterministicJson-Dp3TVyap.cjs} +41 -59
  62. package/dist/{doctor-CAC6qY9Z.mjs → doctor-BlXXyQ1L.mjs} +6 -6
  63. package/dist/{doctor-ZOQLE5AH.cjs → doctor-CkJmdPbi.cjs} +6 -6
  64. package/dist/{assistantTools-BsrG3PD-.cjs → downloadTarget-CiQqRIc-.cjs} +44 -6
  65. package/dist/{assistantTools-DPGga5lM.mjs → downloadTarget-DjSwMHun.mjs} +45 -8
  66. package/dist/{ensureDaemonRunning-b1pvEFcS.mjs → ensureDaemonRunning-CAQag1zE.mjs} +5 -5
  67. package/dist/{ensureDaemonRunning-mIgX2vnc.cjs → ensureDaemonRunning-C_aIOhgG.cjs} +5 -5
  68. package/dist/{handleResumeCommand-DGNhbv-3.cjs → handleResumeCommand-6KzBGDnl.cjs} +5 -5
  69. package/dist/{handleResumeCommand-CTGbZkCL.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-BzIxE0Eu.cjs → index-CaFCAlX8.cjs} +3 -3
  73. package/dist/{index-DrSPR59N.cjs → index-DBmNwMX9.cjs} +39 -38
  74. package/dist/{index-DIodyAqF.cjs → index-DEKIgZUo.cjs} +4 -4
  75. package/dist/{index-Diu6HdWH.mjs → index-DQplgo0W.mjs} +4 -4
  76. package/dist/{index-BgzjPv07.mjs → index-HQsigW_J.mjs} +3 -3
  77. package/dist/{index-DjtBengz.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-DrUQk2DJ.cjs → install-CejEiRGW.cjs} +3 -3
  82. package/dist/{install-Cs5qAPrB.cjs → install-Cf6AFSWC.cjs} +2 -0
  83. package/dist/{install-Cp_aB-NQ.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-BLHLmhwd.mjs → lidState-BfximpjX.mjs} +1 -1
  89. package/dist/{lidState-z9ekRpZu.cjs → lidState-D8BmnJV1.cjs} +1 -1
  90. package/dist/{localHappyAgentAuth-BWvmc_Hg.mjs → localHappyAgentAuth-Ct1aXwqd.mjs} +1 -1
  91. package/dist/{localHappyAgentAuth-BCx0y1qW.cjs → localHappyAgentAuth-d7B6S_o7.cjs} +1 -1
  92. package/dist/{logger-CknSVkIe.mjs → logger-BpQcwNnt.mjs} +2 -2
  93. package/dist/{logger-D0hkk7Vo.cjs → logger-JTcJU-uL.cjs} +2 -2
  94. package/dist/{machineMetadata-BDCYOXQg.cjs → machineMetadata-BBg_Njw3.cjs} +3 -3
  95. package/dist/{machineMetadata-Cj1DoFot.mjs → machineMetadata-CBdxABeI.mjs} +3 -3
  96. package/dist/{main-CKUfkVG_.mjs → main-B5b1gA3K.mjs} +44 -44
  97. package/dist/{main-COAPGIso.cjs → main-C16fOGgn.cjs} +44 -44
  98. package/dist/{mcp-BILnw4si.cjs → mcp-BnNiBBax.cjs} +24 -19
  99. package/dist/{mcp-DeYUfpo8.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-VIUXrYZ1.mjs → package-BqwrPxL0.mjs} +7 -7
  103. package/dist/{package-UkmvSFsg.cjs → package-C1XvUQFy.cjs} +7 -7
  104. package/dist/{peerTools-SWITnkqz.mjs → peerTools-CeCe-3lk.mjs} +4 -4
  105. package/dist/{peerTools-CttfOxti.cjs → peerTools-DPvbcs8V.cjs} +4 -4
  106. package/dist/{persistence-C6ztVW1W.cjs → persistence-2Xp_o6x6.cjs} +3 -3
  107. package/dist/{persistence-DujtUH94.mjs → persistence-B9LmhAE2.mjs} +3 -3
  108. package/dist/{piRunnerArgs-BVJHIjlk.mjs → piRunnerArgs-7FaTyNOq.mjs} +1 -1
  109. package/dist/{piRunnerArgs-tBQg6xDw.cjs → piRunnerArgs-DI29dDNo.cjs} +1 -1
  110. package/dist/{piRuntime-DKFA8u8t.mjs → piRuntime-0qEK5AqE.mjs} +1 -1
  111. package/dist/{piRuntime-DZzjF9It.cjs → piRuntime-R8XVChxK.cjs} +1 -1
  112. package/dist/{piTerminal-t5pQHCPT.cjs → piTerminal-Ccj0KNPr.cjs} +17 -17
  113. package/dist/{piTerminal-BTSaFlpV.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--8ds2auE.cjs → registerCommonHandlers-Aha_KfM3.cjs} +2 -2
  119. package/dist/{registerCommonHandlers-BR0J4g64.mjs → registerCommonHandlers-DdfGsFbM.mjs} +2 -2
  120. package/dist/{registerKillSessionHandler-CI23l8aJ.cjs → registerKillSessionHandler-CjitOpUA.cjs} +6 -6
  121. package/dist/{registerKillSessionHandler-Czz0tdki.mjs → registerKillSessionHandler-DboQlGcH.mjs} +6 -6
  122. package/dist/{remoteSessionClient-DCAUHgPz.mjs → remoteSessionClient-B2DtWuNP.mjs} +5 -5
  123. package/dist/{remoteSessionClient-BAkIwM2S.cjs → remoteSessionClient-BwI8rpQw.cjs} +5 -5
  124. package/dist/{tools-mWqsE6ji.cjs → reportProgressTool-B-Rcy0s3.cjs} +73 -9
  125. package/dist/{tools-BVRoGcQH.mjs → reportProgressTool-DnAD8wOa.mjs} +67 -10
  126. package/dist/{run-CkKujjn8.cjs → run-Bh66Xs40.cjs} +268 -118
  127. package/dist/{run-B75qm2I6.mjs → run-DPEwJpQR.mjs} +266 -116
  128. package/dist/{runClaude-B1T9DLLi.cjs → runClaude-C-lJdAKD.cjs} +25 -20
  129. package/dist/{runClaude-aBfBweec.mjs → runClaude-DLr_nBzw.mjs} +25 -20
  130. package/dist/{runClaudeDeps-BOrPP4J1.mjs → runClaudeDeps-C7JV7nXG.mjs} +47 -37
  131. package/dist/{runClaudeDeps-BGjNGfuZ.cjs → runClaudeDeps-vWWLod7J.cjs} +44 -35
  132. package/dist/{runGemini-BuAA_OQb.cjs → runGemini-o-CUSayc.cjs} +42 -35
  133. package/dist/{runGemini-a-V7JE-J.mjs → runGemini-tH6sLw-G.mjs} +42 -35
  134. package/dist/{runOpenClaw-DUSwXg1A.mjs → runOpenClaw-C5DZvVhn.mjs} +18 -18
  135. package/dist/{runOpenClaw-BBVffIh9.cjs → runOpenClaw-D24f35l0.cjs} +18 -18
  136. package/dist/{sandbox-Brb_5wzc.mjs → sandbox-BaL1aslA.mjs} +4 -4
  137. package/dist/{sandbox-Fd2G5yaq.cjs → sandbox-TJZJ6ngw.cjs} +4 -4
  138. package/dist/selfCheck-DPi4lqme.mjs +84 -0
  139. package/dist/{selfCheck-NuJKMInJ.cjs → selfCheck-Dugi0Nk_.cjs} +34 -34
  140. package/dist/{send-4dgHKC3u.cjs → send-CkWOSYmU.cjs} +8 -8
  141. package/dist/{send-DEQJiq_x.mjs → send-DDcJ3ayi.mjs} +8 -8
  142. package/dist/{server-DWGcDmHG.cjs → server-7qFQ8J2u.cjs} +6 -6
  143. package/dist/{server-C6AlUFkw.mjs → server-CUjRvQSd.mjs} +4 -4
  144. package/dist/{sessionLock-B1GgaO1q.cjs → sessionLock-DfhNICyS.cjs} +2 -2
  145. package/dist/{sessionLock-Dm8QyGo4.mjs → sessionLock-DqVyHFAQ.mjs} +2 -2
  146. package/dist/{sessionModeFile-BvOEJ4Fl.cjs → sessionModeFile-CIznKD7O.cjs} +1 -1
  147. package/dist/{sessionModeFile-CuNAWCKL.mjs → sessionModeFile-M4OpiyrF.mjs} +1 -1
  148. package/dist/{sessionOps-DG5MMEp_.mjs → sessionOps-BnaEaOKs.mjs} +4 -4
  149. package/dist/{sessionOps-JP64uJmc.cjs → sessionOps-DOyy4gkY.cjs} +4 -4
  150. package/dist/{sessionScanner-DqSk5Ol_.mjs → sessionScanner-CcuOn9uU.mjs} +75 -19
  151. package/dist/{sessionScanner-BBPEgJ5S.cjs → sessionScanner-Cu1yKlj4.cjs} +75 -19
  152. package/dist/{sessions-DgJuw_i0.cjs → sessions-BQgk5Kw8.cjs} +9 -9
  153. package/dist/{sessions-4isbBAWi.mjs → sessions-C9O91rL1.mjs} +9 -9
  154. package/dist/{setupOfflineReconnection-_MoZtsro.mjs → setupOfflineReconnection-Byy8aeKT.mjs} +2 -2
  155. package/dist/{setupOfflineReconnection-CKJKVIUS.cjs → setupOfflineReconnection-DFmQ8s6I.cjs} +2 -2
  156. package/dist/{spawn-CshERWbY.cjs → spawn-BS7LPmSm.cjs} +13 -12
  157. package/dist/{spawn-BTOG4tTm.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-Dc4xYm8P.mjs → spawnHappyCLI-BAa49m0q.mjs} +1 -1
  161. package/dist/{spawnHappyCLI-Dd5_8Vex.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-1LedLBY-.cjs → startFileWatcher-DQbbypJv.cjs} +1 -1
  165. package/dist/{startFileWatcher-B0VlG-Fn.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-Dfm6K2te.mjs → sync-BLpH13Kb.mjs} +1 -1
  169. package/dist/{sync-DwUUGGFz.cjs → sync-x_lI_3j_.cjs} +1 -1
  170. package/dist/{systemPrompt-CB1Ls0AE.cjs → systemPrompt-4erwILTB.cjs} +3 -3
  171. package/dist/{systemPrompt-D41Zw1a3.mjs → systemPrompt-BanyDihy.mjs} +3 -3
  172. package/dist/{teams-D8Ly3i6u.mjs → teams-D6BOT3lR.mjs} +7 -7
  173. package/dist/{teams-NWv2ji16.cjs → teams-DzetlGWC.cjs} +7 -7
  174. package/dist/{time-v1Y_qEJp.mjs → time-CfDKj6Bx.mjs} +1 -1
  175. package/dist/{time-BbzJ7PJQ.cjs → time-T0YmeOhS.cjs} +1 -1
  176. package/dist/{titleGenerator-BhoblAQY.mjs → titleGenerator-ChImQ4q-.mjs} +1 -1
  177. package/dist/{titleGenerator-cH6IkPRi.cjs → titleGenerator-CoMxqKfP.cjs} +2 -2
  178. package/dist/{todo-D1hgWV6d.cjs → todo-CZZebKZg.cjs} +6 -6
  179. package/dist/{todo-CuNct-fw.mjs → todo-SVtYxGON.mjs} +6 -6
  180. package/dist/{tools-jof0Bu54.mjs → tools-3X2z3YDe.mjs} +1 -1
  181. package/dist/{tools-c2fb0CF5.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-VPH5GfrA.cjs → uninstall-CqqCWj7w.cjs} +3 -3
  185. package/dist/{uninstall-BB7WYYAk.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-BgwJ3NGS.mjs +0 -84
  189. package/dist/specialCommands-BSqhYg5X.mjs +0 -52
  190. package/dist/specialCommands-DSsTeRej.cjs +0 -54
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-D0hkk7Vo.cjs');
3
+ var logger = require('./logger-JTcJU-uL.cjs');
4
4
  require('axios');
5
5
  require('node:events');
6
6
  require('socket.io-client');
7
- require('./attachmentLimits-eJZ4ZBjF.cjs');
7
+ require('./attachmentLimits-BfgKV5iE.cjs');
8
8
  require('node:crypto');
9
9
  require('tweetnacl');
10
- require('./configuration-BE61XNsg.cjs');
11
- require('./index-DqlyNgt4.cjs');
12
- require('./registerCommonHandlers--8ds2auE.cjs');
10
+ require('./configuration-B0cb3xA3.cjs');
11
+ require('./index-C9hI8a10.cjs');
12
+ require('./registerCommonHandlers-Aha_KfM3.cjs');
13
13
  require('os');
14
14
  require('child_process');
15
15
  require('@paralleldrive/cuid2');
16
- require('./persistence-C6ztVW1W.cjs');
16
+ require('./persistence-2Xp_o6x6.cjs');
17
17
  require('chalk');
18
18
  require('./types-CRS-srZK.cjs');
19
19
 
@@ -1,17 +1,17 @@
1
- import { l as logger } from './logger-CknSVkIe.mjs';
1
+ import { l as logger } from './logger-BpQcwNnt.mjs';
2
2
  import 'axios';
3
3
  import 'node:events';
4
4
  import 'socket.io-client';
5
- import './attachmentLimits-B8nzhw-i.mjs';
5
+ import './attachmentLimits-C1PCCM79.mjs';
6
6
  import 'node:crypto';
7
7
  import 'tweetnacl';
8
- import './configuration-L1qcGTFM.mjs';
9
- import './index-vVWpCoTr.mjs';
10
- import './registerCommonHandlers-BR0J4g64.mjs';
8
+ import './configuration-D2v3puap.mjs';
9
+ import './index-B0HEEYGh.mjs';
10
+ import './registerCommonHandlers-DdfGsFbM.mjs';
11
11
  import 'os';
12
12
  import 'child_process';
13
13
  import '@paralleldrive/cuid2';
14
- import './persistence-DujtUH94.mjs';
14
+ import './persistence-B9LmhAE2.mjs';
15
15
  import 'chalk';
16
16
  import './types-CkqAACXx.mjs';
17
17
 
@@ -1,10 +1,10 @@
1
- import { r as resumeDaemonSession, l as listDaemonSessions } from './controlClient-Ci7HTMII.mjs';
2
- import { d as archiveSession, u as unarchiveSession, h as sessionLiveness, e as sendUserMessage, i as readSessionState, o as openUserScopedSocket } from './sessionOps-DG5MMEp_.mjs';
3
- import { d as delay } from './time-v1Y_qEJp.mjs';
1
+ import { g as resumeDaemonSession, l as listDaemonSessions } from './controlClient-BMUJfUeF.mjs';
2
+ import { d as archiveSession, u as unarchiveSession, h as sessionLiveness, e as sendUserMessage, i as readSessionState, o as openUserScopedSocket } from './sessionOps-BnaEaOKs.mjs';
3
+ import { d as delay } from './time-CfDKj6Bx.mjs';
4
4
  import axios from 'axios';
5
5
  import { hostname } from 'node:os';
6
- import { c as configuration } from './configuration-L1qcGTFM.mjs';
7
- import { readSettings, readCredentialsForConfiguredRelay } from './persistence-DujtUH94.mjs';
6
+ import { c as configuration } from './configuration-D2v3puap.mjs';
7
+ import { readSettings, readCredentialsForConfiguredRelay } from './persistence-B9LmhAE2.mjs';
8
8
  import { randomUUID } from 'node:crypto';
9
9
 
10
10
  const ACTIVE_FRESH_WINDOW_MS = 15 * 60 * 1e3;
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var controlClient = require('./controlClient-RWTlQA4_.cjs');
4
- var sessionOps = require('./sessionOps-JP64uJmc.cjs');
5
- var time = require('./time-BbzJ7PJQ.cjs');
3
+ var controlClient = require('./controlClient-CmnHGcyl.cjs');
4
+ var sessionOps = require('./sessionOps-DOyy4gkY.cjs');
5
+ var time = require('./time-T0YmeOhS.cjs');
6
6
  var axios = require('axios');
7
7
  var os = require('node:os');
8
- var configuration = require('./configuration-BE61XNsg.cjs');
9
- var persistence = require('./persistence-C6ztVW1W.cjs');
8
+ var configuration = require('./configuration-B0cb3xA3.cjs');
9
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
10
10
  var node_crypto = require('node:crypto');
11
11
 
12
12
  const ACTIVE_FRESH_WINDOW_MS = 15 * 60 * 1e3;
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var z = require('zod');
4
- var index = require('./index-DqlyNgt4.cjs');
5
- var client = require('./client-uN9d6Git.cjs');
4
+ var index = require('./index-C9hI8a10.cjs');
5
+ var client = require('./client-DJ0kX_8M.cjs');
6
+ var precheckCompat = require('./precheckCompat-CWOi5c9L.cjs');
7
+ var agentGuidance = require('./agentGuidance-BtBx2xxE.cjs');
6
8
 
7
9
  const AUTOMATION_TOOL_NAMES = [
8
10
  "automation_list",
@@ -22,6 +24,7 @@ const id = z.z.string().min(1).max(128);
22
24
  const ref = { name: index.AutomationNameSchema.optional().describe("Automation name"), id: id.optional().describe("Automation id (alternative to name)") };
23
25
  const payload = z.z.string().max(65536).optional().describe("Payload text; JSON lets prompts use {{payload.field}}");
24
26
  const maxRuntimeMs = z.z.number().int().min(6e4).max(7 * 864e5).optional();
27
+ const precheckDescription = "Optional gate run on the machine before the action: exactly one of command (argv array) or shell (one command line, not template-rendered; payload in $VH_AUTOMATION_PAYLOAD). Exit 0 runs the action; anything else records the run as skipped (repeats fold into one run, \xD7N). cwd defaults to the action directory; timeoutMs default 60000, max 600000; includeOutput appends its stdout to the spawn/send prompt.";
25
28
  const AUTOMATION_TOOL_SCHEMAS = {
26
29
  automation_list: { description: "List this account\u2019s automations (name, trigger, action, machine, status, next run). Defaults to every machine.", readOnly: true, inputSchema: { machineId: id.optional().describe("Only this machine id, or 'this' for the current machine") } },
27
30
  automation_get: { description: "Read one automation by name or id, including its version (needed for automation_update).", readOnly: true, inputSchema: ref },
@@ -35,11 +38,12 @@ const AUTOMATION_TOOL_SCHEMAS = {
35
38
  action: index.AutomationActionSchema,
36
39
  concurrency: index.AutomationConcurrencySchema.optional().describe("skip (default): a run while another is active is recorded as skipped; queue: it waits"),
37
40
  maxRuntimeMs,
38
- paused: z.z.boolean().optional().describe("Create paused")
41
+ paused: z.z.boolean().optional().describe("Create paused"),
42
+ precheck: index.AutomationPrecheckSchema.optional().describe(precheckDescription)
39
43
  }
40
44
  },
41
45
  automation_update: {
42
- description: "Change an automation (name / description / machine / trigger / action / concurrency / maxRuntimeMs). Requires the current version from automation_get; a stale version is rejected.",
46
+ description: "Change an automation (name / description / machine / trigger / action / precheck / concurrency / maxRuntimeMs). Requires the current version from automation_get; a stale version is rejected. Omitted fields stay as they are; precheck: null removes the precheck.",
43
47
  inputSchema: {
44
48
  ...ref,
45
49
  version: z.z.number().int().positive(),
@@ -49,7 +53,8 @@ const AUTOMATION_TOOL_SCHEMAS = {
49
53
  trigger: index.AutomationTriggerSchema.optional(),
50
54
  action: index.AutomationActionSchema.optional(),
51
55
  concurrency: index.AutomationConcurrencySchema.optional(),
52
- maxRuntimeMs
56
+ maxRuntimeMs,
57
+ precheck: index.AutomationPrecheckSchema.nullable().optional().describe(`${precheckDescription} null removes it.`)
53
58
  }
54
59
  },
55
60
  automation_pause: { description: "Pause an automation: no new scheduled runs and fire is refused until resumed.", inputSchema: ref },
@@ -94,9 +99,10 @@ async function executeAutomationTool(name, args, context) {
94
99
  ...args.description !== void 0 ? { description: args.description } : {},
95
100
  ...args.concurrency !== void 0 ? { concurrency: args.concurrency } : {},
96
101
  ...args.maxRuntimeMs !== void 0 ? { maxRuntimeMs: args.maxRuntimeMs } : {},
97
- ...args.paused ? { status: "paused" } : {}
102
+ ...args.paused ? { status: "paused" } : {},
103
+ ...args.precheck ? { precheck: args.precheck } : {}
98
104
  };
99
- return { automation: await client$1.create(input) };
105
+ return { automation: await precheckCompat.createAutomationChecked(client$1, input) };
100
106
  }
101
107
  case "automation_update": {
102
108
  const current = await resolve(context, args);
@@ -108,9 +114,10 @@ async function executeAutomationTool(name, args, context) {
108
114
  ...args.trigger !== void 0 ? { trigger: args.trigger } : {},
109
115
  ...args.action !== void 0 ? { action: args.action } : {},
110
116
  ...args.concurrency !== void 0 ? { concurrency: args.concurrency } : {},
111
- ...args.maxRuntimeMs !== void 0 ? { maxRuntimeMs: args.maxRuntimeMs } : {}
117
+ ...args.maxRuntimeMs !== void 0 ? { maxRuntimeMs: args.maxRuntimeMs } : {},
118
+ ...args.precheck !== void 0 ? { precheck: args.precheck } : {}
112
119
  };
113
- return { automation: await client$1.update(current.id, input) };
120
+ return { automation: await precheckCompat.updateAutomationChecked(client$1, current.id, input) };
114
121
  }
115
122
  case "automation_pause":
116
123
  return { automation: await client$1.pause((await resolve(context, args)).id) };
@@ -176,5 +183,62 @@ function registerAutomationTools(server, execute = createAutomationToolExecutor(
176
183
  }
177
184
  }
178
185
 
186
+ const SELF_REPORT_MIN_INTERVAL_MS = 30 * 1e3;
187
+ const SELF_REPORT_FRESH_MS = 15 * 60 * 1e3;
188
+ const ATTENTION_VALUES = ["none", "review", "blocked"];
189
+ const BOARD_PHASES = ["planning", "implementing", "testing", "reviewing", "blocked", "done"];
190
+ function normalizePhase(value) {
191
+ return BOARD_PHASES.includes(value) ? value : void 0;
192
+ }
193
+ const PROGRESS_MAX_CHARS = 200;
194
+ function createSelfReportState() {
195
+ return { lastAcceptedAt: 0 };
196
+ }
197
+ function shouldAcceptSelfReport(state, now, attention, phase) {
198
+ if (state.lastAcceptedAt === 0) return true;
199
+ if (attention !== void 0 && attention !== state.lastAttention) return true;
200
+ if (phase !== void 0 && phase !== state.lastPhase) return true;
201
+ return now - state.lastAcceptedAt >= SELF_REPORT_MIN_INTERVAL_MS;
202
+ }
203
+ function isSelfReportFresh(state, now) {
204
+ if (state.lastAcceptedAt === 0) return false;
205
+ const age = now - state.lastAcceptedAt;
206
+ return age >= 0 && age < SELF_REPORT_FRESH_MS;
207
+ }
208
+ function normalizeAttention(value) {
209
+ return ATTENTION_VALUES.includes(value) ? value : "none";
210
+ }
211
+ function normalizeProgress(value) {
212
+ if (typeof value !== "string") return null;
213
+ const flat = value.replace(/\s+/g, " ").trim();
214
+ if (!flat) return null;
215
+ return flat.length > PROGRESS_MAX_CHARS ? flat.slice(0, PROGRESS_MAX_CHARS) : flat;
216
+ }
217
+
218
+ function registerReportProgressTool(server, execute) {
219
+ server.registerTool(agentGuidance.REPORT_PROGRESS_TOOL_NAME, {
220
+ description: agentGuidance.REPORT_PROGRESS_TOOL_DESCRIPTION,
221
+ title: agentGuidance.REPORT_PROGRESS_TOOL_TITLE,
222
+ inputSchema: {
223
+ progress: z.z.string().describe("One short line describing the current state of this task"),
224
+ attention: z.z.enum(["none", "review", "blocked"]).optional().describe("'blocked' = cannot proceed without the user; 'review' = wants their eyes; 'none' = ordinary progress"),
225
+ phase: z.z.enum(BOARD_PHASES).optional().describe("Optional phase of the work, shown as a label next to the progress line")
226
+ }
227
+ }, async (args) => {
228
+ try {
229
+ return await execute(args ?? {});
230
+ } catch (error) {
231
+ return { content: [{ type: "text", text: `Failed to report progress: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
232
+ }
233
+ });
234
+ }
235
+
179
236
  exports.AUTOMATION_TOOL_NAMES = AUTOMATION_TOOL_NAMES;
237
+ exports.createSelfReportState = createSelfReportState;
238
+ exports.isSelfReportFresh = isSelfReportFresh;
239
+ exports.normalizeAttention = normalizeAttention;
240
+ exports.normalizePhase = normalizePhase;
241
+ exports.normalizeProgress = normalizeProgress;
180
242
  exports.registerAutomationTools = registerAutomationTools;
243
+ exports.registerReportProgressTool = registerReportProgressTool;
244
+ exports.shouldAcceptSelfReport = shouldAcceptSelfReport;
@@ -1,6 +1,8 @@
1
1
  import { z } from 'zod';
2
- import { a as AutomationNameSchema, b as AutomationConcurrencySchema, c as AutomationActionSchema, d as AutomationTriggerSchema } from './index-vVWpCoTr.mjs';
3
- import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv } from './client-CJZKBZCE.mjs';
2
+ import { h as AutomationNameSchema, b as AutomationPrecheckSchema, j as AutomationConcurrencySchema, k as AutomationActionSchema, l as AutomationTriggerSchema } from './index-B0HEEYGh.mjs';
3
+ import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv } from './client-GjTnsq6F.mjs';
4
+ import { u as updateAutomationChecked, c as createAutomationChecked } from './precheckCompat-DeEbilbr.mjs';
5
+ import { R as REPORT_PROGRESS_TOOL_NAME, d as REPORT_PROGRESS_TOOL_TITLE, e as REPORT_PROGRESS_TOOL_DESCRIPTION } from './agentGuidance-BDYt2Qy2.mjs';
4
6
 
5
7
  const AUTOMATION_TOOL_NAMES = [
6
8
  "automation_list",
@@ -20,6 +22,7 @@ const id = z.string().min(1).max(128);
20
22
  const ref = { name: AutomationNameSchema.optional().describe("Automation name"), id: id.optional().describe("Automation id (alternative to name)") };
21
23
  const payload = z.string().max(65536).optional().describe("Payload text; JSON lets prompts use {{payload.field}}");
22
24
  const maxRuntimeMs = z.number().int().min(6e4).max(7 * 864e5).optional();
25
+ const precheckDescription = "Optional gate run on the machine before the action: exactly one of command (argv array) or shell (one command line, not template-rendered; payload in $VH_AUTOMATION_PAYLOAD). Exit 0 runs the action; anything else records the run as skipped (repeats fold into one run, \xD7N). cwd defaults to the action directory; timeoutMs default 60000, max 600000; includeOutput appends its stdout to the spawn/send prompt.";
23
26
  const AUTOMATION_TOOL_SCHEMAS = {
24
27
  automation_list: { description: "List this account\u2019s automations (name, trigger, action, machine, status, next run). Defaults to every machine.", readOnly: true, inputSchema: { machineId: id.optional().describe("Only this machine id, or 'this' for the current machine") } },
25
28
  automation_get: { description: "Read one automation by name or id, including its version (needed for automation_update).", readOnly: true, inputSchema: ref },
@@ -33,11 +36,12 @@ const AUTOMATION_TOOL_SCHEMAS = {
33
36
  action: AutomationActionSchema,
34
37
  concurrency: AutomationConcurrencySchema.optional().describe("skip (default): a run while another is active is recorded as skipped; queue: it waits"),
35
38
  maxRuntimeMs,
36
- paused: z.boolean().optional().describe("Create paused")
39
+ paused: z.boolean().optional().describe("Create paused"),
40
+ precheck: AutomationPrecheckSchema.optional().describe(precheckDescription)
37
41
  }
38
42
  },
39
43
  automation_update: {
40
- description: "Change an automation (name / description / machine / trigger / action / concurrency / maxRuntimeMs). Requires the current version from automation_get; a stale version is rejected.",
44
+ description: "Change an automation (name / description / machine / trigger / action / precheck / concurrency / maxRuntimeMs). Requires the current version from automation_get; a stale version is rejected. Omitted fields stay as they are; precheck: null removes the precheck.",
41
45
  inputSchema: {
42
46
  ...ref,
43
47
  version: z.number().int().positive(),
@@ -47,7 +51,8 @@ const AUTOMATION_TOOL_SCHEMAS = {
47
51
  trigger: AutomationTriggerSchema.optional(),
48
52
  action: AutomationActionSchema.optional(),
49
53
  concurrency: AutomationConcurrencySchema.optional(),
50
- maxRuntimeMs
54
+ maxRuntimeMs,
55
+ precheck: AutomationPrecheckSchema.nullable().optional().describe(`${precheckDescription} null removes it.`)
51
56
  }
52
57
  },
53
58
  automation_pause: { description: "Pause an automation: no new scheduled runs and fire is refused until resumed.", inputSchema: ref },
@@ -92,9 +97,10 @@ async function executeAutomationTool(name, args, context) {
92
97
  ...args.description !== void 0 ? { description: args.description } : {},
93
98
  ...args.concurrency !== void 0 ? { concurrency: args.concurrency } : {},
94
99
  ...args.maxRuntimeMs !== void 0 ? { maxRuntimeMs: args.maxRuntimeMs } : {},
95
- ...args.paused ? { status: "paused" } : {}
100
+ ...args.paused ? { status: "paused" } : {},
101
+ ...args.precheck ? { precheck: args.precheck } : {}
96
102
  };
97
- return { automation: await client.create(input) };
103
+ return { automation: await createAutomationChecked(client, input) };
98
104
  }
99
105
  case "automation_update": {
100
106
  const current = await resolve(context, args);
@@ -106,9 +112,10 @@ async function executeAutomationTool(name, args, context) {
106
112
  ...args.trigger !== void 0 ? { trigger: args.trigger } : {},
107
113
  ...args.action !== void 0 ? { action: args.action } : {},
108
114
  ...args.concurrency !== void 0 ? { concurrency: args.concurrency } : {},
109
- ...args.maxRuntimeMs !== void 0 ? { maxRuntimeMs: args.maxRuntimeMs } : {}
115
+ ...args.maxRuntimeMs !== void 0 ? { maxRuntimeMs: args.maxRuntimeMs } : {},
116
+ ...args.precheck !== void 0 ? { precheck: args.precheck } : {}
110
117
  };
111
- return { automation: await client.update(current.id, input) };
118
+ return { automation: await updateAutomationChecked(client, current.id, input) };
112
119
  }
113
120
  case "automation_pause":
114
121
  return { automation: await client.pause((await resolve(context, args)).id) };
@@ -174,4 +181,54 @@ function registerAutomationTools(server, execute = createAutomationToolExecutor(
174
181
  }
175
182
  }
176
183
 
177
- export { AUTOMATION_TOOL_NAMES as A, registerAutomationTools as r };
184
+ const SELF_REPORT_MIN_INTERVAL_MS = 30 * 1e3;
185
+ const SELF_REPORT_FRESH_MS = 15 * 60 * 1e3;
186
+ const ATTENTION_VALUES = ["none", "review", "blocked"];
187
+ const BOARD_PHASES = ["planning", "implementing", "testing", "reviewing", "blocked", "done"];
188
+ function normalizePhase(value) {
189
+ return BOARD_PHASES.includes(value) ? value : void 0;
190
+ }
191
+ const PROGRESS_MAX_CHARS = 200;
192
+ function createSelfReportState() {
193
+ return { lastAcceptedAt: 0 };
194
+ }
195
+ function shouldAcceptSelfReport(state, now, attention, phase) {
196
+ if (state.lastAcceptedAt === 0) return true;
197
+ if (attention !== void 0 && attention !== state.lastAttention) return true;
198
+ if (phase !== void 0 && phase !== state.lastPhase) return true;
199
+ return now - state.lastAcceptedAt >= SELF_REPORT_MIN_INTERVAL_MS;
200
+ }
201
+ function isSelfReportFresh(state, now) {
202
+ if (state.lastAcceptedAt === 0) return false;
203
+ const age = now - state.lastAcceptedAt;
204
+ return age >= 0 && age < SELF_REPORT_FRESH_MS;
205
+ }
206
+ function normalizeAttention(value) {
207
+ return ATTENTION_VALUES.includes(value) ? value : "none";
208
+ }
209
+ function normalizeProgress(value) {
210
+ if (typeof value !== "string") return null;
211
+ const flat = value.replace(/\s+/g, " ").trim();
212
+ if (!flat) return null;
213
+ return flat.length > PROGRESS_MAX_CHARS ? flat.slice(0, PROGRESS_MAX_CHARS) : flat;
214
+ }
215
+
216
+ function registerReportProgressTool(server, execute) {
217
+ server.registerTool(REPORT_PROGRESS_TOOL_NAME, {
218
+ description: REPORT_PROGRESS_TOOL_DESCRIPTION,
219
+ title: REPORT_PROGRESS_TOOL_TITLE,
220
+ inputSchema: {
221
+ progress: z.string().describe("One short line describing the current state of this task"),
222
+ attention: z.enum(["none", "review", "blocked"]).optional().describe("'blocked' = cannot proceed without the user; 'review' = wants their eyes; 'none' = ordinary progress"),
223
+ phase: z.enum(BOARD_PHASES).optional().describe("Optional phase of the work, shown as a label next to the progress line")
224
+ }
225
+ }, async (args) => {
226
+ try {
227
+ return await execute(args ?? {});
228
+ } catch (error) {
229
+ return { content: [{ type: "text", text: `Failed to report progress: ${error instanceof Error ? error.message : String(error)}` }], isError: true };
230
+ }
231
+ });
232
+ }
233
+
234
+ export { AUTOMATION_TOOL_NAMES as A, registerReportProgressTool as a, normalizePhase as b, createSelfReportState as c, normalizeProgress as d, isSelfReportFresh as i, normalizeAttention as n, registerAutomationTools as r, shouldAcceptSelfReport as s };