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
|
@@ -2973,7 +2973,7 @@ Connection: close\r
|
|
|
2973
2973
|
const mount = this.mounts.get(mountName);
|
|
2974
2974
|
const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
|
|
2975
2975
|
try {
|
|
2976
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
2976
|
+
const { FrpcTunnel } = await import('./frpc-F3PT4R-9.mjs');
|
|
2977
2977
|
let tunnel;
|
|
2978
2978
|
tunnel = new FrpcTunnel({
|
|
2979
2979
|
name: tunnelName,
|
|
@@ -5869,7 +5869,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
5869
5869
|
const tunnels = handlers.tunnels;
|
|
5870
5870
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
5871
5871
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
5872
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
5872
|
+
const { FrpcTunnel } = await import('./frpc-F3PT4R-9.mjs');
|
|
5873
5873
|
const tunnel = new FrpcTunnel({
|
|
5874
5874
|
name: params.name,
|
|
5875
5875
|
ports: params.ports,
|
|
@@ -6345,7 +6345,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6345
6345
|
}
|
|
6346
6346
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
6347
6347
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
6348
|
-
const { toolsForRole } = await import('./sideband-
|
|
6348
|
+
const { toolsForRole } = await import('./sideband-mqmkDL0V.mjs');
|
|
6349
6349
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
6350
6350
|
return fmt(r2);
|
|
6351
6351
|
}
|
|
@@ -6450,7 +6450,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6450
6450
|
return { ok: false, call_id: callId, status: "busy", error: "channel is busy (too many concurrent requests) \u2014 retry shortly" };
|
|
6451
6451
|
}
|
|
6452
6452
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
6453
|
-
const { queryCore } = await import('./commands-
|
|
6453
|
+
const { queryCore } = await import('./commands-B3Acrzyp.mjs');
|
|
6454
6454
|
const timeout = c.reply?.timeout_sec || 120;
|
|
6455
6455
|
let result;
|
|
6456
6456
|
try {
|
|
@@ -6522,7 +6522,7 @@ ${d?.error || "not found"}`;
|
|
|
6522
6522
|
if ("error" in res) return { error: res.error };
|
|
6523
6523
|
if (res.tier === "stateless") return dispatchStateless(res.c, res.dir, kwargs, context);
|
|
6524
6524
|
if ("stopped" in res) return { error: `session ${res.sessionId.slice(0, 8)} is stopped \u2014 resume it to reach this channel` };
|
|
6525
|
-
return res.rpc.channelSend({ channel: kwargs.channel, message: kwargs.message, from: kwargs.from, key: kwargs.key, session: kwargs.session, reply_to: kwargs.reply_to }, context);
|
|
6525
|
+
return res.rpc.channelSend({ channel: kwargs.channel, message: kwargs.message, from: kwargs.from, key: kwargs.key, session: kwargs.session, reply_to: kwargs.reply_to, no_reply: kwargs.no_reply }, context);
|
|
6526
6526
|
},
|
|
6527
6527
|
// Async reply retrieval for queue-mode channels — long-poll the channel outbox
|
|
6528
6528
|
// for replies addressed to the caller. Routed to the session the message landed
|
|
@@ -6901,6 +6901,65 @@ function isRetryableRateLimit(text, apiErrorStatus) {
|
|
|
6901
6901
|
return networkTransient;
|
|
6902
6902
|
}
|
|
6903
6903
|
|
|
6904
|
+
const DEFAULT_DOWNLOAD_BASE = "https://github.com/amun-ai/hypha-cloud/releases/latest/download";
|
|
6905
|
+
function shq(v) {
|
|
6906
|
+
return `'${String(v).replace(/'/g, `'\\''`)}'`;
|
|
6907
|
+
}
|
|
6908
|
+
function psq(v) {
|
|
6909
|
+
return `'${String(v).replace(/'/g, `''`)}'`;
|
|
6910
|
+
}
|
|
6911
|
+
function buildOutpostInstall(params) {
|
|
6912
|
+
const base = params.serverBase.replace(/\/$/, "");
|
|
6913
|
+
const dl = (params.downloadBase || DEFAULT_DOWNLOAD_BASE).replace(/\/$/, "");
|
|
6914
|
+
const session = params.session || params.channel;
|
|
6915
|
+
const unix = `curl -fsSL ${shq(`${dl}/install.sh`)} | SVAMP_OUTPOST_SERVER=${shq(base)} SVAMP_OUTPOST_CHANNEL=${shq(params.channel)} SVAMP_OUTPOST_TOKEN=${shq(params.token)} SVAMP_OUTPOST_SESSION=${shq(session)} SVAMP_OUTPOST_DL=${shq(dl)} sh`;
|
|
6916
|
+
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)}; $env:SVAMP_OUTPOST_DL=${psq(dl)}; irm ${psq(`${dl}/install.ps1`)} | iex`;
|
|
6917
|
+
const direct = `svamp-outpost --server ${shq(base)} --channel ${shq(params.channel)} --token ${shq(params.token)} --session ${shq(session)}`;
|
|
6918
|
+
return { unix, windows, direct };
|
|
6919
|
+
}
|
|
6920
|
+
|
|
6921
|
+
const DEFAULT_OUTPOST_DOWNLOAD_BASE = "https://static-outpost-bin-08c08c38.svc.hypha.aicell.io";
|
|
6922
|
+
const OUTPOST_BINARIES = [
|
|
6923
|
+
{ label: "macOS (Apple Silicon)", file: "svamp-outpost-darwin-arm64" },
|
|
6924
|
+
{ label: "macOS (Intel)", file: "svamp-outpost-darwin-amd64" },
|
|
6925
|
+
{ label: "Linux (x86-64)", file: "svamp-outpost-linux-amd64" },
|
|
6926
|
+
{ label: "Linux (arm64)", file: "svamp-outpost-linux-arm64" },
|
|
6927
|
+
{ label: "Windows (x86-64)", file: "svamp-outpost-windows-amd64.exe" }
|
|
6928
|
+
];
|
|
6929
|
+
function setupOutpostChannel(params) {
|
|
6930
|
+
const serverUrl = params.serverUrl || "https://hypha.aicell.io";
|
|
6931
|
+
const downloadBase = (params.downloadBase || DEFAULT_OUTPOST_DOWNLOAD_BASE).replace(/\/$/, "");
|
|
6932
|
+
const serverBase = gatewayBase(params.channelsServiceId, serverUrl);
|
|
6933
|
+
const channelId = `outpost-${params.session}`;
|
|
6934
|
+
const store = new ChannelStore(params.projectDir);
|
|
6935
|
+
const existing = store.get(channelId);
|
|
6936
|
+
let token = existing?.identity?.callers?.find((c) => c.name === "outpost")?.key;
|
|
6937
|
+
if (!token) token = genKey();
|
|
6938
|
+
const channel = {
|
|
6939
|
+
id: channelId,
|
|
6940
|
+
name: `Remote outpost \u2014 ${params.session}`,
|
|
6941
|
+
description: "FDE remote machine: a svamp-outpost binary connects here and the agent runs commands on it.",
|
|
6942
|
+
enabled: true,
|
|
6943
|
+
bind: { session: params.session },
|
|
6944
|
+
identity: { mode: "per-key", callers: [{ name: "outpost", kind: "agent", key: token }] },
|
|
6945
|
+
action: { kind: "message" },
|
|
6946
|
+
reply: { mode: "queue" },
|
|
6947
|
+
skill: { name: "remote-outpost", description: "Run commands on the connected remote machine." }
|
|
6948
|
+
};
|
|
6949
|
+
store.save(channel);
|
|
6950
|
+
const install = buildOutpostInstall({ serverBase, channel: channelId, token, session: params.session, downloadBase });
|
|
6951
|
+
const connectedCount = (store.get(channelId)?.last_calls || []).filter((c) => c.sender === "outpost").length;
|
|
6952
|
+
return {
|
|
6953
|
+
channelId,
|
|
6954
|
+
token,
|
|
6955
|
+
serverBase,
|
|
6956
|
+
downloadBase,
|
|
6957
|
+
install,
|
|
6958
|
+
binaries: OUTPOST_BINARIES.map((b) => ({ label: b.label, url: `${downloadBase}/${b.file}` })),
|
|
6959
|
+
connectedCount
|
|
6960
|
+
};
|
|
6961
|
+
}
|
|
6962
|
+
|
|
6904
6963
|
const PARTICIPANTS_CHANNEL_ID = "sys-participants";
|
|
6905
6964
|
function channelPublicView(c) {
|
|
6906
6965
|
const u = c.upload;
|
|
@@ -7599,6 +7658,10 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
7599
7658
|
authorizeRequest(context, metadata.sharing, "view");
|
|
7600
7659
|
return { channels: channelStore.list().filter((c) => !c.system) };
|
|
7601
7660
|
},
|
|
7661
|
+
// FDE outpost (#0589/#0593): idempotently ensure this session's outpost channel + return the
|
|
7662
|
+
// install one-liners and per-OS download links for the "Connect a remote machine" UI. Admin-gated
|
|
7663
|
+
// because the returned command carries a channel-scoped COMMAND-EXECUTION token — only the machine
|
|
7664
|
+
// admin/owner should onboard a remotely-controllable machine. Mirrors the CLI `svamp outpost up`.
|
|
7602
7665
|
saveChannel: async (channel, context) => {
|
|
7603
7666
|
authorizeRequest(context, metadata.sharing, "admin");
|
|
7604
7667
|
try {
|
|
@@ -7636,6 +7699,28 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
7636
7699
|
syncChannelsToMetadata();
|
|
7637
7700
|
return { success: !!caller, caller };
|
|
7638
7701
|
},
|
|
7702
|
+
// FDE outpost (#0589): provision (idempotently) this session's outpost channel and return the
|
|
7703
|
+
// install one-liners + direct binary download links + a best-effort connected count. The app's
|
|
7704
|
+
// "Connect a remote machine" panel calls this; it reuses the SAME setupOutpostChannel core as
|
|
7705
|
+
// `svamp outpost up`, so the channel shape + install command never drift. Admin-gated: the
|
|
7706
|
+
// returned token is a capability to run commands on whatever machine connects.
|
|
7707
|
+
outpostConnectInfo: async (params, context) => {
|
|
7708
|
+
authorizeRequest(context, metadata.sharing, "admin");
|
|
7709
|
+
if (!channelsServiceId) return { error: "the channels service is not available on this machine" };
|
|
7710
|
+
try {
|
|
7711
|
+
const info = setupOutpostChannel({
|
|
7712
|
+
session: sessionId,
|
|
7713
|
+
projectDir: metadata.path || process.cwd(),
|
|
7714
|
+
channelsServiceId,
|
|
7715
|
+
serverUrl: channelsBaseUrl,
|
|
7716
|
+
downloadBase: params?.downloadBase || process.env.SVAMP_OUTPOST_DL
|
|
7717
|
+
});
|
|
7718
|
+
syncChannelsToMetadata();
|
|
7719
|
+
return { ok: true, ...info };
|
|
7720
|
+
} catch (e) {
|
|
7721
|
+
return { error: e?.message || String(e) };
|
|
7722
|
+
}
|
|
7723
|
+
},
|
|
7639
7724
|
getChannelSkill: async (id, context) => {
|
|
7640
7725
|
authorizeRequest(context, metadata.sharing, "view");
|
|
7641
7726
|
const c = channelStore.get(id);
|
|
@@ -7796,7 +7881,8 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
7796
7881
|
}
|
|
7797
7882
|
if (c.action?.kind === "loop") return { error: "loop channels are served by the channel server, not channelSend" };
|
|
7798
7883
|
const queue = c.reply?.mode === "queue";
|
|
7799
|
-
const
|
|
7884
|
+
const wantReply = queue && !params.no_reply;
|
|
7885
|
+
const replySession = wantReply ? params.reply_to?.session : void 0;
|
|
7800
7886
|
const inboxMsg = {
|
|
7801
7887
|
messageId: callId,
|
|
7802
7888
|
body: xmlEscape(String(params.message ?? "").slice(0, 16 * 1024)),
|
|
@@ -7807,12 +7893,12 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
7807
7893
|
channel: c.name,
|
|
7808
7894
|
subject: c.name,
|
|
7809
7895
|
...replySession ? { fromSession: replySession, threadId: callId } : {},
|
|
7810
|
-
...
|
|
7896
|
+
...wantReply ? { channelId: c.id, correlationId: callId } : {}
|
|
7811
7897
|
};
|
|
7812
7898
|
await rpcHandlers.sendInboxMessage(inboxMsg, ownerCtx);
|
|
7813
7899
|
channelStore.recordCall(c.id, { sender: r.sender.name, verified: r.sender.verified, callId, outcome: "delivered" });
|
|
7814
7900
|
syncChannelsToMetadata();
|
|
7815
|
-
return { ok: true, call_id: callId, status:
|
|
7901
|
+
return { ok: true, call_id: callId, status: wantReply ? "queued" : "accepted", ...wantReply ? { correlationId: callId } : {} };
|
|
7816
7902
|
} catch (e) {
|
|
7817
7903
|
channelStore.recordCall(c.id, { sender: r.sender.name, verified: r.sender.verified, callId, outcome: "error" });
|
|
7818
7904
|
return { ok: false, call_id: callId, status: "error", error: e?.message || String(e) };
|
|
@@ -16273,7 +16359,7 @@ async function startDaemon(options) {
|
|
|
16273
16359
|
try {
|
|
16274
16360
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
16275
16361
|
if (!dir) return;
|
|
16276
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
16362
|
+
const { reconcileServiceLinks } = await import('./agentCommands-C8fAJdhs.mjs');
|
|
16277
16363
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
16278
16364
|
const config = readSvampConfig(configPath);
|
|
16279
16365
|
const entries = Array.from(urls.entries());
|
|
@@ -16291,7 +16377,7 @@ async function startDaemon(options) {
|
|
|
16291
16377
|
}
|
|
16292
16378
|
}
|
|
16293
16379
|
async function createExposedTunnel(spec) {
|
|
16294
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
16380
|
+
const { FrpcTunnel } = await import('./frpc-F3PT4R-9.mjs');
|
|
16295
16381
|
const tunnel = new FrpcTunnel({
|
|
16296
16382
|
name: spec.name,
|
|
16297
16383
|
ports: spec.ports,
|
|
@@ -18507,11 +18593,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18507
18593
|
});
|
|
18508
18594
|
},
|
|
18509
18595
|
onIssue: async (params) => {
|
|
18510
|
-
const { issueRpc } = await import('./rpc-
|
|
18596
|
+
const { issueRpc } = await import('./rpc-DpWUJeq7.mjs');
|
|
18511
18597
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18512
18598
|
},
|
|
18513
18599
|
onWorkflow: async (params) => {
|
|
18514
|
-
const { workflowRpc } = await import('./rpc-
|
|
18600
|
+
const { workflowRpc } = await import('./rpc-DZaN--oa.mjs');
|
|
18515
18601
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18516
18602
|
},
|
|
18517
18603
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19124,11 +19210,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19124
19210
|
});
|
|
19125
19211
|
},
|
|
19126
19212
|
onIssue: async (params) => {
|
|
19127
|
-
const { issueRpc } = await import('./rpc-
|
|
19213
|
+
const { issueRpc } = await import('./rpc-DpWUJeq7.mjs');
|
|
19128
19214
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
19129
19215
|
},
|
|
19130
19216
|
onWorkflow: async (params) => {
|
|
19131
|
-
const { workflowRpc } = await import('./rpc-
|
|
19217
|
+
const { workflowRpc } = await import('./rpc-DZaN--oa.mjs');
|
|
19132
19218
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
19133
19219
|
},
|
|
19134
19220
|
onRipgrep: async (args, cwd) => {
|
|
@@ -20248,7 +20334,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
20248
20334
|
const PING_TIMEOUT_MS = 15e3;
|
|
20249
20335
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
20250
20336
|
const RECONNECT_JITTER_MS = 2500;
|
|
20251
|
-
const { WorkflowScheduler } = await import('./scheduler
|
|
20337
|
+
const { WorkflowScheduler } = await import('./scheduler-iPV9ceRR.mjs');
|
|
20252
20338
|
const workflowScheduler = new WorkflowScheduler({
|
|
20253
20339
|
projectRoots: () => {
|
|
20254
20340
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -20871,4 +20957,4 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
20871
20957
|
writeStopMarker: writeStopMarker
|
|
20872
20958
|
});
|
|
20873
20959
|
|
|
20874
|
-
export {
|
|
20960
|
+
export { searchSkills as $, removeWorkflow as A, saveWorkflow as B, rawWorkflow as C, listWorkflows as D, isWorkflowEnabled as E, workflowCrons as F, cronMatches as G, buildOutpostInstall as H, ChannelStore as I, DEFAULT_OUTPOST_DOWNLOAD_BASE as J, setupOutpostChannel as K, summarize as L, workflowSteps as M, parseJwtEmail as N, computeCollectionConfigUpdate as O, SYSTEM_COLLECTION_CONFIG as P, loadMachineContext as Q, READ_ONLY_TOOLS as R, SharingNotificationSync as S, buildMachineInstructions as T, machineToolsForRole as U, buildMachineTools as V, parseFrontmatter as W, getSkillsServer as X, getSkillsWorkspaceName as Y, getSkillsCollectionName as Z, fetchWithTimeout as _, createSessionStore as a, SKILLS_DIR as a0, getSkillInfo as a1, downloadSkillFile as a2, listSkillFiles as a3, resolveModel as a4, clearStopMarker as a5, stopMarkerExists as a6, formatHandle as a7, normalizeAllowedUser as a8, loadSecurityContextConfig as a9, api as aA, run as aB, resolveSecurityContext as aa, buildSecurityContextFromFlags as ab, mergeSecurityContexts as ac, buildSessionShareUrl as ad, computeOutboundHop as ae, registerAwaitingReply as af, buildMachineShareUrl as ag, parseHandle as ah, handleMatchesMetadata as ai, describeMisconfiguration as aj, buildMachineDeps as ak, applyClaudeProxyEnv as al, composeSessionId as am, generateFriendlyName as an, generateHookSettings as ao, staticFileServer as ap, instanceConfig as aq, claudeAuth as ar, codexProvider as as, outbox as at, projectInfo as au, DefaultTransport$1 as av, acpBackend as aw, acpAgentConfig as ax, codexAppServerBackend as ay, GeminiTransport$1 as az, stopDaemon as b, connectToHypha as c, daemonStatus as d, getFrpsSubdomainHost as e, getFrpsServerPort as f, getHyphaServerUrl$1 as g, getFrpsServerAddr as h, shortId as i, resolveProjectRoot as j, getIssue as k, resumeIssue as l, addComment as m, addIssue as n, listIssues as o, pauseIssue as p, searchIssues as q, registerMachineService as r, startDaemon as s, isVisibleTo as t, updateIssue as u, getRun as v, listRuns as w, getWorkflow as x, runWorkflow as y, setWorkflowEnabled as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import {
|
|
1
|
+
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { al as applyClaudeProxyEnv, am as composeSessionId, an as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ao as generateHookSettings } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import { existsSync, readFileSync, watch } from 'node:fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -54,7 +54,7 @@ async function handleServeCommand() {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
async function serveAdd(args, machineId) {
|
|
57
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
57
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
58
58
|
const pos = positionalArgs(args);
|
|
59
59
|
const name = pos[0];
|
|
60
60
|
if (!name) {
|
|
@@ -93,7 +93,7 @@ async function serveAdd(args, machineId) {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
async function serveApply(args, machineId) {
|
|
96
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
96
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
97
97
|
const fs = await import('fs');
|
|
98
98
|
const yaml = await import('yaml');
|
|
99
99
|
const file = positionalArgs(args)[0];
|
|
@@ -182,7 +182,7 @@ async function serveApply(args, machineId) {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
async function serveRemove(args, machineId) {
|
|
185
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
185
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
186
186
|
const pos = positionalArgs(args);
|
|
187
187
|
const name = pos[0];
|
|
188
188
|
if (!name) {
|
|
@@ -202,7 +202,7 @@ async function serveRemove(args, machineId) {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
async function serveList(args, machineId) {
|
|
205
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
205
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
206
206
|
const all = hasFlag(args, "--all", "-a");
|
|
207
207
|
const json = hasFlag(args, "--json");
|
|
208
208
|
const sessionId = getFlag(args, "--session");
|
|
@@ -235,7 +235,7 @@ async function serveList(args, machineId) {
|
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
async function serveInfo(machineId) {
|
|
238
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
238
|
+
const { connectAndGetMachine } = await import('./commands-B3Acrzyp.mjs');
|
|
239
239
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
240
240
|
try {
|
|
241
241
|
const info = await machine.serveInfo();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as READ_ONLY_TOOLS,
|
|
1
|
+
import { R as READ_ONLY_TOOLS, Q as loadMachineContext, T as buildMachineInstructions, U as machineToolsForRole, V as buildMachineTools } from './run-BXpQa5EA.mjs';
|
|
2
2
|
import 'node:child_process';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
package/package.json
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
2
|
+
"name": "svamp-cli",
|
|
3
|
+
"version": "0.2.292",
|
|
4
|
+
"description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
|
|
5
|
+
"author": "Amun AI AB",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"svamp": "./bin/svamp.mjs"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"bin"
|
|
14
|
+
],
|
|
15
|
+
"main": "./dist/index.mjs",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": "./dist/index.mjs",
|
|
18
|
+
"./cli": "./dist/cli.mjs"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"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",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"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",
|
|
24
|
+
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
25
|
+
"dev": "tsx src/cli.ts",
|
|
26
|
+
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|
|
27
|
+
"test:e2e": "node --no-warnings test/e2e-session-tests.mjs",
|
|
28
|
+
"test:frpc": "npx tsx test/test-frpc-e2e.mjs",
|
|
29
|
+
"prepublishOnly": "yarn build"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@agentclientprotocol/sdk": "^0.14.1",
|
|
33
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
34
|
+
"hypha-rpc": "0.21.42",
|
|
35
|
+
"node-pty": "1.2.0-beta.11",
|
|
36
|
+
"ws": "^8.18.0",
|
|
37
|
+
"yaml": "^2.8.2",
|
|
38
|
+
"zod": "^3.24.4"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": ">=20",
|
|
42
|
+
"@types/ws": "^8.5.14",
|
|
43
|
+
"pkgroll": "^2.14.2",
|
|
44
|
+
"tsx": "^4.20.6",
|
|
45
|
+
"typescript": "5.9.3"
|
|
46
|
+
},
|
|
47
|
+
"packageManager": "yarn@1.22.22"
|
|
48
48
|
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
var name = "svamp-cli";
|
|
2
|
-
var version = "0.2.290";
|
|
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-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 };
|