very-happy-cli 0.2.82 → 0.2.83
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-DMLCBDru.mjs → AcpBackend-DbS9-r10.mjs} +1 -1
- package/dist/{AcpBackend-DjHJfd8y.cjs → AcpBackend-sS5ln9nS.cjs} +1 -1
- package/dist/{AcpSessionManager-Bd-LtS2E.cjs → AcpSessionManager-DX5IvruC.cjs} +1 -1
- package/dist/{AcpSessionManager-xyImjcMI.mjs → AcpSessionManager-DuZN34yy.mjs} +1 -1
- package/dist/{config-DRjtWNd0.mjs → config-3BOBElkv.mjs} +2 -2
- package/dist/{config-BjgfmsPT.cjs → config-BkxNWcwM.cjs} +2 -2
- package/dist/{index-1ZE940yd.mjs → index-08H6z21h.mjs} +5 -5
- package/dist/{index-DZ7tAffg.mjs → index-BDhR8Zbc.mjs} +46 -20
- package/dist/{index-BTtTqsj4.cjs → index-BVlYjP10.cjs} +49 -23
- package/dist/{index-CR24hlKJ.cjs → index-fFNtiTSl.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-Do3vnipG.mjs → installTerminalHooks-C0X114sp.mjs} +2 -2
- package/dist/{installTerminalHooks-DSfE4ui6.cjs → installTerminalHooks-DC2wMq-X.cjs} +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-2Ee6mSAP.mjs → mcp-B9UtB3lP.mjs} +2 -2
- package/dist/{mcp-CJHJEBto.cjs → mcp-CuDdOqST.cjs} +2 -2
- package/dist/{runGemini-Dj7g2-B_.cjs → runGemini-Cqstl6qb.cjs} +4 -4
- package/dist/{runGemini-DQKPf1RX.mjs → runGemini-Cvww7ebI.mjs} +4 -4
- package/dist/{runOpenClaw-BNfz77EE.mjs → runOpenClaw-BXmi-UcV.mjs} +3 -3
- package/dist/{runOpenClaw-BWAVwl3x.cjs → runOpenClaw-CHu488uC.cjs} +3 -3
- package/dist/{send-Cm28ijOj.cjs → send-C5dWPbV6.cjs} +2 -2
- package/dist/{send-CIm5kZBx.mjs → send-C6Uqkmxr.mjs} +2 -2
- package/dist/{spawn-BPgkpGXX.cjs → spawn-CZAHiPE6.cjs} +2 -2
- package/dist/{spawn-Dd8qj3l4.mjs → spawn-D8K3uJEp.mjs} +2 -2
- package/dist/{types-C4duxyB7.mjs → types-RASD9X96.mjs} +13 -12
- package/dist/{types-B7qS_-8e.cjs → types-sFcb_Sfz.cjs} +14 -13
- 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-RASD9X96.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-sFcb_Sfz.cjs');
|
|
7
7
|
|
|
8
8
|
const DEFAULT_TIMEOUTS = {
|
|
9
9
|
/** Default initialization timeout: 60 seconds */
|
|
@@ -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-RASD9X96.mjs';
|
|
6
|
+
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-BDhR8Zbc.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'chalk';
|
|
9
9
|
import 'node:util';
|
|
@@ -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-sFcb_Sfz.cjs');
|
|
8
|
+
var index = require('./index-BVlYjP10.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('chalk');
|
|
11
11
|
require('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-DbS9-r10.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-DbS9-r10.mjs';
|
|
3
|
+
import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-RASD9X96.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-DuZN34yy.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-BDhR8Zbc.mjs';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import '@agentclientprotocol/sdk';
|
|
10
10
|
import '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-RASD9X96.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';
|
|
@@ -3033,6 +3033,7 @@ function applyClaudeSdkMetadata(current, update) {
|
|
|
3033
3033
|
mcpServers: update.mcpServers,
|
|
3034
3034
|
skills: update.skills,
|
|
3035
3035
|
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
3036
|
+
queueCancellation: true,
|
|
3036
3037
|
...update.modelIsDefault && update.model ? { defaultModelCode: update.model } : {}
|
|
3037
3038
|
};
|
|
3038
3039
|
}
|
|
@@ -3531,7 +3532,7 @@ class MessageQueue2 {
|
|
|
3531
3532
|
* Push a message to the queue with a mode and an optional list of
|
|
3532
3533
|
* attachments that travel with this message.
|
|
3533
3534
|
*/
|
|
3534
|
-
push(message, mode, attachments) {
|
|
3535
|
+
push(message, mode, attachments, sourceId) {
|
|
3535
3536
|
if (this.closed) {
|
|
3536
3537
|
throw new Error("Cannot push to closed queue");
|
|
3537
3538
|
}
|
|
@@ -3542,7 +3543,8 @@ class MessageQueue2 {
|
|
|
3542
3543
|
mode,
|
|
3543
3544
|
modeHash,
|
|
3544
3545
|
isolate: false,
|
|
3545
|
-
attachments
|
|
3546
|
+
attachments,
|
|
3547
|
+
sourceId
|
|
3546
3548
|
});
|
|
3547
3549
|
if (this.onMessageHandler) {
|
|
3548
3550
|
this.onMessageHandler(message, mode);
|
|
@@ -3587,7 +3589,7 @@ class MessageQueue2 {
|
|
|
3587
3589
|
* Clears any pending messages and ensures this message is never batched with others.
|
|
3588
3590
|
* Used for special commands that require dedicated processing.
|
|
3589
3591
|
*/
|
|
3590
|
-
pushIsolateAndClear(message, mode, attachments) {
|
|
3592
|
+
pushIsolateAndClear(message, mode, attachments, sourceId) {
|
|
3591
3593
|
if (this.closed) {
|
|
3592
3594
|
throw new Error("Cannot push to closed queue");
|
|
3593
3595
|
}
|
|
@@ -3599,7 +3601,8 @@ class MessageQueue2 {
|
|
|
3599
3601
|
mode,
|
|
3600
3602
|
modeHash,
|
|
3601
3603
|
isolate: true,
|
|
3602
|
-
attachments
|
|
3604
|
+
attachments,
|
|
3605
|
+
sourceId
|
|
3603
3606
|
});
|
|
3604
3607
|
if (this.onMessageHandler) {
|
|
3605
3608
|
this.onMessageHandler(message, mode);
|
|
@@ -3671,6 +3674,21 @@ class MessageQueue2 {
|
|
|
3671
3674
|
size() {
|
|
3672
3675
|
return this.queue.length;
|
|
3673
3676
|
}
|
|
3677
|
+
/**
|
|
3678
|
+
* Remove one message that has not yet been collected by the agent loop.
|
|
3679
|
+
* Source id is authoritative. Exact-text fallback only covers items that
|
|
3680
|
+
* entered this live process before transport ids were introduced.
|
|
3681
|
+
*/
|
|
3682
|
+
cancelPending(sourceId, exactText) {
|
|
3683
|
+
let index = sourceId ? this.queue.findIndex((item) => item.sourceId === sourceId) : -1;
|
|
3684
|
+
if (index < 0 && exactText !== void 0) {
|
|
3685
|
+
index = this.queue.findIndex((item) => item.sourceId === void 0 && item.message === exactText);
|
|
3686
|
+
}
|
|
3687
|
+
if (index < 0) return false;
|
|
3688
|
+
this.queue.splice(index, 1);
|
|
3689
|
+
logger.debug(`[MessageQueue2] Cancelled pending item. Queue size: ${this.queue.length}`);
|
|
3690
|
+
return true;
|
|
3691
|
+
}
|
|
3674
3692
|
/**
|
|
3675
3693
|
* Wait for messages and return all messages with the same mode as a single string
|
|
3676
3694
|
* Returns { message: string, mode: T } or null if aborted/closed
|
|
@@ -8966,6 +8984,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
8966
8984
|
// Advertise composer support before the first SDK response. Otherwise
|
|
8967
8985
|
// a brand-new session cannot pick a PDF until after sending once.
|
|
8968
8986
|
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
8987
|
+
queueCancellation: true,
|
|
8969
8988
|
sandbox: sandboxConfig?.enabled ? sandboxConfig : null,
|
|
8970
8989
|
dangerouslySkipPermissions,
|
|
8971
8990
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
@@ -9069,7 +9088,8 @@ async function runClaude(credentials, options = {}) {
|
|
|
9069
9088
|
session.updateMetadata((meta) => ({
|
|
9070
9089
|
...meta,
|
|
9071
9090
|
lifecycleState: "running",
|
|
9072
|
-
archivedBy: void 0
|
|
9091
|
+
archivedBy: void 0,
|
|
9092
|
+
queueCancellation: true
|
|
9073
9093
|
}));
|
|
9074
9094
|
}
|
|
9075
9095
|
const forkClaudeSessionId = process.env.HAPPY_FORK_CLAUDE_SESSION_ID;
|
|
@@ -9194,6 +9214,12 @@ async function runClaude(credentials, options = {}) {
|
|
|
9194
9214
|
disallowedTools: mode.disallowedTools,
|
|
9195
9215
|
effort: mode.effort
|
|
9196
9216
|
}));
|
|
9217
|
+
session.rpcHandlerManager.registerHandler("cancelQueuedMessage", async (params) => ({
|
|
9218
|
+
removed: messageQueue.cancelPending(
|
|
9219
|
+
typeof params?.localKey === "string" ? params.localKey : void 0,
|
|
9220
|
+
typeof params?.text === "string" ? params.text : void 0
|
|
9221
|
+
)
|
|
9222
|
+
}));
|
|
9197
9223
|
let currentPermissionMode = initialPermissionMode;
|
|
9198
9224
|
let currentModel = options.model ?? DEFAULT_CLAUDE_MODEL;
|
|
9199
9225
|
let currentFallbackModel = void 0;
|
|
@@ -9336,7 +9362,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
9336
9362
|
disallowedTools: messageDisallowedTools,
|
|
9337
9363
|
effort: messageEffort
|
|
9338
9364
|
};
|
|
9339
|
-
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage);
|
|
9365
|
+
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage, message.localKey);
|
|
9340
9366
|
logger.debug("[start] /compact command pushed to queue:", {
|
|
9341
9367
|
...contentLogMetadata(message.content.text),
|
|
9342
9368
|
attachmentCount: attachmentsForThisMessage?.length ?? 0,
|
|
@@ -9356,7 +9382,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
9356
9382
|
disallowedTools: messageDisallowedTools,
|
|
9357
9383
|
effort: messageEffort
|
|
9358
9384
|
};
|
|
9359
|
-
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage);
|
|
9385
|
+
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage, message.localKey);
|
|
9360
9386
|
logger.debug("[start] /clear command pushed to queue:", {
|
|
9361
9387
|
...contentLogMetadata(message.content.text),
|
|
9362
9388
|
attachmentCount: attachmentsForThisMessage?.length ?? 0,
|
|
@@ -9412,7 +9438,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
9412
9438
|
disallowedTools: messageDisallowedTools,
|
|
9413
9439
|
effort: messageEffort
|
|
9414
9440
|
};
|
|
9415
|
-
messageQueue.push(message.content.text, enhancedMode, attachmentsForThisMessage);
|
|
9441
|
+
messageQueue.push(message.content.text, enhancedMode, attachmentsForThisMessage, message.localKey);
|
|
9416
9442
|
logger.debug("User message pushed to queue:", {
|
|
9417
9443
|
...contentLogMetadata(message.content.text),
|
|
9418
9444
|
attachmentCount: attachmentsForThisMessage?.length ?? 0,
|
|
@@ -13244,7 +13270,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13244
13270
|
process.exit(0);
|
|
13245
13271
|
} else if (subcommand === "install-terminal-hooks") {
|
|
13246
13272
|
try {
|
|
13247
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-
|
|
13273
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-C0X114sp.mjs');
|
|
13248
13274
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
13249
13275
|
if (command.action === "help") {
|
|
13250
13276
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -13261,7 +13287,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13261
13287
|
}
|
|
13262
13288
|
} else if (subcommand === "spawn") {
|
|
13263
13289
|
try {
|
|
13264
|
-
const { handleSpawnCommand } = await import('./spawn-
|
|
13290
|
+
const { handleSpawnCommand } = await import('./spawn-D8K3uJEp.mjs');
|
|
13265
13291
|
await handleSpawnCommand(args.slice(1));
|
|
13266
13292
|
} catch (error) {
|
|
13267
13293
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13273,7 +13299,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13273
13299
|
return;
|
|
13274
13300
|
} else if (subcommand === "send") {
|
|
13275
13301
|
try {
|
|
13276
|
-
const { handleSendCommand } = await import('./send-
|
|
13302
|
+
const { handleSendCommand } = await import('./send-C6Uqkmxr.mjs');
|
|
13277
13303
|
await handleSendCommand(args.slice(1));
|
|
13278
13304
|
} catch (error) {
|
|
13279
13305
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13379,9 +13405,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13379
13405
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
13380
13406
|
const projectId = args[3];
|
|
13381
13407
|
try {
|
|
13382
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
13383
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-
|
|
13384
|
-
const { ApiClient: ApiClient2 } = await import('./types-
|
|
13408
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-3BOBElkv.mjs');
|
|
13409
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-RASD9X96.mjs').then(function (n) { return n.af; });
|
|
13410
|
+
const { ApiClient: ApiClient2 } = await import('./types-RASD9X96.mjs').then(function (n) { return n.ag; });
|
|
13385
13411
|
let userEmail = void 0;
|
|
13386
13412
|
try {
|
|
13387
13413
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -13412,7 +13438,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13412
13438
|
}
|
|
13413
13439
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
13414
13440
|
try {
|
|
13415
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
13441
|
+
const { readGeminiLocalConfig } = await import('./config-3BOBElkv.mjs');
|
|
13416
13442
|
const config = readGeminiLocalConfig();
|
|
13417
13443
|
if (config.googleCloudProject) {
|
|
13418
13444
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -13452,7 +13478,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13452
13478
|
process.exit(0);
|
|
13453
13479
|
}
|
|
13454
13480
|
try {
|
|
13455
|
-
const { runGemini } = await import('./runGemini-
|
|
13481
|
+
const { runGemini } = await import('./runGemini-Cvww7ebI.mjs');
|
|
13456
13482
|
let startedBy = void 0;
|
|
13457
13483
|
for (let i = 1; i < args.length; i++) {
|
|
13458
13484
|
if (args[i] === "--started-by") {
|
|
@@ -13474,7 +13500,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13474
13500
|
return;
|
|
13475
13501
|
} else if (subcommand === "acp") {
|
|
13476
13502
|
try {
|
|
13477
|
-
const { runAcp, resolveAcpAgentConfig } = await import('./index-
|
|
13503
|
+
const { runAcp, resolveAcpAgentConfig } = await import('./index-08H6z21h.mjs');
|
|
13478
13504
|
let startedBy = void 0;
|
|
13479
13505
|
let verbose = false;
|
|
13480
13506
|
const acpArgs = [];
|
|
@@ -13514,7 +13540,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13514
13540
|
return;
|
|
13515
13541
|
} else if (subcommand === "openclaw") {
|
|
13516
13542
|
try {
|
|
13517
|
-
const { runOpenClaw } = await import('./runOpenClaw-
|
|
13543
|
+
const { runOpenClaw } = await import('./runOpenClaw-BXmi-UcV.mjs');
|
|
13518
13544
|
let startedBy = void 0;
|
|
13519
13545
|
let verbose = false;
|
|
13520
13546
|
let gatewayUrl;
|
|
@@ -13565,7 +13591,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13565
13591
|
return;
|
|
13566
13592
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
13567
13593
|
try {
|
|
13568
|
-
const { handleMcpCommand } = await import('./mcp-
|
|
13594
|
+
const { handleMcpCommand } = await import('./mcp-B9UtB3lP.mjs');
|
|
13569
13595
|
await handleMcpCommand();
|
|
13570
13596
|
} catch (error) {
|
|
13571
13597
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
|
@@ -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-sFcb_Sfz.cjs');
|
|
7
7
|
var spawn = require('cross-spawn');
|
|
8
8
|
var path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -3055,6 +3055,7 @@ function applyClaudeSdkMetadata(current, update) {
|
|
|
3055
3055
|
mcpServers: update.mcpServers,
|
|
3056
3056
|
skills: update.skills,
|
|
3057
3057
|
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
3058
|
+
queueCancellation: true,
|
|
3058
3059
|
...update.modelIsDefault && update.model ? { defaultModelCode: update.model } : {}
|
|
3059
3060
|
};
|
|
3060
3061
|
}
|
|
@@ -3553,7 +3554,7 @@ class MessageQueue2 {
|
|
|
3553
3554
|
* Push a message to the queue with a mode and an optional list of
|
|
3554
3555
|
* attachments that travel with this message.
|
|
3555
3556
|
*/
|
|
3556
|
-
push(message, mode, attachments) {
|
|
3557
|
+
push(message, mode, attachments, sourceId) {
|
|
3557
3558
|
if (this.closed) {
|
|
3558
3559
|
throw new Error("Cannot push to closed queue");
|
|
3559
3560
|
}
|
|
@@ -3564,7 +3565,8 @@ class MessageQueue2 {
|
|
|
3564
3565
|
mode,
|
|
3565
3566
|
modeHash,
|
|
3566
3567
|
isolate: false,
|
|
3567
|
-
attachments
|
|
3568
|
+
attachments,
|
|
3569
|
+
sourceId
|
|
3568
3570
|
});
|
|
3569
3571
|
if (this.onMessageHandler) {
|
|
3570
3572
|
this.onMessageHandler(message, mode);
|
|
@@ -3609,7 +3611,7 @@ class MessageQueue2 {
|
|
|
3609
3611
|
* Clears any pending messages and ensures this message is never batched with others.
|
|
3610
3612
|
* Used for special commands that require dedicated processing.
|
|
3611
3613
|
*/
|
|
3612
|
-
pushIsolateAndClear(message, mode, attachments) {
|
|
3614
|
+
pushIsolateAndClear(message, mode, attachments, sourceId) {
|
|
3613
3615
|
if (this.closed) {
|
|
3614
3616
|
throw new Error("Cannot push to closed queue");
|
|
3615
3617
|
}
|
|
@@ -3621,7 +3623,8 @@ class MessageQueue2 {
|
|
|
3621
3623
|
mode,
|
|
3622
3624
|
modeHash,
|
|
3623
3625
|
isolate: true,
|
|
3624
|
-
attachments
|
|
3626
|
+
attachments,
|
|
3627
|
+
sourceId
|
|
3625
3628
|
});
|
|
3626
3629
|
if (this.onMessageHandler) {
|
|
3627
3630
|
this.onMessageHandler(message, mode);
|
|
@@ -3693,6 +3696,21 @@ class MessageQueue2 {
|
|
|
3693
3696
|
size() {
|
|
3694
3697
|
return this.queue.length;
|
|
3695
3698
|
}
|
|
3699
|
+
/**
|
|
3700
|
+
* Remove one message that has not yet been collected by the agent loop.
|
|
3701
|
+
* Source id is authoritative. Exact-text fallback only covers items that
|
|
3702
|
+
* entered this live process before transport ids were introduced.
|
|
3703
|
+
*/
|
|
3704
|
+
cancelPending(sourceId, exactText) {
|
|
3705
|
+
let index = sourceId ? this.queue.findIndex((item) => item.sourceId === sourceId) : -1;
|
|
3706
|
+
if (index < 0 && exactText !== void 0) {
|
|
3707
|
+
index = this.queue.findIndex((item) => item.sourceId === void 0 && item.message === exactText);
|
|
3708
|
+
}
|
|
3709
|
+
if (index < 0) return false;
|
|
3710
|
+
this.queue.splice(index, 1);
|
|
3711
|
+
persistence.logger.debug(`[MessageQueue2] Cancelled pending item. Queue size: ${this.queue.length}`);
|
|
3712
|
+
return true;
|
|
3713
|
+
}
|
|
3696
3714
|
/**
|
|
3697
3715
|
* Wait for messages and return all messages with the same mode as a single string
|
|
3698
3716
|
* Returns { message: string, mode: T } or null if aborted/closed
|
|
@@ -8532,7 +8550,7 @@ const MAX_TITLE_CHARS = 60;
|
|
|
8532
8550
|
const GENERATION_TIMEOUT_MS = 3e4;
|
|
8533
8551
|
function resolveClaudeBinary() {
|
|
8534
8552
|
try {
|
|
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-
|
|
8553
|
+
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-BVlYjP10.cjs', document.baseURI).href)));
|
|
8536
8554
|
const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
|
|
8537
8555
|
const { getClaudeCliPath } = require$1(utilsPath);
|
|
8538
8556
|
const path$1 = getClaudeCliPath();
|
|
@@ -8988,6 +9006,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
8988
9006
|
// Advertise composer support before the first SDK response. Otherwise
|
|
8989
9007
|
// a brand-new session cannot pick a PDF until after sending once.
|
|
8990
9008
|
attachmentKinds: [...CLAUDE_ATTACHMENT_KINDS],
|
|
9009
|
+
queueCancellation: true,
|
|
8991
9010
|
sandbox: sandboxConfig?.enabled ? sandboxConfig : null,
|
|
8992
9011
|
dangerouslySkipPermissions,
|
|
8993
9012
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
@@ -9091,7 +9110,8 @@ async function runClaude(credentials, options = {}) {
|
|
|
9091
9110
|
session.updateMetadata((meta) => ({
|
|
9092
9111
|
...meta,
|
|
9093
9112
|
lifecycleState: "running",
|
|
9094
|
-
archivedBy: void 0
|
|
9113
|
+
archivedBy: void 0,
|
|
9114
|
+
queueCancellation: true
|
|
9095
9115
|
}));
|
|
9096
9116
|
}
|
|
9097
9117
|
const forkClaudeSessionId = process.env.HAPPY_FORK_CLAUDE_SESSION_ID;
|
|
@@ -9216,6 +9236,12 @@ async function runClaude(credentials, options = {}) {
|
|
|
9216
9236
|
disallowedTools: mode.disallowedTools,
|
|
9217
9237
|
effort: mode.effort
|
|
9218
9238
|
}));
|
|
9239
|
+
session.rpcHandlerManager.registerHandler("cancelQueuedMessage", async (params) => ({
|
|
9240
|
+
removed: messageQueue.cancelPending(
|
|
9241
|
+
typeof params?.localKey === "string" ? params.localKey : void 0,
|
|
9242
|
+
typeof params?.text === "string" ? params.text : void 0
|
|
9243
|
+
)
|
|
9244
|
+
}));
|
|
9219
9245
|
let currentPermissionMode = initialPermissionMode;
|
|
9220
9246
|
let currentModel = options.model ?? DEFAULT_CLAUDE_MODEL;
|
|
9221
9247
|
let currentFallbackModel = void 0;
|
|
@@ -9358,7 +9384,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
9358
9384
|
disallowedTools: messageDisallowedTools,
|
|
9359
9385
|
effort: messageEffort
|
|
9360
9386
|
};
|
|
9361
|
-
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage);
|
|
9387
|
+
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage, message.localKey);
|
|
9362
9388
|
persistence.logger.debug("[start] /compact command pushed to queue:", {
|
|
9363
9389
|
...persistence.contentLogMetadata(message.content.text),
|
|
9364
9390
|
attachmentCount: attachmentsForThisMessage?.length ?? 0,
|
|
@@ -9378,7 +9404,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
9378
9404
|
disallowedTools: messageDisallowedTools,
|
|
9379
9405
|
effort: messageEffort
|
|
9380
9406
|
};
|
|
9381
|
-
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage);
|
|
9407
|
+
messageQueue.pushIsolateAndClear(specialCommand.originalMessage || message.content.text, enhancedMode2, attachmentsForThisMessage, message.localKey);
|
|
9382
9408
|
persistence.logger.debug("[start] /clear command pushed to queue:", {
|
|
9383
9409
|
...persistence.contentLogMetadata(message.content.text),
|
|
9384
9410
|
attachmentCount: attachmentsForThisMessage?.length ?? 0,
|
|
@@ -9434,7 +9460,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
9434
9460
|
disallowedTools: messageDisallowedTools,
|
|
9435
9461
|
effort: messageEffort
|
|
9436
9462
|
};
|
|
9437
|
-
messageQueue.push(message.content.text, enhancedMode, attachmentsForThisMessage);
|
|
9463
|
+
messageQueue.push(message.content.text, enhancedMode, attachmentsForThisMessage, message.localKey);
|
|
9438
9464
|
persistence.logger.debug("User message pushed to queue:", {
|
|
9439
9465
|
...persistence.contentLogMetadata(message.content.text),
|
|
9440
9466
|
attachmentCount: attachmentsForThisMessage?.length ?? 0,
|
|
@@ -10652,9 +10678,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
|
|
|
10652
10678
|
};
|
|
10653
10679
|
}
|
|
10654
10680
|
|
|
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-
|
|
10681
|
+
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-BVlYjP10.cjs', document.baseURI).href)));
|
|
10656
10682
|
const __dirname$1 = path.dirname(__filename$1);
|
|
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-
|
|
10683
|
+
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-BVlYjP10.cjs', document.baseURI).href)));
|
|
10658
10684
|
const PRISMA_QUERY_ENGINE_FILES = {
|
|
10659
10685
|
"arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
|
|
10660
10686
|
"x64-darwin": "libquery_engine-darwin.dylib.node",
|
|
@@ -13266,7 +13292,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13266
13292
|
process.exit(0);
|
|
13267
13293
|
} else if (subcommand === "install-terminal-hooks") {
|
|
13268
13294
|
try {
|
|
13269
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-
|
|
13295
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-DC2wMq-X.cjs'); });
|
|
13270
13296
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
13271
13297
|
if (command.action === "help") {
|
|
13272
13298
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -13283,7 +13309,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13283
13309
|
}
|
|
13284
13310
|
} else if (subcommand === "spawn") {
|
|
13285
13311
|
try {
|
|
13286
|
-
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-
|
|
13312
|
+
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-CZAHiPE6.cjs'); });
|
|
13287
13313
|
await handleSpawnCommand(args.slice(1));
|
|
13288
13314
|
} catch (error) {
|
|
13289
13315
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13295,7 +13321,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13295
13321
|
return;
|
|
13296
13322
|
} else if (subcommand === "send") {
|
|
13297
13323
|
try {
|
|
13298
|
-
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-
|
|
13324
|
+
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-C5dWPbV6.cjs'); });
|
|
13299
13325
|
await handleSendCommand(args.slice(1));
|
|
13300
13326
|
} catch (error) {
|
|
13301
13327
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -13401,9 +13427,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13401
13427
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
13402
13428
|
const projectId = args[3];
|
|
13403
13429
|
try {
|
|
13404
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
13405
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-
|
|
13406
|
-
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-
|
|
13430
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-BkxNWcwM.cjs'); });
|
|
13431
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-sFcb_Sfz.cjs'); }).then(function (n) { return n.persistence; });
|
|
13432
|
+
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-sFcb_Sfz.cjs'); }).then(function (n) { return n.api; });
|
|
13407
13433
|
let userEmail = void 0;
|
|
13408
13434
|
try {
|
|
13409
13435
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -13434,7 +13460,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13434
13460
|
}
|
|
13435
13461
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
13436
13462
|
try {
|
|
13437
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
13463
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-BkxNWcwM.cjs'); });
|
|
13438
13464
|
const config = readGeminiLocalConfig();
|
|
13439
13465
|
if (config.googleCloudProject) {
|
|
13440
13466
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -13474,7 +13500,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13474
13500
|
process.exit(0);
|
|
13475
13501
|
}
|
|
13476
13502
|
try {
|
|
13477
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
13503
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-Cqstl6qb.cjs'); });
|
|
13478
13504
|
let startedBy = void 0;
|
|
13479
13505
|
for (let i = 1; i < args.length; i++) {
|
|
13480
13506
|
if (args[i] === "--started-by") {
|
|
@@ -13496,7 +13522,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13496
13522
|
return;
|
|
13497
13523
|
} else if (subcommand === "acp") {
|
|
13498
13524
|
try {
|
|
13499
|
-
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-
|
|
13525
|
+
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-fFNtiTSl.cjs'); });
|
|
13500
13526
|
let startedBy = void 0;
|
|
13501
13527
|
let verbose = false;
|
|
13502
13528
|
const acpArgs = [];
|
|
@@ -13536,7 +13562,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13536
13562
|
return;
|
|
13537
13563
|
} else if (subcommand === "openclaw") {
|
|
13538
13564
|
try {
|
|
13539
|
-
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-
|
|
13565
|
+
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-CHu488uC.cjs'); });
|
|
13540
13566
|
let startedBy = void 0;
|
|
13541
13567
|
let verbose = false;
|
|
13542
13568
|
let gatewayUrl;
|
|
@@ -13587,7 +13613,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
13587
13613
|
return;
|
|
13588
13614
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
13589
13615
|
try {
|
|
13590
|
-
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-
|
|
13616
|
+
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-CuDdOqST.cjs'); });
|
|
13591
13617
|
await handleMcpCommand();
|
|
13592
13618
|
} catch (error) {
|
|
13593
13619
|
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-sS5ln9nS.cjs');
|
|
4
|
+
var persistence = require('./types-sFcb_Sfz.cjs');
|
|
5
|
+
var AcpSessionManager = require('./AcpSessionManager-DX5IvruC.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-BVlYjP10.cjs');
|
|
9
9
|
require('node:child_process');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
|
11
11
|
require('axios');
|
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-RASD9X96.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-BDhR8Zbc.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-sFcb_Sfz.cjs');
|
|
9
|
+
var index = require('./index-BVlYjP10.cjs');
|
|
10
10
|
require('axios');
|
|
11
11
|
require('node:util');
|
|
12
12
|
require('node:fs/promises');
|
package/dist/lib.cjs
CHANGED
package/dist/lib.d.cts
CHANGED
|
@@ -429,6 +429,8 @@ type Metadata = {
|
|
|
429
429
|
skills?: string[];
|
|
430
430
|
/** Attachment content blocks this daemon can forward to the active SDK. */
|
|
431
431
|
attachmentKinds?: string[];
|
|
432
|
+
/** Pending user messages can be canceled by stable transport id. */
|
|
433
|
+
queueCancellation?: boolean;
|
|
432
434
|
homeDir: string;
|
|
433
435
|
happyHomeDir: string;
|
|
434
436
|
happyLibDir: string;
|
package/dist/lib.d.mts
CHANGED
|
@@ -429,6 +429,8 @@ type Metadata = {
|
|
|
429
429
|
skills?: string[];
|
|
430
430
|
/** Attachment content blocks this daemon can forward to the active SDK. */
|
|
431
431
|
attachmentKinds?: string[];
|
|
432
|
+
/** Pending user messages can be canceled by stable transport id. */
|
|
433
|
+
queueCancellation?: boolean;
|
|
432
434
|
homeDir: string;
|
|
433
435
|
happyHomeDir: string;
|
|
434
436
|
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-RASD9X96.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-BDhR8Zbc.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-RASD9X96.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-BVlYjP10.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types-
|
|
8
|
+
var persistence = require('./types-sFcb_Sfz.cjs');
|
|
9
9
|
require('chalk');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('node:crypto');
|
|
@@ -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-sFcb_Sfz.cjs');
|
|
8
|
+
var index = require('./index-BVlYjP10.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-sS5ln9nS.cjs');
|
|
10
|
+
var config = require('./config-BkxNWcwM.cjs');
|
|
11
11
|
require('axios');
|
|
12
12
|
require('chalk');
|
|
13
13
|
require('node:util');
|
|
@@ -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-RASD9X96.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-BDhR8Zbc.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-DbS9-r10.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-3BOBElkv.mjs';
|
|
9
9
|
import 'axios';
|
|
10
10
|
import 'chalk';
|
|
11
11
|
import '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-RASD9X96.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-DuZN34yy.mjs';
|
|
8
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-BDhR8Zbc.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-sFcb_Sfz.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-DX5IvruC.cjs');
|
|
10
|
+
var index = require('./index-BVlYjP10.cjs');
|
|
11
11
|
var WebSocket = require('ws');
|
|
12
12
|
var ed = require('@noble/ed25519');
|
|
13
13
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var persistence = require('./types-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./types-sFcb_Sfz.cjs');
|
|
7
|
+
var index = require('./index-BVlYjP10.cjs');
|
|
8
8
|
require('axios');
|
|
9
9
|
require('node:util');
|
|
10
10
|
require('node:os');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { r as readPersistedSessions, c as configuration } from './types-
|
|
5
|
-
import { b as sendUserMessage, a as sessionWebUrl } from './index-
|
|
4
|
+
import { r as readPersistedSessions, c as configuration } from './types-RASD9X96.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-BDhR8Zbc.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 index = require('./index-
|
|
7
|
-
var persistence = require('./types-
|
|
6
|
+
var index = require('./index-BVlYjP10.cjs');
|
|
7
|
+
var persistence = require('./types-sFcb_Sfz.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-BDhR8Zbc.mjs';
|
|
5
|
+
import { l as logger } from './types-RASD9X96.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'cross-spawn';
|
|
@@ -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.83";
|
|
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.83",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.83",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.83",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.83",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.83",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.83"
|
|
151
151
|
};
|
|
152
152
|
var devDependencies = {
|
|
153
153
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -2915,7 +2915,7 @@ class ApiSessionClient extends EventEmitter {
|
|
|
2915
2915
|
}
|
|
2916
2916
|
const body = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(data.body.message.content.c));
|
|
2917
2917
|
logger.debugLargeJson("[SOCKET] [UPDATE] Received update:", body);
|
|
2918
|
-
this.routeIncomingMessage(body);
|
|
2918
|
+
this.routeIncomingMessage(body, localId);
|
|
2919
2919
|
if (localId) this.rememberRoutedInbound(localId);
|
|
2920
2920
|
this.lastSeq = messageSeq;
|
|
2921
2921
|
} else if (data.body.t === "update-session") {
|
|
@@ -3143,8 +3143,9 @@ class ApiSessionClient extends EventEmitter {
|
|
|
3143
3143
|
"X-Happy-Client": `cli-coding-session/${configuration.currentCliVersion}`
|
|
3144
3144
|
};
|
|
3145
3145
|
}
|
|
3146
|
-
routeIncomingMessage(message) {
|
|
3147
|
-
const
|
|
3146
|
+
routeIncomingMessage(message, sourceLocalId) {
|
|
3147
|
+
const messageWithSource = sourceLocalId && typeof message === "object" && message !== null ? { ...message, localKey: message.localKey ?? sourceLocalId } : message;
|
|
3148
|
+
const userResult = UserMessageSchema.safeParse(messageWithSource);
|
|
3148
3149
|
if (userResult.success) {
|
|
3149
3150
|
if (this.pendingMessageCallback) {
|
|
3150
3151
|
this.pendingMessageCallback(userResult.data);
|
|
@@ -3199,7 +3200,7 @@ class ApiSessionClient extends EventEmitter {
|
|
|
3199
3200
|
}
|
|
3200
3201
|
try {
|
|
3201
3202
|
const body = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(message.content.c));
|
|
3202
|
-
this.routeIncomingMessage(body);
|
|
3203
|
+
this.routeIncomingMessage(body, message.localId);
|
|
3203
3204
|
if (message.localId) this.rememberRoutedInbound(message.localId);
|
|
3204
3205
|
} catch (error) {
|
|
3205
3206
|
logger.debug("[API] Failed to decrypt fetched message", {
|
|
@@ -3319,7 +3320,7 @@ class ApiSessionClient extends EventEmitter {
|
|
|
3319
3320
|
for (const item of batch) {
|
|
3320
3321
|
if (this.routedInboundLocalIds.has(item.localId)) continue;
|
|
3321
3322
|
const body = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(item.content));
|
|
3322
|
-
this.routeIncomingMessage(body);
|
|
3323
|
+
this.routeIncomingMessage(body, item.localId);
|
|
3323
3324
|
this.rememberRoutedInbound(item.localId);
|
|
3324
3325
|
}
|
|
3325
3326
|
callback({ ok: true, messages: stored });
|
|
@@ -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.83";
|
|
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.83",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.83",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.83",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.83",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.83",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.83"
|
|
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-sFcb_Sfz.cjs', document.baseURI).href))));
|
|
1484
1484
|
function projectPath() {
|
|
1485
1485
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1486
1486
|
return path;
|
|
@@ -2937,7 +2937,7 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
2937
2937
|
}
|
|
2938
2938
|
const body = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(data.body.message.content.c));
|
|
2939
2939
|
logger.debugLargeJson("[SOCKET] [UPDATE] Received update:", body);
|
|
2940
|
-
this.routeIncomingMessage(body);
|
|
2940
|
+
this.routeIncomingMessage(body, localId);
|
|
2941
2941
|
if (localId) this.rememberRoutedInbound(localId);
|
|
2942
2942
|
this.lastSeq = messageSeq;
|
|
2943
2943
|
} else if (data.body.t === "update-session") {
|
|
@@ -3165,8 +3165,9 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
3165
3165
|
"X-Happy-Client": `cli-coding-session/${configuration.currentCliVersion}`
|
|
3166
3166
|
};
|
|
3167
3167
|
}
|
|
3168
|
-
routeIncomingMessage(message) {
|
|
3169
|
-
const
|
|
3168
|
+
routeIncomingMessage(message, sourceLocalId) {
|
|
3169
|
+
const messageWithSource = sourceLocalId && typeof message === "object" && message !== null ? { ...message, localKey: message.localKey ?? sourceLocalId } : message;
|
|
3170
|
+
const userResult = UserMessageSchema.safeParse(messageWithSource);
|
|
3170
3171
|
if (userResult.success) {
|
|
3171
3172
|
if (this.pendingMessageCallback) {
|
|
3172
3173
|
this.pendingMessageCallback(userResult.data);
|
|
@@ -3221,7 +3222,7 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
3221
3222
|
}
|
|
3222
3223
|
try {
|
|
3223
3224
|
const body = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(message.content.c));
|
|
3224
|
-
this.routeIncomingMessage(body);
|
|
3225
|
+
this.routeIncomingMessage(body, message.localId);
|
|
3225
3226
|
if (message.localId) this.rememberRoutedInbound(message.localId);
|
|
3226
3227
|
} catch (error) {
|
|
3227
3228
|
logger.debug("[API] Failed to decrypt fetched message", {
|
|
@@ -3341,7 +3342,7 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
3341
3342
|
for (const item of batch) {
|
|
3342
3343
|
if (this.routedInboundLocalIds.has(item.localId)) continue;
|
|
3343
3344
|
const body = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(item.content));
|
|
3344
|
-
this.routeIncomingMessage(body);
|
|
3345
|
+
this.routeIncomingMessage(body, item.localId);
|
|
3345
3346
|
this.rememberRoutedInbound(item.localId);
|
|
3346
3347
|
}
|
|
3347
3348
|
callback({ ok: true, messages: stored });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.83",
|
|
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.83",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.83",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.83",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.83",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.83",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.83"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|