svamp-cli 0.1.27 → 0.1.29
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/agent-cli.mjs +1 -1
- package/dist/cli.mjs +114 -42
- package/dist/commands-CKTIJoV0.mjs +636 -0
- package/dist/commands-CgT3AgJ0.mjs +862 -0
- package/dist/commands-CtO1WRt4.mjs +862 -0
- package/dist/commands-DDB3y1L1.mjs +611 -0
- package/dist/commands-GEXri0yz.mjs +484 -0
- package/dist/index.mjs +8 -2
- package/dist/package-ASJ9pMHk.mjs +60 -0
- package/dist/package-CKOQ5lA7.mjs +57 -0
- package/dist/package-Cd-9ktpd.mjs +60 -0
- package/dist/package-CvnNnsm7.mjs +60 -0
- package/dist/package-DPXkSwHu.mjs +57 -0
- package/dist/package-k18Su1iE.mjs +58 -0
- package/dist/run-B6oqR83K.mjs +4631 -0
- package/dist/run-BCSNMhiz.mjs +4972 -0
- package/dist/run-CT7uizQo.mjs +4492 -0
- package/dist/run-CUIj4xbE.mjs +4880 -0
- package/dist/run-CuN6K7pN.mjs +4824 -0
- package/dist/run-D4N6FQON.mjs +4673 -0
- package/dist/run-D4dlA0jo.mjs +4813 -0
- package/dist/run-DMD0N00A.mjs +4737 -0
- package/dist/run-DQ5FOQ_c.mjs +4788 -0
- package/dist/run-DT7FgL8L.mjs +4339 -0
- package/dist/run-DZmxHj-e.mjs +4774 -0
- package/dist/run-DjfPjgOb.mjs +3904 -0
- package/dist/run-DlL4JALM.mjs +4719 -0
- package/dist/run-Dp2JPkGI.mjs +3913 -0
- package/dist/run-oHmTMcv8.mjs +4721 -0
- package/package.json +4 -7
- package/bin/svamp-agent.mjs +0 -34
package/dist/agent-cli.mjs
CHANGED
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-
|
|
1
|
+
import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-BCSNMhiz.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -6,12 +6,18 @@ import 'path';
|
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
8
8
|
import 'crypto';
|
|
9
|
-
import './hyphaClient-DLkclazm.mjs';
|
|
10
9
|
import 'node:crypto';
|
|
11
10
|
import 'node:fs';
|
|
12
11
|
import 'node:path';
|
|
13
12
|
import 'node:child_process';
|
|
14
13
|
import '@agentclientprotocol/sdk';
|
|
14
|
+
import 'node:os';
|
|
15
|
+
import '@modelcontextprotocol/sdk/client/index.js';
|
|
16
|
+
import '@modelcontextprotocol/sdk/client/stdio.js';
|
|
17
|
+
import '@modelcontextprotocol/sdk/types.js';
|
|
18
|
+
import 'zod';
|
|
19
|
+
import 'node:fs/promises';
|
|
20
|
+
import 'node:util';
|
|
15
21
|
|
|
16
22
|
const args = process.argv.slice(2);
|
|
17
23
|
const subcommand = args[0];
|
|
@@ -61,7 +67,8 @@ async function main() {
|
|
|
61
67
|
await startDaemon();
|
|
62
68
|
process.exit(0);
|
|
63
69
|
} else if (daemonSubcommand === "stop") {
|
|
64
|
-
|
|
70
|
+
const cleanup = args.includes("--cleanup");
|
|
71
|
+
await stopDaemon({ cleanup });
|
|
65
72
|
process.exit(0);
|
|
66
73
|
} else if (daemonSubcommand === "status") {
|
|
67
74
|
daemonStatus();
|
|
@@ -82,7 +89,7 @@ async function main() {
|
|
|
82
89
|
} else if (subcommand === "--help" || subcommand === "-h" || !subcommand) {
|
|
83
90
|
printHelp();
|
|
84
91
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
85
|
-
const pkg = await import('./package-
|
|
92
|
+
const pkg = await import('./package-CKOQ5lA7.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
86
93
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
87
94
|
} else {
|
|
88
95
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -97,7 +104,7 @@ async function handleAgentCommand() {
|
|
|
97
104
|
return;
|
|
98
105
|
}
|
|
99
106
|
if (agentArgs[0] === "list") {
|
|
100
|
-
const { KNOWN_ACP_AGENTS } = await import('./run-
|
|
107
|
+
const { KNOWN_ACP_AGENTS } = await import('./run-BCSNMhiz.mjs').then(function (n) { return n.f; });
|
|
101
108
|
console.log("Known ACP agents:");
|
|
102
109
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
103
110
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")}`);
|
|
@@ -106,10 +113,10 @@ async function handleAgentCommand() {
|
|
|
106
113
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
107
114
|
return;
|
|
108
115
|
}
|
|
109
|
-
const { resolveAcpAgentConfig } = await import('./run-
|
|
110
|
-
const { AcpBackend } = await import('./run-
|
|
111
|
-
const { GeminiTransport } = await import('./run-
|
|
112
|
-
const { DefaultTransport } = await import('./run-
|
|
116
|
+
const { resolveAcpAgentConfig } = await import('./run-BCSNMhiz.mjs').then(function (n) { return n.f; });
|
|
117
|
+
const { AcpBackend } = await import('./run-BCSNMhiz.mjs').then(function (n) { return n.e; });
|
|
118
|
+
const { GeminiTransport } = await import('./run-BCSNMhiz.mjs').then(function (n) { return n.G; });
|
|
119
|
+
const { DefaultTransport } = await import('./run-BCSNMhiz.mjs').then(function (n) { return n.D; });
|
|
113
120
|
let cwd = process.cwd();
|
|
114
121
|
const filteredArgs = [];
|
|
115
122
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -232,15 +239,45 @@ Agent stopped: ${msg.detail || ""}`);
|
|
|
232
239
|
});
|
|
233
240
|
}
|
|
234
241
|
async function handleSessionCommand() {
|
|
235
|
-
const
|
|
242
|
+
const rawSessionArgs = args.slice(1);
|
|
243
|
+
let targetMachineId;
|
|
244
|
+
const sessionArgs = [];
|
|
245
|
+
for (let i = 0; i < rawSessionArgs.length; i++) {
|
|
246
|
+
if ((rawSessionArgs[i] === "--machine" || rawSessionArgs[i] === "-m") && i + 1 < rawSessionArgs.length) {
|
|
247
|
+
targetMachineId = rawSessionArgs[i + 1];
|
|
248
|
+
i++;
|
|
249
|
+
} else {
|
|
250
|
+
sessionArgs.push(rawSessionArgs[i]);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
236
253
|
const sessionSubcommand = sessionArgs[0];
|
|
237
254
|
if (!sessionSubcommand || sessionSubcommand === "--help" || sessionSubcommand === "-h") {
|
|
238
255
|
printSessionHelp();
|
|
239
256
|
return;
|
|
240
257
|
}
|
|
241
|
-
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach } = await import('./commands-
|
|
242
|
-
|
|
243
|
-
|
|
258
|
+
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait } = await import('./commands-CtO1WRt4.mjs');
|
|
259
|
+
const parseFlagStr = (flag, shortFlag) => {
|
|
260
|
+
for (let i = 1; i < sessionArgs.length; i++) {
|
|
261
|
+
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
262
|
+
return sessionArgs[i + 1];
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return void 0;
|
|
266
|
+
};
|
|
267
|
+
const parseFlagInt = (flag, shortFlag) => {
|
|
268
|
+
const v = parseFlagStr(flag, shortFlag);
|
|
269
|
+
if (v === void 0) return void 0;
|
|
270
|
+
const n = parseInt(v, 10);
|
|
271
|
+
return isNaN(n) ? void 0 : n;
|
|
272
|
+
};
|
|
273
|
+
const hasFlag = (flag) => sessionArgs.includes(flag);
|
|
274
|
+
if (sessionSubcommand === "machines" || sessionSubcommand === "machine") {
|
|
275
|
+
await sessionMachines();
|
|
276
|
+
} else if (sessionSubcommand === "list" || sessionSubcommand === "ls") {
|
|
277
|
+
await sessionList(targetMachineId, {
|
|
278
|
+
active: hasFlag("--active"),
|
|
279
|
+
json: hasFlag("--json")
|
|
280
|
+
});
|
|
244
281
|
} else if (sessionSubcommand === "spawn") {
|
|
245
282
|
const agent = sessionArgs[1] || "claude";
|
|
246
283
|
let dir = process.cwd();
|
|
@@ -250,36 +287,58 @@ async function handleSessionCommand() {
|
|
|
250
287
|
i++;
|
|
251
288
|
}
|
|
252
289
|
}
|
|
253
|
-
|
|
290
|
+
const message = parseFlagStr("--message");
|
|
291
|
+
const wait = hasFlag("--wait");
|
|
292
|
+
await sessionSpawn(agent, dir, targetMachineId, { message, wait });
|
|
254
293
|
} else if (sessionSubcommand === "stop") {
|
|
255
294
|
if (!sessionArgs[1]) {
|
|
256
295
|
console.error("Usage: svamp session stop <session-id>");
|
|
257
296
|
process.exit(1);
|
|
258
297
|
}
|
|
259
|
-
await sessionStop(sessionArgs[1]);
|
|
298
|
+
await sessionStop(sessionArgs[1], targetMachineId);
|
|
260
299
|
} else if (sessionSubcommand === "info") {
|
|
261
300
|
if (!sessionArgs[1]) {
|
|
262
301
|
console.error("Usage: svamp session info <session-id>");
|
|
263
302
|
process.exit(1);
|
|
264
303
|
}
|
|
265
|
-
await sessionInfo(sessionArgs[1]
|
|
304
|
+
await sessionInfo(sessionArgs[1], targetMachineId, {
|
|
305
|
+
json: hasFlag("--json")
|
|
306
|
+
});
|
|
266
307
|
} else if (sessionSubcommand === "messages" || sessionSubcommand === "msgs") {
|
|
267
308
|
if (!sessionArgs[1]) {
|
|
268
|
-
console.error("Usage: svamp session messages <session-id> [--last N]");
|
|
309
|
+
console.error("Usage: svamp session messages <session-id> [--last N] [--json] [--after N] [--limit N]");
|
|
269
310
|
process.exit(1);
|
|
270
311
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
312
|
+
await sessionMessages(sessionArgs[1], targetMachineId, {
|
|
313
|
+
last: parseFlagInt("--last"),
|
|
314
|
+
json: hasFlag("--json"),
|
|
315
|
+
after: parseFlagInt("--after"),
|
|
316
|
+
limit: parseFlagInt("--limit")
|
|
317
|
+
});
|
|
277
318
|
} else if (sessionSubcommand === "attach") {
|
|
278
319
|
if (!sessionArgs[1]) {
|
|
279
320
|
console.error("Usage: svamp session attach <session-id>");
|
|
280
321
|
process.exit(1);
|
|
281
322
|
}
|
|
282
|
-
await sessionAttach(sessionArgs[1]);
|
|
323
|
+
await sessionAttach(sessionArgs[1], targetMachineId);
|
|
324
|
+
} else if (sessionSubcommand === "send") {
|
|
325
|
+
if (!sessionArgs[1] || !sessionArgs[2]) {
|
|
326
|
+
console.error("Usage: svamp session send <session-id> <message> [--wait] [--timeout N] [--json]");
|
|
327
|
+
process.exit(1);
|
|
328
|
+
}
|
|
329
|
+
await sessionSend(sessionArgs[1], sessionArgs[2], targetMachineId, {
|
|
330
|
+
wait: hasFlag("--wait"),
|
|
331
|
+
timeout: parseFlagInt("--timeout"),
|
|
332
|
+
json: hasFlag("--json")
|
|
333
|
+
});
|
|
334
|
+
} else if (sessionSubcommand === "wait") {
|
|
335
|
+
if (!sessionArgs[1]) {
|
|
336
|
+
console.error("Usage: svamp session wait <session-id> [--timeout N]");
|
|
337
|
+
process.exit(1);
|
|
338
|
+
}
|
|
339
|
+
await sessionWait(sessionArgs[1], targetMachineId, {
|
|
340
|
+
timeout: parseFlagInt("--timeout")
|
|
341
|
+
});
|
|
283
342
|
} else {
|
|
284
343
|
console.error(`Unknown session command: ${sessionSubcommand}`);
|
|
285
344
|
printSessionHelp();
|
|
@@ -591,11 +650,13 @@ svamp \u2014 Svamp CLI with Hypha transport
|
|
|
591
650
|
Usage:
|
|
592
651
|
svamp login [url] Login to Hypha (opens browser, stores token)
|
|
593
652
|
svamp daemon start Start the daemon (detached)
|
|
594
|
-
svamp daemon stop Stop the daemon
|
|
653
|
+
svamp daemon stop Stop the daemon (sessions preserved for restart)
|
|
654
|
+
svamp daemon stop --cleanup Stop and mark all sessions as stopped
|
|
595
655
|
svamp daemon status Show daemon status
|
|
596
656
|
svamp daemon install Install as system service (launchd/systemd/wrapper)
|
|
597
657
|
svamp daemon uninstall Remove system service
|
|
598
658
|
svamp session list List active daemon sessions
|
|
659
|
+
svamp session machines List discoverable machines
|
|
599
660
|
svamp session spawn Spawn a new session on the daemon
|
|
600
661
|
svamp session attach <id> Attach to a session (interactive)
|
|
601
662
|
svamp session --help Show all session commands
|
|
@@ -618,11 +679,12 @@ function printDaemonHelp() {
|
|
|
618
679
|
svamp daemon \u2014 Daemon management
|
|
619
680
|
|
|
620
681
|
Usage:
|
|
621
|
-
svamp daemon start
|
|
622
|
-
svamp daemon stop
|
|
623
|
-
svamp daemon
|
|
624
|
-
svamp daemon
|
|
625
|
-
svamp daemon
|
|
682
|
+
svamp daemon start Start the daemon (detached)
|
|
683
|
+
svamp daemon stop Stop the daemon (sessions preserved for restart)
|
|
684
|
+
svamp daemon stop --cleanup Stop and mark all sessions as stopped
|
|
685
|
+
svamp daemon status Show daemon status
|
|
686
|
+
svamp daemon install Install as launchd service (macOS) \u2014 auto-restart on crash
|
|
687
|
+
svamp daemon uninstall Remove launchd service
|
|
626
688
|
`);
|
|
627
689
|
}
|
|
628
690
|
function printSessionHelp() {
|
|
@@ -630,16 +692,25 @@ function printSessionHelp() {
|
|
|
630
692
|
svamp session \u2014 Manage daemon sessions (Claude, Gemini, OpenCode)
|
|
631
693
|
|
|
632
694
|
Usage:
|
|
633
|
-
svamp session list
|
|
634
|
-
svamp session
|
|
635
|
-
svamp session
|
|
636
|
-
|
|
637
|
-
svamp session
|
|
638
|
-
svamp session
|
|
695
|
+
svamp session list [--active] [--json] List sessions (alias: ls)
|
|
696
|
+
svamp session machines List discoverable machines
|
|
697
|
+
svamp session spawn <agent> [-d <path>] [--message <msg>] [--wait]
|
|
698
|
+
Spawn a new session
|
|
699
|
+
svamp session stop <id> Stop a session
|
|
700
|
+
svamp session info <id> [--json] Show session metadata + activity
|
|
701
|
+
svamp session send <id> <message> [--wait] [--timeout N] [--json]
|
|
702
|
+
Send a message to a session
|
|
703
|
+
svamp session wait <id> [--timeout N] Wait for agent to become idle
|
|
704
|
+
svamp session messages <id> [--last N] [--json] [--after N] [--limit N]
|
|
705
|
+
Show messages (alias: msgs)
|
|
706
|
+
svamp session attach <id> Attach to session (interactive)
|
|
707
|
+
|
|
708
|
+
Options:
|
|
709
|
+
--machine <id>, -m <id> Target a specific machine (prefix match supported)
|
|
639
710
|
|
|
640
711
|
Agents: claude (default), gemini, opencode
|
|
641
712
|
|
|
642
|
-
Session IDs can be abbreviated (prefix match, like Docker).
|
|
713
|
+
Session and machine IDs can be abbreviated (prefix match, like Docker).
|
|
643
714
|
|
|
644
715
|
Attach commands:
|
|
645
716
|
/quit, /detach Detach (session keeps running)
|
|
@@ -648,11 +719,12 @@ Attach commands:
|
|
|
648
719
|
/info Show session status
|
|
649
720
|
|
|
650
721
|
Examples:
|
|
651
|
-
svamp session list
|
|
652
|
-
svamp session spawn claude -d ~/projects/myapp
|
|
653
|
-
svamp session
|
|
654
|
-
svamp session
|
|
655
|
-
svamp session
|
|
722
|
+
svamp session list --active --json
|
|
723
|
+
svamp session spawn claude -d ~/projects/myapp --message "Fix the bug" --wait
|
|
724
|
+
svamp session send abc12345 "Run the tests" --wait --timeout 600
|
|
725
|
+
svamp session wait abc12345 --timeout 120
|
|
726
|
+
svamp session info abc12345 --json
|
|
727
|
+
svamp session messages abc12345 --last 10 --json
|
|
656
728
|
svamp session attach abc12345
|
|
657
729
|
`);
|
|
658
730
|
}
|