very-happy-cli 0.2.103 → 0.2.105
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-Zt10QM8S.cjs → AcpBackend-CbMPn2Sx.cjs} +1 -1
- package/dist/{AcpBackend-C8CgzRI_.mjs → AcpBackend-zefm5lwc.mjs} +1 -1
- package/dist/{AcpSessionManager-BAinHcHh.mjs → AcpSessionManager-DFeZAfz4.mjs} +1 -1
- package/dist/{AcpSessionManager-D_iGrEbD.cjs → AcpSessionManager-lM9HBlOx.cjs} +1 -1
- package/dist/{config-11py0X-q.mjs → config-CRCUgh2E.mjs} +2 -2
- package/dist/{config-CG4aqDiu.cjs → config-CYpWD6Tc.cjs} +2 -2
- package/dist/{index-VvPyRTet.cjs → index-Bmv3lZU7.cjs} +2 -2
- package/dist/{index-CimI2p1M.cjs → index-Cietz-nU.cjs} +197 -71
- package/dist/{index-Dnma0J5k.mjs → index-NiUS5t0N.mjs} +193 -67
- package/dist/{index-BjDfS9DT.mjs → index-_t9O9dGp.mjs} +5 -5
- package/dist/{index-B_soRPsA.cjs → index-m9BL5ZWn.cjs} +4 -4
- package/dist/{index-B9SnF1mG.mjs → index-neppKLsI.mjs} +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{installTerminalHooks-BP9uu1Xn.cjs → installTerminalHooks-BMDcB8nc.cjs} +2 -2
- package/dist/{installTerminalHooks-UL5Zfif6.mjs → installTerminalHooks-Czv6GUOw.mjs} +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +1 -0
- package/dist/lib.d.mts +1 -0
- package/dist/lib.mjs +1 -1
- package/dist/{mcp-CxepBrGm.mjs → mcp-Bt4btDMD.mjs} +2 -2
- package/dist/{mcp-mX6g7PpH.cjs → mcp-Cn4icOYK.cjs} +2 -2
- package/dist/{runGemini-BPAUC7TY.cjs → runGemini-5Rgckz_I.cjs} +4 -4
- package/dist/{runGemini-Cxa0Tj_7.mjs → runGemini-wMF-U7zR.mjs} +4 -4
- package/dist/{runOpenClaw-QJ8YzPvo.cjs → runOpenClaw-DnbKLi5s.cjs} +3 -3
- package/dist/{runOpenClaw-DMAn3-Hq.mjs → runOpenClaw-Za9vMsSB.mjs} +3 -3
- package/dist/{send-D6NLQaYt.mjs → send-DliNFuy7.mjs} +2 -2
- package/dist/{send-CwRV7cbV.cjs → send-v6085rvq.cjs} +2 -2
- package/dist/{spawn-DIW1I72G.mjs → spawn-D3D-H-VF.mjs} +2 -2
- package/dist/{spawn-Db22DkVT.cjs → spawn-DUU9rhJa.cjs} +2 -2
- package/dist/{types-D9ORBxOD.mjs → types-CFIlcwe9.mjs} +38 -8
- package/dist/{types-DKO60j29.cjs → types-Cq7yzNWv.cjs} +39 -9
- package/package.json +7 -7
|
@@ -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-CFIlcwe9.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-NiUS5t0N.mjs';
|
|
7
|
+
import { A as AcpBackend } from './AcpBackend-zefm5lwc.mjs';
|
|
8
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CRCUgh2E.mjs';
|
|
9
9
|
import 'axios';
|
|
10
10
|
import 'chalk';
|
|
11
11
|
import 'node:util';
|
|
@@ -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-Cq7yzNWv.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-lM9HBlOx.cjs');
|
|
10
|
+
var index = require('./index-Cietz-nU.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,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-CFIlcwe9.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-DFeZAfz4.mjs';
|
|
8
|
+
import { i as initialMachineMetadata, d as createSessionMetadata, e as setupOfflineReconnection, n as notifyDaemonSessionStarted, M as MessageQueue2, r as registerKillSessionHandler } from './index-NiUS5t0N.mjs';
|
|
9
9
|
import WebSocket from 'ws';
|
|
10
10
|
import * as ed from '@noble/ed25519';
|
|
11
11
|
import { sha512 } from '@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-CFIlcwe9.mjs';
|
|
5
|
+
import { b as sendUserMessage, a as sessionWebUrl } from './index-NiUS5t0N.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-Cq7yzNWv.cjs');
|
|
7
|
+
var index = require('./index-Cietz-nU.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-NiUS5t0N.mjs';
|
|
5
|
+
import { l as logger } from './types-CFIlcwe9.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-Cietz-nU.cjs');
|
|
7
|
+
var persistence = require('./types-Cq7yzNWv.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.105";
|
|
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.105",
|
|
146
|
+
"very-happy-tools-x64-darwin": "0.2.105",
|
|
147
|
+
"very-happy-tools-arm64-linux": "0.2.105",
|
|
148
|
+
"very-happy-tools-x64-linux": "0.2.105",
|
|
149
|
+
"very-happy-tools-arm64-win32": "0.2.105",
|
|
150
|
+
"very-happy-tools-x64-win32": "0.2.105"
|
|
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
|
});
|
|
@@ -4545,6 +4554,23 @@ function readPersistedSessions() {
|
|
|
4545
4554
|
return {};
|
|
4546
4555
|
}
|
|
4547
4556
|
}
|
|
4557
|
+
function readTrackedClaudeSessionIds() {
|
|
4558
|
+
try {
|
|
4559
|
+
if (!existsSync(configuration.sessionsFile)) return [];
|
|
4560
|
+
const data = JSON.parse(readFileSync(configuration.sessionsFile, "utf-8"));
|
|
4561
|
+
if (!data?.sessions || typeof data.sessions !== "object") return [];
|
|
4562
|
+
const ids = /* @__PURE__ */ new Set();
|
|
4563
|
+
for (const session of Object.values(data.sessions)) {
|
|
4564
|
+
const metadata = (session ?? {}).metadata;
|
|
4565
|
+
for (const id of [metadata?.claudeSessionId, metadata?.importedFromClaudeSessionId]) {
|
|
4566
|
+
if (typeof id === "string" && id.length > 0) ids.add(id.toLowerCase());
|
|
4567
|
+
}
|
|
4568
|
+
}
|
|
4569
|
+
return [...ids];
|
|
4570
|
+
} catch {
|
|
4571
|
+
return [];
|
|
4572
|
+
}
|
|
4573
|
+
}
|
|
4548
4574
|
function persistSession(sessionId, session) {
|
|
4549
4575
|
try {
|
|
4550
4576
|
const existing = readPersistedSessions();
|
|
@@ -4592,6 +4618,7 @@ var persistence = /*#__PURE__*/Object.freeze({
|
|
|
4592
4618
|
readDaemonState: readDaemonState,
|
|
4593
4619
|
readPersistedSessions: readPersistedSessions,
|
|
4594
4620
|
readSettings: readSettings,
|
|
4621
|
+
readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
|
|
4595
4622
|
releaseDaemonLock: releaseDaemonLock,
|
|
4596
4623
|
updateSettings: updateSettings,
|
|
4597
4624
|
writeCredentialsDataKey: writeCredentialsDataKey,
|
|
@@ -14608,7 +14635,10 @@ class ApiMachineClient {
|
|
|
14608
14635
|
throw new Error("directory must be a non-empty string when provided");
|
|
14609
14636
|
}
|
|
14610
14637
|
const projectDirs = typeof directory === "string" ? [getProjectPath(directory)] : await listClaudeProjectDirs(getClaudeProjectsRoot());
|
|
14611
|
-
const excludeIds =
|
|
14638
|
+
const excludeIds = [
|
|
14639
|
+
...Array.isArray(exclude) ? exclude.filter((id) => typeof id === "string" && UUID_RE.test(id)) : [],
|
|
14640
|
+
...readTrackedClaudeSessionIds()
|
|
14641
|
+
];
|
|
14612
14642
|
const result = await listClaudeSessionHistory({
|
|
14613
14643
|
projectDirs,
|
|
14614
14644
|
limit: typeof limit === "number" && Number.isFinite(limit) ? Math.max(1, Math.min(Math.floor(limit), 200)) : 60,
|
|
@@ -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.105";
|
|
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.105",
|
|
168
|
+
"very-happy-tools-x64-darwin": "0.2.105",
|
|
169
|
+
"very-happy-tools-arm64-linux": "0.2.105",
|
|
170
|
+
"very-happy-tools-x64-linux": "0.2.105",
|
|
171
|
+
"very-happy-tools-arm64-win32": "0.2.105",
|
|
172
|
+
"very-happy-tools-x64-win32": "0.2.105"
|
|
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-Cq7yzNWv.cjs', document.baseURI).href))));
|
|
1598
1607
|
function projectPath() {
|
|
1599
1608
|
const path = path$1.resolve(__dirname$1, "..");
|
|
1600
1609
|
return path;
|
|
@@ -4567,6 +4576,23 @@ function readPersistedSessions() {
|
|
|
4567
4576
|
return {};
|
|
4568
4577
|
}
|
|
4569
4578
|
}
|
|
4579
|
+
function readTrackedClaudeSessionIds() {
|
|
4580
|
+
try {
|
|
4581
|
+
if (!node_fs.existsSync(configuration.sessionsFile)) return [];
|
|
4582
|
+
const data = JSON.parse(node_fs.readFileSync(configuration.sessionsFile, "utf-8"));
|
|
4583
|
+
if (!data?.sessions || typeof data.sessions !== "object") return [];
|
|
4584
|
+
const ids = /* @__PURE__ */ new Set();
|
|
4585
|
+
for (const session of Object.values(data.sessions)) {
|
|
4586
|
+
const metadata = (session ?? {}).metadata;
|
|
4587
|
+
for (const id of [metadata?.claudeSessionId, metadata?.importedFromClaudeSessionId]) {
|
|
4588
|
+
if (typeof id === "string" && id.length > 0) ids.add(id.toLowerCase());
|
|
4589
|
+
}
|
|
4590
|
+
}
|
|
4591
|
+
return [...ids];
|
|
4592
|
+
} catch {
|
|
4593
|
+
return [];
|
|
4594
|
+
}
|
|
4595
|
+
}
|
|
4570
4596
|
function persistSession(sessionId, session) {
|
|
4571
4597
|
try {
|
|
4572
4598
|
const existing = readPersistedSessions();
|
|
@@ -4614,6 +4640,7 @@ var persistence = /*#__PURE__*/Object.freeze({
|
|
|
4614
4640
|
readDaemonState: readDaemonState,
|
|
4615
4641
|
readPersistedSessions: readPersistedSessions,
|
|
4616
4642
|
readSettings: readSettings,
|
|
4643
|
+
readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
|
|
4617
4644
|
releaseDaemonLock: releaseDaemonLock,
|
|
4618
4645
|
updateSettings: updateSettings,
|
|
4619
4646
|
writeCredentialsDataKey: writeCredentialsDataKey,
|
|
@@ -14630,7 +14657,10 @@ class ApiMachineClient {
|
|
|
14630
14657
|
throw new Error("directory must be a non-empty string when provided");
|
|
14631
14658
|
}
|
|
14632
14659
|
const projectDirs = typeof directory === "string" ? [getProjectPath(directory)] : await listClaudeProjectDirs(getClaudeProjectsRoot());
|
|
14633
|
-
const excludeIds =
|
|
14660
|
+
const excludeIds = [
|
|
14661
|
+
...Array.isArray(exclude) ? exclude.filter((id) => typeof id === "string" && UUID_RE.test(id)) : [],
|
|
14662
|
+
...readTrackedClaudeSessionIds()
|
|
14663
|
+
];
|
|
14634
14664
|
const result = await listClaudeSessionHistory({
|
|
14635
14665
|
projectDirs,
|
|
14636
14666
|
limit: typeof limit === "number" && Number.isFinite(limit) ? Math.max(1, Math.min(Math.floor(limit), 200)) : 60,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "very-happy-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.105",
|
|
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.105",
|
|
117
|
+
"very-happy-tools-x64-darwin": "0.2.105",
|
|
118
|
+
"very-happy-tools-arm64-linux": "0.2.105",
|
|
119
|
+
"very-happy-tools-x64-linux": "0.2.105",
|
|
120
|
+
"very-happy-tools-arm64-win32": "0.2.105",
|
|
121
|
+
"very-happy-tools-x64-win32": "0.2.105"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
124
|
"@slopus/happy-wire": "workspace:*",
|