very-happy-cli 0.2.201 → 0.2.203

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 (192) hide show
  1. package/dist/{AcpBackend-BNinFMHZ.mjs → AcpBackend-CAMuhS0Z.mjs} +3 -3
  2. package/dist/{AcpBackend-CMFlng3C.cjs → AcpBackend-DReFgpYD.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CPgoICjp.cjs → AcpSessionManager-BZKM-sCt.cjs} +1 -1
  4. package/dist/{AcpSessionManager-Dg6gKavf.mjs → AcpSessionManager-CJOxMFCF.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-c-NaRa_E.cjs → BasePermissionHandler-BBR9Gkob.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-DwcfWUjr.mjs → BasePermissionHandler-BgX73mQ5.mjs} +1 -1
  7. package/dist/{account-D23SGj7p.cjs → account-41PkJ9nx.cjs} +5 -5
  8. package/dist/{account-pzgzyIXW.mjs → account-hy0rztXY.mjs} +5 -5
  9. package/dist/{acpSessionResume-urFpnGsk.mjs → acpSessionResume-5El4xksf.mjs} +1 -1
  10. package/dist/{acpSessionResume-DklOhwir.cjs → acpSessionResume-DmOPXKpC.cjs} +1 -1
  11. package/dist/{agentHome-BTwMaYw1.cjs → agentHome-BXaVMqHX.cjs} +4 -4
  12. package/dist/{agentHome-DyrLqr8b.mjs → agentHome-DUxArmak.mjs} +4 -4
  13. package/dist/{api-KVVs-GkM.cjs → api-ChhFBuB0.cjs} +9 -9
  14. package/dist/{api-1CD4oRSW.mjs → api-D8ZDxBWw.mjs} +9 -9
  15. package/dist/{apiMachine-1sd5IVIB.cjs → apiMachine-MPwddFXq.cjs} +23 -13
  16. package/dist/{apiMachine-BDVE6MOn.mjs → apiMachine-qav2pnk5.mjs} +23 -13
  17. package/dist/{attachmentContent-CeF54XeO.mjs → attachmentContent-BfSQxccA.mjs} +2 -2
  18. package/dist/{attachmentContent-f3BbOKqz.cjs → attachmentContent-f5gwnv9J.cjs} +2 -2
  19. package/dist/{auth-CV2H-smf.mjs → auth-BxNuFv_0.mjs} +8 -8
  20. package/dist/{auth-eielZ6Sc.cjs → auth-DkPAHXLj.cjs} +8 -8
  21. package/dist/{auth-CXCX-iJ-.cjs → auth-thi2T_T8.cjs} +5 -5
  22. package/dist/{auth-WCd2S1zA.mjs → auth-xW7SDE_7.mjs} +5 -5
  23. package/dist/{auto-49cRCADN.cjs → auto-BiRlQ4tm.cjs} +14 -14
  24. package/dist/{auto-BsCE_UHT.mjs → auto-DmXTwayU.mjs} +14 -14
  25. package/dist/{bootstrap-N1PY4ypX.cjs → bootstrap-EGhaCmXy.cjs} +2 -2
  26. package/dist/{bootstrap-D_1MskAl.mjs → bootstrap-pGaFGbWO.mjs} +2 -2
  27. package/dist/{browser-DL3QIQLS.mjs → browser-BYSYzXvP.mjs} +1 -1
  28. package/dist/{browser-B0SEB6r3.cjs → browser-DSxpOnPb.cjs} +1 -1
  29. package/dist/{claudeLocal-Ix69XJ1t.cjs → claudeLocal-ClqHmkk6.cjs} +4 -4
  30. package/dist/{claudeLocal-DRMWkdCC.mjs → claudeLocal-bDarWqaU.mjs} +4 -4
  31. package/dist/{claudeLocalLauncher-rDojqNoa.cjs → claudeLocalLauncher-Bxi0_eW9.cjs} +9 -9
  32. package/dist/{claudeLocalLauncher-D4tU6R5n.mjs → claudeLocalLauncher-Ccpj2KgW.mjs} +9 -9
  33. package/dist/{claudeSessionFork-H0ZVQALg.mjs → claudeSessionFork-Cize0Y2T.mjs} +1 -1
  34. package/dist/{claudeSessionFork-C_X08LFh.cjs → claudeSessionFork-nyNFjgaf.cjs} +1 -1
  35. package/dist/{client-P1VkI76z.cjs → client-6Y6O72Uq.cjs} +2 -2
  36. package/dist/{client-DGqnrSg4.cjs → client-CMKgB-76.cjs} +4 -4
  37. package/dist/{client-CMUlpYcy.mjs → client-CX8kRedW.mjs} +2 -2
  38. package/dist/{client-BoymtYLP.cjs → client-Cddb1dhi.cjs} +2 -2
  39. package/dist/{client-4YWjreN3.mjs → client-CgMVIP7v.mjs} +2 -2
  40. package/dist/{client-BgInTvr6.mjs → client-DO8DNDC3.mjs} +2 -2
  41. package/dist/{client-DI8Rxsbw.cjs → client-DP8FabOE.cjs} +2 -2
  42. package/dist/{client-CK-jvgM1.mjs → client-Wr_BiOon.mjs} +4 -4
  43. package/dist/codex/happyMcpStdioBridge.cjs +17 -17
  44. package/dist/codex/happyMcpStdioBridge.mjs +17 -17
  45. package/dist/{codexAppServerClient-aDrsSyjS.mjs → codexAppServerClient-D-cD2Dfj.mjs} +3 -3
  46. package/dist/{codexAppServerClient-BnMR-DRn.cjs → codexAppServerClient-EzrHWYhX.cjs} +3 -3
  47. package/dist/{codexCommand-C3oEEpOa.cjs → codexCommand-BMcXtvU3.cjs} +42 -42
  48. package/dist/{codexCommand-BCpJzf3q.mjs → codexCommand-D79GnRhB.mjs} +42 -42
  49. package/dist/{codexTermination-DXhw5Pzi.cjs → codexTermination-CF6xiFbb.cjs} +1 -1
  50. package/dist/{codexTermination-B5haG5wJ.mjs → codexTermination-CK1MYJT7.mjs} +1 -1
  51. package/dist/{config-D9wjo4oa.mjs → config-Crn1mNgr.mjs} +3 -3
  52. package/dist/{config-CdGiZZKy.cjs → config-F6zSRyk2.cjs} +3 -3
  53. package/dist/{configuration-LWFmTxty.cjs → configuration-Cl9kOv09.cjs} +1 -1
  54. package/dist/{configuration-DhEqAYzz.mjs → configuration-i9MVy0a5.mjs} +1 -1
  55. package/dist/{connect-CY_EMXQs.mjs → connect-CiA13Xm4.mjs} +12 -12
  56. package/dist/{connect-BZLD0aVm.cjs → connect-ClklWmnI.cjs} +12 -12
  57. package/dist/{context-BbZ18lX0.cjs → context-BxODP3mG.cjs} +1 -1
  58. package/dist/{context-UzqWaA7f.mjs → context-DvdZsGgl.mjs} +1 -1
  59. package/dist/{controlClient-PaIiDxM6.mjs → controlClient-D6vqMUfi.mjs} +3 -3
  60. package/dist/{controlClient-TVMpETsR.cjs → controlClient-DxCQKfqe.cjs} +3 -3
  61. package/dist/{createSessionMetadata-hGZeo_nR.cjs → createSessionMetadata-B_NZvmhm.cjs} +2 -2
  62. package/dist/{createSessionMetadata-BWb81WZg.mjs → createSessionMetadata-BuAVB-xI.mjs} +2 -2
  63. package/dist/{deterministicJson-Cg3z7uUX.mjs → deterministicJson-B9XrEawW.mjs} +13 -13
  64. package/dist/{deterministicJson-BpDDS7c9.cjs → deterministicJson-kM2OdGZu.cjs} +13 -13
  65. package/dist/{doctor-DOzji0f7.cjs → doctor-DiPRqsqg.cjs} +7 -7
  66. package/dist/{doctor-BanQ3jQg.mjs → doctor-HHS4YegX.mjs} +7 -7
  67. package/dist/{downloadTarget-BCSXmPRE.mjs → downloadTarget-Cd8hx54t.mjs} +6 -6
  68. package/dist/{downloadTarget-BhIAhyEV.cjs → downloadTarget-osB-mGh0.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-BZGBE838.mjs → ensureDaemonRunning-C0iDtuL7.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-DMOCzvQP.cjs → ensureDaemonRunning-CtBvPHVB.cjs} +5 -5
  71. package/dist/{format-CgiY6uup.cjs → format-B5V7ie8N.cjs} +1 -1
  72. package/dist/{format-BxGkJUki.mjs → format-Dc5zMslz.mjs} +1 -1
  73. package/dist/{handleResumeCommand-ChnR-12l.cjs → handleResumeCommand-vcD2qcAM.cjs} +5 -5
  74. package/dist/{handleResumeCommand-BRV-9h0o.mjs → handleResumeCommand-xrOAA1qI.mjs} +5 -5
  75. package/dist/{index-DuOthh8V.cjs → index-AyDwQ6FG.cjs} +39 -39
  76. package/dist/{index-D5abHQNL.mjs → index-B7CXMlrz.mjs} +40 -40
  77. package/dist/{index-C_Y9426m.mjs → index-B7pKBIcn.mjs} +3 -3
  78. package/dist/{index-DnEgpRo4.cjs → index-C_ePuQwB.cjs} +3 -3
  79. package/dist/{index-BuOzDU17.cjs → index-Cl-WkB_6.cjs} +4 -4
  80. package/dist/{index-B7HlUXOX.cjs → index-D0rCXp-e.cjs} +4 -4
  81. package/dist/{index-HJFzeG0B.mjs → index-DIKJMfs2.mjs} +4 -4
  82. package/dist/{index-Do1r62PF.mjs → index-iFVMrlPo.mjs} +4 -4
  83. package/dist/index.cjs +2 -2
  84. package/dist/index.mjs +2 -2
  85. package/dist/{install-CUAUG3u4.cjs → install-BgBgsOlS.cjs} +3 -3
  86. package/dist/{install-BurTXawL.mjs → install-yqS4y1cm.mjs} +3 -3
  87. package/dist/{issue-feEUrjV0.cjs → issue-D7liK6bR.cjs} +7 -7
  88. package/dist/{issue-DpMsnOFm.mjs → issue-aKZd7J55.mjs} +7 -7
  89. package/dist/lib.cjs +11 -11
  90. package/dist/lib.d.cts +3 -0
  91. package/dist/lib.d.mts +3 -0
  92. package/dist/lib.mjs +11 -11
  93. package/dist/{localHappyAgentAuth-kg2RFvOy.mjs → localHappyAgentAuth-B2JJxlE9.mjs} +1 -1
  94. package/dist/{localHappyAgentAuth-DxlQgaer.cjs → localHappyAgentAuth-Dm9obisi.cjs} +1 -1
  95. package/dist/{logger-CFrzcRHD.mjs → logger-BiKmiREe.mjs} +2 -2
  96. package/dist/{logger-Hyhy2boA.cjs → logger-BtWBoP60.cjs} +2 -2
  97. package/dist/{machineMetadata-BLymhM03.cjs → machineMetadata-C0-LyMsb.cjs} +3 -3
  98. package/dist/{machineMetadata-DiStbYik.mjs → machineMetadata-CiyO9wm-.mjs} +3 -3
  99. package/dist/{main-D1rk-68I.mjs → main-BP2TBnp5.mjs} +48 -48
  100. package/dist/{main-7G17Noc3.cjs → main-C7hKf5hG.cjs} +48 -48
  101. package/dist/{mcp-C0DMPeTt.mjs → mcp-Cn4k-PXb.mjs} +14 -14
  102. package/dist/{mcp-DUeAS-D6.cjs → mcp-DO00rr9n.cjs} +14 -14
  103. package/dist/{mirrorProtocol-dRyartIG.mjs → mirrorProtocol-DDtEN49F.mjs} +2 -2
  104. package/dist/{mirrorProtocol-YUoEuIYO.cjs → mirrorProtocol-DwO8QgLM.cjs} +2 -2
  105. package/dist/{package-DxE8PttX.mjs → package-CIW5lwaN.mjs} +7 -7
  106. package/dist/{package-06cGlmeD.cjs → package-Djdgx8nb.cjs} +7 -7
  107. package/dist/{panels-BUqmsRE0.mjs → panels-BpfVEvwF.mjs} +5 -5
  108. package/dist/{panels-D0GHfIJC.cjs → panels-DMLtEOtJ.cjs} +5 -5
  109. package/dist/{peerTools-BiFpxXdf.mjs → peerTools-CQ60fUPp.mjs} +5 -5
  110. package/dist/{peerTools-CTCyRdg2.cjs → peerTools-fYuKq3ev.cjs} +5 -5
  111. package/dist/{persistence-_W9tE-bW.cjs → persistence-BOEZtiKb.cjs} +12 -2
  112. package/dist/{persistence-CF7oV1oH.mjs → persistence-D_zVC4Xz.mjs} +12 -3
  113. package/dist/{piRunnerArgs-Cfc-F-FJ.mjs → piRunnerArgs-DE_YXvS1.mjs} +1 -1
  114. package/dist/{piRunnerArgs-T2cAiaGW.cjs → piRunnerArgs-Dz9P62db.cjs} +1 -1
  115. package/dist/{piRuntime-CzYkZrYV.mjs → piRuntime-8SbpRmNA.mjs} +1 -1
  116. package/dist/{piRuntime-BzECTca4.cjs → piRuntime-Du62fjeU.cjs} +1 -1
  117. package/dist/{piTerminal-WF--dHaC.cjs → piTerminal-CGAw7WDW.cjs} +16 -16
  118. package/dist/{piTerminal-0tOAYsFm.mjs → piTerminal-Cl45kac0.mjs} +16 -16
  119. package/dist/{pushNotifications-DdzTbrA3.cjs → pushNotifications-B19lT5mY.cjs} +2 -2
  120. package/dist/{pushNotifications-CxX10K6n.mjs → pushNotifications-RVpbqrxR.mjs} +2 -2
  121. package/dist/{query-Cwx4pv91.cjs → query-CNWdX2r5.cjs} +1 -1
  122. package/dist/{query-Bkh7d52V.mjs → query-DBRR3TOO.mjs} +1 -1
  123. package/dist/{rateLimitWindows-DdUMUEoy.mjs → rateLimitWindows-DX5y23x_.mjs} +1 -1
  124. package/dist/{rateLimitWindows-DjJjgjt4.cjs → rateLimitWindows-mfdokrkQ.cjs} +1 -1
  125. package/dist/{reconnectGate-DeDhtQJW.cjs → reconnectGate-B8ltzSJD.cjs} +1 -1
  126. package/dist/{reconnectGate-uTLj82tS.mjs → reconnectGate-DSxYUCWy.mjs} +1 -1
  127. package/dist/{registerCommonHandlers-BYrmi-A4.mjs → registerCommonHandlers-CQDRKlkG.mjs} +2 -2
  128. package/dist/{registerCommonHandlers-BrEtSwNk.cjs → registerCommonHandlers-Y2siJGwL.cjs} +2 -2
  129. package/dist/{registerKillSessionHandler-Bp3g11wW.cjs → registerKillSessionHandler-B0pMZOdH.cjs} +5 -5
  130. package/dist/{registerKillSessionHandler-Cuzq6ecP.mjs → registerKillSessionHandler-U4Dxtohy.mjs} +5 -5
  131. package/dist/{registerSideQuestionHandler-ChIbHl_g.cjs → registerSideQuestionHandler--ruKhCdY.cjs} +4 -4
  132. package/dist/{registerSideQuestionHandler-BmEWWaZW.mjs → registerSideQuestionHandler-DM1QqTxf.mjs} +4 -4
  133. package/dist/{remoteSessionClient-DoxfnpnK.cjs → remoteSessionClient-CjINaEs_.cjs} +5 -5
  134. package/dist/{remoteSessionClient-Dj2rV8Az.mjs → remoteSessionClient-T-Raoiy6.mjs} +5 -5
  135. package/dist/{reportProgressTool-DvZhaEiN.cjs → reportProgressTool-DDfL1OY7.cjs} +4 -4
  136. package/dist/{reportProgressTool-qo0QIFNd.mjs → reportProgressTool-Stg0xrjF.mjs} +4 -4
  137. package/dist/{run-BqlWdDTL.cjs → run-BoSVfVCZ.cjs} +196 -45
  138. package/dist/{run-mHeOSOEt.mjs → run-Dq48xBtw.mjs} +196 -45
  139. package/dist/{runClaude-Z4BVFEdC.mjs → runClaude-CJe5atrS.mjs} +20 -20
  140. package/dist/{runClaude-MjIrNrxT.cjs → runClaude-D8ScJdJU.cjs} +20 -20
  141. package/dist/{runClaudeDeps-tPqwAl_m.cjs → runClaudeDeps-4RFRR4cY.cjs} +37 -37
  142. package/dist/{runClaudeDeps-8RXtu0Zc.mjs → runClaudeDeps-CL3goCXG.mjs} +43 -43
  143. package/dist/{runGemini-uc-fViXY.cjs → runGemini-BcbNxgsA.cjs} +34 -34
  144. package/dist/{runGemini-DG3jIxWv.mjs → runGemini-DZv6jPxV.mjs} +34 -34
  145. package/dist/{runOpenClaw-DZtoCmSG.cjs → runOpenClaw-BeSivE0X.cjs} +17 -17
  146. package/dist/{runOpenClaw-C4676Sdl.mjs → runOpenClaw-CRqCoj-_.mjs} +17 -17
  147. package/dist/{sandbox-r29ys6I4.mjs → sandbox-DAvJJZcV.mjs} +4 -4
  148. package/dist/{sandbox-DS7uZ71y.cjs → sandbox-xflHChws.cjs} +4 -4
  149. package/dist/selfCheck-BKOIROoJ.mjs +89 -0
  150. package/dist/{selfCheck-CSZ-wx1W.cjs → selfCheck-DZwdgBg0.cjs} +39 -39
  151. package/dist/{send-BGApHm-z.mjs → send-Co_l_Nmg.mjs} +8 -8
  152. package/dist/{send-CrmLy9lW.cjs → send-ConAuYqL.cjs} +8 -8
  153. package/dist/{server-hutEAAn1.mjs → server-D1Qrmxl7.mjs} +4 -4
  154. package/dist/{server-CjwXsTKP.cjs → server-by6kezmM.cjs} +6 -6
  155. package/dist/{sessionLock-Dj9_lShU.mjs → sessionLock-DFrwAnwR.mjs} +3 -3
  156. package/dist/{sessionLock-unMOEniJ.cjs → sessionLock-Db_uQcUP.cjs} +3 -3
  157. package/dist/{sessionOps-BmhqmPPd.mjs → sessionOps-C7nps7qG.mjs} +4 -4
  158. package/dist/{sessionOps-SxZr9veq.cjs → sessionOps-CptDjoZi.cjs} +4 -4
  159. package/dist/{sessionProvider-CPlvR0nT.mjs → sessionProvider-BaJq1AnY.mjs} +5 -5
  160. package/dist/{sessionProvider-DLlqS4y6.cjs → sessionProvider-D9nsAE14.cjs} +5 -5
  161. package/dist/{sessionScanner-DvVZpLHG.mjs → sessionScanner-BOb33NVJ.mjs} +3 -3
  162. package/dist/{sessionScanner-B7nZ1i40.cjs → sessionScanner-C6OVO0Ne.cjs} +3 -3
  163. package/dist/{sessions-BIYm43CM.mjs → sessions-GCql_3Dl.mjs} +10 -10
  164. package/dist/{sessions-CQQW7u6X.cjs → sessions-qVHDXJa6.cjs} +10 -10
  165. package/dist/{setupOfflineReconnection-D7WJTAi_.cjs → setupOfflineReconnection-B8QKqc9a.cjs} +2 -2
  166. package/dist/{setupOfflineReconnection-BELrtMGG.mjs → setupOfflineReconnection-lu0YbS7m.mjs} +2 -2
  167. package/dist/{spawn-DnPu7h2o.mjs → spawn-C9NSlg99.mjs} +12 -12
  168. package/dist/{spawn-CuWcPkkN.cjs → spawn-tL-724RS.cjs} +12 -12
  169. package/dist/{spawnHappyCLI-CI7Ax4mF.cjs → spawnHappyCLI-D7EO8s4E.cjs} +1 -1
  170. package/dist/{spawnHappyCLI-D6OcgFDR.mjs → spawnHappyCLI-jXUKLUT5.mjs} +1 -1
  171. package/dist/{startFileWatcher-DBW14aP2.cjs → startFileWatcher-6NpLGxg5.cjs} +1 -1
  172. package/dist/{startFileWatcher-BiWGhlGW.mjs → startFileWatcher-C7eFs4hA.mjs} +1 -1
  173. package/dist/{startupSessionCreate-DFl54ozj.cjs → startupSessionCreate-C5wdvraY.cjs} +3 -3
  174. package/dist/{startupSessionCreate-DbBpGQo9.mjs → startupSessionCreate-D3ph1DtL.mjs} +3 -3
  175. package/dist/{sync-CcBrziWp.mjs → sync-BIXH8ijr.mjs} +1 -1
  176. package/dist/{sync-C764ZzE6.cjs → sync-ni64k2OI.cjs} +1 -1
  177. package/dist/{systemPrompt-9i7bQypR.mjs → systemPrompt-B_vnlIr1.mjs} +1 -1
  178. package/dist/{systemPrompt-Xy3Dfj1l.cjs → systemPrompt-DuoULaqr.cjs} +1 -1
  179. package/dist/{teams-BAWOVbdF.mjs → teams-CsR_8p3Q.mjs} +6 -6
  180. package/dist/{teams-VlmzLDSs.cjs → teams-DLfcbOMh.cjs} +6 -6
  181. package/dist/{time-CDBZWYDb.cjs → time-BMCY7zJL.cjs} +1 -1
  182. package/dist/{time-DJF2csbV.mjs → time-Che8GhII.mjs} +1 -1
  183. package/dist/{titleGenerator-DR9evHBh.mjs → titleGenerator-B9LckLDq.mjs} +1 -1
  184. package/dist/{titleGenerator-BYP3fNFo.cjs → titleGenerator-HVEN1e7o.cjs} +2 -2
  185. package/dist/{todo-BkFvwx_z.cjs → todo-B8byb_cy.cjs} +7 -7
  186. package/dist/{todo-DDDQdB-G.mjs → todo-bc7db5NN.mjs} +7 -7
  187. package/dist/{tools-BjiRW_Rg.cjs → tools--RN1SFkD.cjs} +47 -27
  188. package/dist/{tools-CDktvjWL.mjs → tools-BAMaBbbP.mjs} +47 -27
  189. package/dist/{uninstall-BcMGkwJ0.mjs → uninstall-Dv4C-W9z.mjs} +3 -3
  190. package/dist/{uninstall-D5INt3TC.cjs → uninstall-UC0Q8YTj.cjs} +3 -3
  191. package/package.json +7 -7
  192. package/dist/selfCheck-BmT9ihpR.mjs +0 -89
@@ -1,36 +1,50 @@
1
1
  import { z } from 'zod';
2
- import { c as createTeamsClient } from './client-CK-jvgM1.mjs';
2
+ import { c as createTeamsClient } from './client-Wr_BiOon.mjs';
3
3
 
4
+ const TEAM_VIEW_RECENT_MESSAGES = 20;
4
5
  const CLOSED_GOAL_CHARS = 200;
6
+ const MESSAGE_BODY_CHARS = 500;
5
7
  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;
8
+ const undelivered = (m) => m.deliveredAt === null && m.cancelledAt === void 0;
9
+ function teamToolView(team, options = {}) {
10
+ const { tasks = [], messages = [], operations = [], bots = [], schedules, creationLaunch: _launch, capacityWarned: _warned, ...rest } = team;
11
+ const limit = options.messagesLimit ?? TEAM_VIEW_RECENT_MESSAGES;
12
+ const mine = options.botId ? messages.filter((m) => m.senderBotId === options.botId || m.recipientBotId === options.botId) : messages;
13
+ const pinned = (m) => undelivered(m) && (!options.botId || m.recipientBotId === options.botId);
14
+ const recent = new Set(mine.filter((m) => !pinned(m)).slice(limit > 0 ? -limit : mine.length).map((m) => m.id));
15
+ const shown = mine.filter((m) => recent.has(m.id) || pinned(m));
16
+ const closedTasks = tasks.filter(closed);
17
+ const closedCounts = { done: closedTasks.filter((t) => t.status === "done").length, cancelled: closedTasks.filter((t) => t.status === "cancelled").length };
12
18
  return {
13
19
  ...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),
20
+ ...options.botId ? { selfBotId: options.botId } : {},
21
+ bots: bots.map((bot) => ({ id: bot.id, name: bot.name, root: bot.root, activity: bot.activity, lastEvent: bot.lastEvent })),
22
+ tasks: tasks.filter((t) => !closed(t)).map(openTaskView),
23
+ closedTasks: options.includeClosed ? closedTasks.map(closedTaskSummary) : closedCounts,
24
+ messages: shown.map(messageView),
25
+ ...schedules?.length ? { schedules: schedules.map((s) => ({ ...s, body: clip(s.body, CLOSED_GOAL_CHARS) })) } : {},
18
26
  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."
27
+ closedTaskDetails: options.includeClosed ? 0 : closedTasks.length,
28
+ olderMessages: mine.length - shown.length,
29
+ ...options.botId ? { otherMembersMessages: messages.length - mine.length } : {},
30
+ operations: operations.length,
31
+ unfinishedOperations: operations.filter((o) => o.status !== "completed").length,
32
+ hint: "Compact view: goals and message bodies are clipped, closed tasks are counted, operations are left out. \u9700\u8981\u5B8C\u6574\u5185\u5BB9\u65F6\u7528 taskId \u8C03 team_inspect (one task: full goal, acceptance, attempts with results, its messages and operations); includeClosed=true lists closed tasks, messagesLimit sets how many recent messages, full=true returns the whole team (very large)."
23
33
  }
24
34
  };
25
35
  }
36
+ function openTaskView(task) {
37
+ const current = 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, ...current ? { currentAttemptStatus: current.status } : {}, goalVersion: task.goalVersion, cleanup: task.cleanup, attempts: task.attempts.length };
39
+ }
40
+ function messageView({ id: _id, deliveredAt, body, ...m }) {
41
+ return { ...m, body: clip(body, MESSAGE_BODY_CHARS), ...body.length > MESSAGE_BODY_CHARS ? { bodyChars: body.length } : {}, ...deliveredAt === null ? { undelivered: true } : {} };
42
+ }
26
43
  function teamTaskToolView(team, taskId) {
27
44
  const task = team.tasks.find((t) => t.id === taskId);
28
45
  if (!task) return { taskId, error: "Task not visible: it does not exist, is outside your scope, or was archived after it closed." };
29
46
  return { task, messages: team.messages.filter((m) => m.taskId === taskId), operations: team.operations.filter((o) => o.taskId === taskId), capacity: team.capacity };
30
47
  }
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
48
  function closedTaskSummary(task) {
35
49
  const accepted = task.attempts.find((a) => a.id === task.currentAttemptId);
36
50
  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 } : {} };
@@ -45,11 +59,12 @@ function teamActionReceipt(result, actedTaskId) {
45
59
  const schedule = typeof rest.scheduleId === "string" ? schedules.find((s) => s.id === rest.scheduleId) : void 0;
46
60
  const taskOperations = taskId ? operations.filter((o) => o.taskId === taskId && o.status !== "completed") : [];
47
61
  return {
62
+ ok: true,
48
63
  ...rest,
49
64
  ...taskId ? { taskId } : {},
50
65
  ...task ? { task: taskReceipt(task) } : {},
51
- ...operation ? { operation: withoutPrompt(operation) } : {},
52
- ...taskOperations.length ? { taskOperations: taskOperations.map(withoutPrompt) } : {},
66
+ ...operation ? { operation: operationReceipt(operation) } : {},
67
+ ...taskOperations.length ? { taskOperations: taskOperations.map(operationReceipt) } : {},
53
68
  ...schedule ? { schedule } : {},
54
69
  team: {
55
70
  id: team.id,
@@ -67,7 +82,7 @@ function taskReceipt(task) {
67
82
  const current = task.attempts.find((a) => a.id === task.currentAttemptId);
68
83
  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
84
  }
70
- const withoutPrompt = ({ prompt: _prompt, ...op }) => op;
85
+ const operationReceipt = (op) => ({ id: op.id, type: op.type, botId: op.botId, status: op.status, error: op.error });
71
86
 
72
87
  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
88
  const id = z.string().min(1).max(128);
@@ -83,26 +98,31 @@ function registerTeamsTools(server, sessionId, client = createTeamsClient(sessio
83
98
  }
84
99
  });
85
100
  };
101
+ const compact = (result, options = {}) => Array.isArray(result?.team?.tasks) && !result.team.omitted ? { ...result, team: teamToolView(result.team, { botId: typeof result.botId === "string" ? result.botId : void 0, ...options }) } : result;
86
102
  register(
87
103
  "team_create",
88
104
  "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
105
  { 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)
106
+ async (args) => compact(await client.initialize(args))
91
107
  );
92
108
  register(
93
109
  "team_join",
94
110
  "Join an existing team as a root bot using this session owner\u2019s account. Scoped workers cannot elevate their role.",
95
111
  { teamId: id, name: id, botId: id.optional().describe("Existing root bot to reconnect; preserves its identity"), requestId },
96
- (args) => client.initialize(args)
112
+ async (args) => compact(await client.initialize(args))
97
113
  );
98
- const compact = (result) => result?.team && !result.team.omitted ? { ...result, team: teamToolView(result.team) } : result;
99
114
  register(
100
115
  "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)") },
116
+ "Read your visible team tasks, attempts and messages. Inspect before decisions; submission is not acceptance. Returns a compact view (members, open tasks with clipped goals, closed-task counts, your recent messages clipped, capacity); pass taskId for one task in full (goal, acceptance, attempts and results, its messages), includeClosed / messagesLimit to widen the view, or full=true for the whole team.",
117
+ {
118
+ taskId: id.optional().describe("Return this task in full: goal, acceptance, all attempts with results, its messages and operations"),
119
+ includeClosed: z.boolean().optional().describe("List closed (done / cancelled) tasks with clipped goals instead of counting them"),
120
+ messagesLimit: z.number().int().min(0).max(500).optional().describe("How many of your most recent messages to list (default 20); undelivered ones are always listed"),
121
+ full: z.boolean().optional().describe("Return the whole team view (can be very large)")
122
+ },
103
123
  async (args) => {
104
124
  const result = await client.inspect();
105
- return args.full ? result : args.taskId ? teamTaskToolView(result.team, args.taskId) : compact(result);
125
+ return args.full ? result : args.taskId ? teamTaskToolView(result.team, args.taskId) : compact(result, { includeClosed: args.includeClosed, messagesLimit: args.messagesLimit });
106
126
  }
107
127
  );
108
128
  const action = (name, description, fields) => register(
@@ -1,13 +1,13 @@
1
- import { l as logger } from './logger-CFrzcRHD.mjs';
1
+ import { l as logger } from './logger-BiKmiREe.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-DhEqAYzz.mjs';
6
+ import './configuration-i9MVy0a5.mjs';
7
7
  import 'node:fs';
8
8
  import 'node:os';
9
9
  import 'node:path';
10
- import './package-DxE8PttX.mjs';
10
+ import './package-CIW5lwaN.mjs';
11
11
  import 'node:fs/promises';
12
12
 
13
13
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-Hyhy2boA.cjs');
3
+ var logger = require('./logger-BtWBoP60.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-LWFmTxty.cjs');
8
+ require('./configuration-Cl9kOv09.cjs');
9
9
  require('node:fs');
10
10
  require('node:os');
11
11
  require('node:path');
12
- require('./package-06cGlmeD.cjs');
12
+ require('./package-Djdgx8nb.cjs');
13
13
  require('node:fs/promises');
14
14
 
15
15
  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.201",
3
+ "version": "0.2.203",
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": [
@@ -117,12 +117,12 @@
117
117
  "zod": "^4.6.7"
118
118
  },
119
119
  "optionalDependencies": {
120
- "very-happy-tools-arm64-darwin": "0.2.201",
121
- "very-happy-tools-x64-darwin": "0.2.201",
122
- "very-happy-tools-arm64-linux": "0.2.201",
123
- "very-happy-tools-x64-linux": "0.2.201",
124
- "very-happy-tools-arm64-win32": "0.2.201",
125
- "very-happy-tools-x64-win32": "0.2.201"
120
+ "very-happy-tools-arm64-darwin": "0.2.203",
121
+ "very-happy-tools-x64-darwin": "0.2.203",
122
+ "very-happy-tools-arm64-linux": "0.2.203",
123
+ "very-happy-tools-x64-linux": "0.2.203",
124
+ "very-happy-tools-arm64-win32": "0.2.203",
125
+ "very-happy-tools-x64-win32": "0.2.203"
126
126
  },
127
127
  "devDependencies": {
128
128
  "@slopus/happy-wire": "workspace:*",
@@ -1,89 +0,0 @@
1
- import { p as packageJson } from './package-DxE8PttX.mjs';
2
-
3
- const LAZY_MODULES = [
4
- // Entry
5
- ["main", () => import('./main-D1rk-68I.mjs')],
6
- ["selfCheck", () => Promise.resolve().then(function () { return selfCheck; })],
7
- // Subcommands (main.ts)
8
- ["api/api", () => import('./api-1CD4oRSW.mjs').then(function (n) { return n.e; })],
9
- ["claude/claudeCliPath", () => import('./claudeCliPath-BqkaH2oR.mjs')],
10
- ["claude/runClaude", () => import('./runClaude-Z4BVFEdC.mjs')],
11
- ["commands/agentHome", () => import('./agentHome-DyrLqr8b.mjs')],
12
- ["commands/auth", () => import('./auth-CV2H-smf.mjs')],
13
- ["commands/auto", () => import('./auto-BsCE_UHT.mjs')],
14
- ["commands/codexCommand", () => import('./codexCommand-BCpJzf3q.mjs')],
15
- ["commands/connect", () => import('./connect-CY_EMXQs.mjs')],
16
- ["commands/installPiTools", () => import('./installPiTools-B_CdM5_2.mjs')],
17
- ["commands/installTerminalHooks", () => import('./installTerminalHooks-By7gBMEF.mjs')],
18
- ["commands/mcp", () => import('./mcp-C0DMPeTt.mjs')],
19
- ["commands/panels", () => import('./panels-BUqmsRE0.mjs')],
20
- ["commands/piTerminal", () => import('./piTerminal-0tOAYsFm.mjs')],
21
- ["commands/sandbox", () => import('./sandbox-r29ys6I4.mjs')],
22
- ["commands/send", () => import('./send-BGApHm-z.mjs')],
23
- ["commands/server", () => import('./server-hutEAAn1.mjs')],
24
- ["commands/sessions", () => import('./sessions-BIYm43CM.mjs')],
25
- ["commands/sessionProvider", () => import('./sessionProvider-CPlvR0nT.mjs')],
26
- ["commands/account", () => import('./account-pzgzyIXW.mjs')],
27
- ["agentProfiles/daemonAccounts", () => import('./daemonAccounts-D5shoCLt.mjs')],
28
- ["commands/spawn", () => import('./spawn-DnPu7h2o.mjs')],
29
- ["commands/teams", () => import('./teams-BAWOVbdF.mjs')],
30
- ["commands/todo", () => import('./todo-DDDQdB-G.mjs')],
31
- ["commands/issue", () => import('./issue-DpMsnOFm.mjs')],
32
- ["daemon/doctor", () => import('./doctor-GN5mPOn5.mjs')],
33
- ["daemon/install", () => import('./install-BurTXawL.mjs')],
34
- ["daemon/run", () => import('./run-mHeOSOEt.mjs')],
35
- ["daemon/uninstall", () => import('./uninstall-BcMGkwJ0.mjs')],
36
- ["resume/handleResumeCommand", () => import('./handleResumeCommand-BRV-9h0o.mjs')],
37
- ["ui/doctor", () => import('./doctor-BanQ3jQg.mjs').then(function (n) { return n.d; })],
38
- ["agent/acp", () => import('./index-D5abHQNL.mjs')],
39
- ["gemini/runGemini", () => import('./runGemini-DG3jIxWv.mjs')],
40
- ["gemini/utils/config", () => import('./config-D9wjo4oa.mjs')],
41
- ["openclaw/runOpenClaw", () => import('./runOpenClaw-C4676Sdl.mjs')],
42
- ["persistence", () => import('./persistence-CF7oV1oH.mjs').then(function (n) { return n.G; })],
43
- // Deferred halves of the runners and clients
44
- ["api/apiMachine", () => import('./apiMachine-BDVE6MOn.mjs')],
45
- ["claude/runClaudeDeps", () => import('./runClaudeDeps-8RXtu0Zc.mjs')],
46
- ["claude/claudeLocal", () => import('./claudeLocal-DRMWkdCC.mjs')],
47
- ["claude/claudeLocalLauncher", () => import('./claudeLocalLauncher-D4tU6R5n.mjs')],
48
- ["claude/sdk", () => import('./index-Do1r62PF.mjs')],
49
- ["assistant/bootstrap", () => import('./bootstrap-D_1MskAl.mjs')],
50
- ["agentHome", () => import('./index-HJFzeG0B.mjs')],
51
- ["ui/ink/RemoteModeDisplay", () => import('./RemoteModeDisplay-D-HewyXg.mjs')],
52
- // External packages imported on demand
53
- ["expo-server-sdk", () => import('expo-server-sdk')],
54
- ["ink", () => import('ink')],
55
- ["react", () => import('react')]
56
- ];
57
-
58
- async function runSelfCheck(modules = LAZY_MODULES) {
59
- const failures = [];
60
- for (const [name, load] of modules) {
61
- try {
62
- await load();
63
- } catch (error) {
64
- failures.push({ name, error: error instanceof Error ? error.message : String(error) });
65
- }
66
- }
67
- return failures;
68
- }
69
- async function selfCheckMain(opts = {}) {
70
- const started = Date.now();
71
- const failures = await runSelfCheck();
72
- if (failures.length > 0) {
73
- for (const failure of failures) {
74
- console.error(`very-happy: failed to load ${failure.name}: ${failure.error}`);
75
- }
76
- return 1;
77
- }
78
- if (opts.verbose) console.log(`self-check: ${LAZY_MODULES.length} modules loaded in ${Date.now() - started}ms`);
79
- console.log(`very-happy version: ${packageJson.version}`);
80
- return 0;
81
- }
82
-
83
- var selfCheck = /*#__PURE__*/Object.freeze({
84
- __proto__: null,
85
- runSelfCheck: runSelfCheck,
86
- selfCheckMain: selfCheckMain
87
- });
88
-
89
- export { runSelfCheck, selfCheckMain };