very-happy-cli 0.2.110 → 0.2.111
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-D0_wbTs6.cjs → AcpBackend-B_olk79F.cjs} +1 -1
- package/dist/{AcpBackend-DzZR7TEv.mjs → AcpBackend-CeXVb_s_.mjs} +1 -1
- package/dist/{AcpSessionManager-Dcj_iHw8.cjs → AcpSessionManager-uXwWO2Tn.cjs} +1 -1
- package/dist/{AcpSessionManager-tWuFWeIF.mjs → AcpSessionManager-vqdqfD1l.mjs} +1 -1
- package/dist/{config-CTCGilz_.cjs → config-BR3tkFL_.cjs} +2 -2
- package/dist/{config-CTyyVXHj.mjs → config-vGkcq9nM.mjs} +2 -2
- package/dist/{index-CvnMiYgh.cjs → index-BOoGJGQc.cjs} +28 -19
- package/dist/{index-BW9kDx5m.mjs → index-Bn-xsguz.mjs} +23 -16
- package/dist/{index-jYltd-ZW.mjs → index-C-RLk8-e.mjs} +2 -2
- package/dist/{index-D-adqB7g.cjs → index-CtBP0Qvc.cjs} +4 -4
- package/dist/{index-Brhvj7p0.mjs → index-JAhGeW4_.mjs} +5 -5
- package/dist/{index-DW78HyvK.cjs → index-SjthsMid.cjs} +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-CJyoR9jp.mjs → installTerminalHooks-ADNcNdnB.mjs} +2 -2
- package/dist/{installTerminalHooks-DhQ6k7YD.cjs → installTerminalHooks-FbKaK149.cjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-BO9-sxMr.mjs → mcp-DHPm_gvL.mjs} +2 -2
- package/dist/{mcp-Dr1PegOw.cjs → mcp-DPp-bYNE.cjs} +2 -2
- package/dist/{runGemini-CuzqF6Ys.mjs → runGemini-CWWyjQMz.mjs} +4 -4
- package/dist/{runGemini-D6Wwfk_0.cjs → runGemini-D5ySpYIZ.cjs} +4 -4
- package/dist/{runOpenClaw-B5pkmSTb.mjs → runOpenClaw-Bv4rUTyJ.mjs} +3 -3
- package/dist/{runOpenClaw-BYmlS-4Q.cjs → runOpenClaw-Bwrb1LXP.cjs} +3 -3
- package/dist/{send-Btz1IZ9U.mjs → send-BlkxFZu4.mjs} +2 -2
- package/dist/{send-CuajooZC.cjs → send-DBfSNILO.cjs} +2 -2
- package/dist/{sessions-DDwCphTQ.mjs → sessions-1fW8soBM.mjs} +2 -2
- package/dist/{sessions-CVUBS3LG.cjs → sessions-CVuEsdRl.cjs} +2 -2
- package/dist/{spawn-DcA80_VN.mjs → spawn-BorKN3W2.mjs} +56 -5
- package/dist/{spawn-CwS8CPbr.cjs → spawn-D_ZexrY9.cjs} +57 -4
- package/dist/{types--t4zLibT.cjs → types-BG_5QKX5.cjs} +8 -8
- package/dist/{types-BdO0jg7G.mjs → types-k_ipDb0c.mjs} +7 -7
- 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-BG_5QKX5.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-k_ipDb0c.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-BG_5QKX5.cjs');
|
|
8
|
+
var index = require('./index-BOoGJGQc.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 {
|
|
5
|
+
import { l as logger } from './types-k_ipDb0c.mjs';
|
|
6
|
+
import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-Bn-xsguz.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'chalk';
|
|
9
9
|
import 'node:util';
|
|
@@ -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-BG_5QKX5.cjs');
|
|
7
7
|
var spawn = require('cross-spawn');
|
|
8
8
|
var path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -191,7 +191,14 @@ async function stopDaemonSession(sessionId) {
|
|
|
191
191
|
return result.success || false;
|
|
192
192
|
}
|
|
193
193
|
async function spawnDaemonSession(directory, sessionId, opts) {
|
|
194
|
-
const result = await daemonPost("/spawn-session", {
|
|
194
|
+
const result = await daemonPost("/spawn-session", {
|
|
195
|
+
directory,
|
|
196
|
+
sessionId,
|
|
197
|
+
spawnedBy: opts?.spawnedBy,
|
|
198
|
+
permissionMode: opts?.permissionMode,
|
|
199
|
+
agent: opts?.agent,
|
|
200
|
+
environmentVariables: opts?.environmentVariables
|
|
201
|
+
});
|
|
195
202
|
return result;
|
|
196
203
|
}
|
|
197
204
|
async function notifyDaemonSessionEvent(sessionId, event, spawnedBy) {
|
|
@@ -6943,7 +6950,7 @@ function parseJsonObject(text) {
|
|
|
6943
6950
|
return null;
|
|
6944
6951
|
}
|
|
6945
6952
|
}
|
|
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-
|
|
6953
|
+
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-BOoGJGQc.cjs', document.baseURI).href))).resolve(s)) {
|
|
6947
6954
|
const platformArch = `${platform}-${arch}`;
|
|
6948
6955
|
const candidates = [
|
|
6949
6956
|
`@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
|
|
@@ -10390,7 +10397,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10390
10397
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10391
10398
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10392
10399
|
const run = deps.run ?? (async (input) => {
|
|
10393
|
-
const { query } = await Promise.resolve().then(function () { return require('./index-
|
|
10400
|
+
const { query } = await Promise.resolve().then(function () { return require('./index-SjthsMid.cjs'); });
|
|
10394
10401
|
return runSideQuestion(query, input);
|
|
10395
10402
|
});
|
|
10396
10403
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -10492,7 +10499,7 @@ const MAX_TITLE_CHARS = 60;
|
|
|
10492
10499
|
const GENERATION_TIMEOUT_MS = 3e4;
|
|
10493
10500
|
function resolveClaudeBinary() {
|
|
10494
10501
|
try {
|
|
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-
|
|
10502
|
+
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-BOoGJGQc.cjs', document.baseURI).href)));
|
|
10496
10503
|
const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
|
|
10497
10504
|
const { getClaudeCliPath } = require$1(utilsPath);
|
|
10498
10505
|
const path$1 = getClaudeCliPath();
|
|
@@ -12694,9 +12701,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
|
|
|
12694
12701
|
};
|
|
12695
12702
|
}
|
|
12696
12703
|
|
|
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-
|
|
12704
|
+
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-BOoGJGQc.cjs', document.baseURI).href)));
|
|
12698
12705
|
const __dirname$1 = path.dirname(__filename$1);
|
|
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-
|
|
12706
|
+
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-BOoGJGQc.cjs', document.baseURI).href)));
|
|
12700
12707
|
const PRISMA_QUERY_ENGINE_FILES = {
|
|
12701
12708
|
"arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
|
|
12702
12709
|
"x64-darwin": "libquery_engine-darwin.dylib.node",
|
|
@@ -15320,7 +15327,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15320
15327
|
process.exit(0);
|
|
15321
15328
|
} else if (subcommand === "install-terminal-hooks") {
|
|
15322
15329
|
try {
|
|
15323
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-
|
|
15330
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-FbKaK149.cjs'); });
|
|
15324
15331
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
15325
15332
|
if (command.action === "help") {
|
|
15326
15333
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15337,7 +15344,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15337
15344
|
}
|
|
15338
15345
|
} else if (subcommand === "spawn") {
|
|
15339
15346
|
try {
|
|
15340
|
-
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-
|
|
15347
|
+
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-D_ZexrY9.cjs'); });
|
|
15341
15348
|
await handleSpawnCommand(args.slice(1));
|
|
15342
15349
|
} catch (error) {
|
|
15343
15350
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15349,7 +15356,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15349
15356
|
return;
|
|
15350
15357
|
} else if (subcommand === "sessions") {
|
|
15351
15358
|
try {
|
|
15352
|
-
const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-
|
|
15359
|
+
const { handleSessionsCommand } = await Promise.resolve().then(function () { return require('./sessions-CVuEsdRl.cjs'); });
|
|
15353
15360
|
await handleSessionsCommand(args.slice(1));
|
|
15354
15361
|
} catch (error) {
|
|
15355
15362
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15361,7 +15368,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15361
15368
|
return;
|
|
15362
15369
|
} else if (subcommand === "send") {
|
|
15363
15370
|
try {
|
|
15364
|
-
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-
|
|
15371
|
+
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-DBfSNILO.cjs'); });
|
|
15365
15372
|
await handleSendCommand(args.slice(1));
|
|
15366
15373
|
} catch (error) {
|
|
15367
15374
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15467,9 +15474,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15467
15474
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15468
15475
|
const projectId = args[3];
|
|
15469
15476
|
try {
|
|
15470
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15471
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types
|
|
15472
|
-
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types
|
|
15477
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-BR3tkFL_.cjs'); });
|
|
15478
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-BG_5QKX5.cjs'); }).then(function (n) { return n.persistence; });
|
|
15479
|
+
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-BG_5QKX5.cjs'); }).then(function (n) { return n.api; });
|
|
15473
15480
|
let userEmail = void 0;
|
|
15474
15481
|
try {
|
|
15475
15482
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15500,7 +15507,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15500
15507
|
}
|
|
15501
15508
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15502
15509
|
try {
|
|
15503
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15510
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-BR3tkFL_.cjs'); });
|
|
15504
15511
|
const config = readGeminiLocalConfig();
|
|
15505
15512
|
if (config.googleCloudProject) {
|
|
15506
15513
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15540,7 +15547,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15540
15547
|
process.exit(0);
|
|
15541
15548
|
}
|
|
15542
15549
|
try {
|
|
15543
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
15550
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-D5ySpYIZ.cjs'); });
|
|
15544
15551
|
let startedBy = void 0;
|
|
15545
15552
|
for (let i = 1; i < args.length; i++) {
|
|
15546
15553
|
if (args[i] === "--started-by") {
|
|
@@ -15562,7 +15569,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15562
15569
|
return;
|
|
15563
15570
|
} else if (subcommand === "acp") {
|
|
15564
15571
|
try {
|
|
15565
|
-
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-
|
|
15572
|
+
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-CtBP0Qvc.cjs'); });
|
|
15566
15573
|
let startedBy = void 0;
|
|
15567
15574
|
let verbose = false;
|
|
15568
15575
|
const acpArgs = [];
|
|
@@ -15602,7 +15609,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15602
15609
|
return;
|
|
15603
15610
|
} else if (subcommand === "openclaw") {
|
|
15604
15611
|
try {
|
|
15605
|
-
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-
|
|
15612
|
+
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-Bwrb1LXP.cjs'); });
|
|
15606
15613
|
let startedBy = void 0;
|
|
15607
15614
|
let verbose = false;
|
|
15608
15615
|
let gatewayUrl;
|
|
@@ -15653,7 +15660,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15653
15660
|
return;
|
|
15654
15661
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15655
15662
|
try {
|
|
15656
|
-
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-
|
|
15663
|
+
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-DPp-bYNE.cjs'); });
|
|
15657
15664
|
await handleMcpCommand();
|
|
15658
15665
|
} catch (error) {
|
|
15659
15666
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
|
@@ -16011,6 +16018,7 @@ ${chalk.bold("Examples:")}
|
|
|
16011
16018
|
}
|
|
16012
16019
|
}
|
|
16013
16020
|
|
|
16021
|
+
exports.ALLOWED_SPAWN_PERMISSION_MODES = ALLOWED_SPAWN_PERMISSION_MODES;
|
|
16014
16022
|
exports.BasePermissionHandler = BasePermissionHandler;
|
|
16015
16023
|
exports.BaseReasoningProcessor = BaseReasoningProcessor;
|
|
16016
16024
|
exports.CHANGE_TITLE_INSTRUCTION = CHANGE_TITLE_INSTRUCTION;
|
|
@@ -16034,6 +16042,7 @@ exports.pushClipboardViaDaemon = pushClipboardViaDaemon;
|
|
|
16034
16042
|
exports.query = query;
|
|
16035
16043
|
exports.readSessionTranscript = readSessionTranscript;
|
|
16036
16044
|
exports.registerKillSessionHandler = registerKillSessionHandler;
|
|
16045
|
+
exports.sanitizeSpawnPermissionMode = sanitizeSpawnPermissionMode;
|
|
16037
16046
|
exports.sendUserMessage = sendUserMessage;
|
|
16038
16047
|
exports.sessionWebUrl = sessionWebUrl;
|
|
16039
16048
|
exports.setupOfflineReconnection = setupOfflineReconnection;
|
|
@@ -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-k_ipDb0c.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';
|
|
@@ -169,7 +169,14 @@ async function stopDaemonSession(sessionId) {
|
|
|
169
169
|
return result.success || false;
|
|
170
170
|
}
|
|
171
171
|
async function spawnDaemonSession(directory, sessionId, opts) {
|
|
172
|
-
const result = await daemonPost("/spawn-session", {
|
|
172
|
+
const result = await daemonPost("/spawn-session", {
|
|
173
|
+
directory,
|
|
174
|
+
sessionId,
|
|
175
|
+
spawnedBy: opts?.spawnedBy,
|
|
176
|
+
permissionMode: opts?.permissionMode,
|
|
177
|
+
agent: opts?.agent,
|
|
178
|
+
environmentVariables: opts?.environmentVariables
|
|
179
|
+
});
|
|
173
180
|
return result;
|
|
174
181
|
}
|
|
175
182
|
async function notifyDaemonSessionEvent(sessionId, event, spawnedBy) {
|
|
@@ -10368,7 +10375,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10368
10375
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10369
10376
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10370
10377
|
const run = deps.run ?? (async (input) => {
|
|
10371
|
-
const { query } = await import('./index-
|
|
10378
|
+
const { query } = await import('./index-C-RLk8-e.mjs');
|
|
10372
10379
|
return runSideQuestion(query, input);
|
|
10373
10380
|
});
|
|
10374
10381
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -15298,7 +15305,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15298
15305
|
process.exit(0);
|
|
15299
15306
|
} else if (subcommand === "install-terminal-hooks") {
|
|
15300
15307
|
try {
|
|
15301
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-
|
|
15308
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-ADNcNdnB.mjs');
|
|
15302
15309
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
15303
15310
|
if (command.action === "help") {
|
|
15304
15311
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15315,7 +15322,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15315
15322
|
}
|
|
15316
15323
|
} else if (subcommand === "spawn") {
|
|
15317
15324
|
try {
|
|
15318
|
-
const { handleSpawnCommand } = await import('./spawn-
|
|
15325
|
+
const { handleSpawnCommand } = await import('./spawn-BorKN3W2.mjs');
|
|
15319
15326
|
await handleSpawnCommand(args.slice(1));
|
|
15320
15327
|
} catch (error) {
|
|
15321
15328
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15327,7 +15334,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15327
15334
|
return;
|
|
15328
15335
|
} else if (subcommand === "sessions") {
|
|
15329
15336
|
try {
|
|
15330
|
-
const { handleSessionsCommand } = await import('./sessions-
|
|
15337
|
+
const { handleSessionsCommand } = await import('./sessions-1fW8soBM.mjs');
|
|
15331
15338
|
await handleSessionsCommand(args.slice(1));
|
|
15332
15339
|
} catch (error) {
|
|
15333
15340
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15339,7 +15346,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15339
15346
|
return;
|
|
15340
15347
|
} else if (subcommand === "send") {
|
|
15341
15348
|
try {
|
|
15342
|
-
const { handleSendCommand } = await import('./send-
|
|
15349
|
+
const { handleSendCommand } = await import('./send-BlkxFZu4.mjs');
|
|
15343
15350
|
await handleSendCommand(args.slice(1));
|
|
15344
15351
|
} catch (error) {
|
|
15345
15352
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15445,9 +15452,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15445
15452
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15446
15453
|
const projectId = args[3];
|
|
15447
15454
|
try {
|
|
15448
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
15449
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-
|
|
15450
|
-
const { ApiClient: ApiClient2 } = await import('./types-
|
|
15455
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-vGkcq9nM.mjs');
|
|
15456
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-k_ipDb0c.mjs').then(function (n) { return n.ap; });
|
|
15457
|
+
const { ApiClient: ApiClient2 } = await import('./types-k_ipDb0c.mjs').then(function (n) { return n.aq; });
|
|
15451
15458
|
let userEmail = void 0;
|
|
15452
15459
|
try {
|
|
15453
15460
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15478,7 +15485,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15478
15485
|
}
|
|
15479
15486
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15480
15487
|
try {
|
|
15481
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
15488
|
+
const { readGeminiLocalConfig } = await import('./config-vGkcq9nM.mjs');
|
|
15482
15489
|
const config = readGeminiLocalConfig();
|
|
15483
15490
|
if (config.googleCloudProject) {
|
|
15484
15491
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15518,7 +15525,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15518
15525
|
process.exit(0);
|
|
15519
15526
|
}
|
|
15520
15527
|
try {
|
|
15521
|
-
const { runGemini } = await import('./runGemini-
|
|
15528
|
+
const { runGemini } = await import('./runGemini-CWWyjQMz.mjs');
|
|
15522
15529
|
let startedBy = void 0;
|
|
15523
15530
|
for (let i = 1; i < args.length; i++) {
|
|
15524
15531
|
if (args[i] === "--started-by") {
|
|
@@ -15540,7 +15547,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15540
15547
|
return;
|
|
15541
15548
|
} else if (subcommand === "acp") {
|
|
15542
15549
|
try {
|
|
15543
|
-
const { runAcp, resolveAcpAgentConfig } = await import('./index-
|
|
15550
|
+
const { runAcp, resolveAcpAgentConfig } = await import('./index-JAhGeW4_.mjs');
|
|
15544
15551
|
let startedBy = void 0;
|
|
15545
15552
|
let verbose = false;
|
|
15546
15553
|
const acpArgs = [];
|
|
@@ -15580,7 +15587,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15580
15587
|
return;
|
|
15581
15588
|
} else if (subcommand === "openclaw") {
|
|
15582
15589
|
try {
|
|
15583
|
-
const { runOpenClaw } = await import('./runOpenClaw-
|
|
15590
|
+
const { runOpenClaw } = await import('./runOpenClaw-Bv4rUTyJ.mjs');
|
|
15584
15591
|
let startedBy = void 0;
|
|
15585
15592
|
let verbose = false;
|
|
15586
15593
|
let gatewayUrl;
|
|
@@ -15631,7 +15638,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15631
15638
|
return;
|
|
15632
15639
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15633
15640
|
try {
|
|
15634
|
-
const { handleMcpCommand } = await import('./mcp-
|
|
15641
|
+
const { handleMcpCommand } = await import('./mcp-DHPm_gvL.mjs');
|
|
15635
15642
|
await handleMcpCommand();
|
|
15636
15643
|
} catch (error) {
|
|
15637
15644
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
|
@@ -15989,4 +15996,4 @@ ${chalk.bold("Examples:")}
|
|
|
15989
15996
|
}
|
|
15990
15997
|
}
|
|
15991
15998
|
|
|
15992
|
-
export { BasePermissionHandler as B,
|
|
15999
|
+
export { ALLOWED_SPAWN_PERMISSION_MODES as A, BasePermissionHandler as B, MessageBuffer as C, DEFAULT_RECENT_LIMIT as D, CHANGE_TITLE_INSTRUCTION as E, GEMINI_MODEL_ENV as G, MAX_READ_LIMIT as M, sessionWebUrl as a, sanitizeSpawnPermissionMode as b, checkIfDaemonRunningAndCleanupStaleState as c, sendUserMessage as d, stopSession as e, archiveSession as f, DEFAULT_GEMINI_MODEL as g, initialMachineMetadata as h, isValidSpawnOrigin as i, createSessionMetadata as j, setupOfflineReconnection as k, listSessions as l, MessageQueue2 as m, notifyDaemonSessionStarted as n, hashObject as o, pushClipboardViaDaemon as p, query as q, readSessionTranscript as r, spawnDaemonSession as s, tmuxSupportsSessionEnv as t, startHappyServer as u, registerKillSessionHandler as v, waitForSessionKey as w, GEMINI_API_KEY_ENV as x, GOOGLE_API_KEY_ENV as y, BaseReasoningProcessor as z };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { q as query } from './index-
|
|
1
|
+
import { q as query } from './index-Bn-xsguz.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-k_ipDb0c.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:util';
|
|
9
9
|
import 'node:fs';
|
|
@@ -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-B_olk79F.cjs');
|
|
4
|
+
var persistence = require('./types-BG_5QKX5.cjs');
|
|
5
|
+
var AcpSessionManager = require('./AcpSessionManager-uXwWO2Tn.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-BOoGJGQc.cjs');
|
|
9
9
|
require('node:child_process');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
|
11
11
|
require('axios');
|
|
@@ -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-CeXVb_s_.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-CeXVb_s_.mjs';
|
|
3
|
+
import { h as connectionState, A as ApiClient, j as readSettings, k as encodeBase64, l as logger, p as projectPath } from './types-k_ipDb0c.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-vqdqfD1l.mjs';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
-
import {
|
|
7
|
+
import { h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, n as notifyDaemonSessionStarted, m as MessageQueue2, o as hashObject, u as startHappyServer, v as registerKillSessionHandler, B as BasePermissionHandler } from './index-Bn-xsguz.mjs';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import '@agentclientprotocol/sdk';
|
|
10
10
|
import 'axios';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-BOoGJGQc.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-BG_5QKX5.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:util');
|
|
11
11
|
require('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-k_ipDb0c.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-Bn-xsguz.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-BG_5QKX5.cjs');
|
|
9
|
+
var index = require('./index-BOoGJGQc.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-k_ipDb0c.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-Bn-xsguz.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-k_ipDb0c.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-BOoGJGQc.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types
|
|
8
|
+
var persistence = require('./types-BG_5QKX5.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 {
|
|
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-k_ipDb0c.mjs';
|
|
6
|
+
import { x as GEMINI_API_KEY_ENV, y as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, z as BaseReasoningProcessor, h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, n as notifyDaemonSessionStarted, m as MessageQueue2, o as hashObject, C as MessageBuffer, E as CHANGE_TITLE_INSTRUCTION, v as registerKillSessionHandler, u as startHappyServer } from './index-Bn-xsguz.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-CeXVb_s_.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-vGkcq9nM.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-BG_5QKX5.cjs');
|
|
8
|
+
var index = require('./index-BOoGJGQc.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-B_olk79F.cjs');
|
|
10
|
+
var config = require('./config-BR3tkFL_.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 {
|
|
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-k_ipDb0c.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-vqdqfD1l.mjs';
|
|
8
|
+
import { h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, n as notifyDaemonSessionStarted, m as MessageQueue2, v as registerKillSessionHandler } from './index-Bn-xsguz.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-BG_5QKX5.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-uXwWO2Tn.cjs');
|
|
10
|
+
var index = require('./index-BOoGJGQc.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 {
|
|
4
|
+
import { r as readPersistedSessions, c as configuration } from './types-k_ipDb0c.mjs';
|
|
5
|
+
import { d as sendUserMessage, a as sessionWebUrl } from './index-Bn-xsguz.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-BG_5QKX5.cjs');
|
|
7
|
+
var index = require('./index-BOoGJGQc.cjs');
|
|
8
8
|
require('axios');
|
|
9
9
|
require('node:util');
|
|
10
10
|
require('node:os');
|
|
@@ -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,
|
|
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, e as stopSession, f as archiveSession } from './index-Bn-xsguz.mjs';
|
|
3
|
+
import { i as isValidSessionId } from './types-k_ipDb0c.mjs';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
6
|
import 'cross-spawn';
|
|
@@ -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-BOoGJGQc.cjs');
|
|
5
|
+
var persistence = require('./types-BG_5QKX5.cjs');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
8
|
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,
|
|
5
|
-
import { l as logger } from './types-
|
|
4
|
+
import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, i as isValidSpawnOrigin, b as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, w as waitForSessionKey, d as sendUserMessage } from './index-Bn-xsguz.mjs';
|
|
5
|
+
import { l as logger } from './types-k_ipDb0c.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'cross-spawn';
|
|
@@ -46,6 +46,14 @@ import 'node:util';
|
|
|
46
46
|
import 'url';
|
|
47
47
|
import 'node-pty';
|
|
48
48
|
|
|
49
|
+
const SPAWN_AGENTS = ["claude", "codex", "gemini", "openclaw"];
|
|
50
|
+
function parseEnvAssignment(raw) {
|
|
51
|
+
const eq = raw.indexOf("=");
|
|
52
|
+
if (eq <= 0) throw new Error(`--env expects KEY=VALUE, got: ${raw}`);
|
|
53
|
+
const key = raw.slice(0, eq);
|
|
54
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) throw new Error(`--env key is not a valid variable name: ${key}`);
|
|
55
|
+
return [key, raw.slice(eq + 1)];
|
|
56
|
+
}
|
|
49
57
|
function parseSpawnArgs(args) {
|
|
50
58
|
const options = { json: false, help: false };
|
|
51
59
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -69,6 +77,25 @@ function parseSpawnArgs(args) {
|
|
|
69
77
|
throw new Error("--spawned-by must be 1-24 chars of [a-z0-9] plus - or _, starting with a letter or digit");
|
|
70
78
|
}
|
|
71
79
|
options.spawnedBy = value;
|
|
80
|
+
} else if (arg === "--permission-mode") {
|
|
81
|
+
const value = args[++i];
|
|
82
|
+
if (value === void 0) throw new Error("--permission-mode requires a value");
|
|
83
|
+
if (sanitizeSpawnPermissionMode(value) === null) {
|
|
84
|
+
throw new Error(`--permission-mode must be one of: ${ALLOWED_SPAWN_PERMISSION_MODES.join(", ")}`);
|
|
85
|
+
}
|
|
86
|
+
options.permissionMode = value;
|
|
87
|
+
} else if (arg === "--agent") {
|
|
88
|
+
const value = args[++i];
|
|
89
|
+
if (value === void 0) throw new Error("--agent requires a value");
|
|
90
|
+
if (!SPAWN_AGENTS.includes(value)) {
|
|
91
|
+
throw new Error(`--agent must be one of: ${SPAWN_AGENTS.join(", ")}`);
|
|
92
|
+
}
|
|
93
|
+
options.agent = value;
|
|
94
|
+
} else if (arg === "--env") {
|
|
95
|
+
const value = args[++i];
|
|
96
|
+
if (value === void 0) throw new Error("--env requires a value");
|
|
97
|
+
const [key, val] = parseEnvAssignment(value);
|
|
98
|
+
options.env = { ...options.env ?? {}, [key]: val };
|
|
72
99
|
} else if (arg === "--json") {
|
|
73
100
|
options.json = true;
|
|
74
101
|
} else if (arg === "--help" || arg === "-h") {
|
|
@@ -87,7 +114,9 @@ function printHelp() {
|
|
|
87
114
|
${chalk.bold("very-happy spawn")} - Spawn a remote session via the local daemon (for automation)
|
|
88
115
|
|
|
89
116
|
${chalk.bold("Usage:")}
|
|
90
|
-
very-happy spawn --dir <path> [--prompt <text> | --prompt-file <file>]
|
|
117
|
+
very-happy spawn --dir <path> [--prompt <text> | --prompt-file <file>]
|
|
118
|
+
[--spawned-by <name>] [--permission-mode <mode>]
|
|
119
|
+
[--agent <name>] [--env KEY=VALUE]... [--json]
|
|
91
120
|
|
|
92
121
|
${chalk.bold("Options:")}
|
|
93
122
|
--dir, -d <path> Working directory for the new session (required)
|
|
@@ -96,6 +125,17 @@ ${chalk.bold("Options:")}
|
|
|
96
125
|
--spawned-by <name> Tag the new session with its origin (e.g. tanka).
|
|
97
126
|
1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
|
|
98
127
|
the web list and is searchable as #<name>.
|
|
128
|
+
--permission-mode <m> Permission mode for the new session: default,
|
|
129
|
+
acceptEdits, plan, yolo, bypassPermissions.
|
|
130
|
+
WITHOUT this the session runs in 'default' and stops
|
|
131
|
+
at the first un-allowlisted tool waiting for someone
|
|
132
|
+
to approve \u2014 if nothing is watching, it just hangs.
|
|
133
|
+
Unattended dispatchers want bypassPermissions.
|
|
134
|
+
--agent <name> Backend to run: claude (default), codex, gemini,
|
|
135
|
+
openclaw.
|
|
136
|
+
--env KEY=VALUE Extra environment for the session process. Repeatable.
|
|
137
|
+
\${VAR} is expanded against the daemon's environment;
|
|
138
|
+
an unresolved reference fails the spawn.
|
|
99
139
|
--json Machine-readable output: {"sessionId", "url"}
|
|
100
140
|
-h, --help Show this help
|
|
101
141
|
|
|
@@ -161,7 +201,12 @@ async function handleSpawnCommand(args) {
|
|
|
161
201
|
process.exit(1);
|
|
162
202
|
}
|
|
163
203
|
logger.debug(`[SPAWN CMD] Spawning session in ${directory}`);
|
|
164
|
-
const result = await spawnDaemonSession(directory, void 0, {
|
|
204
|
+
const result = await spawnDaemonSession(directory, void 0, {
|
|
205
|
+
spawnedBy: options.spawnedBy,
|
|
206
|
+
permissionMode: options.permissionMode,
|
|
207
|
+
agent: options.agent,
|
|
208
|
+
environmentVariables: options.env
|
|
209
|
+
});
|
|
165
210
|
if (result?.error || !result?.success || !result?.sessionId) {
|
|
166
211
|
const message = result?.error || "Daemon returned no session ID";
|
|
167
212
|
console.error(chalk.red("Error:"), `Failed to spawn session: ${message}`);
|
|
@@ -182,6 +227,12 @@ async function handleSpawnCommand(args) {
|
|
|
182
227
|
if (options.spawnedBy !== void 0) {
|
|
183
228
|
payload.spawnedBy = options.spawnedBy;
|
|
184
229
|
}
|
|
230
|
+
if (options.permissionMode !== void 0) {
|
|
231
|
+
payload.permissionMode = options.permissionMode;
|
|
232
|
+
}
|
|
233
|
+
if (options.agent !== void 0) {
|
|
234
|
+
payload.agent = options.agent;
|
|
235
|
+
}
|
|
185
236
|
if (prompt !== void 0) {
|
|
186
237
|
payload.promptDelivered = promptError === null;
|
|
187
238
|
}
|
|
@@ -204,4 +255,4 @@ async function handleSpawnCommand(args) {
|
|
|
204
255
|
process.exit(0);
|
|
205
256
|
}
|
|
206
257
|
|
|
207
|
-
export { handleSpawnCommand, parseSpawnArgs, sessionWebUrl };
|
|
258
|
+
export { SPAWN_AGENTS, handleSpawnCommand, parseEnvAssignment, parseSpawnArgs, sessionWebUrl };
|
|
@@ -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-BOoGJGQc.cjs');
|
|
7
|
+
var persistence = require('./types-BG_5QKX5.cjs');
|
|
8
8
|
require('node:os');
|
|
9
9
|
require('node:crypto');
|
|
10
10
|
require('cross-spawn');
|
|
@@ -48,6 +48,14 @@ require('node:util');
|
|
|
48
48
|
require('url');
|
|
49
49
|
require('node-pty');
|
|
50
50
|
|
|
51
|
+
const SPAWN_AGENTS = ["claude", "codex", "gemini", "openclaw"];
|
|
52
|
+
function parseEnvAssignment(raw) {
|
|
53
|
+
const eq = raw.indexOf("=");
|
|
54
|
+
if (eq <= 0) throw new Error(`--env expects KEY=VALUE, got: ${raw}`);
|
|
55
|
+
const key = raw.slice(0, eq);
|
|
56
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) throw new Error(`--env key is not a valid variable name: ${key}`);
|
|
57
|
+
return [key, raw.slice(eq + 1)];
|
|
58
|
+
}
|
|
51
59
|
function parseSpawnArgs(args) {
|
|
52
60
|
const options = { json: false, help: false };
|
|
53
61
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -71,6 +79,25 @@ function parseSpawnArgs(args) {
|
|
|
71
79
|
throw new Error("--spawned-by must be 1-24 chars of [a-z0-9] plus - or _, starting with a letter or digit");
|
|
72
80
|
}
|
|
73
81
|
options.spawnedBy = value;
|
|
82
|
+
} else if (arg === "--permission-mode") {
|
|
83
|
+
const value = args[++i];
|
|
84
|
+
if (value === void 0) throw new Error("--permission-mode requires a value");
|
|
85
|
+
if (index.sanitizeSpawnPermissionMode(value) === null) {
|
|
86
|
+
throw new Error(`--permission-mode must be one of: ${index.ALLOWED_SPAWN_PERMISSION_MODES.join(", ")}`);
|
|
87
|
+
}
|
|
88
|
+
options.permissionMode = value;
|
|
89
|
+
} else if (arg === "--agent") {
|
|
90
|
+
const value = args[++i];
|
|
91
|
+
if (value === void 0) throw new Error("--agent requires a value");
|
|
92
|
+
if (!SPAWN_AGENTS.includes(value)) {
|
|
93
|
+
throw new Error(`--agent must be one of: ${SPAWN_AGENTS.join(", ")}`);
|
|
94
|
+
}
|
|
95
|
+
options.agent = value;
|
|
96
|
+
} else if (arg === "--env") {
|
|
97
|
+
const value = args[++i];
|
|
98
|
+
if (value === void 0) throw new Error("--env requires a value");
|
|
99
|
+
const [key, val] = parseEnvAssignment(value);
|
|
100
|
+
options.env = { ...options.env ?? {}, [key]: val };
|
|
74
101
|
} else if (arg === "--json") {
|
|
75
102
|
options.json = true;
|
|
76
103
|
} else if (arg === "--help" || arg === "-h") {
|
|
@@ -89,7 +116,9 @@ function printHelp() {
|
|
|
89
116
|
${chalk.bold("very-happy spawn")} - Spawn a remote session via the local daemon (for automation)
|
|
90
117
|
|
|
91
118
|
${chalk.bold("Usage:")}
|
|
92
|
-
very-happy spawn --dir <path> [--prompt <text> | --prompt-file <file>]
|
|
119
|
+
very-happy spawn --dir <path> [--prompt <text> | --prompt-file <file>]
|
|
120
|
+
[--spawned-by <name>] [--permission-mode <mode>]
|
|
121
|
+
[--agent <name>] [--env KEY=VALUE]... [--json]
|
|
93
122
|
|
|
94
123
|
${chalk.bold("Options:")}
|
|
95
124
|
--dir, -d <path> Working directory for the new session (required)
|
|
@@ -98,6 +127,17 @@ ${chalk.bold("Options:")}
|
|
|
98
127
|
--spawned-by <name> Tag the new session with its origin (e.g. tanka).
|
|
99
128
|
1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
|
|
100
129
|
the web list and is searchable as #<name>.
|
|
130
|
+
--permission-mode <m> Permission mode for the new session: default,
|
|
131
|
+
acceptEdits, plan, yolo, bypassPermissions.
|
|
132
|
+
WITHOUT this the session runs in 'default' and stops
|
|
133
|
+
at the first un-allowlisted tool waiting for someone
|
|
134
|
+
to approve \u2014 if nothing is watching, it just hangs.
|
|
135
|
+
Unattended dispatchers want bypassPermissions.
|
|
136
|
+
--agent <name> Backend to run: claude (default), codex, gemini,
|
|
137
|
+
openclaw.
|
|
138
|
+
--env KEY=VALUE Extra environment for the session process. Repeatable.
|
|
139
|
+
\${VAR} is expanded against the daemon's environment;
|
|
140
|
+
an unresolved reference fails the spawn.
|
|
101
141
|
--json Machine-readable output: {"sessionId", "url"}
|
|
102
142
|
-h, --help Show this help
|
|
103
143
|
|
|
@@ -163,7 +203,12 @@ async function handleSpawnCommand(args) {
|
|
|
163
203
|
process.exit(1);
|
|
164
204
|
}
|
|
165
205
|
persistence.logger.debug(`[SPAWN CMD] Spawning session in ${directory}`);
|
|
166
|
-
const result = await index.spawnDaemonSession(directory, void 0, {
|
|
206
|
+
const result = await index.spawnDaemonSession(directory, void 0, {
|
|
207
|
+
spawnedBy: options.spawnedBy,
|
|
208
|
+
permissionMode: options.permissionMode,
|
|
209
|
+
agent: options.agent,
|
|
210
|
+
environmentVariables: options.env
|
|
211
|
+
});
|
|
167
212
|
if (result?.error || !result?.success || !result?.sessionId) {
|
|
168
213
|
const message = result?.error || "Daemon returned no session ID";
|
|
169
214
|
console.error(chalk.red("Error:"), `Failed to spawn session: ${message}`);
|
|
@@ -184,6 +229,12 @@ async function handleSpawnCommand(args) {
|
|
|
184
229
|
if (options.spawnedBy !== void 0) {
|
|
185
230
|
payload.spawnedBy = options.spawnedBy;
|
|
186
231
|
}
|
|
232
|
+
if (options.permissionMode !== void 0) {
|
|
233
|
+
payload.permissionMode = options.permissionMode;
|
|
234
|
+
}
|
|
235
|
+
if (options.agent !== void 0) {
|
|
236
|
+
payload.agent = options.agent;
|
|
237
|
+
}
|
|
187
238
|
if (prompt !== void 0) {
|
|
188
239
|
payload.promptDelivered = promptError === null;
|
|
189
240
|
}
|
|
@@ -207,5 +258,7 @@ async function handleSpawnCommand(args) {
|
|
|
207
258
|
}
|
|
208
259
|
|
|
209
260
|
exports.sessionWebUrl = index.sessionWebUrl;
|
|
261
|
+
exports.SPAWN_AGENTS = SPAWN_AGENTS;
|
|
210
262
|
exports.handleSpawnCommand = handleSpawnCommand;
|
|
263
|
+
exports.parseEnvAssignment = parseEnvAssignment;
|
|
211
264
|
exports.parseSpawnArgs = parseSpawnArgs;
|
|
@@ -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.111";
|
|
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.111",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.111",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.111",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.111",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.111",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.111"
|
|
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-BG_5QKX5.cjs', document.baseURI).href))));
|
|
1607
1607
|
function projectPath() {
|
|
1608
1608
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1609
1609
|
return path;
|
|
@@ -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.111";
|
|
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.111",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.111",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.111",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.111",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.111",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.111"
|
|
151
151
|
};
|
|
152
152
|
var devDependencies = {
|
|
153
153
|
"@slopus/happy-wire": "workspace:*",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.111",
|
|
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.111",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.111",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.111",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.111",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.111",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.111"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|