very-happy-cli 0.2.87 → 0.2.88

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 (29) hide show
  1. package/dist/{AcpBackend-DxNg9T6Z.cjs → AcpBackend-CBZNjcYO.cjs} +1 -1
  2. package/dist/{AcpBackend-kotk9Pwu.mjs → AcpBackend-C_simUP7.mjs} +1 -1
  3. package/dist/{AcpSessionManager-Im0qDPE0.cjs → AcpSessionManager-B9mJWEzL.cjs} +1 -1
  4. package/dist/{AcpSessionManager-DGY1Ss6H.mjs → AcpSessionManager-G8w8Q6tt.mjs} +1 -1
  5. package/dist/{config-DcoxG-LO.cjs → config-BPPY98U1.cjs} +2 -2
  6. package/dist/{config-CDMM_UhY.mjs → config-CFSdirvc.mjs} +2 -2
  7. package/dist/{index-DBYxKaw7.cjs → index-Bp5ZSCRm.cjs} +4 -4
  8. package/dist/{index-DLI9RIsu.mjs → index-Cn3VqAah.mjs} +5 -5
  9. package/dist/{index-DveDBCaA.cjs → index-FxD6Abgx.cjs} +15 -15
  10. package/dist/{index-UiX6h05D.mjs → index-j2LYx2KW.mjs} +12 -12
  11. package/dist/index.cjs +2 -2
  12. package/dist/index.mjs +2 -2
  13. package/dist/{installTerminalHooks-fuWRm0w5.cjs → installTerminalHooks-BL25f9BN.cjs} +2 -2
  14. package/dist/{installTerminalHooks-BXxMZXNx.mjs → installTerminalHooks-DsqU3Dxc.mjs} +2 -2
  15. package/dist/lib.cjs +1 -1
  16. package/dist/lib.mjs +1 -1
  17. package/dist/{mcp-YzpXuAUY.cjs → mcp-BVoo0PQS.cjs} +2 -2
  18. package/dist/{mcp-CgOiXU_f.mjs → mcp-DV49L5g2.mjs} +2 -2
  19. package/dist/{runGemini-C3jrBffn.mjs → runGemini-cm1mKuxv.mjs} +4 -4
  20. package/dist/{runGemini-BBAR1VMh.cjs → runGemini-t_Oikq3z.cjs} +4 -4
  21. package/dist/{runOpenClaw-CaA37yjx.cjs → runOpenClaw-CCGywWGD.cjs} +3 -3
  22. package/dist/{runOpenClaw-B7pEvhUJ.mjs → runOpenClaw-CCwYAKyZ.mjs} +3 -3
  23. package/dist/{send-DHj783NY.cjs → send-CqPpRb7v.cjs} +2 -2
  24. package/dist/{send-bhOlmnWQ.mjs → send-ifKBw-7j.mjs} +2 -2
  25. package/dist/{spawn-CVUvoWvq.cjs → spawn-28RbN4P6.cjs} +2 -2
  26. package/dist/{spawn-DW_crRm0.mjs → spawn-DkG_GIXM.mjs} +2 -2
  27. package/dist/{types-DY9ef3Sf.mjs → types-AO-TVSTa.mjs} +9 -9
  28. package/dist/{types-1ZueD6ob.cjs → types-DE03map-.cjs} +10 -10
  29. package/package.json +7 -7
@@ -3,7 +3,7 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var sdk = require('@agentclientprotocol/sdk');
5
5
  var node_crypto = require('node:crypto');
6
- var persistence = require('./types-1ZueD6ob.cjs');
6
+ var persistence = require('./types-DE03map-.cjs');
7
7
 
8
8
  const DEFAULT_TIMEOUTS = {
9
9
  /** Default initialization timeout: 60 seconds */
@@ -1,7 +1,7 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-DY9ef3Sf.mjs';
4
+ import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-AO-TVSTa.mjs';
5
5
 
6
6
  const DEFAULT_TIMEOUTS = {
7
7
  /** Default initialization timeout: 60 seconds */
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var cuid2 = require('@paralleldrive/cuid2');
4
- var persistence = require('./types-1ZueD6ob.cjs');
4
+ var persistence = require('./types-DE03map-.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  return turnId ? { turn: turnId, time } : { time };
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { b as createEnvelope } from './types-DY9ef3Sf.mjs';
2
+ import { b as createEnvelope } from './types-AO-TVSTa.mjs';
3
3
 
4
4
  function turnOptions(turnId, time) {
5
5
  return turnId ? { turn: turnId, time } : { time };
@@ -4,8 +4,8 @@ var fs = require('fs');
4
4
  var path = require('path');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
- var persistence = require('./types-1ZueD6ob.cjs');
8
- var index = require('./index-DveDBCaA.cjs');
7
+ var persistence = require('./types-DE03map-.cjs');
8
+ var index = require('./index-FxD6Abgx.cjs');
9
9
  require('axios');
10
10
  require('chalk');
11
11
  require('node:util');
@@ -2,8 +2,8 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './types-DY9ef3Sf.mjs';
6
- import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-UiX6h05D.mjs';
5
+ import { l as logger } from './types-AO-TVSTa.mjs';
6
+ import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-j2LYx2KW.mjs';
7
7
  import 'axios';
8
8
  import 'chalk';
9
9
  import 'node:util';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-DxNg9T6Z.cjs');
4
- var persistence = require('./types-1ZueD6ob.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-Im0qDPE0.cjs');
3
+ var AcpBackend = require('./AcpBackend-CBZNjcYO.cjs');
4
+ var persistence = require('./types-DE03map-.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-B9mJWEzL.cjs');
6
6
  var node_crypto = require('node:crypto');
7
7
  var path = require('node:path');
8
- var index = require('./index-DveDBCaA.cjs');
8
+ var index = require('./index-FxD6Abgx.cjs');
9
9
  require('node:child_process');
10
10
  require('@agentclientprotocol/sdk');
11
11
  require('axios');
@@ -1,10 +1,10 @@
1
- import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-kotk9Pwu.mjs';
2
- export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-kotk9Pwu.mjs';
3
- import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-DY9ef3Sf.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-DGY1Ss6H.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-C_simUP7.mjs';
2
+ export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-C_simUP7.mjs';
3
+ import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-AO-TVSTa.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-G8w8Q6tt.mjs';
5
5
  import { randomUUID } from 'node:crypto';
6
6
  import { join } from 'node:path';
7
- import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, f as startHappyServer, r as registerKillSessionHandler, B as BasePermissionHandler } from './index-UiX6h05D.mjs';
7
+ import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, f as startHappyServer, r as registerKillSessionHandler, B as BasePermissionHandler } from './index-j2LYx2KW.mjs';
8
8
  import 'node:child_process';
9
9
  import '@agentclientprotocol/sdk';
10
10
  import 'axios';
@@ -3,7 +3,7 @@
3
3
  var chalk = require('chalk');
4
4
  var os = require('node:os');
5
5
  var node_crypto = require('node:crypto');
6
- var persistence = require('./types-1ZueD6ob.cjs');
6
+ var persistence = require('./types-DE03map-.cjs');
7
7
  var spawn = require('cross-spawn');
8
8
  var path = require('node:path');
9
9
  var node_readline = require('node:readline');
@@ -8704,7 +8704,7 @@ const MAX_TITLE_CHARS = 60;
8704
8704
  const GENERATION_TIMEOUT_MS = 3e4;
8705
8705
  function resolveClaudeBinary() {
8706
8706
  try {
8707
- const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DveDBCaA.cjs', document.baseURI).href)));
8707
+ const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-FxD6Abgx.cjs', document.baseURI).href)));
8708
8708
  const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
8709
8709
  const { getClaudeCliPath } = require$1(utilsPath);
8710
8710
  const path$1 = getClaudeCliPath();
@@ -10848,9 +10848,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
10848
10848
  };
10849
10849
  }
10850
10850
 
10851
- const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DveDBCaA.cjs', document.baseURI).href)));
10851
+ const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-FxD6Abgx.cjs', document.baseURI).href)));
10852
10852
  const __dirname$1 = path.dirname(__filename$1);
10853
- const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DveDBCaA.cjs', document.baseURI).href)));
10853
+ const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-FxD6Abgx.cjs', document.baseURI).href)));
10854
10854
  const PRISMA_QUERY_ENGINE_FILES = {
10855
10855
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
10856
10856
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -13462,7 +13462,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13462
13462
  process.exit(0);
13463
13463
  } else if (subcommand === "install-terminal-hooks") {
13464
13464
  try {
13465
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-fuWRm0w5.cjs'); });
13465
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-BL25f9BN.cjs'); });
13466
13466
  const command = parseTerminalHooksArgs(args.slice(1));
13467
13467
  if (command.action === "help") {
13468
13468
  console.log(TERMINAL_HOOKS_HELP);
@@ -13479,7 +13479,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13479
13479
  }
13480
13480
  } else if (subcommand === "spawn") {
13481
13481
  try {
13482
- const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-CVUvoWvq.cjs'); });
13482
+ const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-28RbN4P6.cjs'); });
13483
13483
  await handleSpawnCommand(args.slice(1));
13484
13484
  } catch (error) {
13485
13485
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13491,7 +13491,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13491
13491
  return;
13492
13492
  } else if (subcommand === "send") {
13493
13493
  try {
13494
- const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-DHj783NY.cjs'); });
13494
+ const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-CqPpRb7v.cjs'); });
13495
13495
  await handleSendCommand(args.slice(1));
13496
13496
  } catch (error) {
13497
13497
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13597,9 +13597,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13597
13597
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
13598
13598
  const projectId = args[3];
13599
13599
  try {
13600
- const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-DcoxG-LO.cjs'); });
13601
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-1ZueD6ob.cjs'); }).then(function (n) { return n.persistence; });
13602
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-1ZueD6ob.cjs'); }).then(function (n) { return n.api; });
13600
+ const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-BPPY98U1.cjs'); });
13601
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-DE03map-.cjs'); }).then(function (n) { return n.persistence; });
13602
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-DE03map-.cjs'); }).then(function (n) { return n.api; });
13603
13603
  let userEmail = void 0;
13604
13604
  try {
13605
13605
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -13630,7 +13630,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13630
13630
  }
13631
13631
  if (geminiSubcommand === "project" && args[2] === "get") {
13632
13632
  try {
13633
- const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-DcoxG-LO.cjs'); });
13633
+ const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-BPPY98U1.cjs'); });
13634
13634
  const config = readGeminiLocalConfig();
13635
13635
  if (config.googleCloudProject) {
13636
13636
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -13670,7 +13670,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13670
13670
  process.exit(0);
13671
13671
  }
13672
13672
  try {
13673
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-BBAR1VMh.cjs'); });
13673
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-t_Oikq3z.cjs'); });
13674
13674
  let startedBy = void 0;
13675
13675
  for (let i = 1; i < args.length; i++) {
13676
13676
  if (args[i] === "--started-by") {
@@ -13692,7 +13692,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13692
13692
  return;
13693
13693
  } else if (subcommand === "acp") {
13694
13694
  try {
13695
- const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-DBYxKaw7.cjs'); });
13695
+ const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-Bp5ZSCRm.cjs'); });
13696
13696
  let startedBy = void 0;
13697
13697
  let verbose = false;
13698
13698
  const acpArgs = [];
@@ -13732,7 +13732,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13732
13732
  return;
13733
13733
  } else if (subcommand === "openclaw") {
13734
13734
  try {
13735
- const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-CaA37yjx.cjs'); });
13735
+ const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-CCGywWGD.cjs'); });
13736
13736
  let startedBy = void 0;
13737
13737
  let verbose = false;
13738
13738
  let gatewayUrl;
@@ -13783,7 +13783,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13783
13783
  return;
13784
13784
  } else if (subcommand === "mcp" && args.length === 1) {
13785
13785
  try {
13786
- const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-YzpXuAUY.cjs'); });
13786
+ const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-BVoo0PQS.cjs'); });
13787
13787
  await handleMcpCommand();
13788
13788
  } catch (error) {
13789
13789
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
@@ -1,7 +1,7 @@
1
1
  import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
2
2
  import os, { homedir } from 'node:os';
3
3
  import { randomUUID, randomBytes, createHash as createHash$1, timingSafeEqual } from 'node:crypto';
4
- import { n as readDaemonState, l as logger, c as configuration, o as clearDaemonState, q as getProjectPath, p as projectPath, s as initializeSandbox, t as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, u as AsyncLock, v as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, x as hardenPrivateFile, f as packageJson, i as readSettings, y as readCredentials, z as credentialRelayProblem, B as deriveLocalCliUpdateSummary, j as encodeBase64, C as updateSettings, D as encodeBase64Url, E as decodeBase64, F as writeCredentialsLegacy, G as writeCredentialsDataKey, H as readCredentialsForConfiguredRelay, J as encrypt, r as readPersistedSessions, K as getLocalHappyAgentCredentialPath, L as readLocalHappyAgentCredentials, N as decryptWithDataKey, O as decryptLegacy, P as extractCompleteLines, Q as decideBackfill, S as parseTerminalHookPayload, T as decideMirrorBinding, U as persistSession, V as MIRROR_BACKFILL_LINES_DEFAULT, W as mirrorLineKey, X as mirrorLocalId, Y as detectResumeSupport, Z as detectCLIAvailability, _ as acquireDaemonLock, $ as summarizeSpawnSessionForLog, a0 as deletePersistedSessions, a1 as decrypt, a2 as writeDaemonState, A as ApiClient, a3 as fetchCliUpdateState, a4 as resolveCliUpdateCheckInterval, a5 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a6 as releaseDaemonLock, a7 as isValidSessionId, a8 as listVhTerminals, a9 as isValidTerminalId, aa as readVhTerminal, ab as sendToVhTerminal, h as connectionState, ac as startOfflineReconnection, ad as clearCredentials, ae as clearMachineId, k as ensurePrivateDirectorySync, w as writePrivateFileSync, af as SandboxConfigSchema, b as createEnvelope, ag as CodexAppServerClient, ah as getLatestDaemonLog } from './types-DY9ef3Sf.mjs';
4
+ import { n as readDaemonState, l as logger, c as configuration, o as clearDaemonState, q as getProjectPath, p as projectPath, s as initializeSandbox, t as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, u as AsyncLock, v as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, x as hardenPrivateFile, f as packageJson, i as readSettings, y as readCredentials, z as credentialRelayProblem, B as deriveLocalCliUpdateSummary, j as encodeBase64, C as updateSettings, D as encodeBase64Url, E as decodeBase64, F as writeCredentialsLegacy, G as writeCredentialsDataKey, H as readCredentialsForConfiguredRelay, J as encrypt, r as readPersistedSessions, K as getLocalHappyAgentCredentialPath, L as readLocalHappyAgentCredentials, N as decryptWithDataKey, O as decryptLegacy, P as extractCompleteLines, Q as decideBackfill, S as parseTerminalHookPayload, T as decideMirrorBinding, U as persistSession, V as MIRROR_BACKFILL_LINES_DEFAULT, W as mirrorLineKey, X as mirrorLocalId, Y as detectResumeSupport, Z as detectCLIAvailability, _ as acquireDaemonLock, $ as summarizeSpawnSessionForLog, a0 as deletePersistedSessions, a1 as decrypt, a2 as writeDaemonState, A as ApiClient, a3 as fetchCliUpdateState, a4 as resolveCliUpdateCheckInterval, a5 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a6 as releaseDaemonLock, a7 as isValidSessionId, a8 as listVhTerminals, a9 as isValidTerminalId, aa as readVhTerminal, ab as sendToVhTerminal, h as connectionState, ac as startOfflineReconnection, ad as clearCredentials, ae as clearMachineId, k as ensurePrivateDirectorySync, w as writePrivateFileSync, af as SandboxConfigSchema, b as createEnvelope, ag as CodexAppServerClient, ah as getLatestDaemonLog } from './types-AO-TVSTa.mjs';
5
5
  import spawn$1, { spawn } from 'cross-spawn';
6
6
  import path, { join, resolve, basename, isAbsolute, normalize, sep, dirname } from 'node:path';
7
7
  import { createInterface } from 'node:readline';
@@ -13440,7 +13440,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13440
13440
  process.exit(0);
13441
13441
  } else if (subcommand === "install-terminal-hooks") {
13442
13442
  try {
13443
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-BXxMZXNx.mjs');
13443
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-DsqU3Dxc.mjs');
13444
13444
  const command = parseTerminalHooksArgs(args.slice(1));
13445
13445
  if (command.action === "help") {
13446
13446
  console.log(TERMINAL_HOOKS_HELP);
@@ -13457,7 +13457,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13457
13457
  }
13458
13458
  } else if (subcommand === "spawn") {
13459
13459
  try {
13460
- const { handleSpawnCommand } = await import('./spawn-DW_crRm0.mjs');
13460
+ const { handleSpawnCommand } = await import('./spawn-DkG_GIXM.mjs');
13461
13461
  await handleSpawnCommand(args.slice(1));
13462
13462
  } catch (error) {
13463
13463
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13469,7 +13469,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13469
13469
  return;
13470
13470
  } else if (subcommand === "send") {
13471
13471
  try {
13472
- const { handleSendCommand } = await import('./send-bhOlmnWQ.mjs');
13472
+ const { handleSendCommand } = await import('./send-ifKBw-7j.mjs');
13473
13473
  await handleSendCommand(args.slice(1));
13474
13474
  } catch (error) {
13475
13475
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13575,9 +13575,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13575
13575
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
13576
13576
  const projectId = args[3];
13577
13577
  try {
13578
- const { saveGoogleCloudProjectToConfig } = await import('./config-CDMM_UhY.mjs');
13579
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-DY9ef3Sf.mjs').then(function (n) { return n.ai; });
13580
- const { ApiClient: ApiClient2 } = await import('./types-DY9ef3Sf.mjs').then(function (n) { return n.aj; });
13578
+ const { saveGoogleCloudProjectToConfig } = await import('./config-CFSdirvc.mjs');
13579
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-AO-TVSTa.mjs').then(function (n) { return n.ai; });
13580
+ const { ApiClient: ApiClient2 } = await import('./types-AO-TVSTa.mjs').then(function (n) { return n.aj; });
13581
13581
  let userEmail = void 0;
13582
13582
  try {
13583
13583
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -13608,7 +13608,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13608
13608
  }
13609
13609
  if (geminiSubcommand === "project" && args[2] === "get") {
13610
13610
  try {
13611
- const { readGeminiLocalConfig } = await import('./config-CDMM_UhY.mjs');
13611
+ const { readGeminiLocalConfig } = await import('./config-CFSdirvc.mjs');
13612
13612
  const config = readGeminiLocalConfig();
13613
13613
  if (config.googleCloudProject) {
13614
13614
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -13648,7 +13648,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13648
13648
  process.exit(0);
13649
13649
  }
13650
13650
  try {
13651
- const { runGemini } = await import('./runGemini-C3jrBffn.mjs');
13651
+ const { runGemini } = await import('./runGemini-cm1mKuxv.mjs');
13652
13652
  let startedBy = void 0;
13653
13653
  for (let i = 1; i < args.length; i++) {
13654
13654
  if (args[i] === "--started-by") {
@@ -13670,7 +13670,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13670
13670
  return;
13671
13671
  } else if (subcommand === "acp") {
13672
13672
  try {
13673
- const { runAcp, resolveAcpAgentConfig } = await import('./index-DLI9RIsu.mjs');
13673
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-Cn3VqAah.mjs');
13674
13674
  let startedBy = void 0;
13675
13675
  let verbose = false;
13676
13676
  const acpArgs = [];
@@ -13710,7 +13710,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13710
13710
  return;
13711
13711
  } else if (subcommand === "openclaw") {
13712
13712
  try {
13713
- const { runOpenClaw } = await import('./runOpenClaw-B7pEvhUJ.mjs');
13713
+ const { runOpenClaw } = await import('./runOpenClaw-CCwYAKyZ.mjs');
13714
13714
  let startedBy = void 0;
13715
13715
  let verbose = false;
13716
13716
  let gatewayUrl;
@@ -13761,7 +13761,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13761
13761
  return;
13762
13762
  } else if (subcommand === "mcp" && args.length === 1) {
13763
13763
  try {
13764
- const { handleMcpCommand } = await import('./mcp-CgOiXU_f.mjs');
13764
+ const { handleMcpCommand } = await import('./mcp-DV49L5g2.mjs');
13765
13765
  await handleMcpCommand();
13766
13766
  } catch (error) {
13767
13767
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./index-DveDBCaA.cjs');
5
- require('./types-1ZueD6ob.cjs');
4
+ require('./index-FxD6Abgx.cjs');
5
+ require('./types-DE03map-.cjs');
6
6
  require('zod');
7
7
  require('node:child_process');
8
8
  require('node:os');
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import 'chalk';
2
- import './index-UiX6h05D.mjs';
3
- import './types-DY9ef3Sf.mjs';
2
+ import './index-j2LYx2KW.mjs';
3
+ import './types-AO-TVSTa.mjs';
4
4
  import 'zod';
5
5
  import 'node:child_process';
6
6
  import 'node:os';
@@ -5,8 +5,8 @@ var path = require('node:path');
5
5
  var os = require('node:os');
6
6
  var node_child_process = require('node:child_process');
7
7
  var chalk = require('chalk');
8
- var persistence = require('./types-1ZueD6ob.cjs');
9
- var index = require('./index-DveDBCaA.cjs');
8
+ var persistence = require('./types-DE03map-.cjs');
9
+ var index = require('./index-FxD6Abgx.cjs');
10
10
  require('axios');
11
11
  require('node:util');
12
12
  require('node:fs/promises');
@@ -3,8 +3,8 @@ import { join, resolve } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { spawnSync } from 'node:child_process';
5
5
  import chalk from 'chalk';
6
- import { p as projectPath } from './types-DY9ef3Sf.mjs';
7
- import { t as tmuxSupportsSessionEnv } from './index-UiX6h05D.mjs';
6
+ import { p as projectPath } from './types-AO-TVSTa.mjs';
7
+ import { t as tmuxSupportsSessionEnv } from './index-j2LYx2KW.mjs';
8
8
  import 'axios';
9
9
  import 'node:util';
10
10
  import 'node:fs/promises';
package/dist/lib.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./types-1ZueD6ob.cjs');
3
+ var persistence = require('./types-DE03map-.cjs');
4
4
  require('axios');
5
5
  require('chalk');
6
6
  require('node:util');
package/dist/lib.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-DY9ef3Sf.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-AO-TVSTa.mjs';
2
2
  import 'axios';
3
3
  import 'chalk';
4
4
  import 'node:util';
@@ -3,9 +3,9 @@
3
3
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
4
4
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
5
5
  var z = require('zod');
6
- var index = require('./index-DveDBCaA.cjs');
6
+ var index = require('./index-FxD6Abgx.cjs');
7
7
  var limits = require('./limits-KdWKmwtH.cjs');
8
- var persistence = require('./types-1ZueD6ob.cjs');
8
+ var persistence = require('./types-DE03map-.cjs');
9
9
  require('chalk');
10
10
  require('node:os');
11
11
  require('node:crypto');
@@ -1,9 +1,9 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { z } from 'zod';
4
- import { p as pushClipboardViaDaemon } from './index-UiX6h05D.mjs';
4
+ import { p as pushClipboardViaDaemon } from './index-j2LYx2KW.mjs';
5
5
  import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, c as CLIPBOARD_MAX_BYTES } from './limits-CwFb5S2b.mjs';
6
- import { l as logger } from './types-DY9ef3Sf.mjs';
6
+ import { l as logger } from './types-AO-TVSTa.mjs';
7
7
  import 'chalk';
8
8
  import 'node:os';
9
9
  import 'node:crypto';
@@ -2,10 +2,10 @@ import { useStdout, useInput, Box, Text, render } from 'ink';
2
2
  import React, { useState, useRef, useEffect, useCallback } from 'react';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { join } from 'node:path';
5
- import { l as logger, h as connectionState, A as ApiClient, i as readSettings, e as errorLogMetadata, j as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-DY9ef3Sf.mjs';
6
- import { g as GEMINI_API_KEY_ENV, j as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, k as BaseReasoningProcessor, i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, l as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, r as registerKillSessionHandler, f as startHappyServer } from './index-UiX6h05D.mjs';
7
- import { A as AcpBackend } from './AcpBackend-kotk9Pwu.mjs';
8
- import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CDMM_UhY.mjs';
5
+ import { l as logger, h as connectionState, A as ApiClient, i as readSettings, e as errorLogMetadata, j as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-AO-TVSTa.mjs';
6
+ import { g as GEMINI_API_KEY_ENV, j as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, k as BaseReasoningProcessor, i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, l as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, r as registerKillSessionHandler, f as startHappyServer } from './index-j2LYx2KW.mjs';
7
+ import { A as AcpBackend } from './AcpBackend-C_simUP7.mjs';
8
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CFSdirvc.mjs';
9
9
  import 'axios';
10
10
  import 'chalk';
11
11
  import 'node:util';
@@ -4,10 +4,10 @@ var ink = require('ink');
4
4
  var React = require('react');
5
5
  var node_crypto = require('node:crypto');
6
6
  var path = require('node:path');
7
- var persistence = require('./types-1ZueD6ob.cjs');
8
- var index = require('./index-DveDBCaA.cjs');
9
- var AcpBackend = require('./AcpBackend-DxNg9T6Z.cjs');
10
- var config = require('./config-DcoxG-LO.cjs');
7
+ var persistence = require('./types-DE03map-.cjs');
8
+ var index = require('./index-FxD6Abgx.cjs');
9
+ var AcpBackend = require('./AcpBackend-CBZNjcYO.cjs');
10
+ var config = require('./config-BPPY98U1.cjs');
11
11
  require('axios');
12
12
  require('chalk');
13
13
  require('node:util');
@@ -5,9 +5,9 @@ var node_child_process = require('node:child_process');
5
5
  var os = require('node:os');
6
6
  var node_fs = require('node:fs');
7
7
  var path = require('node:path');
8
- var persistence = require('./types-1ZueD6ob.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-Im0qDPE0.cjs');
10
- var index = require('./index-DveDBCaA.cjs');
8
+ var persistence = require('./types-DE03map-.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-B9mJWEzL.cjs');
10
+ var index = require('./index-FxD6Abgx.cjs');
11
11
  var WebSocket = require('ws');
12
12
  var ed = require('@noble/ed25519');
13
13
  var sha2_js = require('@noble/hashes/sha2.js');
@@ -3,9 +3,9 @@ import { execFileSync } from 'node:child_process';
3
3
  import os from 'node:os';
4
4
  import { existsSync, readFileSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
- import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-DY9ef3Sf.mjs';
7
- import { A as AcpSessionManager } from './AcpSessionManager-DGY1Ss6H.mjs';
8
- import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-UiX6h05D.mjs';
6
+ import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-AO-TVSTa.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-G8w8Q6tt.mjs';
8
+ import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-j2LYx2KW.mjs';
9
9
  import WebSocket from 'ws';
10
10
  import * as ed from '@noble/ed25519';
11
11
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -3,8 +3,8 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var persistence = require('./types-1ZueD6ob.cjs');
7
- var index = require('./index-DveDBCaA.cjs');
6
+ var persistence = require('./types-DE03map-.cjs');
7
+ var index = require('./index-FxD6Abgx.cjs');
8
8
  require('axios');
9
9
  require('node:util');
10
10
  require('node:os');
@@ -1,8 +1,8 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { r as readPersistedSessions, c as configuration } from './types-DY9ef3Sf.mjs';
5
- import { b as sendUserMessage, a as sessionWebUrl } from './index-UiX6h05D.mjs';
4
+ import { r as readPersistedSessions, c as configuration } from './types-AO-TVSTa.mjs';
5
+ import { b as sendUserMessage, a as sessionWebUrl } from './index-j2LYx2KW.mjs';
6
6
  import 'axios';
7
7
  import 'node:util';
8
8
  import 'node:os';
@@ -3,8 +3,8 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var index = require('./index-DveDBCaA.cjs');
7
- var persistence = require('./types-1ZueD6ob.cjs');
6
+ var index = require('./index-FxD6Abgx.cjs');
7
+ var persistence = require('./types-DE03map-.cjs');
8
8
  require('node:os');
9
9
  require('node:crypto');
10
10
  require('cross-spawn');
@@ -1,8 +1,8 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync, statSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index-UiX6h05D.mjs';
5
- import { l as logger } from './types-DY9ef3Sf.mjs';
4
+ import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index-j2LYx2KW.mjs';
5
+ import { l as logger } from './types-AO-TVSTa.mjs';
6
6
  import 'node:os';
7
7
  import 'node:crypto';
8
8
  import 'cross-spawn';
@@ -29,7 +29,7 @@ import { SandboxManager } from '@anthropic-ai/sandbox-runtime';
29
29
  import { Expo } from 'expo-server-sdk';
30
30
 
31
31
  var name = "very-happy-cli";
32
- var version = "0.2.87";
32
+ var version = "0.2.88";
33
33
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
34
34
  var author = "Kirill Dubovitskiy";
35
35
  var contributors = [
@@ -142,12 +142,12 @@ var dependencies = {
142
142
  zod: "^4.0.0"
143
143
  };
144
144
  var optionalDependencies = {
145
- "very-happy-tools-arm64-darwin": "0.2.87",
146
- "very-happy-tools-x64-darwin": "0.2.87",
147
- "very-happy-tools-arm64-linux": "0.2.87",
148
- "very-happy-tools-x64-linux": "0.2.87",
149
- "very-happy-tools-arm64-win32": "0.2.87",
150
- "very-happy-tools-x64-win32": "0.2.87"
145
+ "very-happy-tools-arm64-darwin": "0.2.88",
146
+ "very-happy-tools-x64-darwin": "0.2.88",
147
+ "very-happy-tools-arm64-linux": "0.2.88",
148
+ "very-happy-tools-x64-linux": "0.2.88",
149
+ "very-happy-tools-arm64-win32": "0.2.88",
150
+ "very-happy-tools-x64-win32": "0.2.88"
151
151
  };
152
152
  var devDependencies = {
153
153
  "@slopus/happy-wire": "workspace:*",
@@ -2534,11 +2534,11 @@ function mapClaudeLogMessageToSessionEnvelopesInternal(message, state) {
2534
2534
  const usage = pickAssistantUsage(message);
2535
2535
  const blocks = Array.isArray(message.message?.content) ? message.message.content : [];
2536
2536
  for (const block of blocks) {
2537
- if (block.type === "text" && typeof block.text === "string") {
2537
+ if (block.type === "text" && typeof block.text === "string" && block.text.trim().length > 0) {
2538
2538
  envelopes.push(createEnvelope("agent", { t: "text", text: block.text }, { turn: turnId, subagent, claudeUuid, usage }));
2539
2539
  continue;
2540
2540
  }
2541
- if (block.type === "thinking" && typeof block.thinking === "string") {
2541
+ if (block.type === "thinking" && typeof block.thinking === "string" && block.thinking.trim().length > 0) {
2542
2542
  envelopes.push(createEnvelope("agent", { t: "text", text: block.thinking, thinking: true }, { turn: turnId, subagent, claudeUuid, usage }));
2543
2543
  continue;
2544
2544
  }
@@ -51,7 +51,7 @@ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
51
51
  var pty__namespace = /*#__PURE__*/_interopNamespaceDefault(pty);
52
52
 
53
53
  var name = "very-happy-cli";
54
- var version = "0.2.87";
54
+ var version = "0.2.88";
55
55
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
56
56
  var author = "Kirill Dubovitskiy";
57
57
  var contributors = [
@@ -164,12 +164,12 @@ var dependencies = {
164
164
  zod: "^4.0.0"
165
165
  };
166
166
  var optionalDependencies = {
167
- "very-happy-tools-arm64-darwin": "0.2.87",
168
- "very-happy-tools-x64-darwin": "0.2.87",
169
- "very-happy-tools-arm64-linux": "0.2.87",
170
- "very-happy-tools-x64-linux": "0.2.87",
171
- "very-happy-tools-arm64-win32": "0.2.87",
172
- "very-happy-tools-x64-win32": "0.2.87"
167
+ "very-happy-tools-arm64-darwin": "0.2.88",
168
+ "very-happy-tools-x64-darwin": "0.2.88",
169
+ "very-happy-tools-arm64-linux": "0.2.88",
170
+ "very-happy-tools-x64-linux": "0.2.88",
171
+ "very-happy-tools-arm64-win32": "0.2.88",
172
+ "very-happy-tools-x64-win32": "0.2.88"
173
173
  };
174
174
  var devDependencies = {
175
175
  "@slopus/happy-wire": "workspace:*",
@@ -1484,7 +1484,7 @@ class RpcHandlerManager {
1484
1484
  }
1485
1485
  }
1486
1486
 
1487
- const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-1ZueD6ob.cjs', document.baseURI).href))));
1487
+ const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-DE03map-.cjs', document.baseURI).href))));
1488
1488
  function projectPath() {
1489
1489
  const path = path$1.resolve(__dirname$1, "..");
1490
1490
  return path;
@@ -2556,11 +2556,11 @@ function mapClaudeLogMessageToSessionEnvelopesInternal(message, state) {
2556
2556
  const usage = pickAssistantUsage(message);
2557
2557
  const blocks = Array.isArray(message.message?.content) ? message.message.content : [];
2558
2558
  for (const block of blocks) {
2559
- if (block.type === "text" && typeof block.text === "string") {
2559
+ if (block.type === "text" && typeof block.text === "string" && block.text.trim().length > 0) {
2560
2560
  envelopes.push(createEnvelope("agent", { t: "text", text: block.text }, { turn: turnId, subagent, claudeUuid, usage }));
2561
2561
  continue;
2562
2562
  }
2563
- if (block.type === "thinking" && typeof block.thinking === "string") {
2563
+ if (block.type === "thinking" && typeof block.thinking === "string" && block.thinking.trim().length > 0) {
2564
2564
  envelopes.push(createEnvelope("agent", { t: "text", text: block.thinking, thinking: true }, { turn: turnId, subagent, claudeUuid, usage }));
2565
2565
  continue;
2566
2566
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.87",
3
+ "version": "0.2.88",
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": [
@@ -113,12 +113,12 @@
113
113
  "zod": "^4.0.0"
114
114
  },
115
115
  "optionalDependencies": {
116
- "very-happy-tools-arm64-darwin": "0.2.87",
117
- "very-happy-tools-x64-darwin": "0.2.87",
118
- "very-happy-tools-arm64-linux": "0.2.87",
119
- "very-happy-tools-x64-linux": "0.2.87",
120
- "very-happy-tools-arm64-win32": "0.2.87",
121
- "very-happy-tools-x64-win32": "0.2.87"
116
+ "very-happy-tools-arm64-darwin": "0.2.88",
117
+ "very-happy-tools-x64-darwin": "0.2.88",
118
+ "very-happy-tools-arm64-linux": "0.2.88",
119
+ "very-happy-tools-x64-linux": "0.2.88",
120
+ "very-happy-tools-arm64-win32": "0.2.88",
121
+ "very-happy-tools-x64-win32": "0.2.88"
122
122
  },
123
123
  "devDependencies": {
124
124
  "@slopus/happy-wire": "workspace:*",