svamp-cli 0.1.42 → 0.1.46
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/cli.mjs +94 -14
- package/dist/commands-8Xn02pQg.mjs +1217 -0
- package/dist/commands-B53zuBHB.mjs +1217 -0
- package/dist/commands-BDVAO_N2.mjs +1217 -0
- package/dist/commands-BD_NjWJL.mjs +1217 -0
- package/dist/commands-BIFQZZGw.mjs +1375 -0
- package/dist/commands-BImRR1Wr.mjs +1217 -0
- package/dist/commands-BLmRIMdf.mjs +1217 -0
- package/dist/commands-BQ_347V_.mjs +1374 -0
- package/dist/commands-BVjcCbWS.mjs +1375 -0
- package/dist/commands-BVsLRttq.mjs +1217 -0
- package/dist/commands-BdnG1cqQ.mjs +1217 -0
- package/dist/commands-BpSUbvmr.mjs +1217 -0
- package/dist/commands-BuJ6xTfc.mjs +1217 -0
- package/dist/commands-CFv6lO0D.mjs +1217 -0
- package/dist/commands-CJ2n5jS2.mjs +1375 -0
- package/dist/commands-CKEKQ_5B.mjs +1217 -0
- package/dist/commands-CRZbJjqN.mjs +1375 -0
- package/dist/commands-CWsfciHn.mjs +1217 -0
- package/dist/commands-Cc73uUnP.mjs +1375 -0
- package/dist/commands-CdMsAD1-.mjs +1217 -0
- package/dist/commands-ClVCprrK.mjs +1217 -0
- package/dist/commands-CorUNLRF.mjs +1375 -0
- package/dist/commands-Cq0oj5_v.mjs +1217 -0
- package/dist/commands-CxSCUJCB.mjs +1217 -0
- package/dist/commands-D-PTwdZz.mjs +1217 -0
- package/dist/commands-D7kH-7Vn.mjs +1217 -0
- package/dist/commands-DD3HXakm.mjs +1217 -0
- package/dist/commands-DLoe6FyK.mjs +1375 -0
- package/dist/commands-DPbH8KF0.mjs +1217 -0
- package/dist/commands-DUAQ9MZM.mjs +1217 -0
- package/dist/commands-DVygnMsh.mjs +1217 -0
- package/dist/commands-DYTdUlul.mjs +1217 -0
- package/dist/commands-DZfaDmsk.mjs +1374 -0
- package/dist/commands-DuJGOq1y.mjs +1217 -0
- package/dist/commands-SQ0Wp_kD.mjs +1217 -0
- package/dist/commands-Z-CbuF8E.mjs +1217 -0
- package/dist/commands-mC0oe0lj.mjs +1217 -0
- package/dist/commands-zGHnUXh5.mjs +1217 -0
- package/dist/index.mjs +1 -1
- package/dist/package-BufekbY1.mjs +57 -0
- package/dist/package-C1hpYMj4.mjs +57 -0
- package/dist/package-CmIBOZtY.mjs +57 -0
- package/dist/package-CmVt1kdw.mjs +58 -0
- package/dist/package-Cn6Ya4A0.mjs +57 -0
- package/dist/package-Csd530Ym.mjs +57 -0
- package/dist/package-DRO1LpXW.mjs +58 -0
- package/dist/package-Dav8qh6X.mjs +57 -0
- package/dist/package-DiA55dzE.mjs +57 -0
- package/dist/package-UwLIU765.mjs +58 -0
- package/dist/package-rasGC9_z.mjs +58 -0
- package/dist/run-4eArMb_9.mjs +1050 -0
- package/dist/run-67wfoMuo.mjs +5383 -0
- package/dist/run-6N2IdEX7.mjs +5410 -0
- package/dist/run-7iQKryzo.mjs +5383 -0
- package/dist/run-7s8lOXqB.mjs +1050 -0
- package/dist/run-B1l9Ed8k.mjs +5403 -0
- package/dist/run-B2zRMxE0.mjs +5508 -0
- package/dist/run-B31biy0V.mjs +1050 -0
- package/dist/run-B7V-xXM7.mjs +5775 -0
- package/dist/run-BKdOv7gX.mjs +1050 -0
- package/dist/run-BQ0lIare.mjs +1050 -0
- package/dist/run-BREPr7Yc.mjs +5508 -0
- package/dist/run-BTwshVk1.mjs +5728 -0
- package/dist/run-BUL3eAqT.mjs +1050 -0
- package/dist/run-BWsDPiNe.mjs +1050 -0
- package/dist/run-BX4iy6k8.mjs +1050 -0
- package/dist/run-BXYfq8mK.mjs +5836 -0
- package/dist/run-BY12Ataq.mjs +5732 -0
- package/dist/run-BYDOX4yk.mjs +5402 -0
- package/dist/run-BfF4bgA3.mjs +5403 -0
- package/dist/run-BieEN0Pg.mjs +5761 -0
- package/dist/run-BjEQi6PN.mjs +1050 -0
- package/dist/run-BlEFlhfn.mjs +5510 -0
- package/dist/run-BnX5Rw8x.mjs +5403 -0
- package/dist/run-C1lS3SwN.mjs +5733 -0
- package/dist/run-C3eaYQub.mjs +1050 -0
- package/dist/run-C676pHe-.mjs +5423 -0
- package/dist/run-C9Hrqjy_.mjs +1050 -0
- package/dist/run-CCcW4asS.mjs +1050 -0
- package/dist/run-CF6aXLmA.mjs +5445 -0
- package/dist/run-CHyN5U0t.mjs +1050 -0
- package/dist/run-COWb9ovq.mjs +1050 -0
- package/dist/run-CSk7i0Hq.mjs +1050 -0
- package/dist/run-CUtqSGWJ.mjs +1050 -0
- package/dist/run-CZj0sRCs.mjs +1050 -0
- package/dist/run-C_8iOjO1.mjs +5892 -0
- package/dist/run-CbzXO7fw.mjs +1050 -0
- package/dist/run-CuckJGM-.mjs +1050 -0
- package/dist/run-CxGAa9MH.mjs +1050 -0
- package/dist/run-CyU4-O-e.mjs +5411 -0
- package/dist/run-D0Ha4aWt.mjs +1050 -0
- package/dist/run-D39C7Ta3.mjs +1050 -0
- package/dist/run-D3bhRCCb.mjs +1051 -0
- package/dist/run-D7dLDpq3.mjs +5403 -0
- package/dist/run-DCINWip4.mjs +1050 -0
- package/dist/run-DCrZ3vke.mjs +5406 -0
- package/dist/run-DGSgljJE.mjs +5421 -0
- package/dist/run-DGsXW19O.mjs +5541 -0
- package/dist/run-DHrF2xpW.mjs +5776 -0
- package/dist/run-DIB0W42M.mjs +1050 -0
- package/dist/run-DJ4k0WzZ.mjs +1051 -0
- package/dist/run-DMI83W7i.mjs +5434 -0
- package/dist/run-DNX3djCI.mjs +1050 -0
- package/dist/run-DTkldU6a.mjs +1050 -0
- package/dist/run-DU10B3gK.mjs +5728 -0
- package/dist/run-DV86VJNG.mjs +5386 -0
- package/dist/run-DVZGKdKO.mjs +1050 -0
- package/dist/run-DXJ2M19k.mjs +1050 -0
- package/dist/run-DZOeccNu.mjs +5484 -0
- package/dist/run-DaYrEeQ9.mjs +5400 -0
- package/dist/run-DbC9-WM4.mjs +1050 -0
- package/dist/run-De-wkVl3.mjs +5487 -0
- package/dist/run-Dfl3Ze2L.mjs +5541 -0
- package/dist/run-Dge2K7h1.mjs +1050 -0
- package/dist/run-Du0YOs48.mjs +5446 -0
- package/dist/run-DuaIQAE4.mjs +5392 -0
- package/dist/run-DxM7xaBa.mjs +1050 -0
- package/dist/run-DysN-cGm.mjs +1050 -0
- package/dist/run-HhiYlJuS.mjs +5414 -0
- package/dist/run-JXLlRLFb.mjs +1050 -0
- package/dist/run-LDiT4WF-.mjs +1050 -0
- package/dist/run-NToLJWx-.mjs +5442 -0
- package/dist/run-azpFWM6w.mjs +1050 -0
- package/dist/run-r9CAcL_U.mjs +5403 -0
- package/dist/run-w-HVv5py.mjs +5410 -0
- package/dist/run-zo5GSoVC.mjs +1050 -0
- package/package.json +3 -2
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as stopDaemon, s as startDaemon, d as daemonStatus } from './run-C_8iOjO1.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -19,13 +19,24 @@ import 'zod';
|
|
|
19
19
|
import 'node:fs/promises';
|
|
20
20
|
import 'node:util';
|
|
21
21
|
|
|
22
|
+
const nodeMajor = parseInt(process.versions.node.split(".")[0], 10);
|
|
23
|
+
if (nodeMajor < 22) {
|
|
24
|
+
console.error(`Error: svamp requires Node.js >= 22 (you have ${process.version}).`);
|
|
25
|
+
console.error(" Node 22+ includes native WebSocket support needed by hypha-rpc.");
|
|
26
|
+
console.error(" Upgrade with: nvm install 22 && nvm alias default 22");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
22
29
|
const args = process.argv.slice(2);
|
|
23
30
|
const subcommand = args[0];
|
|
24
|
-
|
|
31
|
+
let daemonSubcommand = args[1];
|
|
25
32
|
async function main() {
|
|
26
33
|
if (subcommand === "login") {
|
|
27
34
|
await loginToHypha();
|
|
28
35
|
} else if (subcommand === "daemon") {
|
|
36
|
+
if (daemonSubcommand === "restart") {
|
|
37
|
+
await stopDaemon();
|
|
38
|
+
daemonSubcommand = "start";
|
|
39
|
+
}
|
|
29
40
|
if (daemonSubcommand === "start") {
|
|
30
41
|
const { spawn } = await import('child_process');
|
|
31
42
|
const extraArgs = [];
|
|
@@ -97,7 +108,7 @@ async function main() {
|
|
|
97
108
|
} else if (!subcommand || subcommand === "start") {
|
|
98
109
|
await handleInteractiveCommand();
|
|
99
110
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
100
|
-
const pkg = await import('./package-
|
|
111
|
+
const pkg = await import('./package-rasGC9_z.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
101
112
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
102
113
|
} else {
|
|
103
114
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -106,7 +117,7 @@ async function main() {
|
|
|
106
117
|
}
|
|
107
118
|
}
|
|
108
119
|
async function handleInteractiveCommand() {
|
|
109
|
-
const { runInteractive } = await import('./run-
|
|
120
|
+
const { runInteractive } = await import('./run-D3bhRCCb.mjs');
|
|
110
121
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
111
122
|
let directory = process.cwd();
|
|
112
123
|
let resumeSessionId;
|
|
@@ -151,7 +162,7 @@ async function handleAgentCommand() {
|
|
|
151
162
|
return;
|
|
152
163
|
}
|
|
153
164
|
if (agentArgs[0] === "list") {
|
|
154
|
-
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-
|
|
165
|
+
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.i; });
|
|
155
166
|
console.log("Known agents:");
|
|
156
167
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
157
168
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -163,7 +174,7 @@ async function handleAgentCommand() {
|
|
|
163
174
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
164
175
|
return;
|
|
165
176
|
}
|
|
166
|
-
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-
|
|
177
|
+
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.i; });
|
|
167
178
|
let cwd = process.cwd();
|
|
168
179
|
const filteredArgs = [];
|
|
169
180
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -187,12 +198,12 @@ async function handleAgentCommand() {
|
|
|
187
198
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
188
199
|
let backend;
|
|
189
200
|
if (KNOWN_MCP_AGENTS[config.agentName]) {
|
|
190
|
-
const { CodexMcpBackend } = await import('./run-
|
|
201
|
+
const { CodexMcpBackend } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.j; });
|
|
191
202
|
backend = new CodexMcpBackend({ cwd, log: logFn });
|
|
192
203
|
} else {
|
|
193
|
-
const { AcpBackend } = await import('./run-
|
|
194
|
-
const { GeminiTransport } = await import('./run-
|
|
195
|
-
const { DefaultTransport } = await import('./run-
|
|
204
|
+
const { AcpBackend } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.h; });
|
|
205
|
+
const { GeminiTransport } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.G; });
|
|
206
|
+
const { DefaultTransport } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.D; });
|
|
196
207
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
197
208
|
backend = new AcpBackend({
|
|
198
209
|
agentName: config.agentName,
|
|
@@ -310,7 +321,7 @@ async function handleSessionCommand() {
|
|
|
310
321
|
printSessionHelp();
|
|
311
322
|
return;
|
|
312
323
|
}
|
|
313
|
-
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare } = await import('./commands-
|
|
324
|
+
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionQueueAdd, sessionQueueList, sessionQueueClear } = await import('./commands-Cc73uUnP.mjs');
|
|
314
325
|
const parseFlagStr = (flag, shortFlag) => {
|
|
315
326
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
316
327
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -362,7 +373,7 @@ async function handleSessionCommand() {
|
|
|
362
373
|
allowDomain.push(sessionArgs[++i]);
|
|
363
374
|
}
|
|
364
375
|
}
|
|
365
|
-
const { parseShareArg } = await import('./commands-
|
|
376
|
+
const { parseShareArg } = await import('./commands-Cc73uUnP.mjs');
|
|
366
377
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
367
378
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
368
379
|
message,
|
|
@@ -434,6 +445,51 @@ async function handleSessionCommand() {
|
|
|
434
445
|
remove: parseFlagStr("--remove"),
|
|
435
446
|
list: hasFlag("--list")
|
|
436
447
|
});
|
|
448
|
+
} else if (sessionSubcommand === "ralph-start" || sessionSubcommand === "ralph") {
|
|
449
|
+
if (!sessionArgs[1] || !sessionArgs[2]) {
|
|
450
|
+
console.error('Usage: svamp session ralph-start <session-id> "<task>" [--completion-promise TEXT] [--max-iterations N]');
|
|
451
|
+
process.exit(1);
|
|
452
|
+
}
|
|
453
|
+
await sessionRalphStart(sessionArgs[1], sessionArgs[2], targetMachineId, {
|
|
454
|
+
completionPromise: parseFlagStr("--completion-promise"),
|
|
455
|
+
maxIterations: parseFlagInt("--max-iterations")
|
|
456
|
+
});
|
|
457
|
+
} else if (sessionSubcommand === "ralph-cancel") {
|
|
458
|
+
if (!sessionArgs[1]) {
|
|
459
|
+
console.error("Usage: svamp session ralph-cancel <session-id>");
|
|
460
|
+
process.exit(1);
|
|
461
|
+
}
|
|
462
|
+
await sessionRalphCancel(sessionArgs[1], targetMachineId);
|
|
463
|
+
} else if (sessionSubcommand === "ralph-status") {
|
|
464
|
+
if (!sessionArgs[1]) {
|
|
465
|
+
console.error("Usage: svamp session ralph-status <session-id>");
|
|
466
|
+
process.exit(1);
|
|
467
|
+
}
|
|
468
|
+
await sessionRalphStatus(sessionArgs[1], targetMachineId);
|
|
469
|
+
} else if (sessionSubcommand === "queue") {
|
|
470
|
+
const queueSubcmd = sessionArgs[1];
|
|
471
|
+
if (queueSubcmd === "add") {
|
|
472
|
+
if (!sessionArgs[2] || !sessionArgs[3]) {
|
|
473
|
+
console.error('Usage: svamp session queue add <session-id> "<message>"');
|
|
474
|
+
process.exit(1);
|
|
475
|
+
}
|
|
476
|
+
await sessionQueueAdd(sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
477
|
+
} else if (queueSubcmd === "list" || queueSubcmd === "ls") {
|
|
478
|
+
if (!sessionArgs[2]) {
|
|
479
|
+
console.error("Usage: svamp session queue list <session-id>");
|
|
480
|
+
process.exit(1);
|
|
481
|
+
}
|
|
482
|
+
await sessionQueueList(sessionArgs[2], targetMachineId);
|
|
483
|
+
} else if (queueSubcmd === "clear") {
|
|
484
|
+
if (!sessionArgs[2]) {
|
|
485
|
+
console.error("Usage: svamp session queue clear <session-id>");
|
|
486
|
+
process.exit(1);
|
|
487
|
+
}
|
|
488
|
+
await sessionQueueClear(sessionArgs[2], targetMachineId);
|
|
489
|
+
} else {
|
|
490
|
+
console.error("Usage: svamp session queue <add|list|clear> <session-id> [args]");
|
|
491
|
+
process.exit(1);
|
|
492
|
+
}
|
|
437
493
|
} else {
|
|
438
494
|
console.error(`Unknown session command: ${sessionSubcommand}`);
|
|
439
495
|
printSessionHelp();
|
|
@@ -449,7 +505,7 @@ async function handleMachineCommand() {
|
|
|
449
505
|
return;
|
|
450
506
|
}
|
|
451
507
|
if (machineSubcommand === "share") {
|
|
452
|
-
const { machineShare } = await import('./commands-
|
|
508
|
+
const { machineShare } = await import('./commands-Cc73uUnP.mjs');
|
|
453
509
|
let machineId;
|
|
454
510
|
const shareArgs = [];
|
|
455
511
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -562,7 +618,14 @@ Login successful!`);
|
|
|
562
618
|
console.log(`
|
|
563
619
|
You can now start the daemon: svamp daemon start`);
|
|
564
620
|
} catch (err) {
|
|
565
|
-
|
|
621
|
+
const msg = err.message || String(err);
|
|
622
|
+
if (msg.includes("WebSocket is not defined")) {
|
|
623
|
+
console.error(`Login failed: WebSocket is not available in this Node.js version (${process.version}).`);
|
|
624
|
+
console.error(` hypha-rpc requires Node.js >= 22 (which includes native WebSocket support).`);
|
|
625
|
+
console.error(` Please upgrade Node.js: nvm install 22 && nvm use 22`);
|
|
626
|
+
} else {
|
|
627
|
+
console.error("Login failed:", msg);
|
|
628
|
+
}
|
|
566
629
|
process.exit(1);
|
|
567
630
|
}
|
|
568
631
|
}
|
|
@@ -792,6 +855,7 @@ Usage:
|
|
|
792
855
|
svamp login [url] Login to Hypha (opens browser, stores token)
|
|
793
856
|
svamp daemon start Start the daemon (detached)
|
|
794
857
|
svamp daemon stop Stop the daemon (sessions preserved for restart)
|
|
858
|
+
svamp daemon restart Restart the daemon (sessions resume seamlessly)
|
|
795
859
|
svamp daemon status Show daemon status
|
|
796
860
|
svamp daemon install Install as system service (launchd/systemd/wrapper)
|
|
797
861
|
svamp session list List active sessions
|
|
@@ -829,6 +893,7 @@ Usage:
|
|
|
829
893
|
svamp daemon start --no-auto-continue Start without auto-continuing interrupted sessions
|
|
830
894
|
svamp daemon stop Stop the daemon (sessions preserved for restart)
|
|
831
895
|
svamp daemon stop --cleanup Stop and mark all sessions as stopped
|
|
896
|
+
svamp daemon restart Restart daemon (sessions resume seamlessly)
|
|
832
897
|
svamp daemon status Show daemon status
|
|
833
898
|
svamp daemon install Install as launchd service (macOS) \u2014 auto-restart on crash
|
|
834
899
|
svamp daemon uninstall Remove launchd service
|
|
@@ -884,6 +949,21 @@ Examples:
|
|
|
884
949
|
svamp session spawn claude --security-context ./security.json
|
|
885
950
|
svamp session share abc12345 --add bob@example.com:view
|
|
886
951
|
svamp session share abc12345 --list
|
|
952
|
+
|
|
953
|
+
Ralph Loop (iterative task loop):
|
|
954
|
+
svamp session ralph-start <id> "<task>" [--completion-promise TEXT] [--max-iterations N]
|
|
955
|
+
Start a Ralph loop
|
|
956
|
+
svamp session ralph-cancel <id> Cancel active Ralph loop
|
|
957
|
+
svamp session ralph-status <id> Show Ralph loop status
|
|
958
|
+
|
|
959
|
+
Message Queue:
|
|
960
|
+
svamp session queue add <id> "<message>" Add message to queue
|
|
961
|
+
svamp session queue list <id> List queued messages
|
|
962
|
+
svamp session queue clear <id> Clear the queue
|
|
963
|
+
|
|
964
|
+
Ralph Loop Examples:
|
|
965
|
+
svamp session ralph-start abc12 "Fix all linting errors" --completion-promise "All linting errors fixed" --max-iterations 10
|
|
966
|
+
svamp session ralph-cancel abc12
|
|
887
967
|
`);
|
|
888
968
|
}
|
|
889
969
|
function printMachineHelp() {
|