svamp-cli 0.2.194 → 0.2.195
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/bin/skills/crew/SKILL.md +24 -1
- package/dist/{agentCommands-u3lACoAL.mjs → agentCommands-IdOiOg0f.mjs} +5 -5
- package/dist/{auth-CA8v11FJ.mjs → auth-DmrnqTLo.mjs} +1 -1
- package/dist/cli.mjs +60 -60
- package/dist/{commands-DlKKUqVK.mjs → commands-B3uk2hcj.mjs} +1 -1
- package/dist/{commands-DRYKMdYK.mjs → commands-BlTV-jYX.mjs} +5 -3
- package/dist/{commands-UDDf7PQt.mjs → commands-CbBOkn_G.mjs} +1 -1
- package/dist/{commands-Cj1ipwaC.mjs → commands-DAYpMdgB.mjs} +2 -2
- package/dist/{commands-CZD9sTwX.mjs → commands-DHI31wAh.mjs} +1 -1
- package/dist/{commands-CqnF0mFt.mjs → commands-DZhCJXnB.mjs} +137 -49
- package/dist/{commands-CnOAurhc.mjs → commands-DjT7M2al.mjs} +5 -5
- package/dist/{fleet-CPdmiNDX.mjs → fleet-BtwsNKuT.mjs} +1 -1
- package/dist/{frpc-CBDwOpZZ.mjs → frpc-WpRu5zE_.mjs} +1 -1
- package/dist/{headlessCli-CFj2Gxe0.mjs → headlessCli-Dy049YdV.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{package-C9H0l19h.mjs → package-ARvCEkBY.mjs} +2 -2
- package/dist/{rpc-6ftZ30co.mjs → rpc-CvpwmghB.mjs} +1 -1
- package/dist/{rpc-BHrZL52o.mjs → rpc-DgV6_G_Q.mjs} +6 -2
- package/dist/{run-6hsamvmy.mjs → run-D79u_Ud4.mjs} +1 -1
- package/dist/{run-Dn-FEr9q.mjs → run-DiCtjIs5.mjs} +38 -14
- package/dist/{scheduler-BtltL3kB.mjs → scheduler-D8Xj2_vB.mjs} +1 -1
- package/dist/{serveCommands-DEGssQo6.mjs → serveCommands-Bc9DXaQv.mjs} +5 -5
- package/dist/{serveManager-DwO36v9t.mjs → serveManager-C2ykbnxd.mjs} +2 -2
- package/dist/{sideband-CjLQLnk1.mjs → sideband-B9uONcBg.mjs} +1 -1
- package/package.json +2 -2
|
@@ -2720,7 +2720,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
2720
2720
|
const tunnels = handlers.tunnels;
|
|
2721
2721
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
2722
2722
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
2723
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
2723
|
+
const { FrpcTunnel } = await import('./frpc-WpRu5zE_.mjs');
|
|
2724
2724
|
const tunnel = new FrpcTunnel({
|
|
2725
2725
|
name: params.name,
|
|
2726
2726
|
ports: params.ports,
|
|
@@ -3167,7 +3167,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
3167
3167
|
}
|
|
3168
3168
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
3169
3169
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
3170
|
-
const { toolsForRole } = await import('./sideband-
|
|
3170
|
+
const { toolsForRole } = await import('./sideband-B9uONcBg.mjs');
|
|
3171
3171
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
3172
3172
|
return fmt(r2);
|
|
3173
3173
|
}
|
|
@@ -3266,7 +3266,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
3266
3266
|
if (r.error || !r.sender) return { error: r.error || "unauthorized" };
|
|
3267
3267
|
const callId = "call_" + Math.random().toString(16).slice(2, 12);
|
|
3268
3268
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
3269
|
-
const { queryCore } = await import('./commands-
|
|
3269
|
+
const { queryCore } = await import('./commands-B3uk2hcj.mjs');
|
|
3270
3270
|
const timeout = c.reply?.timeout_sec || 120;
|
|
3271
3271
|
let result;
|
|
3272
3272
|
try {
|
|
@@ -3782,7 +3782,6 @@ function formatInboxMessageXml(msg) {
|
|
|
3782
3782
|
if (msg.subject) attrs.push(`subject="${escapeXml(msg.subject)}"`);
|
|
3783
3783
|
if (msg.urgency) attrs.push(`urgency="${msg.urgency}"`);
|
|
3784
3784
|
if (msg.replyTo) attrs.push(`reply-to="${escapeXml(msg.replyTo)}"`);
|
|
3785
|
-
if (msg.cc && msg.cc.length > 0) attrs.push(`cc="${msg.cc.map(escapeXml).join(",")}"`);
|
|
3786
3785
|
if (msg.threadId) attrs.push(`thread-id="${escapeXml(msg.threadId)}"`);
|
|
3787
3786
|
attrs.push(`timestamp="${msg.timestamp}"`);
|
|
3788
3787
|
return `<svamp-message ${attrs.join(" ")}>
|
|
@@ -3942,13 +3941,15 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
|
|
|
3942
3941
|
body: m.body,
|
|
3943
3942
|
timestamp: m.timestamp,
|
|
3944
3943
|
read: m.read,
|
|
3944
|
+
// `handled` = agent consumed it; drives the "pending" (unread) badge
|
|
3945
|
+
// together with `read` so handled messages don't linger as phantom-unread.
|
|
3946
|
+
...m.handled ? { handled: true } : {},
|
|
3945
3947
|
from: m.from,
|
|
3946
3948
|
fromSession: m.fromSession,
|
|
3947
3949
|
to: m.to,
|
|
3948
3950
|
subject: m.subject,
|
|
3949
3951
|
urgency: m.urgency,
|
|
3950
3952
|
replyTo: m.replyTo,
|
|
3951
|
-
cc: m.cc,
|
|
3952
3953
|
threadId: m.threadId,
|
|
3953
3954
|
// Channel provenance so the inbox UI can show who/verified.
|
|
3954
3955
|
...m.verified !== void 0 ? { verified: m.verified } : {},
|
|
@@ -5063,6 +5064,13 @@ Output ONLY the full revised reply text \u2014 no preamble, no commentary, no su
|
|
|
5063
5064
|
syncInboxToMetadata();
|
|
5064
5065
|
}
|
|
5065
5066
|
},
|
|
5067
|
+
markInboxHandled: (messageId) => {
|
|
5068
|
+
const msg = inbox.find((m) => m.messageId === messageId);
|
|
5069
|
+
if (msg && !msg.handled) {
|
|
5070
|
+
msg.handled = true;
|
|
5071
|
+
syncInboxToMetadata();
|
|
5072
|
+
}
|
|
5073
|
+
},
|
|
5066
5074
|
disconnect: async () => {
|
|
5067
5075
|
const toRemove = [...listeners];
|
|
5068
5076
|
for (const listener of toRemove) {
|
|
@@ -9913,7 +9921,7 @@ function normalizeStatus(s) {
|
|
|
9913
9921
|
if (s === "done") return "archived";
|
|
9914
9922
|
return s === "ready" || s === "in_progress" || s === "archived" ? s : "ready";
|
|
9915
9923
|
}
|
|
9916
|
-
const FIELD_ORDER = ["id", "title", "status", "scope", "labels", "verify", "disposition", "triaged", "branch", "session", "original", "created", "closed"];
|
|
9924
|
+
const FIELD_ORDER = ["id", "title", "status", "scope", "labels", "verify", "disposition", "triaged", "branch", "session", "owner", "original", "created", "closed"];
|
|
9917
9925
|
function resolveProjectRoot(start = process.cwd()) {
|
|
9918
9926
|
let dir = start;
|
|
9919
9927
|
for (let i = 0; i < 40; i++) {
|
|
@@ -9970,6 +9978,7 @@ function parseIssue(content) {
|
|
|
9970
9978
|
triaged: fm.triaged === true,
|
|
9971
9979
|
branch: fm.branch ?? null,
|
|
9972
9980
|
session: fm.session ?? null,
|
|
9981
|
+
owner: fm.owner ?? null,
|
|
9973
9982
|
original: fm.original ?? null,
|
|
9974
9983
|
created: String(fm.created ?? (/* @__PURE__ */ new Date()).toISOString()),
|
|
9975
9984
|
closed: fm.closed ?? null,
|
|
@@ -9997,6 +10006,13 @@ function listIssues(projectRoot, opts = {}) {
|
|
|
9997
10006
|
if (opts.scope) items = items.filter((i) => i.scope === opts.scope);
|
|
9998
10007
|
return items.sort((a, b) => Number(a.id) - Number(b.id));
|
|
9999
10008
|
}
|
|
10009
|
+
function isVisibleTo(issue, session) {
|
|
10010
|
+
if (issue.scope === "session") return issue.session === session || issue.owner === session;
|
|
10011
|
+
if (issue.owner === session) return true;
|
|
10012
|
+
if (issue.session === session) return true;
|
|
10013
|
+
if (!issue.owner && !issue.session) return true;
|
|
10014
|
+
return false;
|
|
10015
|
+
}
|
|
10000
10016
|
function getIssue(projectRoot, id) {
|
|
10001
10017
|
const padded = /^\d+$/.test(id) ? id.padStart(4, "0") : id;
|
|
10002
10018
|
for (const p of [issuePath(projectRoot, padded), issuePath(projectRoot, padded, true)]) {
|
|
@@ -10033,6 +10049,7 @@ function addIssue(projectRoot, fields) {
|
|
|
10033
10049
|
triaged: fields.triaged ?? false,
|
|
10034
10050
|
branch: null,
|
|
10035
10051
|
session: fields.session ?? null,
|
|
10052
|
+
owner: fields.owner ?? null,
|
|
10036
10053
|
original: fields.original ?? null,
|
|
10037
10054
|
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
10038
10055
|
closed: null,
|
|
@@ -11614,7 +11631,7 @@ async function startDaemon(options) {
|
|
|
11614
11631
|
saveExposedTunnels(list);
|
|
11615
11632
|
}
|
|
11616
11633
|
async function createExposedTunnel(spec) {
|
|
11617
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
11634
|
+
const { FrpcTunnel } = await import('./frpc-WpRu5zE_.mjs');
|
|
11618
11635
|
const tunnel = new FrpcTunnel({
|
|
11619
11636
|
name: spec.name,
|
|
11620
11637
|
ports: spec.ports,
|
|
@@ -11634,7 +11651,7 @@ async function startDaemon(options) {
|
|
|
11634
11651
|
return tunnel;
|
|
11635
11652
|
}
|
|
11636
11653
|
const tunnelRecreateState = /* @__PURE__ */ new Map();
|
|
11637
|
-
const { ServeManager } = await import('./serveManager-
|
|
11654
|
+
const { ServeManager } = await import('./serveManager-C2ykbnxd.mjs');
|
|
11638
11655
|
const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
|
|
11639
11656
|
ensureAutoInstalledSkills(logger).catch(() => {
|
|
11640
11657
|
});
|
|
@@ -13416,6 +13433,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13416
13433
|
}
|
|
13417
13434
|
if (decision.action === "wake") {
|
|
13418
13435
|
logger.log(`[Session ${sessionId}] Delivering inbox message to agent`);
|
|
13436
|
+
sessionService.markInboxHandled(message.messageId);
|
|
13419
13437
|
writeInboundContext(sessionId, { hopCount: message.hopCount ?? 0, threadId: message.threadId || message.messageId });
|
|
13420
13438
|
sessionService.pushMessage(formatted, "user");
|
|
13421
13439
|
if (!claudeProcess || claudeProcess.exitCode !== null) {
|
|
@@ -13498,11 +13516,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13498
13516
|
});
|
|
13499
13517
|
},
|
|
13500
13518
|
onIssue: async (params) => {
|
|
13501
|
-
const { issueRpc } = await import('./rpc-
|
|
13519
|
+
const { issueRpc } = await import('./rpc-DgV6_G_Q.mjs');
|
|
13502
13520
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner });
|
|
13503
13521
|
},
|
|
13504
13522
|
onWorkflow: async (params) => {
|
|
13505
|
-
const { workflowRpc } = await import('./rpc-
|
|
13523
|
+
const { workflowRpc } = await import('./rpc-CvpwmghB.mjs');
|
|
13506
13524
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
13507
13525
|
},
|
|
13508
13526
|
onRipgrep: async (args, cwd) => {
|
|
@@ -13623,6 +13641,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13623
13641
|
sessionService.updateMetadata(sessionMetadata);
|
|
13624
13642
|
if (typeof next.inboxHop === "number") {
|
|
13625
13643
|
writeInboundContext(sessionId, { hopCount: next.inboxHop, threadId: next.inboxThreadId });
|
|
13644
|
+
sessionService.markInboxHandled(next.id);
|
|
13626
13645
|
}
|
|
13627
13646
|
logger.log(`[Session ${sessionId}] Processing queued message: "${next.text.slice(0, 50)}..."`);
|
|
13628
13647
|
sessionWasProcessing = true;
|
|
@@ -13898,6 +13917,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13898
13917
|
const wake = decision.action === "wake" && acpBackendReady;
|
|
13899
13918
|
if (wake) {
|
|
13900
13919
|
logger.log(`[${agentName} Session ${sessionId}] Delivering inbox message to agent`);
|
|
13920
|
+
sessionService.markInboxHandled(message.messageId);
|
|
13901
13921
|
writeInboundContext(sessionId, { hopCount: message.hopCount ?? 0, threadId: message.threadId || message.messageId });
|
|
13902
13922
|
sessionService.pushMessage(formatted, "user");
|
|
13903
13923
|
sessionMetadata = { ...sessionMetadata, lifecycleState: "running" };
|
|
@@ -13928,6 +13948,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13928
13948
|
sessionService.updateMetadata(sessionMetadata);
|
|
13929
13949
|
if (typeof next.inboxHop === "number") {
|
|
13930
13950
|
writeInboundContext(sessionId, { hopCount: next.inboxHop, threadId: next.inboxThreadId });
|
|
13951
|
+
sessionService.markInboxHandled(next.id);
|
|
13931
13952
|
}
|
|
13932
13953
|
sessionService.pushMessage(next.text, "user");
|
|
13933
13954
|
sessionService.sendKeepAlive(true);
|
|
@@ -13979,6 +14000,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13979
14000
|
const remaining = queue.slice(1);
|
|
13980
14001
|
sessionMetadata = { ...sessionMetadata, messageQueue: remaining.length > 0 ? remaining : void 0, lifecycleState: "running" };
|
|
13981
14002
|
sessionService.updateMetadata(sessionMetadata);
|
|
14003
|
+
sessionService.markInboxHandled(next.id);
|
|
13982
14004
|
logger.log(`[Session ${sessionId}] Processing queued message from metadata update: "${next.text.slice(0, 50)}..."`);
|
|
13983
14005
|
sessionService.sendKeepAlive(true);
|
|
13984
14006
|
agentBackend.sendPrompt(sessionId, next.text).catch((err) => {
|
|
@@ -14008,11 +14030,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14008
14030
|
});
|
|
14009
14031
|
},
|
|
14010
14032
|
onIssue: async (params) => {
|
|
14011
|
-
const { issueRpc } = await import('./rpc-
|
|
14033
|
+
const { issueRpc } = await import('./rpc-DgV6_G_Q.mjs');
|
|
14012
14034
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner });
|
|
14013
14035
|
},
|
|
14014
14036
|
onWorkflow: async (params) => {
|
|
14015
|
-
const { workflowRpc } = await import('./rpc-
|
|
14037
|
+
const { workflowRpc } = await import('./rpc-CvpwmghB.mjs');
|
|
14016
14038
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
14017
14039
|
},
|
|
14018
14040
|
onRipgrep: async (args, cwd) => {
|
|
@@ -14113,6 +14135,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14113
14135
|
const remaining = queue.slice(1);
|
|
14114
14136
|
sessionMetadata = { ...sessionMetadata, messageQueue: remaining.length > 0 ? remaining : void 0, lifecycleState: "running" };
|
|
14115
14137
|
sessionService.updateMetadata(sessionMetadata);
|
|
14138
|
+
sessionService.markInboxHandled(next.id);
|
|
14116
14139
|
logger.log(`[Session ${sessionId}] Processing queued message (ACP loop activation): "${next.text.slice(0, 50)}..."`);
|
|
14117
14140
|
sessionService.sendKeepAlive(true);
|
|
14118
14141
|
agentBackend.sendPrompt(sessionId, next.text).catch((err) => {
|
|
@@ -14203,6 +14226,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14203
14226
|
sessionMetadata = { ...sessionMetadata, messageQueue: remaining.length > 0 ? remaining : void 0, lifecycleState: "running" };
|
|
14204
14227
|
sessionService.updateMetadata(sessionMetadata);
|
|
14205
14228
|
sessionService.sendKeepAlive(true);
|
|
14229
|
+
sessionService.markInboxHandled(next.id);
|
|
14206
14230
|
logger.log(`[Session ${sessionId}] Processing queued message: "${next.text.slice(0, 50)}..."`);
|
|
14207
14231
|
sessionService.pushMessage(next.displayText || next.text, "user");
|
|
14208
14232
|
agentBackend.sendPrompt(sessionId, next.text).catch((err) => {
|
|
@@ -14765,7 +14789,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14765
14789
|
const PING_TIMEOUT_MS = 15e3;
|
|
14766
14790
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
14767
14791
|
const RECONNECT_JITTER_MS = 2500;
|
|
14768
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
14792
|
+
const { WorkflowScheduler } = await import('./scheduler-D8Xj2_vB.mjs');
|
|
14769
14793
|
const workflowScheduler = new WorkflowScheduler({
|
|
14770
14794
|
projectRoots: () => {
|
|
14771
14795
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -15344,4 +15368,4 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
15344
15368
|
writeStopMarker: writeStopMarker
|
|
15345
15369
|
});
|
|
15346
15370
|
|
|
15347
|
-
export {
|
|
15371
|
+
export { describeMisconfiguration as $, buildMachineInstructions as A, machineToolsForRole as B, buildMachineTools as C, parseFrontmatter as D, getSkillsServer as E, getSkillsWorkspaceName as F, getSkillsCollectionName as G, fetchWithTimeout as H, searchSkills as I, SKILLS_DIR as J, getSkillInfo as K, downloadSkillFile as L, listSkillFiles as M, resolveModel as N, formatHandle as O, normalizeAllowedUser as P, loadSecurityContextConfig as Q, READ_ONLY_TOOLS as R, ServeAuth as S, resolveSecurityContext as T, buildSecurityContextFromFlags as U, mergeSecurityContexts as V, buildSessionShareUrl as W, computeOutboundHop as X, buildMachineShareUrl as Y, parseHandle as Z, handleMatchesMetadata as _, createSessionStore as a, buildMachineDeps as a0, applyClaudeProxyEnv as a1, composeSessionId as a2, generateFriendlyName as a3, generateHookSettings as a4, claudeAuth as a5, projectInfo as a6, DefaultTransport$1 as a7, acpBackend as a8, acpAgentConfig as a9, codexMcpBackend as aa, GeminiTransport$1 as ab, instanceConfig as ac, api as ad, run as ae, stopDaemon as b, connectToHypha as c, daemonStatus as d, clearStopMarker as e, stopMarkerExists as f, getHyphaServerUrl$1 as g, getFrpsSubdomainHost as h, getFrpsServerPort as i, getFrpsServerAddr as j, getHyphaServerUrl as k, hasCookieToken as l, resolveProjectRoot as m, getIssue as n, addComment as o, addIssue as p, listIssues as q, registerMachineService as r, startDaemon as s, searchIssues as t, updateIssue as u, isVisibleTo as v, cronMatches as w, summarize as x, shortId as y, loadMachineContext as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { m as resolveProjectRoot,
|
|
2
|
+
import { m as resolveProjectRoot, w as cronMatches } from './run-DiCtjIs5.mjs';
|
|
3
3
|
import { l as listWorkflows, i as isWorkflowEnabled, c as workflowCrons, w as workflowSteps } from './store-DEZ8e-uE.mjs';
|
|
4
4
|
import 'os';
|
|
5
5
|
import 'fs/promises';
|
|
@@ -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-B3uk2hcj.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-B3uk2hcj.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-B3uk2hcj.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-B3uk2hcj.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-B3uk2hcj.mjs');
|
|
239
239
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
240
240
|
try {
|
|
241
241
|
const info = await machine.serveInfo();
|
|
@@ -4,7 +4,7 @@ import * as fs from 'fs';
|
|
|
4
4
|
import * as http from 'http';
|
|
5
5
|
import * as net from 'net';
|
|
6
6
|
import * as path from 'path';
|
|
7
|
-
import { k as getHyphaServerUrl, S as ServeAuth, l as hasCookieToken } from './run-
|
|
7
|
+
import { k as getHyphaServerUrl, S as ServeAuth, l as hasCookieToken } from './run-DiCtjIs5.mjs';
|
|
8
8
|
import 'os';
|
|
9
9
|
import 'fs/promises';
|
|
10
10
|
import 'url';
|
|
@@ -733,7 +733,7 @@ class ServeManager {
|
|
|
733
733
|
const mount = this.mounts.get(mountName);
|
|
734
734
|
const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
|
|
735
735
|
try {
|
|
736
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
736
|
+
const { FrpcTunnel } = await import('./frpc-WpRu5zE_.mjs');
|
|
737
737
|
let tunnel;
|
|
738
738
|
tunnel = new FrpcTunnel({
|
|
739
739
|
name: tunnelName,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as READ_ONLY_TOOLS,
|
|
1
|
+
import { R as READ_ONLY_TOOLS, z as loadMachineContext, A as buildMachineInstructions, B as machineToolsForRole, C as buildMachineTools } from './run-DiCtjIs5.mjs';
|
|
2
2
|
import 'node:child_process';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svamp-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.195",
|
|
4
4
|
"description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
|
|
5
5
|
"author": "Amun AI AB",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "rm -rf dist bin/skills && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/loop bin/skills/loop && cp -r ../../skills/crew bin/skills/crew && tsc --noEmit && pkgroll",
|
|
22
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-loop-activation.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-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.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-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.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-session-consolidation.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-issue-rpc.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-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-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-channel-async-reply.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.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-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",
|
|
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-loop-activation.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-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.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-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.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-session-consolidation.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-issue-rpc.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-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-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-channel-async-reply.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.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-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",
|
|
24
24
|
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
25
25
|
"dev": "tsx src/cli.ts",
|
|
26
26
|
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|