very-happy-cli 0.2.139 → 0.2.141

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 (43) hide show
  1. package/dist/{AcpBackend-BwTEBAyP.mjs → AcpBackend-CWmjboOm.mjs} +2 -2
  2. package/dist/{AcpBackend-ioCPQLt4.cjs → AcpBackend-CnWSwaHk.cjs} +2 -2
  3. package/dist/{AcpSessionManager-Bh3KETfz.mjs → AcpSessionManager-CtXoi6PN.mjs} +1 -1
  4. package/dist/{AcpSessionManager-o9T6W69-.cjs → AcpSessionManager-Dxt78rPO.cjs} +1 -1
  5. package/dist/{agentGuidance-Dxt2uz3R.cjs → agentGuidance-B9ENxSaS.cjs} +1 -1
  6. package/dist/{agentGuidance-DRnXdFAY.mjs → agentGuidance-Do7cQka3.mjs} +1 -1
  7. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  8. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  9. package/dist/{config-o9NFsj8x.mjs → config-DY57frJF.mjs} +4 -4
  10. package/dist/{config-nyMHCx-i.cjs → config-Dn7nAHcA.cjs} +4 -4
  11. package/dist/{index-klhxcpC8.cjs → index-3STVDtNO.cjs} +6 -6
  12. package/dist/{index-gkFhwPXq.cjs → index-BSVgut_Y.cjs} +4 -4
  13. package/dist/{index-BZr5l8TH.mjs → index-C55sW8E9.mjs} +60 -22
  14. package/dist/{index-C3NtU4Ch.cjs → index-ChWePQEd.cjs} +64 -26
  15. package/dist/{index-CTemcNko.mjs → index-DhfgAB8K.mjs} +4 -4
  16. package/dist/{index-BkmfJyCf.mjs → index-Dz6FgNFg.mjs} +7 -7
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{installTerminalHooks-DZUBgnFh.cjs → installTerminalHooks--jkP17uE.cjs} +4 -4
  20. package/dist/{installTerminalHooks-8CHTgUC-.mjs → installTerminalHooks-zmtIrf3E.mjs} +4 -4
  21. package/dist/lib.cjs +2 -2
  22. package/dist/lib.mjs +2 -2
  23. package/dist/{limits-DefXc1TL.mjs → limits-DT5Yk_UH.mjs} +7 -7
  24. package/dist/{limits-C_RGzva6.cjs → limits-DbLWXlJm.cjs} +7 -7
  25. package/dist/{mcp-8DcunR0J.mjs → mcp-Bzy-X9kI.mjs} +4 -4
  26. package/dist/{mcp-czNIfD59.cjs → mcp-kE0n1dBF.cjs} +4 -4
  27. package/dist/{runGemini-CDUObQTD.mjs → runGemini-BmdhYEzM.mjs} +6 -6
  28. package/dist/{runGemini-Dy3y-lD9.cjs → runGemini-CxUz95A1.cjs} +6 -6
  29. package/dist/{runOpenClaw-B6KMCsVB.mjs → runOpenClaw-CYpO3Vv8.mjs} +5 -5
  30. package/dist/{runOpenClaw-CJusckVM.cjs → runOpenClaw-RLIFJx61.cjs} +5 -5
  31. package/dist/{send-B4Qo-87h.cjs → send-BGcCrMUT.cjs} +4 -4
  32. package/dist/{send-BT32Jiel.mjs → send-DT04hV8o.mjs} +4 -4
  33. package/dist/{sessions-Dh0Lg-5z.mjs → sessions-DDWTq2AG.mjs} +4 -4
  34. package/dist/{sessions-CN2y0xBl.cjs → sessions-Jt9lrcrG.cjs} +4 -4
  35. package/dist/{spawn-DFIyobCt.mjs → spawn-Ca0A70dX.mjs} +4 -4
  36. package/dist/{spawn-jWj3xFhX.cjs → spawn-CdZgvthE.cjs} +4 -4
  37. package/dist/{teams-CZ9ICWeB.mjs → teams-CzK1zg0m.mjs} +4 -4
  38. package/dist/{teams-BhFspeAY.cjs → teams-DfVwVZ4x.cjs} +4 -4
  39. package/dist/{todo-jL3ttna3.mjs → todo-4WhOom8k.mjs} +3 -3
  40. package/dist/{todo-B0kvqUTQ.cjs → todo-D9nFaYpQ.cjs} +3 -3
  41. package/dist/{types-CxGm_YJ-.cjs → types-Bk3W89Z3.cjs} +2 -2
  42. package/dist/{types-CrKeJuyF.mjs → types-CLosaeZT.mjs} +1 -1
  43. package/package.json +7 -7
@@ -3,13 +3,13 @@
3
3
  var chalk = require('chalk');
4
4
  var os = require('node:os');
5
5
  var node_crypto = require('node:crypto');
6
- var api = require('./types-CxGm_YJ-.cjs');
7
- var persistence = require('./limits-C_RGzva6.cjs');
6
+ var api = require('./types-Bk3W89Z3.cjs');
7
+ var persistence = require('./limits-DbLWXlJm.cjs');
8
8
  var spawn = require('cross-spawn');
9
9
  var path = require('node:path');
10
10
  var node_readline = require('node:readline');
11
11
  var node_fs = require('node:fs');
12
- var agentGuidance = require('./agentGuidance-Dxt2uz3R.cjs');
12
+ var agentGuidance = require('./agentGuidance-B9ENxSaS.cjs');
13
13
  var promises = require('node:fs/promises');
14
14
  var fs = require('fs/promises');
15
15
  var ink = require('ink');
@@ -1304,7 +1304,21 @@ function createRuntimeControls(isThinking) {
1304
1304
  });
1305
1305
  return { operationId: op.id };
1306
1306
  }
1307
- return { setQuery, observe, request };
1307
+ async function stopRunningTasks() {
1308
+ const q = query, runGeneration = generation;
1309
+ if (!q || !q.canControl()) return [];
1310
+ const running = [...tasks.values()].filter((task) => task.status === "running" && text(task.id)).map((task) => String(task.id)).slice(0, 20);
1311
+ const stopped = [];
1312
+ await Promise.all(running.map(async (id) => {
1313
+ try {
1314
+ await q.stopTask(id);
1315
+ if (query === q && generation === runGeneration) stopped.push(id);
1316
+ } catch {
1317
+ }
1318
+ }));
1319
+ return stopped;
1320
+ }
1321
+ return { setQuery, observe, request, stopRunningTasks };
1308
1322
  }
1309
1323
 
1310
1324
  class MessageBuffer {
@@ -3718,6 +3732,7 @@ function applyClaudeSdkMetadata(current, update) {
3718
3732
  function createTurnSteeringController() {
3719
3733
  let interrupt = null;
3720
3734
  let steering = false;
3735
+ let interrupting = false;
3721
3736
  return {
3722
3737
  setInterrupt(next) {
3723
3738
  interrupt = next;
@@ -3742,17 +3757,31 @@ function createTurnSteeringController() {
3742
3757
  */
3743
3758
  async interruptTurn() {
3744
3759
  if (!interrupt) return false;
3745
- await interrupt();
3746
- return true;
3760
+ interrupting = true;
3761
+ try {
3762
+ await interrupt();
3763
+ return true;
3764
+ } catch (error) {
3765
+ interrupting = false;
3766
+ throw error;
3767
+ }
3747
3768
  },
3748
3769
  consumeReady() {
3749
3770
  if (!steering) return false;
3750
3771
  steering = false;
3751
3772
  return true;
3752
3773
  },
3774
+ /** The next `result` belongs to a stop-button interrupt: close the
3775
+ * turn as cancelled and say "Aborted by user", not "failed". */
3776
+ consumeInterrupted() {
3777
+ if (!interrupting) return false;
3778
+ interrupting = false;
3779
+ return true;
3780
+ },
3753
3781
  reset() {
3754
3782
  interrupt = null;
3755
3783
  steering = false;
3784
+ interrupting = false;
3756
3785
  }
3757
3786
  };
3758
3787
  }
@@ -3904,6 +3933,9 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
3904
3933
  persistence.logger.debug("[remote]: doAbort");
3905
3934
  session.markAborting();
3906
3935
  session.onAbort();
3936
+ void runtimeControls.stopRunningTasks().then((ids) => {
3937
+ if (ids.length > 0) persistence.logger.debug(`[remote]: stopped ${ids.length} background task(s) on abort: ${ids.join(", ")}`);
3938
+ }).catch((error) => persistence.logger.debug("[remote]: stopping background tasks on abort failed", error));
3907
3939
  if (session.thinking) {
3908
3940
  const interrupted = await turnSteering.interruptTurn().catch((e) => {
3909
3941
  persistence.logger.debug("[remote]: interruptTurn threw, falling back to hard abort", e);
@@ -3914,6 +3946,7 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
3914
3946
  return;
3915
3947
  }
3916
3948
  persistence.logger.debug("[remote]: interrupt did not stop the turn in time; escalating to hard abort");
3949
+ turnSteering.consumeInterrupted();
3917
3950
  }
3918
3951
  await abort();
3919
3952
  }
@@ -4247,6 +4280,11 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
4247
4280
  session.client.closeClaudeSessionTurn("cancelled");
4248
4281
  return;
4249
4282
  }
4283
+ if (turnSteering.consumeInterrupted()) {
4284
+ session.client.closeClaudeSessionTurn("cancelled");
4285
+ session.client.sendSessionEvent({ type: "message", message: "Aborted by user" });
4286
+ return;
4287
+ }
4250
4288
  applyClaudeResultLifecycle(result, {
4251
4289
  closeCompleted: () => session.client.closeClaudeSessionTurn("completed"),
4252
4290
  closeFailed: (error) => session.client.closeClaudeSessionTurn("failed", { error }),
@@ -7854,7 +7892,7 @@ function parseJsonObject(text) {
7854
7892
  return null;
7855
7893
  }
7856
7894
  }
7857
- 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-C3NtU4Ch.cjs', document.baseURI).href))).resolve(s)) {
7895
+ 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-ChWePQEd.cjs', document.baseURI).href))).resolve(s)) {
7858
7896
  const platformArch = `${platform}-${arch}`;
7859
7897
  const candidates = [
7860
7898
  `@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
@@ -12306,7 +12344,7 @@ function registerSideQuestionHandler(rpc, deps) {
12306
12344
  const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
12307
12345
  const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
12308
12346
  const run = deps.run ?? (async (input) => {
12309
- const { query } = await Promise.resolve().then(function () { return require('./index-gkFhwPXq.cjs'); });
12347
+ const { query } = await Promise.resolve().then(function () { return require('./index-BSVgut_Y.cjs'); });
12310
12348
  return runSideQuestion(query, input);
12311
12349
  });
12312
12350
  const slots = /* @__PURE__ */ new Map();
@@ -12408,7 +12446,7 @@ const MAX_TITLE_CHARS = 60;
12408
12446
  const GENERATION_TIMEOUT_MS = 3e4;
12409
12447
  function resolveClaudeBinary() {
12410
12448
  try {
12411
- 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-C3NtU4Ch.cjs', document.baseURI).href)));
12449
+ 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-ChWePQEd.cjs', document.baseURI).href)));
12412
12450
  const utilsPath = path.resolve(path.join(api.projectPath(), "scripts", "claude_version_utils.cjs"));
12413
12451
  const { getClaudeCliPath } = require$1(utilsPath);
12414
12452
  const path$1 = getClaudeCliPath();
@@ -14634,9 +14672,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
14634
14672
  };
14635
14673
  }
14636
14674
 
14637
- 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-C3NtU4Ch.cjs', document.baseURI).href)));
14675
+ 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-ChWePQEd.cjs', document.baseURI).href)));
14638
14676
  const __dirname$1 = path.dirname(__filename$1);
14639
- const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-C3NtU4Ch.cjs', document.baseURI).href)));
14677
+ const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-ChWePQEd.cjs', document.baseURI).href)));
14640
14678
  const PRISMA_QUERY_ENGINE_FILES = {
14641
14679
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
14642
14680
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -17542,7 +17580,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17542
17580
  process.exit(0);
17543
17581
  } else if (subcommand === "install-terminal-hooks") {
17544
17582
  try {
17545
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-DZUBgnFh.cjs'); });
17583
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks--jkP17uE.cjs'); });
17546
17584
  const command = parseTerminalHooksArgs(args.slice(1));
17547
17585
  if (command.action === "help") {
17548
17586
  console.log(TERMINAL_HOOKS_HELP);
@@ -17559,7 +17597,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17559
17597
  }
17560
17598
  } else if (subcommand === "spawn") {
17561
17599
  try {
17562
- const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-jWj3xFhX.cjs'); });
17600
+ const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-CdZgvthE.cjs'); });
17563
17601
  await handleSpawnCommand(args.slice(1));
17564
17602
  } catch (error) {
17565
17603
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17571,7 +17609,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17571
17609
  return;
17572
17610
  } else if (subcommand === "sessions") {
17573
17611
  try {
17574
- const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-CN2y0xBl.cjs'); });
17612
+ const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-Jt9lrcrG.cjs'); });
17575
17613
  await handleSessionsCommand(args.slice(1));
17576
17614
  } catch (error) {
17577
17615
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17583,7 +17621,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17583
17621
  return;
17584
17622
  } else if (subcommand === "send") {
17585
17623
  try {
17586
- const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-B4Qo-87h.cjs'); });
17624
+ const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-BGcCrMUT.cjs'); });
17587
17625
  await handleSendCommand(args.slice(1));
17588
17626
  } catch (error) {
17589
17627
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17689,9 +17727,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17689
17727
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
17690
17728
  const projectId = args[3];
17691
17729
  try {
17692
- const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-nyMHCx-i.cjs'); });
17693
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./limits-C_RGzva6.cjs'); }).then(function (n) { return n.persistence; });
17694
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-CxGm_YJ-.cjs'); }).then(function (n) { return n.api; });
17730
+ const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-Dn7nAHcA.cjs'); });
17731
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./limits-DbLWXlJm.cjs'); }).then(function (n) { return n.persistence; });
17732
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-Bk3W89Z3.cjs'); }).then(function (n) { return n.api; });
17695
17733
  let userEmail = void 0;
17696
17734
  try {
17697
17735
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -17722,7 +17760,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17722
17760
  }
17723
17761
  if (geminiSubcommand === "project" && args[2] === "get") {
17724
17762
  try {
17725
- const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-nyMHCx-i.cjs'); });
17763
+ const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-Dn7nAHcA.cjs'); });
17726
17764
  const config = readGeminiLocalConfig();
17727
17765
  if (config.googleCloudProject) {
17728
17766
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -17762,7 +17800,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17762
17800
  process.exit(0);
17763
17801
  }
17764
17802
  try {
17765
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-Dy3y-lD9.cjs'); });
17803
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-CxUz95A1.cjs'); });
17766
17804
  let startedBy = void 0;
17767
17805
  for (let i = 1; i < args.length; i++) {
17768
17806
  if (args[i] === "--started-by") {
@@ -17792,7 +17830,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17792
17830
  }
17793
17831
  };
17794
17832
  try {
17795
- const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-klhxcpC8.cjs'); });
17833
+ const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-3STVDtNO.cjs'); });
17796
17834
  const parsed = parsePiRunnerArgs(args.slice(1));
17797
17835
  const resolved = resolveAcpAgentConfig(["pi", ...parsed.passthrough]);
17798
17836
  const { credentials } = await authAndSetupMachineIfNeeded();
@@ -17820,7 +17858,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17820
17858
  return;
17821
17859
  } else if (subcommand === "acp") {
17822
17860
  try {
17823
- const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-klhxcpC8.cjs'); });
17861
+ const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-3STVDtNO.cjs'); });
17824
17862
  let startedBy = void 0;
17825
17863
  let verbose = false;
17826
17864
  const acpArgs = [];
@@ -17860,7 +17898,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17860
17898
  return;
17861
17899
  } else if (subcommand === "openclaw") {
17862
17900
  try {
17863
- const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-CJusckVM.cjs'); });
17901
+ const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-RLIFJx61.cjs'); });
17864
17902
  let startedBy = void 0;
17865
17903
  let verbose = false;
17866
17904
  let gatewayUrl;
@@ -17911,7 +17949,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17911
17949
  return;
17912
17950
  } else if (subcommand === "todo") {
17913
17951
  try {
17914
- const { handleTodoCommand } = await Promise.resolve().then(function () { return require('./todo-B0kvqUTQ.cjs'); });
17952
+ const { handleTodoCommand } = await Promise.resolve().then(function () { return require('./todo-D9nFaYpQ.cjs'); });
17915
17953
  await handleTodoCommand(args.slice(1));
17916
17954
  } catch (error) {
17917
17955
  console.error(JSON.stringify({ error: error instanceof Error ? error.message : "Todo command failed" }));
@@ -17920,7 +17958,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17920
17958
  return;
17921
17959
  } else if (subcommand === "teams") {
17922
17960
  try {
17923
- const { handleTeamsCommand } = await Promise.resolve().then(function () { return require('./teams-BhFspeAY.cjs'); });
17961
+ const { handleTeamsCommand } = await Promise.resolve().then(function () { return require('./teams-DfVwVZ4x.cjs'); });
17924
17962
  await handleTeamsCommand(args.slice(1));
17925
17963
  } catch (error) {
17926
17964
  console.error(error instanceof Error ? error.message : "Teams command failed");
@@ -17929,7 +17967,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17929
17967
  return;
17930
17968
  } else if (subcommand === "mcp" && args.length === 1) {
17931
17969
  try {
17932
- const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-czNIfD59.cjs'); });
17970
+ const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-kE0n1dBF.cjs'); });
17933
17971
  await handleMcpCommand();
17934
17972
  } catch (error) {
17935
17973
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
@@ -1,11 +1,11 @@
1
- import { q as query } from './index-BZr5l8TH.mjs';
1
+ import { q as query } from './index-C55sW8E9.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-CrKeJuyF.mjs';
6
+ import './types-CLosaeZT.mjs';
7
7
  import 'axios';
8
- import './limits-DefXc1TL.mjs';
8
+ import './limits-DT5Yk_UH.mjs';
9
9
  import 'node:fs/promises';
10
10
  import 'node:fs';
11
11
  import 'node:path';
@@ -29,7 +29,7 @@ import 'fs';
29
29
  import 'node:readline';
30
30
  import '@anthropic-ai/sandbox-runtime';
31
31
  import 'expo-server-sdk';
32
- import './agentGuidance-DRnXdFAY.mjs';
32
+ import './agentGuidance-Do7cQka3.mjs';
33
33
  import 'ink';
34
34
  import 'react';
35
35
  import 'ps-list';
@@ -1,9 +1,9 @@
1
- import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-BwTEBAyP.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-BwTEBAyP.mjs';
3
- import { c as configuration, g as readSettings, i as encodeBase64, l as logger } from './limits-DefXc1TL.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-Bh3KETfz.mjs';
5
- import { k as connectionState, A as ApiClient, n as notifyDaemonSessionStarted, p as projectPath, l as BUILTIN_TODO_DISCOVERY } from './types-CrKeJuyF.mjs';
6
- import { P as PI_TEAMS_EXTENSION, j as initialMachineMetadata, k as createSessionMetadata, m as setupOfflineReconnection, p as StreamRelay, n as MessageQueue2, u as hashObject, v as startHappyServer, x as registerAgentAttachmentDownloads, y as TitleGenerator, o as registerKillSessionHandler, C as CLAUDE_ATTACHMENT_KINDS, z as stageClaudeAttachments, B as appendStagedAttachmentsToPrompt, E as BasePermissionHandler, F as writeSessionModeFile, H as normalizeAcpPermissionMode, I as removeSessionModeFile } from './index-BZr5l8TH.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-CWmjboOm.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-CWmjboOm.mjs';
3
+ import { c as configuration, g as readSettings, i as encodeBase64, l as logger } from './limits-DT5Yk_UH.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-CtXoi6PN.mjs';
5
+ import { k as connectionState, A as ApiClient, n as notifyDaemonSessionStarted, p as projectPath, l as BUILTIN_TODO_DISCOVERY } from './types-CLosaeZT.mjs';
6
+ import { P as PI_TEAMS_EXTENSION, j as initialMachineMetadata, k as createSessionMetadata, m as setupOfflineReconnection, p as StreamRelay, n as MessageQueue2, u as hashObject, v as startHappyServer, x as registerAgentAttachmentDownloads, y as TitleGenerator, o as registerKillSessionHandler, C as CLAUDE_ATTACHMENT_KINDS, z as stageClaudeAttachments, B as appendStagedAttachmentsToPrompt, E as BasePermissionHandler, F as writeSessionModeFile, H as normalizeAcpPermissionMode, I as removeSessionModeFile } from './index-C55sW8E9.mjs';
7
7
  import { mkdir, chmod, writeFile, rename } from 'node:fs/promises';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { join } from 'node:path';
@@ -32,7 +32,7 @@ import 'fs';
32
32
  import 'node:readline';
33
33
  import '@anthropic-ai/sandbox-runtime';
34
34
  import 'expo-server-sdk';
35
- import './agentGuidance-DRnXdFAY.mjs';
35
+ import './agentGuidance-Do7cQka3.mjs';
36
36
  import 'ink';
37
37
  import 'react';
38
38
  import '@anthropic-ai/claude-agent-sdk';
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./index-C3NtU4Ch.cjs');
5
- require('./limits-C_RGzva6.cjs');
4
+ require('./index-ChWePQEd.cjs');
5
+ require('./limits-DbLWXlJm.cjs');
6
6
  require('zod');
7
- require('./types-CxGm_YJ-.cjs');
7
+ require('./types-Bk3W89Z3.cjs');
8
8
  require('node:child_process');
9
9
  require('node:os');
10
10
  require('node:crypto');
@@ -12,7 +12,7 @@ require('cross-spawn');
12
12
  require('node:path');
13
13
  require('node:readline');
14
14
  require('node:fs');
15
- require('./agentGuidance-Dxt2uz3R.cjs');
15
+ require('./agentGuidance-B9ENxSaS.cjs');
16
16
  require('node:fs/promises');
17
17
  require('fs/promises');
18
18
  require('ink');
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import 'chalk';
2
- import './index-BZr5l8TH.mjs';
3
- import './limits-DefXc1TL.mjs';
2
+ import './index-C55sW8E9.mjs';
3
+ import './limits-DT5Yk_UH.mjs';
4
4
  import 'zod';
5
- import './types-CrKeJuyF.mjs';
5
+ import './types-CLosaeZT.mjs';
6
6
  import 'node:child_process';
7
7
  import 'node:os';
8
8
  import 'node:crypto';
@@ -10,7 +10,7 @@ import 'cross-spawn';
10
10
  import 'node:path';
11
11
  import 'node:readline';
12
12
  import 'node:fs';
13
- import './agentGuidance-DRnXdFAY.mjs';
13
+ import './agentGuidance-Do7cQka3.mjs';
14
14
  import 'node:fs/promises';
15
15
  import 'fs/promises';
16
16
  import 'ink';
@@ -5,10 +5,10 @@ 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 api = require('./types-CxGm_YJ-.cjs');
9
- var index = require('./index-C3NtU4Ch.cjs');
8
+ var api = require('./types-Bk3W89Z3.cjs');
9
+ var index = require('./index-ChWePQEd.cjs');
10
10
  require('axios');
11
- require('./limits-C_RGzva6.cjs');
11
+ require('./limits-DbLWXlJm.cjs');
12
12
  require('node:fs/promises');
13
13
  require('zod');
14
14
  require('node:crypto');
@@ -30,7 +30,7 @@ require('fs');
30
30
  require('node:readline');
31
31
  require('@anthropic-ai/sandbox-runtime');
32
32
  require('expo-server-sdk');
33
- require('./agentGuidance-Dxt2uz3R.cjs');
33
+ require('./agentGuidance-B9ENxSaS.cjs');
34
34
  require('ink');
35
35
  require('react');
36
36
  require('@anthropic-ai/claude-agent-sdk');
@@ -3,10 +3,10 @@ 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-CrKeJuyF.mjs';
7
- import { t as tmuxSupportsSessionEnv } from './index-BZr5l8TH.mjs';
6
+ import { p as projectPath } from './types-CLosaeZT.mjs';
7
+ import { t as tmuxSupportsSessionEnv } from './index-C55sW8E9.mjs';
8
8
  import 'axios';
9
- import './limits-DefXc1TL.mjs';
9
+ import './limits-DT5Yk_UH.mjs';
10
10
  import 'node:fs/promises';
11
11
  import 'zod';
12
12
  import 'node:crypto';
@@ -28,7 +28,7 @@ import 'fs';
28
28
  import 'node:readline';
29
29
  import '@anthropic-ai/sandbox-runtime';
30
30
  import 'expo-server-sdk';
31
- import './agentGuidance-DRnXdFAY.mjs';
31
+ import './agentGuidance-Do7cQka3.mjs';
32
32
  import 'ink';
33
33
  import 'react';
34
34
  import '@anthropic-ai/claude-agent-sdk';
package/dist/lib.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./types-CxGm_YJ-.cjs');
4
- var persistence = require('./limits-C_RGzva6.cjs');
3
+ var api = require('./types-Bk3W89Z3.cjs');
4
+ var persistence = require('./limits-DbLWXlJm.cjs');
5
5
  require('axios');
6
6
  require('node:events');
7
7
  require('socket.io-client');
package/dist/lib.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-CrKeJuyF.mjs';
2
- export { c as configuration, l as logger } from './limits-DefXc1TL.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-CLosaeZT.mjs';
2
+ export { c as configuration, l as logger } from './limits-DT5Yk_UH.mjs';
3
3
  import 'axios';
4
4
  import 'node:events';
5
5
  import 'socket.io-client';
@@ -9,7 +9,7 @@ import chalk from 'chalk';
9
9
  import { inspect } from 'node:util';
10
10
 
11
11
  var name = "very-happy-cli";
12
- var version = "0.2.139";
12
+ var version = "0.2.141";
13
13
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
14
14
  var author = "Kirill Dubovitskiy";
15
15
  var contributors = [
@@ -122,12 +122,12 @@ var dependencies = {
122
122
  zod: "^4.0.0"
123
123
  };
124
124
  var optionalDependencies = {
125
- "very-happy-tools-arm64-darwin": "0.2.139",
126
- "very-happy-tools-x64-darwin": "0.2.139",
127
- "very-happy-tools-arm64-linux": "0.2.139",
128
- "very-happy-tools-x64-linux": "0.2.139",
129
- "very-happy-tools-arm64-win32": "0.2.139",
130
- "very-happy-tools-x64-win32": "0.2.139"
125
+ "very-happy-tools-arm64-darwin": "0.2.141",
126
+ "very-happy-tools-x64-darwin": "0.2.141",
127
+ "very-happy-tools-arm64-linux": "0.2.141",
128
+ "very-happy-tools-x64-linux": "0.2.141",
129
+ "very-happy-tools-arm64-win32": "0.2.141",
130
+ "very-happy-tools-x64-win32": "0.2.141"
131
131
  };
132
132
  var devDependencies = {
133
133
  "@slopus/happy-wire": "workspace:*",
@@ -30,7 +30,7 @@ function _interopNamespaceDefault(e) {
30
30
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
31
31
 
32
32
  var name = "very-happy-cli";
33
- var version = "0.2.139";
33
+ var version = "0.2.141";
34
34
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
35
35
  var author = "Kirill Dubovitskiy";
36
36
  var contributors = [
@@ -143,12 +143,12 @@ var dependencies = {
143
143
  zod: "^4.0.0"
144
144
  };
145
145
  var optionalDependencies = {
146
- "very-happy-tools-arm64-darwin": "0.2.139",
147
- "very-happy-tools-x64-darwin": "0.2.139",
148
- "very-happy-tools-arm64-linux": "0.2.139",
149
- "very-happy-tools-x64-linux": "0.2.139",
150
- "very-happy-tools-arm64-win32": "0.2.139",
151
- "very-happy-tools-x64-win32": "0.2.139"
146
+ "very-happy-tools-arm64-darwin": "0.2.141",
147
+ "very-happy-tools-x64-darwin": "0.2.141",
148
+ "very-happy-tools-arm64-linux": "0.2.141",
149
+ "very-happy-tools-x64-linux": "0.2.141",
150
+ "very-happy-tools-arm64-win32": "0.2.141",
151
+ "very-happy-tools-x64-win32": "0.2.141"
152
152
  };
153
153
  var devDependencies = {
154
154
  "@slopus/happy-wire": "workspace:*",
@@ -1,10 +1,10 @@
1
- import { r as registerTeamsTools } from './agentGuidance-DRnXdFAY.mjs';
1
+ import { r as registerTeamsTools } from './agentGuidance-Do7cQka3.mjs';
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { z } from 'zod';
5
- import { f as pushClipboardViaDaemon, g as setTerminalTitleViaDaemon } from './types-CrKeJuyF.mjs';
6
- import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES } from './limits-DefXc1TL.mjs';
7
- import { h as registerAssistantSessionTools } from './index-BZr5l8TH.mjs';
5
+ import { f as pushClipboardViaDaemon, g as setTerminalTitleViaDaemon } from './types-CLosaeZT.mjs';
6
+ import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES } from './limits-DT5Yk_UH.mjs';
7
+ import { h as registerAssistantSessionTools } from './index-C55sW8E9.mjs';
8
8
  import 'node:fs/promises';
9
9
  import 'node:os';
10
10
  import 'node:crypto';
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('./agentGuidance-Dxt2uz3R.cjs');
3
+ var agentGuidance = require('./agentGuidance-B9ENxSaS.cjs');
4
4
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
5
5
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
6
6
  var z = require('zod');
7
- var api = require('./types-CxGm_YJ-.cjs');
8
- var persistence = require('./limits-C_RGzva6.cjs');
9
- var index = require('./index-C3NtU4Ch.cjs');
7
+ var api = require('./types-Bk3W89Z3.cjs');
8
+ var persistence = require('./limits-DbLWXlJm.cjs');
9
+ var index = require('./index-ChWePQEd.cjs');
10
10
  require('node:fs/promises');
11
11
  require('node:os');
12
12
  require('node:crypto');
@@ -2,11 +2,11 @@ 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 { k as connectionState, A as ApiClient, h as errorLogMetadata, n as notifyDaemonSessionStarted, p as projectPath, j as contentLogMetadata } from './types-CrKeJuyF.mjs';
6
- import { l as logger, g as readSettings, i as encodeBase64 } from './limits-DefXc1TL.mjs';
7
- import { J as GEMINI_API_KEY_ENV, K as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, E as BasePermissionHandler, L as BaseReasoningProcessor, j as initialMachineMetadata, k as createSessionMetadata, m as setupOfflineReconnection, n as MessageQueue2, u as hashObject, N as MessageBuffer, O as CHANGE_TITLE_INSTRUCTION, o as registerKillSessionHandler, v as startHappyServer } from './index-BZr5l8TH.mjs';
8
- import { A as AcpBackend } from './AcpBackend-BwTEBAyP.mjs';
9
- import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-o9NFsj8x.mjs';
5
+ import { k as connectionState, A as ApiClient, h as errorLogMetadata, n as notifyDaemonSessionStarted, p as projectPath, j as contentLogMetadata } from './types-CLosaeZT.mjs';
6
+ import { l as logger, g as readSettings, i as encodeBase64 } from './limits-DT5Yk_UH.mjs';
7
+ import { J as GEMINI_API_KEY_ENV, K as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, E as BasePermissionHandler, L as BaseReasoningProcessor, j as initialMachineMetadata, k as createSessionMetadata, m as setupOfflineReconnection, n as MessageQueue2, u as hashObject, N as MessageBuffer, O as CHANGE_TITLE_INSTRUCTION, o as registerKillSessionHandler, v as startHappyServer } from './index-C55sW8E9.mjs';
8
+ import { A as AcpBackend } from './AcpBackend-CWmjboOm.mjs';
9
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DY57frJF.mjs';
10
10
  import 'axios';
11
11
  import 'node:events';
12
12
  import 'socket.io-client';
@@ -32,7 +32,7 @@ import '@anthropic-ai/sandbox-runtime';
32
32
  import 'expo-server-sdk';
33
33
  import 'chalk';
34
34
  import 'node:util';
35
- import './agentGuidance-DRnXdFAY.mjs';
35
+ import './agentGuidance-Do7cQka3.mjs';
36
36
  import '@anthropic-ai/claude-agent-sdk';
37
37
  import 'ps-list';
38
38
  import 'tmp';
@@ -4,11 +4,11 @@ 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 api = require('./types-CxGm_YJ-.cjs');
8
- var persistence = require('./limits-C_RGzva6.cjs');
9
- var index = require('./index-C3NtU4Ch.cjs');
10
- var AcpBackend = require('./AcpBackend-ioCPQLt4.cjs');
11
- var config = require('./config-nyMHCx-i.cjs');
7
+ var api = require('./types-Bk3W89Z3.cjs');
8
+ var persistence = require('./limits-DbLWXlJm.cjs');
9
+ var index = require('./index-ChWePQEd.cjs');
10
+ var AcpBackend = require('./AcpBackend-CnWSwaHk.cjs');
11
+ var config = require('./config-Dn7nAHcA.cjs');
12
12
  require('axios');
13
13
  require('node:events');
14
14
  require('socket.io-client');
@@ -34,7 +34,7 @@ require('@anthropic-ai/sandbox-runtime');
34
34
  require('expo-server-sdk');
35
35
  require('chalk');
36
36
  require('node:util');
37
- require('./agentGuidance-Dxt2uz3R.cjs');
37
+ require('./agentGuidance-B9ENxSaS.cjs');
38
38
  require('@anthropic-ai/claude-agent-sdk');
39
39
  require('ps-list');
40
40
  require('tmp');
@@ -3,10 +3,10 @@ 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 { h as errorLogMetadata, j as contentLogMetadata, k as connectionState, A as ApiClient, n as notifyDaemonSessionStarted } from './types-CrKeJuyF.mjs';
7
- import { A as AcpSessionManager } from './AcpSessionManager-Bh3KETfz.mjs';
8
- import { f as ensurePrivateDirectorySync, h as hardenPrivateFileSync, w as writePrivateFileSync, g as readSettings, i as encodeBase64, l as logger, c as configuration } from './limits-DefXc1TL.mjs';
9
- import { j as initialMachineMetadata, k as createSessionMetadata, m as setupOfflineReconnection, n as MessageQueue2, o as registerKillSessionHandler } from './index-BZr5l8TH.mjs';
6
+ import { h as errorLogMetadata, j as contentLogMetadata, k as connectionState, A as ApiClient, n as notifyDaemonSessionStarted } from './types-CLosaeZT.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-CtXoi6PN.mjs';
8
+ import { f as ensurePrivateDirectorySync, h as hardenPrivateFileSync, w as writePrivateFileSync, g as readSettings, i as encodeBase64, l as logger, c as configuration } from './limits-DT5Yk_UH.mjs';
9
+ import { j as initialMachineMetadata, k as createSessionMetadata, m as setupOfflineReconnection, n as MessageQueue2, o as registerKillSessionHandler } from './index-C55sW8E9.mjs';
10
10
  import WebSocket from 'ws';
11
11
  import * as ed from '@noble/ed25519';
12
12
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -32,7 +32,7 @@ import '@anthropic-ai/sandbox-runtime';
32
32
  import 'expo-server-sdk';
33
33
  import 'chalk';
34
34
  import 'node:util';
35
- import './agentGuidance-DRnXdFAY.mjs';
35
+ import './agentGuidance-Do7cQka3.mjs';
36
36
  import 'ink';
37
37
  import 'react';
38
38
  import '@anthropic-ai/claude-agent-sdk';
@@ -5,10 +5,10 @@ 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 api = require('./types-CxGm_YJ-.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-o9T6W69-.cjs');
10
- var persistence = require('./limits-C_RGzva6.cjs');
11
- var index = require('./index-C3NtU4Ch.cjs');
8
+ var api = require('./types-Bk3W89Z3.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-Dxt78rPO.cjs');
10
+ var persistence = require('./limits-DbLWXlJm.cjs');
11
+ var index = require('./index-ChWePQEd.cjs');
12
12
  var WebSocket = require('ws');
13
13
  var ed = require('@noble/ed25519');
14
14
  var sha2_js = require('@noble/hashes/sha2.js');
@@ -34,7 +34,7 @@ require('@anthropic-ai/sandbox-runtime');
34
34
  require('expo-server-sdk');
35
35
  require('chalk');
36
36
  require('node:util');
37
- require('./agentGuidance-Dxt2uz3R.cjs');
37
+ require('./agentGuidance-B9ENxSaS.cjs');
38
38
  require('ink');
39
39
  require('react');
40
40
  require('@anthropic-ai/claude-agent-sdk');