svamp-cli 0.1.43 → 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 +87 -13
- package/dist/commands-8Xn02pQg.mjs +1217 -0
- package/dist/commands-BD_NjWJL.mjs +1217 -0
- package/dist/commands-BIFQZZGw.mjs +1375 -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-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-CorUNLRF.mjs +1375 -0
- package/dist/commands-DLoe6FyK.mjs +1375 -0
- package/dist/commands-DVygnMsh.mjs +1217 -0
- package/dist/commands-DZfaDmsk.mjs +1374 -0
- package/dist/index.mjs +1 -1
- package/dist/package-BufekbY1.mjs +57 -0
- package/dist/package-CmIBOZtY.mjs +57 -0
- package/dist/package-CmVt1kdw.mjs +58 -0
- package/dist/package-DRO1LpXW.mjs +58 -0
- package/dist/package-UwLIU765.mjs +58 -0
- package/dist/package-rasGC9_z.mjs +58 -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-BREPr7Yc.mjs +5508 -0
- package/dist/run-BTwshVk1.mjs +5728 -0
- package/dist/run-BWsDPiNe.mjs +1050 -0
- package/dist/run-BXYfq8mK.mjs +5836 -0
- package/dist/run-BY12Ataq.mjs +5732 -0
- package/dist/run-BieEN0Pg.mjs +5761 -0
- package/dist/run-BlEFlhfn.mjs +5510 -0
- package/dist/run-C1lS3SwN.mjs +5733 -0
- package/dist/run-C9Hrqjy_.mjs +1050 -0
- package/dist/run-CCcW4asS.mjs +1050 -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-C_8iOjO1.mjs +5892 -0
- package/dist/run-CxGAa9MH.mjs +1050 -0
- package/dist/run-D39C7Ta3.mjs +1050 -0
- package/dist/run-D3bhRCCb.mjs +1051 -0
- package/dist/run-DGsXW19O.mjs +5541 -0
- package/dist/run-DHrF2xpW.mjs +5776 -0
- package/dist/run-DJ4k0WzZ.mjs +1051 -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-DVZGKdKO.mjs +1050 -0
- package/dist/run-DXJ2M19k.mjs +1050 -0
- package/dist/run-DZOeccNu.mjs +5484 -0
- package/dist/run-De-wkVl3.mjs +5487 -0
- package/dist/run-Dfl3Ze2L.mjs +5541 -0
- package/dist/run-Dge2K7h1.mjs +1050 -0
- package/package.json +3 -2
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as stopDaemon, s as startDaemon, d as daemonStatus } from './run-
|
|
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,6 +19,13 @@ 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];
|
|
@@ -101,7 +108,7 @@ async function main() {
|
|
|
101
108
|
} else if (!subcommand || subcommand === "start") {
|
|
102
109
|
await handleInteractiveCommand();
|
|
103
110
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
104
|
-
const pkg = await import('./package-
|
|
111
|
+
const pkg = await import('./package-rasGC9_z.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
105
112
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
106
113
|
} else {
|
|
107
114
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -110,7 +117,7 @@ async function main() {
|
|
|
110
117
|
}
|
|
111
118
|
}
|
|
112
119
|
async function handleInteractiveCommand() {
|
|
113
|
-
const { runInteractive } = await import('./run-
|
|
120
|
+
const { runInteractive } = await import('./run-D3bhRCCb.mjs');
|
|
114
121
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
115
122
|
let directory = process.cwd();
|
|
116
123
|
let resumeSessionId;
|
|
@@ -155,7 +162,7 @@ async function handleAgentCommand() {
|
|
|
155
162
|
return;
|
|
156
163
|
}
|
|
157
164
|
if (agentArgs[0] === "list") {
|
|
158
|
-
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; });
|
|
159
166
|
console.log("Known agents:");
|
|
160
167
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
161
168
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -167,7 +174,7 @@ async function handleAgentCommand() {
|
|
|
167
174
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
168
175
|
return;
|
|
169
176
|
}
|
|
170
|
-
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; });
|
|
171
178
|
let cwd = process.cwd();
|
|
172
179
|
const filteredArgs = [];
|
|
173
180
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -191,12 +198,12 @@ async function handleAgentCommand() {
|
|
|
191
198
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
192
199
|
let backend;
|
|
193
200
|
if (KNOWN_MCP_AGENTS[config.agentName]) {
|
|
194
|
-
const { CodexMcpBackend } = await import('./run-
|
|
201
|
+
const { CodexMcpBackend } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.j; });
|
|
195
202
|
backend = new CodexMcpBackend({ cwd, log: logFn });
|
|
196
203
|
} else {
|
|
197
|
-
const { AcpBackend } = await import('./run-
|
|
198
|
-
const { GeminiTransport } = await import('./run-
|
|
199
|
-
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; });
|
|
200
207
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
201
208
|
backend = new AcpBackend({
|
|
202
209
|
agentName: config.agentName,
|
|
@@ -314,7 +321,7 @@ async function handleSessionCommand() {
|
|
|
314
321
|
printSessionHelp();
|
|
315
322
|
return;
|
|
316
323
|
}
|
|
317
|
-
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');
|
|
318
325
|
const parseFlagStr = (flag, shortFlag) => {
|
|
319
326
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
320
327
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -366,7 +373,7 @@ async function handleSessionCommand() {
|
|
|
366
373
|
allowDomain.push(sessionArgs[++i]);
|
|
367
374
|
}
|
|
368
375
|
}
|
|
369
|
-
const { parseShareArg } = await import('./commands-
|
|
376
|
+
const { parseShareArg } = await import('./commands-Cc73uUnP.mjs');
|
|
370
377
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
371
378
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
372
379
|
message,
|
|
@@ -438,6 +445,51 @@ async function handleSessionCommand() {
|
|
|
438
445
|
remove: parseFlagStr("--remove"),
|
|
439
446
|
list: hasFlag("--list")
|
|
440
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
|
+
}
|
|
441
493
|
} else {
|
|
442
494
|
console.error(`Unknown session command: ${sessionSubcommand}`);
|
|
443
495
|
printSessionHelp();
|
|
@@ -453,7 +505,7 @@ async function handleMachineCommand() {
|
|
|
453
505
|
return;
|
|
454
506
|
}
|
|
455
507
|
if (machineSubcommand === "share") {
|
|
456
|
-
const { machineShare } = await import('./commands-
|
|
508
|
+
const { machineShare } = await import('./commands-Cc73uUnP.mjs');
|
|
457
509
|
let machineId;
|
|
458
510
|
const shareArgs = [];
|
|
459
511
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -566,7 +618,14 @@ Login successful!`);
|
|
|
566
618
|
console.log(`
|
|
567
619
|
You can now start the daemon: svamp daemon start`);
|
|
568
620
|
} catch (err) {
|
|
569
|
-
|
|
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
|
+
}
|
|
570
629
|
process.exit(1);
|
|
571
630
|
}
|
|
572
631
|
}
|
|
@@ -890,6 +949,21 @@ Examples:
|
|
|
890
949
|
svamp session spawn claude --security-context ./security.json
|
|
891
950
|
svamp session share abc12345 --add bob@example.com:view
|
|
892
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
|
|
893
967
|
`);
|
|
894
968
|
}
|
|
895
969
|
function printMachineHelp() {
|