very-happy-cli 0.2.109 → 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.
- package/dist/{AcpBackend-Cc4Ilypg.cjs → AcpBackend-D0_wbTs6.cjs} +1 -1
- package/dist/{AcpBackend-DOzPxcth.mjs → AcpBackend-DzZR7TEv.mjs} +1 -1
- package/dist/{AcpSessionManager-CLfzatC_.cjs → AcpSessionManager-Dcj_iHw8.cjs} +1 -1
- package/dist/{AcpSessionManager-DDN-Yir4.mjs → AcpSessionManager-tWuFWeIF.mjs} +1 -1
- package/dist/{config-DiVKfYr0.cjs → config-CTCGilz_.cjs} +2 -2
- package/dist/{config-DnvzvFHR.mjs → config-CTyyVXHj.mjs} +2 -2
- package/dist/{index-DO-9Ep72.mjs → index-BW9kDx5m.mjs} +76 -16
- package/dist/{index-DaQIcHvY.mjs → index-Brhvj7p0.mjs} +5 -5
- package/dist/{index-dd2R8uSE.cjs → index-CvnMiYgh.cjs} +80 -20
- package/dist/{index-D2qU5HP4.cjs → index-D-adqB7g.cjs} +4 -4
- package/dist/{index-B2U15moC.cjs → index-DW78HyvK.cjs} +2 -2
- package/dist/{index-CGKxZKlo.mjs → index-jYltd-ZW.mjs} +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-BDagPTQW.mjs → installTerminalHooks-CJyoR9jp.mjs} +2 -2
- package/dist/{installTerminalHooks-BoUmuYdq.cjs → installTerminalHooks-DhQ6k7YD.cjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-Ck_y0mCB.mjs → mcp-BO9-sxMr.mjs} +2 -2
- package/dist/{mcp-Du1QEnIf.cjs → mcp-Dr1PegOw.cjs} +2 -2
- package/dist/{runGemini-D20S6Lc3.mjs → runGemini-CuzqF6Ys.mjs} +4 -4
- package/dist/{runGemini-DV2M0A_k.cjs → runGemini-D6Wwfk_0.cjs} +4 -4
- package/dist/{runOpenClaw-CuuXkfDE.mjs → runOpenClaw-B5pkmSTb.mjs} +3 -3
- package/dist/{runOpenClaw-C1Q2zl--.cjs → runOpenClaw-BYmlS-4Q.cjs} +3 -3
- package/dist/{send-yUiBqHHL.mjs → send-Btz1IZ9U.mjs} +2 -2
- package/dist/{send-CtgnnJic.cjs → send-CuajooZC.cjs} +2 -2
- package/dist/{sessions-CbbZhOTy.cjs → sessions-CVUBS3LG.cjs} +2 -2
- package/dist/{sessions-BsaCq0Do.mjs → sessions-DDwCphTQ.mjs} +2 -2
- package/dist/{spawn-CTO_hR8v.cjs → spawn-CwS8CPbr.cjs} +2 -2
- package/dist/{spawn-BKBY9P3J.mjs → spawn-DcA80_VN.mjs} +2 -2
- package/dist/{types-Cg8zzX_f.cjs → types--t4zLibT.cjs} +18 -10
- package/dist/{types-BKCvo4Cv.mjs → types-BdO0jg7G.mjs} +17 -9
- 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
|
|
6
|
+
var persistence = require('./types--t4zLibT.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-
|
|
4
|
+
import { l as logger, d as contentLogMetadata, e as errorLogMetadata, f as packageJson, g as delay } from './types-BdO0jg7G.mjs';
|
|
5
5
|
|
|
6
6
|
const DEFAULT_TIMEOUTS = {
|
|
7
7
|
/** Default initialization timeout: 60 seconds */
|
|
@@ -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
|
|
8
|
-
var index = require('./index-
|
|
7
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
8
|
+
var index = require('./index-CvnMiYgh.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-
|
|
6
|
-
import { f as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-
|
|
5
|
+
import { l as logger } from './types-BdO0jg7G.mjs';
|
|
6
|
+
import { f as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-BW9kDx5m.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 { o as readDaemonState, l as logger, c as configuration, q as clearDaemonState, s as getProjectPath, p as projectPath, t as initializeSandbox, u as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, v as AsyncLock, x as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, y as hardenPrivateFile, f as packageJson, j as readSettings, z as readCredentials, B as credentialRelayProblem, C as deriveLocalCliUpdateSummary, k as encodeBase64, D as updateSettings, E as encodeBase64Url, F as decodeBase64, G as writeCredentialsLegacy, H as writeCredentialsDataKey, J as readCredentialsForConfiguredRelay, K as encrypt, r as readPersistedSessions, L as isClaudeSessionId, N as getLocalHappyAgentCredentialPath, O as readLocalHappyAgentCredentials, P as decryptWithDataKey, Q as decryptLegacy, S as extractCompleteLines, T as decideBackfill, U as parseTerminalHookPayload, V as tmuxArgs, W as scrubTmuxClientEnv, X as decideMirrorBinding, Y as MIRROR_BACKFILL_LINES_DEFAULT, Z as persistSession, _ as mirrorLineKey, $ as mirrorLocalId, w as writePrivateFileSync, a0 as detectResumeSupport, a1 as detectCLIAvailability, a2 as acquireDaemonLock, a3 as summarizeSpawnSessionForLog, a4 as deletePersistedSessions, a5 as shellescape, a6 as decrypt, a7 as writeDaemonState, A as ApiClient, a8 as writeSettings, a9 as fetchCliUpdateState, aa as resolveCliUpdateCheckInterval, ab as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ac as releaseDaemonLock, i 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, m as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-
|
|
4
|
+
import { o as readDaemonState, l as logger, c as configuration, q as clearDaemonState, s as getProjectPath, p as projectPath, t as initializeSandbox, u as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, v as AsyncLock, x as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, y as hardenPrivateFile, f as packageJson, j as readSettings, z as readCredentials, B as credentialRelayProblem, C as deriveLocalCliUpdateSummary, k as encodeBase64, D as updateSettings, E as encodeBase64Url, F as decodeBase64, G as writeCredentialsLegacy, H as writeCredentialsDataKey, J as readCredentialsForConfiguredRelay, K as encrypt, r as readPersistedSessions, L as isClaudeSessionId, N as getLocalHappyAgentCredentialPath, O as readLocalHappyAgentCredentials, P as decryptWithDataKey, Q as decryptLegacy, S as extractCompleteLines, T as decideBackfill, U as parseTerminalHookPayload, V as tmuxArgs, W as scrubTmuxClientEnv, X as decideMirrorBinding, Y as MIRROR_BACKFILL_LINES_DEFAULT, Z as persistSession, _ as mirrorLineKey, $ as mirrorLocalId, w as writePrivateFileSync, a0 as detectResumeSupport, a1 as detectCLIAvailability, a2 as acquireDaemonLock, a3 as summarizeSpawnSessionForLog, a4 as deletePersistedSessions, a5 as shellescape, a6 as decrypt, a7 as writeDaemonState, A as ApiClient, a8 as writeSettings, a9 as fetchCliUpdateState, aa as resolveCliUpdateCheckInterval, ab as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ac as releaseDaemonLock, i 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, m as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-BdO0jg7G.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';
|
|
@@ -7423,12 +7423,38 @@ function createMirrorScanner(opts) {
|
|
|
7423
7423
|
};
|
|
7424
7424
|
}
|
|
7425
7425
|
|
|
7426
|
+
const PENDING_CREATE_BACKOFF_MS = [1e4, 3e4, 6e4, 12e4, 3e5];
|
|
7427
|
+
const PENDING_CREATE_MAX_AGE_MS = 30 * 6e4;
|
|
7428
|
+
function backoffForAttempt(attempts) {
|
|
7429
|
+
const index = Math.min(Math.max(attempts, 1), PENDING_CREATE_BACKOFF_MS.length) - 1;
|
|
7430
|
+
return PENDING_CREATE_BACKOFF_MS[index];
|
|
7431
|
+
}
|
|
7432
|
+
function pendingCreateAfterFailure(previous, event, now) {
|
|
7433
|
+
const sameConversation = previous?.event.claudeSessionId === event.claudeSessionId;
|
|
7434
|
+
const attempts = sameConversation ? previous.attempts + 1 : 1;
|
|
7435
|
+
return {
|
|
7436
|
+
event,
|
|
7437
|
+
attempts,
|
|
7438
|
+
firstFailedAt: sameConversation ? previous.firstFailedAt : now,
|
|
7439
|
+
nextAttemptAt: now + backoffForAttempt(attempts)
|
|
7440
|
+
};
|
|
7441
|
+
}
|
|
7442
|
+
function planPendingCreate(pending, now) {
|
|
7443
|
+
if (now - pending.firstFailedAt >= PENDING_CREATE_MAX_AGE_MS) return "drop";
|
|
7444
|
+
return now >= pending.nextAttemptAt ? "retry" : "wait";
|
|
7445
|
+
}
|
|
7446
|
+
function pendingCreateSupersededBy(pending, event) {
|
|
7447
|
+
if (event.event === "SessionStart") return true;
|
|
7448
|
+
return pending.event.claudeSessionId === event.claudeSessionId;
|
|
7449
|
+
}
|
|
7450
|
+
|
|
7426
7451
|
const TERMINAL_MIRROR_FLAVOR = "terminal-mirror";
|
|
7427
7452
|
const RECONCILE_HYSTERESIS_MS = 2e4;
|
|
7428
7453
|
function createMirrorManager(deps) {
|
|
7429
7454
|
const backfillLines = deps.backfillLines ?? MIRROR_BACKFILL_LINES_DEFAULT;
|
|
7430
7455
|
const bindings = /* @__PURE__ */ new Map();
|
|
7431
7456
|
const lastEndedAt = /* @__PURE__ */ new Map();
|
|
7457
|
+
const pendingCreates = /* @__PURE__ */ new Map();
|
|
7432
7458
|
let chain = Promise.resolve();
|
|
7433
7459
|
const reactivate = async (binding) => {
|
|
7434
7460
|
try {
|
|
@@ -7588,6 +7614,14 @@ function createMirrorManager(deps) {
|
|
|
7588
7614
|
logger.debug(`[MIRROR] reconcile reactivated (in place) terminal ${binding.terminalId}`);
|
|
7589
7615
|
deps.onBindingsChanged?.();
|
|
7590
7616
|
};
|
|
7617
|
+
const parkFailedCreate = (event, reason) => {
|
|
7618
|
+
const pending = pendingCreateAfterFailure(pendingCreates.get(event.terminalId), event, Date.now());
|
|
7619
|
+
pendingCreates.set(event.terminalId, pending);
|
|
7620
|
+
logger.debug(
|
|
7621
|
+
`[MIRROR] mirror bind failed for terminal ${event.terminalId} (attempt ${pending.attempts}, retrying):`,
|
|
7622
|
+
reason
|
|
7623
|
+
);
|
|
7624
|
+
};
|
|
7591
7625
|
const createBinding = async (event, replaces) => {
|
|
7592
7626
|
if (replaces) {
|
|
7593
7627
|
await teardownBinding(replaces, "superseded by a fresh conversation");
|
|
@@ -7609,11 +7643,18 @@ function createMirrorManager(deps) {
|
|
|
7609
7643
|
terminalId: event.terminalId,
|
|
7610
7644
|
claudeSessionId: event.claudeSessionId
|
|
7611
7645
|
};
|
|
7612
|
-
|
|
7646
|
+
let response = null;
|
|
7647
|
+
try {
|
|
7648
|
+
response = await deps.api.getOrCreateSession({ tag: randomUUID(), metadata, state: {} });
|
|
7649
|
+
} catch (error) {
|
|
7650
|
+
parkFailedCreate(event, error);
|
|
7651
|
+
return;
|
|
7652
|
+
}
|
|
7613
7653
|
if (!response) {
|
|
7614
|
-
|
|
7654
|
+
parkFailedCreate(event, "server unreachable");
|
|
7615
7655
|
return;
|
|
7616
7656
|
}
|
|
7657
|
+
pendingCreates.delete(event.terminalId);
|
|
7617
7658
|
const client = deps.api.sessionSyncClient(response);
|
|
7618
7659
|
client.skipExistingMessages();
|
|
7619
7660
|
const binding = {
|
|
@@ -7669,6 +7710,8 @@ function createMirrorManager(deps) {
|
|
|
7669
7710
|
logger.debug(`[MIRROR] terminal ${binding.terminalId} mirror continues as claude ${event.claudeSessionId}`);
|
|
7670
7711
|
};
|
|
7671
7712
|
const handleEvent = async (event) => {
|
|
7713
|
+
const parked = pendingCreates.get(event.terminalId);
|
|
7714
|
+
if (parked && pendingCreateSupersededBy(parked, event)) pendingCreates.delete(event.terminalId);
|
|
7672
7715
|
const binding = bindings.get(event.terminalId) ?? null;
|
|
7673
7716
|
const decision = decideMirrorBinding(
|
|
7674
7717
|
event,
|
|
@@ -7701,6 +7744,7 @@ function createMirrorManager(deps) {
|
|
|
7701
7744
|
});
|
|
7702
7745
|
},
|
|
7703
7746
|
onTerminalClosed(terminalId) {
|
|
7747
|
+
pendingCreates.delete(terminalId);
|
|
7704
7748
|
const binding = bindings.get(terminalId);
|
|
7705
7749
|
if (!binding) return;
|
|
7706
7750
|
chain = chain.then(() => teardownBinding(binding, "terminal closed")).catch((error) => {
|
|
@@ -7724,6 +7768,7 @@ function createMirrorManager(deps) {
|
|
|
7724
7768
|
for (const item of list) {
|
|
7725
7769
|
const binding = bindings.get(item.id) ?? null;
|
|
7726
7770
|
if (item.agentState === "shell") {
|
|
7771
|
+
pendingCreates.delete(item.id);
|
|
7727
7772
|
if (binding && binding.status === "active") {
|
|
7728
7773
|
chain = chain.then(() => {
|
|
7729
7774
|
const b = bindings.get(item.id);
|
|
@@ -7747,6 +7792,21 @@ function createMirrorManager(deps) {
|
|
|
7747
7792
|
return b && b.status === "ended" ? reactivateInPlace(b) : void 0;
|
|
7748
7793
|
}).catch((e) => logger.debug(`[MIRROR] reconcile in-place reactivate failed for ${item.id}:`, e));
|
|
7749
7794
|
} else if (!binding) {
|
|
7795
|
+
const pending = pendingCreates.get(item.id);
|
|
7796
|
+
if (pending) {
|
|
7797
|
+
const decision = planPendingCreate(pending, now);
|
|
7798
|
+
if (decision === "drop") {
|
|
7799
|
+
pendingCreates.delete(item.id);
|
|
7800
|
+
logger.debug(`[MIRROR] giving up on the parked mirror bind for terminal ${item.id}`);
|
|
7801
|
+
} else if (decision === "retry") {
|
|
7802
|
+
chain = chain.then(() => {
|
|
7803
|
+
const still = pendingCreates.get(item.id);
|
|
7804
|
+
if (!still || still !== pending || bindings.has(item.id)) return void 0;
|
|
7805
|
+
return createBinding(still.event);
|
|
7806
|
+
}).catch((e) => logger.debug(`[MIRROR] reconcile create retry failed for ${item.id}:`, e));
|
|
7807
|
+
}
|
|
7808
|
+
continue;
|
|
7809
|
+
}
|
|
7750
7810
|
persisted ??= readPersistedSessions();
|
|
7751
7811
|
const p = persisted;
|
|
7752
7812
|
chain = chain.then(() => {
|
|
@@ -10308,7 +10368,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10308
10368
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10309
10369
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10310
10370
|
const run = deps.run ?? (async (input) => {
|
|
10311
|
-
const { query } = await import('./index-
|
|
10371
|
+
const { query } = await import('./index-jYltd-ZW.mjs');
|
|
10312
10372
|
return runSideQuestion(query, input);
|
|
10313
10373
|
});
|
|
10314
10374
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -15238,7 +15298,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15238
15298
|
process.exit(0);
|
|
15239
15299
|
} else if (subcommand === "install-terminal-hooks") {
|
|
15240
15300
|
try {
|
|
15241
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-
|
|
15301
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-CJyoR9jp.mjs');
|
|
15242
15302
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
15243
15303
|
if (command.action === "help") {
|
|
15244
15304
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15255,7 +15315,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15255
15315
|
}
|
|
15256
15316
|
} else if (subcommand === "spawn") {
|
|
15257
15317
|
try {
|
|
15258
|
-
const { handleSpawnCommand } = await import('./spawn-
|
|
15318
|
+
const { handleSpawnCommand } = await import('./spawn-DcA80_VN.mjs');
|
|
15259
15319
|
await handleSpawnCommand(args.slice(1));
|
|
15260
15320
|
} catch (error) {
|
|
15261
15321
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15267,7 +15327,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15267
15327
|
return;
|
|
15268
15328
|
} else if (subcommand === "sessions") {
|
|
15269
15329
|
try {
|
|
15270
|
-
const { handleSessionsCommand } = await import('./sessions-
|
|
15330
|
+
const { handleSessionsCommand } = await import('./sessions-DDwCphTQ.mjs');
|
|
15271
15331
|
await handleSessionsCommand(args.slice(1));
|
|
15272
15332
|
} catch (error) {
|
|
15273
15333
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15279,7 +15339,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15279
15339
|
return;
|
|
15280
15340
|
} else if (subcommand === "send") {
|
|
15281
15341
|
try {
|
|
15282
|
-
const { handleSendCommand } = await import('./send-
|
|
15342
|
+
const { handleSendCommand } = await import('./send-Btz1IZ9U.mjs');
|
|
15283
15343
|
await handleSendCommand(args.slice(1));
|
|
15284
15344
|
} catch (error) {
|
|
15285
15345
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15385,9 +15445,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15385
15445
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15386
15446
|
const projectId = args[3];
|
|
15387
15447
|
try {
|
|
15388
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
15389
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-
|
|
15390
|
-
const { ApiClient: ApiClient2 } = await import('./types-
|
|
15448
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-CTyyVXHj.mjs');
|
|
15449
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-BdO0jg7G.mjs').then(function (n) { return n.ap; });
|
|
15450
|
+
const { ApiClient: ApiClient2 } = await import('./types-BdO0jg7G.mjs').then(function (n) { return n.aq; });
|
|
15391
15451
|
let userEmail = void 0;
|
|
15392
15452
|
try {
|
|
15393
15453
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15418,7 +15478,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15418
15478
|
}
|
|
15419
15479
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15420
15480
|
try {
|
|
15421
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
15481
|
+
const { readGeminiLocalConfig } = await import('./config-CTyyVXHj.mjs');
|
|
15422
15482
|
const config = readGeminiLocalConfig();
|
|
15423
15483
|
if (config.googleCloudProject) {
|
|
15424
15484
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15458,7 +15518,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15458
15518
|
process.exit(0);
|
|
15459
15519
|
}
|
|
15460
15520
|
try {
|
|
15461
|
-
const { runGemini } = await import('./runGemini-
|
|
15521
|
+
const { runGemini } = await import('./runGemini-CuzqF6Ys.mjs');
|
|
15462
15522
|
let startedBy = void 0;
|
|
15463
15523
|
for (let i = 1; i < args.length; i++) {
|
|
15464
15524
|
if (args[i] === "--started-by") {
|
|
@@ -15480,7 +15540,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15480
15540
|
return;
|
|
15481
15541
|
} else if (subcommand === "acp") {
|
|
15482
15542
|
try {
|
|
15483
|
-
const { runAcp, resolveAcpAgentConfig } = await import('./index-
|
|
15543
|
+
const { runAcp, resolveAcpAgentConfig } = await import('./index-Brhvj7p0.mjs');
|
|
15484
15544
|
let startedBy = void 0;
|
|
15485
15545
|
let verbose = false;
|
|
15486
15546
|
const acpArgs = [];
|
|
@@ -15520,7 +15580,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15520
15580
|
return;
|
|
15521
15581
|
} else if (subcommand === "openclaw") {
|
|
15522
15582
|
try {
|
|
15523
|
-
const { runOpenClaw } = await import('./runOpenClaw-
|
|
15583
|
+
const { runOpenClaw } = await import('./runOpenClaw-B5pkmSTb.mjs');
|
|
15524
15584
|
let startedBy = void 0;
|
|
15525
15585
|
let verbose = false;
|
|
15526
15586
|
let gatewayUrl;
|
|
@@ -15571,7 +15631,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15571
15631
|
return;
|
|
15572
15632
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15573
15633
|
try {
|
|
15574
|
-
const { handleMcpCommand } = await import('./mcp-
|
|
15634
|
+
const { handleMcpCommand } = await import('./mcp-BO9-sxMr.mjs');
|
|
15575
15635
|
await handleMcpCommand();
|
|
15576
15636
|
} catch (error) {
|
|
15577
15637
|
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-
|
|
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-
|
|
3
|
-
import { h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, p as projectPath } from './types-
|
|
4
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
1
|
+
import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-DzZR7TEv.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-DzZR7TEv.mjs';
|
|
3
|
+
import { h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, p as projectPath } from './types-BdO0jg7G.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-tWuFWeIF.mjs';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
-
import { g as initialMachineMetadata, h as createSessionMetadata, j as setupOfflineReconnection, n as notifyDaemonSessionStarted, k as MessageQueue2, m as hashObject, o as startHappyServer, u as registerKillSessionHandler, B as BasePermissionHandler } from './index-
|
|
7
|
+
import { g as initialMachineMetadata, h as createSessionMetadata, j as setupOfflineReconnection, n as notifyDaemonSessionStarted, k as MessageQueue2, m as hashObject, o as startHappyServer, u as registerKillSessionHandler, B as BasePermissionHandler } from './index-BW9kDx5m.mjs';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import '@agentclientprotocol/sdk';
|
|
10
10
|
import 'axios';
|
|
@@ -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
|
|
6
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
7
7
|
var spawn = require('cross-spawn');
|
|
8
8
|
var path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -6943,7 +6943,7 @@ function parseJsonObject(text) {
|
|
|
6943
6943
|
return null;
|
|
6944
6944
|
}
|
|
6945
6945
|
}
|
|
6946
|
-
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-
|
|
6946
|
+
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-CvnMiYgh.cjs', document.baseURI).href))).resolve(s)) {
|
|
6947
6947
|
const platformArch = `${platform}-${arch}`;
|
|
6948
6948
|
const candidates = [
|
|
6949
6949
|
`@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
|
|
@@ -7445,12 +7445,38 @@ function createMirrorScanner(opts) {
|
|
|
7445
7445
|
};
|
|
7446
7446
|
}
|
|
7447
7447
|
|
|
7448
|
+
const PENDING_CREATE_BACKOFF_MS = [1e4, 3e4, 6e4, 12e4, 3e5];
|
|
7449
|
+
const PENDING_CREATE_MAX_AGE_MS = 30 * 6e4;
|
|
7450
|
+
function backoffForAttempt(attempts) {
|
|
7451
|
+
const index = Math.min(Math.max(attempts, 1), PENDING_CREATE_BACKOFF_MS.length) - 1;
|
|
7452
|
+
return PENDING_CREATE_BACKOFF_MS[index];
|
|
7453
|
+
}
|
|
7454
|
+
function pendingCreateAfterFailure(previous, event, now) {
|
|
7455
|
+
const sameConversation = previous?.event.claudeSessionId === event.claudeSessionId;
|
|
7456
|
+
const attempts = sameConversation ? previous.attempts + 1 : 1;
|
|
7457
|
+
return {
|
|
7458
|
+
event,
|
|
7459
|
+
attempts,
|
|
7460
|
+
firstFailedAt: sameConversation ? previous.firstFailedAt : now,
|
|
7461
|
+
nextAttemptAt: now + backoffForAttempt(attempts)
|
|
7462
|
+
};
|
|
7463
|
+
}
|
|
7464
|
+
function planPendingCreate(pending, now) {
|
|
7465
|
+
if (now - pending.firstFailedAt >= PENDING_CREATE_MAX_AGE_MS) return "drop";
|
|
7466
|
+
return now >= pending.nextAttemptAt ? "retry" : "wait";
|
|
7467
|
+
}
|
|
7468
|
+
function pendingCreateSupersededBy(pending, event) {
|
|
7469
|
+
if (event.event === "SessionStart") return true;
|
|
7470
|
+
return pending.event.claudeSessionId === event.claudeSessionId;
|
|
7471
|
+
}
|
|
7472
|
+
|
|
7448
7473
|
const TERMINAL_MIRROR_FLAVOR = "terminal-mirror";
|
|
7449
7474
|
const RECONCILE_HYSTERESIS_MS = 2e4;
|
|
7450
7475
|
function createMirrorManager(deps) {
|
|
7451
7476
|
const backfillLines = deps.backfillLines ?? persistence.MIRROR_BACKFILL_LINES_DEFAULT;
|
|
7452
7477
|
const bindings = /* @__PURE__ */ new Map();
|
|
7453
7478
|
const lastEndedAt = /* @__PURE__ */ new Map();
|
|
7479
|
+
const pendingCreates = /* @__PURE__ */ new Map();
|
|
7454
7480
|
let chain = Promise.resolve();
|
|
7455
7481
|
const reactivate = async (binding) => {
|
|
7456
7482
|
try {
|
|
@@ -7610,6 +7636,14 @@ function createMirrorManager(deps) {
|
|
|
7610
7636
|
persistence.logger.debug(`[MIRROR] reconcile reactivated (in place) terminal ${binding.terminalId}`);
|
|
7611
7637
|
deps.onBindingsChanged?.();
|
|
7612
7638
|
};
|
|
7639
|
+
const parkFailedCreate = (event, reason) => {
|
|
7640
|
+
const pending = pendingCreateAfterFailure(pendingCreates.get(event.terminalId), event, Date.now());
|
|
7641
|
+
pendingCreates.set(event.terminalId, pending);
|
|
7642
|
+
persistence.logger.debug(
|
|
7643
|
+
`[MIRROR] mirror bind failed for terminal ${event.terminalId} (attempt ${pending.attempts}, retrying):`,
|
|
7644
|
+
reason
|
|
7645
|
+
);
|
|
7646
|
+
};
|
|
7613
7647
|
const createBinding = async (event, replaces) => {
|
|
7614
7648
|
if (replaces) {
|
|
7615
7649
|
await teardownBinding(replaces, "superseded by a fresh conversation");
|
|
@@ -7631,11 +7665,18 @@ function createMirrorManager(deps) {
|
|
|
7631
7665
|
terminalId: event.terminalId,
|
|
7632
7666
|
claudeSessionId: event.claudeSessionId
|
|
7633
7667
|
};
|
|
7634
|
-
|
|
7668
|
+
let response = null;
|
|
7669
|
+
try {
|
|
7670
|
+
response = await deps.api.getOrCreateSession({ tag: node_crypto.randomUUID(), metadata, state: {} });
|
|
7671
|
+
} catch (error) {
|
|
7672
|
+
parkFailedCreate(event, error);
|
|
7673
|
+
return;
|
|
7674
|
+
}
|
|
7635
7675
|
if (!response) {
|
|
7636
|
-
|
|
7676
|
+
parkFailedCreate(event, "server unreachable");
|
|
7637
7677
|
return;
|
|
7638
7678
|
}
|
|
7679
|
+
pendingCreates.delete(event.terminalId);
|
|
7639
7680
|
const client = deps.api.sessionSyncClient(response);
|
|
7640
7681
|
client.skipExistingMessages();
|
|
7641
7682
|
const binding = {
|
|
@@ -7691,6 +7732,8 @@ function createMirrorManager(deps) {
|
|
|
7691
7732
|
persistence.logger.debug(`[MIRROR] terminal ${binding.terminalId} mirror continues as claude ${event.claudeSessionId}`);
|
|
7692
7733
|
};
|
|
7693
7734
|
const handleEvent = async (event) => {
|
|
7735
|
+
const parked = pendingCreates.get(event.terminalId);
|
|
7736
|
+
if (parked && pendingCreateSupersededBy(parked, event)) pendingCreates.delete(event.terminalId);
|
|
7694
7737
|
const binding = bindings.get(event.terminalId) ?? null;
|
|
7695
7738
|
const decision = persistence.decideMirrorBinding(
|
|
7696
7739
|
event,
|
|
@@ -7723,6 +7766,7 @@ function createMirrorManager(deps) {
|
|
|
7723
7766
|
});
|
|
7724
7767
|
},
|
|
7725
7768
|
onTerminalClosed(terminalId) {
|
|
7769
|
+
pendingCreates.delete(terminalId);
|
|
7726
7770
|
const binding = bindings.get(terminalId);
|
|
7727
7771
|
if (!binding) return;
|
|
7728
7772
|
chain = chain.then(() => teardownBinding(binding, "terminal closed")).catch((error) => {
|
|
@@ -7746,6 +7790,7 @@ function createMirrorManager(deps) {
|
|
|
7746
7790
|
for (const item of list) {
|
|
7747
7791
|
const binding = bindings.get(item.id) ?? null;
|
|
7748
7792
|
if (item.agentState === "shell") {
|
|
7793
|
+
pendingCreates.delete(item.id);
|
|
7749
7794
|
if (binding && binding.status === "active") {
|
|
7750
7795
|
chain = chain.then(() => {
|
|
7751
7796
|
const b = bindings.get(item.id);
|
|
@@ -7769,6 +7814,21 @@ function createMirrorManager(deps) {
|
|
|
7769
7814
|
return b && b.status === "ended" ? reactivateInPlace(b) : void 0;
|
|
7770
7815
|
}).catch((e) => persistence.logger.debug(`[MIRROR] reconcile in-place reactivate failed for ${item.id}:`, e));
|
|
7771
7816
|
} else if (!binding) {
|
|
7817
|
+
const pending = pendingCreates.get(item.id);
|
|
7818
|
+
if (pending) {
|
|
7819
|
+
const decision = planPendingCreate(pending, now);
|
|
7820
|
+
if (decision === "drop") {
|
|
7821
|
+
pendingCreates.delete(item.id);
|
|
7822
|
+
persistence.logger.debug(`[MIRROR] giving up on the parked mirror bind for terminal ${item.id}`);
|
|
7823
|
+
} else if (decision === "retry") {
|
|
7824
|
+
chain = chain.then(() => {
|
|
7825
|
+
const still = pendingCreates.get(item.id);
|
|
7826
|
+
if (!still || still !== pending || bindings.has(item.id)) return void 0;
|
|
7827
|
+
return createBinding(still.event);
|
|
7828
|
+
}).catch((e) => persistence.logger.debug(`[MIRROR] reconcile create retry failed for ${item.id}:`, e));
|
|
7829
|
+
}
|
|
7830
|
+
continue;
|
|
7831
|
+
}
|
|
7772
7832
|
persisted ??= persistence.readPersistedSessions();
|
|
7773
7833
|
const p = persisted;
|
|
7774
7834
|
chain = chain.then(() => {
|
|
@@ -10330,7 +10390,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10330
10390
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10331
10391
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10332
10392
|
const run = deps.run ?? (async (input) => {
|
|
10333
|
-
const { query } = await Promise.resolve().then(function () { return require('./index-
|
|
10393
|
+
const { query } = await Promise.resolve().then(function () { return require('./index-DW78HyvK.cjs'); });
|
|
10334
10394
|
return runSideQuestion(query, input);
|
|
10335
10395
|
});
|
|
10336
10396
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -10432,7 +10492,7 @@ const MAX_TITLE_CHARS = 60;
|
|
|
10432
10492
|
const GENERATION_TIMEOUT_MS = 3e4;
|
|
10433
10493
|
function resolveClaudeBinary() {
|
|
10434
10494
|
try {
|
|
10435
|
-
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-
|
|
10495
|
+
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-CvnMiYgh.cjs', document.baseURI).href)));
|
|
10436
10496
|
const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
|
|
10437
10497
|
const { getClaudeCliPath } = require$1(utilsPath);
|
|
10438
10498
|
const path$1 = getClaudeCliPath();
|
|
@@ -12634,9 +12694,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
|
|
|
12634
12694
|
};
|
|
12635
12695
|
}
|
|
12636
12696
|
|
|
12637
|
-
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-
|
|
12697
|
+
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-CvnMiYgh.cjs', document.baseURI).href)));
|
|
12638
12698
|
const __dirname$1 = path.dirname(__filename$1);
|
|
12639
|
-
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
12699
|
+
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CvnMiYgh.cjs', document.baseURI).href)));
|
|
12640
12700
|
const PRISMA_QUERY_ENGINE_FILES = {
|
|
12641
12701
|
"arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
|
|
12642
12702
|
"x64-darwin": "libquery_engine-darwin.dylib.node",
|
|
@@ -15260,7 +15320,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15260
15320
|
process.exit(0);
|
|
15261
15321
|
} else if (subcommand === "install-terminal-hooks") {
|
|
15262
15322
|
try {
|
|
15263
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-
|
|
15323
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-DhQ6k7YD.cjs'); });
|
|
15264
15324
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
15265
15325
|
if (command.action === "help") {
|
|
15266
15326
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15277,7 +15337,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15277
15337
|
}
|
|
15278
15338
|
} else if (subcommand === "spawn") {
|
|
15279
15339
|
try {
|
|
15280
|
-
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-
|
|
15340
|
+
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-CwS8CPbr.cjs'); });
|
|
15281
15341
|
await handleSpawnCommand(args.slice(1));
|
|
15282
15342
|
} catch (error) {
|
|
15283
15343
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15289,7 +15349,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15289
15349
|
return;
|
|
15290
15350
|
} else if (subcommand === "sessions") {
|
|
15291
15351
|
try {
|
|
15292
|
-
const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-
|
|
15352
|
+
const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-CVUBS3LG.cjs'); });
|
|
15293
15353
|
await handleSessionsCommand(args.slice(1));
|
|
15294
15354
|
} catch (error) {
|
|
15295
15355
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15301,7 +15361,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15301
15361
|
return;
|
|
15302
15362
|
} else if (subcommand === "send") {
|
|
15303
15363
|
try {
|
|
15304
|
-
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-
|
|
15364
|
+
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-CuajooZC.cjs'); });
|
|
15305
15365
|
await handleSendCommand(args.slice(1));
|
|
15306
15366
|
} catch (error) {
|
|
15307
15367
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15407,9 +15467,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15407
15467
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15408
15468
|
const projectId = args[3];
|
|
15409
15469
|
try {
|
|
15410
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15411
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types
|
|
15412
|
-
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types
|
|
15470
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-CTCGilz_.cjs'); });
|
|
15471
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types--t4zLibT.cjs'); }).then(function (n) { return n.persistence; });
|
|
15472
|
+
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types--t4zLibT.cjs'); }).then(function (n) { return n.api; });
|
|
15413
15473
|
let userEmail = void 0;
|
|
15414
15474
|
try {
|
|
15415
15475
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15440,7 +15500,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15440
15500
|
}
|
|
15441
15501
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15442
15502
|
try {
|
|
15443
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15503
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-CTCGilz_.cjs'); });
|
|
15444
15504
|
const config = readGeminiLocalConfig();
|
|
15445
15505
|
if (config.googleCloudProject) {
|
|
15446
15506
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15480,7 +15540,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15480
15540
|
process.exit(0);
|
|
15481
15541
|
}
|
|
15482
15542
|
try {
|
|
15483
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
15543
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-D6Wwfk_0.cjs'); });
|
|
15484
15544
|
let startedBy = void 0;
|
|
15485
15545
|
for (let i = 1; i < args.length; i++) {
|
|
15486
15546
|
if (args[i] === "--started-by") {
|
|
@@ -15502,7 +15562,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15502
15562
|
return;
|
|
15503
15563
|
} else if (subcommand === "acp") {
|
|
15504
15564
|
try {
|
|
15505
|
-
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-
|
|
15565
|
+
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-D-adqB7g.cjs'); });
|
|
15506
15566
|
let startedBy = void 0;
|
|
15507
15567
|
let verbose = false;
|
|
15508
15568
|
const acpArgs = [];
|
|
@@ -15542,7 +15602,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15542
15602
|
return;
|
|
15543
15603
|
} else if (subcommand === "openclaw") {
|
|
15544
15604
|
try {
|
|
15545
|
-
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-
|
|
15605
|
+
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-BYmlS-4Q.cjs'); });
|
|
15546
15606
|
let startedBy = void 0;
|
|
15547
15607
|
let verbose = false;
|
|
15548
15608
|
let gatewayUrl;
|
|
@@ -15593,7 +15653,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15593
15653
|
return;
|
|
15594
15654
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15595
15655
|
try {
|
|
15596
|
-
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-
|
|
15656
|
+
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-Dr1PegOw.cjs'); });
|
|
15597
15657
|
await handleMcpCommand();
|
|
15598
15658
|
} catch (error) {
|
|
15599
15659
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var AcpBackend = require('./AcpBackend-
|
|
4
|
-
var persistence = require('./types
|
|
5
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
3
|
+
var AcpBackend = require('./AcpBackend-D0_wbTs6.cjs');
|
|
4
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
5
|
+
var AcpSessionManager = require('./AcpSessionManager-Dcj_iHw8.cjs');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
7
|
var path = require('node:path');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
9
9
|
require('node:child_process');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
|
11
11
|
require('axios');
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-CvnMiYgh.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
|
|
8
|
+
require('./types--t4zLibT.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:util');
|
|
11
11
|
require('node:fs');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { q as query } from './index-
|
|
1
|
+
import { q as query } from './index-BW9kDx5m.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-
|
|
6
|
+
import './types-BdO0jg7G.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:util';
|
|
9
9
|
import 'node:fs';
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -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-
|
|
7
|
-
import { t as tmuxSupportsSessionEnv } from './index-
|
|
6
|
+
import { p as projectPath } from './types-BdO0jg7G.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-BW9kDx5m.mjs';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:util';
|
|
10
10
|
import 'node:fs/promises';
|
|
@@ -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
|
|
9
|
-
var index = require('./index-
|
|
8
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
9
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
10
10
|
require('axios');
|
|
11
11
|
require('node:util');
|
|
12
12
|
require('node:fs/promises');
|
package/dist/lib.cjs
CHANGED
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-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-BdO0jg7G.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'node:util';
|
|
@@ -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-
|
|
4
|
+
import { p as pushClipboardViaDaemon } from './index-BW9kDx5m.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-
|
|
6
|
+
import { l as logger } from './types-BdO0jg7G.mjs';
|
|
7
7
|
import 'chalk';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import 'node:crypto';
|
|
@@ -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-
|
|
6
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types
|
|
8
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
9
9
|
require('chalk');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('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, j as readSettings, e as errorLogMetadata, k as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-
|
|
6
|
-
import { v as GEMINI_API_KEY_ENV, x as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, y as BaseReasoningProcessor, g as initialMachineMetadata, h as createSessionMetadata, j as setupOfflineReconnection, n as notifyDaemonSessionStarted, k as MessageQueue2, m as hashObject, z as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, u as registerKillSessionHandler, o as startHappyServer } from './index-
|
|
7
|
-
import { A as AcpBackend } from './AcpBackend-
|
|
8
|
-
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-
|
|
5
|
+
import { l as logger, h as connectionState, A as ApiClient, j as readSettings, e as errorLogMetadata, k as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-BdO0jg7G.mjs';
|
|
6
|
+
import { v as GEMINI_API_KEY_ENV, x as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, y as BaseReasoningProcessor, g as initialMachineMetadata, h as createSessionMetadata, j as setupOfflineReconnection, n as notifyDaemonSessionStarted, k as MessageQueue2, m as hashObject, z as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, u as registerKillSessionHandler, o as startHappyServer } from './index-BW9kDx5m.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-DzZR7TEv.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CTyyVXHj.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
|
|
8
|
-
var index = require('./index-
|
|
9
|
-
var AcpBackend = require('./AcpBackend-
|
|
10
|
-
var config = require('./config-
|
|
7
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
8
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-D0_wbTs6.cjs');
|
|
10
|
+
var config = require('./config-CTCGilz_.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 { m as ensurePrivateDirectorySync, n as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, c as configuration } from './types-
|
|
7
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
8
|
-
import { g as initialMachineMetadata, h as createSessionMetadata, j as setupOfflineReconnection, n as notifyDaemonSessionStarted, k as MessageQueue2, u as registerKillSessionHandler } from './index-
|
|
6
|
+
import { m as ensurePrivateDirectorySync, n as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, c as configuration } from './types-BdO0jg7G.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-tWuFWeIF.mjs';
|
|
8
|
+
import { g as initialMachineMetadata, h as createSessionMetadata, j as setupOfflineReconnection, n as notifyDaemonSessionStarted, k as MessageQueue2, u as registerKillSessionHandler } from './index-BW9kDx5m.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
|
|
9
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
10
|
-
var index = require('./index-
|
|
8
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-Dcj_iHw8.cjs');
|
|
10
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
11
11
|
var WebSocket = require('ws');
|
|
12
12
|
var ed = require('@noble/ed25519');
|
|
13
13
|
var sha2_js = require('@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-
|
|
5
|
-
import { b as sendUserMessage, a as sessionWebUrl } from './index-
|
|
4
|
+
import { r as readPersistedSessions, c as configuration } from './types-BdO0jg7G.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-BW9kDx5m.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
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
7
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
8
8
|
require('axios');
|
|
9
9
|
require('node:util');
|
|
10
10
|
require('node:os');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var index = require('./index-
|
|
5
|
-
var persistence = require('./types
|
|
4
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
5
|
+
var persistence = require('./types--t4zLibT.cjs');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
8
|
require('cross-spawn');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listSessions, r as readSessionTranscript, d as stopSession, e as archiveSession } from './index-
|
|
3
|
-
import { i as isValidSessionId } from './types-
|
|
2
|
+
import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listSessions, r as readSessionTranscript, d as stopSession, e as archiveSession } from './index-BW9kDx5m.mjs';
|
|
3
|
+
import { i as isValidSessionId } from './types-BdO0jg7G.mjs';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
6
|
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-
|
|
7
|
-
var persistence = require('./types
|
|
6
|
+
var index = require('./index-CvnMiYgh.cjs');
|
|
7
|
+
var persistence = require('./types--t4zLibT.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, i as isValidSpawnOrigin, w as waitForSessionKey, b as sendUserMessage } from './index-
|
|
5
|
-
import { l as logger } from './types-
|
|
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';
|
|
@@ -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.
|
|
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.
|
|
168
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
169
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
170
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
171
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
172
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
146
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
147
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
148
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
149
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
150
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
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
|
|
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({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
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.
|
|
117
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
118
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
119
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
120
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
121
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
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:*",
|