very-happy-cli 0.2.79 → 0.2.80

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-DPcRh_3n.mjs → AcpBackend-DBJGqMwR.mjs} +1 -1
  2. package/dist/{AcpBackend-BuxJntPo.cjs → AcpBackend-_662AILI.cjs} +1 -1
  3. package/dist/{AcpSessionManager-DVGWPtBC.mjs → AcpSessionManager-DcWebwii.mjs} +1 -1
  4. package/dist/{AcpSessionManager-BOZPQZUQ.cjs → AcpSessionManager-ENIrbDWT.cjs} +1 -1
  5. package/dist/{config-T7eM_8eT.mjs → config-DHUFJkEr.mjs} +2 -2
  6. package/dist/{config-DB0v5eoc.cjs → config-Dn4CC1I_.cjs} +2 -2
  7. package/dist/{index-D_ZjCYNI.cjs → index-C9JZ3wyP.cjs} +4 -4
  8. package/dist/{index-BGvGqzc1.cjs → index-CdmSlaUU.cjs} +15 -15
  9. package/dist/{index-CuLe9SB7.mjs → index-D9OFwx0T.mjs} +5 -5
  10. package/dist/{index-HYOkniru.mjs → index-DoLyKWEW.mjs} +12 -12
  11. package/dist/index.cjs +2 -2
  12. package/dist/index.mjs +2 -2
  13. package/dist/{installTerminalHooks-CPKThY28.mjs → installTerminalHooks-D48YflmS.mjs} +2 -2
  14. package/dist/{installTerminalHooks-CAViJyYh.cjs → installTerminalHooks-RgJOM2ds.cjs} +2 -2
  15. package/dist/lib.cjs +1 -1
  16. package/dist/lib.mjs +1 -1
  17. package/dist/{mcp-DhQcmKO7.cjs → mcp-CIJ6lM8-.cjs} +2 -2
  18. package/dist/{mcp-DhUA22wj.mjs → mcp-DnO0vHep.mjs} +2 -2
  19. package/dist/{runGemini-CfWCL9K7.cjs → runGemini-CDko3vdP.cjs} +4 -4
  20. package/dist/{runGemini-BVxviS8T.mjs → runGemini-Cnvz6a6J.mjs} +4 -4
  21. package/dist/{runOpenClaw-DVTaZJtj.mjs → runOpenClaw-Cpxdqf9Z.mjs} +3 -3
  22. package/dist/{runOpenClaw-kSy7Os3C.cjs → runOpenClaw-Dk_FfroQ.cjs} +3 -3
  23. package/dist/{send-jzwPToBN.cjs → send-BavRmzTl.cjs} +2 -2
  24. package/dist/{send-DjjJQXJt.mjs → send-DJWwqdS_.mjs} +2 -2
  25. package/dist/{spawn-DFnYIiKP.cjs → spawn-Bqrneceh.cjs} +2 -2
  26. package/dist/{spawn-DBpgsEkS.mjs → spawn-DWf78N7k.mjs} +2 -2
  27. package/dist/{types-BRDN6zN2.mjs → types-B2DG32ua.mjs} +28 -12
  28. package/dist/{types-Dy7P_1bh.cjs → types-DL98ZceN.cjs} +28 -12
  29. package/package.json +7 -7
@@ -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-BRDN6zN2.mjs';
4
+ import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-B2DG32ua.mjs';
5
5
 
6
6
  const DEFAULT_TIMEOUTS = {
7
7
  /** Default initialization timeout: 60 seconds */
@@ -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-Dy7P_1bh.cjs');
6
+ var persistence = require('./types-DL98ZceN.cjs');
7
7
 
8
8
  const DEFAULT_TIMEOUTS = {
9
9
  /** Default initialization timeout: 60 seconds */
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { b as createEnvelope } from './types-BRDN6zN2.mjs';
2
+ import { b as createEnvelope } from './types-B2DG32ua.mjs';
3
3
 
4
4
  function turnOptions(turnId, time) {
5
5
  return turnId ? { turn: turnId, time } : { time };
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var cuid2 = require('@paralleldrive/cuid2');
4
- var persistence = require('./types-Dy7P_1bh.cjs');
4
+ var persistence = require('./types-DL98ZceN.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  return turnId ? { turn: turnId, time } : { time };
@@ -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-BRDN6zN2.mjs';
6
- import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-HYOkniru.mjs';
5
+ import { l as logger } from './types-B2DG32ua.mjs';
6
+ import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-DoLyKWEW.mjs';
7
7
  import 'axios';
8
8
  import 'chalk';
9
9
  import 'node:util';
@@ -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-Dy7P_1bh.cjs');
8
- var index = require('./index-BGvGqzc1.cjs');
7
+ var persistence = require('./types-DL98ZceN.cjs');
8
+ var index = require('./index-CdmSlaUU.cjs');
9
9
  require('axios');
10
10
  require('chalk');
11
11
  require('node:util');
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-BuxJntPo.cjs');
4
- var persistence = require('./types-Dy7P_1bh.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-BOZPQZUQ.cjs');
3
+ var AcpBackend = require('./AcpBackend-_662AILI.cjs');
4
+ var persistence = require('./types-DL98ZceN.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-ENIrbDWT.cjs');
6
6
  var node_crypto = require('node:crypto');
7
7
  var path = require('node:path');
8
- var index = require('./index-BGvGqzc1.cjs');
8
+ var index = require('./index-CdmSlaUU.cjs');
9
9
  require('node:child_process');
10
10
  require('@agentclientprotocol/sdk');
11
11
  require('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-Dy7P_1bh.cjs');
6
+ var persistence = require('./types-DL98ZceN.cjs');
7
7
  var spawn = require('cross-spawn');
8
8
  var path = require('node:path');
9
9
  var node_readline = require('node:readline');
@@ -8453,7 +8453,7 @@ const MAX_TITLE_CHARS = 60;
8453
8453
  const GENERATION_TIMEOUT_MS = 3e4;
8454
8454
  function resolveClaudeBinary() {
8455
8455
  try {
8456
- 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-BGvGqzc1.cjs', document.baseURI).href)));
8456
+ 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-CdmSlaUU.cjs', document.baseURI).href)));
8457
8457
  const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
8458
8458
  const { getClaudeCliPath } = require$1(utilsPath);
8459
8459
  const path$1 = getClaudeCliPath();
@@ -10570,9 +10570,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
10570
10570
  };
10571
10571
  }
10572
10572
 
10573
- 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-BGvGqzc1.cjs', document.baseURI).href)));
10573
+ 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-CdmSlaUU.cjs', document.baseURI).href)));
10574
10574
  const __dirname$1 = path.dirname(__filename$1);
10575
- const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-BGvGqzc1.cjs', document.baseURI).href)));
10575
+ const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CdmSlaUU.cjs', document.baseURI).href)));
10576
10576
  const PRISMA_QUERY_ENGINE_FILES = {
10577
10577
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
10578
10578
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -13184,7 +13184,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13184
13184
  process.exit(0);
13185
13185
  } else if (subcommand === "install-terminal-hooks") {
13186
13186
  try {
13187
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-CAViJyYh.cjs'); });
13187
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-RgJOM2ds.cjs'); });
13188
13188
  const command = parseTerminalHooksArgs(args.slice(1));
13189
13189
  if (command.action === "help") {
13190
13190
  console.log(TERMINAL_HOOKS_HELP);
@@ -13201,7 +13201,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13201
13201
  }
13202
13202
  } else if (subcommand === "spawn") {
13203
13203
  try {
13204
- const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-DFnYIiKP.cjs'); });
13204
+ const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-Bqrneceh.cjs'); });
13205
13205
  await handleSpawnCommand(args.slice(1));
13206
13206
  } catch (error) {
13207
13207
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13213,7 +13213,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13213
13213
  return;
13214
13214
  } else if (subcommand === "send") {
13215
13215
  try {
13216
- const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-jzwPToBN.cjs'); });
13216
+ const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-BavRmzTl.cjs'); });
13217
13217
  await handleSendCommand(args.slice(1));
13218
13218
  } catch (error) {
13219
13219
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13319,9 +13319,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13319
13319
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
13320
13320
  const projectId = args[3];
13321
13321
  try {
13322
- const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-DB0v5eoc.cjs'); });
13323
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-Dy7P_1bh.cjs'); }).then(function (n) { return n.persistence; });
13324
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-Dy7P_1bh.cjs'); }).then(function (n) { return n.api; });
13322
+ const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-Dn4CC1I_.cjs'); });
13323
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-DL98ZceN.cjs'); }).then(function (n) { return n.persistence; });
13324
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-DL98ZceN.cjs'); }).then(function (n) { return n.api; });
13325
13325
  let userEmail = void 0;
13326
13326
  try {
13327
13327
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -13352,7 +13352,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13352
13352
  }
13353
13353
  if (geminiSubcommand === "project" && args[2] === "get") {
13354
13354
  try {
13355
- const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-DB0v5eoc.cjs'); });
13355
+ const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-Dn4CC1I_.cjs'); });
13356
13356
  const config = readGeminiLocalConfig();
13357
13357
  if (config.googleCloudProject) {
13358
13358
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -13392,7 +13392,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13392
13392
  process.exit(0);
13393
13393
  }
13394
13394
  try {
13395
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-CfWCL9K7.cjs'); });
13395
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-CDko3vdP.cjs'); });
13396
13396
  let startedBy = void 0;
13397
13397
  for (let i = 1; i < args.length; i++) {
13398
13398
  if (args[i] === "--started-by") {
@@ -13414,7 +13414,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13414
13414
  return;
13415
13415
  } else if (subcommand === "acp") {
13416
13416
  try {
13417
- const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-D_ZjCYNI.cjs'); });
13417
+ const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-C9JZ3wyP.cjs'); });
13418
13418
  let startedBy = void 0;
13419
13419
  let verbose = false;
13420
13420
  const acpArgs = [];
@@ -13454,7 +13454,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13454
13454
  return;
13455
13455
  } else if (subcommand === "openclaw") {
13456
13456
  try {
13457
- const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-kSy7Os3C.cjs'); });
13457
+ const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-Dk_FfroQ.cjs'); });
13458
13458
  let startedBy = void 0;
13459
13459
  let verbose = false;
13460
13460
  let gatewayUrl;
@@ -13505,7 +13505,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13505
13505
  return;
13506
13506
  } else if (subcommand === "mcp" && args.length === 1) {
13507
13507
  try {
13508
- const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-DhQcmKO7.cjs'); });
13508
+ const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-CIJ6lM8-.cjs'); });
13509
13509
  await handleMcpCommand();
13510
13510
  } catch (error) {
13511
13511
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
@@ -1,10 +1,10 @@
1
- import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-DPcRh_3n.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-DPcRh_3n.mjs';
3
- import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-BRDN6zN2.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-DVGWPtBC.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-DBJGqMwR.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-DBJGqMwR.mjs';
3
+ import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-B2DG32ua.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-DcWebwii.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-HYOkniru.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-DoLyKWEW.mjs';
8
8
  import 'node:child_process';
9
9
  import '@agentclientprotocol/sdk';
10
10
  import 'axios';
@@ -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, f as packageJson, i as readSettings, v as readCredentials, x as credentialRelayProblem, y as deriveLocalCliUpdateSummary, j as encodeBase64, z as updateSettings, B as encodeBase64Url, C as decodeBase64, D as writeCredentialsLegacy, E as writeCredentialsDataKey, F as readCredentialsForConfiguredRelay, G as encrypt, r as readPersistedSessions, H as getLocalHappyAgentCredentialPath, J as readLocalHappyAgentCredentials, K as decryptWithDataKey, L as decryptLegacy, M as extractCompleteLines, N as decideBackfill, O as parseTerminalHookPayload, P as decideMirrorBinding, Q as persistSession, S as MIRROR_BACKFILL_LINES_DEFAULT, T as mirrorLineKey, U as mirrorLocalId, V as detectResumeSupport, W as detectCLIAvailability, X as acquireDaemonLock, Y as summarizeSpawnSessionForLog, Z as deletePersistedSessions, _ as decrypt, $ as writeDaemonState, A as ApiClient, a0 as fetchCliUpdateState, a1 as resolveCliUpdateCheckInterval, a2 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a3 as releaseDaemonLock, a4 as isValidSessionId, a5 as listVhTerminals, a6 as isValidTerminalId, a7 as readVhTerminal, a8 as sendToVhTerminal, h as connectionState, a9 as startOfflineReconnection, aa as clearCredentials, ab as clearMachineId, k as ensurePrivateDirectorySync, w as writePrivateFileSync, ac as SandboxConfigSchema, b as createEnvelope, ad as CodexAppServerClient, ae as getLatestDaemonLog } from './types-BRDN6zN2.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, f as packageJson, i as readSettings, v as readCredentials, x as credentialRelayProblem, y as deriveLocalCliUpdateSummary, j as encodeBase64, z as updateSettings, B as encodeBase64Url, C as decodeBase64, D as writeCredentialsLegacy, E as writeCredentialsDataKey, F as readCredentialsForConfiguredRelay, G as encrypt, r as readPersistedSessions, H as getLocalHappyAgentCredentialPath, J as readLocalHappyAgentCredentials, K as decryptWithDataKey, L as decryptLegacy, M as extractCompleteLines, N as decideBackfill, O as parseTerminalHookPayload, P as decideMirrorBinding, Q as persistSession, S as MIRROR_BACKFILL_LINES_DEFAULT, T as mirrorLineKey, U as mirrorLocalId, V as detectResumeSupport, W as detectCLIAvailability, X as acquireDaemonLock, Y as summarizeSpawnSessionForLog, Z as deletePersistedSessions, _ as decrypt, $ as writeDaemonState, A as ApiClient, a0 as fetchCliUpdateState, a1 as resolveCliUpdateCheckInterval, a2 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a3 as releaseDaemonLock, a4 as isValidSessionId, a5 as listVhTerminals, a6 as isValidTerminalId, a7 as readVhTerminal, a8 as sendToVhTerminal, h as connectionState, a9 as startOfflineReconnection, aa as clearCredentials, ab as clearMachineId, k as ensurePrivateDirectorySync, w as writePrivateFileSync, ac as SandboxConfigSchema, b as createEnvelope, ad as CodexAppServerClient, ae as getLatestDaemonLog } from './types-B2DG32ua.mjs';
5
5
  import spawn$1, { spawn } from 'cross-spawn';
6
6
  import path, { join, resolve, isAbsolute, normalize, sep, dirname } from 'node:path';
7
7
  import { createInterface } from 'node:readline';
@@ -13162,7 +13162,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13162
13162
  process.exit(0);
13163
13163
  } else if (subcommand === "install-terminal-hooks") {
13164
13164
  try {
13165
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-CPKThY28.mjs');
13165
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-D48YflmS.mjs');
13166
13166
  const command = parseTerminalHooksArgs(args.slice(1));
13167
13167
  if (command.action === "help") {
13168
13168
  console.log(TERMINAL_HOOKS_HELP);
@@ -13179,7 +13179,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13179
13179
  }
13180
13180
  } else if (subcommand === "spawn") {
13181
13181
  try {
13182
- const { handleSpawnCommand } = await import('./spawn-DBpgsEkS.mjs');
13182
+ const { handleSpawnCommand } = await import('./spawn-DWf78N7k.mjs');
13183
13183
  await handleSpawnCommand(args.slice(1));
13184
13184
  } catch (error) {
13185
13185
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13191,7 +13191,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13191
13191
  return;
13192
13192
  } else if (subcommand === "send") {
13193
13193
  try {
13194
- const { handleSendCommand } = await import('./send-DjjJQXJt.mjs');
13194
+ const { handleSendCommand } = await import('./send-DJWwqdS_.mjs');
13195
13195
  await handleSendCommand(args.slice(1));
13196
13196
  } catch (error) {
13197
13197
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -13297,9 +13297,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13297
13297
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
13298
13298
  const projectId = args[3];
13299
13299
  try {
13300
- const { saveGoogleCloudProjectToConfig } = await import('./config-T7eM_8eT.mjs');
13301
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-BRDN6zN2.mjs').then(function (n) { return n.af; });
13302
- const { ApiClient: ApiClient2 } = await import('./types-BRDN6zN2.mjs').then(function (n) { return n.ag; });
13300
+ const { saveGoogleCloudProjectToConfig } = await import('./config-DHUFJkEr.mjs');
13301
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-B2DG32ua.mjs').then(function (n) { return n.af; });
13302
+ const { ApiClient: ApiClient2 } = await import('./types-B2DG32ua.mjs').then(function (n) { return n.ag; });
13303
13303
  let userEmail = void 0;
13304
13304
  try {
13305
13305
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -13330,7 +13330,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13330
13330
  }
13331
13331
  if (geminiSubcommand === "project" && args[2] === "get") {
13332
13332
  try {
13333
- const { readGeminiLocalConfig } = await import('./config-T7eM_8eT.mjs');
13333
+ const { readGeminiLocalConfig } = await import('./config-DHUFJkEr.mjs');
13334
13334
  const config = readGeminiLocalConfig();
13335
13335
  if (config.googleCloudProject) {
13336
13336
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -13370,7 +13370,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13370
13370
  process.exit(0);
13371
13371
  }
13372
13372
  try {
13373
- const { runGemini } = await import('./runGemini-BVxviS8T.mjs');
13373
+ const { runGemini } = await import('./runGemini-Cnvz6a6J.mjs');
13374
13374
  let startedBy = void 0;
13375
13375
  for (let i = 1; i < args.length; i++) {
13376
13376
  if (args[i] === "--started-by") {
@@ -13392,7 +13392,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13392
13392
  return;
13393
13393
  } else if (subcommand === "acp") {
13394
13394
  try {
13395
- const { runAcp, resolveAcpAgentConfig } = await import('./index-CuLe9SB7.mjs');
13395
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-D9OFwx0T.mjs');
13396
13396
  let startedBy = void 0;
13397
13397
  let verbose = false;
13398
13398
  const acpArgs = [];
@@ -13432,7 +13432,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13432
13432
  return;
13433
13433
  } else if (subcommand === "openclaw") {
13434
13434
  try {
13435
- const { runOpenClaw } = await import('./runOpenClaw-DVTaZJtj.mjs');
13435
+ const { runOpenClaw } = await import('./runOpenClaw-Cpxdqf9Z.mjs');
13436
13436
  let startedBy = void 0;
13437
13437
  let verbose = false;
13438
13438
  let gatewayUrl;
@@ -13483,7 +13483,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
13483
13483
  return;
13484
13484
  } else if (subcommand === "mcp" && args.length === 1) {
13485
13485
  try {
13486
- const { handleMcpCommand } = await import('./mcp-DhUA22wj.mjs');
13486
+ const { handleMcpCommand } = await import('./mcp-DnO0vHep.mjs');
13487
13487
  await handleMcpCommand();
13488
13488
  } catch (error) {
13489
13489
  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-BGvGqzc1.cjs');
5
- require('./types-Dy7P_1bh.cjs');
4
+ require('./index-CdmSlaUU.cjs');
5
+ require('./types-DL98ZceN.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-HYOkniru.mjs';
3
- import './types-BRDN6zN2.mjs';
2
+ import './index-DoLyKWEW.mjs';
3
+ import './types-B2DG32ua.mjs';
4
4
  import 'zod';
5
5
  import 'node:child_process';
6
6
  import 'node:os';
@@ -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-BRDN6zN2.mjs';
7
- import { t as tmuxSupportsSessionEnv } from './index-HYOkniru.mjs';
6
+ import { p as projectPath } from './types-B2DG32ua.mjs';
7
+ import { t as tmuxSupportsSessionEnv } from './index-DoLyKWEW.mjs';
8
8
  import 'axios';
9
9
  import 'node:util';
10
10
  import 'node:fs/promises';
@@ -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-Dy7P_1bh.cjs');
9
- var index = require('./index-BGvGqzc1.cjs');
8
+ var persistence = require('./types-DL98ZceN.cjs');
9
+ var index = require('./index-CdmSlaUU.cjs');
10
10
  require('axios');
11
11
  require('node:util');
12
12
  require('node:fs/promises');
package/dist/lib.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./types-Dy7P_1bh.cjs');
3
+ var persistence = require('./types-DL98ZceN.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-BRDN6zN2.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-B2DG32ua.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-BGvGqzc1.cjs');
6
+ var index = require('./index-CdmSlaUU.cjs');
7
7
  var limits = require('./limits-KdWKmwtH.cjs');
8
- var persistence = require('./types-Dy7P_1bh.cjs');
8
+ var persistence = require('./types-DL98ZceN.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-HYOkniru.mjs';
4
+ import { p as pushClipboardViaDaemon } from './index-DoLyKWEW.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-BRDN6zN2.mjs';
6
+ import { l as logger } from './types-B2DG32ua.mjs';
7
7
  import 'chalk';
8
8
  import 'node:os';
9
9
  import 'node:crypto';
@@ -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-Dy7P_1bh.cjs');
8
- var index = require('./index-BGvGqzc1.cjs');
9
- var AcpBackend = require('./AcpBackend-BuxJntPo.cjs');
10
- var config = require('./config-DB0v5eoc.cjs');
7
+ var persistence = require('./types-DL98ZceN.cjs');
8
+ var index = require('./index-CdmSlaUU.cjs');
9
+ var AcpBackend = require('./AcpBackend-_662AILI.cjs');
10
+ var config = require('./config-Dn4CC1I_.cjs');
11
11
  require('axios');
12
12
  require('chalk');
13
13
  require('node:util');
@@ -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-BRDN6zN2.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-HYOkniru.mjs';
7
- import { A as AcpBackend } from './AcpBackend-DPcRh_3n.mjs';
8
- import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-T7eM_8eT.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-B2DG32ua.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-DoLyKWEW.mjs';
7
+ import { A as AcpBackend } from './AcpBackend-DBJGqMwR.mjs';
8
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DHUFJkEr.mjs';
9
9
  import 'axios';
10
10
  import 'chalk';
11
11
  import 'node:util';
@@ -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-BRDN6zN2.mjs';
7
- import { A as AcpSessionManager } from './AcpSessionManager-DVGWPtBC.mjs';
8
- import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-HYOkniru.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-B2DG32ua.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-DcWebwii.mjs';
8
+ import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-DoLyKWEW.mjs';
9
9
  import WebSocket from 'ws';
10
10
  import * as ed from '@noble/ed25519';
11
11
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -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-Dy7P_1bh.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-BOZPQZUQ.cjs');
10
- var index = require('./index-BGvGqzc1.cjs');
8
+ var persistence = require('./types-DL98ZceN.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-ENIrbDWT.cjs');
10
+ var index = require('./index-CdmSlaUU.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,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-Dy7P_1bh.cjs');
7
- var index = require('./index-BGvGqzc1.cjs');
6
+ var persistence = require('./types-DL98ZceN.cjs');
7
+ var index = require('./index-CdmSlaUU.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-BRDN6zN2.mjs';
5
- import { b as sendUserMessage, a as sessionWebUrl } from './index-HYOkniru.mjs';
4
+ import { r as readPersistedSessions, c as configuration } from './types-B2DG32ua.mjs';
5
+ import { b as sendUserMessage, a as sessionWebUrl } from './index-DoLyKWEW.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-BGvGqzc1.cjs');
7
- var persistence = require('./types-Dy7P_1bh.cjs');
6
+ var index = require('./index-CdmSlaUU.cjs');
7
+ var persistence = require('./types-DL98ZceN.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-HYOkniru.mjs';
5
- import { l as logger } from './types-BRDN6zN2.mjs';
4
+ import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index-DoLyKWEW.mjs';
5
+ import { l as logger } from './types-B2DG32ua.mjs';
6
6
  import 'node:os';
7
7
  import 'node:crypto';
8
8
  import 'cross-spawn';
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
  import chalk from 'chalk';
3
3
  import { inspect } from 'node:util';
4
- import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync, constants, unlinkSync, renameSync, createReadStream, createWriteStream } from 'node:fs';
4
+ import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync, constants, unlinkSync, renameSync, accessSync, createReadStream, createWriteStream } from 'node:fs';
5
5
  import os$1, { homedir } from 'node:os';
6
6
  import { join, basename, isAbsolute, resolve as resolve$1 } from 'node:path';
7
7
  import { mkdir, chmod, writeFile, stat as stat$1, readdir as readdir$1, lstat, open, unlink as unlink$1, readFile as readFile$1, rename as rename$1, copyFile } from 'node:fs/promises';
@@ -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.79";
32
+ var version = "0.2.80";
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.79",
146
- "very-happy-tools-x64-darwin": "0.2.79",
147
- "very-happy-tools-arm64-linux": "0.2.79",
148
- "very-happy-tools-x64-linux": "0.2.79",
149
- "very-happy-tools-arm64-win32": "0.2.79",
150
- "very-happy-tools-x64-win32": "0.2.79"
145
+ "very-happy-tools-arm64-darwin": "0.2.80",
146
+ "very-happy-tools-x64-darwin": "0.2.80",
147
+ "very-happy-tools-arm64-linux": "0.2.80",
148
+ "very-happy-tools-x64-linux": "0.2.80",
149
+ "very-happy-tools-arm64-win32": "0.2.80",
150
+ "very-happy-tools-x64-win32": "0.2.80"
151
151
  };
152
152
  var devDependencies = {
153
153
  "@slopus/happy-wire": "workspace:*",
@@ -9981,9 +9981,25 @@ function pasteSpoolDir() {
9981
9981
  }
9982
9982
  return dir;
9983
9983
  }
9984
+ function resolveDefaultShell(platform, env, isExecutable = (path) => {
9985
+ try {
9986
+ accessSync(path, constants.X_OK);
9987
+ return true;
9988
+ } catch {
9989
+ return false;
9990
+ }
9991
+ }) {
9992
+ if (platform === "win32") return env.COMSPEC || "powershell.exe";
9993
+ for (const candidate of [env.SHELL, "/bin/bash", "/bin/sh"]) {
9994
+ if (candidate && isExecutable(candidate)) return candidate;
9995
+ }
9996
+ return "/bin/sh";
9997
+ }
9984
9998
  function defaultShell() {
9985
- if (process.platform === "win32") return process.env.COMSPEC || "powershell.exe";
9986
- return process.env.SHELL || "/bin/bash";
9999
+ return resolveDefaultShell(process.platform, process.env);
10000
+ }
10001
+ function tmuxNewSessionArgs(session, cols, rows, cwd, envFlags, shell) {
10002
+ return ["new-session", "-d", ...envFlags, "-s", session, "-x", String(cols), "-y", String(rows), "-c", cwd, shell];
9987
10003
  }
9988
10004
  function ptyEnv() {
9989
10005
  const env = {};
@@ -10847,7 +10863,7 @@ class WebTerminalManager {
10847
10863
  try {
10848
10864
  const created = spawnSync(
10849
10865
  "tmux",
10850
- ["new-session", "-d", ...envFlags, "-s", tmuxSession, "-x", String(cols), "-y", String(rows), "-c", cwd],
10866
+ tmuxNewSessionArgs(tmuxSession, cols, rows, cwd, envFlags, defaultShell()),
10851
10867
  { stdio: "ignore", timeout: TMUX_CREATE_TIMEOUT_MS, env }
10852
10868
  );
10853
10869
  createdNew = created.status === 0;
@@ -10904,7 +10920,7 @@ class WebTerminalManager {
10904
10920
  if (!alive) {
10905
10921
  const retry = spawnSync(
10906
10922
  "tmux",
10907
- ["new-session", "-d", ...envFlags, "-s", tmuxSession, "-x", String(cols), "-y", String(rows), "-c", cwd],
10923
+ tmuxNewSessionArgs(tmuxSession, cols, rows, cwd, envFlags, defaultShell()),
10908
10924
  { stdio: "ignore", timeout: TMUX_CREATE_TIMEOUT_MS, env }
10909
10925
  );
10910
10926
  createdNew = retry.status === 0;
@@ -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.79";
54
+ var version = "0.2.80";
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.79",
168
- "very-happy-tools-x64-darwin": "0.2.79",
169
- "very-happy-tools-arm64-linux": "0.2.79",
170
- "very-happy-tools-x64-linux": "0.2.79",
171
- "very-happy-tools-arm64-win32": "0.2.79",
172
- "very-happy-tools-x64-win32": "0.2.79"
167
+ "very-happy-tools-arm64-darwin": "0.2.80",
168
+ "very-happy-tools-x64-darwin": "0.2.80",
169
+ "very-happy-tools-arm64-linux": "0.2.80",
170
+ "very-happy-tools-x64-linux": "0.2.80",
171
+ "very-happy-tools-arm64-win32": "0.2.80",
172
+ "very-happy-tools-x64-win32": "0.2.80"
173
173
  };
174
174
  var devDependencies = {
175
175
  "@slopus/happy-wire": "workspace:*",
@@ -1480,7 +1480,7 @@ class RpcHandlerManager {
1480
1480
  }
1481
1481
  }
1482
1482
 
1483
- 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-Dy7P_1bh.cjs', document.baseURI).href))));
1483
+ 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-DL98ZceN.cjs', document.baseURI).href))));
1484
1484
  function projectPath() {
1485
1485
  const path = path$1.resolve(__dirname$1, "..");
1486
1486
  return path;
@@ -10003,9 +10003,25 @@ function pasteSpoolDir() {
10003
10003
  }
10004
10004
  return dir;
10005
10005
  }
10006
+ function resolveDefaultShell(platform, env, isExecutable = (path) => {
10007
+ try {
10008
+ node_fs.accessSync(path, node_fs.constants.X_OK);
10009
+ return true;
10010
+ } catch {
10011
+ return false;
10012
+ }
10013
+ }) {
10014
+ if (platform === "win32") return env.COMSPEC || "powershell.exe";
10015
+ for (const candidate of [env.SHELL, "/bin/bash", "/bin/sh"]) {
10016
+ if (candidate && isExecutable(candidate)) return candidate;
10017
+ }
10018
+ return "/bin/sh";
10019
+ }
10006
10020
  function defaultShell() {
10007
- if (process.platform === "win32") return process.env.COMSPEC || "powershell.exe";
10008
- return process.env.SHELL || "/bin/bash";
10021
+ return resolveDefaultShell(process.platform, process.env);
10022
+ }
10023
+ function tmuxNewSessionArgs(session, cols, rows, cwd, envFlags, shell) {
10024
+ return ["new-session", "-d", ...envFlags, "-s", session, "-x", String(cols), "-y", String(rows), "-c", cwd, shell];
10009
10025
  }
10010
10026
  function ptyEnv() {
10011
10027
  const env = {};
@@ -10869,7 +10885,7 @@ class WebTerminalManager {
10869
10885
  try {
10870
10886
  const created = node_child_process.spawnSync(
10871
10887
  "tmux",
10872
- ["new-session", "-d", ...envFlags, "-s", tmuxSession, "-x", String(cols), "-y", String(rows), "-c", cwd],
10888
+ tmuxNewSessionArgs(tmuxSession, cols, rows, cwd, envFlags, defaultShell()),
10873
10889
  { stdio: "ignore", timeout: TMUX_CREATE_TIMEOUT_MS, env }
10874
10890
  );
10875
10891
  createdNew = created.status === 0;
@@ -10926,7 +10942,7 @@ class WebTerminalManager {
10926
10942
  if (!alive) {
10927
10943
  const retry = node_child_process.spawnSync(
10928
10944
  "tmux",
10929
- ["new-session", "-d", ...envFlags, "-s", tmuxSession, "-x", String(cols), "-y", String(rows), "-c", cwd],
10945
+ tmuxNewSessionArgs(tmuxSession, cols, rows, cwd, envFlags, defaultShell()),
10930
10946
  { stdio: "ignore", timeout: TMUX_CREATE_TIMEOUT_MS, env }
10931
10947
  );
10932
10948
  createdNew = retry.status === 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.79",
3
+ "version": "0.2.80",
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.79",
117
- "very-happy-tools-x64-darwin": "0.2.79",
118
- "very-happy-tools-arm64-linux": "0.2.79",
119
- "very-happy-tools-x64-linux": "0.2.79",
120
- "very-happy-tools-arm64-win32": "0.2.79",
121
- "very-happy-tools-x64-win32": "0.2.79"
116
+ "very-happy-tools-arm64-darwin": "0.2.80",
117
+ "very-happy-tools-x64-darwin": "0.2.80",
118
+ "very-happy-tools-arm64-linux": "0.2.80",
119
+ "very-happy-tools-x64-linux": "0.2.80",
120
+ "very-happy-tools-arm64-win32": "0.2.80",
121
+ "very-happy-tools-x64-win32": "0.2.80"
122
122
  },
123
123
  "devDependencies": {
124
124
  "@slopus/happy-wire": "workspace:*",