very-happy-cli 0.2.108 → 0.2.110

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-D4vV6SVl.cjs → AcpBackend-D0_wbTs6.cjs} +1 -1
  2. package/dist/{AcpBackend-DwR8rrkS.mjs → AcpBackend-DzZR7TEv.mjs} +1 -1
  3. package/dist/{AcpSessionManager-CPHDZ-nz.cjs → AcpSessionManager-Dcj_iHw8.cjs} +1 -1
  4. package/dist/{AcpSessionManager-C057dkLF.mjs → AcpSessionManager-tWuFWeIF.mjs} +1 -1
  5. package/dist/{config-BvVwprR0.cjs → config-CTCGilz_.cjs} +2 -2
  6. package/dist/{config-DKMwLc1k.mjs → config-CTyyVXHj.mjs} +2 -2
  7. package/dist/{index-CzSv4d_S.mjs → index-BW9kDx5m.mjs} +237 -91
  8. package/dist/{index-BXnHT-Wu.mjs → index-Brhvj7p0.mjs} +5 -5
  9. package/dist/{index-DM0Ku1Rv.cjs → index-CvnMiYgh.cjs} +247 -94
  10. package/dist/{index-Db5m34eh.cjs → index-D-adqB7g.cjs} +4 -4
  11. package/dist/{index-C7N-ONU_.cjs → index-DW78HyvK.cjs} +2 -2
  12. package/dist/{index-DYY1DUOD.mjs → index-jYltd-ZW.mjs} +2 -2
  13. package/dist/index.cjs +2 -2
  14. package/dist/index.mjs +2 -2
  15. package/dist/{installTerminalHooks-Cs49gg_E.mjs → installTerminalHooks-CJyoR9jp.mjs} +2 -2
  16. package/dist/{installTerminalHooks-BpvWmkZ9.cjs → installTerminalHooks-DhQ6k7YD.cjs} +2 -2
  17. package/dist/lib.cjs +1 -1
  18. package/dist/lib.mjs +1 -1
  19. package/dist/{mcp-DY17lhMH.mjs → mcp-BO9-sxMr.mjs} +2 -2
  20. package/dist/{mcp-rTSmj-tn.cjs → mcp-Dr1PegOw.cjs} +2 -2
  21. package/dist/{runGemini-Bqs52hw_.mjs → runGemini-CuzqF6Ys.mjs} +4 -4
  22. package/dist/{runGemini-B3Mme1zr.cjs → runGemini-D6Wwfk_0.cjs} +4 -4
  23. package/dist/{runOpenClaw-CpbsQ7NZ.mjs → runOpenClaw-B5pkmSTb.mjs} +3 -3
  24. package/dist/{runOpenClaw-B2V9j9Le.cjs → runOpenClaw-BYmlS-4Q.cjs} +3 -3
  25. package/dist/{send-uHgpvIqm.mjs → send-Btz1IZ9U.mjs} +2 -2
  26. package/dist/{send-CLdMBQ8e.cjs → send-CuajooZC.cjs} +2 -2
  27. package/dist/sessions-CVUBS3LG.cjs +204 -0
  28. package/dist/sessions-DDwCphTQ.mjs +200 -0
  29. package/dist/{spawn-BXbVzbMs.cjs → spawn-CwS8CPbr.cjs} +16 -3
  30. package/dist/{spawn-Dt4ujmHH.mjs → spawn-DcA80_VN.mjs} +16 -3
  31. package/dist/{types-D4bwyM-D.cjs → types--t4zLibT.cjs} +18 -10
  32. package/dist/{types-D0-nhvuW.mjs → types-BdO0jg7G.mjs} +18 -10
  33. package/package.json +7 -7
@@ -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-CzSv4d_S.mjs';
5
- import { l as logger } from './types-D0-nhvuW.mjs';
4
+ import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, i as isValidSpawnOrigin, w as waitForSessionKey, b as sendUserMessage } from './index-BW9kDx5m.mjs';
5
+ import { l as logger } from './types-BdO0jg7G.mjs';
6
6
  import 'node:os';
7
7
  import 'node:crypto';
8
8
  import 'cross-spawn';
@@ -62,6 +62,13 @@ function parseSpawnArgs(args) {
62
62
  const value = args[++i];
63
63
  if (value === void 0) throw new Error("--prompt-file requires a value");
64
64
  options.promptFile = value;
65
+ } else if (arg === "--spawned-by") {
66
+ const value = args[++i];
67
+ if (value === void 0) throw new Error("--spawned-by requires a value");
68
+ if (!isValidSpawnOrigin(value)) {
69
+ throw new Error("--spawned-by must be 1-24 chars of [a-z0-9] plus - or _, starting with a letter or digit");
70
+ }
71
+ options.spawnedBy = value;
65
72
  } else if (arg === "--json") {
66
73
  options.json = true;
67
74
  } else if (arg === "--help" || arg === "-h") {
@@ -86,6 +93,9 @@ ${chalk.bold("Options:")}
86
93
  --dir, -d <path> Working directory for the new session (required)
87
94
  --prompt, -p <text> First message to send after the session starts
88
95
  --prompt-file <file> Read the first message from a file (UTF-8)
96
+ --spawned-by <name> Tag the new session with its origin (e.g. tanka).
97
+ 1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
98
+ the web list and is searchable as #<name>.
89
99
  --json Machine-readable output: {"sessionId", "url"}
90
100
  -h, --help Show this help
91
101
 
@@ -151,7 +161,7 @@ async function handleSpawnCommand(args) {
151
161
  process.exit(1);
152
162
  }
153
163
  logger.debug(`[SPAWN CMD] Spawning session in ${directory}`);
154
- const result = await spawnDaemonSession(directory);
164
+ const result = await spawnDaemonSession(directory, void 0, { spawnedBy: options.spawnedBy });
155
165
  if (result?.error || !result?.success || !result?.sessionId) {
156
166
  const message = result?.error || "Daemon returned no session ID";
157
167
  console.error(chalk.red("Error:"), `Failed to spawn session: ${message}`);
@@ -169,6 +179,9 @@ async function handleSpawnCommand(args) {
169
179
  }
170
180
  if (options.json) {
171
181
  const payload = { sessionId, url };
182
+ if (options.spawnedBy !== void 0) {
183
+ payload.spawnedBy = options.spawnedBy;
184
+ }
172
185
  if (prompt !== void 0) {
173
186
  payload.promptDelivered = promptError === null;
174
187
  }
@@ -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.108";
54
+ var version = "0.2.110";
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.108",
168
- "very-happy-tools-x64-darwin": "0.2.108",
169
- "very-happy-tools-arm64-linux": "0.2.108",
170
- "very-happy-tools-x64-linux": "0.2.108",
171
- "very-happy-tools-arm64-win32": "0.2.108",
172
- "very-happy-tools-x64-win32": "0.2.108"
167
+ "very-happy-tools-arm64-darwin": "0.2.110",
168
+ "very-happy-tools-x64-darwin": "0.2.110",
169
+ "very-happy-tools-arm64-linux": "0.2.110",
170
+ "very-happy-tools-x64-linux": "0.2.110",
171
+ "very-happy-tools-arm64-win32": "0.2.110",
172
+ "very-happy-tools-x64-win32": "0.2.110"
173
173
  };
174
174
  var devDependencies = {
175
175
  "@slopus/happy-wire": "workspace:*",
@@ -1603,7 +1603,7 @@ class RpcHandlerManager {
1603
1603
  }
1604
1604
  }
1605
1605
 
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-D4bwyM-D.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--t4zLibT.cjs', document.baseURI).href))));
1607
1607
  function projectPath() {
1608
1608
  const path = path$1.resolve(__dirname$1, "..");
1609
1609
  return path;
@@ -15778,6 +15778,13 @@ class NotificationProducer {
15778
15778
  }
15779
15779
  const DEDUP_WINDOW_MS = 3e3;
15780
15780
 
15781
+ function describeSessionCreateError(error) {
15782
+ const base = error instanceof Error ? error.message : "Unknown error";
15783
+ if (!axios.isAxiosError(error) || !error.response) return base;
15784
+ const data = error.response.data;
15785
+ const code = data && typeof data === "object" && typeof data.error === "string" ? data.error : null;
15786
+ return code ? `${base} (${code})` : base;
15787
+ }
15781
15788
  class ApiClient {
15782
15789
  static async create(credential) {
15783
15790
  return new ApiClient(credential);
@@ -15873,7 +15880,7 @@ class ApiClient {
15873
15880
  return null;
15874
15881
  }
15875
15882
  }
15876
- throw new Error(`Failed to get or create session: ${error instanceof Error ? error.message : "Unknown error"}`);
15883
+ throw new Error(`Failed to get or create session: ${describeSessionCreateError(error)}`);
15877
15884
  }
15878
15885
  }
15879
15886
  /**
@@ -16252,7 +16259,8 @@ class ApiClient {
16252
16259
 
16253
16260
  var api = /*#__PURE__*/Object.freeze({
16254
16261
  __proto__: null,
16255
- ApiClient: ApiClient
16262
+ ApiClient: ApiClient,
16263
+ describeSessionCreateError: describeSessionCreateError
16256
16264
  });
16257
16265
 
16258
16266
  const UsageSchema = z.z.object({
@@ -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.108";
32
+ var version = "0.2.110";
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.108",
146
- "very-happy-tools-x64-darwin": "0.2.108",
147
- "very-happy-tools-arm64-linux": "0.2.108",
148
- "very-happy-tools-x64-linux": "0.2.108",
149
- "very-happy-tools-arm64-win32": "0.2.108",
150
- "very-happy-tools-x64-win32": "0.2.108"
145
+ "very-happy-tools-arm64-darwin": "0.2.110",
146
+ "very-happy-tools-x64-darwin": "0.2.110",
147
+ "very-happy-tools-arm64-linux": "0.2.110",
148
+ "very-happy-tools-x64-linux": "0.2.110",
149
+ "very-happy-tools-arm64-win32": "0.2.110",
150
+ "very-happy-tools-x64-win32": "0.2.110"
151
151
  };
152
152
  var devDependencies = {
153
153
  "@slopus/happy-wire": "workspace:*",
@@ -15756,6 +15756,13 @@ class NotificationProducer {
15756
15756
  }
15757
15757
  const DEDUP_WINDOW_MS = 3e3;
15758
15758
 
15759
+ function describeSessionCreateError(error) {
15760
+ const base = error instanceof Error ? error.message : "Unknown error";
15761
+ if (!axios.isAxiosError(error) || !error.response) return base;
15762
+ const data = error.response.data;
15763
+ const code = data && typeof data === "object" && typeof data.error === "string" ? data.error : null;
15764
+ return code ? `${base} (${code})` : base;
15765
+ }
15759
15766
  class ApiClient {
15760
15767
  static async create(credential) {
15761
15768
  return new ApiClient(credential);
@@ -15851,7 +15858,7 @@ class ApiClient {
15851
15858
  return null;
15852
15859
  }
15853
15860
  }
15854
- throw new Error(`Failed to get or create session: ${error instanceof Error ? error.message : "Unknown error"}`);
15861
+ throw new Error(`Failed to get or create session: ${describeSessionCreateError(error)}`);
15855
15862
  }
15856
15863
  }
15857
15864
  /**
@@ -16230,7 +16237,8 @@ class ApiClient {
16230
16237
 
16231
16238
  var api = /*#__PURE__*/Object.freeze({
16232
16239
  __proto__: null,
16233
- ApiClient: ApiClient
16240
+ ApiClient: ApiClient,
16241
+ describeSessionCreateError: describeSessionCreateError
16234
16242
  });
16235
16243
 
16236
16244
  const UsageSchema = z$1.object({
@@ -16294,4 +16302,4 @@ const RawJSONLinesSchema = z$1.discriminatedUnion("type", [
16294
16302
  }).passthrough()
16295
16303
  ]);
16296
16304
 
16297
- export { detectResumeSupport as $, ApiClient as A, deriveLocalCliUpdateSummary as B, updateSettings as C, encodeBase64Url as D, decodeBase64 as E, writeCredentialsLegacy as F, writeCredentialsDataKey as G, readCredentialsForConfiguredRelay as H, InvalidateSync as I, encrypt as J, isClaudeSessionId as K, getLocalHappyAgentCredentialPath as L, MAX_CHAT_ATTACHMENT_SOURCE_BYTES as M, readLocalHappyAgentCredentials as N, decryptWithDataKey as O, decryptLegacy as P, extractCompleteLines as Q, RawJSONLinesSchema as R, decideBackfill as S, parseTerminalHookPayload as T, tmuxArgs as U, scrubTmuxClientEnv as V, decideMirrorBinding as W, MIRROR_BACKFILL_LINES_DEFAULT as X, persistSession as Y, mirrorLineKey as Z, mirrorLocalId as _, ApiSessionClient as a, detectCLIAvailability as a0, acquireDaemonLock as a1, summarizeSpawnSessionForLog as a2, deletePersistedSessions as a3, shellescape as a4, decrypt as a5, writeDaemonState as a6, writeSettings as a7, fetchCliUpdateState as a8, resolveCliUpdateCheckInterval as a9, DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS as aa, releaseDaemonLock as ab, isValidSessionId as ac, listVhTerminals as ad, isValidTerminalId as ae, readVhTerminal as af, sendToVhTerminal as ag, TITLE_PROMPT_PREFIX as ah, BOARD_ANALYZER_PROMPT_PREFIX as ai, startOfflineReconnection as aj, clearCredentials as ak, clearMachineId as al, SandboxConfigSchema as am, CodexAppServerClient as an, getLatestDaemonLog as ao, persistence as ap, api as aq, createEnvelope as b, configuration as c, contentLogMetadata as d, errorLogMetadata as e, packageJson as f, delay as g, connectionState as h, readSettings as i, encodeBase64 as j, ensurePrivateDirectorySync as k, logger as l, hardenPrivateFileSync as m, readDaemonState as n, clearDaemonState as o, projectPath as p, getProjectPath as q, readPersistedSessions as r, initializeSandbox as s, wrapCommand as t, AsyncLock as u, ensurePrivateDirectory as v, writePrivateFileSync as w, hardenPrivateFile as x, readCredentials as y, credentialRelayProblem as z };
16305
+ export { mirrorLocalId as $, ApiClient as A, credentialRelayProblem as B, deriveLocalCliUpdateSummary as C, updateSettings as D, encodeBase64Url as E, decodeBase64 as F, writeCredentialsLegacy as G, writeCredentialsDataKey as H, InvalidateSync as I, readCredentialsForConfiguredRelay as J, encrypt as K, isClaudeSessionId as L, MAX_CHAT_ATTACHMENT_SOURCE_BYTES as M, getLocalHappyAgentCredentialPath as N, readLocalHappyAgentCredentials as O, decryptWithDataKey as P, decryptLegacy as Q, RawJSONLinesSchema as R, extractCompleteLines as S, decideBackfill as T, parseTerminalHookPayload as U, tmuxArgs as V, scrubTmuxClientEnv as W, decideMirrorBinding as X, MIRROR_BACKFILL_LINES_DEFAULT as Y, persistSession as Z, mirrorLineKey as _, ApiSessionClient as a, detectResumeSupport as a0, detectCLIAvailability as a1, acquireDaemonLock as a2, summarizeSpawnSessionForLog as a3, deletePersistedSessions as a4, shellescape as a5, decrypt as a6, writeDaemonState as a7, writeSettings as a8, fetchCliUpdateState as a9, resolveCliUpdateCheckInterval as aa, DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS as ab, releaseDaemonLock as ac, listVhTerminals as ad, isValidTerminalId as ae, readVhTerminal as af, sendToVhTerminal as ag, TITLE_PROMPT_PREFIX as ah, BOARD_ANALYZER_PROMPT_PREFIX as ai, startOfflineReconnection as aj, clearCredentials as ak, clearMachineId as al, SandboxConfigSchema as am, CodexAppServerClient as an, getLatestDaemonLog as ao, persistence as ap, api as aq, createEnvelope as b, configuration as c, contentLogMetadata as d, errorLogMetadata as e, packageJson as f, delay as g, connectionState as h, isValidSessionId as i, readSettings as j, encodeBase64 as k, logger as l, ensurePrivateDirectorySync as m, hardenPrivateFileSync as n, readDaemonState as o, projectPath as p, clearDaemonState as q, readPersistedSessions as r, getProjectPath as s, initializeSandbox as t, wrapCommand as u, AsyncLock as v, writePrivateFileSync as w, ensurePrivateDirectory as x, hardenPrivateFile as y, readCredentials as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.108",
3
+ "version": "0.2.110",
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.108",
117
- "very-happy-tools-x64-darwin": "0.2.108",
118
- "very-happy-tools-arm64-linux": "0.2.108",
119
- "very-happy-tools-x64-linux": "0.2.108",
120
- "very-happy-tools-arm64-win32": "0.2.108",
121
- "very-happy-tools-x64-win32": "0.2.108"
116
+ "very-happy-tools-arm64-darwin": "0.2.110",
117
+ "very-happy-tools-x64-darwin": "0.2.110",
118
+ "very-happy-tools-arm64-linux": "0.2.110",
119
+ "very-happy-tools-x64-linux": "0.2.110",
120
+ "very-happy-tools-arm64-win32": "0.2.110",
121
+ "very-happy-tools-x64-win32": "0.2.110"
122
122
  },
123
123
  "devDependencies": {
124
124
  "@slopus/happy-wire": "workspace:*",