svamp-cli 0.1.48 → 0.1.50
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 +80 -36
- package/dist/commands-6EyqaoCp.mjs +507 -0
- package/dist/commands-BOYo9cdy.mjs +1741 -0
- package/dist/commands-Cw2Od6mc.mjs +1683 -0
- package/dist/commands-D-nIO_Sf.mjs +1741 -0
- package/dist/commands-D1brd9fB.mjs +1741 -0
- package/dist/commands-DHnFOhQC.mjs +1741 -0
- package/dist/commands-DWira-Cz.mjs +1741 -0
- package/dist/commands-DlPBC5p0.mjs +514 -0
- package/dist/commands-DwveR96q.mjs +1683 -0
- package/dist/commands-HrBaGV-C.mjs +1683 -0
- package/dist/commands-Wng0OuNY.mjs +1683 -0
- package/dist/index.mjs +1 -1
- package/dist/package-BLDik3NY.mjs +60 -0
- package/dist/package-BYUO-39f.mjs +60 -0
- package/dist/run-B9ND6srh.mjs +6154 -0
- package/dist/run-Bc83CRUn.mjs +6344 -0
- package/dist/run-BicITYWX.mjs +6138 -0
- package/dist/run-BxTdRjCG.mjs +1051 -0
- package/dist/run-C0ecvcRP.mjs +6320 -0
- package/dist/run-C4pdX4sY.mjs +1051 -0
- package/dist/run-CE4H8ZiN.mjs +6273 -0
- package/dist/run-CtJRxaFC.mjs +1051 -0
- package/dist/run-D1PFrNZB.mjs +6273 -0
- package/dist/run-DWdtp6VD.mjs +6136 -0
- package/dist/run-Dd9XkswU.mjs +1051 -0
- package/dist/run-K-_jahIg.mjs +1051 -0
- package/dist/run-YFYpyThQ.mjs +1051 -0
- package/dist/run-coIDvBK_.mjs +6127 -0
- package/dist/run-wpUutZ9C.mjs +1051 -0
- package/dist/run-yTjJ7noq.mjs +1051 -0
- package/dist/tunnel-BXEroHJF.mjs +299 -0
- package/package.json +5 -3
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-Bc83CRUn.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -105,12 +105,15 @@ async function main() {
|
|
|
105
105
|
await handleMachineCommand();
|
|
106
106
|
} else if (subcommand === "skills") {
|
|
107
107
|
await handleSkillsCommand();
|
|
108
|
+
} else if (subcommand === "service" || subcommand === "svc") {
|
|
109
|
+
const { handleServiceCommand } = await import('./commands-DlPBC5p0.mjs').then(function (n) { return n.c; });
|
|
110
|
+
await handleServiceCommand();
|
|
108
111
|
} else if (subcommand === "--help" || subcommand === "-h") {
|
|
109
112
|
printHelp();
|
|
110
113
|
} else if (!subcommand || subcommand === "start") {
|
|
111
114
|
await handleInteractiveCommand();
|
|
112
115
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
113
|
-
const pkg = await import('./package-
|
|
116
|
+
const pkg = await import('./package-BLDik3NY.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
114
117
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
115
118
|
} else {
|
|
116
119
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -119,7 +122,7 @@ async function main() {
|
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
async function handleInteractiveCommand() {
|
|
122
|
-
const { runInteractive } = await import('./run-
|
|
125
|
+
const { runInteractive } = await import('./run-C4pdX4sY.mjs');
|
|
123
126
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
124
127
|
let directory = process.cwd();
|
|
125
128
|
let resumeSessionId;
|
|
@@ -164,7 +167,7 @@ async function handleAgentCommand() {
|
|
|
164
167
|
return;
|
|
165
168
|
}
|
|
166
169
|
if (agentArgs[0] === "list") {
|
|
167
|
-
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-
|
|
170
|
+
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-Bc83CRUn.mjs').then(function (n) { return n.i; });
|
|
168
171
|
console.log("Known agents:");
|
|
169
172
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
170
173
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -176,7 +179,7 @@ async function handleAgentCommand() {
|
|
|
176
179
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
177
180
|
return;
|
|
178
181
|
}
|
|
179
|
-
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-
|
|
182
|
+
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-Bc83CRUn.mjs').then(function (n) { return n.i; });
|
|
180
183
|
let cwd = process.cwd();
|
|
181
184
|
const filteredArgs = [];
|
|
182
185
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -200,12 +203,12 @@ async function handleAgentCommand() {
|
|
|
200
203
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
201
204
|
let backend;
|
|
202
205
|
if (KNOWN_MCP_AGENTS[config.agentName]) {
|
|
203
|
-
const { CodexMcpBackend } = await import('./run-
|
|
206
|
+
const { CodexMcpBackend } = await import('./run-Bc83CRUn.mjs').then(function (n) { return n.j; });
|
|
204
207
|
backend = new CodexMcpBackend({ cwd, log: logFn });
|
|
205
208
|
} else {
|
|
206
|
-
const { AcpBackend } = await import('./run-
|
|
207
|
-
const { GeminiTransport } = await import('./run-
|
|
208
|
-
const { DefaultTransport } = await import('./run-
|
|
209
|
+
const { AcpBackend } = await import('./run-Bc83CRUn.mjs').then(function (n) { return n.h; });
|
|
210
|
+
const { GeminiTransport } = await import('./run-Bc83CRUn.mjs').then(function (n) { return n.G; });
|
|
211
|
+
const { DefaultTransport } = await import('./run-Bc83CRUn.mjs').then(function (n) { return n.D; });
|
|
209
212
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
210
213
|
backend = new AcpBackend({
|
|
211
214
|
agentName: config.agentName,
|
|
@@ -323,7 +326,7 @@ async function handleSessionCommand() {
|
|
|
323
326
|
printSessionHelp();
|
|
324
327
|
return;
|
|
325
328
|
}
|
|
326
|
-
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionQueueAdd, sessionQueueList, sessionQueueClear } = await import('./commands-
|
|
329
|
+
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionQueueAdd, sessionQueueList, sessionQueueClear } = await import('./commands-D-nIO_Sf.mjs');
|
|
327
330
|
const parseFlagStr = (flag, shortFlag) => {
|
|
328
331
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
329
332
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -383,7 +386,7 @@ async function handleSessionCommand() {
|
|
|
383
386
|
allowDomain.push(sessionArgs[++i]);
|
|
384
387
|
}
|
|
385
388
|
}
|
|
386
|
-
const { parseShareArg } = await import('./commands-
|
|
389
|
+
const { parseShareArg } = await import('./commands-D-nIO_Sf.mjs');
|
|
387
390
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
388
391
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
389
392
|
message,
|
|
@@ -467,7 +470,7 @@ async function handleSessionCommand() {
|
|
|
467
470
|
console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
|
|
468
471
|
process.exit(1);
|
|
469
472
|
}
|
|
470
|
-
const { sessionApprove } = await import('./commands-
|
|
473
|
+
const { sessionApprove } = await import('./commands-D-nIO_Sf.mjs');
|
|
471
474
|
const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
472
475
|
await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
|
|
473
476
|
json: hasFlag("--json")
|
|
@@ -477,19 +480,20 @@ async function handleSessionCommand() {
|
|
|
477
480
|
console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
|
|
478
481
|
process.exit(1);
|
|
479
482
|
}
|
|
480
|
-
const { sessionDeny } = await import('./commands-
|
|
483
|
+
const { sessionDeny } = await import('./commands-D-nIO_Sf.mjs');
|
|
481
484
|
const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
482
485
|
await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
|
|
483
486
|
json: hasFlag("--json")
|
|
484
487
|
});
|
|
485
488
|
} else if (sessionSubcommand === "ralph-start" || sessionSubcommand === "ralph") {
|
|
486
489
|
if (!sessionArgs[1] || !sessionArgs[2]) {
|
|
487
|
-
console.error('Usage: svamp session ralph-start <session-id> "<task>" [--completion-promise TEXT] [--max-iterations N]');
|
|
490
|
+
console.error('Usage: svamp session ralph-start <session-id> "<task>" [--completion-promise TEXT] [--max-iterations N] [--cooldown N]');
|
|
488
491
|
process.exit(1);
|
|
489
492
|
}
|
|
490
493
|
await sessionRalphStart(sessionArgs[1], sessionArgs[2], targetMachineId, {
|
|
491
494
|
completionPromise: parseFlagStr("--completion-promise"),
|
|
492
|
-
maxIterations: parseFlagInt("--max-iterations")
|
|
495
|
+
maxIterations: parseFlagInt("--max-iterations"),
|
|
496
|
+
cooldownSeconds: parseFlagInt("--cooldown")
|
|
493
497
|
});
|
|
494
498
|
} else if (sessionSubcommand === "ralph-cancel") {
|
|
495
499
|
if (!sessionArgs[1]) {
|
|
@@ -542,7 +546,7 @@ async function handleMachineCommand() {
|
|
|
542
546
|
return;
|
|
543
547
|
}
|
|
544
548
|
if (machineSubcommand === "share") {
|
|
545
|
-
const { machineShare } = await import('./commands-
|
|
549
|
+
const { machineShare } = await import('./commands-D-nIO_Sf.mjs');
|
|
546
550
|
let machineId;
|
|
547
551
|
const shareArgs = [];
|
|
548
552
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -571,6 +575,50 @@ async function handleMachineCommand() {
|
|
|
571
575
|
}
|
|
572
576
|
}
|
|
573
577
|
await machineShare(machineId, { add, remove, list, configPath, showConfig });
|
|
578
|
+
} else if (machineSubcommand === "exec") {
|
|
579
|
+
const { machineExec } = await import('./commands-D-nIO_Sf.mjs');
|
|
580
|
+
let machineId;
|
|
581
|
+
let cwd;
|
|
582
|
+
const cmdParts = [];
|
|
583
|
+
for (let i = 1; i < machineArgs.length; i++) {
|
|
584
|
+
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
585
|
+
machineId = machineArgs[++i];
|
|
586
|
+
} else if (machineArgs[i] === "--cwd" && i + 1 < machineArgs.length) {
|
|
587
|
+
cwd = machineArgs[++i];
|
|
588
|
+
} else {
|
|
589
|
+
cmdParts.push(machineArgs[i]);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
const command = cmdParts.join(" ");
|
|
593
|
+
if (!command) {
|
|
594
|
+
console.error("Usage: svamp machine exec <command> [--cwd <path>] [-m <id>]");
|
|
595
|
+
process.exit(1);
|
|
596
|
+
}
|
|
597
|
+
await machineExec(machineId, command, cwd);
|
|
598
|
+
} else if (machineSubcommand === "info") {
|
|
599
|
+
const { machineInfo } = await import('./commands-D-nIO_Sf.mjs');
|
|
600
|
+
let machineId;
|
|
601
|
+
for (let i = 1; i < machineArgs.length; i++) {
|
|
602
|
+
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
603
|
+
machineId = machineArgs[++i];
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
await machineInfo(machineId);
|
|
607
|
+
} else if (machineSubcommand === "ls") {
|
|
608
|
+
const { machineLs } = await import('./commands-D-nIO_Sf.mjs');
|
|
609
|
+
let machineId;
|
|
610
|
+
let showHidden = false;
|
|
611
|
+
let path;
|
|
612
|
+
for (let i = 1; i < machineArgs.length; i++) {
|
|
613
|
+
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
614
|
+
machineId = machineArgs[++i];
|
|
615
|
+
} else if (machineArgs[i] === "--hidden" || machineArgs[i] === "-a") {
|
|
616
|
+
showHidden = true;
|
|
617
|
+
} else if (!path) {
|
|
618
|
+
path = machineArgs[i];
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
await machineLs(machineId, path, showHidden);
|
|
574
622
|
} else {
|
|
575
623
|
console.error(`Unknown machine command: ${machineSubcommand}`);
|
|
576
624
|
printMachineHelp();
|
|
@@ -585,7 +633,7 @@ async function handleSkillsCommand() {
|
|
|
585
633
|
printSkillsHelp();
|
|
586
634
|
return;
|
|
587
635
|
}
|
|
588
|
-
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-
|
|
636
|
+
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-6EyqaoCp.mjs');
|
|
589
637
|
if (skillsSubcommand === "find" || skillsSubcommand === "search") {
|
|
590
638
|
const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
591
639
|
if (!query) {
|
|
@@ -956,6 +1004,9 @@ Usage:
|
|
|
956
1004
|
svamp skills find <query> Search the skills marketplace
|
|
957
1005
|
svamp skills install <n> Install a skill from the marketplace
|
|
958
1006
|
svamp skills --help Show all skill commands
|
|
1007
|
+
svamp service expose <name> Expose a service from this sandbox
|
|
1008
|
+
svamp service list List service groups
|
|
1009
|
+
svamp service --help Show all service commands
|
|
959
1010
|
svamp agent list List known agents
|
|
960
1011
|
svamp agent <name> Start local agent session (gemini, codex)
|
|
961
1012
|
svamp --version Show version
|
|
@@ -1103,9 +1154,10 @@ Attach commands:
|
|
|
1103
1154
|
/info Show session status
|
|
1104
1155
|
|
|
1105
1156
|
Ralph Loop (iterative task automation):
|
|
1106
|
-
svamp session ralph-start <id> "<task>" [--completion-promise TEXT] [--max-iterations N]
|
|
1157
|
+
svamp session ralph-start <id> "<task>" [--completion-promise TEXT] [--max-iterations N] [--cooldown N]
|
|
1107
1158
|
svamp session ralph-cancel <id>
|
|
1108
1159
|
svamp session ralph-status <id>
|
|
1160
|
+
(alias: svamp session ralph <id> "<task>" ...)
|
|
1109
1161
|
|
|
1110
1162
|
Message Queue:
|
|
1111
1163
|
svamp session queue add <id> "<message>"
|
|
@@ -1141,6 +1193,9 @@ function printMachineHelp() {
|
|
|
1141
1193
|
svamp machine \u2014 Machine management
|
|
1142
1194
|
|
|
1143
1195
|
Usage:
|
|
1196
|
+
svamp machine info Show machine info & status
|
|
1197
|
+
svamp machine exec <command> [--cwd <path>] Run command on machine
|
|
1198
|
+
svamp machine ls [path] [--hidden] List directory on machine
|
|
1144
1199
|
svamp machine share --list List shared users
|
|
1145
1200
|
svamp machine share --add <email>[:<role>] Share machine with user
|
|
1146
1201
|
svamp machine share --remove <email> Remove shared user
|
|
@@ -1149,28 +1204,17 @@ Usage:
|
|
|
1149
1204
|
|
|
1150
1205
|
Options:
|
|
1151
1206
|
--machine <id>, -m <id> Target a specific machine (prefix match supported)
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
{
|
|
1155
|
-
"default": {
|
|
1156
|
-
"role": "interact",
|
|
1157
|
-
"filesystem": { "denyRead": ["/etc/shadow"], "denyWrite": ["/usr"] },
|
|
1158
|
-
"network": { "allowedDomains": ["api.anthropic.com"] }
|
|
1159
|
-
},
|
|
1160
|
-
"users": {
|
|
1161
|
-
"alice@example.com": { "role": "admin" },
|
|
1162
|
-
"bob@example.com": { "role": "view", "denyAllNetwork": true }
|
|
1163
|
-
}
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
The "default" entry applies to all users. Per-user entries override defaults.
|
|
1167
|
-
Machine-level config is merged with session-level config at spawn time.
|
|
1207
|
+
--cwd <path> Working directory for exec (default: home dir)
|
|
1208
|
+
--hidden, -a Show hidden files in ls
|
|
1168
1209
|
|
|
1169
1210
|
Examples:
|
|
1211
|
+
svamp machine info
|
|
1212
|
+
svamp machine exec "ls -la /tmp"
|
|
1213
|
+
svamp machine exec "df -h" -m cloud-box --cwd /
|
|
1214
|
+
svamp machine ls /home/user/projects
|
|
1215
|
+
svamp machine ls --hidden -m cloud-box
|
|
1170
1216
|
svamp machine share --add alice@example.com:admin
|
|
1171
1217
|
svamp machine share --config ./security-context.json
|
|
1172
|
-
svamp machine share --show-config
|
|
1173
|
-
svamp machine share --list
|
|
1174
1218
|
`);
|
|
1175
1219
|
}
|
|
1176
1220
|
function printSkillsHelp() {
|