very-happy-cli 0.2.133 → 0.2.135
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-DgG8o4jd.cjs → AcpBackend-C0Bwx6bc.cjs} +3 -3
- package/dist/{AcpBackend-BQm7dNza.mjs → AcpBackend-CkDpu1n_.mjs} +3 -3
- package/dist/{AcpSessionManager-C7unPEZO.mjs → AcpSessionManager-DB_mfFaH.mjs} +1 -1
- package/dist/{AcpSessionManager-DDFEmhQp.cjs → AcpSessionManager-DqvUp-UU.cjs} +1 -1
- package/dist/{agentGuidance-BaplwDcV.mjs → agentGuidance-7MByWxKj.mjs} +1 -1
- package/dist/{agentGuidance-BItqIZTf.cjs → agentGuidance-DlZM_YPV.cjs} +1 -1
- package/dist/codex/happyMcpStdioBridge.cjs +2 -2
- package/dist/codex/happyMcpStdioBridge.mjs +2 -2
- package/dist/{config-uLywzv5t.cjs → config-BO0ZHyoB.cjs} +4 -4
- package/dist/{config-BZ8xEnOv.mjs → config-DzvbcL_x.mjs} +4 -4
- package/dist/{index-Daga0ztv.cjs → index-BEpZjXs4.cjs} +15 -9
- package/dist/{index-ClCeQ1FW.mjs → index-C33JB4xB.mjs} +16 -10
- package/dist/{index-D8i2EViA.mjs → index-CpEdOGpe.mjs} +4 -4
- package/dist/{index-CdH3ecC5.cjs → index-DHI6Y1xW.cjs} +4 -4
- package/dist/{index-6Xm0CgN_.cjs → index-DNbKbe23.cjs} +1536 -1202
- package/dist/{index-EsR8ayIg.mjs → index-gefLe1Bk.mjs} +1534 -1200
- package/dist/index.cjs +4 -4
- package/dist/index.mjs +4 -4
- package/dist/{installTerminalHooks-NH4kiB2E.mjs → installTerminalHooks-BWoHGCew.mjs} +4 -4
- package/dist/{installTerminalHooks-CKG0MYVK.cjs → installTerminalHooks-gmWKACNb.cjs} +4 -4
- package/dist/lib.cjs +2 -2
- package/dist/lib.d.cts +20 -60
- package/dist/lib.d.mts +20 -60
- package/dist/lib.mjs +2 -2
- package/dist/{limits-Du7S6jqA.mjs → limits-CPTgiQ9A.mjs} +8 -8
- package/dist/{limits-XRNzIlVm.cjs → limits-K17AgMHD.cjs} +8 -8
- package/dist/{mcp-CAMCuudA.cjs → mcp-CK1NCZm0.cjs} +4 -4
- package/dist/{mcp-D8zhjyZa.mjs → mcp-DhuxpwTB.mjs} +4 -4
- package/dist/{runGemini-Db4rX54F.mjs → runGemini-BVJE7LZl.mjs} +6 -6
- package/dist/{runGemini-BIVHp0ST.cjs → runGemini-n0wD2Z9R.cjs} +6 -6
- package/dist/{runOpenClaw-D2MceXPO.mjs → runOpenClaw-CJaIYpB7.mjs} +5 -5
- package/dist/{runOpenClaw-a0f2pZZp.cjs → runOpenClaw-fYx1XweW.cjs} +5 -5
- package/dist/{send-DKbumEcg.cjs → send-WlJ4r3U2.cjs} +4 -4
- package/dist/{send-1Wjb0lIh.mjs → send-fWHOFJV9.mjs} +4 -4
- package/dist/{sessions-DXCCRDb5.mjs → sessions-5fJxQ2xj.mjs} +4 -4
- package/dist/{sessions-SIFOOlGp.cjs → sessions-Cx_3cvN6.cjs} +4 -4
- package/dist/{spawn-Bj3W6HR4.mjs → spawn-CF1ZV-YH.mjs} +4 -4
- package/dist/{spawn-C-XpSPLX.cjs → spawn-DVJtNwWN.cjs} +4 -4
- package/dist/{teams-ChFzXAqr.cjs → teams-BbYi0fWG.cjs} +4 -4
- package/dist/{teams-CqhFQLVC.mjs → teams-gzvKrMfn.mjs} +4 -4
- package/dist/{todo-B0gbQHH8.mjs → todo-BAK2DVLV.mjs} +3 -3
- package/dist/{todo-o0clp-_I.cjs → todo-DHY20tpD.cjs} +3 -3
- package/dist/{types-6DrEgHVx.mjs → types-BEXGahmj.mjs} +128 -35
- package/dist/{types-CcjVmS2i.cjs → types-DjAHWb4J.cjs} +129 -35
- package/package.json +8 -8
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('chalk');
|
|
4
|
-
require('./index-
|
|
5
|
-
require('./limits-
|
|
4
|
+
require('./index-DNbKbe23.cjs');
|
|
5
|
+
require('./limits-K17AgMHD.cjs');
|
|
6
6
|
require('zod');
|
|
7
|
-
require('./types-
|
|
7
|
+
require('./types-DjAHWb4J.cjs');
|
|
8
8
|
require('node:child_process');
|
|
9
9
|
require('node:os');
|
|
10
10
|
require('node:crypto');
|
|
@@ -12,7 +12,7 @@ require('cross-spawn');
|
|
|
12
12
|
require('node:path');
|
|
13
13
|
require('node:readline');
|
|
14
14
|
require('node:fs');
|
|
15
|
-
require('./agentGuidance-
|
|
15
|
+
require('./agentGuidance-DlZM_YPV.cjs');
|
|
16
16
|
require('node:fs/promises');
|
|
17
17
|
require('fs/promises');
|
|
18
18
|
require('ink');
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import 'chalk';
|
|
2
|
-
import './index-
|
|
3
|
-
import './limits-
|
|
2
|
+
import './index-gefLe1Bk.mjs';
|
|
3
|
+
import './limits-CPTgiQ9A.mjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import './types-
|
|
5
|
+
import './types-BEXGahmj.mjs';
|
|
6
6
|
import 'node:child_process';
|
|
7
7
|
import 'node:os';
|
|
8
8
|
import 'node:crypto';
|
|
@@ -10,7 +10,7 @@ import 'cross-spawn';
|
|
|
10
10
|
import 'node:path';
|
|
11
11
|
import 'node:readline';
|
|
12
12
|
import 'node:fs';
|
|
13
|
-
import './agentGuidance-
|
|
13
|
+
import './agentGuidance-7MByWxKj.mjs';
|
|
14
14
|
import 'node:fs/promises';
|
|
15
15
|
import 'fs/promises';
|
|
16
16
|
import 'ink';
|
|
@@ -3,10 +3,10 @@ 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-BEXGahmj.mjs';
|
|
7
|
+
import { t as tmuxSupportsSessionEnv } from './index-gefLe1Bk.mjs';
|
|
8
8
|
import 'axios';
|
|
9
|
-
import './limits-
|
|
9
|
+
import './limits-CPTgiQ9A.mjs';
|
|
10
10
|
import 'node:fs/promises';
|
|
11
11
|
import 'zod';
|
|
12
12
|
import 'node:crypto';
|
|
@@ -28,7 +28,7 @@ import 'fs';
|
|
|
28
28
|
import 'node:readline';
|
|
29
29
|
import '@anthropic-ai/sandbox-runtime';
|
|
30
30
|
import 'expo-server-sdk';
|
|
31
|
-
import './agentGuidance-
|
|
31
|
+
import './agentGuidance-7MByWxKj.mjs';
|
|
32
32
|
import 'ink';
|
|
33
33
|
import 'react';
|
|
34
34
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -5,10 +5,10 @@ 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 api = require('./types-
|
|
9
|
-
var index = require('./index-
|
|
8
|
+
var api = require('./types-DjAHWb4J.cjs');
|
|
9
|
+
var index = require('./index-DNbKbe23.cjs');
|
|
10
10
|
require('axios');
|
|
11
|
-
require('./limits-
|
|
11
|
+
require('./limits-K17AgMHD.cjs');
|
|
12
12
|
require('node:fs/promises');
|
|
13
13
|
require('zod');
|
|
14
14
|
require('node:crypto');
|
|
@@ -30,7 +30,7 @@ require('fs');
|
|
|
30
30
|
require('node:readline');
|
|
31
31
|
require('@anthropic-ai/sandbox-runtime');
|
|
32
32
|
require('expo-server-sdk');
|
|
33
|
-
require('./agentGuidance-
|
|
33
|
+
require('./agentGuidance-DlZM_YPV.cjs');
|
|
34
34
|
require('ink');
|
|
35
35
|
require('react');
|
|
36
36
|
require('@anthropic-ai/claude-agent-sdk');
|
package/dist/lib.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var api = require('./types-
|
|
4
|
-
var persistence = require('./limits-
|
|
3
|
+
var api = require('./types-DjAHWb4J.cjs');
|
|
4
|
+
var persistence = require('./limits-K17AgMHD.cjs');
|
|
5
5
|
require('axios');
|
|
6
6
|
require('node:events');
|
|
7
7
|
require('socket.io-client');
|
package/dist/lib.d.cts
CHANGED
|
@@ -33,6 +33,7 @@ declare const sessionEnvelopeSchema: z.ZodObject<{
|
|
|
33
33
|
t: z.ZodLiteral<"text">;
|
|
34
34
|
text: z.ZodString;
|
|
35
35
|
thinking: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
actualModel: z.ZodOptional<z.ZodString>;
|
|
36
37
|
}, z.core.$strip>, z.ZodObject<{
|
|
37
38
|
t: z.ZodLiteral<"service">;
|
|
38
39
|
text: z.ZodString;
|
|
@@ -379,6 +380,17 @@ type CliUpdateState = z$1.infer<typeof CliUpdateStateSchema>;
|
|
|
379
380
|
* Daemon state - dynamic runtime information (frequently updated)
|
|
380
381
|
*/
|
|
381
382
|
declare const DaemonStateSchema: z$1.ZodObject<{
|
|
383
|
+
agentVersions: z$1.ZodOptional<z$1.ZodObject<{
|
|
384
|
+
checkedAt: z$1.ZodNumber;
|
|
385
|
+
daemonPid: z$1.ZodNumber;
|
|
386
|
+
agents: z$1.ZodArray<z$1.ZodObject<{
|
|
387
|
+
id: z$1.ZodString;
|
|
388
|
+
installed: z$1.ZodNullable<z$1.ZodString>;
|
|
389
|
+
latest: z$1.ZodNullable<z$1.ZodString>;
|
|
390
|
+
status: z$1.ZodString;
|
|
391
|
+
}, z$1.core.$strip>>;
|
|
392
|
+
}, z$1.core.$strip>>;
|
|
393
|
+
agentVersionEpoch: z$1.ZodOptional<z$1.ZodNumber>;
|
|
382
394
|
status: z$1.ZodUnion<readonly [z$1.ZodEnum<{
|
|
383
395
|
running: "running";
|
|
384
396
|
"shutting-down": "shutting-down";
|
|
@@ -408,6 +420,8 @@ declare const DaemonStateSchema: z$1.ZodObject<{
|
|
|
408
420
|
idle: "idle";
|
|
409
421
|
shell: "shell";
|
|
410
422
|
}>>;
|
|
423
|
+
agentKind: z$1.ZodOptional<z$1.ZodString>;
|
|
424
|
+
agentObservedAt: z$1.ZodOptional<z$1.ZodNumber>;
|
|
411
425
|
mirrorSessionId: z$1.ZodOptional<z$1.ZodString>;
|
|
412
426
|
restoredAt: z$1.ZodOptional<z$1.ZodNumber>;
|
|
413
427
|
manual: z$1.ZodOptional<z$1.ZodBoolean>;
|
|
@@ -1184,66 +1198,8 @@ type SpawnSessionResult = {
|
|
|
1184
1198
|
errorMessage: string;
|
|
1185
1199
|
};
|
|
1186
1200
|
|
|
1187
|
-
/**
|
|
1188
|
-
|
|
1189
|
-
*
|
|
1190
|
-
* ── Architecture (Stage 1: daemon-authoritative screen) ──────────────────────
|
|
1191
|
-
* Each web terminal is a long-lived daemon session object that owns the screen
|
|
1192
|
-
* state, so client reconnect/redraw no longer relies on tmux redrawing on
|
|
1193
|
-
* re-attach. A session holds:
|
|
1194
|
-
* 1. a node-pty attached to a BACKGROUND tmux session `vh-<id>` (the pty is
|
|
1195
|
-
* just tmux's single stable client; the tmux session holds the process);
|
|
1196
|
-
* 2. an `@xterm/headless` Terminal — every pty output chunk is `.write()` into
|
|
1197
|
-
* it, so the daemon always has the authoritative screen + scrollback;
|
|
1198
|
-
* 3. a monotonic output `seq` (incremented per emitted chunk);
|
|
1199
|
-
* 4. a bounded ring buffer of recent `{ seq, data }` chunks, used to replay
|
|
1200
|
-
* only the gap after a brief client disconnect instead of a full snapshot.
|
|
1201
|
-
*
|
|
1202
|
-
* On (re)subscribe (`open`), the daemon returns either a REPLAY (the client's
|
|
1203
|
-
* `fromSeq..now` is still covered by the ring → send just the missing chunks) or
|
|
1204
|
-
* a SNAPSHOT (serialize the headless screen, bounded scrollback). The pty is NOT
|
|
1205
|
-
* recreated on re-subscribe — the browser connecting/disconnecting is pure
|
|
1206
|
-
* subscribe/unsubscribe against the daemon buffer. This is what kills the old
|
|
1207
|
-
* single-client redraw jitter: the daemon keeps exactly one steady tmux client;
|
|
1208
|
-
* it no longer creates/destroys a tmux client on every browser open/close.
|
|
1209
|
-
*
|
|
1210
|
-
* Cross-browser survival: closing the web view only marks the session as having
|
|
1211
|
-
* no subscribers; the pty (and headless buffer) live on. An idle reaper detaches
|
|
1212
|
-
* the pty only when it has no subscribers AND has been idle past the timeout
|
|
1213
|
-
* (tmux stays alive → reopening reattaches instantly). MAX_LIVE_SESSIONS still
|
|
1214
|
-
* LRU-evicts to protect the system PTY pool.
|
|
1215
|
-
*
|
|
1216
|
-
* Transport: raw bytes are relayed base64 over the (TLS) socket through the
|
|
1217
|
-
* server, consistent with the server-trusted model. open/input/resize/close are
|
|
1218
|
-
* driven from apiMachine; live output is pushed via the injected emit callback.
|
|
1219
|
-
* If tmux isn't installed we fall back to the login shell directly (no local
|
|
1220
|
-
* attach / no background survival, but the terminal still works).
|
|
1221
|
-
*
|
|
1222
|
-
* ── List push (Stage 2: daemon-driven terminal list) ─────────────────────────
|
|
1223
|
-
* The manager also runs ONE internal list-tracking loop (startListTracking):
|
|
1224
|
-
* every tick it rebuilds the cross-device list (tmux membership + @vh_title
|
|
1225
|
-
* follow + agent classification + activity) and fires the callback only when
|
|
1226
|
-
* the list SIGNATURE changed (terminalListSignature — activityAt quantized so
|
|
1227
|
-
* raw output alone can't turn it into a metronome). Event kicks (open / kill /
|
|
1228
|
-
* exit / rename / live OSC title via headless onTitleChange) refresh within
|
|
1229
|
-
* LIST_KICK_DEBOUNCE_MS instead of waiting for the tick. apiMachine writes each
|
|
1230
|
-
* changed list into daemonState.webTerminals, which the server persists and
|
|
1231
|
-
* broadcasts — clients consume the push instead of polling `list-terminals`
|
|
1232
|
-
* (the RPC remains for old clients; both return the same item shape).
|
|
1233
|
-
*
|
|
1234
|
-
* ── Realtime activity (Stage 3: ephemeral `terminal-activity`) ───────────────
|
|
1235
|
-
* The list push above is the DURABLE lane and is deliberately coarse: one push
|
|
1236
|
-
* costs a full daemonState encrypt + CAS + DB write + broadcast, so activity
|
|
1237
|
-
* only participates in its signature at 60s granularity — which meant a
|
|
1238
|
-
* terminal that was merely PRINTING could take up to a minute to float to the
|
|
1239
|
-
* top of the sidebar. Stage 3 adds a second, ephemeral lane for exactly that
|
|
1240
|
-
* one number: `terminal-activity` frames carrying `[{ id, activityAt }]`,
|
|
1241
|
-
* relayed by the server to the account's web clients and stored nowhere. Fed
|
|
1242
|
-
* by the live pty stream (leading-edge throttled to ~1s) and by the tracking
|
|
1243
|
-
* tick (which is the only observer of COLD sessions' tmux activity). Emitted
|
|
1244
|
-
* only when a value actually moved, so an idle machine sends nothing at all.
|
|
1245
|
-
* The 60s bucket stays exactly as it is — the two lanes have different jobs.
|
|
1246
|
-
*/
|
|
1201
|
+
/** Agent-specific visible-screen adapters. Unknown is deliberately not idle. */
|
|
1202
|
+
type CodingAgentKind = 'claude' | 'codex' | 'pi';
|
|
1247
1203
|
|
|
1248
1204
|
/**
|
|
1249
1205
|
* Coarse state of the agent (Claude Code) inside a web terminal, surfaced in
|
|
@@ -1267,6 +1223,8 @@ interface TerminalListItem {
|
|
|
1267
1223
|
createdAt?: number;
|
|
1268
1224
|
activityAt?: number;
|
|
1269
1225
|
agentState?: AgentState;
|
|
1226
|
+
agentKind?: CodingAgentKind;
|
|
1227
|
+
agentObservedAt?: number;
|
|
1270
1228
|
/** Mirror reconcile (design v3): stricter "claude is really here" gate (its
|
|
1271
1229
|
* own TUI footer/dialog present) — daemon-internal, NOT pushed to web and
|
|
1272
1230
|
* NOT part of the list signature. Only this may trigger mirror adopt (which
|
|
@@ -1347,6 +1305,8 @@ declare class ApiMachineClient {
|
|
|
1347
1305
|
* stale" so the FIRST keep-alive tick always probes and populates the
|
|
1348
1306
|
* machine metadata that a connecting/reconnecting web client reads. */
|
|
1349
1307
|
private lastCliProbeAt;
|
|
1308
|
+
/** Stable across socket reconnects; a new client/run invalidates old version checks. */
|
|
1309
|
+
private readonly agentVersionEpoch;
|
|
1350
1310
|
private cliUpdateState;
|
|
1351
1311
|
private cliUpdatePushChain;
|
|
1352
1312
|
private claudeAuthState;
|
package/dist/lib.d.mts
CHANGED
|
@@ -33,6 +33,7 @@ declare const sessionEnvelopeSchema: z.ZodObject<{
|
|
|
33
33
|
t: z.ZodLiteral<"text">;
|
|
34
34
|
text: z.ZodString;
|
|
35
35
|
thinking: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
actualModel: z.ZodOptional<z.ZodString>;
|
|
36
37
|
}, z.core.$strip>, z.ZodObject<{
|
|
37
38
|
t: z.ZodLiteral<"service">;
|
|
38
39
|
text: z.ZodString;
|
|
@@ -379,6 +380,17 @@ type CliUpdateState = z$1.infer<typeof CliUpdateStateSchema>;
|
|
|
379
380
|
* Daemon state - dynamic runtime information (frequently updated)
|
|
380
381
|
*/
|
|
381
382
|
declare const DaemonStateSchema: z$1.ZodObject<{
|
|
383
|
+
agentVersions: z$1.ZodOptional<z$1.ZodObject<{
|
|
384
|
+
checkedAt: z$1.ZodNumber;
|
|
385
|
+
daemonPid: z$1.ZodNumber;
|
|
386
|
+
agents: z$1.ZodArray<z$1.ZodObject<{
|
|
387
|
+
id: z$1.ZodString;
|
|
388
|
+
installed: z$1.ZodNullable<z$1.ZodString>;
|
|
389
|
+
latest: z$1.ZodNullable<z$1.ZodString>;
|
|
390
|
+
status: z$1.ZodString;
|
|
391
|
+
}, z$1.core.$strip>>;
|
|
392
|
+
}, z$1.core.$strip>>;
|
|
393
|
+
agentVersionEpoch: z$1.ZodOptional<z$1.ZodNumber>;
|
|
382
394
|
status: z$1.ZodUnion<readonly [z$1.ZodEnum<{
|
|
383
395
|
running: "running";
|
|
384
396
|
"shutting-down": "shutting-down";
|
|
@@ -408,6 +420,8 @@ declare const DaemonStateSchema: z$1.ZodObject<{
|
|
|
408
420
|
idle: "idle";
|
|
409
421
|
shell: "shell";
|
|
410
422
|
}>>;
|
|
423
|
+
agentKind: z$1.ZodOptional<z$1.ZodString>;
|
|
424
|
+
agentObservedAt: z$1.ZodOptional<z$1.ZodNumber>;
|
|
411
425
|
mirrorSessionId: z$1.ZodOptional<z$1.ZodString>;
|
|
412
426
|
restoredAt: z$1.ZodOptional<z$1.ZodNumber>;
|
|
413
427
|
manual: z$1.ZodOptional<z$1.ZodBoolean>;
|
|
@@ -1184,66 +1198,8 @@ type SpawnSessionResult = {
|
|
|
1184
1198
|
errorMessage: string;
|
|
1185
1199
|
};
|
|
1186
1200
|
|
|
1187
|
-
/**
|
|
1188
|
-
|
|
1189
|
-
*
|
|
1190
|
-
* ── Architecture (Stage 1: daemon-authoritative screen) ──────────────────────
|
|
1191
|
-
* Each web terminal is a long-lived daemon session object that owns the screen
|
|
1192
|
-
* state, so client reconnect/redraw no longer relies on tmux redrawing on
|
|
1193
|
-
* re-attach. A session holds:
|
|
1194
|
-
* 1. a node-pty attached to a BACKGROUND tmux session `vh-<id>` (the pty is
|
|
1195
|
-
* just tmux's single stable client; the tmux session holds the process);
|
|
1196
|
-
* 2. an `@xterm/headless` Terminal — every pty output chunk is `.write()` into
|
|
1197
|
-
* it, so the daemon always has the authoritative screen + scrollback;
|
|
1198
|
-
* 3. a monotonic output `seq` (incremented per emitted chunk);
|
|
1199
|
-
* 4. a bounded ring buffer of recent `{ seq, data }` chunks, used to replay
|
|
1200
|
-
* only the gap after a brief client disconnect instead of a full snapshot.
|
|
1201
|
-
*
|
|
1202
|
-
* On (re)subscribe (`open`), the daemon returns either a REPLAY (the client's
|
|
1203
|
-
* `fromSeq..now` is still covered by the ring → send just the missing chunks) or
|
|
1204
|
-
* a SNAPSHOT (serialize the headless screen, bounded scrollback). The pty is NOT
|
|
1205
|
-
* recreated on re-subscribe — the browser connecting/disconnecting is pure
|
|
1206
|
-
* subscribe/unsubscribe against the daemon buffer. This is what kills the old
|
|
1207
|
-
* single-client redraw jitter: the daemon keeps exactly one steady tmux client;
|
|
1208
|
-
* it no longer creates/destroys a tmux client on every browser open/close.
|
|
1209
|
-
*
|
|
1210
|
-
* Cross-browser survival: closing the web view only marks the session as having
|
|
1211
|
-
* no subscribers; the pty (and headless buffer) live on. An idle reaper detaches
|
|
1212
|
-
* the pty only when it has no subscribers AND has been idle past the timeout
|
|
1213
|
-
* (tmux stays alive → reopening reattaches instantly). MAX_LIVE_SESSIONS still
|
|
1214
|
-
* LRU-evicts to protect the system PTY pool.
|
|
1215
|
-
*
|
|
1216
|
-
* Transport: raw bytes are relayed base64 over the (TLS) socket through the
|
|
1217
|
-
* server, consistent with the server-trusted model. open/input/resize/close are
|
|
1218
|
-
* driven from apiMachine; live output is pushed via the injected emit callback.
|
|
1219
|
-
* If tmux isn't installed we fall back to the login shell directly (no local
|
|
1220
|
-
* attach / no background survival, but the terminal still works).
|
|
1221
|
-
*
|
|
1222
|
-
* ── List push (Stage 2: daemon-driven terminal list) ─────────────────────────
|
|
1223
|
-
* The manager also runs ONE internal list-tracking loop (startListTracking):
|
|
1224
|
-
* every tick it rebuilds the cross-device list (tmux membership + @vh_title
|
|
1225
|
-
* follow + agent classification + activity) and fires the callback only when
|
|
1226
|
-
* the list SIGNATURE changed (terminalListSignature — activityAt quantized so
|
|
1227
|
-
* raw output alone can't turn it into a metronome). Event kicks (open / kill /
|
|
1228
|
-
* exit / rename / live OSC title via headless onTitleChange) refresh within
|
|
1229
|
-
* LIST_KICK_DEBOUNCE_MS instead of waiting for the tick. apiMachine writes each
|
|
1230
|
-
* changed list into daemonState.webTerminals, which the server persists and
|
|
1231
|
-
* broadcasts — clients consume the push instead of polling `list-terminals`
|
|
1232
|
-
* (the RPC remains for old clients; both return the same item shape).
|
|
1233
|
-
*
|
|
1234
|
-
* ── Realtime activity (Stage 3: ephemeral `terminal-activity`) ───────────────
|
|
1235
|
-
* The list push above is the DURABLE lane and is deliberately coarse: one push
|
|
1236
|
-
* costs a full daemonState encrypt + CAS + DB write + broadcast, so activity
|
|
1237
|
-
* only participates in its signature at 60s granularity — which meant a
|
|
1238
|
-
* terminal that was merely PRINTING could take up to a minute to float to the
|
|
1239
|
-
* top of the sidebar. Stage 3 adds a second, ephemeral lane for exactly that
|
|
1240
|
-
* one number: `terminal-activity` frames carrying `[{ id, activityAt }]`,
|
|
1241
|
-
* relayed by the server to the account's web clients and stored nowhere. Fed
|
|
1242
|
-
* by the live pty stream (leading-edge throttled to ~1s) and by the tracking
|
|
1243
|
-
* tick (which is the only observer of COLD sessions' tmux activity). Emitted
|
|
1244
|
-
* only when a value actually moved, so an idle machine sends nothing at all.
|
|
1245
|
-
* The 60s bucket stays exactly as it is — the two lanes have different jobs.
|
|
1246
|
-
*/
|
|
1201
|
+
/** Agent-specific visible-screen adapters. Unknown is deliberately not idle. */
|
|
1202
|
+
type CodingAgentKind = 'claude' | 'codex' | 'pi';
|
|
1247
1203
|
|
|
1248
1204
|
/**
|
|
1249
1205
|
* Coarse state of the agent (Claude Code) inside a web terminal, surfaced in
|
|
@@ -1267,6 +1223,8 @@ interface TerminalListItem {
|
|
|
1267
1223
|
createdAt?: number;
|
|
1268
1224
|
activityAt?: number;
|
|
1269
1225
|
agentState?: AgentState;
|
|
1226
|
+
agentKind?: CodingAgentKind;
|
|
1227
|
+
agentObservedAt?: number;
|
|
1270
1228
|
/** Mirror reconcile (design v3): stricter "claude is really here" gate (its
|
|
1271
1229
|
* own TUI footer/dialog present) — daemon-internal, NOT pushed to web and
|
|
1272
1230
|
* NOT part of the list signature. Only this may trigger mirror adopt (which
|
|
@@ -1347,6 +1305,8 @@ declare class ApiMachineClient {
|
|
|
1347
1305
|
* stale" so the FIRST keep-alive tick always probes and populates the
|
|
1348
1306
|
* machine metadata that a connecting/reconnecting web client reads. */
|
|
1349
1307
|
private lastCliProbeAt;
|
|
1308
|
+
/** Stable across socket reconnects; a new client/run invalidates old version checks. */
|
|
1309
|
+
private readonly agentVersionEpoch;
|
|
1350
1310
|
private cliUpdateState;
|
|
1351
1311
|
private cliUpdatePushChain;
|
|
1352
1312
|
private claudeAuthState;
|
package/dist/lib.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-
|
|
2
|
-
export { c as configuration, l as logger } from './limits-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-BEXGahmj.mjs';
|
|
2
|
+
export { c as configuration, l as logger } from './limits-CPTgiQ9A.mjs';
|
|
3
3
|
import 'axios';
|
|
4
4
|
import 'node:events';
|
|
5
5
|
import 'socket.io-client';
|
|
@@ -9,7 +9,7 @@ import chalk from 'chalk';
|
|
|
9
9
|
import { inspect } from 'node:util';
|
|
10
10
|
|
|
11
11
|
var name = "very-happy-cli";
|
|
12
|
-
var version = "0.2.
|
|
12
|
+
var version = "0.2.135";
|
|
13
13
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
14
14
|
var author = "Kirill Dubovitskiy";
|
|
15
15
|
var contributors = [
|
|
@@ -88,7 +88,7 @@ var scripts = {
|
|
|
88
88
|
};
|
|
89
89
|
var dependencies = {
|
|
90
90
|
"@agentclientprotocol/sdk": "^0.14.1",
|
|
91
|
-
"@anthropic-ai/claude-agent-sdk": "
|
|
91
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.267",
|
|
92
92
|
"@anthropic-ai/sandbox-runtime": "^0.0.37",
|
|
93
93
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
94
94
|
"@noble/ed25519": "^3.0.0",
|
|
@@ -122,12 +122,12 @@ var dependencies = {
|
|
|
122
122
|
zod: "^4.0.0"
|
|
123
123
|
};
|
|
124
124
|
var optionalDependencies = {
|
|
125
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
126
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
127
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
128
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
129
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
130
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
125
|
+
"very-happy-tools-arm64-darwin": "0.2.135",
|
|
126
|
+
"very-happy-tools-x64-darwin": "0.2.135",
|
|
127
|
+
"very-happy-tools-arm64-linux": "0.2.135",
|
|
128
|
+
"very-happy-tools-x64-linux": "0.2.135",
|
|
129
|
+
"very-happy-tools-arm64-win32": "0.2.135",
|
|
130
|
+
"very-happy-tools-x64-win32": "0.2.135"
|
|
131
131
|
};
|
|
132
132
|
var devDependencies = {
|
|
133
133
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -30,7 +30,7 @@ function _interopNamespaceDefault(e) {
|
|
|
30
30
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
31
31
|
|
|
32
32
|
var name = "very-happy-cli";
|
|
33
|
-
var version = "0.2.
|
|
33
|
+
var version = "0.2.135";
|
|
34
34
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
35
35
|
var author = "Kirill Dubovitskiy";
|
|
36
36
|
var contributors = [
|
|
@@ -109,7 +109,7 @@ var scripts = {
|
|
|
109
109
|
};
|
|
110
110
|
var dependencies = {
|
|
111
111
|
"@agentclientprotocol/sdk": "^0.14.1",
|
|
112
|
-
"@anthropic-ai/claude-agent-sdk": "
|
|
112
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.267",
|
|
113
113
|
"@anthropic-ai/sandbox-runtime": "^0.0.37",
|
|
114
114
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
115
115
|
"@noble/ed25519": "^3.0.0",
|
|
@@ -143,12 +143,12 @@ var dependencies = {
|
|
|
143
143
|
zod: "^4.0.0"
|
|
144
144
|
};
|
|
145
145
|
var optionalDependencies = {
|
|
146
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
147
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
148
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
149
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
150
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
151
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
146
|
+
"very-happy-tools-arm64-darwin": "0.2.135",
|
|
147
|
+
"very-happy-tools-x64-darwin": "0.2.135",
|
|
148
|
+
"very-happy-tools-arm64-linux": "0.2.135",
|
|
149
|
+
"very-happy-tools-x64-linux": "0.2.135",
|
|
150
|
+
"very-happy-tools-arm64-win32": "0.2.135",
|
|
151
|
+
"very-happy-tools-x64-win32": "0.2.135"
|
|
152
152
|
};
|
|
153
153
|
var devDependencies = {
|
|
154
154
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var agentGuidance = require('./agentGuidance-
|
|
3
|
+
var agentGuidance = require('./agentGuidance-DlZM_YPV.cjs');
|
|
4
4
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
5
5
|
var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
6
6
|
var z = require('zod');
|
|
7
|
-
var index = require('./index-
|
|
8
|
-
var persistence = require('./limits-
|
|
7
|
+
var index = require('./index-DNbKbe23.cjs');
|
|
8
|
+
var persistence = require('./limits-K17AgMHD.cjs');
|
|
9
9
|
require('node:fs/promises');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('node:crypto');
|
|
@@ -13,7 +13,7 @@ require('axios');
|
|
|
13
13
|
require('tweetnacl');
|
|
14
14
|
require('socket.io-client');
|
|
15
15
|
require('node:child_process');
|
|
16
|
-
require('./types-
|
|
16
|
+
require('./types-DjAHWb4J.cjs');
|
|
17
17
|
require('node:fs');
|
|
18
18
|
require('node:path');
|
|
19
19
|
require('chalk');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { r as registerTeamsTools } from './agentGuidance-
|
|
1
|
+
import { r as registerTeamsTools } from './agentGuidance-7MByWxKj.mjs';
|
|
2
2
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { p as pushClipboardViaDaemon, k as setTerminalTitleViaDaemon, m as registerAssistantSessionTools } from './index-
|
|
6
|
-
import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES } from './limits-
|
|
5
|
+
import { p as pushClipboardViaDaemon, k as setTerminalTitleViaDaemon, m as registerAssistantSessionTools } from './index-gefLe1Bk.mjs';
|
|
6
|
+
import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES } from './limits-CPTgiQ9A.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import 'node:crypto';
|
|
@@ -11,7 +11,7 @@ import 'axios';
|
|
|
11
11
|
import 'tweetnacl';
|
|
12
12
|
import 'socket.io-client';
|
|
13
13
|
import 'node:child_process';
|
|
14
|
-
import './types-
|
|
14
|
+
import './types-BEXGahmj.mjs';
|
|
15
15
|
import 'node:fs';
|
|
16
16
|
import 'node:path';
|
|
17
17
|
import 'chalk';
|
|
@@ -2,11 +2,11 @@ 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 { f as connectionState, A as ApiClient, e as errorLogMetadata, p as projectPath, d as contentLogMetadata } from './types-
|
|
6
|
-
import { l as logger, g as readSettings, i as encodeBase64 } from './limits-
|
|
7
|
-
import { Q as GEMINI_API_KEY_ENV, R as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, K as BasePermissionHandler, U as BaseReasoningProcessor, n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, B as hashObject, V as MessageBuffer, W as CHANGE_TITLE_INSTRUCTION, y as registerKillSessionHandler, C as startHappyServer } from './index-
|
|
8
|
-
import { A as AcpBackend } from './AcpBackend-
|
|
9
|
-
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-
|
|
5
|
+
import { f as connectionState, A as ApiClient, e as errorLogMetadata, p as projectPath, d as contentLogMetadata } from './types-BEXGahmj.mjs';
|
|
6
|
+
import { l as logger, g as readSettings, i as encodeBase64 } from './limits-CPTgiQ9A.mjs';
|
|
7
|
+
import { Q as GEMINI_API_KEY_ENV, R as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, K as BasePermissionHandler, U as BaseReasoningProcessor, n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, B as hashObject, V as MessageBuffer, W as CHANGE_TITLE_INSTRUCTION, y as registerKillSessionHandler, C as startHappyServer } from './index-gefLe1Bk.mjs';
|
|
8
|
+
import { A as AcpBackend } from './AcpBackend-CkDpu1n_.mjs';
|
|
9
|
+
import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DzvbcL_x.mjs';
|
|
10
10
|
import 'axios';
|
|
11
11
|
import 'node:events';
|
|
12
12
|
import 'socket.io-client';
|
|
@@ -32,7 +32,7 @@ import '@anthropic-ai/sandbox-runtime';
|
|
|
32
32
|
import 'expo-server-sdk';
|
|
33
33
|
import 'chalk';
|
|
34
34
|
import 'node:util';
|
|
35
|
-
import './agentGuidance-
|
|
35
|
+
import './agentGuidance-7MByWxKj.mjs';
|
|
36
36
|
import '@anthropic-ai/claude-agent-sdk';
|
|
37
37
|
import 'ps-list';
|
|
38
38
|
import 'tmp';
|
|
@@ -4,11 +4,11 @@ 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 api = require('./types-
|
|
8
|
-
var persistence = require('./limits-
|
|
9
|
-
var index = require('./index-
|
|
10
|
-
var AcpBackend = require('./AcpBackend-
|
|
11
|
-
var config = require('./config-
|
|
7
|
+
var api = require('./types-DjAHWb4J.cjs');
|
|
8
|
+
var persistence = require('./limits-K17AgMHD.cjs');
|
|
9
|
+
var index = require('./index-DNbKbe23.cjs');
|
|
10
|
+
var AcpBackend = require('./AcpBackend-C0Bwx6bc.cjs');
|
|
11
|
+
var config = require('./config-BO0ZHyoB.cjs');
|
|
12
12
|
require('axios');
|
|
13
13
|
require('node:events');
|
|
14
14
|
require('socket.io-client');
|
|
@@ -34,7 +34,7 @@ require('@anthropic-ai/sandbox-runtime');
|
|
|
34
34
|
require('expo-server-sdk');
|
|
35
35
|
require('chalk');
|
|
36
36
|
require('node:util');
|
|
37
|
-
require('./agentGuidance-
|
|
37
|
+
require('./agentGuidance-DlZM_YPV.cjs');
|
|
38
38
|
require('@anthropic-ai/claude-agent-sdk');
|
|
39
39
|
require('ps-list');
|
|
40
40
|
require('tmp');
|
|
@@ -3,10 +3,10 @@ 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 { e as errorLogMetadata, d as contentLogMetadata, f as connectionState, A as ApiClient } from './types-
|
|
7
|
-
import { A as AcpSessionManager } from './AcpSessionManager-
|
|
8
|
-
import { f as ensurePrivateDirectorySync, h as hardenPrivateFileSync, w as writePrivateFileSync, g as readSettings, i as encodeBase64, l as logger, c as configuration } from './limits-
|
|
9
|
-
import { n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, y as registerKillSessionHandler } from './index-
|
|
6
|
+
import { e as errorLogMetadata, d as contentLogMetadata, f as connectionState, A as ApiClient } from './types-BEXGahmj.mjs';
|
|
7
|
+
import { A as AcpSessionManager } from './AcpSessionManager-DB_mfFaH.mjs';
|
|
8
|
+
import { f as ensurePrivateDirectorySync, h as hardenPrivateFileSync, w as writePrivateFileSync, g as readSettings, i as encodeBase64, l as logger, c as configuration } from './limits-CPTgiQ9A.mjs';
|
|
9
|
+
import { n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, y as registerKillSessionHandler } from './index-gefLe1Bk.mjs';
|
|
10
10
|
import WebSocket from 'ws';
|
|
11
11
|
import * as ed from '@noble/ed25519';
|
|
12
12
|
import { sha512 } from '@noble/hashes/sha2.js';
|
|
@@ -32,7 +32,7 @@ import '@anthropic-ai/sandbox-runtime';
|
|
|
32
32
|
import 'expo-server-sdk';
|
|
33
33
|
import 'chalk';
|
|
34
34
|
import 'node:util';
|
|
35
|
-
import './agentGuidance-
|
|
35
|
+
import './agentGuidance-7MByWxKj.mjs';
|
|
36
36
|
import 'ink';
|
|
37
37
|
import 'react';
|
|
38
38
|
import '@anthropic-ai/claude-agent-sdk';
|
|
@@ -5,10 +5,10 @@ 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 api = require('./types-
|
|
9
|
-
var AcpSessionManager = require('./AcpSessionManager-
|
|
10
|
-
var persistence = require('./limits-
|
|
11
|
-
var index = require('./index-
|
|
8
|
+
var api = require('./types-DjAHWb4J.cjs');
|
|
9
|
+
var AcpSessionManager = require('./AcpSessionManager-DqvUp-UU.cjs');
|
|
10
|
+
var persistence = require('./limits-K17AgMHD.cjs');
|
|
11
|
+
var index = require('./index-DNbKbe23.cjs');
|
|
12
12
|
var WebSocket = require('ws');
|
|
13
13
|
var ed = require('@noble/ed25519');
|
|
14
14
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
@@ -34,7 +34,7 @@ require('@anthropic-ai/sandbox-runtime');
|
|
|
34
34
|
require('expo-server-sdk');
|
|
35
35
|
require('chalk');
|
|
36
36
|
require('node:util');
|
|
37
|
-
require('./agentGuidance-
|
|
37
|
+
require('./agentGuidance-DlZM_YPV.cjs');
|
|
38
38
|
require('ink');
|
|
39
39
|
require('react');
|
|
40
40
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -3,15 +3,15 @@
|
|
|
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('./limits-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./limits-K17AgMHD.cjs');
|
|
7
|
+
var index = require('./index-DNbKbe23.cjs');
|
|
8
8
|
require('node:fs/promises');
|
|
9
9
|
require('node:os');
|
|
10
10
|
require('zod');
|
|
11
11
|
require('node:crypto');
|
|
12
12
|
require('tweetnacl');
|
|
13
13
|
require('node:util');
|
|
14
|
-
require('./types-
|
|
14
|
+
require('./types-DjAHWb4J.cjs');
|
|
15
15
|
require('axios');
|
|
16
16
|
require('node:events');
|
|
17
17
|
require('socket.io-client');
|
|
@@ -30,7 +30,7 @@ require('fs');
|
|
|
30
30
|
require('node:readline');
|
|
31
31
|
require('@anthropic-ai/sandbox-runtime');
|
|
32
32
|
require('expo-server-sdk');
|
|
33
|
-
require('./agentGuidance-
|
|
33
|
+
require('./agentGuidance-DlZM_YPV.cjs');
|
|
34
34
|
require('ink');
|
|
35
35
|
require('react');
|
|
36
36
|
require('@anthropic-ai/claude-agent-sdk');
|
|
@@ -1,15 +1,15 @@
|
|
|
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 './limits-
|
|
5
|
-
import { d as sendUserMessage, a as sessionWebUrl } from './index-
|
|
4
|
+
import { r as readPersistedSessions, c as configuration } from './limits-CPTgiQ9A.mjs';
|
|
5
|
+
import { d as sendUserMessage, a as sessionWebUrl } from './index-gefLe1Bk.mjs';
|
|
6
6
|
import 'node:fs/promises';
|
|
7
7
|
import 'node:os';
|
|
8
8
|
import 'zod';
|
|
9
9
|
import 'node:crypto';
|
|
10
10
|
import 'tweetnacl';
|
|
11
11
|
import 'node:util';
|
|
12
|
-
import './types-
|
|
12
|
+
import './types-BEXGahmj.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'node:events';
|
|
15
15
|
import 'socket.io-client';
|
|
@@ -28,7 +28,7 @@ import 'fs';
|
|
|
28
28
|
import 'node:readline';
|
|
29
29
|
import '@anthropic-ai/sandbox-runtime';
|
|
30
30
|
import 'expo-server-sdk';
|
|
31
|
-
import './agentGuidance-
|
|
31
|
+
import './agentGuidance-7MByWxKj.mjs';
|
|
32
32
|
import 'ink';
|
|
33
33
|
import 'react';
|
|
34
34
|
import '@anthropic-ai/claude-agent-sdk';
|