very-happy-cli 0.2.186 → 0.2.187

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-aVv-_nH_.cjs → AcpBackend-B2-ReWTo.cjs} +3 -3
  2. package/dist/{AcpBackend-ConXUH67.mjs → AcpBackend-C4Emg-H3.mjs} +3 -3
  3. package/dist/{AcpSessionManager-aRdzf_6R.cjs → AcpSessionManager-DR4-oZCz.cjs} +1 -1
  4. package/dist/{AcpSessionManager-BxD1AQ8L.mjs → AcpSessionManager-Nard_zFS.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-Hj7Qregq.mjs → BasePermissionHandler-Bk9DmVZH.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-BsOLZCNB.cjs → BasePermissionHandler-CZ19WzsP.cjs} +1 -1
  7. package/dist/{acpSessionResume-CKacrrHV.mjs → acpSessionResume-DPSfMe7r.mjs} +1 -1
  8. package/dist/{acpSessionResume-CpPNoxaW.cjs → acpSessionResume-Hto_b8MK.cjs} +1 -1
  9. package/dist/{agentHome-CawmLuWV.mjs → agentHome-4-odnrAk.mjs} +4 -4
  10. package/dist/{agentHome-VS7FrFQZ.cjs → agentHome-Mveyfa24.cjs} +4 -4
  11. package/dist/{api-DjqQTT16.cjs → api-DVEzYcoy.cjs} +9 -9
  12. package/dist/{api-DUFy21Nf.mjs → api-cVvbFZVK.mjs} +9 -9
  13. package/dist/{apiMachine-D2BrVBYu.cjs → apiMachine-Bd1C_JN6.cjs} +13 -13
  14. package/dist/{apiMachine-B0sBCHNZ.mjs → apiMachine-M7qY1izH.mjs} +13 -13
  15. package/dist/{attachmentContent-2kInPZrP.cjs → attachmentContent-D8hViGiA.cjs} +2 -2
  16. package/dist/{attachmentContent-D01-pLOB.mjs → attachmentContent-NNF-Eo4O.mjs} +2 -2
  17. package/dist/{auth-DP3eN2Fv.mjs → auth-BCHL8Fx5.mjs} +5 -5
  18. package/dist/{auth-CujfCIv-.cjs → auth-BHw8be0X.cjs} +8 -8
  19. package/dist/{auth-B-CqTcVh.mjs → auth-CKNEKwEV.mjs} +8 -8
  20. package/dist/{auth-CImUXAjH.cjs → auth-b_1h0677.cjs} +5 -5
  21. package/dist/{auto-D4KRQIBu.mjs → auto-D716QYa3.mjs} +16 -16
  22. package/dist/{auto-oWgZl7mM.cjs → auto-Da4rCLal.cjs} +16 -16
  23. package/dist/{bootstrap-MFmMruyB.mjs → bootstrap-CndcegDb.mjs} +2 -2
  24. package/dist/{bootstrap-B7YvJcVK.cjs → bootstrap-j2RuoHVy.cjs} +2 -2
  25. package/dist/{browser-CfFbN1Us.mjs → browser-CLsM513o.mjs} +1 -1
  26. package/dist/{browser-C19iD31j.cjs → browser-DIYTnD_T.cjs} +1 -1
  27. package/dist/{claudeLocal-C6wNx9qH.mjs → claudeLocal-3HbTx7K-.mjs} +6 -5
  28. package/dist/{claudeLocal-C4A7-BmS.cjs → claudeLocal-C_uUbEO_.cjs} +8 -7
  29. package/dist/{claudeLocalLauncher-BfCKs7Le.cjs → claudeLocalLauncher-BxWouVYk.cjs} +10 -10
  30. package/dist/{claudeLocalLauncher-DdPfufcS.mjs → claudeLocalLauncher-DXh2chq3.mjs} +10 -10
  31. package/dist/{claudeSessionFork-D8XT48Lf.mjs → claudeSessionFork-B4olbwfj.mjs} +1 -1
  32. package/dist/{claudeSessionFork-B8NjdHYD.cjs → claudeSessionFork-CsU96yXX.cjs} +1 -1
  33. package/dist/{client-DAnQqPmc.mjs → client-C8w9aQYe.mjs} +2 -2
  34. package/dist/{client-jAdkYZRf.cjs → client-CCy72Phz.cjs} +13 -4
  35. package/dist/{client-CMIhQ32m.cjs → client-CWSfPlGD.cjs} +2 -2
  36. package/dist/{client-CKM07bJH.mjs → client-D8p1YjVt.mjs} +13 -4
  37. package/dist/{client-BfGuTBMO.mjs → client-Zqg7DXHl.mjs} +2 -2
  38. package/dist/{client-CTNxuHVc.cjs → client-q1aNOKgy.cjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +17 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +17 -16
  41. package/dist/{codexAppServerClient-DhOC61k9.mjs → codexAppServerClient-Csc-XsRV.mjs} +3 -3
  42. package/dist/{codexAppServerClient-Dv1Mh3MS.cjs → codexAppServerClient-g8npaIU9.cjs} +3 -3
  43. package/dist/{codexCommand-D3_i93Rm.mjs → codexCommand-BS-foS_R.mjs} +42 -42
  44. package/dist/{codexCommand-CWrFt3Ne.cjs → codexCommand-BV8pTAtv.cjs} +42 -42
  45. package/dist/{codexTermination-DErS0cGt.cjs → codexTermination-B5WgZAWO.cjs} +1 -1
  46. package/dist/{codexTermination-B08GgahL.mjs → codexTermination-lOO15mt2.mjs} +1 -1
  47. package/dist/{config-D_aj3xgw.cjs → config-BOnZRJIG.cjs} +3 -3
  48. package/dist/{config-D3OBduhj.mjs → config-Ba5ufl-D.mjs} +3 -3
  49. package/dist/{configuration-DbCHeEeP.mjs → configuration-8EAa2X9P.mjs} +1 -1
  50. package/dist/{configuration-CI0GWwaT.cjs → configuration-CAfdO4IC.cjs} +1 -1
  51. package/dist/{connect-839tEkPN.cjs → connect-2hWuvxRM.cjs} +12 -12
  52. package/dist/{connect-BuwVpjkZ.mjs → connect-BHWHNe54.mjs} +12 -12
  53. package/dist/{context-D2Y_qLs0.mjs → context-B-jybQhf.mjs} +1 -1
  54. package/dist/{context-zhirgqSw.cjs → context-BtCz06PX.cjs} +1 -1
  55. package/dist/{controlClient-Dv80mB_j.mjs → controlClient-O-vf2MkJ.mjs} +3 -3
  56. package/dist/{controlClient-BIi1tzEo.cjs → controlClient-mH9AxBwT.cjs} +3 -3
  57. package/dist/{createSessionMetadata-DT24NjY2.cjs → createSessionMetadata-Bcn7b8QB.cjs} +2 -2
  58. package/dist/{createSessionMetadata-Dqy_DfoF.mjs → createSessionMetadata-HlzlfP0U.mjs} +2 -2
  59. package/dist/{defaultPermissionMode-BYqJbPhc.cjs → defaultPermissionMode-BN3PdltF.cjs} +2 -2
  60. package/dist/{defaultPermissionMode-yR27mevc.mjs → defaultPermissionMode-BPDeX4S8.mjs} +2 -2
  61. package/dist/{deterministicJson-COiJcmUR.mjs → deterministicJson-CruOxFA6.mjs} +13 -13
  62. package/dist/{deterministicJson-CoWlyn_X.cjs → deterministicJson-D9pZQhU9.cjs} +13 -13
  63. package/dist/{doctor-Ymj096qP.mjs → doctor-BNhLBBTK.mjs} +7 -7
  64. package/dist/{doctor-DI6aIOne.cjs → doctor-lHD1YZH6.cjs} +7 -7
  65. package/dist/{downloadTarget-BOXHrxbm.cjs → downloadTarget-BhkQxTa8.cjs} +6 -6
  66. package/dist/{downloadTarget-DRXCRDub.mjs → downloadTarget-ByTxs_N5.mjs} +6 -6
  67. package/dist/{ensureDaemonRunning-BqNjYnar.cjs → ensureDaemonRunning-BiCK6RiS.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-DTrrXAdz.mjs → ensureDaemonRunning-Cv0AMaHK.mjs} +5 -5
  69. package/dist/{handleResumeCommand-DW_MRgtz.mjs → handleResumeCommand-Cy_KW0LN.mjs} +5 -5
  70. package/dist/{handleResumeCommand-BBKUGhCv.cjs → handleResumeCommand-WB4VDeKk.cjs} +5 -5
  71. package/dist/{index-D9lJhXUk.cjs → index-B44ft-m4.cjs} +38 -38
  72. package/dist/{index-Bq6VHNdk.cjs → index-Bcp-PEGc.cjs} +4 -4
  73. package/dist/{index-Cyu_8WAd.mjs → index-BpSpw6jG.mjs} +3 -3
  74. package/dist/{index-W8wlfp57.cjs → index-BpWESchl.cjs} +3 -3
  75. package/dist/{index-CmlAXizv.mjs → index-CVMbboXv.mjs} +7 -7
  76. package/dist/{index-WW17yjQO.mjs → index-CdOz1uDl.mjs} +39 -39
  77. package/dist/{index-CY573fnz.cjs → index-Vtcax4oD.cjs} +7 -7
  78. package/dist/{index-04pYyzsJ.mjs → index-lWXWV0H2.mjs} +4 -4
  79. package/dist/index.cjs +2 -2
  80. package/dist/index.mjs +2 -2
  81. package/dist/{install-F3rP8tBU.mjs → install-B8O1JpJH.mjs} +1 -1
  82. package/dist/{install-BATFlr_l.cjs → install-BOHlqewf.cjs} +1 -1
  83. package/dist/{install-C1y_g7kj.cjs → install-DdRVv9IS.cjs} +3 -3
  84. package/dist/{install-C5XCDwgD.mjs → install-mK93DJ6L.mjs} +3 -3
  85. package/dist/lib.cjs +11 -11
  86. package/dist/lib.mjs +11 -11
  87. package/dist/{lidState-CZ1ggYiB.mjs → lidState-LtdUCXi-.mjs} +1 -1
  88. package/dist/{lidState-BxHu6dus.cjs → lidState-XyjQaZtU.cjs} +1 -1
  89. package/dist/{localHappyAgentAuth-BHklNDKQ.cjs → localHappyAgentAuth-C9Aj_wGD.cjs} +1 -1
  90. package/dist/{localHappyAgentAuth-OJk4xDwg.mjs → localHappyAgentAuth-DqFE0Adr.mjs} +1 -1
  91. package/dist/{logger-L0pLBOLK.cjs → logger-BILSzq2s.cjs} +2 -2
  92. package/dist/{logger-CpaeM90D.mjs → logger-SAU4uSs4.mjs} +2 -2
  93. package/dist/{machineMetadata-YeHF4gSY.cjs → machineMetadata-C5TgUTpD.cjs} +3 -3
  94. package/dist/{machineMetadata-ukaYmmlK.mjs → machineMetadata-ZVnihOuL.mjs} +3 -3
  95. package/dist/{main-pkH_VRP-.mjs → main-BjOHtX8u.mjs} +46 -46
  96. package/dist/{main-VyiAJXfb.cjs → main-CVfx_-l7.cjs} +46 -46
  97. package/dist/{mcp-Y8Xsr2Xh.cjs → mcp-By9XK193.cjs} +14 -14
  98. package/dist/{mcp-BwoAhEnN.mjs → mcp-CWVr7KbQ.mjs} +14 -14
  99. package/dist/{mirrorProtocol-DukUp2Bj.mjs → mirrorProtocol-BI6XbokT.mjs} +2 -2
  100. package/dist/{mirrorProtocol-Did0-1jn.cjs → mirrorProtocol-C0wyaesn.cjs} +2 -2
  101. package/dist/{package-DagIeOhi.mjs → package-BMBwnCn3.mjs} +10 -10
  102. package/dist/{package-BuATIMpK.cjs → package-Bbfq2KR7.cjs} +10 -10
  103. package/dist/{panels-C3dUoUbA.mjs → panels-CbIUwV6q.mjs} +5 -5
  104. package/dist/{panels-CZ_CRUbM.cjs → panels-rQmysHlY.cjs} +5 -5
  105. package/dist/{peerTools-Cs3Ln6d0.cjs → peerTools-CZfiq_Dx.cjs} +5 -5
  106. package/dist/{peerTools-CUCqJ83-.mjs → peerTools-CyruQrOo.mjs} +5 -5
  107. package/dist/{persistence-FgtDuVAP.mjs → persistence-C7T3HYjq.mjs} +2 -2
  108. package/dist/{persistence-CIzOAWK6.cjs → persistence-DPeSC0SK.cjs} +2 -2
  109. package/dist/{piRunnerArgs-YbYkfixz.mjs → piRunnerArgs-CsWompo8.mjs} +1 -1
  110. package/dist/{piRunnerArgs-CJhXFPM9.cjs → piRunnerArgs-DAq8vIpP.cjs} +1 -1
  111. package/dist/{piRuntime-CEzoAYHe.cjs → piRuntime-CFqlQFoz.cjs} +2 -2
  112. package/dist/{piRuntime-CShuw-1A.mjs → piRuntime-Dxd8Gfun.mjs} +2 -2
  113. package/dist/{piTerminal-BvvcgVoW.mjs → piTerminal-BssuKDtJ.mjs} +17 -17
  114. package/dist/{piTerminal-DVr2W6bI.cjs → piTerminal-DHG3Kzve.cjs} +17 -17
  115. package/dist/promptCacheTtl-B8PCzE6k.cjs +76 -0
  116. package/dist/promptCacheTtl-Ce0TVbrx.mjs +72 -0
  117. package/dist/{pushNotifications-2CyhYAte.mjs → pushNotifications-Bi72c41d.mjs} +2 -2
  118. package/dist/{pushNotifications-OtQY-Mfa.cjs → pushNotifications-CsSyhnHu.cjs} +2 -2
  119. package/dist/{query-B7DvMlYM.mjs → query-BQOwsKS1.mjs} +3 -2
  120. package/dist/{query-DimRl61I.cjs → query-Cuef299f.cjs} +5 -4
  121. package/dist/{rateLimitWindows-C0zbGT7K.mjs → rateLimitWindows-B6IAWYN5.mjs} +1 -1
  122. package/dist/{rateLimitWindows-DwhrA5wy.cjs → rateLimitWindows-bfwC81Z-.cjs} +1 -1
  123. package/dist/{registerCommonHandlers-De54jKz8.cjs → registerCommonHandlers-CQC04iF3.cjs} +2 -2
  124. package/dist/{registerCommonHandlers-X9lnO2TF.mjs → registerCommonHandlers-qzb6TQqo.mjs} +2 -2
  125. package/dist/{registerKillSessionHandler-CAif4Uz4.cjs → registerKillSessionHandler-BraKB5Ks.cjs} +5 -5
  126. package/dist/{registerKillSessionHandler-CrLsN5m3.mjs → registerKillSessionHandler-DMPrrNKX.mjs} +5 -5
  127. package/dist/{remoteSessionClient-BApor-c2.mjs → remoteSessionClient-D3XhN_sd.mjs} +5 -5
  128. package/dist/{remoteSessionClient-9j3N_bzV.cjs → remoteSessionClient-DffolBcQ.cjs} +5 -5
  129. package/dist/{reportProgressTool-RR5VkbDf.cjs → reportProgressTool-BieTXE_R.cjs} +2 -2
  130. package/dist/{reportProgressTool-6mDoxKuq.mjs → reportProgressTool-irHR-XEW.mjs} +2 -2
  131. package/dist/{resources-CqwHPhdK.cjs → resources-BZ_Be0qM.cjs} +1 -1
  132. package/dist/{resources-CLdQfe3b.mjs → resources-CLP_MpK4.mjs} +1 -1
  133. package/dist/{run-B2ZorDI7.cjs → run-Ck_WA6Nj.cjs} +34 -34
  134. package/dist/{run-CmA3cPD_.mjs → run-DCUaxe2S.mjs} +34 -34
  135. package/dist/{runClaude-Dk73bQ0n.cjs → runClaude-BUGku2Qp.cjs} +21 -21
  136. package/dist/{runClaude-bxwea9mX.mjs → runClaude-BryAvfNV.mjs} +21 -21
  137. package/dist/{runClaudeDeps-DoaYM017.mjs → runClaudeDeps-BZkWM9_u.mjs} +43 -43
  138. package/dist/{runClaudeDeps-dVfReVd4.cjs → runClaudeDeps-Dbk1VrOW.cjs} +38 -38
  139. package/dist/{runGemini-BD-wQe5q.cjs → runGemini-B6AZ2bv0.cjs} +33 -33
  140. package/dist/{runGemini-Dq2iv4UF.mjs → runGemini-DT379gpi.mjs} +33 -33
  141. package/dist/{runOpenClaw-C1NB1aLx.mjs → runOpenClaw-Bpp9mkyO.mjs} +17 -17
  142. package/dist/{runOpenClaw-BXLv_bvU.cjs → runOpenClaw-eBUYlIVJ.cjs} +17 -17
  143. package/dist/{sandbox-9MIBf8kS.cjs → sandbox-Bv4H1P6u.cjs} +4 -4
  144. package/dist/{sandbox-Dqs_T8Jw.mjs → sandbox-Z8TM9eUg.mjs} +4 -4
  145. package/dist/{selfCheck-CkUezhrg.cjs → selfCheck--1k2Ptf6.cjs} +37 -37
  146. package/dist/selfCheck-DIGghfQz.mjs +86 -0
  147. package/dist/{send-rdhpycNB.cjs → send-BG4KYe6f.cjs} +8 -8
  148. package/dist/{send-4q066vij.mjs → send-CKTovWuQ.mjs} +8 -8
  149. package/dist/{server-DxTjt1mK.cjs → server-BTNwH-sA.cjs} +6 -6
  150. package/dist/{server-DN6TvjhP.mjs → server-DLpXtoiZ.mjs} +4 -4
  151. package/dist/{sessionLock-h4162Jrf.cjs → sessionLock-Cf6RlgfF.cjs} +3 -3
  152. package/dist/{sessionLock-DOsE5UUf.mjs → sessionLock-DhzB5ZI9.mjs} +3 -3
  153. package/dist/{sessionOps--9p2IzVA.mjs → sessionOps-CiFjBCMa.mjs} +4 -4
  154. package/dist/{sessionOps-tmBKG5qg.cjs → sessionOps-R52JWMnX.cjs} +4 -4
  155. package/dist/{sessionProvider-B9w7rFDR.cjs → sessionProvider-LATn-lZL.cjs} +5 -5
  156. package/dist/{sessionProvider-C6MHJZ9Z.mjs → sessionProvider-f2tUhwBc.mjs} +5 -5
  157. package/dist/{sessionScanner-Bgvz8Uiy.cjs → sessionScanner-DRzZtGtu.cjs} +3 -3
  158. package/dist/{sessionScanner-B6hzp5R9.mjs → sessionScanner-lS1puA5H.mjs} +3 -3
  159. package/dist/{sessions-iItaUQAF.mjs → sessions-D01nnjOE.mjs} +10 -10
  160. package/dist/{sessions-DJMVXKRz.cjs → sessions-DGd8Fin6.cjs} +10 -10
  161. package/dist/{setupOfflineReconnection-DL4HUMDJ.cjs → setupOfflineReconnection-Ds7ywGwR.cjs} +2 -2
  162. package/dist/{setupOfflineReconnection-DF78nz1N.mjs → setupOfflineReconnection-UApZjcU5.mjs} +2 -2
  163. package/dist/{spawn-CL9A8dBJ.cjs → spawn-CT3g4p8A.cjs} +12 -12
  164. package/dist/{spawn-CoYfACsc.mjs → spawn-ct8aSMA8.mjs} +12 -12
  165. package/dist/{spawnHappyCLI-BWOub_Uf.cjs → spawnHappyCLI-DedrWByd.cjs} +1 -1
  166. package/dist/{spawnHappyCLI-BcSO1rF6.mjs → spawnHappyCLI-Dp05fHcp.mjs} +1 -1
  167. package/dist/{specialCommands-ByrcSYSh.cjs → specialCommands-35KxDNE8.cjs} +3 -3
  168. package/dist/{specialCommands-B-DAeFrU.mjs → specialCommands-CTtmGCCf.mjs} +3 -3
  169. package/dist/{startFileWatcher-BZrpUz7_.cjs → startFileWatcher-72w11DP_.cjs} +1 -1
  170. package/dist/{startFileWatcher-DVia64Vg.mjs → startFileWatcher-BLdxJdgu.mjs} +1 -1
  171. package/dist/{startupSessionCreate-CY4tPjlZ.mjs → startupSessionCreate-CJFR_Zom.mjs} +1 -1
  172. package/dist/{startupSessionCreate-63ABDnfJ.cjs → startupSessionCreate-Cy4J4-Ep.cjs} +1 -1
  173. package/dist/{sync-CZjyTC4v.mjs → sync-BWX1OVQi.mjs} +1 -1
  174. package/dist/{sync-CKSmwxec.cjs → sync-lxDpbIh3.cjs} +1 -1
  175. package/dist/{systemPrompt-BPzhf5d5.cjs → systemPrompt-0DqWPGY6.cjs} +1 -1
  176. package/dist/{systemPrompt-BKUVX-fd.mjs → systemPrompt-BIilbjt_.mjs} +1 -1
  177. package/dist/{teams-CHBszdmc.cjs → teams-CImmJLlM.cjs} +8 -8
  178. package/dist/{teams-B2-KPjRg.mjs → teams-CvpB8Rdm.mjs} +8 -8
  179. package/dist/{time-DcICfW0N.cjs → time-BbQJi3Eh.cjs} +1 -1
  180. package/dist/{time-BsNUVcKH.mjs → time-DjS5me2q.mjs} +1 -1
  181. package/dist/{titleGenerator-B4b4ah--.mjs → titleGenerator-CGdBp5lQ.mjs} +1 -1
  182. package/dist/{titleGenerator-Bvk1mx7G.cjs → titleGenerator-CfJme6ep.cjs} +2 -2
  183. package/dist/{todo-C7--CBge.mjs → todo-BxfUKwTM.mjs} +5 -5
  184. package/dist/{todo-BN4hhun6.cjs → todo-rN20m9lT.cjs} +5 -5
  185. package/dist/tools-B_W7xJNh.mjs +137 -0
  186. package/dist/tools-kGtSjG8h.cjs +140 -0
  187. package/dist/{uninstall-_qDbgdxh.cjs → uninstall-CBQsxEmD.cjs} +3 -3
  188. package/dist/{uninstall-Bjwl9bqK.mjs → uninstall-DUjvgLlg.mjs} +3 -3
  189. package/package.json +10 -10
  190. package/dist/selfCheck-Dz_Sm7w8.mjs +0 -86
  191. package/dist/smallFastModel-BLNgMrwR.mjs +0 -18
  192. package/dist/smallFastModel-D_uxGMo3.cjs +0 -21
  193. package/dist/tools-BILbS8Hh.mjs +0 -60
  194. package/dist/tools-Bl5Q_6Nr.cjs +0 -63
@@ -2,23 +2,23 @@ import { homedir } from 'node:os';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { z } from 'zod';
4
4
  import { randomUUID } from 'node:crypto';
5
- import { t as teamRequest, c as createTeamsClient } from './client-CKM07bJH.mjs';
6
- import { b as readCredentialsForConfiguredRelay } from './persistence-FgtDuVAP.mjs';
7
- import { a as installTeamSkill, i as installAutomationSkill } from './install-F3rP8tBU.mjs';
5
+ import { t as teamRequest, c as createTeamsClient } from './client-D8p1YjVt.mjs';
6
+ import { b as readCredentialsForConfiguredRelay } from './persistence-C7T3HYjq.mjs';
7
+ import { a as installTeamSkill, i as installAutomationSkill } from './install-B8O1JpJH.mjs';
8
8
  import 'node:child_process';
9
9
  import 'node:util';
10
10
  import 'node:path';
11
11
  import './index-B9f1vKcC.mjs';
12
12
  import '@paralleldrive/cuid2';
13
- import './configuration-DbCHeEeP.mjs';
13
+ import './configuration-8EAa2X9P.mjs';
14
14
  import 'node:fs';
15
- import './package-DagIeOhi.mjs';
16
- import './context-D2Y_qLs0.mjs';
15
+ import './package-BMBwnCn3.mjs';
16
+ import './context-B-jybQhf.mjs';
17
17
  import './authRelay-DhQhkBvX.mjs';
18
18
  import 'tweetnacl';
19
- import './logger-CpaeM90D.mjs';
19
+ import './logger-SAU4uSs4.mjs';
20
20
  import 'chalk';
21
- import './resources-CLdQfe3b.mjs';
21
+ import './resources-CLP_MpK4.mjs';
22
22
 
23
23
  const legacyTask = z.object({
24
24
  id: z.string().regex(/^T-\d{3,}$/),
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-L0pLBOLK.cjs');
3
+ var logger = require('./logger-BILSzq2s.cjs');
4
4
 
5
5
  async function delay(ms) {
6
6
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -1,4 +1,4 @@
1
- import { l as logger } from './logger-CpaeM90D.mjs';
1
+ import { l as logger } from './logger-SAU4uSs4.mjs';
2
2
 
3
3
  async function delay(ms) {
4
4
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module';
3
3
  import { T as TITLE_PROMPT_PREFIX } from './oneShotPrompts-DT4p6RNd.mjs';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { resolve, join } from 'node:path';
6
- import { l as logger } from './logger-CpaeM90D.mjs';
6
+ import { l as logger } from './logger-SAU4uSs4.mjs';
7
7
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
8
8
 
9
9
  const MAX_PROMPT_SAMPLE_CHARS = 500;
@@ -5,7 +5,7 @@ var module$1 = require('node:module');
5
5
  var oneShotPrompts = require('./oneShotPrompts-CL0dip9C.cjs');
6
6
  var node_crypto = require('node:crypto');
7
7
  var path = require('node:path');
8
- var logger = require('./logger-L0pLBOLK.cjs');
8
+ var logger = require('./logger-BILSzq2s.cjs');
9
9
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
10
10
 
11
11
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -13,7 +13,7 @@ const MAX_PROMPT_SAMPLE_CHARS = 500;
13
13
  const MAX_TITLE_CHARS = 60;
14
14
  const GENERATION_TIMEOUT_MS = 3e4;
15
15
  function loadClaudeVersionUtils() {
16
- const require$1 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('titleGenerator-Bvk1mx7G.cjs', document.baseURI).href)));
16
+ const require$1 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('titleGenerator-CfJme6ep.cjs', document.baseURI).href)));
17
17
  return require$1(path.resolve(path.join(projectPath.projectPath(), "scripts", "claude_version_utils.cjs")));
18
18
  }
19
19
  function resolveClaudeBinary(loadUtils = loadClaudeVersionUtils) {
@@ -1,18 +1,18 @@
1
- import { c as configuration } from './configuration-DbCHeEeP.mjs';
1
+ import { c as configuration } from './configuration-8EAa2X9P.mjs';
2
2
  import { h as createBuiltinTodoClient, B as BUILTIN_TODO_SKILL } from './index-B9f1vKcC.mjs';
3
- import { b as readCredentialsForConfiguredRelay } from './persistence-FgtDuVAP.mjs';
4
- import { r as readTeamScope, t as teamScopePath } from './context-D2Y_qLs0.mjs';
3
+ import { b as readCredentialsForConfiguredRelay } from './persistence-C7T3HYjq.mjs';
4
+ import { r as readTeamScope, t as teamScopePath } from './context-B-jybQhf.mjs';
5
5
  import 'node:fs';
6
6
  import 'node:os';
7
7
  import 'node:path';
8
- import './package-DagIeOhi.mjs';
8
+ import './package-BMBwnCn3.mjs';
9
9
  import 'node:fs/promises';
10
10
  import 'zod';
11
11
  import '@paralleldrive/cuid2';
12
12
  import './authRelay-DhQhkBvX.mjs';
13
13
  import 'node:crypto';
14
14
  import 'tweetnacl';
15
- import './logger-CpaeM90D.mjs';
15
+ import './logger-SAU4uSs4.mjs';
16
16
  import 'chalk';
17
17
  import 'node:util';
18
18
 
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-CI0GWwaT.cjs');
3
+ var configuration = require('./configuration-CAfdO4IC.cjs');
4
4
  var index = require('./index-BumVulwx.cjs');
5
- var persistence = require('./persistence-CIzOAWK6.cjs');
6
- var context = require('./context-zhirgqSw.cjs');
5
+ var persistence = require('./persistence-DPeSC0SK.cjs');
6
+ var context = require('./context-BtCz06PX.cjs');
7
7
  require('node:fs');
8
8
  require('node:os');
9
9
  require('node:path');
10
- require('./package-BuATIMpK.cjs');
10
+ require('./package-Bbfq2KR7.cjs');
11
11
  require('node:fs/promises');
12
12
  require('zod');
13
13
  require('@paralleldrive/cuid2');
14
14
  require('./authRelay-Dy1qU9td.cjs');
15
15
  require('node:crypto');
16
16
  require('tweetnacl');
17
- require('./logger-L0pLBOLK.cjs');
17
+ require('./logger-BILSzq2s.cjs');
18
18
  require('chalk');
19
19
  require('node:util');
20
20
 
@@ -0,0 +1,137 @@
1
+ import { z } from 'zod';
2
+ import { c as createTeamsClient } from './client-D8p1YjVt.mjs';
3
+
4
+ const CLOSED_GOAL_CHARS = 200;
5
+ const closed = (task) => task.status === "done" || task.status === "cancelled";
6
+ function teamToolView(team) {
7
+ const { tasks = [], messages = [], operations = [], bots = [], ...rest } = team;
8
+ const recent = new Set(messages.filter((m) => m.deliveredAt !== null || m.cancelledAt !== void 0).slice(-20).map((m) => m.id));
9
+ const shownMessages = messages.filter((m) => recent.has(m.id) || m.deliveredAt === null && m.cancelledAt === void 0);
10
+ const liveOperations = operations.filter((o) => o.status !== "completed" && o.error !== "task_closed_before_spawn");
11
+ const closedTasks = tasks.filter(closed).length;
12
+ return {
13
+ ...rest,
14
+ bots: bots.map(({ previousSessionIds: _previous, ...bot }) => bot),
15
+ tasks: tasks.map((task) => closed(task) ? closedTaskSummary(task) : openTask(task)),
16
+ messages: shownMessages,
17
+ operations: liveOperations.map(({ prompt: _prompt, ...op }) => op),
18
+ omitted: {
19
+ closedTaskDetails: closedTasks,
20
+ olderMessages: messages.length - shownMessages.length,
21
+ finishedOperations: operations.length - liveOperations.length,
22
+ hint: "Compact view: closed tasks are summarized, older delivered messages and finished operations are left out. Call team_inspect with taskId for one task in full, or full=true for the whole team."
23
+ }
24
+ };
25
+ }
26
+ function teamTaskToolView(team, taskId) {
27
+ const task = team.tasks.find((t) => t.id === taskId);
28
+ if (!task) return { taskId, error: "Task not visible: it does not exist, is outside your scope, or was archived after it closed." };
29
+ return { task, messages: team.messages.filter((m) => m.taskId === taskId), operations: team.operations.filter((o) => o.taskId === taskId), capacity: team.capacity };
30
+ }
31
+ function openTask(task) {
32
+ return { ...task, attempts: task.attempts.map((a) => a.id === task.currentAttemptId ? a : { id: a.id, botId: a.botId, status: a.status, goalVersion: a.goalVersion }) };
33
+ }
34
+ function closedTaskSummary(task) {
35
+ const accepted = task.attempts.find((a) => a.id === task.currentAttemptId);
36
+ return { id: task.id, parentTaskId: task.parentTaskId, status: task.status, goal: clip(task.goal, CLOSED_GOAL_CHARS), assigneeBotId: task.assigneeBotId, ownerBotId: task.ownerBotId, currentAttemptId: task.currentAttemptId, goalVersion: task.goalVersion, cleanup: task.cleanup, attempts: task.attempts.length, ...accepted?.result ? { result: clip(accepted.result, CLOSED_GOAL_CHARS) } : {}, ...task.closedAt ? { closedAt: task.closedAt } : {} };
37
+ }
38
+ const clip = (text, max) => text.length > max ? `${text.slice(0, max)}\u2026` : text;
39
+ function teamActionReceipt(result, actedTaskId) {
40
+ if (!Array.isArray(result?.team?.tasks)) return result;
41
+ const { team, operation, ...rest } = result;
42
+ const { tasks = [], operations = [], schedules = [] } = team;
43
+ const taskId = typeof rest.taskId === "string" ? rest.taskId : actedTaskId;
44
+ const task = taskId ? tasks.find((t) => t.id === taskId) : void 0;
45
+ const schedule = typeof rest.scheduleId === "string" ? schedules.find((s) => s.id === rest.scheduleId) : void 0;
46
+ const taskOperations = taskId ? operations.filter((o) => o.taskId === taskId && o.status !== "completed") : [];
47
+ return {
48
+ ...rest,
49
+ ...taskId ? { taskId } : {},
50
+ ...task ? { task: taskReceipt(task) } : {},
51
+ ...operation ? { operation: withoutPrompt(operation) } : {},
52
+ ...taskOperations.length ? { taskOperations: taskOperations.map(withoutPrompt) } : {},
53
+ ...schedule ? { schedule } : {},
54
+ team: {
55
+ id: team.id,
56
+ name: team.name,
57
+ version: team.version,
58
+ openTasks: tasks.filter((t) => !closed(t)).length,
59
+ ...team.capacity ? { capacity: team.capacity } : {},
60
+ ...team.idleMembers?.length ? { idleMembers: team.idleMembers } : {},
61
+ ...team.cleanupIssues?.length ? { cleanupIssues: team.cleanupIssues } : {}
62
+ },
63
+ hint: "Receipt only. Call team_inspect for the team view, or team_inspect with taskId for one task in full."
64
+ };
65
+ }
66
+ function taskReceipt(task) {
67
+ const current = task.attempts.find((a) => a.id === task.currentAttemptId);
68
+ return { id: task.id, parentTaskId: task.parentTaskId, status: task.status, goal: clip(task.goal, CLOSED_GOAL_CHARS), assigneeBotId: task.assigneeBotId, ownerBotId: task.ownerBotId, currentAttemptId: task.currentAttemptId, goalVersion: task.goalVersion, cleanup: task.cleanup, attempts: task.attempts.length, ...current ? { currentAttempt: { id: current.id, botId: current.botId, status: current.status, goalVersion: current.goalVersion, generation: current.generation } } : {} };
69
+ }
70
+ const withoutPrompt = ({ prompt: _prompt, ...op }) => op;
71
+
72
+ const TEAM_TOOL_NAMES = ["team_create", "team_join", "team_inspect", "team_delegate", "team_message", "team_submit", "team_accept", "team_return", "team_cancel", "team_handoff", "team_schedule_create", "team_schedule_pause", "team_schedule_resume", "team_schedule_cancel"];
73
+ const id = z.string().min(1).max(128);
74
+ const text = z.string().min(1).max(32e3);
75
+ const requestId = id.describe("Unique operation ID. Reuse the same ID and arguments after an uncertain response.");
76
+ function registerTeamsTools(server, sessionId, client = createTeamsClient(sessionId)) {
77
+ const register = (name, description, inputSchema, execute) => {
78
+ server.registerTool(name, { description, inputSchema, annotations: { readOnlyHint: name === "team_inspect", idempotentHint: true, openWorldHint: false, destructiveHint: ["team_cancel", "team_handoff", "team_return", "team_schedule_cancel"].includes(name) } }, async (args) => {
79
+ try {
80
+ return { content: [{ type: "text", text: JSON.stringify(await execute(args)) }], isError: false };
81
+ } catch (error) {
82
+ return { content: [{ type: "text", text: error instanceof Error ? error.message : "Teams operation failed" }], isError: true };
83
+ }
84
+ });
85
+ };
86
+ register(
87
+ "team_create",
88
+ "Create an official Very Happy team and join this session as its root bot. Does not grant access outside this account. The team joins this session's project, or a new project with the team's name; its members share that project's context.",
89
+ { name: id, machineId: id.optional(), requestId, projectId: id.optional().describe("Existing project to put the team in"), noProject: z.boolean().optional().describe("Create the team without a project") },
90
+ (args) => client.initialize(args)
91
+ );
92
+ register(
93
+ "team_join",
94
+ "Join an existing team as a root bot using this session owner\u2019s account. Scoped workers cannot elevate their role.",
95
+ { teamId: id, name: id, botId: id.optional().describe("Existing root bot to reconnect; preserves its identity"), requestId },
96
+ (args) => client.initialize(args)
97
+ );
98
+ const compact = (result) => result?.team && !result.team.omitted ? { ...result, team: teamToolView(result.team) } : result;
99
+ register(
100
+ "team_inspect",
101
+ "Read your visible team tasks, attempts and messages. Inspect before decisions; submission is not acceptance. Returns a compact view (closed tasks summarized, recent messages, unfinished operations, capacity); pass taskId for one task in full, or full=true for the whole team.",
102
+ { taskId: id.optional().describe("Return this task in full: all attempts, messages and operations"), full: z.boolean().optional().describe("Return the whole team view (can be very large)") },
103
+ async (args) => {
104
+ const result = await client.inspect();
105
+ return args.full ? result : args.taskId ? teamTaskToolView(result.team, args.taskId) : compact(result);
106
+ }
107
+ );
108
+ const action = (name, description, fields) => register(
109
+ `team_${name}`,
110
+ description,
111
+ { requestId, ...fields },
112
+ async ({ requestId: key, ...args }) => teamActionReceipt(await client.action({ type: name, ...args, ...name === "delegate" && args.directory === void 0 ? { directory: process.cwd() } : {} }, key), args.taskId)
113
+ );
114
+ action("delegate", "Delegate a goal with acceptance criteria. Use parentTaskId for subdelegation. Existing assigneeBotId or a managed worker may execute it.", {
115
+ goal: text,
116
+ acceptance: z.array(text).min(1).max(32),
117
+ parentTaskId: id.optional(),
118
+ assigneeBotId: id.optional(),
119
+ botName: id.optional(),
120
+ directory: z.string().min(1).optional(),
121
+ assistant: z.enum(["claude", "codex", "pi-acp"]).optional(),
122
+ model: z.string().trim().min(1).max(256).optional()
123
+ });
124
+ action("message", "Send a persistent task-related message. Delivery does not mean the model has read or acted on it.", { taskId: id, body: text, recipientBotId: id.optional() });
125
+ action("submit", "Submit evidence for your current attempt and goal version. The owner still has to accept it.", { taskId: id, attemptId: id, goalVersion: z.number().int().positive(), result: text });
126
+ const current = { attemptId: id, goalVersion: z.number().int().positive() };
127
+ action("accept", "Accept a task you own after checking its evidence. Resource cleanup is tracked separately.", { taskId: id, ...current });
128
+ action("return", "Return your task for further work with a concrete reason.", { taskId: id, reason: text, ...current });
129
+ action("cancel", "Cancel an owned task and its dependent work. Cleanup may remain pending.", { taskId: id, reason: text, ...current });
130
+ action("handoff", "Move an owned task to another bot; prior execution authority is superseded.", { taskId: id, assigneeBotId: id, ...current });
131
+ register("team_schedule_create", "Create a persistent one-time or fixed-interval reminder for your own root bot. Delivery wakes the bound session; it does not prove task completion. Use epoch milliseconds, and inspect before retrying.", { requestId, name: id, botId: id, body: text, runAt: z.number().int().nonnegative(), intervalMs: z.number().int().min(6e4).optional() }, async ({ requestId: key, ...args }) => teamActionReceipt(await client.action({ type: "schedule-create", ...args }, key)));
132
+ for (const operation of ["pause", "resume", "cancel"]) {
133
+ register(`team_schedule_${operation}`, `${operation} your root bot\u2019s schedule using its current version from team_inspect. An already in-flight message may still arrive.`, { requestId, scheduleId: id, version: z.number().int().positive() }, async ({ requestId: key, ...args }) => teamActionReceipt(await client.action({ type: `schedule-${operation}`, ...args }, key)));
134
+ }
135
+ }
136
+
137
+ export { TEAM_TOOL_NAMES as T, registerTeamsTools as r };
@@ -0,0 +1,140 @@
1
+ 'use strict';
2
+
3
+ var z = require('zod');
4
+ var client = require('./client-CCy72Phz.cjs');
5
+
6
+ const CLOSED_GOAL_CHARS = 200;
7
+ const closed = (task) => task.status === "done" || task.status === "cancelled";
8
+ function teamToolView(team) {
9
+ const { tasks = [], messages = [], operations = [], bots = [], ...rest } = team;
10
+ const recent = new Set(messages.filter((m) => m.deliveredAt !== null || m.cancelledAt !== void 0).slice(-20).map((m) => m.id));
11
+ const shownMessages = messages.filter((m) => recent.has(m.id) || m.deliveredAt === null && m.cancelledAt === void 0);
12
+ const liveOperations = operations.filter((o) => o.status !== "completed" && o.error !== "task_closed_before_spawn");
13
+ const closedTasks = tasks.filter(closed).length;
14
+ return {
15
+ ...rest,
16
+ bots: bots.map(({ previousSessionIds: _previous, ...bot }) => bot),
17
+ tasks: tasks.map((task) => closed(task) ? closedTaskSummary(task) : openTask(task)),
18
+ messages: shownMessages,
19
+ operations: liveOperations.map(({ prompt: _prompt, ...op }) => op),
20
+ omitted: {
21
+ closedTaskDetails: closedTasks,
22
+ olderMessages: messages.length - shownMessages.length,
23
+ finishedOperations: operations.length - liveOperations.length,
24
+ hint: "Compact view: closed tasks are summarized, older delivered messages and finished operations are left out. Call team_inspect with taskId for one task in full, or full=true for the whole team."
25
+ }
26
+ };
27
+ }
28
+ function teamTaskToolView(team, taskId) {
29
+ const task = team.tasks.find((t) => t.id === taskId);
30
+ if (!task) return { taskId, error: "Task not visible: it does not exist, is outside your scope, or was archived after it closed." };
31
+ return { task, messages: team.messages.filter((m) => m.taskId === taskId), operations: team.operations.filter((o) => o.taskId === taskId), capacity: team.capacity };
32
+ }
33
+ function openTask(task) {
34
+ return { ...task, attempts: task.attempts.map((a) => a.id === task.currentAttemptId ? a : { id: a.id, botId: a.botId, status: a.status, goalVersion: a.goalVersion }) };
35
+ }
36
+ function closedTaskSummary(task) {
37
+ const accepted = task.attempts.find((a) => a.id === task.currentAttemptId);
38
+ return { id: task.id, parentTaskId: task.parentTaskId, status: task.status, goal: clip(task.goal, CLOSED_GOAL_CHARS), assigneeBotId: task.assigneeBotId, ownerBotId: task.ownerBotId, currentAttemptId: task.currentAttemptId, goalVersion: task.goalVersion, cleanup: task.cleanup, attempts: task.attempts.length, ...accepted?.result ? { result: clip(accepted.result, CLOSED_GOAL_CHARS) } : {}, ...task.closedAt ? { closedAt: task.closedAt } : {} };
39
+ }
40
+ const clip = (text, max) => text.length > max ? `${text.slice(0, max)}\u2026` : text;
41
+ function teamActionReceipt(result, actedTaskId) {
42
+ if (!Array.isArray(result?.team?.tasks)) return result;
43
+ const { team, operation, ...rest } = result;
44
+ const { tasks = [], operations = [], schedules = [] } = team;
45
+ const taskId = typeof rest.taskId === "string" ? rest.taskId : actedTaskId;
46
+ const task = taskId ? tasks.find((t) => t.id === taskId) : void 0;
47
+ const schedule = typeof rest.scheduleId === "string" ? schedules.find((s) => s.id === rest.scheduleId) : void 0;
48
+ const taskOperations = taskId ? operations.filter((o) => o.taskId === taskId && o.status !== "completed") : [];
49
+ return {
50
+ ...rest,
51
+ ...taskId ? { taskId } : {},
52
+ ...task ? { task: taskReceipt(task) } : {},
53
+ ...operation ? { operation: withoutPrompt(operation) } : {},
54
+ ...taskOperations.length ? { taskOperations: taskOperations.map(withoutPrompt) } : {},
55
+ ...schedule ? { schedule } : {},
56
+ team: {
57
+ id: team.id,
58
+ name: team.name,
59
+ version: team.version,
60
+ openTasks: tasks.filter((t) => !closed(t)).length,
61
+ ...team.capacity ? { capacity: team.capacity } : {},
62
+ ...team.idleMembers?.length ? { idleMembers: team.idleMembers } : {},
63
+ ...team.cleanupIssues?.length ? { cleanupIssues: team.cleanupIssues } : {}
64
+ },
65
+ hint: "Receipt only. Call team_inspect for the team view, or team_inspect with taskId for one task in full."
66
+ };
67
+ }
68
+ function taskReceipt(task) {
69
+ const current = task.attempts.find((a) => a.id === task.currentAttemptId);
70
+ return { id: task.id, parentTaskId: task.parentTaskId, status: task.status, goal: clip(task.goal, CLOSED_GOAL_CHARS), assigneeBotId: task.assigneeBotId, ownerBotId: task.ownerBotId, currentAttemptId: task.currentAttemptId, goalVersion: task.goalVersion, cleanup: task.cleanup, attempts: task.attempts.length, ...current ? { currentAttempt: { id: current.id, botId: current.botId, status: current.status, goalVersion: current.goalVersion, generation: current.generation } } : {} };
71
+ }
72
+ const withoutPrompt = ({ prompt: _prompt, ...op }) => op;
73
+
74
+ const TEAM_TOOL_NAMES = ["team_create", "team_join", "team_inspect", "team_delegate", "team_message", "team_submit", "team_accept", "team_return", "team_cancel", "team_handoff", "team_schedule_create", "team_schedule_pause", "team_schedule_resume", "team_schedule_cancel"];
75
+ const id = z.z.string().min(1).max(128);
76
+ const text = z.z.string().min(1).max(32e3);
77
+ const requestId = id.describe("Unique operation ID. Reuse the same ID and arguments after an uncertain response.");
78
+ function registerTeamsTools(server, sessionId, client$1 = client.createTeamsClient(sessionId)) {
79
+ const register = (name, description, inputSchema, execute) => {
80
+ server.registerTool(name, { description, inputSchema, annotations: { readOnlyHint: name === "team_inspect", idempotentHint: true, openWorldHint: false, destructiveHint: ["team_cancel", "team_handoff", "team_return", "team_schedule_cancel"].includes(name) } }, async (args) => {
81
+ try {
82
+ return { content: [{ type: "text", text: JSON.stringify(await execute(args)) }], isError: false };
83
+ } catch (error) {
84
+ return { content: [{ type: "text", text: error instanceof Error ? error.message : "Teams operation failed" }], isError: true };
85
+ }
86
+ });
87
+ };
88
+ register(
89
+ "team_create",
90
+ "Create an official Very Happy team and join this session as its root bot. Does not grant access outside this account. The team joins this session's project, or a new project with the team's name; its members share that project's context.",
91
+ { name: id, machineId: id.optional(), requestId, projectId: id.optional().describe("Existing project to put the team in"), noProject: z.z.boolean().optional().describe("Create the team without a project") },
92
+ (args) => client$1.initialize(args)
93
+ );
94
+ register(
95
+ "team_join",
96
+ "Join an existing team as a root bot using this session owner\u2019s account. Scoped workers cannot elevate their role.",
97
+ { teamId: id, name: id, botId: id.optional().describe("Existing root bot to reconnect; preserves its identity"), requestId },
98
+ (args) => client$1.initialize(args)
99
+ );
100
+ const compact = (result) => result?.team && !result.team.omitted ? { ...result, team: teamToolView(result.team) } : result;
101
+ register(
102
+ "team_inspect",
103
+ "Read your visible team tasks, attempts and messages. Inspect before decisions; submission is not acceptance. Returns a compact view (closed tasks summarized, recent messages, unfinished operations, capacity); pass taskId for one task in full, or full=true for the whole team.",
104
+ { taskId: id.optional().describe("Return this task in full: all attempts, messages and operations"), full: z.z.boolean().optional().describe("Return the whole team view (can be very large)") },
105
+ async (args) => {
106
+ const result = await client$1.inspect();
107
+ return args.full ? result : args.taskId ? teamTaskToolView(result.team, args.taskId) : compact(result);
108
+ }
109
+ );
110
+ const action = (name, description, fields) => register(
111
+ `team_${name}`,
112
+ description,
113
+ { requestId, ...fields },
114
+ async ({ requestId: key, ...args }) => teamActionReceipt(await client$1.action({ type: name, ...args, ...name === "delegate" && args.directory === void 0 ? { directory: process.cwd() } : {} }, key), args.taskId)
115
+ );
116
+ action("delegate", "Delegate a goal with acceptance criteria. Use parentTaskId for subdelegation. Existing assigneeBotId or a managed worker may execute it.", {
117
+ goal: text,
118
+ acceptance: z.z.array(text).min(1).max(32),
119
+ parentTaskId: id.optional(),
120
+ assigneeBotId: id.optional(),
121
+ botName: id.optional(),
122
+ directory: z.z.string().min(1).optional(),
123
+ assistant: z.z.enum(["claude", "codex", "pi-acp"]).optional(),
124
+ model: z.z.string().trim().min(1).max(256).optional()
125
+ });
126
+ action("message", "Send a persistent task-related message. Delivery does not mean the model has read or acted on it.", { taskId: id, body: text, recipientBotId: id.optional() });
127
+ action("submit", "Submit evidence for your current attempt and goal version. The owner still has to accept it.", { taskId: id, attemptId: id, goalVersion: z.z.number().int().positive(), result: text });
128
+ const current = { attemptId: id, goalVersion: z.z.number().int().positive() };
129
+ action("accept", "Accept a task you own after checking its evidence. Resource cleanup is tracked separately.", { taskId: id, ...current });
130
+ action("return", "Return your task for further work with a concrete reason.", { taskId: id, reason: text, ...current });
131
+ action("cancel", "Cancel an owned task and its dependent work. Cleanup may remain pending.", { taskId: id, reason: text, ...current });
132
+ action("handoff", "Move an owned task to another bot; prior execution authority is superseded.", { taskId: id, assigneeBotId: id, ...current });
133
+ register("team_schedule_create", "Create a persistent one-time or fixed-interval reminder for your own root bot. Delivery wakes the bound session; it does not prove task completion. Use epoch milliseconds, and inspect before retrying.", { requestId, name: id, botId: id, body: text, runAt: z.z.number().int().nonnegative(), intervalMs: z.z.number().int().min(6e4).optional() }, async ({ requestId: key, ...args }) => teamActionReceipt(await client$1.action({ type: "schedule-create", ...args }, key)));
134
+ for (const operation of ["pause", "resume", "cancel"]) {
135
+ register(`team_schedule_${operation}`, `${operation} your root bot\u2019s schedule using its current version from team_inspect. An already in-flight message may still arrive.`, { requestId, scheduleId: id, version: z.z.number().int().positive() }, async ({ requestId: key, ...args }) => teamActionReceipt(await client$1.action({ type: `schedule-${operation}`, ...args }, key)));
136
+ }
137
+ }
138
+
139
+ exports.TEAM_TOOL_NAMES = TEAM_TOOL_NAMES;
140
+ exports.registerTeamsTools = registerTeamsTools;
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-L0pLBOLK.cjs');
3
+ var logger = require('./logger-BILSzq2s.cjs');
4
4
  var require$$0 = require('fs');
5
5
  var child_process = require('child_process');
6
6
  require('chalk');
7
7
  require('node:util');
8
- require('./configuration-CI0GWwaT.cjs');
8
+ require('./configuration-CAfdO4IC.cjs');
9
9
  require('node:fs');
10
10
  require('node:os');
11
11
  require('node:path');
12
- require('./package-BuATIMpK.cjs');
12
+ require('./package-Bbfq2KR7.cjs');
13
13
  require('node:fs/promises');
14
14
 
15
15
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,13 +1,13 @@
1
- import { l as logger } from './logger-CpaeM90D.mjs';
1
+ import { l as logger } from './logger-SAU4uSs4.mjs';
2
2
  import { existsSync, unlinkSync } from 'fs';
3
3
  import { execSync } from 'child_process';
4
4
  import 'chalk';
5
5
  import 'node:util';
6
- import './configuration-DbCHeEeP.mjs';
6
+ import './configuration-8EAa2X9P.mjs';
7
7
  import 'node:fs';
8
8
  import 'node:os';
9
9
  import 'node:path';
10
- import './package-DagIeOhi.mjs';
10
+ import './package-BMBwnCn3.mjs';
11
11
  import 'node:fs/promises';
12
12
 
13
13
  const PLIST_LABEL = "com.happy-cli.daemon";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.186",
3
+ "version": "0.2.187",
4
4
  "description": "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.",
5
5
  "author": "Kirill Dubovitskiy",
6
6
  "contributors": [
@@ -95,11 +95,11 @@
95
95
  "@types/http-proxy": "^1.17.17",
96
96
  "@types/react": "^19.2.7",
97
97
  "@types/tmp": "^0.2.6",
98
- "axios": "^1.13.2",
98
+ "axios": "^1.20.0",
99
99
  "chalk": "^5.6.2",
100
100
  "cross-spawn": "^7.0.6",
101
101
  "expo-server-sdk": "^3.15.0",
102
- "fastify": "5.8.5",
102
+ "fastify": "5.12.7",
103
103
  "fastify-type-provider-zod": "^6.1.0",
104
104
  "http-proxy": "^1.18.1",
105
105
  "http-proxy-middleware": "^3.0.7",
@@ -114,15 +114,15 @@
114
114
  "tmp": "^0.2.7",
115
115
  "tweetnacl": "^1.0.3",
116
116
  "ws": "^8.21.3",
117
- "zod": "^4.0.0"
117
+ "zod": "^4.6.7"
118
118
  },
119
119
  "optionalDependencies": {
120
- "very-happy-tools-arm64-darwin": "0.2.186",
121
- "very-happy-tools-x64-darwin": "0.2.186",
122
- "very-happy-tools-arm64-linux": "0.2.186",
123
- "very-happy-tools-x64-linux": "0.2.186",
124
- "very-happy-tools-arm64-win32": "0.2.186",
125
- "very-happy-tools-x64-win32": "0.2.186"
120
+ "very-happy-tools-arm64-darwin": "0.2.187",
121
+ "very-happy-tools-x64-darwin": "0.2.187",
122
+ "very-happy-tools-arm64-linux": "0.2.187",
123
+ "very-happy-tools-x64-linux": "0.2.187",
124
+ "very-happy-tools-arm64-win32": "0.2.187",
125
+ "very-happy-tools-x64-win32": "0.2.187"
126
126
  },
127
127
  "devDependencies": {
128
128
  "@slopus/happy-wire": "workspace:*",
@@ -1,86 +0,0 @@
1
- import { p as packageJson } from './package-DagIeOhi.mjs';
2
-
3
- const LAZY_MODULES = [
4
- // Entry
5
- ["main", () => import('./main-pkH_VRP-.mjs')],
6
- ["selfCheck", () => Promise.resolve().then(function () { return selfCheck; })],
7
- // Subcommands (main.ts)
8
- ["api/api", () => import('./api-DUFy21Nf.mjs').then(function (n) { return n.e; })],
9
- ["claude/claudeCliPath", () => import('./claudeCliPath-BqkaH2oR.mjs')],
10
- ["claude/runClaude", () => import('./runClaude-bxwea9mX.mjs')],
11
- ["commands/agentHome", () => import('./agentHome-CawmLuWV.mjs')],
12
- ["commands/auth", () => import('./auth-B-CqTcVh.mjs')],
13
- ["commands/auto", () => import('./auto-D4KRQIBu.mjs')],
14
- ["commands/codexCommand", () => import('./codexCommand-D3_i93Rm.mjs')],
15
- ["commands/connect", () => import('./connect-BuwVpjkZ.mjs')],
16
- ["commands/installPiTools", () => import('./installPiTools-B_CdM5_2.mjs')],
17
- ["commands/installTerminalHooks", () => import('./installTerminalHooks-By7gBMEF.mjs')],
18
- ["commands/mcp", () => import('./mcp-BwoAhEnN.mjs')],
19
- ["commands/panels", () => import('./panels-C3dUoUbA.mjs')],
20
- ["commands/piTerminal", () => import('./piTerminal-BvvcgVoW.mjs')],
21
- ["commands/sandbox", () => import('./sandbox-Dqs_T8Jw.mjs')],
22
- ["commands/send", () => import('./send-4q066vij.mjs')],
23
- ["commands/server", () => import('./server-DN6TvjhP.mjs')],
24
- ["commands/sessions", () => import('./sessions-iItaUQAF.mjs')],
25
- ["commands/sessionProvider", () => import('./sessionProvider-C6MHJZ9Z.mjs')],
26
- ["commands/spawn", () => import('./spawn-CoYfACsc.mjs')],
27
- ["commands/teams", () => import('./teams-B2-KPjRg.mjs')],
28
- ["commands/todo", () => import('./todo-C7--CBge.mjs')],
29
- ["daemon/doctor", () => import('./doctor-BPkYWSuq.mjs')],
30
- ["daemon/install", () => import('./install-C5XCDwgD.mjs')],
31
- ["daemon/run", () => import('./run-CmA3cPD_.mjs')],
32
- ["daemon/uninstall", () => import('./uninstall-Bjwl9bqK.mjs')],
33
- ["resume/handleResumeCommand", () => import('./handleResumeCommand-DW_MRgtz.mjs')],
34
- ["ui/doctor", () => import('./doctor-Ymj096qP.mjs').then(function (n) { return n.d; })],
35
- ["agent/acp", () => import('./index-WW17yjQO.mjs')],
36
- ["gemini/runGemini", () => import('./runGemini-Dq2iv4UF.mjs')],
37
- ["gemini/utils/config", () => import('./config-D3OBduhj.mjs')],
38
- ["openclaw/runOpenClaw", () => import('./runOpenClaw-C1NB1aLx.mjs')],
39
- ["persistence", () => import('./persistence-FgtDuVAP.mjs').then(function (n) { return n.F; })],
40
- // Deferred halves of the runners and clients
41
- ["api/apiMachine", () => import('./apiMachine-B0sBCHNZ.mjs')],
42
- ["claude/runClaudeDeps", () => import('./runClaudeDeps-DoaYM017.mjs')],
43
- ["claude/claudeLocal", () => import('./claudeLocal-C6wNx9qH.mjs')],
44
- ["claude/claudeLocalLauncher", () => import('./claudeLocalLauncher-DdPfufcS.mjs')],
45
- ["claude/sdk", () => import('./index-CmlAXizv.mjs')],
46
- ["assistant/bootstrap", () => import('./bootstrap-MFmMruyB.mjs')],
47
- ["agentHome", () => import('./index-04pYyzsJ.mjs')],
48
- ["ui/ink/RemoteModeDisplay", () => import('./RemoteModeDisplay-D-HewyXg.mjs')],
49
- // External packages imported on demand
50
- ["expo-server-sdk", () => import('expo-server-sdk')],
51
- ["ink", () => import('ink')],
52
- ["react", () => import('react')]
53
- ];
54
-
55
- async function runSelfCheck(modules = LAZY_MODULES) {
56
- const failures = [];
57
- for (const [name, load] of modules) {
58
- try {
59
- await load();
60
- } catch (error) {
61
- failures.push({ name, error: error instanceof Error ? error.message : String(error) });
62
- }
63
- }
64
- return failures;
65
- }
66
- async function selfCheckMain(opts = {}) {
67
- const started = Date.now();
68
- const failures = await runSelfCheck();
69
- if (failures.length > 0) {
70
- for (const failure of failures) {
71
- console.error(`very-happy: failed to load ${failure.name}: ${failure.error}`);
72
- }
73
- return 1;
74
- }
75
- if (opts.verbose) console.log(`self-check: ${LAZY_MODULES.length} modules loaded in ${Date.now() - started}ms`);
76
- console.log(`very-happy version: ${packageJson.version}`);
77
- return 0;
78
- }
79
-
80
- var selfCheck = /*#__PURE__*/Object.freeze({
81
- __proto__: null,
82
- runSelfCheck: runSelfCheck,
83
- selfCheckMain: selfCheckMain
84
- });
85
-
86
- export { runSelfCheck, selfCheckMain };
@@ -1,18 +0,0 @@
1
- function ensureLocalProxyBypass(env) {
2
- const existing = env.NO_PROXY ?? env.no_proxy ?? "";
3
- const entries = existing.split(",").map((s) => s.trim()).filter(Boolean);
4
- const toAdd = ["127.0.0.1", "localhost", "::1"].filter((h) => !entries.includes(h));
5
- if (toAdd.length === 0) return;
6
- const updated = existing ? `${existing},${toAdd.join(",")}` : toAdd.join(",");
7
- env.NO_PROXY = updated;
8
- env.no_proxy = updated;
9
- }
10
-
11
- const SMALL_FAST_MODEL = "claude-haiku-4-5-20251001";
12
- function pinSmallFastModel(env) {
13
- if (!env.ANTHROPIC_SMALL_FAST_MODEL) {
14
- env.ANTHROPIC_SMALL_FAST_MODEL = SMALL_FAST_MODEL;
15
- }
16
- }
17
-
18
- export { ensureLocalProxyBypass as e, pinSmallFastModel as p };
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- function ensureLocalProxyBypass(env) {
4
- const existing = env.NO_PROXY ?? env.no_proxy ?? "";
5
- const entries = existing.split(",").map((s) => s.trim()).filter(Boolean);
6
- const toAdd = ["127.0.0.1", "localhost", "::1"].filter((h) => !entries.includes(h));
7
- if (toAdd.length === 0) return;
8
- const updated = existing ? `${existing},${toAdd.join(",")}` : toAdd.join(",");
9
- env.NO_PROXY = updated;
10
- env.no_proxy = updated;
11
- }
12
-
13
- const SMALL_FAST_MODEL = "claude-haiku-4-5-20251001";
14
- function pinSmallFastModel(env) {
15
- if (!env.ANTHROPIC_SMALL_FAST_MODEL) {
16
- env.ANTHROPIC_SMALL_FAST_MODEL = SMALL_FAST_MODEL;
17
- }
18
- }
19
-
20
- exports.ensureLocalProxyBypass = ensureLocalProxyBypass;
21
- exports.pinSmallFastModel = pinSmallFastModel;