very-happy-cli 0.2.101 → 0.2.103
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-mbMlyZnj.mjs → AcpBackend-C8CgzRI_.mjs} +1 -1
- package/dist/{AcpBackend-BHst4DAF.cjs → AcpBackend-Zt10QM8S.cjs} +1 -1
- package/dist/{AcpSessionManager-CwdvDD_z.mjs → AcpSessionManager-BAinHcHh.mjs} +1 -1
- package/dist/{AcpSessionManager-Nyxm1kCR.cjs → AcpSessionManager-D_iGrEbD.cjs} +1 -1
- package/dist/{config-C1Z39_GK.mjs → config-11py0X-q.mjs} +2 -2
- package/dist/{config-DjtLOWRc.cjs → config-CG4aqDiu.cjs} +2 -2
- package/dist/{index-BnVk_E3V.mjs → index-B9SnF1mG.mjs} +2 -2
- package/dist/{index-tQZwyC3N.cjs → index-B_soRPsA.cjs} +4 -4
- package/dist/{index-BL9LWtAR.mjs → index-BjDfS9DT.mjs} +5 -5
- package/dist/{index-DemE8OgZ.cjs → index-CimI2p1M.cjs} +26 -20
- package/dist/{index-3ssSAknz.mjs → index-Dnma0J5k.mjs} +22 -16
- package/dist/{index-DqA3-Xxl.cjs → index-VvPyRTet.cjs} +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-BC9thC5_.cjs → installTerminalHooks-BP9uu1Xn.cjs} +2 -2
- package/dist/{installTerminalHooks-BvYqvibn.mjs → installTerminalHooks-UL5Zfif6.mjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +17 -0
- package/dist/lib.d.mts +17 -0
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-D6qSHTLO.mjs → mcp-CxepBrGm.mjs} +2 -2
- package/dist/{mcp-ChjpeHtZ.cjs → mcp-mX6g7PpH.cjs} +2 -2
- package/dist/{runGemini-Dy7X7eDh.cjs → runGemini-BPAUC7TY.cjs} +4 -4
- package/dist/{runGemini-D1SFLnxb.mjs → runGemini-Cxa0Tj_7.mjs} +4 -4
- package/dist/{runOpenClaw-AsjRz-Q3.mjs → runOpenClaw-DMAn3-Hq.mjs} +3 -3
- package/dist/{runOpenClaw-BpyEPSp5.cjs → runOpenClaw-QJ8YzPvo.cjs} +3 -3
- package/dist/{send-CvArl8UY.cjs → send-CwRV7cbV.cjs} +2 -2
- package/dist/{send-D1arw2mU.mjs → send-D6NLQaYt.mjs} +2 -2
- package/dist/{spawn-D3k-ywKX.mjs → spawn-DIW1I72G.mjs} +2 -2
- package/dist/{spawn-BYby4e76.cjs → spawn-Db22DkVT.cjs} +2 -2
- package/dist/{types-CkxTp9iI.mjs → types-D9ORBxOD.mjs} +335 -110
- package/dist/{types-BEwKkfnX.cjs → types-DKO60j29.cjs} +337 -110
- 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-D9ORBxOD.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-DKO60j29.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-D9ORBxOD.mjs';
|
|
6
|
+
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-Dnma0J5k.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-DKO60j29.cjs');
|
|
8
|
+
var index = require('./index-CimI2p1M.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('chalk');
|
|
11
11
|
require('node:util');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { q as query } from './index-
|
|
1
|
+
import { q as query } from './index-Dnma0J5k.mjs';
|
|
2
2
|
export { AbortError } from '@anthropic-ai/claude-agent-sdk';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'node:crypto';
|
|
6
|
-
import './types-
|
|
6
|
+
import './types-D9ORBxOD.mjs';
|
|
7
7
|
import 'axios';
|
|
8
8
|
import 'node:util';
|
|
9
9
|
import 'node:fs';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var AcpBackend = require('./AcpBackend-
|
|
4
|
-
var persistence = require('./types-
|
|
5
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
3
|
+
var AcpBackend = require('./AcpBackend-Zt10QM8S.cjs');
|
|
4
|
+
var persistence = require('./types-DKO60j29.cjs');
|
|
5
|
+
var AcpSessionManager = require('./AcpSessionManager-D_iGrEbD.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-CimI2p1M.cjs');
|
|
9
9
|
require('node:child_process');
|
|
10
10
|
require('@agentclientprotocol/sdk');
|
|
11
11
|
require('axios');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-
|
|
2
|
-
export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-
|
|
3
|
-
import { h as connectionState, A as ApiClient, 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-C8CgzRI_.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-C8CgzRI_.mjs';
|
|
3
|
+
import { h as connectionState, A as ApiClient, i as readSettings, j as encodeBase64, l as logger, p as projectPath } from './types-D9ORBxOD.mjs';
|
|
4
|
+
import { A as AcpSessionManager } from './AcpSessionManager-BAinHcHh.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-Dnma0J5k.mjs';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import '@agentclientprotocol/sdk';
|
|
10
10
|
import 'axios';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
|
-
var persistence = require('./types-
|
|
6
|
+
var persistence = require('./types-DKO60j29.cjs');
|
|
7
7
|
var spawn = require('cross-spawn');
|
|
8
8
|
var path = require('node:path');
|
|
9
9
|
var node_readline = require('node:readline');
|
|
@@ -5432,7 +5432,7 @@ function resumePrecheck(metadata, fs) {
|
|
|
5432
5432
|
}
|
|
5433
5433
|
function sanitizeResumeModel(value) {
|
|
5434
5434
|
if (typeof value !== "string") return null;
|
|
5435
|
-
return /^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}
|
|
5435
|
+
return /^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(\[1m\])?$/i.test(value) ? value : null;
|
|
5436
5436
|
}
|
|
5437
5437
|
|
|
5438
5438
|
const DEFAULT_MAX_RESTARTS = 3;
|
|
@@ -6778,7 +6778,7 @@ function parseJsonObject(text) {
|
|
|
6778
6778
|
return null;
|
|
6779
6779
|
}
|
|
6780
6780
|
}
|
|
6781
|
-
function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
6781
|
+
function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CimI2p1M.cjs', document.baseURI).href))).resolve(s)) {
|
|
6782
6782
|
const platformArch = `${platform}-${arch}`;
|
|
6783
6783
|
const candidates = [
|
|
6784
6784
|
`@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
|
|
@@ -7857,6 +7857,7 @@ async function claimSessionOrExit(happySessionId, options) {
|
|
|
7857
7857
|
process.on("exit", () => releaseSessionLock(happySessionId));
|
|
7858
7858
|
}
|
|
7859
7859
|
|
|
7860
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
7860
7861
|
const hostSuffix = process.env.HAPPY_VARIANT === "dev" ? "-dev" : "";
|
|
7861
7862
|
const initialMachineMetadata = {
|
|
7862
7863
|
host: os$1.hostname() + hostSuffix,
|
|
@@ -8192,6 +8193,9 @@ async function startDaemon() {
|
|
|
8192
8193
|
if (options.resumeClaudeSessionId) {
|
|
8193
8194
|
extraEnv.HAPPY_FORK_CLAUDE_SESSION_ID = options.resumeClaudeSessionId;
|
|
8194
8195
|
}
|
|
8196
|
+
if (options.importedFromClaudeSessionId && UUID_RE.test(options.importedFromClaudeSessionId)) {
|
|
8197
|
+
extraEnv.HAPPY_IMPORTED_FROM_CLAUDE_SESSION_ID = options.importedFromClaudeSessionId;
|
|
8198
|
+
}
|
|
8195
8199
|
if (options.resumeCodexThreadId) {
|
|
8196
8200
|
extraEnv.HAPPY_FORK_CODEX_THREAD_ID = options.resumeCodexThreadId;
|
|
8197
8201
|
}
|
|
@@ -10053,7 +10057,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10053
10057
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10054
10058
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10055
10059
|
const run = deps.run ?? (async (input) => {
|
|
10056
|
-
const { query } = await Promise.resolve().then(function () { return require('./index-
|
|
10060
|
+
const { query } = await Promise.resolve().then(function () { return require('./index-VvPyRTet.cjs'); });
|
|
10057
10061
|
return runSideQuestion(query, input);
|
|
10058
10062
|
});
|
|
10059
10063
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -10155,7 +10159,7 @@ const MAX_TITLE_CHARS = 60;
|
|
|
10155
10159
|
const GENERATION_TIMEOUT_MS = 3e4;
|
|
10156
10160
|
function resolveClaudeBinary() {
|
|
10157
10161
|
try {
|
|
10158
|
-
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-
|
|
10162
|
+
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-CimI2p1M.cjs', document.baseURI).href)));
|
|
10159
10163
|
const utilsPath = path.resolve(path.join(persistence.projectPath(), "scripts", "claude_version_utils.cjs"));
|
|
10160
10164
|
const { getClaudeCliPath } = require$1(utilsPath);
|
|
10161
10165
|
const path$1 = getClaudeCliPath();
|
|
@@ -10167,7 +10171,7 @@ function resolveClaudeBinary() {
|
|
|
10167
10171
|
}
|
|
10168
10172
|
function buildPrompt(firstUserMessage) {
|
|
10169
10173
|
const sample = firstUserMessage.slice(0, MAX_PROMPT_SAMPLE_CHARS);
|
|
10170
|
-
return
|
|
10174
|
+
return `${persistence.TITLE_PROMPT_PREFIX} (match the message's language). Be concrete \u2014 name the actual task/subject. Do NOT output generic placeholders like "\u65B0\u5BF9\u8BDD"/"New chat"/"Conversation"/"Untitled". No quotes, no trailing punctuation. Reply with ONLY the title.
|
|
10171
10175
|
|
|
10172
10176
|
Message: "${sample}"`;
|
|
10173
10177
|
}
|
|
@@ -10363,7 +10367,7 @@ function buildBoardPrompt(input) {
|
|
|
10363
10367
|
const taskLines = tasks.length > 0 ? tasks.map((t) => `- ${t.id}: ${t.title}`).join("\n") : "(no tasks defined)";
|
|
10364
10368
|
const todoBlock = input.todos.length > 0 ? input.todos.join("\n") : "(none)";
|
|
10365
10369
|
return [
|
|
10366
|
-
|
|
10370
|
+
`${persistence.BOARD_ANALYZER_PROMPT_PREFIX} Analyze this session snapshot and reply with ONLY a strict JSON object, no markdown, no explanations:`,
|
|
10367
10371
|
'{"taskId": string|null, "attention": "none"|"review"|"blocked", "progress": string}',
|
|
10368
10372
|
"",
|
|
10369
10373
|
"Rules:",
|
|
@@ -10591,6 +10595,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
10591
10595
|
});
|
|
10592
10596
|
const forkedFromSessionId = process.env.HAPPY_FORKED_FROM_SESSION_ID;
|
|
10593
10597
|
const forkedFromMessageId = process.env.HAPPY_FORKED_FROM_MESSAGE_ID;
|
|
10598
|
+
const importedFromClaudeSessionId = process.env.HAPPY_IMPORTED_FROM_CLAUDE_SESSION_ID;
|
|
10594
10599
|
let metadata = {
|
|
10595
10600
|
path: workingDirectory,
|
|
10596
10601
|
host: os.hostname(),
|
|
@@ -10620,6 +10625,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
10620
10625
|
dangerouslySkipPermissions,
|
|
10621
10626
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
10622
10627
|
...forkedFromMessageId ? { forkedFromMessageId } : {},
|
|
10628
|
+
...importedFromClaudeSessionId ? { importedFromClaudeSessionId } : {},
|
|
10623
10629
|
...isAssistantVariant ? { variant: "assistant" } : {},
|
|
10624
10630
|
// B-091: sessions the assistant dispatched (daemon spawn RPC exports
|
|
10625
10631
|
// HAPPY_SPAWNED_BY, B-069) are born with the 'assistant' tag so every
|
|
@@ -12360,9 +12366,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
|
|
|
12360
12366
|
};
|
|
12361
12367
|
}
|
|
12362
12368
|
|
|
12363
|
-
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-
|
|
12369
|
+
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-CimI2p1M.cjs', document.baseURI).href)));
|
|
12364
12370
|
const __dirname$1 = path.dirname(__filename$1);
|
|
12365
|
-
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-
|
|
12371
|
+
const require_ = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-CimI2p1M.cjs', document.baseURI).href)));
|
|
12366
12372
|
const PRISMA_QUERY_ENGINE_FILES = {
|
|
12367
12373
|
"arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
|
|
12368
12374
|
"x64-darwin": "libquery_engine-darwin.dylib.node",
|
|
@@ -14986,7 +14992,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
14986
14992
|
process.exit(0);
|
|
14987
14993
|
} else if (subcommand === "install-terminal-hooks") {
|
|
14988
14994
|
try {
|
|
14989
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-
|
|
14995
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await Promise.resolve().then(function () { return require('./installTerminalHooks-BP9uu1Xn.cjs'); });
|
|
14990
14996
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
14991
14997
|
if (command.action === "help") {
|
|
14992
14998
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -15003,7 +15009,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15003
15009
|
}
|
|
15004
15010
|
} else if (subcommand === "spawn") {
|
|
15005
15011
|
try {
|
|
15006
|
-
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-
|
|
15012
|
+
const { handleSpawnCommand } = await Promise.resolve().then(function () { return require('./spawn-Db22DkVT.cjs'); });
|
|
15007
15013
|
await handleSpawnCommand(args.slice(1));
|
|
15008
15014
|
} catch (error) {
|
|
15009
15015
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15015,7 +15021,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15015
15021
|
return;
|
|
15016
15022
|
} else if (subcommand === "send") {
|
|
15017
15023
|
try {
|
|
15018
|
-
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-
|
|
15024
|
+
const { handleSendCommand } = await Promise.resolve().then(function () { return require('./send-CwRV7cbV.cjs'); });
|
|
15019
15025
|
await handleSendCommand(args.slice(1));
|
|
15020
15026
|
} catch (error) {
|
|
15021
15027
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15121,9 +15127,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15121
15127
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15122
15128
|
const projectId = args[3];
|
|
15123
15129
|
try {
|
|
15124
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15125
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-
|
|
15126
|
-
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-
|
|
15130
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-CG4aqDiu.cjs'); });
|
|
15131
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await Promise.resolve().then(function () { return require('./types-DKO60j29.cjs'); }).then(function (n) { return n.persistence; });
|
|
15132
|
+
const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./types-DKO60j29.cjs'); }).then(function (n) { return n.api; });
|
|
15127
15133
|
let userEmail = void 0;
|
|
15128
15134
|
try {
|
|
15129
15135
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15154,7 +15160,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15154
15160
|
}
|
|
15155
15161
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15156
15162
|
try {
|
|
15157
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
15163
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-CG4aqDiu.cjs'); });
|
|
15158
15164
|
const config = readGeminiLocalConfig();
|
|
15159
15165
|
if (config.googleCloudProject) {
|
|
15160
15166
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15194,7 +15200,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15194
15200
|
process.exit(0);
|
|
15195
15201
|
}
|
|
15196
15202
|
try {
|
|
15197
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
15203
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-BPAUC7TY.cjs'); });
|
|
15198
15204
|
let startedBy = void 0;
|
|
15199
15205
|
for (let i = 1; i < args.length; i++) {
|
|
15200
15206
|
if (args[i] === "--started-by") {
|
|
@@ -15216,7 +15222,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15216
15222
|
return;
|
|
15217
15223
|
} else if (subcommand === "acp") {
|
|
15218
15224
|
try {
|
|
15219
|
-
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-
|
|
15225
|
+
const { runAcp, resolveAcpAgentConfig } = await Promise.resolve().then(function () { return require('./index-B_soRPsA.cjs'); });
|
|
15220
15226
|
let startedBy = void 0;
|
|
15221
15227
|
let verbose = false;
|
|
15222
15228
|
const acpArgs = [];
|
|
@@ -15256,7 +15262,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15256
15262
|
return;
|
|
15257
15263
|
} else if (subcommand === "openclaw") {
|
|
15258
15264
|
try {
|
|
15259
|
-
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-
|
|
15265
|
+
const { runOpenClaw } = await Promise.resolve().then(function () { return require('./runOpenClaw-QJ8YzPvo.cjs'); });
|
|
15260
15266
|
let startedBy = void 0;
|
|
15261
15267
|
let verbose = false;
|
|
15262
15268
|
let gatewayUrl;
|
|
@@ -15307,7 +15313,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15307
15313
|
return;
|
|
15308
15314
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15309
15315
|
try {
|
|
15310
|
-
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-
|
|
15316
|
+
const { handleMcpCommand } = await Promise.resolve().then(function () { return require('./mcp-mX6g7PpH.cjs'); });
|
|
15311
15317
|
await handleMcpCommand();
|
|
15312
15318
|
} catch (error) {
|
|
15313
15319
|
process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
|
|
2
2
|
import os, { homedir, userInfo } from 'node:os';
|
|
3
3
|
import { randomUUID, randomBytes, createHash as createHash$1, timingSafeEqual } from 'node:crypto';
|
|
4
|
-
import { 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, v as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, x as hardenPrivateFile, f as packageJson, i as readSettings, y as readCredentials, z as credentialRelayProblem, B as deriveLocalCliUpdateSummary, j as encodeBase64, C as updateSettings, D as encodeBase64Url, E as decodeBase64, F as writeCredentialsLegacy, G as writeCredentialsDataKey, H as readCredentialsForConfiguredRelay, J as encrypt, r as readPersistedSessions, K as isClaudeSessionId, L as getLocalHappyAgentCredentialPath, N as readLocalHappyAgentCredentials, O as decryptWithDataKey, P as decryptLegacy, Q as extractCompleteLines, S as decideBackfill, T as parseTerminalHookPayload, U as tmuxArgs, V as scrubTmuxClientEnv, W as decideMirrorBinding, X as MIRROR_BACKFILL_LINES_DEFAULT, Y as persistSession, Z as mirrorLineKey, _ as mirrorLocalId, w as writePrivateFileSync, $ as detectResumeSupport, a0 as detectCLIAvailability, a1 as acquireDaemonLock, a2 as summarizeSpawnSessionForLog, a3 as deletePersistedSessions, a4 as shellescape, a5 as decrypt, a6 as writeDaemonState, A as ApiClient, a7 as writeSettings, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as releaseDaemonLock, ac as isValidSessionId, ad as listVhTerminals, ae as isValidTerminalId, af as readVhTerminal, ag as sendToVhTerminal, h as connectionState,
|
|
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, v as ensurePrivateDirectory, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, x as hardenPrivateFile, f as packageJson, i as readSettings, y as readCredentials, z as credentialRelayProblem, B as deriveLocalCliUpdateSummary, j as encodeBase64, C as updateSettings, D as encodeBase64Url, E as decodeBase64, F as writeCredentialsLegacy, G as writeCredentialsDataKey, H as readCredentialsForConfiguredRelay, J as encrypt, r as readPersistedSessions, K as isClaudeSessionId, L as getLocalHappyAgentCredentialPath, N as readLocalHappyAgentCredentials, O as decryptWithDataKey, P as decryptLegacy, Q as extractCompleteLines, S as decideBackfill, T as parseTerminalHookPayload, U as tmuxArgs, V as scrubTmuxClientEnv, W as decideMirrorBinding, X as MIRROR_BACKFILL_LINES_DEFAULT, Y as persistSession, Z as mirrorLineKey, _ as mirrorLocalId, w as writePrivateFileSync, $ as detectResumeSupport, a0 as detectCLIAvailability, a1 as acquireDaemonLock, a2 as summarizeSpawnSessionForLog, a3 as deletePersistedSessions, a4 as shellescape, a5 as decrypt, a6 as writeDaemonState, A as ApiClient, a7 as writeSettings, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as releaseDaemonLock, ac as isValidSessionId, ad as listVhTerminals, ae as isValidTerminalId, af as readVhTerminal, ag as sendToVhTerminal, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, h as connectionState, aj as startOfflineReconnection, ak as clearCredentials, al as clearMachineId, k as ensurePrivateDirectorySync, am as SandboxConfigSchema, b as createEnvelope, an as CodexAppServerClient, ao as getLatestDaemonLog } from './types-D9ORBxOD.mjs';
|
|
5
5
|
import spawn$1, { spawn } from 'cross-spawn';
|
|
6
6
|
import path, { join, resolve, basename, delimiter, isAbsolute, normalize, sep, dirname } from 'node:path';
|
|
7
7
|
import { createInterface } from 'node:readline';
|
|
@@ -5410,7 +5410,7 @@ function resumePrecheck(metadata, fs) {
|
|
|
5410
5410
|
}
|
|
5411
5411
|
function sanitizeResumeModel(value) {
|
|
5412
5412
|
if (typeof value !== "string") return null;
|
|
5413
|
-
return /^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}
|
|
5413
|
+
return /^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}(\[1m\])?$/i.test(value) ? value : null;
|
|
5414
5414
|
}
|
|
5415
5415
|
|
|
5416
5416
|
const DEFAULT_MAX_RESTARTS = 3;
|
|
@@ -7835,6 +7835,7 @@ async function claimSessionOrExit(happySessionId, options) {
|
|
|
7835
7835
|
process.on("exit", () => releaseSessionLock(happySessionId));
|
|
7836
7836
|
}
|
|
7837
7837
|
|
|
7838
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
7838
7839
|
const hostSuffix = process.env.HAPPY_VARIANT === "dev" ? "-dev" : "";
|
|
7839
7840
|
const initialMachineMetadata = {
|
|
7840
7841
|
host: os$1.hostname() + hostSuffix,
|
|
@@ -8170,6 +8171,9 @@ async function startDaemon() {
|
|
|
8170
8171
|
if (options.resumeClaudeSessionId) {
|
|
8171
8172
|
extraEnv.HAPPY_FORK_CLAUDE_SESSION_ID = options.resumeClaudeSessionId;
|
|
8172
8173
|
}
|
|
8174
|
+
if (options.importedFromClaudeSessionId && UUID_RE.test(options.importedFromClaudeSessionId)) {
|
|
8175
|
+
extraEnv.HAPPY_IMPORTED_FROM_CLAUDE_SESSION_ID = options.importedFromClaudeSessionId;
|
|
8176
|
+
}
|
|
8173
8177
|
if (options.resumeCodexThreadId) {
|
|
8174
8178
|
extraEnv.HAPPY_FORK_CODEX_THREAD_ID = options.resumeCodexThreadId;
|
|
8175
8179
|
}
|
|
@@ -10031,7 +10035,7 @@ function registerSideQuestionHandler(rpc, deps) {
|
|
|
10031
10035
|
const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
|
|
10032
10036
|
const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
|
|
10033
10037
|
const run = deps.run ?? (async (input) => {
|
|
10034
|
-
const { query } = await import('./index-
|
|
10038
|
+
const { query } = await import('./index-B9SnF1mG.mjs');
|
|
10035
10039
|
return runSideQuestion(query, input);
|
|
10036
10040
|
});
|
|
10037
10041
|
const slots = /* @__PURE__ */ new Map();
|
|
@@ -10145,7 +10149,7 @@ function resolveClaudeBinary() {
|
|
|
10145
10149
|
}
|
|
10146
10150
|
function buildPrompt(firstUserMessage) {
|
|
10147
10151
|
const sample = firstUserMessage.slice(0, MAX_PROMPT_SAMPLE_CHARS);
|
|
10148
|
-
return
|
|
10152
|
+
return `${TITLE_PROMPT_PREFIX} (match the message's language). Be concrete \u2014 name the actual task/subject. Do NOT output generic placeholders like "\u65B0\u5BF9\u8BDD"/"New chat"/"Conversation"/"Untitled". No quotes, no trailing punctuation. Reply with ONLY the title.
|
|
10149
10153
|
|
|
10150
10154
|
Message: "${sample}"`;
|
|
10151
10155
|
}
|
|
@@ -10341,7 +10345,7 @@ function buildBoardPrompt(input) {
|
|
|
10341
10345
|
const taskLines = tasks.length > 0 ? tasks.map((t) => `- ${t.id}: ${t.title}`).join("\n") : "(no tasks defined)";
|
|
10342
10346
|
const todoBlock = input.todos.length > 0 ? input.todos.join("\n") : "(none)";
|
|
10343
10347
|
return [
|
|
10344
|
-
|
|
10348
|
+
`${BOARD_ANALYZER_PROMPT_PREFIX} Analyze this session snapshot and reply with ONLY a strict JSON object, no markdown, no explanations:`,
|
|
10345
10349
|
'{"taskId": string|null, "attention": "none"|"review"|"blocked", "progress": string}',
|
|
10346
10350
|
"",
|
|
10347
10351
|
"Rules:",
|
|
@@ -10569,6 +10573,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
10569
10573
|
});
|
|
10570
10574
|
const forkedFromSessionId = process.env.HAPPY_FORKED_FROM_SESSION_ID;
|
|
10571
10575
|
const forkedFromMessageId = process.env.HAPPY_FORKED_FROM_MESSAGE_ID;
|
|
10576
|
+
const importedFromClaudeSessionId = process.env.HAPPY_IMPORTED_FROM_CLAUDE_SESSION_ID;
|
|
10572
10577
|
let metadata = {
|
|
10573
10578
|
path: workingDirectory,
|
|
10574
10579
|
host: os.hostname(),
|
|
@@ -10598,6 +10603,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
10598
10603
|
dangerouslySkipPermissions,
|
|
10599
10604
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
10600
10605
|
...forkedFromMessageId ? { forkedFromMessageId } : {},
|
|
10606
|
+
...importedFromClaudeSessionId ? { importedFromClaudeSessionId } : {},
|
|
10601
10607
|
...isAssistantVariant ? { variant: "assistant" } : {},
|
|
10602
10608
|
// B-091: sessions the assistant dispatched (daemon spawn RPC exports
|
|
10603
10609
|
// HAPPY_SPAWNED_BY, B-069) are born with the 'assistant' tag so every
|
|
@@ -14964,7 +14970,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
14964
14970
|
process.exit(0);
|
|
14965
14971
|
} else if (subcommand === "install-terminal-hooks") {
|
|
14966
14972
|
try {
|
|
14967
|
-
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-
|
|
14973
|
+
const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-UL5Zfif6.mjs');
|
|
14968
14974
|
const command = parseTerminalHooksArgs(args.slice(1));
|
|
14969
14975
|
if (command.action === "help") {
|
|
14970
14976
|
console.log(TERMINAL_HOOKS_HELP);
|
|
@@ -14981,7 +14987,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
14981
14987
|
}
|
|
14982
14988
|
} else if (subcommand === "spawn") {
|
|
14983
14989
|
try {
|
|
14984
|
-
const { handleSpawnCommand } = await import('./spawn-
|
|
14990
|
+
const { handleSpawnCommand } = await import('./spawn-DIW1I72G.mjs');
|
|
14985
14991
|
await handleSpawnCommand(args.slice(1));
|
|
14986
14992
|
} catch (error) {
|
|
14987
14993
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -14993,7 +14999,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
14993
14999
|
return;
|
|
14994
15000
|
} else if (subcommand === "send") {
|
|
14995
15001
|
try {
|
|
14996
|
-
const { handleSendCommand } = await import('./send-
|
|
15002
|
+
const { handleSendCommand } = await import('./send-D6NLQaYt.mjs');
|
|
14997
15003
|
await handleSendCommand(args.slice(1));
|
|
14998
15004
|
} catch (error) {
|
|
14999
15005
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -15099,9 +15105,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15099
15105
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
15100
15106
|
const projectId = args[3];
|
|
15101
15107
|
try {
|
|
15102
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
15103
|
-
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-
|
|
15104
|
-
const { ApiClient: ApiClient2 } = await import('./types-
|
|
15108
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-11py0X-q.mjs');
|
|
15109
|
+
const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./types-D9ORBxOD.mjs').then(function (n) { return n.ap; });
|
|
15110
|
+
const { ApiClient: ApiClient2 } = await import('./types-D9ORBxOD.mjs').then(function (n) { return n.aq; });
|
|
15105
15111
|
let userEmail = void 0;
|
|
15106
15112
|
try {
|
|
15107
15113
|
const credentials = await readCredentialsForConfiguredRelay2();
|
|
@@ -15132,7 +15138,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15132
15138
|
}
|
|
15133
15139
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
15134
15140
|
try {
|
|
15135
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
15141
|
+
const { readGeminiLocalConfig } = await import('./config-11py0X-q.mjs');
|
|
15136
15142
|
const config = readGeminiLocalConfig();
|
|
15137
15143
|
if (config.googleCloudProject) {
|
|
15138
15144
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -15172,7 +15178,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15172
15178
|
process.exit(0);
|
|
15173
15179
|
}
|
|
15174
15180
|
try {
|
|
15175
|
-
const { runGemini } = await import('./runGemini-
|
|
15181
|
+
const { runGemini } = await import('./runGemini-Cxa0Tj_7.mjs');
|
|
15176
15182
|
let startedBy = void 0;
|
|
15177
15183
|
for (let i = 1; i < args.length; i++) {
|
|
15178
15184
|
if (args[i] === "--started-by") {
|
|
@@ -15194,7 +15200,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15194
15200
|
return;
|
|
15195
15201
|
} else if (subcommand === "acp") {
|
|
15196
15202
|
try {
|
|
15197
|
-
const { runAcp, resolveAcpAgentConfig } = await import('./index-
|
|
15203
|
+
const { runAcp, resolveAcpAgentConfig } = await import('./index-BjDfS9DT.mjs');
|
|
15198
15204
|
let startedBy = void 0;
|
|
15199
15205
|
let verbose = false;
|
|
15200
15206
|
const acpArgs = [];
|
|
@@ -15234,7 +15240,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15234
15240
|
return;
|
|
15235
15241
|
} else if (subcommand === "openclaw") {
|
|
15236
15242
|
try {
|
|
15237
|
-
const { runOpenClaw } = await import('./runOpenClaw-
|
|
15243
|
+
const { runOpenClaw } = await import('./runOpenClaw-DMAn3-Hq.mjs');
|
|
15238
15244
|
let startedBy = void 0;
|
|
15239
15245
|
let verbose = false;
|
|
15240
15246
|
let gatewayUrl;
|
|
@@ -15285,7 +15291,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
|
|
|
15285
15291
|
return;
|
|
15286
15292
|
} else if (subcommand === "mcp" && args.length === 1) {
|
|
15287
15293
|
try {
|
|
15288
|
-
const { handleMcpCommand } = await import('./mcp-
|
|
15294
|
+
const { handleMcpCommand } = await import('./mcp-CxepBrGm.mjs');
|
|
15289
15295
|
await handleMcpCommand();
|
|
15290
15296
|
} catch (error) {
|
|
15291
15297
|
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 index = require('./index-
|
|
3
|
+
var index = require('./index-CimI2p1M.cjs');
|
|
4
4
|
var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
|
|
5
5
|
require('chalk');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:crypto');
|
|
8
|
-
require('./types-
|
|
8
|
+
require('./types-DKO60j29.cjs');
|
|
9
9
|
require('axios');
|
|
10
10
|
require('node:util');
|
|
11
11
|
require('node:fs');
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -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-DKO60j29.cjs');
|
|
9
|
+
var index = require('./index-CimI2p1M.cjs');
|
|
10
10
|
require('axios');
|
|
11
11
|
require('node:util');
|
|
12
12
|
require('node:fs/promises');
|
|
@@ -3,8 +3,8 @@ import { join, resolve } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { p as projectPath } from './types-
|
|
7
|
-
import { t as tmuxSupportsSessionEnv } from './index-
|
|
6
|
+
import { p as projectPath } from './types-D9ORBxOD.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-Dnma0J5k.mjs';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:util';
|
|
10
10
|
import 'node:fs/promises';
|
package/dist/lib.cjs
CHANGED
package/dist/lib.d.cts
CHANGED
|
@@ -371,6 +371,10 @@ declare const DaemonStateSchema: z$1.ZodObject<{
|
|
|
371
371
|
detectedAt: z$1.ZodNumber;
|
|
372
372
|
killAttached: z$1.ZodOptional<z$1.ZodBoolean>;
|
|
373
373
|
}, z$1.core.$strip>>;
|
|
374
|
+
claudeHistory: z$1.ZodOptional<z$1.ZodObject<{
|
|
375
|
+
rpcAvailable: z$1.ZodBoolean;
|
|
376
|
+
detectedAt: z$1.ZodNumber;
|
|
377
|
+
}, z$1.core.$strip>>;
|
|
374
378
|
cliUpdate: z$1.ZodOptional<z$1.ZodObject<{
|
|
375
379
|
currentVersion: z$1.ZodString;
|
|
376
380
|
recommendedVersion: z$1.ZodNullable<z$1.ZodString>;
|
|
@@ -555,6 +559,13 @@ type Metadata = {
|
|
|
555
559
|
/** Lineage for sessions created via the fork / duplicate flow. */
|
|
556
560
|
parentSessionId?: string;
|
|
557
561
|
forkedFromMessageId?: string;
|
|
562
|
+
/**
|
|
563
|
+
* B-290: the Claude conversation this session was imported from (the
|
|
564
|
+
* on-disk transcript written by claude CLI / desktop / claude.ai that was
|
|
565
|
+
* copied by `claude-fork-session`). Lets the import picker hide originals
|
|
566
|
+
* that already have a copy here. Absent on every other session.
|
|
567
|
+
*/
|
|
568
|
+
importedFromClaudeSessionId?: string;
|
|
558
569
|
/**
|
|
559
570
|
* B-051: session variant. 'assistant' marks the machine's meta-agent
|
|
560
571
|
* (dispatcher / voice assistant) session — fixed cwd ~/.happy/assistant,
|
|
@@ -984,6 +995,12 @@ interface SpawnSessionOptions {
|
|
|
984
995
|
parentSessionId?: string;
|
|
985
996
|
/** Happy message id used as the rewind point (only set for "duplicate"). */
|
|
986
997
|
forkedFromMessageId?: string;
|
|
998
|
+
/**
|
|
999
|
+
* B-290: source Claude conversation id of an imported transcript (the
|
|
1000
|
+
* original that `resumeClaudeSessionId` is a copy of). Recorded in session
|
|
1001
|
+
* metadata so the import picker hides it. Old daemons ignore the field.
|
|
1002
|
+
*/
|
|
1003
|
+
importedFromClaudeSessionId?: string;
|
|
987
1004
|
/**
|
|
988
1005
|
* B-051: spawn the machine's assistant (meta-agent) session. The daemon
|
|
989
1006
|
* forces cwd to ~/.happy/assistant (the passed `directory` is ignored),
|
package/dist/lib.d.mts
CHANGED
|
@@ -371,6 +371,10 @@ declare const DaemonStateSchema: z$1.ZodObject<{
|
|
|
371
371
|
detectedAt: z$1.ZodNumber;
|
|
372
372
|
killAttached: z$1.ZodOptional<z$1.ZodBoolean>;
|
|
373
373
|
}, z$1.core.$strip>>;
|
|
374
|
+
claudeHistory: z$1.ZodOptional<z$1.ZodObject<{
|
|
375
|
+
rpcAvailable: z$1.ZodBoolean;
|
|
376
|
+
detectedAt: z$1.ZodNumber;
|
|
377
|
+
}, z$1.core.$strip>>;
|
|
374
378
|
cliUpdate: z$1.ZodOptional<z$1.ZodObject<{
|
|
375
379
|
currentVersion: z$1.ZodString;
|
|
376
380
|
recommendedVersion: z$1.ZodNullable<z$1.ZodString>;
|
|
@@ -555,6 +559,13 @@ type Metadata = {
|
|
|
555
559
|
/** Lineage for sessions created via the fork / duplicate flow. */
|
|
556
560
|
parentSessionId?: string;
|
|
557
561
|
forkedFromMessageId?: string;
|
|
562
|
+
/**
|
|
563
|
+
* B-290: the Claude conversation this session was imported from (the
|
|
564
|
+
* on-disk transcript written by claude CLI / desktop / claude.ai that was
|
|
565
|
+
* copied by `claude-fork-session`). Lets the import picker hide originals
|
|
566
|
+
* that already have a copy here. Absent on every other session.
|
|
567
|
+
*/
|
|
568
|
+
importedFromClaudeSessionId?: string;
|
|
558
569
|
/**
|
|
559
570
|
* B-051: session variant. 'assistant' marks the machine's meta-agent
|
|
560
571
|
* (dispatcher / voice assistant) session — fixed cwd ~/.happy/assistant,
|
|
@@ -984,6 +995,12 @@ interface SpawnSessionOptions {
|
|
|
984
995
|
parentSessionId?: string;
|
|
985
996
|
/** Happy message id used as the rewind point (only set for "duplicate"). */
|
|
986
997
|
forkedFromMessageId?: string;
|
|
998
|
+
/**
|
|
999
|
+
* B-290: source Claude conversation id of an imported transcript (the
|
|
1000
|
+
* original that `resumeClaudeSessionId` is a copy of). Recorded in session
|
|
1001
|
+
* metadata so the import picker hides it. Old daemons ignore the field.
|
|
1002
|
+
*/
|
|
1003
|
+
importedFromClaudeSessionId?: string;
|
|
987
1004
|
/**
|
|
988
1005
|
* B-051: spawn the machine's assistant (meta-agent) session. The daemon
|
|
989
1006
|
* 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-D9ORBxOD.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'chalk';
|
|
4
4
|
import 'node:util';
|