very-happy-cli 0.2.81 → 0.2.82
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-cBt4R6ce.mjs → AcpBackend-DMLCBDru.mjs} +1 -1
- package/dist/{AcpBackend-B7Z1Gk_l.cjs → AcpBackend-DjHJfd8y.cjs} +1 -1
- package/dist/{AcpSessionManager-D3-rBUxk.cjs → AcpSessionManager-Bd-LtS2E.cjs} +1 -1
- package/dist/{AcpSessionManager-AyrINTu7.mjs → AcpSessionManager-xyImjcMI.mjs} +1 -1
- package/dist/{config-B2TBK1UZ.cjs → config-BjgfmsPT.cjs} +2 -2
- package/dist/{config-CZdNxl3d.mjs → config-DRjtWNd0.mjs} +2 -2
- package/dist/{index-DuvoxKEM.mjs → index-1ZE940yd.mjs} +5 -5
- package/dist/{index-SjWW0gIt.cjs → index-BTtTqsj4.cjs} +74 -42
- package/dist/{index-C9UnJZEo.cjs → index-CR24hlKJ.cjs} +4 -4
- package/dist/{index-W3oj-d6C.mjs → index-DZ7tAffg.mjs} +71 -39
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-Xtl0pMWH.cjs → installTerminalHooks-DSfE4ui6.cjs} +2 -2
- package/dist/{installTerminalHooks-BqpxXB8n.mjs → installTerminalHooks-Do3vnipG.mjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +2 -0
- package/dist/lib.d.mts +2 -0
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-DqaW6nz5.mjs → mcp-2Ee6mSAP.mjs} +2 -2
- package/dist/{mcp-BxO80DMH.cjs → mcp-CJHJEBto.cjs} +2 -2
- package/dist/{runGemini-Ctc5nKHC.mjs → runGemini-DQKPf1RX.mjs} +4 -4
- package/dist/{runGemini-DZay2CN7.cjs → runGemini-Dj7g2-B_.cjs} +4 -4
- package/dist/{runOpenClaw-CF0133Vk.mjs → runOpenClaw-BNfz77EE.mjs} +3 -3
- package/dist/{runOpenClaw-W3Ogud1U.cjs → runOpenClaw-BWAVwl3x.cjs} +3 -3
- package/dist/{send-By1xNQ6E.mjs → send-CIm5kZBx.mjs} +2 -2
- package/dist/{send-D0U0T_bK.cjs → send-Cm28ijOj.cjs} +2 -2
- package/dist/{spawn-BnvqaVCf.cjs → spawn-BPgkpGXX.cjs} +2 -2
- package/dist/{spawn-BLbFNopc.mjs → spawn-Dd8qj3l4.mjs} +2 -2
- package/dist/{types-DJC5rGtd.cjs → types-B7qS_-8e.cjs} +8 -8
- package/dist/{types-DFKdwxE-.mjs → types-C4duxyB7.mjs} +7 -7
- package/package.json +7 -7
|
@@ -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-C4duxyB7.mjs';
|
|
5
5
|
|
|
6
6
|
const DEFAULT_TIMEOUTS = {
|
|
7
7
|
/** Default initialization timeout: 60 seconds */
|
|
@@ -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-B7qS_-8e.cjs');
|
|
7
7
|
|
|
8
8
|
const DEFAULT_TIMEOUTS = {
|
|
9
9
|
/** 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-B7qS_-8e.cjs');
|
|
8
|
+
var index = require('./index-BTtTqsj4.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 { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-
|
|
5
|
+
import { l as logger } from './types-C4duxyB7.mjs';
|
|
6
|
+
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-DZ7tAffg.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'chalk';
|
|
9
9
|
import 'node:util';
|
|
@@ -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, i as readSettings, j 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-DMLCBDru.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-DMLCBDru.mjs';
|
|
3
|
+
import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-C4duxyB7.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-xyImjcMI.mjs';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
-
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, f as startHappyServer, r as registerKillSessionHandler, B as BasePermissionHandler } from './index-
|
|
7
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, f as startHappyServer, r as registerKillSessionHandler, B as BasePermissionHandler } from './index-DZ7tAffg.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-B7qS_-8e.cjs');
|
|
7
7
|
var spawn = require('cross-spawn');
|
|
8
8
|
var path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -3004,6 +3004,49 @@ function applyClaudeResultLifecycle(result, callbacks) {
|
|
|
3004
3004
|
callbacks.onCompleted();
|
|
3005
3005
|
}
|
|
3006
3006
|
|
|
3007
|
+
const CLAUDE_ATTACHMENT_KINDS = [
|
|
3008
|
+
"image/jpeg",
|
|
3009
|
+
"image/png",
|
|
3010
|
+
"image/gif",
|
|
3011
|
+
"image/webp",
|
|
3012
|
+
"application/pdf"
|
|
3013
|
+
];
|
|
3014
|
+
function detectClaudeImageMime(bytes) {
|
|
3015
|
+
if (bytes.length >= 4 && bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71) {
|
|
3016
|
+
return "image/png";
|
|
3017
|
+
}
|
|
3018
|
+
if (bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) {
|
|
3019
|
+
return "image/jpeg";
|
|
3020
|
+
}
|
|
3021
|
+
if (bytes.length >= 4 && bytes[0] === 71 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 56) {
|
|
3022
|
+
return "image/gif";
|
|
3023
|
+
}
|
|
3024
|
+
if (bytes.length >= 12 && bytes[0] === 82 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 70 && bytes[8] === 87 && bytes[9] === 69 && bytes[10] === 66 && bytes[11] === 80) {
|
|
3025
|
+
return "image/webp";
|
|
3026
|
+
}
|
|
3027
|
+
return null;
|
|
3028
|
+
}
|
|
3029
|
+
function isPdf(bytes) {
|
|
3030
|
+
return bytes.length >= 5 && bytes[0] === 37 && bytes[1] === 80 && bytes[2] === 68 && bytes[3] === 70 && bytes[4] === 45;
|
|
3031
|
+
}
|
|
3032
|
+
function attachmentToClaudeContentBlock(bytes) {
|
|
3033
|
+
const data = Buffer.from(bytes).toString("base64");
|
|
3034
|
+
const imageMime = detectClaudeImageMime(bytes);
|
|
3035
|
+
if (imageMime) {
|
|
3036
|
+
return {
|
|
3037
|
+
type: "image",
|
|
3038
|
+
source: { type: "base64", media_type: imageMime, data }
|
|
3039
|
+
};
|
|
3040
|
+
}
|
|
3041
|
+
if (isPdf(bytes)) {
|
|
3042
|
+
return {
|
|
3043
|
+
type: "document",
|
|
3044
|
+
source: { type: "base64", media_type: "application/pdf", data }
|
|
3045
|
+
};
|
|
3046
|
+
}
|
|
3047
|
+
return null;
|
|
3048
|
+
}
|
|
3049
|
+
|
|
3007
3050
|
function applyClaudeSdkMetadata(current, update) {
|
|
3008
3051
|
return {
|
|
3009
3052
|
...current,
|
|
@@ -3011,6 +3054,7 @@ function applyClaudeSdkMetadata(current, update) {
|
|
|
3011
3054
|
slashCommands: update.slashCommands,
|
|
3012
3055
|
mcpServers: update.mcpServers,
|
|
3013
3056
|
skills: update.skills,
|
|
3057
|
+
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
3014
3058
|
...update.modelIsDefault && update.model ? { defaultModelCode: update.model } : {}
|
|
3015
3059
|
};
|
|
3016
3060
|
}
|
|
@@ -3286,23 +3330,23 @@ async function claudeRemoteLauncher(session) {
|
|
|
3286
3330
|
const attachments = msg.attachments ?? [];
|
|
3287
3331
|
if (attachments.length > 0) {
|
|
3288
3332
|
const contentBlocks = [];
|
|
3333
|
+
let acceptedAttachments = 0;
|
|
3289
3334
|
for (const att of attachments) {
|
|
3290
|
-
const
|
|
3291
|
-
if (!
|
|
3335
|
+
const block = attachmentToClaudeContentBlock(att.data);
|
|
3336
|
+
if (!block) {
|
|
3292
3337
|
persistence.logger.debug(`[remote] Skipping unsupported attachment (no magic-byte match): ${att.name}, claimed mimeType=${att.mimeType}`);
|
|
3293
3338
|
continue;
|
|
3294
3339
|
}
|
|
3295
|
-
contentBlocks.push(
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
data: Buffer.from(att.data).toString("base64")
|
|
3301
|
-
}
|
|
3302
|
-
});
|
|
3340
|
+
contentBlocks.push(block);
|
|
3341
|
+
acceptedAttachments++;
|
|
3342
|
+
}
|
|
3343
|
+
if (msg.message.trim().length > 0) {
|
|
3344
|
+
contentBlocks.push({ type: "text", text: msg.message });
|
|
3303
3345
|
}
|
|
3304
|
-
contentBlocks.
|
|
3305
|
-
|
|
3346
|
+
if (contentBlocks.length === 0) {
|
|
3347
|
+
throw new Error("No supported attachment content was available to send");
|
|
3348
|
+
}
|
|
3349
|
+
persistence.logger.debug(`[remote] Combined ${acceptedAttachments} attachment(s) with${msg.message.trim() ? "" : "out"} text message`);
|
|
3306
3350
|
return {
|
|
3307
3351
|
message: contentBlocks,
|
|
3308
3352
|
mode: msg.mode
|
|
@@ -3434,21 +3478,6 @@ async function claudeRemoteLauncher(session) {
|
|
|
3434
3478
|
}
|
|
3435
3479
|
return exitReason || "exit";
|
|
3436
3480
|
}
|
|
3437
|
-
function detectClaudeImageMime(bytes) {
|
|
3438
|
-
if (bytes.length >= 4 && bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71) {
|
|
3439
|
-
return "image/png";
|
|
3440
|
-
}
|
|
3441
|
-
if (bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) {
|
|
3442
|
-
return "image/jpeg";
|
|
3443
|
-
}
|
|
3444
|
-
if (bytes.length >= 4 && bytes[0] === 71 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 56) {
|
|
3445
|
-
return "image/gif";
|
|
3446
|
-
}
|
|
3447
|
-
if (bytes.length >= 12 && bytes[0] === 82 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 70 && bytes[8] === 87 && bytes[9] === 69 && bytes[10] === 66 && bytes[11] === 80) {
|
|
3448
|
-
return "image/webp";
|
|
3449
|
-
}
|
|
3450
|
-
return null;
|
|
3451
|
-
}
|
|
3452
3481
|
|
|
3453
3482
|
async function loop(opts) {
|
|
3454
3483
|
const logPath = persistence.logger.logFilePath;
|
|
@@ -8503,7 +8532,7 @@ const MAX_TITLE_CHARS = 60;
|
|
|
8503
8532
|
const GENERATION_TIMEOUT_MS = 3e4;
|
|
8504
8533
|
function resolveClaudeBinary() {
|
|
8505
8534
|
try {
|
|
8506
|
-
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-
|
|
8535
|
+
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-BTtTqsj4.cjs', document.baseURI).href)));
|
|
8507
8536
|
const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
|
|
8508
8537
|
const { getClaudeCliPath } = require$1(utilsPath);
|
|
8509
8538
|
const path$1 = getClaudeCliPath();
|
|
@@ -8956,6 +8985,9 @@ async function runClaude(credentials, options = {}) {
|
|
|
8956
8985
|
lifecycleState: "running",
|
|
8957
8986
|
lifecycleStateSince: Date.now(),
|
|
8958
8987
|
flavor: "claude",
|
|
8988
|
+
// Advertise composer support before the first SDK response. Otherwise
|
|
8989
|
+
// a brand-new session cannot pick a PDF until after sending once.
|
|
8990
|
+
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
8959
8991
|
sandbox: sandboxConfig?.enabled ? sandboxConfig : null,
|
|
8960
8992
|
dangerouslySkipPermissions,
|
|
8961
8993
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
@@ -10620,9 +10652,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
|
|
|
10620
10652
|
};
|
|
10621
10653
|
}
|
|
10622
10654
|
|
|
10623
|
-
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-
|
|
10655
|
+
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-BTtTqsj4.cjs', document.baseURI).href)));
|
|
10624
10656
|
const __dirname$1 = path.dirname(__filename$1);
|
|
10625
|
-
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
10657
|
+
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-BTtTqsj4.cjs', document.baseURI).href)));
|
|
10626
10658
|
const PRISMA_QUERY_ENGINE_FILES = {
|
|
10627
10659
|
"arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
|
|
10628
10660
|
"x64-darwin": "libquery_engine-darwin.dylib.node",
|
|
@@ -13234,7 +13266,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13234
13266
|
process.exit(0);
|
|
13235
13267
|
} else if (subcommand === "install-terminal-hooks") {
|
|
13236
13268
|
try {
|
|
13237
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-
|
|
13269
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-DSfE4ui6.cjs'); });
|
|
13238
13270
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
13239
13271
|
if (command.action === "help") {
|
|
13240
13272
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -13251,7 +13283,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13251
13283
|
}
|
|
13252
13284
|
} else if (subcommand === "spawn") {
|
|
13253
13285
|
try {
|
|
13254
|
-
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-
|
|
13286
|
+
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-BPgkpGXX.cjs'); });
|
|
13255
13287
|
await handleSpawnCommand(args.slice(1));
|
|
13256
13288
|
} catch (error) {
|
|
13257
13289
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13263,7 +13295,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13263
13295
|
return;
|
|
13264
13296
|
} else if (subcommand === "send") {
|
|
13265
13297
|
try {
|
|
13266
|
-
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-
|
|
13298
|
+
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-Cm28ijOj.cjs'); });
|
|
13267
13299
|
await handleSendCommand(args.slice(1));
|
|
13268
13300
|
} catch (error) {
|
|
13269
13301
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13369,9 +13401,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13369
13401
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
13370
13402
|
const projectId = args[3];
|
|
13371
13403
|
try {
|
|
13372
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
13373
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-
|
|
13374
|
-
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-
|
|
13404
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-BjgfmsPT.cjs'); });
|
|
13405
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-B7qS_-8e.cjs'); }).then(function (n) { return n.persistence; });
|
|
13406
|
+
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-B7qS_-8e.cjs'); }).then(function (n) { return n.api; });
|
|
13375
13407
|
let userEmail = void 0;
|
|
13376
13408
|
try {
|
|
13377
13409
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -13402,7 +13434,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13402
13434
|
}
|
|
13403
13435
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
13404
13436
|
try {
|
|
13405
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
13437
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-BjgfmsPT.cjs'); });
|
|
13406
13438
|
const config = readGeminiLocalConfig();
|
|
13407
13439
|
if (config.googleCloudProject) {
|
|
13408
13440
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -13442,7 +13474,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13442
13474
|
process.exit(0);
|
|
13443
13475
|
}
|
|
13444
13476
|
try {
|
|
13445
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
13477
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-Dj7g2-B_.cjs'); });
|
|
13446
13478
|
let startedBy = void 0;
|
|
13447
13479
|
for (let i = 1; i < args.length; i++) {
|
|
13448
13480
|
if (args[i] === "--started-by") {
|
|
@@ -13464,7 +13496,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13464
13496
|
return;
|
|
13465
13497
|
} else if (subcommand === "acp") {
|
|
13466
13498
|
try {
|
|
13467
|
-
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-
|
|
13499
|
+
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-CR24hlKJ.cjs'); });
|
|
13468
13500
|
let startedBy = void 0;
|
|
13469
13501
|
let verbose = false;
|
|
13470
13502
|
const acpArgs = [];
|
|
@@ -13504,7 +13536,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13504
13536
|
return;
|
|
13505
13537
|
} else if (subcommand === "openclaw") {
|
|
13506
13538
|
try {
|
|
13507
|
-
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-
|
|
13539
|
+
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-BWAVwl3x.cjs'); });
|
|
13508
13540
|
let startedBy = void 0;
|
|
13509
13541
|
let verbose = false;
|
|
13510
13542
|
let gatewayUrl;
|
|
@@ -13555,7 +13587,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13555
13587
|
return;
|
|
13556
13588
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
13557
13589
|
try {
|
|
13558
|
-
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-
|
|
13590
|
+
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-CJHJEBto.cjs'); });
|
|
13559
13591
|
await handleMcpCommand();
|
|
13560
13592
|
} catch (error) {
|
|
13561
13593
|
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-DjHJfd8y.cjs');
|
|
4
|
+
var persistence = require('./types-B7qS_-8e.cjs');
|
|
5
|
+
var AcpSessionManager = require('./AcpSessionManager-Bd-LtS2E.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-BTtTqsj4.cjs');
|
|
9
9
|
require('node:child_process');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
|
11
11
|
require('axios');
|
|
@@ -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 } from 'node:os';
|
|
3
3
|
import { randomUUID, randomBytes, createHash as createHash$1, timingSafeEqual } from 'node:crypto';
|
|
4
|
-
import { n as readDaemonState, l as logger, c as configuration, o as clearDaemonState, q as getProjectPath, p as projectPath, s as initializeSandbox, t as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, u as AsyncLock, f as packageJson, i as readSettings, v as readCredentials, x as credentialRelayProblem, y as deriveLocalCliUpdateSummary, j as encodeBase64, z as updateSettings, B as encodeBase64Url, C as decodeBase64, D as writeCredentialsLegacy, E as writeCredentialsDataKey, F as readCredentialsForConfiguredRelay, G as encrypt, r as readPersistedSessions, H as getLocalHappyAgentCredentialPath, J as readLocalHappyAgentCredentials, K as decryptWithDataKey, L as decryptLegacy, M as extractCompleteLines, N as decideBackfill, O as parseTerminalHookPayload, P as decideMirrorBinding, Q as persistSession, S as MIRROR_BACKFILL_LINES_DEFAULT, T as mirrorLineKey, U as mirrorLocalId, V as detectResumeSupport, W as detectCLIAvailability, X as acquireDaemonLock, Y as summarizeSpawnSessionForLog, Z as deletePersistedSessions, _ as decrypt, $ as writeDaemonState, A as ApiClient, a0 as fetchCliUpdateState, a1 as resolveCliUpdateCheckInterval, a2 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a3 as releaseDaemonLock, a4 as isValidSessionId, a5 as listVhTerminals, a6 as isValidTerminalId, a7 as readVhTerminal, a8 as sendToVhTerminal, h as connectionState, a9 as startOfflineReconnection, aa as clearCredentials, ab as clearMachineId, k as ensurePrivateDirectorySync, w as writePrivateFileSync, ac as SandboxConfigSchema, b as createEnvelope, ad as CodexAppServerClient, ae as getLatestDaemonLog } from './types-
|
|
4
|
+
import { n as readDaemonState, l as logger, c as configuration, o as clearDaemonState, q as getProjectPath, p as projectPath, s as initializeSandbox, t as wrapCommand, d as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, g as delay, u as AsyncLock, f as packageJson, i as readSettings, v as readCredentials, x as credentialRelayProblem, y as deriveLocalCliUpdateSummary, j as encodeBase64, z as updateSettings, B as encodeBase64Url, C as decodeBase64, D as writeCredentialsLegacy, E as writeCredentialsDataKey, F as readCredentialsForConfiguredRelay, G as encrypt, r as readPersistedSessions, H as getLocalHappyAgentCredentialPath, J as readLocalHappyAgentCredentials, K as decryptWithDataKey, L as decryptLegacy, M as extractCompleteLines, N as decideBackfill, O as parseTerminalHookPayload, P as decideMirrorBinding, Q as persistSession, S as MIRROR_BACKFILL_LINES_DEFAULT, T as mirrorLineKey, U as mirrorLocalId, V as detectResumeSupport, W as detectCLIAvailability, X as acquireDaemonLock, Y as summarizeSpawnSessionForLog, Z as deletePersistedSessions, _ as decrypt, $ as writeDaemonState, A as ApiClient, a0 as fetchCliUpdateState, a1 as resolveCliUpdateCheckInterval, a2 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a3 as releaseDaemonLock, a4 as isValidSessionId, a5 as listVhTerminals, a6 as isValidTerminalId, a7 as readVhTerminal, a8 as sendToVhTerminal, h as connectionState, a9 as startOfflineReconnection, aa as clearCredentials, ab as clearMachineId, k as ensurePrivateDirectorySync, w as writePrivateFileSync, ac as SandboxConfigSchema, b as createEnvelope, ad as CodexAppServerClient, ae as getLatestDaemonLog } from './types-C4duxyB7.mjs';
|
|
5
5
|
import spawn$1, { spawn } from 'cross-spawn';
|
|
6
6
|
import path, { join, resolve, isAbsolute, normalize, sep, dirname } from 'node:path';
|
|
7
7
|
import { createInterface } from 'node:readline';
|
|
@@ -2982,6 +2982,49 @@ function applyClaudeResultLifecycle(result, callbacks) {
|
|
|
2982
2982
|
callbacks.onCompleted();
|
|
2983
2983
|
}
|
|
2984
2984
|
|
|
2985
|
+
const CLAUDE_ATTACHMENT_KINDS = [
|
|
2986
|
+
"image/jpeg",
|
|
2987
|
+
"image/png",
|
|
2988
|
+
"image/gif",
|
|
2989
|
+
"image/webp",
|
|
2990
|
+
"application/pdf"
|
|
2991
|
+
];
|
|
2992
|
+
function detectClaudeImageMime(bytes) {
|
|
2993
|
+
if (bytes.length >= 4 && bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71) {
|
|
2994
|
+
return "image/png";
|
|
2995
|
+
}
|
|
2996
|
+
if (bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) {
|
|
2997
|
+
return "image/jpeg";
|
|
2998
|
+
}
|
|
2999
|
+
if (bytes.length >= 4 && bytes[0] === 71 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 56) {
|
|
3000
|
+
return "image/gif";
|
|
3001
|
+
}
|
|
3002
|
+
if (bytes.length >= 12 && bytes[0] === 82 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 70 && bytes[8] === 87 && bytes[9] === 69 && bytes[10] === 66 && bytes[11] === 80) {
|
|
3003
|
+
return "image/webp";
|
|
3004
|
+
}
|
|
3005
|
+
return null;
|
|
3006
|
+
}
|
|
3007
|
+
function isPdf(bytes) {
|
|
3008
|
+
return bytes.length >= 5 && bytes[0] === 37 && bytes[1] === 80 && bytes[2] === 68 && bytes[3] === 70 && bytes[4] === 45;
|
|
3009
|
+
}
|
|
3010
|
+
function attachmentToClaudeContentBlock(bytes) {
|
|
3011
|
+
const data = Buffer.from(bytes).toString("base64");
|
|
3012
|
+
const imageMime = detectClaudeImageMime(bytes);
|
|
3013
|
+
if (imageMime) {
|
|
3014
|
+
return {
|
|
3015
|
+
type: "image",
|
|
3016
|
+
source: { type: "base64", media_type: imageMime, data }
|
|
3017
|
+
};
|
|
3018
|
+
}
|
|
3019
|
+
if (isPdf(bytes)) {
|
|
3020
|
+
return {
|
|
3021
|
+
type: "document",
|
|
3022
|
+
source: { type: "base64", media_type: "application/pdf", data }
|
|
3023
|
+
};
|
|
3024
|
+
}
|
|
3025
|
+
return null;
|
|
3026
|
+
}
|
|
3027
|
+
|
|
2985
3028
|
function applyClaudeSdkMetadata(current, update) {
|
|
2986
3029
|
return {
|
|
2987
3030
|
...current,
|
|
@@ -2989,6 +3032,7 @@ function applyClaudeSdkMetadata(current, update) {
|
|
|
2989
3032
|
slashCommands: update.slashCommands,
|
|
2990
3033
|
mcpServers: update.mcpServers,
|
|
2991
3034
|
skills: update.skills,
|
|
3035
|
+
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
2992
3036
|
...update.modelIsDefault && update.model ? { defaultModelCode: update.model } : {}
|
|
2993
3037
|
};
|
|
2994
3038
|
}
|
|
@@ -3264,23 +3308,23 @@ async function claudeRemoteLauncher(session) {
|
|
|
3264
3308
|
const attachments = msg.attachments ?? [];
|
|
3265
3309
|
if (attachments.length > 0) {
|
|
3266
3310
|
const contentBlocks = [];
|
|
3311
|
+
let acceptedAttachments = 0;
|
|
3267
3312
|
for (const att of attachments) {
|
|
3268
|
-
const
|
|
3269
|
-
if (!
|
|
3313
|
+
const block = attachmentToClaudeContentBlock(att.data);
|
|
3314
|
+
if (!block) {
|
|
3270
3315
|
logger.debug(`[remote] Skipping unsupported attachment (no magic-byte match): ${att.name}, claimed mimeType=${att.mimeType}`);
|
|
3271
3316
|
continue;
|
|
3272
3317
|
}
|
|
3273
|
-
contentBlocks.push(
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
data: Buffer.from(att.data).toString("base64")
|
|
3279
|
-
}
|
|
3280
|
-
});
|
|
3318
|
+
contentBlocks.push(block);
|
|
3319
|
+
acceptedAttachments++;
|
|
3320
|
+
}
|
|
3321
|
+
if (msg.message.trim().length > 0) {
|
|
3322
|
+
contentBlocks.push({ type: "text", text: msg.message });
|
|
3281
3323
|
}
|
|
3282
|
-
contentBlocks.
|
|
3283
|
-
|
|
3324
|
+
if (contentBlocks.length === 0) {
|
|
3325
|
+
throw new Error("No supported attachment content was available to send");
|
|
3326
|
+
}
|
|
3327
|
+
logger.debug(`[remote] Combined ${acceptedAttachments} attachment(s) with${msg.message.trim() ? "" : "out"} text message`);
|
|
3284
3328
|
return {
|
|
3285
3329
|
message: contentBlocks,
|
|
3286
3330
|
mode: msg.mode
|
|
@@ -3412,21 +3456,6 @@ async function claudeRemoteLauncher(session) {
|
|
|
3412
3456
|
}
|
|
3413
3457
|
return exitReason || "exit";
|
|
3414
3458
|
}
|
|
3415
|
-
function detectClaudeImageMime(bytes) {
|
|
3416
|
-
if (bytes.length >= 4 && bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71) {
|
|
3417
|
-
return "image/png";
|
|
3418
|
-
}
|
|
3419
|
-
if (bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) {
|
|
3420
|
-
return "image/jpeg";
|
|
3421
|
-
}
|
|
3422
|
-
if (bytes.length >= 4 && bytes[0] === 71 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 56) {
|
|
3423
|
-
return "image/gif";
|
|
3424
|
-
}
|
|
3425
|
-
if (bytes.length >= 12 && bytes[0] === 82 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 70 && bytes[8] === 87 && bytes[9] === 69 && bytes[10] === 66 && bytes[11] === 80) {
|
|
3426
|
-
return "image/webp";
|
|
3427
|
-
}
|
|
3428
|
-
return null;
|
|
3429
|
-
}
|
|
3430
3459
|
|
|
3431
3460
|
async function loop(opts) {
|
|
3432
3461
|
const logPath = logger.logFilePath;
|
|
@@ -8934,6 +8963,9 @@ async function runClaude(credentials, options = {}) {
|
|
|
8934
8963
|
lifecycleState: "running",
|
|
8935
8964
|
lifecycleStateSince: Date.now(),
|
|
8936
8965
|
flavor: "claude",
|
|
8966
|
+
// Advertise composer support before the first SDK response. Otherwise
|
|
8967
|
+
// a brand-new session cannot pick a PDF until after sending once.
|
|
8968
|
+
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
8937
8969
|
sandbox: sandboxConfig?.enabled ? sandboxConfig : null,
|
|
8938
8970
|
dangerouslySkipPermissions,
|
|
8939
8971
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
@@ -13212,7 +13244,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13212
13244
|
process.exit(0);
|
|
13213
13245
|
} else if (subcommand === "install-terminal-hooks") {
|
|
13214
13246
|
try {
|
|
13215
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-
|
|
13247
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-Do3vnipG.mjs');
|
|
13216
13248
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
13217
13249
|
if (command.action === "help") {
|
|
13218
13250
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -13229,7 +13261,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13229
13261
|
}
|
|
13230
13262
|
} else if (subcommand === "spawn") {
|
|
13231
13263
|
try {
|
|
13232
|
-
const { handleSpawnCommand } = await import('./spawn-
|
|
13264
|
+
const { handleSpawnCommand } = await import('./spawn-Dd8qj3l4.mjs');
|
|
13233
13265
|
await handleSpawnCommand(args.slice(1));
|
|
13234
13266
|
} catch (error) {
|
|
13235
13267
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13241,7 +13273,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13241
13273
|
return;
|
|
13242
13274
|
} else if (subcommand === "send") {
|
|
13243
13275
|
try {
|
|
13244
|
-
const { handleSendCommand } = await import('./send-
|
|
13276
|
+
const { handleSendCommand } = await import('./send-CIm5kZBx.mjs');
|
|
13245
13277
|
await handleSendCommand(args.slice(1));
|
|
13246
13278
|
} catch (error) {
|
|
13247
13279
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13347,9 +13379,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13347
13379
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
13348
13380
|
const projectId = args[3];
|
|
13349
13381
|
try {
|
|
13350
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
13351
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-
|
|
13352
|
-
const { ApiClient: ApiClient2 } = await import('./types-
|
|
13382
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-DRjtWNd0.mjs');
|
|
13383
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-C4duxyB7.mjs').then(function (n) { return n.af; });
|
|
13384
|
+
const { ApiClient: ApiClient2 } = await import('./types-C4duxyB7.mjs').then(function (n) { return n.ag; });
|
|
13353
13385
|
let userEmail = void 0;
|
|
13354
13386
|
try {
|
|
13355
13387
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -13380,7 +13412,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13380
13412
|
}
|
|
13381
13413
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
13382
13414
|
try {
|
|
13383
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
13415
|
+
const { readGeminiLocalConfig } = await import('./config-DRjtWNd0.mjs');
|
|
13384
13416
|
const config = readGeminiLocalConfig();
|
|
13385
13417
|
if (config.googleCloudProject) {
|
|
13386
13418
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -13420,7 +13452,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13420
13452
|
process.exit(0);
|
|
13421
13453
|
}
|
|
13422
13454
|
try {
|
|
13423
|
-
const { runGemini } = await import('./runGemini-
|
|
13455
|
+
const { runGemini } = await import('./runGemini-DQKPf1RX.mjs');
|
|
13424
13456
|
let startedBy = void 0;
|
|
13425
13457
|
for (let i = 1; i < args.length; i++) {
|
|
13426
13458
|
if (args[i] === "--started-by") {
|
|
@@ -13442,7 +13474,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13442
13474
|
return;
|
|
13443
13475
|
} else if (subcommand === "acp") {
|
|
13444
13476
|
try {
|
|
13445
|
-
const { runAcp, resolveAcpAgentConfig } = await import('./index-
|
|
13477
|
+
const { runAcp, resolveAcpAgentConfig } = await import('./index-1ZE940yd.mjs');
|
|
13446
13478
|
let startedBy = void 0;
|
|
13447
13479
|
let verbose = false;
|
|
13448
13480
|
const acpArgs = [];
|
|
@@ -13482,7 +13514,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13482
13514
|
return;
|
|
13483
13515
|
} else if (subcommand === "openclaw") {
|
|
13484
13516
|
try {
|
|
13485
|
-
const { runOpenClaw } = await import('./runOpenClaw-
|
|
13517
|
+
const { runOpenClaw } = await import('./runOpenClaw-BNfz77EE.mjs');
|
|
13486
13518
|
let startedBy = void 0;
|
|
13487
13519
|
let verbose = false;
|
|
13488
13520
|
let gatewayUrl;
|
|
@@ -13533,7 +13565,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13533
13565
|
return;
|
|
13534
13566
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
13535
13567
|
try {
|
|
13536
|
-
const { handleMcpCommand } = await import('./mcp-
|
|
13568
|
+
const { handleMcpCommand } = await import('./mcp-2Ee6mSAP.mjs');
|
|
13537
13569
|
await handleMcpCommand();
|
|
13538
13570
|
} catch (error) {
|
|
13539
13571
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -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-B7qS_-8e.cjs');
|
|
9
|
+
var index = require('./index-BTtTqsj4.cjs');
|
|
10
10
|
require('axios');
|
|
11
11
|
require('node:util');
|
|
12
12
|
require('node:fs/promises');
|
|
@@ -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-C4duxyB7.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-DZ7tAffg.mjs';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:util';
|
|
10
10
|
import 'node:fs/promises';
|
package/dist/lib.cjs
CHANGED
package/dist/lib.d.cts
CHANGED
|
@@ -427,6 +427,8 @@ type Metadata = {
|
|
|
427
427
|
status: string;
|
|
428
428
|
}>;
|
|
429
429
|
skills?: string[];
|
|
430
|
+
/** Attachment content blocks this daemon can forward to the active SDK. */
|
|
431
|
+
attachmentKinds?: string[];
|
|
430
432
|
homeDir: string;
|
|
431
433
|
happyHomeDir: string;
|
|
432
434
|
happyLibDir: string;
|
package/dist/lib.d.mts
CHANGED
|
@@ -427,6 +427,8 @@ type Metadata = {
|
|
|
427
427
|
status: string;
|
|
428
428
|
}>;
|
|
429
429
|
skills?: string[];
|
|
430
|
+
/** Attachment content blocks this daemon can forward to the active SDK. */
|
|
431
|
+
attachmentKinds?: string[];
|
|
430
432
|
homeDir: string;
|
|
431
433
|
happyHomeDir: string;
|
|
432
434
|
happyLibDir: string;
|
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-C4duxyB7.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-DZ7tAffg.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-C4duxyB7.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-BTtTqsj4.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types-
|
|
8
|
+
var persistence = require('./types-B7qS_-8e.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, i as readSettings, e as errorLogMetadata, j as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-
|
|
6
|
-
import { g as GEMINI_API_KEY_ENV, j as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, k as BaseReasoningProcessor, i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, l as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, r as registerKillSessionHandler, f as startHappyServer } from './index-
|
|
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, i as readSettings, e as errorLogMetadata, j as encodeBase64, p as projectPath, d as contentLogMetadata } from './types-C4duxyB7.mjs';
|
|
6
|
+
import { g as GEMINI_API_KEY_ENV, j as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, k as BaseReasoningProcessor, i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, l as MessageBuffer, C as CHANGE_TITLE_INSTRUCTION, r as registerKillSessionHandler, f as startHappyServer } from './index-DZ7tAffg.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-DMLCBDru.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DRjtWNd0.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-B7qS_-8e.cjs');
|
|
8
|
+
var index = require('./index-BTtTqsj4.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-DjHJfd8y.cjs');
|
|
10
|
+
var config = require('./config-BjgfmsPT.cjs');
|
|
11
11
|
require('axios');
|
|
12
12
|
require('chalk');
|
|
13
13
|
require('node:util');
|
|
@@ -3,9 +3,9 @@ import { execFileSync } from 'node:child_process';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { existsSync, readFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-
|
|
7
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
8
|
-
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-
|
|
6
|
+
import { k as ensurePrivateDirectorySync, m as hardenPrivateFileSync, w as writePrivateFileSync, e as errorLogMetadata, d as contentLogMetadata, h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, c as configuration } from './types-C4duxyB7.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-xyImjcMI.mjs';
|
|
8
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-DZ7tAffg.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-B7qS_-8e.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-Bd-LtS2E.cjs');
|
|
10
|
+
var index = require('./index-BTtTqsj4.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-C4duxyB7.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-DZ7tAffg.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-B7qS_-8e.cjs');
|
|
7
|
+
var index = require('./index-BTtTqsj4.cjs');
|
|
8
8
|
require('axios');
|
|
9
9
|
require('node:util');
|
|
10
10
|
require('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 index = require('./index-
|
|
7
|
-
var persistence = require('./types-
|
|
6
|
+
var index = require('./index-BTtTqsj4.cjs');
|
|
7
|
+
var persistence = require('./types-B7qS_-8e.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, 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, w as waitForSessionKey, b as sendUserMessage } from './index-DZ7tAffg.mjs';
|
|
5
|
+
import { l as logger } from './types-C4duxyB7.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.82";
|
|
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.82",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.82",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.82",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.82",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.82",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.82"
|
|
173
173
|
};
|
|
174
174
|
var devDependencies = {
|
|
175
175
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1480,7 +1480,7 @@ class RpcHandlerManager {
|
|
|
1480
1480
|
}
|
|
1481
1481
|
}
|
|
1482
1482
|
|
|
1483
|
-
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-
|
|
1483
|
+
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-B7qS_-8e.cjs', document.baseURI).href))));
|
|
1484
1484
|
function projectPath() {
|
|
1485
1485
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1486
1486
|
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.82";
|
|
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.82",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.82",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.82",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.82",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.82",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.82"
|
|
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.82",
|
|
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.82",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.82",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.82",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.82",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.82",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.82"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|