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.
- package/dist/{AcpBackend-BNinFMHZ.mjs → AcpBackend-CAMuhS0Z.mjs} +3 -3
- package/dist/{AcpBackend-CMFlng3C.cjs → AcpBackend-DReFgpYD.cjs} +3 -3
- package/dist/{AcpSessionManager-CPgoICjp.cjs → AcpSessionManager-BZKM-sCt.cjs} +1 -1
- package/dist/{AcpSessionManager-Dg6gKavf.mjs → AcpSessionManager-CJOxMFCF.mjs} +1 -1
- package/dist/{BasePermissionHandler-c-NaRa_E.cjs → BasePermissionHandler-BBR9Gkob.cjs} +1 -1
- package/dist/{BasePermissionHandler-DwcfWUjr.mjs → BasePermissionHandler-BgX73mQ5.mjs} +1 -1
- package/dist/{account-D23SGj7p.cjs → account-41PkJ9nx.cjs} +5 -5
- package/dist/{account-pzgzyIXW.mjs → account-hy0rztXY.mjs} +5 -5
- package/dist/{acpSessionResume-urFpnGsk.mjs → acpSessionResume-5El4xksf.mjs} +1 -1
- package/dist/{acpSessionResume-DklOhwir.cjs → acpSessionResume-DmOPXKpC.cjs} +1 -1
- package/dist/{agentHome-BTwMaYw1.cjs → agentHome-BXaVMqHX.cjs} +4 -4
- package/dist/{agentHome-DyrLqr8b.mjs → agentHome-DUxArmak.mjs} +4 -4
- package/dist/{api-KVVs-GkM.cjs → api-ChhFBuB0.cjs} +9 -9
- package/dist/{api-1CD4oRSW.mjs → api-D8ZDxBWw.mjs} +9 -9
- package/dist/{apiMachine-1sd5IVIB.cjs → apiMachine-MPwddFXq.cjs} +23 -13
- package/dist/{apiMachine-BDVE6MOn.mjs → apiMachine-qav2pnk5.mjs} +23 -13
- package/dist/{attachmentContent-CeF54XeO.mjs → attachmentContent-BfSQxccA.mjs} +2 -2
- package/dist/{attachmentContent-f3BbOKqz.cjs → attachmentContent-f5gwnv9J.cjs} +2 -2
- package/dist/{auth-CV2H-smf.mjs → auth-BxNuFv_0.mjs} +8 -8
- package/dist/{auth-eielZ6Sc.cjs → auth-DkPAHXLj.cjs} +8 -8
- package/dist/{auth-CXCX-iJ-.cjs → auth-thi2T_T8.cjs} +5 -5
- package/dist/{auth-WCd2S1zA.mjs → auth-xW7SDE_7.mjs} +5 -5
- package/dist/{auto-49cRCADN.cjs → auto-BiRlQ4tm.cjs} +14 -14
- package/dist/{auto-BsCE_UHT.mjs → auto-DmXTwayU.mjs} +14 -14
- package/dist/{bootstrap-N1PY4ypX.cjs → bootstrap-EGhaCmXy.cjs} +2 -2
- package/dist/{bootstrap-D_1MskAl.mjs → bootstrap-pGaFGbWO.mjs} +2 -2
- package/dist/{browser-DL3QIQLS.mjs → browser-BYSYzXvP.mjs} +1 -1
- package/dist/{browser-B0SEB6r3.cjs → browser-DSxpOnPb.cjs} +1 -1
- package/dist/{claudeLocal-Ix69XJ1t.cjs → claudeLocal-ClqHmkk6.cjs} +4 -4
- package/dist/{claudeLocal-DRMWkdCC.mjs → claudeLocal-bDarWqaU.mjs} +4 -4
- package/dist/{claudeLocalLauncher-rDojqNoa.cjs → claudeLocalLauncher-Bxi0_eW9.cjs} +9 -9
- package/dist/{claudeLocalLauncher-D4tU6R5n.mjs → claudeLocalLauncher-Ccpj2KgW.mjs} +9 -9
- package/dist/{claudeSessionFork-H0ZVQALg.mjs → claudeSessionFork-Cize0Y2T.mjs} +1 -1
- package/dist/{claudeSessionFork-C_X08LFh.cjs → claudeSessionFork-nyNFjgaf.cjs} +1 -1
- package/dist/{client-P1VkI76z.cjs → client-6Y6O72Uq.cjs} +2 -2
- package/dist/{client-DGqnrSg4.cjs → client-CMKgB-76.cjs} +4 -4
- package/dist/{client-CMUlpYcy.mjs → client-CX8kRedW.mjs} +2 -2
- package/dist/{client-BoymtYLP.cjs → client-Cddb1dhi.cjs} +2 -2
- package/dist/{client-4YWjreN3.mjs → client-CgMVIP7v.mjs} +2 -2
- package/dist/{client-BgInTvr6.mjs → client-DO8DNDC3.mjs} +2 -2
- package/dist/{client-DI8Rxsbw.cjs → client-DP8FabOE.cjs} +2 -2
- package/dist/{client-CK-jvgM1.mjs → client-Wr_BiOon.mjs} +4 -4
- package/dist/codex/happyMcpStdioBridge.cjs +17 -17
- package/dist/codex/happyMcpStdioBridge.mjs +17 -17
- package/dist/{codexAppServerClient-aDrsSyjS.mjs → codexAppServerClient-D-cD2Dfj.mjs} +3 -3
- package/dist/{codexAppServerClient-BnMR-DRn.cjs → codexAppServerClient-EzrHWYhX.cjs} +3 -3
- package/dist/{codexCommand-C3oEEpOa.cjs → codexCommand-BMcXtvU3.cjs} +42 -42
- package/dist/{codexCommand-BCpJzf3q.mjs → codexCommand-D79GnRhB.mjs} +42 -42
- package/dist/{codexTermination-DXhw5Pzi.cjs → codexTermination-CF6xiFbb.cjs} +1 -1
- package/dist/{codexTermination-B5haG5wJ.mjs → codexTermination-CK1MYJT7.mjs} +1 -1
- package/dist/{config-D9wjo4oa.mjs → config-Crn1mNgr.mjs} +3 -3
- package/dist/{config-CdGiZZKy.cjs → config-F6zSRyk2.cjs} +3 -3
- package/dist/{configuration-LWFmTxty.cjs → configuration-Cl9kOv09.cjs} +1 -1
- package/dist/{configuration-DhEqAYzz.mjs → configuration-i9MVy0a5.mjs} +1 -1
- package/dist/{connect-CY_EMXQs.mjs → connect-CiA13Xm4.mjs} +12 -12
- package/dist/{connect-BZLD0aVm.cjs → connect-ClklWmnI.cjs} +12 -12
- package/dist/{context-BbZ18lX0.cjs → context-BxODP3mG.cjs} +1 -1
- package/dist/{context-UzqWaA7f.mjs → context-DvdZsGgl.mjs} +1 -1
- package/dist/{controlClient-PaIiDxM6.mjs → controlClient-D6vqMUfi.mjs} +3 -3
- package/dist/{controlClient-TVMpETsR.cjs → controlClient-DxCQKfqe.cjs} +3 -3
- package/dist/{createSessionMetadata-hGZeo_nR.cjs → createSessionMetadata-B_NZvmhm.cjs} +2 -2
- package/dist/{createSessionMetadata-BWb81WZg.mjs → createSessionMetadata-BuAVB-xI.mjs} +2 -2
- package/dist/{deterministicJson-Cg3z7uUX.mjs → deterministicJson-B9XrEawW.mjs} +13 -13
- package/dist/{deterministicJson-BpDDS7c9.cjs → deterministicJson-kM2OdGZu.cjs} +13 -13
- package/dist/{doctor-DOzji0f7.cjs → doctor-DiPRqsqg.cjs} +7 -7
- package/dist/{doctor-BanQ3jQg.mjs → doctor-HHS4YegX.mjs} +7 -7
- package/dist/{downloadTarget-BCSXmPRE.mjs → downloadTarget-Cd8hx54t.mjs} +6 -6
- package/dist/{downloadTarget-BhIAhyEV.cjs → downloadTarget-osB-mGh0.cjs} +6 -6
- package/dist/{ensureDaemonRunning-BZGBE838.mjs → ensureDaemonRunning-C0iDtuL7.mjs} +5 -5
- package/dist/{ensureDaemonRunning-DMOCzvQP.cjs → ensureDaemonRunning-CtBvPHVB.cjs} +5 -5
- package/dist/{format-CgiY6uup.cjs → format-B5V7ie8N.cjs} +1 -1
- package/dist/{format-BxGkJUki.mjs → format-Dc5zMslz.mjs} +1 -1
- package/dist/{handleResumeCommand-ChnR-12l.cjs → handleResumeCommand-vcD2qcAM.cjs} +5 -5
- package/dist/{handleResumeCommand-BRV-9h0o.mjs → handleResumeCommand-xrOAA1qI.mjs} +5 -5
- package/dist/{index-DuOthh8V.cjs → index-AyDwQ6FG.cjs} +39 -39
- package/dist/{index-D5abHQNL.mjs → index-B7CXMlrz.mjs} +40 -40
- package/dist/{index-C_Y9426m.mjs → index-B7pKBIcn.mjs} +3 -3
- package/dist/{index-DnEgpRo4.cjs → index-C_ePuQwB.cjs} +3 -3
- package/dist/{index-BuOzDU17.cjs → index-Cl-WkB_6.cjs} +4 -4
- package/dist/{index-B7HlUXOX.cjs → index-D0rCXp-e.cjs} +4 -4
- package/dist/{index-HJFzeG0B.mjs → index-DIKJMfs2.mjs} +4 -4
- package/dist/{index-Do1r62PF.mjs → index-iFVMrlPo.mjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-CUAUG3u4.cjs → install-BgBgsOlS.cjs} +3 -3
- package/dist/{install-BurTXawL.mjs → install-yqS4y1cm.mjs} +3 -3
- package/dist/{issue-feEUrjV0.cjs → issue-D7liK6bR.cjs} +7 -7
- package/dist/{issue-DpMsnOFm.mjs → issue-aKZd7J55.mjs} +7 -7
- package/dist/lib.cjs +11 -11
- package/dist/lib.d.cts +3 -0
- package/dist/lib.d.mts +3 -0
- package/dist/lib.mjs +11 -11
- package/dist/{localHappyAgentAuth-kg2RFvOy.mjs → localHappyAgentAuth-B2JJxlE9.mjs} +1 -1
- package/dist/{localHappyAgentAuth-DxlQgaer.cjs → localHappyAgentAuth-Dm9obisi.cjs} +1 -1
- package/dist/{logger-CFrzcRHD.mjs → logger-BiKmiREe.mjs} +2 -2
- package/dist/{logger-Hyhy2boA.cjs → logger-BtWBoP60.cjs} +2 -2
- package/dist/{machineMetadata-BLymhM03.cjs → machineMetadata-C0-LyMsb.cjs} +3 -3
- package/dist/{machineMetadata-DiStbYik.mjs → machineMetadata-CiyO9wm-.mjs} +3 -3
- package/dist/{main-D1rk-68I.mjs → main-BP2TBnp5.mjs} +48 -48
- package/dist/{main-7G17Noc3.cjs → main-C7hKf5hG.cjs} +48 -48
- package/dist/{mcp-C0DMPeTt.mjs → mcp-Cn4k-PXb.mjs} +14 -14
- package/dist/{mcp-DUeAS-D6.cjs → mcp-DO00rr9n.cjs} +14 -14
- package/dist/{mirrorProtocol-dRyartIG.mjs → mirrorProtocol-DDtEN49F.mjs} +2 -2
- package/dist/{mirrorProtocol-YUoEuIYO.cjs → mirrorProtocol-DwO8QgLM.cjs} +2 -2
- package/dist/{package-DxE8PttX.mjs → package-CIW5lwaN.mjs} +7 -7
- package/dist/{package-06cGlmeD.cjs → package-Djdgx8nb.cjs} +7 -7
- package/dist/{panels-BUqmsRE0.mjs → panels-BpfVEvwF.mjs} +5 -5
- package/dist/{panels-D0GHfIJC.cjs → panels-DMLtEOtJ.cjs} +5 -5
- package/dist/{peerTools-BiFpxXdf.mjs → peerTools-CQ60fUPp.mjs} +5 -5
- package/dist/{peerTools-CTCyRdg2.cjs → peerTools-fYuKq3ev.cjs} +5 -5
- package/dist/{persistence-_W9tE-bW.cjs → persistence-BOEZtiKb.cjs} +12 -2
- package/dist/{persistence-CF7oV1oH.mjs → persistence-D_zVC4Xz.mjs} +12 -3
- package/dist/{piRunnerArgs-Cfc-F-FJ.mjs → piRunnerArgs-DE_YXvS1.mjs} +1 -1
- package/dist/{piRunnerArgs-T2cAiaGW.cjs → piRunnerArgs-Dz9P62db.cjs} +1 -1
- package/dist/{piRuntime-CzYkZrYV.mjs → piRuntime-8SbpRmNA.mjs} +1 -1
- package/dist/{piRuntime-BzECTca4.cjs → piRuntime-Du62fjeU.cjs} +1 -1
- package/dist/{piTerminal-WF--dHaC.cjs → piTerminal-CGAw7WDW.cjs} +16 -16
- package/dist/{piTerminal-0tOAYsFm.mjs → piTerminal-Cl45kac0.mjs} +16 -16
- package/dist/{pushNotifications-DdzTbrA3.cjs → pushNotifications-B19lT5mY.cjs} +2 -2
- package/dist/{pushNotifications-CxX10K6n.mjs → pushNotifications-RVpbqrxR.mjs} +2 -2
- package/dist/{query-Cwx4pv91.cjs → query-CNWdX2r5.cjs} +1 -1
- package/dist/{query-Bkh7d52V.mjs → query-DBRR3TOO.mjs} +1 -1
- package/dist/{rateLimitWindows-DdUMUEoy.mjs → rateLimitWindows-DX5y23x_.mjs} +1 -1
- package/dist/{rateLimitWindows-DjJjgjt4.cjs → rateLimitWindows-mfdokrkQ.cjs} +1 -1
- package/dist/{reconnectGate-DeDhtQJW.cjs → reconnectGate-B8ltzSJD.cjs} +1 -1
- package/dist/{reconnectGate-uTLj82tS.mjs → reconnectGate-DSxYUCWy.mjs} +1 -1
- package/dist/{registerCommonHandlers-BYrmi-A4.mjs → registerCommonHandlers-CQDRKlkG.mjs} +2 -2
- package/dist/{registerCommonHandlers-BrEtSwNk.cjs → registerCommonHandlers-Y2siJGwL.cjs} +2 -2
- package/dist/{registerKillSessionHandler-Bp3g11wW.cjs → registerKillSessionHandler-B0pMZOdH.cjs} +5 -5
- package/dist/{registerKillSessionHandler-Cuzq6ecP.mjs → registerKillSessionHandler-U4Dxtohy.mjs} +5 -5
- package/dist/{registerSideQuestionHandler-ChIbHl_g.cjs → registerSideQuestionHandler--ruKhCdY.cjs} +4 -4
- package/dist/{registerSideQuestionHandler-BmEWWaZW.mjs → registerSideQuestionHandler-DM1QqTxf.mjs} +4 -4
- package/dist/{remoteSessionClient-DoxfnpnK.cjs → remoteSessionClient-CjINaEs_.cjs} +5 -5
- package/dist/{remoteSessionClient-Dj2rV8Az.mjs → remoteSessionClient-T-Raoiy6.mjs} +5 -5
- package/dist/{reportProgressTool-DvZhaEiN.cjs → reportProgressTool-DDfL1OY7.cjs} +4 -4
- package/dist/{reportProgressTool-qo0QIFNd.mjs → reportProgressTool-Stg0xrjF.mjs} +4 -4
- package/dist/{run-BqlWdDTL.cjs → run-BoSVfVCZ.cjs} +196 -45
- package/dist/{run-mHeOSOEt.mjs → run-Dq48xBtw.mjs} +196 -45
- package/dist/{runClaude-Z4BVFEdC.mjs → runClaude-CJe5atrS.mjs} +20 -20
- package/dist/{runClaude-MjIrNrxT.cjs → runClaude-D8ScJdJU.cjs} +20 -20
- package/dist/{runClaudeDeps-tPqwAl_m.cjs → runClaudeDeps-4RFRR4cY.cjs} +37 -37
- package/dist/{runClaudeDeps-8RXtu0Zc.mjs → runClaudeDeps-CL3goCXG.mjs} +43 -43
- package/dist/{runGemini-uc-fViXY.cjs → runGemini-BcbNxgsA.cjs} +34 -34
- package/dist/{runGemini-DG3jIxWv.mjs → runGemini-DZv6jPxV.mjs} +34 -34
- package/dist/{runOpenClaw-DZtoCmSG.cjs → runOpenClaw-BeSivE0X.cjs} +17 -17
- package/dist/{runOpenClaw-C4676Sdl.mjs → runOpenClaw-CRqCoj-_.mjs} +17 -17
- package/dist/{sandbox-r29ys6I4.mjs → sandbox-DAvJJZcV.mjs} +4 -4
- package/dist/{sandbox-DS7uZ71y.cjs → sandbox-xflHChws.cjs} +4 -4
- package/dist/selfCheck-BKOIROoJ.mjs +89 -0
- package/dist/{selfCheck-CSZ-wx1W.cjs → selfCheck-DZwdgBg0.cjs} +39 -39
- package/dist/{send-BGApHm-z.mjs → send-Co_l_Nmg.mjs} +8 -8
- package/dist/{send-CrmLy9lW.cjs → send-ConAuYqL.cjs} +8 -8
- package/dist/{server-hutEAAn1.mjs → server-D1Qrmxl7.mjs} +4 -4
- package/dist/{server-CjwXsTKP.cjs → server-by6kezmM.cjs} +6 -6
- package/dist/{sessionLock-Dj9_lShU.mjs → sessionLock-DFrwAnwR.mjs} +3 -3
- package/dist/{sessionLock-unMOEniJ.cjs → sessionLock-Db_uQcUP.cjs} +3 -3
- package/dist/{sessionOps-BmhqmPPd.mjs → sessionOps-C7nps7qG.mjs} +4 -4
- package/dist/{sessionOps-SxZr9veq.cjs → sessionOps-CptDjoZi.cjs} +4 -4
- package/dist/{sessionProvider-CPlvR0nT.mjs → sessionProvider-BaJq1AnY.mjs} +5 -5
- package/dist/{sessionProvider-DLlqS4y6.cjs → sessionProvider-D9nsAE14.cjs} +5 -5
- package/dist/{sessionScanner-DvVZpLHG.mjs → sessionScanner-BOb33NVJ.mjs} +3 -3
- package/dist/{sessionScanner-B7nZ1i40.cjs → sessionScanner-C6OVO0Ne.cjs} +3 -3
- package/dist/{sessions-BIYm43CM.mjs → sessions-GCql_3Dl.mjs} +10 -10
- package/dist/{sessions-CQQW7u6X.cjs → sessions-qVHDXJa6.cjs} +10 -10
- package/dist/{setupOfflineReconnection-D7WJTAi_.cjs → setupOfflineReconnection-B8QKqc9a.cjs} +2 -2
- package/dist/{setupOfflineReconnection-BELrtMGG.mjs → setupOfflineReconnection-lu0YbS7m.mjs} +2 -2
- package/dist/{spawn-DnPu7h2o.mjs → spawn-C9NSlg99.mjs} +12 -12
- package/dist/{spawn-CuWcPkkN.cjs → spawn-tL-724RS.cjs} +12 -12
- package/dist/{spawnHappyCLI-CI7Ax4mF.cjs → spawnHappyCLI-D7EO8s4E.cjs} +1 -1
- package/dist/{spawnHappyCLI-D6OcgFDR.mjs → spawnHappyCLI-jXUKLUT5.mjs} +1 -1
- package/dist/{startFileWatcher-DBW14aP2.cjs → startFileWatcher-6NpLGxg5.cjs} +1 -1
- package/dist/{startFileWatcher-BiWGhlGW.mjs → startFileWatcher-C7eFs4hA.mjs} +1 -1
- package/dist/{startupSessionCreate-DFl54ozj.cjs → startupSessionCreate-C5wdvraY.cjs} +3 -3
- package/dist/{startupSessionCreate-DbBpGQo9.mjs → startupSessionCreate-D3ph1DtL.mjs} +3 -3
- package/dist/{sync-CcBrziWp.mjs → sync-BIXH8ijr.mjs} +1 -1
- package/dist/{sync-C764ZzE6.cjs → sync-ni64k2OI.cjs} +1 -1
- package/dist/{systemPrompt-9i7bQypR.mjs → systemPrompt-B_vnlIr1.mjs} +1 -1
- package/dist/{systemPrompt-Xy3Dfj1l.cjs → systemPrompt-DuoULaqr.cjs} +1 -1
- package/dist/{teams-BAWOVbdF.mjs → teams-CsR_8p3Q.mjs} +6 -6
- package/dist/{teams-VlmzLDSs.cjs → teams-DLfcbOMh.cjs} +6 -6
- package/dist/{time-CDBZWYDb.cjs → time-BMCY7zJL.cjs} +1 -1
- package/dist/{time-DJF2csbV.mjs → time-Che8GhII.mjs} +1 -1
- package/dist/{titleGenerator-DR9evHBh.mjs → titleGenerator-B9LckLDq.mjs} +1 -1
- package/dist/{titleGenerator-BYP3fNFo.cjs → titleGenerator-HVEN1e7o.cjs} +2 -2
- package/dist/{todo-BkFvwx_z.cjs → todo-B8byb_cy.cjs} +7 -7
- package/dist/{todo-DDDQdB-G.mjs → todo-bc7db5NN.mjs} +7 -7
- package/dist/{tools-BjiRW_Rg.cjs → tools--RN1SFkD.cjs} +47 -27
- package/dist/{tools-CDktvjWL.mjs → tools-BAMaBbbP.mjs} +47 -27
- package/dist/{uninstall-BcMGkwJ0.mjs → uninstall-Dv4C-W9z.mjs} +3 -3
- package/dist/{uninstall-D5INt3TC.cjs → uninstall-UC0Q8YTj.cjs} +3 -3
- package/package.json +7 -7
- package/dist/selfCheck-BmT9ihpR.mjs +0 -89
|
@@ -1,36 +1,50 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { c as createTeamsClient } from './client-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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:
|
|
21
|
-
|
|
22
|
-
|
|
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:
|
|
52
|
-
...taskOperations.length ? { taskOperations: taskOperations.map(
|
|
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
|
|
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 (
|
|
102
|
-
{
|
|
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-
|
|
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-
|
|
6
|
+
import './configuration-i9MVy0a5.mjs';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import 'node:path';
|
|
10
|
-
import './package-
|
|
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-
|
|
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-
|
|
8
|
+
require('./configuration-Cl9kOv09.cjs');
|
|
9
9
|
require('node:fs');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('node:path');
|
|
12
|
-
require('./package-
|
|
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.
|
|
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.
|
|
121
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
122
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
123
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
124
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
125
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
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 };
|