very-happy-cli 0.2.104 → 0.2.106

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 (33) hide show
  1. package/dist/{AcpBackend-DDGfk3HJ.cjs → AcpBackend-DMmvLNNM.cjs} +1 -1
  2. package/dist/{AcpBackend-De4iQ_JG.mjs → AcpBackend-Ux5FD_6F.mjs} +1 -1
  3. package/dist/{AcpSessionManager-DRzAgHtT.mjs → AcpSessionManager-C1hoU_rK.mjs} +1 -1
  4. package/dist/{AcpSessionManager-Cdv6Xgwy.cjs → AcpSessionManager-RYkxYWDn.cjs} +1 -1
  5. package/dist/{config-E3KdWyaQ.mjs → config-DAb5saOC.mjs} +2 -2
  6. package/dist/{config-CqM5UxVd.cjs → config-Dkn5KcXp.cjs} +2 -2
  7. package/dist/{index-CX_3uUem.cjs → index-BLW-smJu.cjs} +209 -71
  8. package/dist/{index--TiLl7-A.mjs → index-CgWdwkhB.mjs} +205 -67
  9. package/dist/{index-C_dmtMJ6.mjs → index-D2ZzPm58.mjs} +5 -5
  10. package/dist/{index-De6H3U0N.cjs → index-D48mWUTN.cjs} +2 -2
  11. package/dist/{index-Bzj1XdPx.mjs → index-DCpgRGWy.mjs} +2 -2
  12. package/dist/{index-fuavV8uc.cjs → index-Do3JnAi7.cjs} +4 -4
  13. package/dist/index.cjs +2 -2
  14. package/dist/index.mjs +2 -2
  15. package/dist/{installTerminalHooks-BXMBwrvq.cjs → installTerminalHooks-9rn15uP8.cjs} +2 -2
  16. package/dist/{installTerminalHooks-DV0e8-V3.mjs → installTerminalHooks-l1B-nbWa.mjs} +2 -2
  17. package/dist/lib.cjs +1 -1
  18. package/dist/lib.d.cts +6 -0
  19. package/dist/lib.d.mts +6 -0
  20. package/dist/lib.mjs +1 -1
  21. package/dist/{mcp-Cq3On_Qo.cjs → mcp-C3zpbx-m.cjs} +2 -2
  22. package/dist/{mcp-DFS9Zohz.mjs → mcp-ZvHzv_lJ.mjs} +2 -2
  23. package/dist/{runGemini-BFjtlkZI.mjs → runGemini-0QqaFN1l.mjs} +4 -4
  24. package/dist/{runGemini-DFvjh8cO.cjs → runGemini-q20IdxQV.cjs} +4 -4
  25. package/dist/{runOpenClaw-BFYj1F4u.mjs → runOpenClaw-C6Z6MLHq.mjs} +3 -3
  26. package/dist/{runOpenClaw-B5Og1FED.cjs → runOpenClaw-CtWkyvDJ.cjs} +3 -3
  27. package/dist/{send-Bog0YPxo.cjs → send-B8YQyV3D.cjs} +2 -2
  28. package/dist/{send-B666yos0.mjs → send-DEhUWg8v.mjs} +2 -2
  29. package/dist/{spawn-DrqvVoNF.mjs → spawn-BzbPyTHU.mjs} +2 -2
  30. package/dist/{spawn-BSdMkMPX.cjs → spawn-ChmlP1Z_.cjs} +2 -2
  31. package/dist/{types-14LATr9X.cjs → types-C8-WODFE.cjs} +24 -10
  32. package/dist/{types-D9LyZitb.mjs → types-lSeHEzPR.mjs} +23 -9
  33. package/package.json +7 -7
package/dist/lib.d.mts CHANGED
@@ -444,6 +444,7 @@ declare const UserMessageSchema: z$1.ZodObject<{
444
444
  appendSystemPrompt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
445
445
  allowedTools: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodArray<z$1.ZodString>>>;
446
446
  disallowedTools: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodArray<z$1.ZodString>>>;
447
+ effort: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
447
448
  delivery: z$1.ZodOptional<z$1.ZodEnum<{
448
449
  queue: "queue";
449
450
  steer: "steer";
@@ -1001,6 +1002,11 @@ interface SpawnSessionOptions {
1001
1002
  * metadata so the import picker hides it. Old daemons ignore the field.
1002
1003
  */
1003
1004
  importedFromClaudeSessionId?: string;
1005
+ /**
1006
+ * B-294: title to stamp on the imported session's metadata (the source
1007
+ * conversation's summary / first prompt). Sanitized daemon-side.
1008
+ */
1009
+ importTitle?: string;
1004
1010
  /**
1005
1011
  * B-051: spawn the machine's assistant (meta-agent) session. The daemon
1006
1012
  * forces cwd to ~/.happy/assistant (the passed `directory` is ignored),
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-D9LyZitb.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-lSeHEzPR.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-CX_3uUem.cjs');
6
+ var index = require('./index-BLW-smJu.cjs');
7
7
  var limits = require('./limits-KdWKmwtH.cjs');
8
- var persistence = require('./types-14LATr9X.cjs');
8
+ var persistence = require('./types-C8-WODFE.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--TiLl7-A.mjs';
4
+ import { p as pushClipboardViaDaemon } from './index-CgWdwkhB.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-D9LyZitb.mjs';
6
+ import { l as logger } from './types-lSeHEzPR.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-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';
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-lSeHEzPR.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-CgWdwkhB.mjs';
7
+ import { A as AcpBackend } from './AcpBackend-Ux5FD_6F.mjs';
8
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DAb5saOC.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-14LATr9X.cjs');
8
- var index = require('./index-CX_3uUem.cjs');
9
- var AcpBackend = require('./AcpBackend-DDGfk3HJ.cjs');
10
- var config = require('./config-CqM5UxVd.cjs');
7
+ var persistence = require('./types-C8-WODFE.cjs');
8
+ var index = require('./index-BLW-smJu.cjs');
9
+ var AcpBackend = require('./AcpBackend-DMmvLNNM.cjs');
10
+ var config = require('./config-Dkn5KcXp.cjs');
11
11
  require('axios');
12
12
  require('chalk');
13
13
  require('node:util');
@@ -3,9 +3,9 @@ import { execFileSync } from 'node:child_process';
3
3
  import os from 'node:os';
4
4
  import { existsSync, readFileSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
- import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-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';
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-lSeHEzPR.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-C1hoU_rK.mjs';
8
+ import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-CgWdwkhB.mjs';
9
9
  import WebSocket from 'ws';
10
10
  import * as ed from '@noble/ed25519';
11
11
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -5,9 +5,9 @@ var node_child_process = require('node:child_process');
5
5
  var os = require('node:os');
6
6
  var node_fs = require('node:fs');
7
7
  var path = require('node:path');
8
- var persistence = require('./types-14LATr9X.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-Cdv6Xgwy.cjs');
10
- var index = require('./index-CX_3uUem.cjs');
8
+ var persistence = require('./types-C8-WODFE.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-RYkxYWDn.cjs');
10
+ var index = require('./index-BLW-smJu.cjs');
11
11
  var WebSocket = require('ws');
12
12
  var ed = require('@noble/ed25519');
13
13
  var sha2_js = require('@noble/hashes/sha2.js');
@@ -3,8 +3,8 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var persistence = require('./types-14LATr9X.cjs');
7
- var index = require('./index-CX_3uUem.cjs');
6
+ var persistence = require('./types-C8-WODFE.cjs');
7
+ var index = require('./index-BLW-smJu.cjs');
8
8
  require('axios');
9
9
  require('node:util');
10
10
  require('node:os');
@@ -1,8 +1,8 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { r as readPersistedSessions, c as configuration } from './types-D9LyZitb.mjs';
5
- import { b as sendUserMessage, a as sessionWebUrl } from './index--TiLl7-A.mjs';
4
+ import { r as readPersistedSessions, c as configuration } from './types-lSeHEzPR.mjs';
5
+ import { b as sendUserMessage, a as sessionWebUrl } from './index-CgWdwkhB.mjs';
6
6
  import 'axios';
7
7
  import 'node:util';
8
8
  import 'node:os';
@@ -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--TiLl7-A.mjs';
5
- import { l as logger } from './types-D9LyZitb.mjs';
4
+ import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, w as waitForSessionKey, b as sendUserMessage } from './index-CgWdwkhB.mjs';
5
+ import { l as logger } from './types-lSeHEzPR.mjs';
6
6
  import 'node:os';
7
7
  import 'node:crypto';
8
8
  import 'cross-spawn';
@@ -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-CX_3uUem.cjs');
7
- var persistence = require('./types-14LATr9X.cjs');
6
+ var index = require('./index-BLW-smJu.cjs');
7
+ var persistence = require('./types-C8-WODFE.cjs');
8
8
  require('node:os');
9
9
  require('node:crypto');
10
10
  require('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.104";
54
+ var version = "0.2.106";
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.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"
167
+ "very-happy-tools-arm64-darwin": "0.2.106",
168
+ "very-happy-tools-x64-darwin": "0.2.106",
169
+ "very-happy-tools-arm64-linux": "0.2.106",
170
+ "very-happy-tools-x64-linux": "0.2.106",
171
+ "very-happy-tools-arm64-win32": "0.2.106",
172
+ "very-happy-tools-x64-win32": "0.2.106"
173
173
  };
174
174
  var devDependencies = {
175
175
  "@slopus/happy-wire": "workspace:*",
@@ -1164,6 +1164,15 @@ const MessageMetaSchema = z.z.object({
1164
1164
  // Allowed tools for this message (null = reset)
1165
1165
  disallowedTools: z.z.array(z.z.string()).nullable().optional(),
1166
1166
  // Disallowed tools for this message (null = reset)
1167
+ /**
1168
+ * Thinking depth for this message (null = reset to the machine default).
1169
+ * Deliberately a plain string, not an enum: an unknown value must not make
1170
+ * zod reject the WHOLE message the way the `dontAsk` permission enum did
1171
+ * (AGENTS 铁律 14). runClaude validates it against its own allow-list and
1172
+ * ignores anything else. Absent here until 0.2.105, which is why every
1173
+ * released CLI silently dropped the web's effort selection.
1174
+ */
1175
+ effort: z.z.string().nullable().optional(),
1167
1176
  /** Omitted/queue waits for the current turn; steer targets the live turn. */
1168
1177
  delivery: z.z.enum(["queue", "steer"]).optional()
1169
1178
  });
@@ -1594,7 +1603,7 @@ class RpcHandlerManager {
1594
1603
  }
1595
1604
  }
1596
1605
 
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))));
1606
+ 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-C8-WODFE.cjs', document.baseURI).href))));
1598
1607
  function projectPath() {
1599
1608
  const path = path$1.resolve(__dirname$1, "..");
1600
1609
  return path;
@@ -14412,7 +14421,7 @@ class ApiMachineClient {
14412
14421
  }
14413
14422
  });
14414
14423
  this.rpcHandlerManager.registerHandler("claude-import-session", async (params) => {
14415
- const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode } = params || {};
14424
+ const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode, title } = params || {};
14416
14425
  if (typeof directory !== "string" || directory.length === 0) {
14417
14426
  throw new Error("directory is required");
14418
14427
  }
@@ -14438,7 +14447,12 @@ class ApiMachineClient {
14438
14447
  agent: "claude",
14439
14448
  resumeClaudeSessionId: newClaudeSessionId,
14440
14449
  importedFromClaudeSessionId: claudeSessionId,
14441
- permissionMode: typeof permissionMode === "string" ? permissionMode : void 0
14450
+ permissionMode: typeof permissionMode === "string" ? permissionMode : void 0,
14451
+ // B-294: the imported session carries the source title from the
14452
+ // start. The CLI's own title generator only fires on a new user
14453
+ // message and skips a session that already has a summary, so an
14454
+ // import without this stays "New chat" forever.
14455
+ importTitle: typeof title === "string" ? title : void 0
14442
14456
  });
14443
14457
  } catch (error) {
14444
14458
  await discardForkedSession(projectDir, newClaudeSessionId);
@@ -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.104";
32
+ var version = "0.2.106";
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.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"
145
+ "very-happy-tools-arm64-darwin": "0.2.106",
146
+ "very-happy-tools-x64-darwin": "0.2.106",
147
+ "very-happy-tools-arm64-linux": "0.2.106",
148
+ "very-happy-tools-x64-linux": "0.2.106",
149
+ "very-happy-tools-arm64-win32": "0.2.106",
150
+ "very-happy-tools-x64-win32": "0.2.106"
151
151
  };
152
152
  var devDependencies = {
153
153
  "@slopus/happy-wire": "workspace:*",
@@ -1142,6 +1142,15 @@ const MessageMetaSchema = z$1.object({
1142
1142
  // Allowed tools for this message (null = reset)
1143
1143
  disallowedTools: z$1.array(z$1.string()).nullable().optional(),
1144
1144
  // Disallowed tools for this message (null = reset)
1145
+ /**
1146
+ * Thinking depth for this message (null = reset to the machine default).
1147
+ * Deliberately a plain string, not an enum: an unknown value must not make
1148
+ * zod reject the WHOLE message the way the `dontAsk` permission enum did
1149
+ * (AGENTS 铁律 14). runClaude validates it against its own allow-list and
1150
+ * ignores anything else. Absent here until 0.2.105, which is why every
1151
+ * released CLI silently dropped the web's effort selection.
1152
+ */
1153
+ effort: z$1.string().nullable().optional(),
1145
1154
  /** Omitted/queue waits for the current turn; steer targets the live turn. */
1146
1155
  delivery: z$1.enum(["queue", "steer"]).optional()
1147
1156
  });
@@ -14390,7 +14399,7 @@ class ApiMachineClient {
14390
14399
  }
14391
14400
  });
14392
14401
  this.rpcHandlerManager.registerHandler("claude-import-session", async (params) => {
14393
- const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode } = params || {};
14402
+ const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode, title } = params || {};
14394
14403
  if (typeof directory !== "string" || directory.length === 0) {
14395
14404
  throw new Error("directory is required");
14396
14405
  }
@@ -14416,7 +14425,12 @@ class ApiMachineClient {
14416
14425
  agent: "claude",
14417
14426
  resumeClaudeSessionId: newClaudeSessionId,
14418
14427
  importedFromClaudeSessionId: claudeSessionId,
14419
- permissionMode: typeof permissionMode === "string" ? permissionMode : void 0
14428
+ permissionMode: typeof permissionMode === "string" ? permissionMode : void 0,
14429
+ // B-294: the imported session carries the source title from the
14430
+ // start. The CLI's own title generator only fires on a new user
14431
+ // message and skips a session that already has a summary, so an
14432
+ // import without this stays "New chat" forever.
14433
+ importTitle: typeof title === "string" ? title : void 0
14420
14434
  });
14421
14435
  } catch (error) {
14422
14436
  await discardForkedSession(projectDir, newClaudeSessionId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.104",
3
+ "version": "0.2.106",
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.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"
116
+ "very-happy-tools-arm64-darwin": "0.2.106",
117
+ "very-happy-tools-x64-darwin": "0.2.106",
118
+ "very-happy-tools-arm64-linux": "0.2.106",
119
+ "very-happy-tools-x64-linux": "0.2.106",
120
+ "very-happy-tools-arm64-win32": "0.2.106",
121
+ "very-happy-tools-x64-win32": "0.2.106"
122
122
  },
123
123
  "devDependencies": {
124
124
  "@slopus/happy-wire": "workspace:*",