very-happy-cli 0.2.104 → 0.2.106
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-DDGfk3HJ.cjs → AcpBackend-DMmvLNNM.cjs} +1 -1
- package/dist/{AcpBackend-De4iQ_JG.mjs → AcpBackend-Ux5FD_6F.mjs} +1 -1
- package/dist/{AcpSessionManager-DRzAgHtT.mjs → AcpSessionManager-C1hoU_rK.mjs} +1 -1
- package/dist/{AcpSessionManager-Cdv6Xgwy.cjs → AcpSessionManager-RYkxYWDn.cjs} +1 -1
- package/dist/{config-E3KdWyaQ.mjs → config-DAb5saOC.mjs} +2 -2
- package/dist/{config-CqM5UxVd.cjs → config-Dkn5KcXp.cjs} +2 -2
- package/dist/{index-CX_3uUem.cjs → index-BLW-smJu.cjs} +209 -71
- package/dist/{index--TiLl7-A.mjs → index-CgWdwkhB.mjs} +205 -67
- package/dist/{index-C_dmtMJ6.mjs → index-D2ZzPm58.mjs} +5 -5
- package/dist/{index-De6H3U0N.cjs → index-D48mWUTN.cjs} +2 -2
- package/dist/{index-Bzj1XdPx.mjs → index-DCpgRGWy.mjs} +2 -2
- package/dist/{index-fuavV8uc.cjs → index-Do3JnAi7.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-BXMBwrvq.cjs → installTerminalHooks-9rn15uP8.cjs} +2 -2
- package/dist/{installTerminalHooks-DV0e8-V3.mjs → installTerminalHooks-l1B-nbWa.mjs} +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-Cq3On_Qo.cjs → mcp-C3zpbx-m.cjs} +2 -2
- package/dist/{mcp-DFS9Zohz.mjs → mcp-ZvHzv_lJ.mjs} +2 -2
- package/dist/{runGemini-BFjtlkZI.mjs → runGemini-0QqaFN1l.mjs} +4 -4
- package/dist/{runGemini-DFvjh8cO.cjs → runGemini-q20IdxQV.cjs} +4 -4
- package/dist/{runOpenClaw-BFYj1F4u.mjs → runOpenClaw-C6Z6MLHq.mjs} +3 -3
- package/dist/{runOpenClaw-B5Og1FED.cjs → runOpenClaw-CtWkyvDJ.cjs} +3 -3
- package/dist/{send-Bog0YPxo.cjs → send-B8YQyV3D.cjs} +2 -2
- package/dist/{send-B666yos0.mjs → send-DEhUWg8v.mjs} +2 -2
- package/dist/{spawn-DrqvVoNF.mjs → spawn-BzbPyTHU.mjs} +2 -2
- package/dist/{spawn-BSdMkMPX.cjs → spawn-ChmlP1Z_.cjs} +2 -2
- package/dist/{types-14LATr9X.cjs → types-C8-WODFE.cjs} +24 -10
- package/dist/{types-D9LyZitb.mjs → types-lSeHEzPR.mjs} +23 -9
- package/package.json +7 -7
package/dist/lib.d.mts
CHANGED
|
@@ -444,6 +444,7 @@ declare const UserMessageSchema: z$1.ZodObject<{
|
|
|
444
444
|
appendSystemPrompt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
|
|
445
445
|
allowedTools: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodArray<z$1.ZodString>>>;
|
|
446
446
|
disallowedTools: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodArray<z$1.ZodString>>>;
|
|
447
|
+
effort: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
|
|
447
448
|
delivery: z$1.ZodOptional<z$1.ZodEnum<{
|
|
448
449
|
queue: "queue";
|
|
449
450
|
steer: "steer";
|
|
@@ -1001,6 +1002,11 @@ interface SpawnSessionOptions {
|
|
|
1001
1002
|
* metadata so the import picker hides it. Old daemons ignore the field.
|
|
1002
1003
|
*/
|
|
1003
1004
|
importedFromClaudeSessionId?: string;
|
|
1005
|
+
/**
|
|
1006
|
+
* B-294: title to stamp on the imported session's metadata (the source
|
|
1007
|
+
* conversation's summary / first prompt). Sanitized daemon-side.
|
|
1008
|
+
*/
|
|
1009
|
+
importTitle?: string;
|
|
1004
1010
|
/**
|
|
1005
1011
|
* B-051: spawn the machine's assistant (meta-agent) session. The daemon
|
|
1006
1012
|
* forces cwd to ~/.happy/assistant (the passed `directory` is ignored),
|
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-lSeHEzPR.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'node:util';
|
|
@@ -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-BLW-smJu.cjs');
|
|
7
7
|
var limits = require('./limits-KdWKmwtH.cjs');
|
|
8
|
-
var persistence = require('./types-
|
|
8
|
+
var persistence = require('./types-C8-WODFE.cjs');
|
|
9
9
|
require('chalk');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('node:crypto');
|
|
@@ -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-CgWdwkhB.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-lSeHEzPR.mjs';
|
|
7
7
|
import 'chalk';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import '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-lSeHEzPR.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-CgWdwkhB.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-Ux5FD_6F.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DAb5saOC.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-C8-WODFE.cjs');
|
|
8
|
+
var index = require('./index-BLW-smJu.cjs');
|
|
9
|
+
var AcpBackend = require('./AcpBackend-DMmvLNNM.cjs');
|
|
10
|
+
var config = require('./config-Dkn5KcXp.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-lSeHEzPR.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-C1hoU_rK.mjs';
|
|
8
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-CgWdwkhB.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-C8-WODFE.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-RYkxYWDn.cjs');
|
|
10
|
+
var index = require('./index-BLW-smJu.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-C8-WODFE.cjs');
|
|
7
|
+
var index = require('./index-BLW-smJu.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-lSeHEzPR.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-CgWdwkhB.mjs';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:util';
|
|
8
8
|
import '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-CgWdwkhB.mjs';
|
|
5
|
+
import { l as logger } from './types-lSeHEzPR.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-BLW-smJu.cjs');
|
|
7
|
+
var persistence = require('./types-C8-WODFE.cjs');
|
|
8
8
|
require('node:os');
|
|
9
9
|
require('node:crypto');
|
|
10
10
|
require('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.106";
|
|
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.106",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.106",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.106",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.106",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.106",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.106"
|
|
173
173
|
};
|
|
174
174
|
var devDependencies = {
|
|
175
175
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1164,6 +1164,15 @@ const MessageMetaSchema = z.z.object({
|
|
|
1164
1164
|
// Allowed tools for this message (null = reset)
|
|
1165
1165
|
disallowedTools: z.z.array(z.z.string()).nullable().optional(),
|
|
1166
1166
|
// Disallowed tools for this message (null = reset)
|
|
1167
|
+
/**
|
|
1168
|
+
* Thinking depth for this message (null = reset to the machine default).
|
|
1169
|
+
* Deliberately a plain string, not an enum: an unknown value must not make
|
|
1170
|
+
* zod reject the WHOLE message the way the `dontAsk` permission enum did
|
|
1171
|
+
* (AGENTS 铁律 14). runClaude validates it against its own allow-list and
|
|
1172
|
+
* ignores anything else. Absent here until 0.2.105, which is why every
|
|
1173
|
+
* released CLI silently dropped the web's effort selection.
|
|
1174
|
+
*/
|
|
1175
|
+
effort: z.z.string().nullable().optional(),
|
|
1167
1176
|
/** Omitted/queue waits for the current turn; steer targets the live turn. */
|
|
1168
1177
|
delivery: z.z.enum(["queue", "steer"]).optional()
|
|
1169
1178
|
});
|
|
@@ -1594,7 +1603,7 @@ class RpcHandlerManager {
|
|
|
1594
1603
|
}
|
|
1595
1604
|
}
|
|
1596
1605
|
|
|
1597
|
-
const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-
|
|
1606
|
+
const __dirname$1 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-C8-WODFE.cjs', document.baseURI).href))));
|
|
1598
1607
|
function projectPath() {
|
|
1599
1608
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1600
1609
|
return path;
|
|
@@ -14412,7 +14421,7 @@ class ApiMachineClient {
|
|
|
14412
14421
|
}
|
|
14413
14422
|
});
|
|
14414
14423
|
this.rpcHandlerManager.registerHandler("claude-import-session", async (params) => {
|
|
14415
|
-
const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode } = params || {};
|
|
14424
|
+
const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode, title } = params || {};
|
|
14416
14425
|
if (typeof directory !== "string" || directory.length === 0) {
|
|
14417
14426
|
throw new Error("directory is required");
|
|
14418
14427
|
}
|
|
@@ -14438,7 +14447,12 @@ class ApiMachineClient {
|
|
|
14438
14447
|
agent: "claude",
|
|
14439
14448
|
resumeClaudeSessionId: newClaudeSessionId,
|
|
14440
14449
|
importedFromClaudeSessionId: claudeSessionId,
|
|
14441
|
-
permissionMode: typeof permissionMode === "string" ? permissionMode : void 0
|
|
14450
|
+
permissionMode: typeof permissionMode === "string" ? permissionMode : void 0,
|
|
14451
|
+
// B-294: the imported session carries the source title from the
|
|
14452
|
+
// start. The CLI's own title generator only fires on a new user
|
|
14453
|
+
// message and skips a session that already has a summary, so an
|
|
14454
|
+
// import without this stays "New chat" forever.
|
|
14455
|
+
importTitle: typeof title === "string" ? title : void 0
|
|
14442
14456
|
});
|
|
14443
14457
|
} catch (error) {
|
|
14444
14458
|
await discardForkedSession(projectDir, newClaudeSessionId);
|
|
@@ -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.106";
|
|
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.106",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.106",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.106",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.106",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.106",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.106"
|
|
151
151
|
};
|
|
152
152
|
var devDependencies = {
|
|
153
153
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1142,6 +1142,15 @@ const MessageMetaSchema = z$1.object({
|
|
|
1142
1142
|
// Allowed tools for this message (null = reset)
|
|
1143
1143
|
disallowedTools: z$1.array(z$1.string()).nullable().optional(),
|
|
1144
1144
|
// Disallowed tools for this message (null = reset)
|
|
1145
|
+
/**
|
|
1146
|
+
* Thinking depth for this message (null = reset to the machine default).
|
|
1147
|
+
* Deliberately a plain string, not an enum: an unknown value must not make
|
|
1148
|
+
* zod reject the WHOLE message the way the `dontAsk` permission enum did
|
|
1149
|
+
* (AGENTS 铁律 14). runClaude validates it against its own allow-list and
|
|
1150
|
+
* ignores anything else. Absent here until 0.2.105, which is why every
|
|
1151
|
+
* released CLI silently dropped the web's effort selection.
|
|
1152
|
+
*/
|
|
1153
|
+
effort: z$1.string().nullable().optional(),
|
|
1145
1154
|
/** Omitted/queue waits for the current turn; steer targets the live turn. */
|
|
1146
1155
|
delivery: z$1.enum(["queue", "steer"]).optional()
|
|
1147
1156
|
});
|
|
@@ -14390,7 +14399,7 @@ class ApiMachineClient {
|
|
|
14390
14399
|
}
|
|
14391
14400
|
});
|
|
14392
14401
|
this.rpcHandlerManager.registerHandler("claude-import-session", async (params) => {
|
|
14393
|
-
const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode } = params || {};
|
|
14402
|
+
const { directory, claudeSessionId, approvedNewDirectoryCreation, permissionMode, title } = params || {};
|
|
14394
14403
|
if (typeof directory !== "string" || directory.length === 0) {
|
|
14395
14404
|
throw new Error("directory is required");
|
|
14396
14405
|
}
|
|
@@ -14416,7 +14425,12 @@ class ApiMachineClient {
|
|
|
14416
14425
|
agent: "claude",
|
|
14417
14426
|
resumeClaudeSessionId: newClaudeSessionId,
|
|
14418
14427
|
importedFromClaudeSessionId: claudeSessionId,
|
|
14419
|
-
permissionMode: typeof permissionMode === "string" ? permissionMode : void 0
|
|
14428
|
+
permissionMode: typeof permissionMode === "string" ? permissionMode : void 0,
|
|
14429
|
+
// B-294: the imported session carries the source title from the
|
|
14430
|
+
// start. The CLI's own title generator only fires on a new user
|
|
14431
|
+
// message and skips a session that already has a summary, so an
|
|
14432
|
+
// import without this stays "New chat" forever.
|
|
14433
|
+
importTitle: typeof title === "string" ? title : void 0
|
|
14420
14434
|
});
|
|
14421
14435
|
} catch (error) {
|
|
14422
14436
|
await discardForkedSession(projectDir, newClaudeSessionId);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.106",
|
|
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.106",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.106",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.106",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.106",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.106",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.106"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|