very-happy-cli 0.2.156 → 0.2.158
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-BHe1_F1h.cjs → AcpBackend-DIDRig5G.cjs} +2 -2
- package/dist/{AcpBackend-C3nc1u-s.mjs → AcpBackend-vDVLHuYJ.mjs} +2 -2
- package/dist/{AcpSessionManager-BVxkQnNf.cjs → AcpSessionManager-C44U99CC.cjs} +1 -1
- package/dist/{AcpSessionManager-dN3k1LbI.mjs → AcpSessionManager-CmRjfhn3.mjs} +1 -1
- package/dist/{agentGuidance-C604n0Zq.mjs → agentGuidance-CrR9l62U.mjs} +562 -30
- package/dist/{agentGuidance-C-CmV03f.cjs → agentGuidance-DwOWbX55.cjs} +581 -29
- package/dist/{agentHome-D2XGsoqs.mjs → agentHome-CyLmGH5L.mjs} +2 -2
- package/dist/{agentHome-CmIJNV7f.cjs → agentHome-Dw8Jx_CJ.cjs} +2 -2
- package/dist/{auto-B1I6G_Nf.mjs → auto-BlMZPwOk.mjs} +19 -10
- package/dist/{auto-CMDq4oIu.cjs → auto-DZbNcTXx.cjs} +19 -10
- package/dist/codex/happyMcpStdioBridge.cjs +2 -2
- package/dist/codex/happyMcpStdioBridge.mjs +2 -2
- package/dist/{config-BkTu25bH.mjs → config-BtPArqRH.mjs} +4 -4
- package/dist/{config-BYHSRY2E.cjs → config-DG84bjwF.cjs} +4 -4
- package/dist/{index-BbtR-Qto.cjs → index-BG932eCh.cjs} +292 -47
- package/dist/{index-DAAreiRF.mjs → index-CVCt3kSt.mjs} +289 -44
- package/dist/{index-CB8QnjvS.cjs → index-D5ScEErM.cjs} +4 -4
- package/dist/{index-B_-7NpGZ.cjs → index-DPCsWlWK.cjs} +7 -7
- package/dist/{index-PYO8Mdz4.mjs → index-DgO0FHOx.mjs} +4 -4
- package/dist/{index-B5QbzEga.mjs → index-ZChGsuB7.mjs} +8 -8
- package/dist/index.cjs +4 -4
- package/dist/index.mjs +4 -4
- package/dist/{install-CNtXzwT_.mjs → install-DarS_Wco.mjs} +1 -1
- package/dist/{install-CO1ps6Wt.cjs → install-wKQGgXvN.cjs} +1 -1
- package/dist/{installTerminalHooks-CMpOV3RU.mjs → installTerminalHooks-CpNbRFPz.mjs} +4 -4
- package/dist/{installTerminalHooks-BOAnQ1Qe.cjs → installTerminalHooks-DcQfee_O.cjs} +4 -4
- package/dist/lib.cjs +2 -2
- package/dist/lib.d.cts +77 -1
- package/dist/lib.d.mts +77 -1
- package/dist/lib.mjs +2 -2
- package/dist/{limits-DmMdchTz.mjs → limits-D2uN090G.mjs} +163 -11
- package/dist/{limits-o29KXBgj.cjs → limits-kqFqhfsh.cjs} +170 -10
- package/dist/{mcp-C_uejotl.mjs → mcp-BN6bKIGb.mjs} +4 -4
- package/dist/{mcp-CwK1nI7Y.cjs → mcp-DGdeUUDJ.cjs} +4 -4
- package/dist/{piRuntime-Dj5WnqzJ.cjs → piRuntime-3qtbKujX.cjs} +2 -2
- package/dist/{piRuntime-Cu2-8nOT.mjs → piRuntime-bkw2NAZU.mjs} +2 -2
- package/dist/{piTerminal-D-BIbov9.cjs → piTerminal-BYxp3LMr.cjs} +6 -6
- package/dist/{piTerminal-DanZeBrO.mjs → piTerminal-DilKwM7B.mjs} +6 -6
- package/dist/{runGemini--QqK-Ap5.cjs → runGemini-28O2sqyI.cjs} +6 -6
- package/dist/{runGemini-CZ_lhMWY.mjs → runGemini-Cjii069p.mjs} +6 -6
- package/dist/{runOpenClaw-C0xLhTvk.cjs → runOpenClaw-CiMZad-H.cjs} +5 -5
- package/dist/{runOpenClaw-CxgLpm38.mjs → runOpenClaw-jaLr7KF1.mjs} +5 -5
- package/dist/{send-BaOkDgH0.mjs → send-C9mOtChi.mjs} +43 -31
- package/dist/{send-CTcGMVuG.cjs → send-D5ejHPXG.cjs} +43 -31
- package/dist/{sessions-OmvyJb0n.cjs → sessions-BNMPQoLE.cjs} +133 -49
- package/dist/{sessions-Bn304xF1.mjs → sessions-W6771g3X.mjs} +133 -49
- package/dist/{spawn-BKNabutV.mjs → spawn-D0QVhzRb.mjs} +4 -4
- package/dist/{spawn-CC6V2KiA.cjs → spawn-Ddtom1cb.cjs} +4 -4
- package/dist/{teams-XtrH3_h3.cjs → teams-BZ1tayg_.cjs} +5 -5
- package/dist/{teams-CLbS2_4Q.mjs → teams-CqSwtw2O.mjs} +5 -5
- package/dist/{todo-CEDvKNXK.cjs → todo-BYMg0fR0.cjs} +2 -2
- package/dist/{todo-BcPbNKt2.mjs → todo-BbusB1zM.mjs} +2 -2
- package/dist/{types-BEVzYSoV.mjs → types-DIBF4U0Y.mjs} +78 -5
- package/dist/{types-CphWjqHc.cjs → types-DnrPeN80.cjs} +78 -5
- package/package.json +7 -7
|
@@ -11,7 +11,7 @@ import { homedir } from 'node:os';
|
|
|
11
11
|
import { join, basename } from 'node:path';
|
|
12
12
|
|
|
13
13
|
var name = "very-happy-cli";
|
|
14
|
-
var version = "0.2.
|
|
14
|
+
var version = "0.2.158";
|
|
15
15
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
16
16
|
var author = "Kirill Dubovitskiy";
|
|
17
17
|
var contributors = [
|
|
@@ -128,12 +128,12 @@ var dependencies = {
|
|
|
128
128
|
zod: "^4.0.0"
|
|
129
129
|
};
|
|
130
130
|
var optionalDependencies = {
|
|
131
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
132
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
133
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
134
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
135
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
136
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
131
|
+
"very-happy-tools-arm64-darwin": "0.2.158",
|
|
132
|
+
"very-happy-tools-x64-darwin": "0.2.158",
|
|
133
|
+
"very-happy-tools-arm64-linux": "0.2.158",
|
|
134
|
+
"very-happy-tools-x64-linux": "0.2.158",
|
|
135
|
+
"very-happy-tools-arm64-win32": "0.2.158",
|
|
136
|
+
"very-happy-tools-x64-win32": "0.2.158"
|
|
137
137
|
};
|
|
138
138
|
var devDependencies = {
|
|
139
139
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1571,7 +1571,7 @@ const TeamActionSchema = z$1.discriminatedUnion("type", [
|
|
|
1571
1571
|
z$1.object({ requestId: id$1, action: TeamActionSchema });
|
|
1572
1572
|
z$1.object({ name: id$1, machineId: id$1, requestId: id$1.optional(), launch: TeamLaunchSchema.optional() });
|
|
1573
1573
|
const id = z$1.string().min(1).max(128);
|
|
1574
|
-
const text = z$1.string().min(1).max(32e3);
|
|
1574
|
+
const text$2 = z$1.string().min(1).max(32e3);
|
|
1575
1575
|
const AUTOMATION_NAME_PATTERN = /^[a-z0-9][a-z0-9-_.]{0,63}$/;
|
|
1576
1576
|
const AutomationNameSchema = z$1.string().regex(AUTOMATION_NAME_PATTERN, "automation name must match [a-z0-9][a-z0-9-_.]{0,63}");
|
|
1577
1577
|
const AUTOMATION_MIN_INTERVAL_MS = 6e4;
|
|
@@ -1599,13 +1599,13 @@ const AutomationActionSchema = z$1.discriminatedUnion("kind", [
|
|
|
1599
1599
|
kind: z$1.literal("spawn"),
|
|
1600
1600
|
agent: z$1.string().trim().min(1).max(64),
|
|
1601
1601
|
directory: z$1.string().min(1).max(4096),
|
|
1602
|
-
prompt: text,
|
|
1602
|
+
prompt: text$2,
|
|
1603
1603
|
model: z$1.string().trim().min(1).max(256).nullable().optional(),
|
|
1604
1604
|
permissionMode: z$1.string().trim().min(1).max(64).nullable().optional(),
|
|
1605
1605
|
worktree: z$1.boolean().optional(),
|
|
1606
1606
|
sticky: AutomationStickySchema.optional()
|
|
1607
1607
|
}),
|
|
1608
|
-
z$1.object({ kind: z$1.literal("send"), sessionId: id, prompt: text }),
|
|
1608
|
+
z$1.object({ kind: z$1.literal("send"), sessionId: id, prompt: text$2 }),
|
|
1609
1609
|
z$1.object({
|
|
1610
1610
|
kind: z$1.literal("script"),
|
|
1611
1611
|
command: z$1.array(z$1.string().min(1).max(4096)).min(1).max(256),
|
|
@@ -1661,6 +1661,7 @@ z$1.object({
|
|
|
1661
1661
|
attentionReason: z$1.string().max(512).nullable().optional(),
|
|
1662
1662
|
leaseMs: z$1.number().int().min(5e3).max(36e5).optional()
|
|
1663
1663
|
});
|
|
1664
|
+
z$1.object({ by: z$1.string().min(1).max(64).optional() });
|
|
1664
1665
|
z$1.object({ key: z$1.string().min(1).max(512), sessionId: id });
|
|
1665
1666
|
z$1.object({ key: z$1.string().min(1).max(512) });
|
|
1666
1667
|
z$1.object({
|
|
@@ -2169,6 +2170,9 @@ async function notifyDaemonClaudeAuthFailed(sessionId) {
|
|
|
2169
2170
|
async function notifyDaemonTurnEvent(sessionId, event) {
|
|
2170
2171
|
return daemonPost("/session-event", { sessionId, event });
|
|
2171
2172
|
}
|
|
2173
|
+
async function notifyDaemonBackgroundTasks(sessionId, backgroundTasks) {
|
|
2174
|
+
return daemonPost("/session-event", { sessionId, event: "background_tasks", backgroundTasks });
|
|
2175
|
+
}
|
|
2172
2176
|
function reportSessionEditToDaemon(edit) {
|
|
2173
2177
|
void daemonPost("/session-edit", edit).then((result) => {
|
|
2174
2178
|
if (result?.error) logger.debug(`[CONTROL CLIENT] session-edit not recorded: ${result.error}`);
|
|
@@ -2338,6 +2342,154 @@ let backoff = createBackoff({
|
|
|
2338
2342
|
}
|
|
2339
2343
|
});
|
|
2340
2344
|
|
|
2345
|
+
const BACKGROUND_TASKS_MAX = 50;
|
|
2346
|
+
const BACKGROUND_TASK_DESCRIPTION_MAX = 200;
|
|
2347
|
+
const text = (value) => typeof value === "string" && value.length > 0 && !value.includes("\0") ? value : null;
|
|
2348
|
+
const clip = (value) => value.length <= BACKGROUND_TASK_DESCRIPTION_MAX ? value : `${value.slice(0, BACKGROUND_TASK_DESCRIPTION_MAX - 1)}\u2026`;
|
|
2349
|
+
const SETTLED_STATUSES = /* @__PURE__ */ new Set(["completed", "failed", "killed"]);
|
|
2350
|
+
function sameBackgroundTasks(a, b) {
|
|
2351
|
+
if (a.length !== b.length) return false;
|
|
2352
|
+
const byId = new Map(a.map((task) => [task.id, task]));
|
|
2353
|
+
for (const task of b) {
|
|
2354
|
+
const other = byId.get(task.id);
|
|
2355
|
+
if (!other || other.description !== task.description || other.type !== task.type) return false;
|
|
2356
|
+
}
|
|
2357
|
+
return true;
|
|
2358
|
+
}
|
|
2359
|
+
function createBackgroundTaskTracker() {
|
|
2360
|
+
const background = /* @__PURE__ */ new Map();
|
|
2361
|
+
const known = /* @__PURE__ */ new Map();
|
|
2362
|
+
const add = (id, now, meta) => {
|
|
2363
|
+
const existing = background.get(id);
|
|
2364
|
+
const seen = known.get(id);
|
|
2365
|
+
background.set(id, {
|
|
2366
|
+
id,
|
|
2367
|
+
type: meta?.type ?? existing?.type ?? seen?.type ?? "unknown",
|
|
2368
|
+
description: clip(meta?.description ?? existing?.description ?? seen?.description ?? ""),
|
|
2369
|
+
startedAt: existing?.startedAt ?? now
|
|
2370
|
+
});
|
|
2371
|
+
if (background.size > BACKGROUND_TASKS_MAX) background.delete(background.keys().next().value);
|
|
2372
|
+
};
|
|
2373
|
+
function observe(message, now = Date.now()) {
|
|
2374
|
+
const m = message;
|
|
2375
|
+
if (m.type === "system") {
|
|
2376
|
+
if (m.subtype === "background_tasks_changed" && Array.isArray(m.tasks)) {
|
|
2377
|
+
const next = /* @__PURE__ */ new Set();
|
|
2378
|
+
for (const task of m.tasks) {
|
|
2379
|
+
const id2 = text(task?.task_id);
|
|
2380
|
+
if (!id2 || task.ambient === true) continue;
|
|
2381
|
+
next.add(id2);
|
|
2382
|
+
add(id2, now, { type: text(task.task_type) ?? void 0, description: text(task.description) ?? void 0 });
|
|
2383
|
+
}
|
|
2384
|
+
for (const id2 of [...background.keys()]) if (!next.has(id2)) background.delete(id2);
|
|
2385
|
+
return;
|
|
2386
|
+
}
|
|
2387
|
+
const id = text(m.task_id);
|
|
2388
|
+
if (!id) return;
|
|
2389
|
+
if (m.subtype === "task_started") {
|
|
2390
|
+
if (m.ambient === true || m.skip_transcript === true) return;
|
|
2391
|
+
const meta = { id, type: text(m.task_type) ?? "unknown", description: clip(text(m.description) ?? ""), toolUseId: text(m.tool_use_id) };
|
|
2392
|
+
known.set(id, meta);
|
|
2393
|
+
if (known.size > BACKGROUND_TASKS_MAX * 4) known.delete(known.keys().next().value);
|
|
2394
|
+
if (m.is_backgrounded === true) add(id, now, meta);
|
|
2395
|
+
return;
|
|
2396
|
+
}
|
|
2397
|
+
if (m.subtype === "task_updated" && m.patch && typeof m.patch === "object") {
|
|
2398
|
+
if (SETTLED_STATUSES.has(String(m.patch.status))) {
|
|
2399
|
+
background.delete(id);
|
|
2400
|
+
return;
|
|
2401
|
+
}
|
|
2402
|
+
if (m.patch.is_backgrounded === true) add(id, now, { description: text(m.patch.description) ?? void 0 });
|
|
2403
|
+
return;
|
|
2404
|
+
}
|
|
2405
|
+
if (m.subtype === "task_notification") {
|
|
2406
|
+
background.delete(id);
|
|
2407
|
+
return;
|
|
2408
|
+
}
|
|
2409
|
+
return;
|
|
2410
|
+
}
|
|
2411
|
+
if (m.type === "user" && m.tool_use_result && typeof m.tool_use_result === "object" && m.tool_use_result.status === "async_launched" && Array.isArray(m.message?.content)) {
|
|
2412
|
+
for (const block of m.message.content) {
|
|
2413
|
+
const toolUseId = block?.type === "tool_result" ? text(block.tool_use_id) : null;
|
|
2414
|
+
if (!toolUseId) continue;
|
|
2415
|
+
for (const seen of known.values()) if (seen.toolUseId === toolUseId) add(seen.id, now, seen);
|
|
2416
|
+
}
|
|
2417
|
+
}
|
|
2418
|
+
}
|
|
2419
|
+
function reset() {
|
|
2420
|
+
background.clear();
|
|
2421
|
+
known.clear();
|
|
2422
|
+
}
|
|
2423
|
+
function list() {
|
|
2424
|
+
return [...background.values()].sort((a, b) => a.startedAt - b.startedAt).map((task) => ({ ...task }));
|
|
2425
|
+
}
|
|
2426
|
+
return { observe, reset, list };
|
|
2427
|
+
}
|
|
2428
|
+
|
|
2429
|
+
const BACKGROUND_TASKS_LEASE_MS = 6e4;
|
|
2430
|
+
const BACKGROUND_TASKS_TTL_MS = 15e4;
|
|
2431
|
+
const EMPTY_BACKGROUND_TASKS = Object.freeze({ count: 0, tasks: [] });
|
|
2432
|
+
function backgroundTasksReport(stored, now, options = {}) {
|
|
2433
|
+
const tasks = Array.isArray(stored?.tasks) ? stored.tasks.filter((task) => task && typeof task.id === "string") : [];
|
|
2434
|
+
const reportedAt = typeof stored?.updatedAt === "number" ? stored.updatedAt : void 0;
|
|
2435
|
+
if (tasks.length === 0) return reportedAt === void 0 ? { ...EMPTY_BACKGROUND_TASKS, tasks: [] } : { count: 0, tasks: [], reportedAt };
|
|
2436
|
+
const fresh = options.active !== false && reportedAt !== void 0 && now - reportedAt <= (options.ttlMs ?? BACKGROUND_TASKS_TTL_MS);
|
|
2437
|
+
if (!fresh) return { count: 0, tasks: [], ...reportedAt !== void 0 ? { reportedAt } : {}, stale: true };
|
|
2438
|
+
return { count: tasks.length, tasks: tasks.map((task) => ({ ...task })), reportedAt };
|
|
2439
|
+
}
|
|
2440
|
+
class BackgroundTaskReporter {
|
|
2441
|
+
constructor(publish, leaseMs = BACKGROUND_TASKS_LEASE_MS) {
|
|
2442
|
+
this.publish = publish;
|
|
2443
|
+
this.leaseMs = leaseMs;
|
|
2444
|
+
}
|
|
2445
|
+
last = [];
|
|
2446
|
+
lastPublishedAt = 0;
|
|
2447
|
+
/** Called on every keepAlive tick with the current set; publishes only on an edge or a due renewal. */
|
|
2448
|
+
observe(tasks, now = Date.now()) {
|
|
2449
|
+
const changed = !sameBackgroundTasks(this.last, tasks);
|
|
2450
|
+
const due = tasks.length > 0 && now - this.lastPublishedAt >= this.leaseMs;
|
|
2451
|
+
if (!changed && !due) return false;
|
|
2452
|
+
this.last = tasks.map((task) => ({ ...task }));
|
|
2453
|
+
this.lastPublishedAt = now;
|
|
2454
|
+
this.publish(this.last, now);
|
|
2455
|
+
return true;
|
|
2456
|
+
}
|
|
2457
|
+
current() {
|
|
2458
|
+
return this.last;
|
|
2459
|
+
}
|
|
2460
|
+
}
|
|
2461
|
+
class BackgroundTaskTracker {
|
|
2462
|
+
constructor(ttlMs = BACKGROUND_TASKS_TTL_MS) {
|
|
2463
|
+
this.ttlMs = ttlMs;
|
|
2464
|
+
}
|
|
2465
|
+
sets = /* @__PURE__ */ new Map();
|
|
2466
|
+
apply(sessionId, tasks, now = Date.now()) {
|
|
2467
|
+
if (tasks.length === 0) this.sets.delete(sessionId);
|
|
2468
|
+
else this.sets.set(sessionId, { at: now, tasks: tasks.map((task) => ({ ...task })) });
|
|
2469
|
+
}
|
|
2470
|
+
/** The wrapper is gone: whatever it reported no longer holds. */
|
|
2471
|
+
forget(sessionId) {
|
|
2472
|
+
this.sets.delete(sessionId);
|
|
2473
|
+
}
|
|
2474
|
+
report(sessionId, now = Date.now()) {
|
|
2475
|
+
const entry = this.sets.get(sessionId);
|
|
2476
|
+
if (!entry) return { ...EMPTY_BACKGROUND_TASKS, tasks: [] };
|
|
2477
|
+
const out = backgroundTasksReport({ updatedAt: entry.at, tasks: entry.tasks }, now, { ttlMs: this.ttlMs });
|
|
2478
|
+
if (out.stale) this.sets.delete(sessionId);
|
|
2479
|
+
return out;
|
|
2480
|
+
}
|
|
2481
|
+
count(sessionId, now = Date.now()) {
|
|
2482
|
+
return this.report(sessionId, now).count;
|
|
2483
|
+
}
|
|
2484
|
+
/** Sessions whose published set is still inside the TTL. */
|
|
2485
|
+
activeSessions(now = Date.now()) {
|
|
2486
|
+
return [...this.sets.keys()].filter((id) => this.count(id, now) > 0);
|
|
2487
|
+
}
|
|
2488
|
+
hasAny(now = Date.now()) {
|
|
2489
|
+
return this.activeSessions(now).length > 0;
|
|
2490
|
+
}
|
|
2491
|
+
}
|
|
2492
|
+
|
|
2341
2493
|
const CLIPBOARD_MAX_BYTES = 256 * 1024;
|
|
2342
2494
|
const CLIPBOARD_HISTORY_MAX_BYTES = 32 * 1024;
|
|
2343
2495
|
const CLIPBOARD_TOOL_NAME = "copy_to_clipboard";
|
|
@@ -2373,4 +2525,4 @@ function prepareClipboardHistoryText(input) {
|
|
|
2373
2525
|
return { text, truncated: true, totalBytes: prepared.totalBytes };
|
|
2374
2526
|
}
|
|
2375
2527
|
|
|
2376
|
-
export {
|
|
2528
|
+
export { prepareClipboardHistoryText as $, AUTOMATION_NAME_PATTERN as A, BUILTIN_TODO_SKILL as B, CLIPBOARD_TOOL_NAME as C, hardenPrivateFileSync as D, writePrivateFileSync as E, packageJson as F, normalizeHttpEndpoint as G, AutomationNameSchema as H, AutomationConcurrencySchema as I, AutomationActionSchema as J, AutomationTriggerSchema as K, encrypt as L, decodeBase64 as M, decrypt as N, listDaemonSessions as O, backgroundTasksReport as P, resumeDaemonSession as Q, listDaemonPeers as R, AgentVersionsSchema as S, backoff as T, ReleaseDrainNoticeSchema as U, decryptBlob as V, RelayAssignmentResponseSchema as W, notifyDaemonTurnEvent as X, BackgroundTaskReporter as Y, notifyDaemonBackgroundTasks as Z, prepareClipboardText as _, CLIPBOARD_TOOL_TITLE as a, credentialRelayProblem as a0, RelayCandidatesResponseSchema as a1, readTrackedClaudeSessionIds as a2, readTrackedCodexThreadIds as a3, isValidTerminalId as a4, exponentialBackoffDelay as a5, libsodiumEncryptForPublicKey as a6, libsodiumPublicKeyFromSecretKey as a7, getRandomBytes as a8, redactLogValue as a9, isDaemonRunningCurrentlyInstalledHappyVersion as aA, stopDaemon as aB, acquireDaemonLock as aC, BackgroundTaskTracker as aD, deletePersistedSessions as aE, writeDaemonState as aF, writeSettings as aG, cleanupDaemonState as aH, releaseDaemonLock as aI, ContextUsageSchema as aJ, clearCredentials as aK, clearMachineId as aL, SandboxConfigSchema as aM, getLatestDaemonLog as aN, persistence as aO, sameBackgroundTasks as aa, notifyDaemonSessionEvent as ab, STREAM_DELTA_MAX_CHARS as ac, ensurePrivateDirectory as ad, hardenPrivateFile as ae, notifyDaemonClaudeAuthFailed as af, createBackgroundTaskTracker as ag, readCredentials as ah, readDaemonState as ai, AGENT_VERSION_SOURCES as aj, readSettingsOutcome as ak, encodeBase64Url as al, writeCredentialsLegacy as am, writeCredentialsDataKey as an, BACKGROUND_TASK_DESCRIPTION_MAX as ao, BACKGROUND_TASKS_MAX as ap, decryptWithDataKey as aq, decryptLegacy as ar, persistSession as as, getAgentCodeDefaults as at, normalizeAgentKey as au, isClaudeOpus55Model as av, supportsClaudeOpus55 as aw, AUTOMATION_SUMMARY_MAX_CHARS as ax, AUTOMATION_CLAIM_MAX_RUNS as ay, AUTOMATION_DEFAULT_LEASE_MS as az, CLIPBOARD_TOOL_DESCRIPTION as b, configuration as c, readPersistedSessions as d, createEnvelope as e, isAutomationRunTerminal as f, delay as g, readCredentialsForConfiguredRelay as h, isValidSessionId as i, createBuiltinTodoClient as j, checkIfDaemonRunningAndCleanupStaleState as k, logger as l, spawnDaemonSession as m, stopDaemonSession as n, CLIPBOARD_MAX_BYTES as o, pushClipboardViaDaemon as p, pushFilePreviewViaDaemon as q, readSettings as r, streamKeyOf as s, setTerminalTitleViaDaemon as t, updateSettings as u, notifyDaemonSessionStarted as v, encodeBase64 as w, BUILTIN_TODO_DISCOVERY as x, reportSessionEditToDaemon as y, ensurePrivateDirectorySync as z };
|
|
@@ -31,7 +31,7 @@ function _interopNamespaceDefault(e) {
|
|
|
31
31
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
32
32
|
|
|
33
33
|
var name = "very-happy-cli";
|
|
34
|
-
var version = "0.2.
|
|
34
|
+
var version = "0.2.158";
|
|
35
35
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
36
36
|
var author = "Kirill Dubovitskiy";
|
|
37
37
|
var contributors = [
|
|
@@ -148,12 +148,12 @@ var dependencies = {
|
|
|
148
148
|
zod: "^4.0.0"
|
|
149
149
|
};
|
|
150
150
|
var optionalDependencies = {
|
|
151
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
152
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
153
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
154
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
155
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
156
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
151
|
+
"very-happy-tools-arm64-darwin": "0.2.158",
|
|
152
|
+
"very-happy-tools-x64-darwin": "0.2.158",
|
|
153
|
+
"very-happy-tools-arm64-linux": "0.2.158",
|
|
154
|
+
"very-happy-tools-x64-linux": "0.2.158",
|
|
155
|
+
"very-happy-tools-arm64-win32": "0.2.158",
|
|
156
|
+
"very-happy-tools-x64-win32": "0.2.158"
|
|
157
157
|
};
|
|
158
158
|
var devDependencies = {
|
|
159
159
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1591,7 +1591,7 @@ const TeamActionSchema = z.z.discriminatedUnion("type", [
|
|
|
1591
1591
|
z.z.object({ requestId: id$1, action: TeamActionSchema });
|
|
1592
1592
|
z.z.object({ name: id$1, machineId: id$1, requestId: id$1.optional(), launch: TeamLaunchSchema.optional() });
|
|
1593
1593
|
const id = z.z.string().min(1).max(128);
|
|
1594
|
-
const text = z.z.string().min(1).max(32e3);
|
|
1594
|
+
const text$2 = z.z.string().min(1).max(32e3);
|
|
1595
1595
|
const AUTOMATION_NAME_PATTERN = /^[a-z0-9][a-z0-9-_.]{0,63}$/;
|
|
1596
1596
|
const AutomationNameSchema = z.z.string().regex(AUTOMATION_NAME_PATTERN, "automation name must match [a-z0-9][a-z0-9-_.]{0,63}");
|
|
1597
1597
|
const AUTOMATION_MIN_INTERVAL_MS = 6e4;
|
|
@@ -1619,13 +1619,13 @@ const AutomationActionSchema = z.z.discriminatedUnion("kind", [
|
|
|
1619
1619
|
kind: z.z.literal("spawn"),
|
|
1620
1620
|
agent: z.z.string().trim().min(1).max(64),
|
|
1621
1621
|
directory: z.z.string().min(1).max(4096),
|
|
1622
|
-
prompt: text,
|
|
1622
|
+
prompt: text$2,
|
|
1623
1623
|
model: z.z.string().trim().min(1).max(256).nullable().optional(),
|
|
1624
1624
|
permissionMode: z.z.string().trim().min(1).max(64).nullable().optional(),
|
|
1625
1625
|
worktree: z.z.boolean().optional(),
|
|
1626
1626
|
sticky: AutomationStickySchema.optional()
|
|
1627
1627
|
}),
|
|
1628
|
-
z.z.object({ kind: z.z.literal("send"), sessionId: id, prompt: text }),
|
|
1628
|
+
z.z.object({ kind: z.z.literal("send"), sessionId: id, prompt: text$2 }),
|
|
1629
1629
|
z.z.object({
|
|
1630
1630
|
kind: z.z.literal("script"),
|
|
1631
1631
|
command: z.z.array(z.z.string().min(1).max(4096)).min(1).max(256),
|
|
@@ -1681,6 +1681,7 @@ z.z.object({
|
|
|
1681
1681
|
attentionReason: z.z.string().max(512).nullable().optional(),
|
|
1682
1682
|
leaseMs: z.z.number().int().min(5e3).max(36e5).optional()
|
|
1683
1683
|
});
|
|
1684
|
+
z.z.object({ by: z.z.string().min(1).max(64).optional() });
|
|
1684
1685
|
z.z.object({ key: z.z.string().min(1).max(512), sessionId: id });
|
|
1685
1686
|
z.z.object({ key: z.z.string().min(1).max(512) });
|
|
1686
1687
|
z.z.object({
|
|
@@ -2189,6 +2190,9 @@ async function notifyDaemonClaudeAuthFailed(sessionId) {
|
|
|
2189
2190
|
async function notifyDaemonTurnEvent(sessionId, event) {
|
|
2190
2191
|
return daemonPost("/session-event", { sessionId, event });
|
|
2191
2192
|
}
|
|
2193
|
+
async function notifyDaemonBackgroundTasks(sessionId, backgroundTasks) {
|
|
2194
|
+
return daemonPost("/session-event", { sessionId, event: "background_tasks", backgroundTasks });
|
|
2195
|
+
}
|
|
2192
2196
|
function reportSessionEditToDaemon(edit) {
|
|
2193
2197
|
void daemonPost("/session-edit", edit).then((result) => {
|
|
2194
2198
|
if (result?.error) logger.debug(`[CONTROL CLIENT] session-edit not recorded: ${result.error}`);
|
|
@@ -2358,6 +2362,154 @@ let backoff = createBackoff({
|
|
|
2358
2362
|
}
|
|
2359
2363
|
});
|
|
2360
2364
|
|
|
2365
|
+
const BACKGROUND_TASKS_MAX = 50;
|
|
2366
|
+
const BACKGROUND_TASK_DESCRIPTION_MAX = 200;
|
|
2367
|
+
const text = (value) => typeof value === "string" && value.length > 0 && !value.includes("\0") ? value : null;
|
|
2368
|
+
const clip = (value) => value.length <= BACKGROUND_TASK_DESCRIPTION_MAX ? value : `${value.slice(0, BACKGROUND_TASK_DESCRIPTION_MAX - 1)}\u2026`;
|
|
2369
|
+
const SETTLED_STATUSES = /* @__PURE__ */ new Set(["completed", "failed", "killed"]);
|
|
2370
|
+
function sameBackgroundTasks(a, b) {
|
|
2371
|
+
if (a.length !== b.length) return false;
|
|
2372
|
+
const byId = new Map(a.map((task) => [task.id, task]));
|
|
2373
|
+
for (const task of b) {
|
|
2374
|
+
const other = byId.get(task.id);
|
|
2375
|
+
if (!other || other.description !== task.description || other.type !== task.type) return false;
|
|
2376
|
+
}
|
|
2377
|
+
return true;
|
|
2378
|
+
}
|
|
2379
|
+
function createBackgroundTaskTracker() {
|
|
2380
|
+
const background = /* @__PURE__ */ new Map();
|
|
2381
|
+
const known = /* @__PURE__ */ new Map();
|
|
2382
|
+
const add = (id, now, meta) => {
|
|
2383
|
+
const existing = background.get(id);
|
|
2384
|
+
const seen = known.get(id);
|
|
2385
|
+
background.set(id, {
|
|
2386
|
+
id,
|
|
2387
|
+
type: meta?.type ?? existing?.type ?? seen?.type ?? "unknown",
|
|
2388
|
+
description: clip(meta?.description ?? existing?.description ?? seen?.description ?? ""),
|
|
2389
|
+
startedAt: existing?.startedAt ?? now
|
|
2390
|
+
});
|
|
2391
|
+
if (background.size > BACKGROUND_TASKS_MAX) background.delete(background.keys().next().value);
|
|
2392
|
+
};
|
|
2393
|
+
function observe(message, now = Date.now()) {
|
|
2394
|
+
const m = message;
|
|
2395
|
+
if (m.type === "system") {
|
|
2396
|
+
if (m.subtype === "background_tasks_changed" && Array.isArray(m.tasks)) {
|
|
2397
|
+
const next = /* @__PURE__ */ new Set();
|
|
2398
|
+
for (const task of m.tasks) {
|
|
2399
|
+
const id2 = text(task?.task_id);
|
|
2400
|
+
if (!id2 || task.ambient === true) continue;
|
|
2401
|
+
next.add(id2);
|
|
2402
|
+
add(id2, now, { type: text(task.task_type) ?? void 0, description: text(task.description) ?? void 0 });
|
|
2403
|
+
}
|
|
2404
|
+
for (const id2 of [...background.keys()]) if (!next.has(id2)) background.delete(id2);
|
|
2405
|
+
return;
|
|
2406
|
+
}
|
|
2407
|
+
const id = text(m.task_id);
|
|
2408
|
+
if (!id) return;
|
|
2409
|
+
if (m.subtype === "task_started") {
|
|
2410
|
+
if (m.ambient === true || m.skip_transcript === true) return;
|
|
2411
|
+
const meta = { id, type: text(m.task_type) ?? "unknown", description: clip(text(m.description) ?? ""), toolUseId: text(m.tool_use_id) };
|
|
2412
|
+
known.set(id, meta);
|
|
2413
|
+
if (known.size > BACKGROUND_TASKS_MAX * 4) known.delete(known.keys().next().value);
|
|
2414
|
+
if (m.is_backgrounded === true) add(id, now, meta);
|
|
2415
|
+
return;
|
|
2416
|
+
}
|
|
2417
|
+
if (m.subtype === "task_updated" && m.patch && typeof m.patch === "object") {
|
|
2418
|
+
if (SETTLED_STATUSES.has(String(m.patch.status))) {
|
|
2419
|
+
background.delete(id);
|
|
2420
|
+
return;
|
|
2421
|
+
}
|
|
2422
|
+
if (m.patch.is_backgrounded === true) add(id, now, { description: text(m.patch.description) ?? void 0 });
|
|
2423
|
+
return;
|
|
2424
|
+
}
|
|
2425
|
+
if (m.subtype === "task_notification") {
|
|
2426
|
+
background.delete(id);
|
|
2427
|
+
return;
|
|
2428
|
+
}
|
|
2429
|
+
return;
|
|
2430
|
+
}
|
|
2431
|
+
if (m.type === "user" && m.tool_use_result && typeof m.tool_use_result === "object" && m.tool_use_result.status === "async_launched" && Array.isArray(m.message?.content)) {
|
|
2432
|
+
for (const block of m.message.content) {
|
|
2433
|
+
const toolUseId = block?.type === "tool_result" ? text(block.tool_use_id) : null;
|
|
2434
|
+
if (!toolUseId) continue;
|
|
2435
|
+
for (const seen of known.values()) if (seen.toolUseId === toolUseId) add(seen.id, now, seen);
|
|
2436
|
+
}
|
|
2437
|
+
}
|
|
2438
|
+
}
|
|
2439
|
+
function reset() {
|
|
2440
|
+
background.clear();
|
|
2441
|
+
known.clear();
|
|
2442
|
+
}
|
|
2443
|
+
function list() {
|
|
2444
|
+
return [...background.values()].sort((a, b) => a.startedAt - b.startedAt).map((task) => ({ ...task }));
|
|
2445
|
+
}
|
|
2446
|
+
return { observe, reset, list };
|
|
2447
|
+
}
|
|
2448
|
+
|
|
2449
|
+
const BACKGROUND_TASKS_LEASE_MS = 6e4;
|
|
2450
|
+
const BACKGROUND_TASKS_TTL_MS = 15e4;
|
|
2451
|
+
const EMPTY_BACKGROUND_TASKS = Object.freeze({ count: 0, tasks: [] });
|
|
2452
|
+
function backgroundTasksReport(stored, now, options = {}) {
|
|
2453
|
+
const tasks = Array.isArray(stored?.tasks) ? stored.tasks.filter((task) => task && typeof task.id === "string") : [];
|
|
2454
|
+
const reportedAt = typeof stored?.updatedAt === "number" ? stored.updatedAt : void 0;
|
|
2455
|
+
if (tasks.length === 0) return reportedAt === void 0 ? { ...EMPTY_BACKGROUND_TASKS, tasks: [] } : { count: 0, tasks: [], reportedAt };
|
|
2456
|
+
const fresh = options.active !== false && reportedAt !== void 0 && now - reportedAt <= (options.ttlMs ?? BACKGROUND_TASKS_TTL_MS);
|
|
2457
|
+
if (!fresh) return { count: 0, tasks: [], ...reportedAt !== void 0 ? { reportedAt } : {}, stale: true };
|
|
2458
|
+
return { count: tasks.length, tasks: tasks.map((task) => ({ ...task })), reportedAt };
|
|
2459
|
+
}
|
|
2460
|
+
class BackgroundTaskReporter {
|
|
2461
|
+
constructor(publish, leaseMs = BACKGROUND_TASKS_LEASE_MS) {
|
|
2462
|
+
this.publish = publish;
|
|
2463
|
+
this.leaseMs = leaseMs;
|
|
2464
|
+
}
|
|
2465
|
+
last = [];
|
|
2466
|
+
lastPublishedAt = 0;
|
|
2467
|
+
/** Called on every keepAlive tick with the current set; publishes only on an edge or a due renewal. */
|
|
2468
|
+
observe(tasks, now = Date.now()) {
|
|
2469
|
+
const changed = !sameBackgroundTasks(this.last, tasks);
|
|
2470
|
+
const due = tasks.length > 0 && now - this.lastPublishedAt >= this.leaseMs;
|
|
2471
|
+
if (!changed && !due) return false;
|
|
2472
|
+
this.last = tasks.map((task) => ({ ...task }));
|
|
2473
|
+
this.lastPublishedAt = now;
|
|
2474
|
+
this.publish(this.last, now);
|
|
2475
|
+
return true;
|
|
2476
|
+
}
|
|
2477
|
+
current() {
|
|
2478
|
+
return this.last;
|
|
2479
|
+
}
|
|
2480
|
+
}
|
|
2481
|
+
class BackgroundTaskTracker {
|
|
2482
|
+
constructor(ttlMs = BACKGROUND_TASKS_TTL_MS) {
|
|
2483
|
+
this.ttlMs = ttlMs;
|
|
2484
|
+
}
|
|
2485
|
+
sets = /* @__PURE__ */ new Map();
|
|
2486
|
+
apply(sessionId, tasks, now = Date.now()) {
|
|
2487
|
+
if (tasks.length === 0) this.sets.delete(sessionId);
|
|
2488
|
+
else this.sets.set(sessionId, { at: now, tasks: tasks.map((task) => ({ ...task })) });
|
|
2489
|
+
}
|
|
2490
|
+
/** The wrapper is gone: whatever it reported no longer holds. */
|
|
2491
|
+
forget(sessionId) {
|
|
2492
|
+
this.sets.delete(sessionId);
|
|
2493
|
+
}
|
|
2494
|
+
report(sessionId, now = Date.now()) {
|
|
2495
|
+
const entry = this.sets.get(sessionId);
|
|
2496
|
+
if (!entry) return { ...EMPTY_BACKGROUND_TASKS, tasks: [] };
|
|
2497
|
+
const out = backgroundTasksReport({ updatedAt: entry.at, tasks: entry.tasks }, now, { ttlMs: this.ttlMs });
|
|
2498
|
+
if (out.stale) this.sets.delete(sessionId);
|
|
2499
|
+
return out;
|
|
2500
|
+
}
|
|
2501
|
+
count(sessionId, now = Date.now()) {
|
|
2502
|
+
return this.report(sessionId, now).count;
|
|
2503
|
+
}
|
|
2504
|
+
/** Sessions whose published set is still inside the TTL. */
|
|
2505
|
+
activeSessions(now = Date.now()) {
|
|
2506
|
+
return [...this.sets.keys()].filter((id) => this.count(id, now) > 0);
|
|
2507
|
+
}
|
|
2508
|
+
hasAny(now = Date.now()) {
|
|
2509
|
+
return this.activeSessions(now).length > 0;
|
|
2510
|
+
}
|
|
2511
|
+
}
|
|
2512
|
+
|
|
2361
2513
|
const CLIPBOARD_MAX_BYTES = 256 * 1024;
|
|
2362
2514
|
const CLIPBOARD_HISTORY_MAX_BYTES = 32 * 1024;
|
|
2363
2515
|
const CLIPBOARD_TOOL_NAME = "copy_to_clipboard";
|
|
@@ -2403,8 +2555,12 @@ exports.AutomationActionSchema = AutomationActionSchema;
|
|
|
2403
2555
|
exports.AutomationConcurrencySchema = AutomationConcurrencySchema;
|
|
2404
2556
|
exports.AutomationNameSchema = AutomationNameSchema;
|
|
2405
2557
|
exports.AutomationTriggerSchema = AutomationTriggerSchema;
|
|
2558
|
+
exports.BACKGROUND_TASKS_MAX = BACKGROUND_TASKS_MAX;
|
|
2559
|
+
exports.BACKGROUND_TASK_DESCRIPTION_MAX = BACKGROUND_TASK_DESCRIPTION_MAX;
|
|
2406
2560
|
exports.BUILTIN_TODO_DISCOVERY = BUILTIN_TODO_DISCOVERY;
|
|
2407
2561
|
exports.BUILTIN_TODO_SKILL = BUILTIN_TODO_SKILL;
|
|
2562
|
+
exports.BackgroundTaskReporter = BackgroundTaskReporter;
|
|
2563
|
+
exports.BackgroundTaskTracker = BackgroundTaskTracker;
|
|
2408
2564
|
exports.CLIPBOARD_MAX_BYTES = CLIPBOARD_MAX_BYTES;
|
|
2409
2565
|
exports.CLIPBOARD_TOOL_DESCRIPTION = CLIPBOARD_TOOL_DESCRIPTION;
|
|
2410
2566
|
exports.CLIPBOARD_TOOL_NAME = CLIPBOARD_TOOL_NAME;
|
|
@@ -2416,12 +2572,14 @@ exports.ReleaseDrainNoticeSchema = ReleaseDrainNoticeSchema;
|
|
|
2416
2572
|
exports.STREAM_DELTA_MAX_CHARS = STREAM_DELTA_MAX_CHARS;
|
|
2417
2573
|
exports.SandboxConfigSchema = SandboxConfigSchema;
|
|
2418
2574
|
exports.acquireDaemonLock = acquireDaemonLock;
|
|
2575
|
+
exports.backgroundTasksReport = backgroundTasksReport;
|
|
2419
2576
|
exports.backoff = backoff;
|
|
2420
2577
|
exports.checkIfDaemonRunningAndCleanupStaleState = checkIfDaemonRunningAndCleanupStaleState;
|
|
2421
2578
|
exports.cleanupDaemonState = cleanupDaemonState;
|
|
2422
2579
|
exports.clearCredentials = clearCredentials;
|
|
2423
2580
|
exports.clearMachineId = clearMachineId;
|
|
2424
2581
|
exports.configuration = configuration;
|
|
2582
|
+
exports.createBackgroundTaskTracker = createBackgroundTaskTracker;
|
|
2425
2583
|
exports.createBuiltinTodoClient = createBuiltinTodoClient;
|
|
2426
2584
|
exports.createEnvelope = createEnvelope;
|
|
2427
2585
|
exports.credentialRelayProblem = credentialRelayProblem;
|
|
@@ -2455,6 +2613,7 @@ exports.listDaemonSessions = listDaemonSessions;
|
|
|
2455
2613
|
exports.logger = logger;
|
|
2456
2614
|
exports.normalizeAgentKey = normalizeAgentKey;
|
|
2457
2615
|
exports.normalizeHttpEndpoint = normalizeHttpEndpoint;
|
|
2616
|
+
exports.notifyDaemonBackgroundTasks = notifyDaemonBackgroundTasks;
|
|
2458
2617
|
exports.notifyDaemonClaudeAuthFailed = notifyDaemonClaudeAuthFailed;
|
|
2459
2618
|
exports.notifyDaemonSessionEvent = notifyDaemonSessionEvent;
|
|
2460
2619
|
exports.notifyDaemonSessionStarted = notifyDaemonSessionStarted;
|
|
@@ -2478,6 +2637,7 @@ exports.redactLogValue = redactLogValue;
|
|
|
2478
2637
|
exports.releaseDaemonLock = releaseDaemonLock;
|
|
2479
2638
|
exports.reportSessionEditToDaemon = reportSessionEditToDaemon;
|
|
2480
2639
|
exports.resumeDaemonSession = resumeDaemonSession;
|
|
2640
|
+
exports.sameBackgroundTasks = sameBackgroundTasks;
|
|
2481
2641
|
exports.setTerminalTitleViaDaemon = setTerminalTitleViaDaemon;
|
|
2482
2642
|
exports.spawnDaemonSession = spawnDaemonSession;
|
|
2483
2643
|
exports.stopDaemon = stopDaemon;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-
|
|
1
|
+
import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-CrR9l62U.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 { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, p as pushClipboardViaDaemon, o as CLIPBOARD_MAX_BYTES, q as pushFilePreviewViaDaemon, t as setTerminalTitleViaDaemon } from './limits-
|
|
6
|
-
import { e as checkPreviewPath, f as registerAssistantSessionTools, g as suggestTitleForPrompt } from './index-
|
|
5
|
+
import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, p as pushClipboardViaDaemon, o as CLIPBOARD_MAX_BYTES, q as pushFilePreviewViaDaemon, t as setTerminalTitleViaDaemon } from './limits-D2uN090G.mjs';
|
|
6
|
+
import { e as checkPreviewPath, f as registerAssistantSessionTools, g as suggestTitleForPrompt } from './index-CVCt3kSt.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-DIBF4U0Y.mjs';
|
|
15
15
|
import 'node:fs';
|
|
16
16
|
import 'node:path';
|
|
17
17
|
import { b as TerminalTitleSuggestRequestSchema } from './terminalTitleSuggest-DKgX3osW.mjs';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var agentGuidance = require('./agentGuidance-
|
|
3
|
+
var agentGuidance = require('./agentGuidance-DwOWbX55.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 persistence = require('./limits-
|
|
8
|
-
var index = require('./index-
|
|
7
|
+
var persistence = require('./limits-kqFqhfsh.cjs');
|
|
8
|
+
var index = require('./index-BG932eCh.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-DnrPeN80.cjs');
|
|
17
17
|
require('node:fs');
|
|
18
18
|
require('node:path');
|
|
19
19
|
var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var promises = require('node:fs/promises');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var persistence = require('./limits-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var persistence = require('./limits-kqFqhfsh.cjs');
|
|
7
|
+
var index = require('./index-BG932eCh.cjs');
|
|
8
8
|
|
|
9
9
|
async function publish(path, content, mode) {
|
|
10
10
|
const temporary = `${path}.${node_crypto.randomUUID()}.new`;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { mkdir, chmod, writeFile, rename } from 'node:fs/promises';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { c as configuration } from './limits-
|
|
5
|
-
import { P as PI_TEAMS_EXTENSION } from './index-
|
|
4
|
+
import { c as configuration } from './limits-D2uN090G.mjs';
|
|
5
|
+
import { P as PI_TEAMS_EXTENSION } from './index-CVCt3kSt.mjs';
|
|
6
6
|
|
|
7
7
|
async function publish(path, content, mode) {
|
|
8
8
|
const temporary = `${path}.${randomUUID()}.new`;
|
|
@@ -5,21 +5,21 @@ var node_crypto = require('node:crypto');
|
|
|
5
5
|
var node_http = require('node:http');
|
|
6
6
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
7
7
|
var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
8
|
-
var piRuntime = require('./piRuntime-
|
|
9
|
-
var mcp = require('./mcp-
|
|
10
|
-
require('./agentGuidance-
|
|
8
|
+
var piRuntime = require('./piRuntime-3qtbKujX.cjs');
|
|
9
|
+
var mcp = require('./mcp-DGdeUUDJ.cjs');
|
|
10
|
+
require('./agentGuidance-DwOWbX55.cjs');
|
|
11
11
|
require('node:fs/promises');
|
|
12
12
|
require('node:os');
|
|
13
13
|
require('zod');
|
|
14
|
-
require('./limits-
|
|
14
|
+
require('./limits-kqFqhfsh.cjs');
|
|
15
15
|
require('axios');
|
|
16
16
|
require('tweetnacl');
|
|
17
17
|
require('socket.io-client');
|
|
18
|
-
require('./types-
|
|
18
|
+
require('./types-DnrPeN80.cjs');
|
|
19
19
|
require('node:fs');
|
|
20
20
|
require('node:path');
|
|
21
21
|
var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
|
|
22
|
-
require('./index-
|
|
22
|
+
require('./index-BG932eCh.cjs');
|
|
23
23
|
require('chalk');
|
|
24
24
|
require('cross-spawn');
|
|
25
25
|
require('node:readline');
|
|
@@ -3,21 +3,21 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import { createServer } from 'node:http';
|
|
4
4
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
5
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
6
|
-
import { p as preparePiTeamsRuntime } from './piRuntime-
|
|
7
|
-
import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-
|
|
8
|
-
import './agentGuidance-
|
|
6
|
+
import { p as preparePiTeamsRuntime } from './piRuntime-bkw2NAZU.mjs';
|
|
7
|
+
import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-BN6bKIGb.mjs';
|
|
8
|
+
import './agentGuidance-CrR9l62U.mjs';
|
|
9
9
|
import 'node:fs/promises';
|
|
10
10
|
import 'node:os';
|
|
11
11
|
import 'zod';
|
|
12
|
-
import './limits-
|
|
12
|
+
import './limits-D2uN090G.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'tweetnacl';
|
|
15
15
|
import 'socket.io-client';
|
|
16
|
-
import './types-
|
|
16
|
+
import './types-DIBF4U0Y.mjs';
|
|
17
17
|
import 'node:fs';
|
|
18
18
|
import 'node:path';
|
|
19
19
|
import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
|
|
20
|
-
import './index-
|
|
20
|
+
import './index-CVCt3kSt.mjs';
|
|
21
21
|
import 'chalk';
|
|
22
22
|
import 'cross-spawn';
|
|
23
23
|
import 'node:readline';
|