svamp-cli 0.2.290 → 0.2.292
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/{adminCommands-BVvpkVsG.mjs → adminCommands-DZDRGNg5.mjs} +1 -1
- package/dist/{agentCommands-fY4keaFA.mjs → agentCommands-C8fAJdhs.mjs} +5 -5
- package/dist/{auth-SR7v-8nf.mjs → auth-BcmQVP7H.mjs} +1 -1
- package/dist/{cli-Re14H3q0.mjs → cli-DqZdmrNJ.mjs} +69 -69
- package/dist/cli.mjs +2 -2
- package/dist/{commands-Dc9t_OeY.mjs → commands-B3Acrzyp.mjs} +1 -1
- package/dist/{commands-CIyv2Qt-.mjs → commands-BKN7en3Q.mjs} +82 -47
- package/dist/{commands-BC-T6wDo.mjs → commands-BV6eWyZm.mjs} +2 -2
- package/dist/{commands-Bv5EcsN_.mjs → commands-BvOBPesf.mjs} +1 -1
- package/dist/{commands-Dwf-ntY-.mjs → commands-CHMIhR_z.mjs} +2 -2
- package/dist/{commands-Dd-6WXYJ.mjs → commands-CnQoA3D_.mjs} +7 -7
- package/dist/{commands-zagci6-n.mjs → commands-DDYqDSA9.mjs} +1 -1
- package/dist/{commands-CBsV6z9K.mjs → commands-b2t_sFjj.mjs} +2 -2
- package/dist/{fleet-DlRlerEG.mjs → fleet-BEjbxK8s.mjs} +1 -1
- package/dist/{frpc-B8zTErxt.mjs → frpc-F3PT4R-9.mjs} +1 -1
- package/dist/{headlessCli-D22LyDyO.mjs → headlessCli-Bkx9H3P2.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{notifyCommands-5PueOg8Q.mjs → notifyCommands-D2pL7Uve.mjs} +1 -1
- package/dist/package-8OT2tFxF.mjs +64 -0
- package/dist/{rpc-D3Hg4y67.mjs → rpc-DZaN--oa.mjs} +1 -1
- package/dist/{rpc-olai-LcU.mjs → rpc-DpWUJeq7.mjs} +1 -1
- package/dist/{run-BNiSOlBf.mjs → run-BXpQa5EA.mjs} +102 -16
- package/dist/{run-B6V1wuT6.mjs → run-MIZ1GTno.mjs} +1 -1
- package/dist/{scheduler--MbVadb0.mjs → scheduler-iPV9ceRR.mjs} +1 -1
- package/dist/{serveCommands-BONMg_af.mjs → serveCommands-Bzzb-Cg2.mjs} +5 -5
- package/dist/{sideband-Dnuy9-IL.mjs → sideband-mqmkDL0V.mjs} +1 -1
- package/package.json +46 -46
- package/dist/package-CpmmajAP.mjs +0 -64
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import {
|
|
5
|
+
import { H as buildOutpostInstall, I as ChannelStore, J as DEFAULT_OUTPOST_DOWNLOAD_BASE, K as setupOutpostChannel } from './run-BXpQa5EA.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -21,24 +21,6 @@ import 'node:fs/promises';
|
|
|
21
21
|
import 'node:util';
|
|
22
22
|
import 'yaml';
|
|
23
23
|
|
|
24
|
-
const DEFAULT_DOWNLOAD_BASE = "https://github.com/amun-ai/hypha-cloud/releases/latest/download";
|
|
25
|
-
function shq(v) {
|
|
26
|
-
return `'${String(v).replace(/'/g, `'\\''`)}'`;
|
|
27
|
-
}
|
|
28
|
-
function psq(v) {
|
|
29
|
-
return `'${String(v).replace(/'/g, `''`)}'`;
|
|
30
|
-
}
|
|
31
|
-
function buildOutpostInstall(params) {
|
|
32
|
-
const base = params.serverBase.replace(/\/$/, "");
|
|
33
|
-
const dl = (params.downloadBase || DEFAULT_DOWNLOAD_BASE).replace(/\/$/, "");
|
|
34
|
-
const session = params.session || params.channel;
|
|
35
|
-
const q = `channel=${encodeURIComponent(params.channel)}&token=${encodeURIComponent(params.token)}&session=${encodeURIComponent(session)}&dl=${encodeURIComponent(dl)}`;
|
|
36
|
-
const unix = `curl -fsSL ${shq(`${base}/outpost/install.sh?${q}`)} | SVAMP_OUTPOST_SERVER=${shq(base)} SVAMP_OUTPOST_CHANNEL=${shq(params.channel)} SVAMP_OUTPOST_TOKEN=${shq(params.token)} SVAMP_OUTPOST_SESSION=${shq(session)} sh`;
|
|
37
|
-
const windows = `$env:SVAMP_OUTPOST_SERVER=${psq(base)}; $env:SVAMP_OUTPOST_CHANNEL=${psq(params.channel)}; $env:SVAMP_OUTPOST_TOKEN=${psq(params.token)}; $env:SVAMP_OUTPOST_SESSION=${psq(session)}; irm ${psq(`${base}/outpost/install.ps1?${q}`)} | iex`;
|
|
38
|
-
const direct = `svamp-outpost --server ${shq(base)} --channel ${shq(params.channel)} --token ${shq(params.token)} --session ${shq(session)}`;
|
|
39
|
-
return { unix, windows, direct };
|
|
40
|
-
}
|
|
41
|
-
|
|
42
24
|
function loadConfig() {
|
|
43
25
|
const p = join(os.homedir(), ".svamp", "outpost.json");
|
|
44
26
|
if (!existsSync(p)) return null;
|
|
@@ -76,6 +58,36 @@ function projectDir() {
|
|
|
76
58
|
return process.cwd();
|
|
77
59
|
}
|
|
78
60
|
}
|
|
61
|
+
function remotesPath() {
|
|
62
|
+
return join(os.homedir(), ".svamp", "outpost-remotes.json");
|
|
63
|
+
}
|
|
64
|
+
function loadRemotes() {
|
|
65
|
+
try {
|
|
66
|
+
return JSON.parse(readFileSync(remotesPath(), "utf8"));
|
|
67
|
+
} catch {
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function rememberRemote(channel, id, targeted = false) {
|
|
72
|
+
const all = loadRemotes();
|
|
73
|
+
const ch = all[channel] ||= {};
|
|
74
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
75
|
+
ch[id] = { firstSeen: ch[id]?.firstSeen || now, ...targeted ? { lastTargeted: now } : ch[id]?.lastTargeted ? { lastTargeted: ch[id].lastTargeted } : {} };
|
|
76
|
+
try {
|
|
77
|
+
writeFileSync(remotesPath(), JSON.stringify(all, null, 2));
|
|
78
|
+
} catch {
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function forgetRemote(channel, id) {
|
|
82
|
+
const all = loadRemotes();
|
|
83
|
+
if (!all[channel]?.[id]) return false;
|
|
84
|
+
delete all[channel][id];
|
|
85
|
+
try {
|
|
86
|
+
writeFileSync(remotesPath(), JSON.stringify(all, null, 2));
|
|
87
|
+
} catch {
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
79
91
|
async function outpostUp(args) {
|
|
80
92
|
const session = process.env.SVAMP_SESSION_ID;
|
|
81
93
|
if (!session) {
|
|
@@ -89,28 +101,10 @@ async function outpostUp(args) {
|
|
|
89
101
|
console.error("Could not resolve workspace/machine (HYPHA_WORKSPACE / daemon.state.json).");
|
|
90
102
|
process.exit(1);
|
|
91
103
|
}
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
const channelId =
|
|
95
|
-
const store = new ChannelStore(projectDir());
|
|
96
|
-
const existing = store.get(channelId);
|
|
97
|
-
let token = existing?.identity?.callers?.find((c) => c.name === "outpost")?.key;
|
|
98
|
-
if (!token) token = genKey();
|
|
99
|
-
const channel = {
|
|
100
|
-
id: channelId,
|
|
101
|
-
name: `Remote outpost \u2014 ${session}`,
|
|
102
|
-
description: "FDE remote machine: a svamp-outpost binary connects here and the agent runs commands on it.",
|
|
103
|
-
enabled: true,
|
|
104
|
-
bind: { session },
|
|
105
|
-
identity: { mode: "per-key", callers: [{ name: "outpost", kind: "agent", key: token }] },
|
|
106
|
-
action: { kind: "message" },
|
|
107
|
-
reply: { mode: "queue" },
|
|
108
|
-
skill: { name: "remote-outpost", description: "Run commands on the connected remote machine." }
|
|
109
|
-
};
|
|
110
|
-
store.save(channel);
|
|
111
|
-
const dl = argVal(args, "--download-base") || envVar("SVAMP_OUTPOST_DL") || "https://static-outpost-bin-08c08c38.svc.hypha.aicell.io";
|
|
104
|
+
const dl = argVal(args, "--download-base") || envVar("SVAMP_OUTPOST_DL") || DEFAULT_OUTPOST_DOWNLOAD_BASE;
|
|
105
|
+
const info = setupOutpostChannel({ session, projectDir: projectDir(), channelsServiceId: `${workspace}/${mid}:channels`, serverUrl, downloadBase: dl });
|
|
106
|
+
const { channelId, token, serverBase: gw, install: gen } = info;
|
|
112
107
|
saveConfig({ control: "", serverBase: gw, serveBase: dl, token, channel: channelId, session });
|
|
113
|
-
const gen = buildOutpostInstall({ serverBase: gw, channel: channelId, token, session, downloadBase: dl });
|
|
114
108
|
console.log(`\u2713 outpost channel ready for session ${session} (channel "${channelId}", gateway transport)
|
|
115
109
|
`);
|
|
116
110
|
console.log("Give this to the person at the remote machine:\n");
|
|
@@ -141,11 +135,20 @@ function usage() {
|
|
|
141
135
|
|
|
142
136
|
svamp outpost up Create this session's outpost channel + print the install command
|
|
143
137
|
|
|
138
|
+
svamp outpost list List the outposts (machines) connected to this session
|
|
144
139
|
svamp outpost status Show connected remotes + counts
|
|
145
|
-
svamp outpost exec "<command>"
|
|
140
|
+
svamp outpost exec [--machine <id>] "<command>"
|
|
141
|
+
Run a shell command on one outpost (--machine <id>) or, with no
|
|
142
|
+
--machine, broadcast to every connected outpost. Output arrives
|
|
143
|
+
as chat messages. Each outpost's id is shown in its connect banner.
|
|
144
|
+
svamp outpost forget <id> Drop a machine id from the local list
|
|
146
145
|
svamp outpost logs [--json] Show everything the remote(s) have sent back
|
|
147
146
|
svamp outpost install [--os <os>] Print the install one-liner(s) for the current outpost setup
|
|
148
147
|
|
|
148
|
+
With several machines connected, target each by id, e.g.:
|
|
149
|
+
svamp outpost exec --machine build-mac "uname -a"
|
|
150
|
+
svamp outpost exec "hostname" # runs on ALL connected outposts
|
|
151
|
+
|
|
149
152
|
Reads the relay control endpoint from ~/.svamp/outpost.json (or pass --control <url>).`);
|
|
150
153
|
}
|
|
151
154
|
async function outpostCommand(args) {
|
|
@@ -178,22 +181,54 @@ async function outpostCommand(args) {
|
|
|
178
181
|
}
|
|
179
182
|
const gateway = !!cfg?.serverBase && /\/services\/[^/]*:channels/.test(cfg.serverBase);
|
|
180
183
|
if (sub === "exec" && gateway) {
|
|
181
|
-
const
|
|
184
|
+
const target = argVal(args, "--machine") || argVal(args, "-m");
|
|
185
|
+
const cmd = args.slice(1).filter((a, i, arr) => a !== "--machine" && a !== "-m" && arr[i - 1] !== "--machine" && arr[i - 1] !== "-m").join(" ").trim();
|
|
182
186
|
if (!cmd) {
|
|
183
|
-
console.error('usage: svamp outpost exec "<command>"');
|
|
187
|
+
console.error('usage: svamp outpost exec [--machine <id>] "<command>"');
|
|
184
188
|
process.exit(1);
|
|
185
189
|
}
|
|
186
|
-
const { ChannelOutbox } = await import('./run-
|
|
190
|
+
const { ChannelOutbox } = await import('./run-BXpQa5EA.mjs').then(function (n) { return n.at; });
|
|
187
191
|
const outbox = new ChannelOutbox(projectDir());
|
|
188
192
|
const id = "x" + Date.now().toString(36);
|
|
189
|
-
outbox.append(cfg.channel, { to: "outpost", body: JSON.stringify({ type: "exec", id, cmd }) });
|
|
190
|
-
|
|
193
|
+
outbox.append(cfg.channel, { to: "outpost", body: JSON.stringify({ type: "exec", id, cmd, target: target || "" }) });
|
|
194
|
+
if (target) rememberRemote(cfg.channel, target, true);
|
|
195
|
+
console.log(target ? `Sent to outpost "${target}" (channel ${cfg.channel}). Its output arrives as a message in this session shortly.` : `Broadcast to all connected outposts (channel ${cfg.channel}). Output from each arrives as a message shortly. Use --machine <id> to target one.`);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (sub === "list" && gateway) {
|
|
199
|
+
const ch = new ChannelStore(projectDir()).get(cfg.channel);
|
|
200
|
+
const calls = (ch?.last_calls || []).filter((c) => c.sender === "outpost");
|
|
201
|
+
const known = loadRemotes()[cfg.channel] || {};
|
|
202
|
+
const ids = Object.keys(known);
|
|
203
|
+
if (!ids.length && !calls.length) {
|
|
204
|
+
console.log(`No outposts known yet on ${cfg.channel}. When one connects it announces itself in this session's chat as \u{1F5A5}\uFE0F outpost "<id>" connected \u2014 then target it with: svamp outpost exec --machine <id> "\u2026"`);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
console.log(`Outposts addressed from session ${cfg.session || cfg.channel} (each connect banner in chat confirms which are live):`);
|
|
208
|
+
for (const id of ids) {
|
|
209
|
+
const r = known[id];
|
|
210
|
+
console.log(` \u2022 ${id}${r.lastTargeted ? ` (last targeted ${r.lastTargeted})` : " (seen)"}`);
|
|
211
|
+
}
|
|
212
|
+
if (calls.length) console.log(` channel activity: ${calls.length} recent message(s); last at ${calls[0]?.at}`);
|
|
213
|
+
if (!ids.length) console.log(" (no machine ids recorded yet \u2014 the connect banner in chat shows each outpost's id)");
|
|
214
|
+
console.log(" Drop a stale id with: svamp outpost forget <id>");
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if ((sub === "forget" || sub === "remove") && gateway) {
|
|
218
|
+
const id = args[1];
|
|
219
|
+
if (!id) {
|
|
220
|
+
console.error("usage: svamp outpost forget <machine-id>");
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
console.log(forgetRemote(cfg.channel, id) ? `Forgot outpost "${id}".` : `No such outpost "${id}" recorded.`);
|
|
191
224
|
return;
|
|
192
225
|
}
|
|
193
226
|
if (sub === "status" && gateway) {
|
|
194
227
|
const ch = new ChannelStore(projectDir()).get(cfg.channel);
|
|
195
228
|
const calls = (ch?.last_calls || []).filter((c) => c.sender === "outpost");
|
|
196
|
-
|
|
229
|
+
const ids = Object.keys(loadRemotes()[cfg.channel] || {});
|
|
230
|
+
const who = ids.length ? ` \u2014 known machines: ${ids.join(", ")}` : "";
|
|
231
|
+
console.log(calls.length ? `outpost active on ${cfg.channel} \u2014 ${calls.length} recent message(s); last at ${calls[0]?.at}${who}` : `no outpost has connected to ${cfg.channel} yet`);
|
|
197
232
|
return;
|
|
198
233
|
}
|
|
199
234
|
if (sub === "logs" && gateway) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { f as flushAndExit } from './cli-
|
|
5
|
-
import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo,
|
|
4
|
+
import { f as flushAndExit } from './cli-DqZdmrNJ.mjs';
|
|
5
|
+
import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, L as summarize, n as addIssue } from './run-BXpQa5EA.mjs';
|
|
6
6
|
import './serviceManager-hlOVxkhW.mjs';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import fs__default from 'fs';
|
|
3
3
|
import { resolve, join, relative } from 'path';
|
|
4
|
-
import {
|
|
4
|
+
import { W as parseFrontmatter, X as getSkillsServer, Y as getSkillsWorkspaceName, Z as getSkillsCollectionName, _ as fetchWithTimeout, $ as searchSkills, a0 as SKILLS_DIR, a1 as getSkillInfo, a2 as downloadSkillFile, a3 as listSkillFiles } from './run-BXpQa5EA.mjs';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
|
-
import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-
|
|
3
|
+
import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-B3Acrzyp.mjs';
|
|
4
4
|
import { execFileSync } from 'node:child_process';
|
|
5
|
-
import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-
|
|
5
|
+
import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-BXpQa5EA.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -60,7 +60,7 @@ async function serviceExpose(args) {
|
|
|
60
60
|
process.exit(1);
|
|
61
61
|
}
|
|
62
62
|
if (foreground) {
|
|
63
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
63
|
+
const { runFrpcTunnel } = await import('./frpc-F3PT4R-9.mjs');
|
|
64
64
|
await runFrpcTunnel(name, ports, void 0, {
|
|
65
65
|
group,
|
|
66
66
|
groupKey,
|
|
@@ -70,7 +70,7 @@ async function serviceExpose(args) {
|
|
|
70
70
|
});
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
73
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
74
74
|
const { server, machine } = await connectAndGetMachine();
|
|
75
75
|
try {
|
|
76
76
|
const status = await machine.tunnelStart({
|
|
@@ -92,7 +92,7 @@ async function serviceExpose(args) {
|
|
|
92
92
|
console.log(` port ${port}: ${url}`);
|
|
93
93
|
}
|
|
94
94
|
if (process.env.SVAMP_SESSION_ID) {
|
|
95
|
-
const { autoAddSessionLink } = await import('./agentCommands-
|
|
95
|
+
const { autoAddSessionLink } = await import('./agentCommands-C8fAJdhs.mjs');
|
|
96
96
|
let added = 0;
|
|
97
97
|
for (const [port, url] of urlEntries) {
|
|
98
98
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -129,7 +129,7 @@ async function serviceServe(args) {
|
|
|
129
129
|
console.log(`Serving ${resolvedDir}`);
|
|
130
130
|
const servePort = 18080;
|
|
131
131
|
const http = await import('http');
|
|
132
|
-
const { serveStaticMount } = await import('./run-
|
|
132
|
+
const { serveStaticMount } = await import('./run-BXpQa5EA.mjs').then(function (n) { return n.ap; });
|
|
133
133
|
const server = http.createServer((req, res) => {
|
|
134
134
|
const u = new URL(req.url || "/", "http://127.0.0.1");
|
|
135
135
|
let rel = u.pathname;
|
|
@@ -140,7 +140,7 @@ async function serviceServe(args) {
|
|
|
140
140
|
server.once("error", reject);
|
|
141
141
|
server.listen(servePort, "127.0.0.1", () => resolve());
|
|
142
142
|
});
|
|
143
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
143
|
+
const { runFrpcTunnel } = await import('./frpc-F3PT4R-9.mjs');
|
|
144
144
|
void server;
|
|
145
145
|
await runFrpcTunnel(name, [servePort]);
|
|
146
146
|
} catch (err) {
|
|
@@ -150,7 +150,7 @@ async function serviceServe(args) {
|
|
|
150
150
|
}
|
|
151
151
|
async function serviceList(_args) {
|
|
152
152
|
try {
|
|
153
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
153
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
154
154
|
const { server, machine } = await connectAndGetMachine();
|
|
155
155
|
try {
|
|
156
156
|
const tunnels = await machine.tunnelList({});
|
|
@@ -190,7 +190,7 @@ async function serviceDelete(args) {
|
|
|
190
190
|
process.exit(1);
|
|
191
191
|
}
|
|
192
192
|
try {
|
|
193
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
193
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
194
194
|
const { server, machine } = await connectAndGetMachine();
|
|
195
195
|
try {
|
|
196
196
|
await machine.tunnelStop({ name });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { j as resolveProjectRoot,
|
|
2
|
+
import { j as resolveProjectRoot, M as workflowSteps, z as setWorkflowEnabled, E as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, D as listWorkflows, B as saveWorkflow, C as rawWorkflow } from './run-BXpQa5EA.mjs';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
|
5
5
|
import 'fs';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { writeFileSync, readFileSync } from 'fs';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
-
import { connectAndGetMachine } from './commands-
|
|
3
|
+
import { connectAndGetMachine } from './commands-B3Acrzyp.mjs';
|
|
4
4
|
import 'node:fs';
|
|
5
5
|
import 'node:child_process';
|
|
6
6
|
import 'node:path';
|
|
7
7
|
import 'node:os';
|
|
8
|
-
import './run-
|
|
8
|
+
import './run-BXpQa5EA.mjs';
|
|
9
9
|
import 'os';
|
|
10
10
|
import 'fs/promises';
|
|
11
11
|
import 'url';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
|
-
import { c as connectToHypha } from './run-
|
|
4
|
+
import { c as connectToHypha } from './run-BXpQa5EA.mjs';
|
|
5
5
|
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-BaMR97BE.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
@@ -4,7 +4,7 @@ import { mkdirSync, chmodSync, writeFileSync, unlinkSync, existsSync, readFileSy
|
|
|
4
4
|
import { join } from 'path';
|
|
5
5
|
import { homedir, platform, arch } from 'os';
|
|
6
6
|
import { randomUUID, createHash } from 'crypto';
|
|
7
|
-
import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-
|
|
7
|
+
import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-BXpQa5EA.mjs';
|
|
8
8
|
import 'fs/promises';
|
|
9
9
|
import 'url';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-
|
|
1
|
+
import { a4 as resolveModel, aj as describeMisconfiguration, ak as buildMachineDeps } from './run-BXpQa5EA.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-mqmkDL0V.mjs';
|
|
3
3
|
import { WebSocket } from 'ws';
|
|
4
4
|
import { execSync, spawn } from 'child_process';
|
|
5
5
|
import 'os';
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-
|
|
1
|
+
export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as connectToHypha, S as SharingNotificationSync,
|
|
1
|
+
import { c as connectToHypha, S as SharingNotificationSync, N as parseJwtEmail } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { existsSync, readFileSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var name = "svamp-cli";
|
|
2
|
+
var version = "0.2.292";
|
|
3
|
+
var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
|
|
4
|
+
var author = "Amun AI AB";
|
|
5
|
+
var license = "SEE LICENSE IN LICENSE";
|
|
6
|
+
var type = "module";
|
|
7
|
+
var bin = {
|
|
8
|
+
svamp: "./bin/svamp.mjs"
|
|
9
|
+
};
|
|
10
|
+
var files = [
|
|
11
|
+
"dist",
|
|
12
|
+
"bin"
|
|
13
|
+
];
|
|
14
|
+
var main = "./dist/index.mjs";
|
|
15
|
+
var exports$1 = {
|
|
16
|
+
".": "./dist/index.mjs",
|
|
17
|
+
"./cli": "./dist/cli.mjs"
|
|
18
|
+
};
|
|
19
|
+
var scripts = {
|
|
20
|
+
build: "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
|
|
21
|
+
typecheck: "tsc --noEmit",
|
|
22
|
+
test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-codex-force-model.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-restore-decision.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-stateless-dispatch-limiter.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-artifact-sync-pagination.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs",
|
|
23
|
+
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
24
|
+
dev: "tsx src/cli.ts",
|
|
25
|
+
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|
|
26
|
+
"test:e2e": "node --no-warnings test/e2e-session-tests.mjs",
|
|
27
|
+
"test:frpc": "npx tsx test/test-frpc-e2e.mjs",
|
|
28
|
+
prepublishOnly: "yarn build"
|
|
29
|
+
};
|
|
30
|
+
var dependencies = {
|
|
31
|
+
"@agentclientprotocol/sdk": "^0.14.1",
|
|
32
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
33
|
+
"hypha-rpc": "0.21.42",
|
|
34
|
+
"node-pty": "1.2.0-beta.11",
|
|
35
|
+
ws: "^8.18.0",
|
|
36
|
+
yaml: "^2.8.2",
|
|
37
|
+
zod: "^3.24.4"
|
|
38
|
+
};
|
|
39
|
+
var devDependencies = {
|
|
40
|
+
"@types/node": ">=20",
|
|
41
|
+
"@types/ws": "^8.5.14",
|
|
42
|
+
pkgroll: "^2.14.2",
|
|
43
|
+
tsx: "^4.20.6",
|
|
44
|
+
typescript: "5.9.3"
|
|
45
|
+
};
|
|
46
|
+
var packageManager = "yarn@1.22.22";
|
|
47
|
+
var _package = {
|
|
48
|
+
name: name,
|
|
49
|
+
version: version,
|
|
50
|
+
description: description,
|
|
51
|
+
author: author,
|
|
52
|
+
license: license,
|
|
53
|
+
type: type,
|
|
54
|
+
bin: bin,
|
|
55
|
+
files: files,
|
|
56
|
+
main: main,
|
|
57
|
+
exports: exports$1,
|
|
58
|
+
scripts: scripts,
|
|
59
|
+
dependencies: dependencies,
|
|
60
|
+
devDependencies: devDependencies,
|
|
61
|
+
packageManager: packageManager
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export { author, bin, _package as default, dependencies, description, devDependencies, exports$1 as exports, files, license, main, name, packageManager, scripts, type, version };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|