very-happy-cli 0.2.114 → 0.2.116

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 (35) hide show
  1. package/dist/{AcpBackend-BYv1pHW6.cjs → AcpBackend-CauAQpC1.cjs} +1 -1
  2. package/dist/{AcpBackend-4DC6CDpP.mjs → AcpBackend-CfKPvoTU.mjs} +1 -1
  3. package/dist/{AcpSessionManager-CvDQWnwm.mjs → AcpSessionManager-BQ6pBRW4.mjs} +1 -1
  4. package/dist/{AcpSessionManager-BBCEuz5G.cjs → AcpSessionManager-CA6xeET_.cjs} +1 -1
  5. package/dist/{config-B1W5KTvn.cjs → config-BoteFn-v.cjs} +2 -2
  6. package/dist/{config-BYEj8cnm.mjs → config-BpR_CwZu.mjs} +2 -2
  7. package/dist/{index-CQ9f70v9.cjs → index-4jiUeiUz.cjs} +187 -20
  8. package/dist/{index-B-PX710g.mjs → index-C45xN8s0.mjs} +5 -5
  9. package/dist/{index-DXJ4FLp5.mjs → index-D7azxfcs.mjs} +2 -2
  10. package/dist/{index-BtFBYvj8.cjs → index-DWmhmji9.cjs} +4 -4
  11. package/dist/{index-DJcR5PQb.mjs → index-Dq-eFp89.mjs} +188 -21
  12. package/dist/{index-CiNMkjGe.cjs → index-lX1UliOs.cjs} +2 -2
  13. package/dist/index.cjs +2 -2
  14. package/dist/index.mjs +2 -2
  15. package/dist/{installTerminalHooks-CvWutFrA.cjs → installTerminalHooks-DnaFkrTF.cjs} +2 -2
  16. package/dist/{installTerminalHooks-BKqlOoi4.mjs → installTerminalHooks-k3TrBHD0.mjs} +2 -2
  17. package/dist/lib.cjs +1 -1
  18. package/dist/lib.d.cts +33 -0
  19. package/dist/lib.d.mts +33 -0
  20. package/dist/lib.mjs +1 -1
  21. package/dist/{mcp-kyB44gVF.mjs → mcp-DRePTOap.mjs} +2 -2
  22. package/dist/{mcp-KhfiJ6OC.cjs → mcp-DSpEpM_2.cjs} +2 -2
  23. package/dist/{runGemini-DYN1hVth.cjs → runGemini-IWHyBq0A.cjs} +4 -4
  24. package/dist/{runGemini-Jn7L2hqR.mjs → runGemini-_9-a7duU.mjs} +4 -4
  25. package/dist/{runOpenClaw-DHqzKgke.cjs → runOpenClaw-0myYIz1U.cjs} +3 -3
  26. package/dist/{runOpenClaw-BZL1CSvh.mjs → runOpenClaw-Boq6LQ9a.mjs} +3 -3
  27. package/dist/{send-m-ZqzS6w.cjs → send-CwWvFfay.cjs} +2 -2
  28. package/dist/{send-DlNrAHnH.mjs → send-Cyo6mgMl.mjs} +2 -2
  29. package/dist/{sessions-Qbk_H0Av.cjs → sessions-CbzqYiAy.cjs} +2 -2
  30. package/dist/{sessions-CpM_qzf7.mjs → sessions-lvfTH_ql.mjs} +2 -2
  31. package/dist/{spawn-Do8fUG8J.mjs → spawn-CU0DMauA.mjs} +2 -2
  32. package/dist/{spawn-D09KFk0I.cjs → spawn-DQ6FTUK9.cjs} +2 -2
  33. package/dist/{types-D14vU6_q.cjs → types-C5kEpkcZ.cjs} +156 -15
  34. package/dist/{types-C6vCFbPv.mjs → types-Ds0SiQ1D.mjs} +155 -14
  35. 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-D14vU6_q.cjs');
6
+ var persistence = require('./types-C5kEpkcZ.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-C6vCFbPv.mjs';
4
+ import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-Ds0SiQ1D.mjs';
5
5
 
6
6
  const DEFAULT_TIMEOUTS = {
7
7
  /** Default initialization timeout: 60 seconds */
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { b as createEnvelope } from './types-C6vCFbPv.mjs';
2
+ import { b as createEnvelope } from './types-Ds0SiQ1D.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-D14vU6_q.cjs');
4
+ var persistence = require('./types-C5kEpkcZ.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  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-D14vU6_q.cjs');
8
- var index = require('./index-CQ9f70v9.cjs');
7
+ var persistence = require('./types-C5kEpkcZ.cjs');
8
+ var index = require('./index-4jiUeiUz.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-C6vCFbPv.mjs';
6
- import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-DJcR5PQb.mjs';
5
+ import { l as logger } from './types-Ds0SiQ1D.mjs';
6
+ import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-Dq-eFp89.mjs';
7
7
  import 'axios';
8
8
  import 'chalk';
9
9
  import 'node:util';
@@ -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-D14vU6_q.cjs');
6
+ var persistence = require('./types-C5kEpkcZ.cjs');
7
7
  var spawn = require('cross-spawn');
8
8
  var path = require('node:path');
9
9
  var node_readline = require('node:readline');
@@ -7108,6 +7108,32 @@ function describeMachineIdentityConflict(conflict) {
7108
7108
  return `${cause} Two daemons sharing one machine id fight over the same machine row, and a copied ~/.claude/.credentials.json makes them invalidate each other's Claude login. Fix: run 'very-happy auth login --force' on this machine (it mints a fresh machine id), then log in to Claude here separately with 'claude'. (${diffs})`;
7109
7109
  }
7110
7110
 
7111
+ const VERSION_RE = /very-happy version:\s*(\d+\.\d+\.\d+[^\s]*)/i;
7112
+ function decideHandover(run) {
7113
+ if (run.spawnError) return { action: "hold", reason: `new bundle could not be started: ${run.spawnError}` };
7114
+ if (run.timedOut) return { action: "hold", reason: "new bundle did not answer --version within the timeout" };
7115
+ if (run.exitCode !== 0) return { action: "hold", reason: `new bundle exited ${run.exitCode} on --version` };
7116
+ if (!VERSION_RE.test(run.stdout)) {
7117
+ return { action: "hold", reason: "new bundle printed no recognisable version" };
7118
+ }
7119
+ return { action: "handover" };
7120
+ }
7121
+
7122
+ function decideAutoUpdate(context) {
7123
+ if (!context.enabled) return { action: "skip", reason: "auto-update disabled" };
7124
+ const target = context.recommendedVersion;
7125
+ if (!target) return { action: "skip", reason: "no recommended version published" };
7126
+ if (target === context.currentVersion) return { action: "skip", reason: "already current" };
7127
+ if (context.failedVersion === target) {
7128
+ return { action: "skip", reason: `already failed to install ${target} once` };
7129
+ }
7130
+ if (!context.idle) return { action: "skip", reason: "machine is busy" };
7131
+ return { action: "install", version: target };
7132
+ }
7133
+ function autoUpdateInstallArgs(version) {
7134
+ return ["i", "-g", "--allow-scripts=very-happy-cli,node-pty", `very-happy-cli@${version}`];
7135
+ }
7136
+
7111
7137
  const CLAUDE_KEYCHAIN_SERVICE_PREFIX = "Claude Code";
7112
7138
  function keychainIdentity(env = process.env, deps = {}) {
7113
7139
  const home = deps.home ?? os.homedir();
@@ -7171,7 +7197,7 @@ function parseJsonObject(text) {
7171
7197
  return null;
7172
7198
  }
7173
7199
  }
7174
- function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CQ9f70v9.cjs', document.baseURI).href))).resolve(s)) {
7200
+ function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-4jiUeiUz.cjs', document.baseURI).href))).resolve(s)) {
7175
7201
  const platformArch = `${platform}-${arch}`;
7176
7202
  const candidates = [
7177
7203
  `@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
@@ -8336,8 +8362,96 @@ const initialMachineMetadata = {
8336
8362
  cliAvailability: persistence.detectCLIAvailability(),
8337
8363
  resumeSupport: { ...persistence.detectResumeSupport(), rpcAvailable: true }
8338
8364
  };
8365
+ async function preflightNewBundle(bundlePath) {
8366
+ const home = fs$1.mkdtempSync(path$1.join(os.tmpdir(), "vh-preflight-"));
8367
+ try {
8368
+ return await new Promise((resolve) => {
8369
+ let stdout = "";
8370
+ let settled = false;
8371
+ const done = (run) => {
8372
+ if (settled) return;
8373
+ settled = true;
8374
+ resolve(decideHandover(run));
8375
+ };
8376
+ let child;
8377
+ try {
8378
+ child = node_child_process.spawn(process.execPath, ["--no-warnings", "--no-deprecation", bundlePath, "--version"], {
8379
+ env: { ...process.env, HAPPY_HOME_DIR: home },
8380
+ stdio: ["ignore", "pipe", "ignore"]
8381
+ });
8382
+ } catch (error) {
8383
+ done({ exitCode: null, stdout: "", timedOut: false, spawnError: String(error) });
8384
+ return;
8385
+ }
8386
+ const timer = setTimeout(() => {
8387
+ try {
8388
+ child.kill("SIGKILL");
8389
+ } catch {
8390
+ }
8391
+ done({ exitCode: null, stdout, timedOut: true });
8392
+ }, HANDOVER_PREFLIGHT_TIMEOUT_MS);
8393
+ child.stdout?.on("data", (chunk) => {
8394
+ if (stdout.length < 8192) stdout += chunk.toString("utf8");
8395
+ });
8396
+ child.on("error", (error) => {
8397
+ clearTimeout(timer);
8398
+ done({ exitCode: null, stdout, timedOut: false, spawnError: String(error) });
8399
+ });
8400
+ child.on("close", (code) => {
8401
+ clearTimeout(timer);
8402
+ done({ exitCode: code, stdout, timedOut: false });
8403
+ });
8404
+ });
8405
+ } finally {
8406
+ try {
8407
+ fs$1.rmSync(home, { recursive: true, force: true });
8408
+ } catch {
8409
+ }
8410
+ }
8411
+ }
8412
+ function withHandoverHold(state, reason) {
8413
+ if (!state) return state;
8414
+ return reason ? { ...state, handoverHold: { reason, at: Date.now() } } : { ...state, handoverHold: null };
8415
+ }
8416
+ const HANDOVER_PREFLIGHT_TIMEOUT_MS = 3e4;
8417
+ function runNpmInstall(args) {
8418
+ return new Promise((resolve) => {
8419
+ let settled = false;
8420
+ const done = (code) => {
8421
+ if (!settled) {
8422
+ settled = true;
8423
+ resolve(code);
8424
+ }
8425
+ };
8426
+ let child;
8427
+ try {
8428
+ child = node_child_process.spawn("npm", args, { stdio: "ignore", env: process.env });
8429
+ } catch {
8430
+ done(null);
8431
+ return;
8432
+ }
8433
+ const timer = setTimeout(() => {
8434
+ try {
8435
+ child.kill("SIGKILL");
8436
+ } catch {
8437
+ }
8438
+ done(null);
8439
+ }, AUTO_UPDATE_INSTALL_TIMEOUT_MS);
8440
+ child.on("error", () => {
8441
+ clearTimeout(timer);
8442
+ done(null);
8443
+ });
8444
+ child.on("close", (code) => {
8445
+ clearTimeout(timer);
8446
+ done(code);
8447
+ });
8448
+ });
8449
+ }
8450
+ const AUTO_UPDATE_INSTALL_TIMEOUT_MS = 10 * 6e4;
8339
8451
  async function startDaemon() {
8340
8452
  let claudeAuthServiceRef = null;
8453
+ let cliUpdateStateRef = null;
8454
+ let lastHandoverHold = null;
8341
8455
  let claudeCredentialStoreSetting = (await persistence.readSettings()).claudeCredentialStore === "file" ? "file" : "auto";
8342
8456
  let requestShutdown;
8343
8457
  let resolvesWhenShutdownRequested = new Promise((resolve) => {
@@ -9400,6 +9514,48 @@ async function startDaemon() {
9400
9514
  host: initialMachineMetadata.host
9401
9515
  })).then(() => persistence.logger.debug(`[DAEMON RUN] claimed the machine record for host ${initialMachineMetadata.host}`)).catch((error) => persistence.logger.debug("[DAEMON RUN] could not refresh the recorded host:", error));
9402
9516
  }
9517
+ let autoUpdateFailedVersion = null;
9518
+ let autoUpdateRunning = false;
9519
+ const maybeAutoUpdate = async (cliUpdate) => {
9520
+ if (autoUpdateRunning) return;
9521
+ const settings = await persistence.readSettings();
9522
+ const decision = decideAutoUpdate({
9523
+ enabled: (settings.cliAutoUpdate ?? "idle") !== "off",
9524
+ currentVersion: cliUpdate.currentVersion,
9525
+ recommendedVersion: cliUpdate.recommendedVersion,
9526
+ idle: pidToTrackedSession.size === 0 && !apiMachine.hasLiveTerminals(),
9527
+ failedVersion: autoUpdateFailedVersion
9528
+ });
9529
+ if (decision.action === "skip") {
9530
+ persistence.logger.debug(`[DAEMON RUN] auto-update skipped: ${decision.reason}`);
9531
+ return;
9532
+ }
9533
+ autoUpdateRunning = true;
9534
+ const target = decision.version;
9535
+ const report = (state, detail) => {
9536
+ cliUpdateStateRef = { ...cliUpdate, autoUpdate: { state, version: target, detail, at: Date.now() } };
9537
+ void apiMachine.setCliUpdateState(cliUpdateStateRef);
9538
+ };
9539
+ persistence.logger.warn(`[DAEMON RUN] auto-updating CLI to ${target} (machine idle)`);
9540
+ report("installing");
9541
+ try {
9542
+ const code = await runNpmInstall(autoUpdateInstallArgs(target));
9543
+ if (code === 0) {
9544
+ persistence.logger.warn(`[DAEMON RUN] auto-update installed ${target}; handover follows once it verifies`);
9545
+ report("installed");
9546
+ } else {
9547
+ autoUpdateFailedVersion = target;
9548
+ persistence.logger.warn(`[DAEMON RUN] auto-update of ${target} failed with exit ${code}`);
9549
+ report("failed", `npm exited ${code}`);
9550
+ }
9551
+ } catch (error) {
9552
+ autoUpdateFailedVersion = target;
9553
+ persistence.logger.warn(`[DAEMON RUN] auto-update of ${target} could not run:`, error);
9554
+ report("failed", String(error).slice(0, 200));
9555
+ } finally {
9556
+ autoUpdateRunning = false;
9557
+ }
9558
+ };
9403
9559
  let cliUpdateCheckRunning = false;
9404
9560
  const refreshCliUpdate = async () => {
9405
9561
  if (cliUpdateCheckRunning) return;
@@ -9409,8 +9565,10 @@ async function startDaemon() {
9409
9565
  if (!cliUpdate) return;
9410
9566
  fileState = { ...fileState, cliUpdate };
9411
9567
  persistence.writeDaemonState(fileState);
9568
+ cliUpdateStateRef = cliUpdate;
9412
9569
  apiMachine.setCliUpdateState(cliUpdate);
9413
9570
  persistence.logger.debug(`[DAEMON RUN] CLI update policy checked: ${cliUpdate.status} (recommended=${cliUpdate.recommendedVersion ?? "none"}, minimum=${cliUpdate.minimumVersion ?? "none"})`);
9571
+ await maybeAutoUpdate(cliUpdate);
9414
9572
  } catch (error) {
9415
9573
  persistence.logger.debug("[DAEMON RUN] CLI update policy check failed:", error);
9416
9574
  } finally {
@@ -9450,11 +9608,20 @@ async function startDaemon() {
9450
9608
  }
9451
9609
  }
9452
9610
  if (bundleReplaced) {
9453
- persistence.logger.debug("[DAEMON RUN] Daemon bundle replaced on disk, handing off to new daemon");
9611
+ const preflight = await preflightNewBundle(bundlePath);
9612
+ if (preflight.action === "hold") {
9613
+ if (lastHandoverHold !== preflight.reason) {
9614
+ lastHandoverHold = preflight.reason;
9615
+ persistence.logger.warn(`[DAEMON RUN] holding handover: ${preflight.reason}`);
9616
+ void apiMachine.setCliUpdateState(withHandoverHold(cliUpdateStateRef, preflight.reason));
9617
+ }
9618
+ return;
9619
+ }
9620
+ lastHandoverHold = null;
9621
+ persistence.logger.debug("[DAEMON RUN] Daemon bundle replaced on disk and verified, handing off to new daemon");
9454
9622
  clearInterval(restartOnStaleVersionAndHeartbeat);
9455
9623
  clearInterval(cliUpdateInterval);
9456
9624
  claudeAuthService.stop();
9457
- claudeAuthService.stop();
9458
9625
  apiMachine.shutdown();
9459
9626
  await stopControlServer();
9460
9627
  await cleanupDaemonState();
@@ -10618,7 +10785,7 @@ function registerSideQuestionHandler(rpc, deps) {
10618
10785
  const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
10619
10786
  const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
10620
10787
  const run = deps.run ?? (async (input) => {
10621
- const { query } = await Promise.resolve().then(function () { return require('./index-CiNMkjGe.cjs'); });
10788
+ const { query } = await Promise.resolve().then(function () { return require('./index-lX1UliOs.cjs'); });
10622
10789
  return runSideQuestion(query, input);
10623
10790
  });
10624
10791
  const slots = /* @__PURE__ */ new Map();
@@ -10720,7 +10887,7 @@ const MAX_TITLE_CHARS = 60;
10720
10887
  const GENERATION_TIMEOUT_MS = 3e4;
10721
10888
  function resolveClaudeBinary() {
10722
10889
  try {
10723
- 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-CQ9f70v9.cjs', document.baseURI).href)));
10890
+ 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-4jiUeiUz.cjs', document.baseURI).href)));
10724
10891
  const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
10725
10892
  const { getClaudeCliPath } = require$1(utilsPath);
10726
10893
  const path$1 = getClaudeCliPath();
@@ -12922,9 +13089,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
12922
13089
  };
12923
13090
  }
12924
13091
 
12925
- 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-CQ9f70v9.cjs', document.baseURI).href)));
13092
+ 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-4jiUeiUz.cjs', document.baseURI).href)));
12926
13093
  const __dirname$1 = path.dirname(__filename$1);
12927
- const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CQ9f70v9.cjs', document.baseURI).href)));
13094
+ const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-4jiUeiUz.cjs', document.baseURI).href)));
12928
13095
  const PRISMA_QUERY_ENGINE_FILES = {
12929
13096
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
12930
13097
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -15548,7 +15715,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15548
15715
  process.exit(0);
15549
15716
  } else if (subcommand === "install-terminal-hooks") {
15550
15717
  try {
15551
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-CvWutFrA.cjs'); });
15718
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-DnaFkrTF.cjs'); });
15552
15719
  const command = parseTerminalHooksArgs(args.slice(1));
15553
15720
  if (command.action === "help") {
15554
15721
  console.log(TERMINAL_HOOKS_HELP);
@@ -15565,7 +15732,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15565
15732
  }
15566
15733
  } else if (subcommand === "spawn") {
15567
15734
  try {
15568
- const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-D09KFk0I.cjs'); });
15735
+ const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-DQ6FTUK9.cjs'); });
15569
15736
  await handleSpawnCommand(args.slice(1));
15570
15737
  } catch (error) {
15571
15738
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -15577,7 +15744,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15577
15744
  return;
15578
15745
  } else if (subcommand === "sessions") {
15579
15746
  try {
15580
- const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-Qbk_H0Av.cjs'); });
15747
+ const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-CbzqYiAy.cjs'); });
15581
15748
  await handleSessionsCommand(args.slice(1));
15582
15749
  } catch (error) {
15583
15750
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -15589,7 +15756,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15589
15756
  return;
15590
15757
  } else if (subcommand === "send") {
15591
15758
  try {
15592
- const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-m-ZqzS6w.cjs'); });
15759
+ const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-CwWvFfay.cjs'); });
15593
15760
  await handleSendCommand(args.slice(1));
15594
15761
  } catch (error) {
15595
15762
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -15695,9 +15862,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15695
15862
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
15696
15863
  const projectId = args[3];
15697
15864
  try {
15698
- const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-B1W5KTvn.cjs'); });
15699
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-D14vU6_q.cjs'); }).then(function (n) { return n.persistence; });
15700
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-D14vU6_q.cjs'); }).then(function (n) { return n.api; });
15865
+ const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-BoteFn-v.cjs'); });
15866
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-C5kEpkcZ.cjs'); }).then(function (n) { return n.persistence; });
15867
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-C5kEpkcZ.cjs'); }).then(function (n) { return n.api; });
15701
15868
  let userEmail = void 0;
15702
15869
  try {
15703
15870
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -15728,7 +15895,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15728
15895
  }
15729
15896
  if (geminiSubcommand === "project" && args[2] === "get") {
15730
15897
  try {
15731
- const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-B1W5KTvn.cjs'); });
15898
+ const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-BoteFn-v.cjs'); });
15732
15899
  const config = readGeminiLocalConfig();
15733
15900
  if (config.googleCloudProject) {
15734
15901
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -15768,7 +15935,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15768
15935
  process.exit(0);
15769
15936
  }
15770
15937
  try {
15771
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-DYN1hVth.cjs'); });
15938
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-IWHyBq0A.cjs'); });
15772
15939
  let startedBy = void 0;
15773
15940
  for (let i = 1; i < args.length; i++) {
15774
15941
  if (args[i] === "--started-by") {
@@ -15790,7 +15957,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15790
15957
  return;
15791
15958
  } else if (subcommand === "acp") {
15792
15959
  try {
15793
- const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-BtFBYvj8.cjs'); });
15960
+ const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-DWmhmji9.cjs'); });
15794
15961
  let startedBy = void 0;
15795
15962
  let verbose = false;
15796
15963
  const acpArgs = [];
@@ -15830,7 +15997,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15830
15997
  return;
15831
15998
  } else if (subcommand === "openclaw") {
15832
15999
  try {
15833
- const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-DHqzKgke.cjs'); });
16000
+ const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-0myYIz1U.cjs'); });
15834
16001
  let startedBy = void 0;
15835
16002
  let verbose = false;
15836
16003
  let gatewayUrl;
@@ -15881,7 +16048,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15881
16048
  return;
15882
16049
  } else if (subcommand === "mcp" && args.length === 1) {
15883
16050
  try {
15884
- const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-KhfiJ6OC.cjs'); });
16051
+ const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-DSpEpM_2.cjs'); });
15885
16052
  await handleMcpCommand();
15886
16053
  } catch (error) {
15887
16054
  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-4DC6CDpP.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-4DC6CDpP.mjs';
3
- import { h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, p as projectPath } from './types-C6vCFbPv.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-CvDQWnwm.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-CfKPvoTU.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-CfKPvoTU.mjs';
3
+ import { h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, p as projectPath } from './types-Ds0SiQ1D.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-BQ6pBRW4.mjs';
5
5
  import { randomUUID } from 'node:crypto';
6
6
  import { join } from 'node:path';
7
- import { h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, n as notifyDaemonSessionStarted, m as MessageQueue2, o as hashObject, u as startHappyServer, v as registerKillSessionHandler, B as BasePermissionHandler } from './index-DJcR5PQb.mjs';
7
+ import { h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, n as notifyDaemonSessionStarted, m as MessageQueue2, o as hashObject, u as startHappyServer, v as registerKillSessionHandler, B as BasePermissionHandler } from './index-Dq-eFp89.mjs';
8
8
  import 'node:child_process';
9
9
  import '@agentclientprotocol/sdk';
10
10
  import 'axios';
@@ -1,9 +1,9 @@
1
- import { q as query } from './index-DJcR5PQb.mjs';
1
+ import { q as query } from './index-Dq-eFp89.mjs';
2
2
  export { AbortError } from '@anthropic-ai/claude-agent-sdk';
3
3
  import 'chalk';
4
4
  import 'node:os';
5
5
  import 'node:crypto';
6
- import './types-C6vCFbPv.mjs';
6
+ import './types-Ds0SiQ1D.mjs';
7
7
  import 'axios';
8
8
  import 'node:util';
9
9
  import 'node:fs';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-BYv1pHW6.cjs');
4
- var persistence = require('./types-D14vU6_q.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-BBCEuz5G.cjs');
3
+ var AcpBackend = require('./AcpBackend-CauAQpC1.cjs');
4
+ var persistence = require('./types-C5kEpkcZ.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-CA6xeET_.cjs');
6
6
  var node_crypto = require('node:crypto');
7
7
  var path = require('node:path');
8
- var index = require('./index-CQ9f70v9.cjs');
8
+ var index = require('./index-4jiUeiUz.cjs');
9
9
  require('node:child_process');
10
10
  require('@agentclientprotocol/sdk');
11
11
  require('axios');