very-happy-cli 0.2.103 → 0.2.104

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 (31) hide show
  1. package/dist/{AcpBackend-Zt10QM8S.cjs → AcpBackend-DDGfk3HJ.cjs} +1 -1
  2. package/dist/{AcpBackend-C8CgzRI_.mjs → AcpBackend-De4iQ_JG.mjs} +1 -1
  3. package/dist/{AcpSessionManager-D_iGrEbD.cjs → AcpSessionManager-Cdv6Xgwy.cjs} +1 -1
  4. package/dist/{AcpSessionManager-BAinHcHh.mjs → AcpSessionManager-DRzAgHtT.mjs} +1 -1
  5. package/dist/{config-CG4aqDiu.cjs → config-CqM5UxVd.cjs} +2 -2
  6. package/dist/{config-11py0X-q.mjs → config-E3KdWyaQ.mjs} +2 -2
  7. package/dist/{index-Dnma0J5k.mjs → index--TiLl7-A.mjs} +13 -13
  8. package/dist/{index-B9SnF1mG.mjs → index-Bzj1XdPx.mjs} +2 -2
  9. package/dist/{index-CimI2p1M.cjs → index-CX_3uUem.cjs} +17 -17
  10. package/dist/{index-BjDfS9DT.mjs → index-C_dmtMJ6.mjs} +5 -5
  11. package/dist/{index-VvPyRTet.cjs → index-De6H3U0N.cjs} +2 -2
  12. package/dist/{index-B_soRPsA.cjs → index-fuavV8uc.cjs} +4 -4
  13. package/dist/index.cjs +2 -2
  14. package/dist/index.mjs +2 -2
  15. package/dist/{installTerminalHooks-BP9uu1Xn.cjs → installTerminalHooks-BXMBwrvq.cjs} +2 -2
  16. package/dist/{installTerminalHooks-UL5Zfif6.mjs → installTerminalHooks-DV0e8-V3.mjs} +2 -2
  17. package/dist/lib.cjs +1 -1
  18. package/dist/lib.mjs +1 -1
  19. package/dist/{mcp-mX6g7PpH.cjs → mcp-Cq3On_Qo.cjs} +2 -2
  20. package/dist/{mcp-CxepBrGm.mjs → mcp-DFS9Zohz.mjs} +2 -2
  21. package/dist/{runGemini-Cxa0Tj_7.mjs → runGemini-BFjtlkZI.mjs} +4 -4
  22. package/dist/{runGemini-BPAUC7TY.cjs → runGemini-DFvjh8cO.cjs} +4 -4
  23. package/dist/{runOpenClaw-QJ8YzPvo.cjs → runOpenClaw-B5Og1FED.cjs} +3 -3
  24. package/dist/{runOpenClaw-DMAn3-Hq.mjs → runOpenClaw-BFYj1F4u.mjs} +3 -3
  25. package/dist/{send-D6NLQaYt.mjs → send-B666yos0.mjs} +2 -2
  26. package/dist/{send-CwRV7cbV.cjs → send-Bog0YPxo.cjs} +2 -2
  27. package/dist/{spawn-Db22DkVT.cjs → spawn-BSdMkMPX.cjs} +2 -2
  28. package/dist/{spawn-DIW1I72G.mjs → spawn-DrqvVoNF.mjs} +2 -2
  29. package/dist/{types-DKO60j29.cjs → types-14LATr9X.cjs} +30 -9
  30. package/dist/{types-D9ORBxOD.mjs → types-D9LyZitb.mjs} +29 -8
  31. 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-DKO60j29.cjs');
6
+ var persistence = require('./types-14LATr9X.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-D9ORBxOD.mjs';
4
+ import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-D9LyZitb.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-DKO60j29.cjs');
4
+ var persistence = require('./types-14LATr9X.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-D9ORBxOD.mjs';
2
+ import { b as createEnvelope } from './types-D9LyZitb.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-DKO60j29.cjs');
8
- var index = require('./index-CimI2p1M.cjs');
7
+ var persistence = require('./types-14LATr9X.cjs');
8
+ var index = require('./index-CX_3uUem.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-D9ORBxOD.mjs';
6
- import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-Dnma0J5k.mjs';
5
+ import { l as logger } from './types-D9LyZitb.mjs';
6
+ import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index--TiLl7-A.mjs';
7
7
  import 'axios';
8
8
  import 'chalk';
9
9
  import 'node:util';
@@ -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, userInfo } 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 isClaudeSessionId, L as getLocalHappyAgentCredentialPath, N as readLocalHappyAgentCredentials, O as decryptWithDataKey, P as decryptLegacy, Q as extractCompleteLines, S as decideBackfill, T as parseTerminalHookPayload, U as tmuxArgs, V as scrubTmuxClientEnv, W as decideMirrorBinding, X as MIRROR_BACKFILL_LINES_DEFAULT, Y as persistSession, Z as mirrorLineKey, _ as mirrorLocalId, w as writePrivateFileSync, $ as detectResumeSupport, a0 as detectCLIAvailability, a1 as acquireDaemonLock, a2 as summarizeSpawnSessionForLog, a3 as deletePersistedSessions, a4 as shellescape, a5 as decrypt, a6 as writeDaemonState, A as ApiClient, a7 as writeSettings, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as releaseDaemonLock, ac as isValidSessionId, ad as listVhTerminals, ae as isValidTerminalId, af as readVhTerminal, ag as sendToVhTerminal, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, h as connectionState, aj as startOfflineReconnection, ak as clearCredentials, al as clearMachineId, k as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-D9ORBxOD.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 isClaudeSessionId, L as getLocalHappyAgentCredentialPath, N as readLocalHappyAgentCredentials, O as decryptWithDataKey, P as decryptLegacy, Q as extractCompleteLines, S as decideBackfill, T as parseTerminalHookPayload, U as tmuxArgs, V as scrubTmuxClientEnv, W as decideMirrorBinding, X as MIRROR_BACKFILL_LINES_DEFAULT, Y as persistSession, Z as mirrorLineKey, _ as mirrorLocalId, w as writePrivateFileSync, $ as detectResumeSupport, a0 as detectCLIAvailability, a1 as acquireDaemonLock, a2 as summarizeSpawnSessionForLog, a3 as deletePersistedSessions, a4 as shellescape, a5 as decrypt, a6 as writeDaemonState, A as ApiClient, a7 as writeSettings, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as releaseDaemonLock, ac as isValidSessionId, ad as listVhTerminals, ae as isValidTerminalId, af as readVhTerminal, ag as sendToVhTerminal, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, h as connectionState, aj as startOfflineReconnection, ak as clearCredentials, al as clearMachineId, k as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-D9LyZitb.mjs';
5
5
  import spawn$1, { spawn } from 'cross-spawn';
6
6
  import path, { join, resolve, basename, delimiter, isAbsolute, normalize, sep, dirname } from 'node:path';
7
7
  import { createInterface } from 'node:readline';
@@ -10035,7 +10035,7 @@ function registerSideQuestionHandler(rpc, deps) {
10035
10035
  const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
10036
10036
  const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
10037
10037
  const run = deps.run ?? (async (input) => {
10038
- const { query } = await import('./index-B9SnF1mG.mjs');
10038
+ const { query } = await import('./index-Bzj1XdPx.mjs');
10039
10039
  return runSideQuestion(query, input);
10040
10040
  });
10041
10041
  const slots = /* @__PURE__ */ new Map();
@@ -14970,7 +14970,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
14970
14970
  process.exit(0);
14971
14971
  } else if (subcommand === "install-terminal-hooks") {
14972
14972
  try {
14973
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-UL5Zfif6.mjs');
14973
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-DV0e8-V3.mjs');
14974
14974
  const command = parseTerminalHooksArgs(args.slice(1));
14975
14975
  if (command.action === "help") {
14976
14976
  console.log(TERMINAL_HOOKS_HELP);
@@ -14987,7 +14987,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
14987
14987
  }
14988
14988
  } else if (subcommand === "spawn") {
14989
14989
  try {
14990
- const { handleSpawnCommand } = await import('./spawn-DIW1I72G.mjs');
14990
+ const { handleSpawnCommand } = await import('./spawn-DrqvVoNF.mjs');
14991
14991
  await handleSpawnCommand(args.slice(1));
14992
14992
  } catch (error) {
14993
14993
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -14999,7 +14999,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
14999
14999
  return;
15000
15000
  } else if (subcommand === "send") {
15001
15001
  try {
15002
- const { handleSendCommand } = await import('./send-D6NLQaYt.mjs');
15002
+ const { handleSendCommand } = await import('./send-B666yos0.mjs');
15003
15003
  await handleSendCommand(args.slice(1));
15004
15004
  } catch (error) {
15005
15005
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -15105,9 +15105,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15105
15105
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
15106
15106
  const projectId = args[3];
15107
15107
  try {
15108
- const { saveGoogleCloudProjectToConfig } = await import('./config-11py0X-q.mjs');
15109
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-D9ORBxOD.mjs').then(function (n) { return n.ap; });
15110
- const { ApiClient: ApiClient2 } = await import('./types-D9ORBxOD.mjs').then(function (n) { return n.aq; });
15108
+ const { saveGoogleCloudProjectToConfig } = await import('./config-E3KdWyaQ.mjs');
15109
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-D9LyZitb.mjs').then(function (n) { return n.ap; });
15110
+ const { ApiClient: ApiClient2 } = await import('./types-D9LyZitb.mjs').then(function (n) { return n.aq; });
15111
15111
  let userEmail = void 0;
15112
15112
  try {
15113
15113
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -15138,7 +15138,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15138
15138
  }
15139
15139
  if (geminiSubcommand === "project" && args[2] === "get") {
15140
15140
  try {
15141
- const { readGeminiLocalConfig } = await import('./config-11py0X-q.mjs');
15141
+ const { readGeminiLocalConfig } = await import('./config-E3KdWyaQ.mjs');
15142
15142
  const config = readGeminiLocalConfig();
15143
15143
  if (config.googleCloudProject) {
15144
15144
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -15178,7 +15178,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15178
15178
  process.exit(0);
15179
15179
  }
15180
15180
  try {
15181
- const { runGemini } = await import('./runGemini-Cxa0Tj_7.mjs');
15181
+ const { runGemini } = await import('./runGemini-BFjtlkZI.mjs');
15182
15182
  let startedBy = void 0;
15183
15183
  for (let i = 1; i < args.length; i++) {
15184
15184
  if (args[i] === "--started-by") {
@@ -15200,7 +15200,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15200
15200
  return;
15201
15201
  } else if (subcommand === "acp") {
15202
15202
  try {
15203
- const { runAcp, resolveAcpAgentConfig } = await import('./index-BjDfS9DT.mjs');
15203
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-C_dmtMJ6.mjs');
15204
15204
  let startedBy = void 0;
15205
15205
  let verbose = false;
15206
15206
  const acpArgs = [];
@@ -15240,7 +15240,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15240
15240
  return;
15241
15241
  } else if (subcommand === "openclaw") {
15242
15242
  try {
15243
- const { runOpenClaw } = await import('./runOpenClaw-DMAn3-Hq.mjs');
15243
+ const { runOpenClaw } = await import('./runOpenClaw-BFYj1F4u.mjs');
15244
15244
  let startedBy = void 0;
15245
15245
  let verbose = false;
15246
15246
  let gatewayUrl;
@@ -15291,7 +15291,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15291
15291
  return;
15292
15292
  } else if (subcommand === "mcp" && args.length === 1) {
15293
15293
  try {
15294
- const { handleMcpCommand } = await import('./mcp-CxepBrGm.mjs');
15294
+ const { handleMcpCommand } = await import('./mcp-DFS9Zohz.mjs');
15295
15295
  await handleMcpCommand();
15296
15296
  } catch (error) {
15297
15297
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
@@ -1,9 +1,9 @@
1
- import { q as query } from './index-Dnma0J5k.mjs';
1
+ import { q as query } from './index--TiLl7-A.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-D9ORBxOD.mjs';
6
+ import './types-D9LyZitb.mjs';
7
7
  import 'axios';
8
8
  import 'node:util';
9
9
  import 'node:fs';
@@ -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-DKO60j29.cjs');
6
+ var persistence = require('./types-14LATr9X.cjs');
7
7
  var spawn = require('cross-spawn');
8
8
  var path = require('node:path');
9
9
  var node_readline = require('node:readline');
@@ -6778,7 +6778,7 @@ function parseJsonObject(text) {
6778
6778
  return null;
6779
6779
  }
6780
6780
  }
6781
- 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-CimI2p1M.cjs', document.baseURI).href))).resolve(s)) {
6781
+ 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-CX_3uUem.cjs', document.baseURI).href))).resolve(s)) {
6782
6782
  const platformArch = `${platform}-${arch}`;
6783
6783
  const candidates = [
6784
6784
  `@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
@@ -10057,7 +10057,7 @@ function registerSideQuestionHandler(rpc, deps) {
10057
10057
  const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
10058
10058
  const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
10059
10059
  const run = deps.run ?? (async (input) => {
10060
- const { query } = await Promise.resolve().then(function () { return require('./index-VvPyRTet.cjs'); });
10060
+ const { query } = await Promise.resolve().then(function () { return require('./index-De6H3U0N.cjs'); });
10061
10061
  return runSideQuestion(query, input);
10062
10062
  });
10063
10063
  const slots = /* @__PURE__ */ new Map();
@@ -10159,7 +10159,7 @@ const MAX_TITLE_CHARS = 60;
10159
10159
  const GENERATION_TIMEOUT_MS = 3e4;
10160
10160
  function resolveClaudeBinary() {
10161
10161
  try {
10162
- 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-CimI2p1M.cjs', document.baseURI).href)));
10162
+ 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-CX_3uUem.cjs', document.baseURI).href)));
10163
10163
  const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
10164
10164
  const { getClaudeCliPath } = require$1(utilsPath);
10165
10165
  const path$1 = getClaudeCliPath();
@@ -12366,9 +12366,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
12366
12366
  };
12367
12367
  }
12368
12368
 
12369
- 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-CimI2p1M.cjs', document.baseURI).href)));
12369
+ 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-CX_3uUem.cjs', document.baseURI).href)));
12370
12370
  const __dirname$1 = path.dirname(__filename$1);
12371
- const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CimI2p1M.cjs', document.baseURI).href)));
12371
+ const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CX_3uUem.cjs', document.baseURI).href)));
12372
12372
  const PRISMA_QUERY_ENGINE_FILES = {
12373
12373
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
12374
12374
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -14992,7 +14992,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
14992
14992
  process.exit(0);
14993
14993
  } else if (subcommand === "install-terminal-hooks") {
14994
14994
  try {
14995
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-BP9uu1Xn.cjs'); });
14995
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-BXMBwrvq.cjs'); });
14996
14996
  const command = parseTerminalHooksArgs(args.slice(1));
14997
14997
  if (command.action === "help") {
14998
14998
  console.log(TERMINAL_HOOKS_HELP);
@@ -15009,7 +15009,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15009
15009
  }
15010
15010
  } else if (subcommand === "spawn") {
15011
15011
  try {
15012
- const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-Db22DkVT.cjs'); });
15012
+ const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-BSdMkMPX.cjs'); });
15013
15013
  await handleSpawnCommand(args.slice(1));
15014
15014
  } catch (error) {
15015
15015
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -15021,7 +15021,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15021
15021
  return;
15022
15022
  } else if (subcommand === "send") {
15023
15023
  try {
15024
- const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-CwRV7cbV.cjs'); });
15024
+ const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-Bog0YPxo.cjs'); });
15025
15025
  await handleSendCommand(args.slice(1));
15026
15026
  } catch (error) {
15027
15027
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -15127,9 +15127,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15127
15127
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
15128
15128
  const projectId = args[3];
15129
15129
  try {
15130
- const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-CG4aqDiu.cjs'); });
15131
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-DKO60j29.cjs'); }).then(function (n) { return n.persistence; });
15132
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-DKO60j29.cjs'); }).then(function (n) { return n.api; });
15130
+ const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-CqM5UxVd.cjs'); });
15131
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-14LATr9X.cjs'); }).then(function (n) { return n.persistence; });
15132
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-14LATr9X.cjs'); }).then(function (n) { return n.api; });
15133
15133
  let userEmail = void 0;
15134
15134
  try {
15135
15135
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -15160,7 +15160,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15160
15160
  }
15161
15161
  if (geminiSubcommand === "project" && args[2] === "get") {
15162
15162
  try {
15163
- const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-CG4aqDiu.cjs'); });
15163
+ const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-CqM5UxVd.cjs'); });
15164
15164
  const config = readGeminiLocalConfig();
15165
15165
  if (config.googleCloudProject) {
15166
15166
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -15200,7 +15200,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15200
15200
  process.exit(0);
15201
15201
  }
15202
15202
  try {
15203
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-BPAUC7TY.cjs'); });
15203
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-DFvjh8cO.cjs'); });
15204
15204
  let startedBy = void 0;
15205
15205
  for (let i = 1; i < args.length; i++) {
15206
15206
  if (args[i] === "--started-by") {
@@ -15222,7 +15222,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15222
15222
  return;
15223
15223
  } else if (subcommand === "acp") {
15224
15224
  try {
15225
- const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-B_soRPsA.cjs'); });
15225
+ const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-fuavV8uc.cjs'); });
15226
15226
  let startedBy = void 0;
15227
15227
  let verbose = false;
15228
15228
  const acpArgs = [];
@@ -15262,7 +15262,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15262
15262
  return;
15263
15263
  } else if (subcommand === "openclaw") {
15264
15264
  try {
15265
- const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-QJ8YzPvo.cjs'); });
15265
+ const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-B5Og1FED.cjs'); });
15266
15266
  let startedBy = void 0;
15267
15267
  let verbose = false;
15268
15268
  let gatewayUrl;
@@ -15313,7 +15313,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
15313
15313
  return;
15314
15314
  } else if (subcommand === "mcp" && args.length === 1) {
15315
15315
  try {
15316
- const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-mX6g7PpH.cjs'); });
15316
+ const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-Cq3On_Qo.cjs'); });
15317
15317
  await handleMcpCommand();
15318
15318
  } catch (error) {
15319
15319
  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-C8CgzRI_.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-C8CgzRI_.mjs';
3
- import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-D9ORBxOD.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-BAinHcHh.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-De4iQ_JG.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-De4iQ_JG.mjs';
3
+ import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-D9LyZitb.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-DRzAgHtT.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-Dnma0J5k.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--TiLl7-A.mjs';
8
8
  import 'node:child_process';
9
9
  import '@agentclientprotocol/sdk';
10
10
  import 'axios';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CimI2p1M.cjs');
3
+ var index = require('./index-CX_3uUem.cjs');
4
4
  var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
5
5
  require('chalk');
6
6
  require('node:os');
7
7
  require('node:crypto');
8
- require('./types-DKO60j29.cjs');
8
+ require('./types-14LATr9X.cjs');
9
9
  require('axios');
10
10
  require('node:util');
11
11
  require('node:fs');
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-Zt10QM8S.cjs');
4
- var persistence = require('./types-DKO60j29.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-D_iGrEbD.cjs');
3
+ var AcpBackend = require('./AcpBackend-DDGfk3HJ.cjs');
4
+ var persistence = require('./types-14LATr9X.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-Cdv6Xgwy.cjs');
6
6
  var node_crypto = require('node:crypto');
7
7
  var path = require('node:path');
8
- var index = require('./index-CimI2p1M.cjs');
8
+ var index = require('./index-CX_3uUem.cjs');
9
9
  require('node:child_process');
10
10
  require('@agentclientprotocol/sdk');
11
11
  require('axios');
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./index-CimI2p1M.cjs');
5
- require('./types-DKO60j29.cjs');
4
+ require('./index-CX_3uUem.cjs');
5
+ require('./types-14LATr9X.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-Dnma0J5k.mjs';
3
- import './types-D9ORBxOD.mjs';
2
+ import './index--TiLl7-A.mjs';
3
+ import './types-D9LyZitb.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-DKO60j29.cjs');
9
- var index = require('./index-CimI2p1M.cjs');
8
+ var persistence = require('./types-14LATr9X.cjs');
9
+ var index = require('./index-CX_3uUem.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-D9ORBxOD.mjs';
7
- import { t as tmuxSupportsSessionEnv } from './index-Dnma0J5k.mjs';
6
+ import { p as projectPath } from './types-D9LyZitb.mjs';
7
+ import { t as tmuxSupportsSessionEnv } from './index--TiLl7-A.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-DKO60j29.cjs');
3
+ var persistence = require('./types-14LATr9X.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-D9ORBxOD.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-D9LyZitb.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-CimI2p1M.cjs');
6
+ var index = require('./index-CX_3uUem.cjs');
7
7
  var limits = require('./limits-KdWKmwtH.cjs');
8
- var persistence = require('./types-DKO60j29.cjs');
8
+ var persistence = require('./types-14LATr9X.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-Dnma0J5k.mjs';
4
+ import { p as pushClipboardViaDaemon } from './index--TiLl7-A.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-D9ORBxOD.mjs';
6
+ import { l as logger } from './types-D9LyZitb.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-D9ORBxOD.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-Dnma0J5k.mjs';
7
- import { A as AcpBackend } from './AcpBackend-C8CgzRI_.mjs';
8
- import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-11py0X-q.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-D9LyZitb.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--TiLl7-A.mjs';
7
+ import { A as AcpBackend } from './AcpBackend-De4iQ_JG.mjs';
8
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-E3KdWyaQ.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-DKO60j29.cjs');
8
- var index = require('./index-CimI2p1M.cjs');
9
- var AcpBackend = require('./AcpBackend-Zt10QM8S.cjs');
10
- var config = require('./config-CG4aqDiu.cjs');
7
+ var persistence = require('./types-14LATr9X.cjs');
8
+ var index = require('./index-CX_3uUem.cjs');
9
+ var AcpBackend = require('./AcpBackend-DDGfk3HJ.cjs');
10
+ var config = require('./config-CqM5UxVd.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-DKO60j29.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-D_iGrEbD.cjs');
10
- var index = require('./index-CimI2p1M.cjs');
8
+ var persistence = require('./types-14LATr9X.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-Cdv6Xgwy.cjs');
10
+ var index = require('./index-CX_3uUem.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-D9ORBxOD.mjs';
7
- import { A as AcpSessionManager } from './AcpSessionManager-BAinHcHh.mjs';
8
- import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-Dnma0J5k.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-D9LyZitb.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-DRzAgHtT.mjs';
8
+ import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index--TiLl7-A.mjs';
9
9
  import WebSocket from 'ws';
10
10
  import * as ed from '@noble/ed25519';
11
11
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -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-D9ORBxOD.mjs';
5
- import { b as sendUserMessage, a as sessionWebUrl } from './index-Dnma0J5k.mjs';
4
+ import { r as readPersistedSessions, c as configuration } from './types-D9LyZitb.mjs';
5
+ import { b as sendUserMessage, a as sessionWebUrl } from './index--TiLl7-A.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 persistence = require('./types-DKO60j29.cjs');
7
- var index = require('./index-CimI2p1M.cjs');
6
+ var persistence = require('./types-14LATr9X.cjs');
7
+ var index = require('./index-CX_3uUem.cjs');
8
8
  require('axios');
9
9
  require('node:util');
10
10
  require('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-CimI2p1M.cjs');
7
- var persistence = require('./types-DKO60j29.cjs');
6
+ var index = require('./index-CX_3uUem.cjs');
7
+ var persistence = require('./types-14LATr9X.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-Dnma0J5k.mjs';
5
- import { l as logger } from './types-D9ORBxOD.mjs';
4
+ import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index--TiLl7-A.mjs';
5
+ import { l as logger } from './types-D9LyZitb.mjs';
6
6
  import 'node:os';
7
7
  import 'node:crypto';
8
8
  import 'cross-spawn';
@@ -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.103";
54
+ var version = "0.2.104";
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.103",
168
- "very-happy-tools-x64-darwin": "0.2.103",
169
- "very-happy-tools-arm64-linux": "0.2.103",
170
- "very-happy-tools-x64-linux": "0.2.103",
171
- "very-happy-tools-arm64-win32": "0.2.103",
172
- "very-happy-tools-x64-win32": "0.2.103"
167
+ "very-happy-tools-arm64-darwin": "0.2.104",
168
+ "very-happy-tools-x64-darwin": "0.2.104",
169
+ "very-happy-tools-arm64-linux": "0.2.104",
170
+ "very-happy-tools-x64-linux": "0.2.104",
171
+ "very-happy-tools-arm64-win32": "0.2.104",
172
+ "very-happy-tools-x64-win32": "0.2.104"
173
173
  };
174
174
  var devDependencies = {
175
175
  "@slopus/happy-wire": "workspace:*",
@@ -1594,7 +1594,7 @@ class RpcHandlerManager {
1594
1594
  }
1595
1595
  }
1596
1596
 
1597
- 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-DKO60j29.cjs', document.baseURI).href))));
1597
+ 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-14LATr9X.cjs', document.baseURI).href))));
1598
1598
  function projectPath() {
1599
1599
  const path = path$1.resolve(__dirname$1, "..");
1600
1600
  return path;
@@ -4567,6 +4567,23 @@ function readPersistedSessions() {
4567
4567
  return {};
4568
4568
  }
4569
4569
  }
4570
+ function readTrackedClaudeSessionIds() {
4571
+ try {
4572
+ if (!node_fs.existsSync(configuration.sessionsFile)) return [];
4573
+ const data = JSON.parse(node_fs.readFileSync(configuration.sessionsFile, "utf-8"));
4574
+ if (!data?.sessions || typeof data.sessions !== "object") return [];
4575
+ const ids = /* @__PURE__ */ new Set();
4576
+ for (const session of Object.values(data.sessions)) {
4577
+ const metadata = (session ?? {}).metadata;
4578
+ for (const id of [metadata?.claudeSessionId, metadata?.importedFromClaudeSessionId]) {
4579
+ if (typeof id === "string" && id.length > 0) ids.add(id.toLowerCase());
4580
+ }
4581
+ }
4582
+ return [...ids];
4583
+ } catch {
4584
+ return [];
4585
+ }
4586
+ }
4570
4587
  function persistSession(sessionId, session) {
4571
4588
  try {
4572
4589
  const existing = readPersistedSessions();
@@ -4614,6 +4631,7 @@ var persistence = /*#__PURE__*/Object.freeze({
4614
4631
  readDaemonState: readDaemonState,
4615
4632
  readPersistedSessions: readPersistedSessions,
4616
4633
  readSettings: readSettings,
4634
+ readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
4617
4635
  releaseDaemonLock: releaseDaemonLock,
4618
4636
  updateSettings: updateSettings,
4619
4637
  writeCredentialsDataKey: writeCredentialsDataKey,
@@ -14630,7 +14648,10 @@ class ApiMachineClient {
14630
14648
  throw new Error("directory must be a non-empty string when provided");
14631
14649
  }
14632
14650
  const projectDirs = typeof directory === "string" ? [getProjectPath(directory)] : await listClaudeProjectDirs(getClaudeProjectsRoot());
14633
- const excludeIds = Array.isArray(exclude) ? exclude.filter((id) => typeof id === "string" && UUID_RE.test(id)) : [];
14651
+ const excludeIds = [
14652
+ ...Array.isArray(exclude) ? exclude.filter((id) => typeof id === "string" && UUID_RE.test(id)) : [],
14653
+ ...readTrackedClaudeSessionIds()
14654
+ ];
14634
14655
  const result = await listClaudeSessionHistory({
14635
14656
  projectDirs,
14636
14657
  limit: typeof limit === "number" && Number.isFinite(limit) ? Math.max(1, Math.min(Math.floor(limit), 200)) : 60,
@@ -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.103";
32
+ var version = "0.2.104";
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.103",
146
- "very-happy-tools-x64-darwin": "0.2.103",
147
- "very-happy-tools-arm64-linux": "0.2.103",
148
- "very-happy-tools-x64-linux": "0.2.103",
149
- "very-happy-tools-arm64-win32": "0.2.103",
150
- "very-happy-tools-x64-win32": "0.2.103"
145
+ "very-happy-tools-arm64-darwin": "0.2.104",
146
+ "very-happy-tools-x64-darwin": "0.2.104",
147
+ "very-happy-tools-arm64-linux": "0.2.104",
148
+ "very-happy-tools-x64-linux": "0.2.104",
149
+ "very-happy-tools-arm64-win32": "0.2.104",
150
+ "very-happy-tools-x64-win32": "0.2.104"
151
151
  };
152
152
  var devDependencies = {
153
153
  "@slopus/happy-wire": "workspace:*",
@@ -4545,6 +4545,23 @@ function readPersistedSessions() {
4545
4545
  return {};
4546
4546
  }
4547
4547
  }
4548
+ function readTrackedClaudeSessionIds() {
4549
+ try {
4550
+ if (!existsSync(configuration.sessionsFile)) return [];
4551
+ const data = JSON.parse(readFileSync(configuration.sessionsFile, "utf-8"));
4552
+ if (!data?.sessions || typeof data.sessions !== "object") return [];
4553
+ const ids = /* @__PURE__ */ new Set();
4554
+ for (const session of Object.values(data.sessions)) {
4555
+ const metadata = (session ?? {}).metadata;
4556
+ for (const id of [metadata?.claudeSessionId, metadata?.importedFromClaudeSessionId]) {
4557
+ if (typeof id === "string" && id.length > 0) ids.add(id.toLowerCase());
4558
+ }
4559
+ }
4560
+ return [...ids];
4561
+ } catch {
4562
+ return [];
4563
+ }
4564
+ }
4548
4565
  function persistSession(sessionId, session) {
4549
4566
  try {
4550
4567
  const existing = readPersistedSessions();
@@ -4592,6 +4609,7 @@ var persistence = /*#__PURE__*/Object.freeze({
4592
4609
  readDaemonState: readDaemonState,
4593
4610
  readPersistedSessions: readPersistedSessions,
4594
4611
  readSettings: readSettings,
4612
+ readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
4595
4613
  releaseDaemonLock: releaseDaemonLock,
4596
4614
  updateSettings: updateSettings,
4597
4615
  writeCredentialsDataKey: writeCredentialsDataKey,
@@ -14608,7 +14626,10 @@ class ApiMachineClient {
14608
14626
  throw new Error("directory must be a non-empty string when provided");
14609
14627
  }
14610
14628
  const projectDirs = typeof directory === "string" ? [getProjectPath(directory)] : await listClaudeProjectDirs(getClaudeProjectsRoot());
14611
- const excludeIds = Array.isArray(exclude) ? exclude.filter((id) => typeof id === "string" && UUID_RE.test(id)) : [];
14629
+ const excludeIds = [
14630
+ ...Array.isArray(exclude) ? exclude.filter((id) => typeof id === "string" && UUID_RE.test(id)) : [],
14631
+ ...readTrackedClaudeSessionIds()
14632
+ ];
14612
14633
  const result = await listClaudeSessionHistory({
14613
14634
  projectDirs,
14614
14635
  limit: typeof limit === "number" && Number.isFinite(limit) ? Math.max(1, Math.min(Math.floor(limit), 200)) : 60,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.103",
3
+ "version": "0.2.104",
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.103",
117
- "very-happy-tools-x64-darwin": "0.2.103",
118
- "very-happy-tools-arm64-linux": "0.2.103",
119
- "very-happy-tools-x64-linux": "0.2.103",
120
- "very-happy-tools-arm64-win32": "0.2.103",
121
- "very-happy-tools-x64-win32": "0.2.103"
116
+ "very-happy-tools-arm64-darwin": "0.2.104",
117
+ "very-happy-tools-x64-darwin": "0.2.104",
118
+ "very-happy-tools-arm64-linux": "0.2.104",
119
+ "very-happy-tools-x64-linux": "0.2.104",
120
+ "very-happy-tools-arm64-win32": "0.2.104",
121
+ "very-happy-tools-x64-win32": "0.2.104"
122
122
  },
123
123
  "devDependencies": {
124
124
  "@slopus/happy-wire": "workspace:*",