very-happy-cli 0.2.83 → 0.2.85
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-sS5ln9nS.cjs → AcpBackend-B1l_WyZy.cjs} +1 -1
- package/dist/{AcpBackend-DbS9-r10.mjs → AcpBackend-CDclNgxu.mjs} +1 -1
- package/dist/{AcpSessionManager-DuZN34yy.mjs → AcpSessionManager-PCdfo4gz.mjs} +1 -1
- package/dist/{AcpSessionManager-DX5IvruC.cjs → AcpSessionManager-dVX0uTo8.cjs} +1 -1
- package/dist/{config-BkxNWcwM.cjs → config-Ce5hbWlg.cjs} +2 -2
- package/dist/{config-3BOBElkv.mjs → config-DDsvmCxL.mjs} +2 -2
- package/dist/{index-08H6z21h.mjs → index-CCQ2mqkA.mjs} +5 -5
- package/dist/{index-BVlYjP10.cjs → index-DUcWAKZ0.cjs} +219 -79
- package/dist/{index-BDhR8Zbc.mjs → index-DVKieWPR.mjs} +218 -78
- package/dist/{index-fFNtiTSl.cjs → index-Syfrd3oP.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-C0X114sp.mjs → installTerminalHooks-BMTBsCfi.mjs} +2 -2
- package/dist/{installTerminalHooks-DC2wMq-X.cjs → installTerminalHooks-hcCRjxNy.cjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +6 -0
- package/dist/lib.d.mts +6 -0
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-B9UtB3lP.mjs → mcp-C2bERsV2.mjs} +2 -2
- package/dist/{mcp-CuDdOqST.cjs → mcp-DGHMyTt-.cjs} +2 -2
- package/dist/{runGemini-Cvww7ebI.mjs → runGemini-CUpp6u-S.mjs} +4 -4
- package/dist/{runGemini-Cqstl6qb.cjs → runGemini-U5JI6rsK.cjs} +4 -4
- package/dist/{runOpenClaw-BXmi-UcV.mjs → runOpenClaw-BHR7emaO.mjs} +3 -3
- package/dist/{runOpenClaw-CHu488uC.cjs → runOpenClaw-DJYiIMrs.cjs} +3 -3
- package/dist/{send-C6Uqkmxr.mjs → send-AIDeVBON.mjs} +2 -2
- package/dist/{send-C5dWPbV6.cjs → send-iDuDd7yC.cjs} +2 -2
- package/dist/{spawn-D8K3uJEp.mjs → spawn-DPz_3Q6B.mjs} +2 -2
- package/dist/{spawn-CZAHiPE6.cjs → spawn-Kklokpjz.cjs} +2 -2
- package/dist/{types-RASD9X96.mjs → types-CkUHjxKz.mjs} +20 -11
- package/dist/{types-sFcb_Sfz.cjs → types-DJGEti9c.cjs} +23 -11
- package/package.json +7 -7
|
@@ -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-DVKieWPR.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-CkUHjxKz.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-DUcWAKZ0.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types-
|
|
8
|
+
var persistence = require('./types-DJGEti9c.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-CkUHjxKz.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-DVKieWPR.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-CDclNgxu.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DDsvmCxL.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-DJGEti9c.cjs');
|
|
8
|
+
var index = require('./index-DUcWAKZ0.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-B1l_WyZy.cjs');
|
|
10
|
+
var config = require('./config-Ce5hbWlg.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-CkUHjxKz.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-PCdfo4gz.mjs';
|
|
8
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-DVKieWPR.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-DJGEti9c.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-dVX0uTo8.cjs');
|
|
10
|
+
var index = require('./index-DUcWAKZ0.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-CkUHjxKz.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-DVKieWPR.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-DJGEti9c.cjs');
|
|
7
|
+
var index = require('./index-DUcWAKZ0.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, 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-DVKieWPR.mjs';
|
|
5
|
+
import { l as logger } from './types-CkUHjxKz.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'cross-spawn';
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var persistence = require('./types-
|
|
6
|
+
var index = require('./index-DUcWAKZ0.cjs');
|
|
7
|
+
var persistence = require('./types-DJGEti9c.cjs');
|
|
8
8
|
require('node:os');
|
|
9
9
|
require('node:crypto');
|
|
10
10
|
require('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.85";
|
|
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.85",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.85",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.85",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.85",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.85",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.85"
|
|
151
151
|
};
|
|
152
152
|
var devDependencies = {
|
|
153
153
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -755,6 +755,8 @@ const MessageMetaSchema$1 = z.object({
|
|
|
755
755
|
appendSystemPrompt: z.string().nullable().optional(),
|
|
756
756
|
allowedTools: z.array(z.string()).nullable().optional(),
|
|
757
757
|
disallowedTools: z.array(z.string()).nullable().optional(),
|
|
758
|
+
/** Omitted/queue waits for the current turn; steer targets the live turn. */
|
|
759
|
+
delivery: z.enum(["queue", "steer"]).optional(),
|
|
758
760
|
displayText: z.string().optional()
|
|
759
761
|
});
|
|
760
762
|
const UserMessageSchema$1 = z.object({
|
|
@@ -1028,8 +1030,10 @@ const MessageMetaSchema = z$1.object({
|
|
|
1028
1030
|
// Append to system prompt for this message (null = reset)
|
|
1029
1031
|
allowedTools: z$1.array(z$1.string()).nullable().optional(),
|
|
1030
1032
|
// Allowed tools for this message (null = reset)
|
|
1031
|
-
disallowedTools: z$1.array(z$1.string()).nullable().optional()
|
|
1033
|
+
disallowedTools: z$1.array(z$1.string()).nullable().optional(),
|
|
1032
1034
|
// Disallowed tools for this message (null = reset)
|
|
1035
|
+
/** Omitted/queue waits for the current turn; steer targets the live turn. */
|
|
1036
|
+
delivery: z$1.enum(["queue", "steer"]).optional()
|
|
1033
1037
|
});
|
|
1034
1038
|
z$1.object({
|
|
1035
1039
|
session: z$1.object({
|
|
@@ -2645,7 +2649,7 @@ function mapClaudeLogMessageToSessionEnvelopesInternal(message, state) {
|
|
|
2645
2649
|
}
|
|
2646
2650
|
if (message.type === "result") {
|
|
2647
2651
|
const raw = message;
|
|
2648
|
-
const status = raw.is_error === true ? "failed" : "completed";
|
|
2652
|
+
const status = raw.interrupted === true ? "cancelled" : raw.is_error === true ? "failed" : "completed";
|
|
2649
2653
|
const error = status === "failed" ? raw.errors?.filter((item) => typeof item === "string" && item.trim()).join("\n") || state.pendingAssistantError || raw.subtype || "Claude turn failed" : void 0;
|
|
2650
2654
|
if (status === "failed" && !state.currentTurnId) {
|
|
2651
2655
|
ensureTurn(state, envelopes);
|
|
@@ -2779,6 +2783,10 @@ function usageAgentKey(agent) {
|
|
|
2779
2783
|
return agent.toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "") || "unknown";
|
|
2780
2784
|
}
|
|
2781
2785
|
|
|
2786
|
+
const MAX_CHAT_ATTACHMENT_SOURCE_BYTES = 50 * 1024 * 1024;
|
|
2787
|
+
const CHAT_ATTACHMENT_ENCRYPTION_OVERHEAD_BYTES = 40;
|
|
2788
|
+
const MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES = MAX_CHAT_ATTACHMENT_SOURCE_BYTES + CHAT_ATTACHMENT_ENCRYPTION_OVERHEAD_BYTES;
|
|
2789
|
+
|
|
2782
2790
|
class ApiSessionClient extends EventEmitter {
|
|
2783
2791
|
token;
|
|
2784
2792
|
sessionId;
|
|
@@ -3100,7 +3108,8 @@ class ApiSessionClient extends EventEmitter {
|
|
|
3100
3108
|
responseType: "arraybuffer",
|
|
3101
3109
|
timeout: 6e4,
|
|
3102
3110
|
maxRedirects: 5,
|
|
3103
|
-
maxContentLength:
|
|
3111
|
+
maxContentLength: MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES,
|
|
3112
|
+
maxBodyLength: MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES
|
|
3104
3113
|
});
|
|
3105
3114
|
return new Uint8Array(response.data);
|
|
3106
3115
|
}
|
|
@@ -15136,4 +15145,4 @@ const RawJSONLinesSchema = z$1.discriminatedUnion("type", [
|
|
|
15136
15145
|
}).passthrough()
|
|
15137
15146
|
]);
|
|
15138
15147
|
|
|
15139
|
-
export {
|
|
15148
|
+
export { summarizeSpawnSessionForLog as $, ApiClient as A, deriveLocalCliUpdateSummary as B, updateSettings as C, encodeBase64Url as D, decodeBase64 as E, writeCredentialsLegacy as F, writeCredentialsDataKey as G, readCredentialsForConfiguredRelay as H, InvalidateSync as I, encrypt as J, getLocalHappyAgentCredentialPath as K, readLocalHappyAgentCredentials as L, MAX_CHAT_ATTACHMENT_SOURCE_BYTES as M, decryptWithDataKey as N, decryptLegacy as O, extractCompleteLines as P, decideBackfill as Q, RawJSONLinesSchema as R, parseTerminalHookPayload as S, decideMirrorBinding as T, persistSession as U, MIRROR_BACKFILL_LINES_DEFAULT as V, mirrorLineKey as W, mirrorLocalId as X, detectResumeSupport as Y, detectCLIAvailability as Z, acquireDaemonLock as _, ApiSessionClient as a, deletePersistedSessions as a0, decrypt as a1, writeDaemonState as a2, fetchCliUpdateState as a3, resolveCliUpdateCheckInterval as a4, DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS as a5, releaseDaemonLock as a6, isValidSessionId as a7, listVhTerminals as a8, isValidTerminalId as a9, readVhTerminal as aa, sendToVhTerminal as ab, startOfflineReconnection as ac, clearCredentials as ad, clearMachineId as ae, SandboxConfigSchema as af, CodexAppServerClient as ag, getLatestDaemonLog as ah, persistence as ai, api as aj, createEnvelope as b, configuration as c, contentLogMetadata as d, errorLogMetadata as e, packageJson as f, delay as g, connectionState as h, readSettings as i, encodeBase64 as j, ensurePrivateDirectorySync as k, logger as l, hardenPrivateFileSync as m, readDaemonState as n, clearDaemonState as o, projectPath as p, getProjectPath as q, readPersistedSessions as r, initializeSandbox as s, wrapCommand as t, AsyncLock as u, ensurePrivateDirectory as v, writePrivateFileSync as w, hardenPrivateFile as x, readCredentials as y, credentialRelayProblem as z };
|
|
@@ -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.85";
|
|
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.85",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.85",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.85",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.85",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.85",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.85"
|
|
173
173
|
};
|
|
174
174
|
var devDependencies = {
|
|
175
175
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -777,6 +777,8 @@ const MessageMetaSchema$1 = z__namespace.object({
|
|
|
777
777
|
appendSystemPrompt: z__namespace.string().nullable().optional(),
|
|
778
778
|
allowedTools: z__namespace.array(z__namespace.string()).nullable().optional(),
|
|
779
779
|
disallowedTools: z__namespace.array(z__namespace.string()).nullable().optional(),
|
|
780
|
+
/** Omitted/queue waits for the current turn; steer targets the live turn. */
|
|
781
|
+
delivery: z__namespace.enum(["queue", "steer"]).optional(),
|
|
780
782
|
displayText: z__namespace.string().optional()
|
|
781
783
|
});
|
|
782
784
|
const UserMessageSchema$1 = z__namespace.object({
|
|
@@ -1050,8 +1052,10 @@ const MessageMetaSchema = z.z.object({
|
|
|
1050
1052
|
// Append to system prompt for this message (null = reset)
|
|
1051
1053
|
allowedTools: z.z.array(z.z.string()).nullable().optional(),
|
|
1052
1054
|
// Allowed tools for this message (null = reset)
|
|
1053
|
-
disallowedTools: z.z.array(z.z.string()).nullable().optional()
|
|
1055
|
+
disallowedTools: z.z.array(z.z.string()).nullable().optional(),
|
|
1054
1056
|
// Disallowed tools for this message (null = reset)
|
|
1057
|
+
/** Omitted/queue waits for the current turn; steer targets the live turn. */
|
|
1058
|
+
delivery: z.z.enum(["queue", "steer"]).optional()
|
|
1055
1059
|
});
|
|
1056
1060
|
z.z.object({
|
|
1057
1061
|
session: z.z.object({
|
|
@@ -1480,7 +1484,7 @@ class RpcHandlerManager {
|
|
|
1480
1484
|
}
|
|
1481
1485
|
}
|
|
1482
1486
|
|
|
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-
|
|
1487
|
+
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-DJGEti9c.cjs', document.baseURI).href))));
|
|
1484
1488
|
function projectPath() {
|
|
1485
1489
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1486
1490
|
return path;
|
|
@@ -2667,7 +2671,7 @@ function mapClaudeLogMessageToSessionEnvelopesInternal(message, state) {
|
|
|
2667
2671
|
}
|
|
2668
2672
|
if (message.type === "result") {
|
|
2669
2673
|
const raw = message;
|
|
2670
|
-
const status = raw.is_error === true ? "failed" : "completed";
|
|
2674
|
+
const status = raw.interrupted === true ? "cancelled" : raw.is_error === true ? "failed" : "completed";
|
|
2671
2675
|
const error = status === "failed" ? raw.errors?.filter((item) => typeof item === "string" && item.trim()).join("\n") || state.pendingAssistantError || raw.subtype || "Claude turn failed" : void 0;
|
|
2672
2676
|
if (status === "failed" && !state.currentTurnId) {
|
|
2673
2677
|
ensureTurn(state, envelopes);
|
|
@@ -2801,6 +2805,10 @@ function usageAgentKey(agent) {
|
|
|
2801
2805
|
return agent.toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "") || "unknown";
|
|
2802
2806
|
}
|
|
2803
2807
|
|
|
2808
|
+
const MAX_CHAT_ATTACHMENT_SOURCE_BYTES = 50 * 1024 * 1024;
|
|
2809
|
+
const CHAT_ATTACHMENT_ENCRYPTION_OVERHEAD_BYTES = 40;
|
|
2810
|
+
const MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES = MAX_CHAT_ATTACHMENT_SOURCE_BYTES + CHAT_ATTACHMENT_ENCRYPTION_OVERHEAD_BYTES;
|
|
2811
|
+
|
|
2804
2812
|
class ApiSessionClient extends node_events.EventEmitter {
|
|
2805
2813
|
token;
|
|
2806
2814
|
sessionId;
|
|
@@ -3122,7 +3130,8 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
3122
3130
|
responseType: "arraybuffer",
|
|
3123
3131
|
timeout: 6e4,
|
|
3124
3132
|
maxRedirects: 5,
|
|
3125
|
-
maxContentLength:
|
|
3133
|
+
maxContentLength: MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES,
|
|
3134
|
+
maxBodyLength: MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES
|
|
3126
3135
|
});
|
|
3127
3136
|
return new Uint8Array(response.data);
|
|
3128
3137
|
}
|
|
@@ -15164,6 +15173,7 @@ exports.AsyncLock = AsyncLock;
|
|
|
15164
15173
|
exports.CodexAppServerClient = CodexAppServerClient;
|
|
15165
15174
|
exports.DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS = DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS;
|
|
15166
15175
|
exports.InvalidateSync = InvalidateSync;
|
|
15176
|
+
exports.MAX_CHAT_ATTACHMENT_SOURCE_BYTES = MAX_CHAT_ATTACHMENT_SOURCE_BYTES;
|
|
15167
15177
|
exports.MIRROR_BACKFILL_LINES_DEFAULT = MIRROR_BACKFILL_LINES_DEFAULT;
|
|
15168
15178
|
exports.RawJSONLinesSchema = RawJSONLinesSchema;
|
|
15169
15179
|
exports.SandboxConfigSchema = SandboxConfigSchema;
|
|
@@ -15191,6 +15201,7 @@ exports.detectResumeSupport = detectResumeSupport;
|
|
|
15191
15201
|
exports.encodeBase64 = encodeBase64;
|
|
15192
15202
|
exports.encodeBase64Url = encodeBase64Url;
|
|
15193
15203
|
exports.encrypt = encrypt;
|
|
15204
|
+
exports.ensurePrivateDirectory = ensurePrivateDirectory;
|
|
15194
15205
|
exports.ensurePrivateDirectorySync = ensurePrivateDirectorySync;
|
|
15195
15206
|
exports.errorLogMetadata = errorLogMetadata;
|
|
15196
15207
|
exports.extractCompleteLines = extractCompleteLines;
|
|
@@ -15198,6 +15209,7 @@ exports.fetchCliUpdateState = fetchCliUpdateState;
|
|
|
15198
15209
|
exports.getLatestDaemonLog = getLatestDaemonLog;
|
|
15199
15210
|
exports.getLocalHappyAgentCredentialPath = getLocalHappyAgentCredentialPath;
|
|
15200
15211
|
exports.getProjectPath = getProjectPath;
|
|
15212
|
+
exports.hardenPrivateFile = hardenPrivateFile;
|
|
15201
15213
|
exports.hardenPrivateFileSync = hardenPrivateFileSync;
|
|
15202
15214
|
exports.initializeSandbox = initializeSandbox;
|
|
15203
15215
|
exports.isValidSessionId = isValidSessionId;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.85",
|
|
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.85",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.85",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.85",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.85",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.85",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.85"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|