svamp-cli 0.2.193 → 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-BmA4np5o.mjs → agentCommands-IdOiOg0f.mjs} +5 -5
- package/dist/{auth-DiC4bXUT.mjs → auth-DmrnqTLo.mjs} +1 -1
- package/dist/cli.mjs +60 -60
- package/dist/{commands-By97uPq7.mjs → commands-B3uk2hcj.mjs} +1 -1
- package/dist/{commands-CPT-Wu41.mjs → commands-BlTV-jYX.mjs} +12 -4
- package/dist/{commands-D_Dqz5Kt.mjs → commands-CbBOkn_G.mjs} +1 -1
- package/dist/{commands-CGAgeoBz.mjs → commands-DAYpMdgB.mjs} +2 -2
- package/dist/{commands-B6mOqtXM.mjs → commands-DHI31wAh.mjs} +1 -1
- package/dist/{commands-CRmtBdgs.mjs → commands-DZhCJXnB.mjs} +137 -49
- package/dist/{commands-QzPRQeKZ.mjs → commands-DjT7M2al.mjs} +5 -5
- package/dist/{fleet-CZpk6-Xg.mjs → fleet-BtwsNKuT.mjs} +1 -1
- package/dist/{frpc-B7NXLQsh.mjs → frpc-WpRu5zE_.mjs} +1 -1
- package/dist/{headlessCli-Dw7jUz1h.mjs → headlessCli-Dy049YdV.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{package-CzvXt0G5.mjs → package-ARvCEkBY.mjs} +2 -2
- package/dist/{rpc-CBVukorH.mjs → rpc-CvpwmghB.mjs} +1 -1
- package/dist/{rpc-MAQMw8il.mjs → rpc-DgV6_G_Q.mjs} +29 -5
- package/dist/{run-iqdE_9Ef.mjs → run-D79u_Ud4.mjs} +1 -1
- package/dist/{run-B_UWCqRV.mjs → run-DiCtjIs5.mjs} +63 -16
- package/dist/{scheduler-TfLOcnBs.mjs → scheduler-D8Xj2_vB.mjs} +1 -1
- package/dist/{serveCommands-DFrOQUs1.mjs → serveCommands-Bc9DXaQv.mjs} +5 -5
- package/dist/{serveManager-DpIlnzKd.mjs → serveManager-C2ykbnxd.mjs} +2 -2
- package/dist/{sideband-C-cTD2o2.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
|
});
|
|
@@ -11710,6 +11727,29 @@ ${v.guidance ? v.guidance + "\n" : ""}Criteria: ${v.criteria || "(none)"}
|
|
|
11710
11727
|
} catch {
|
|
11711
11728
|
}
|
|
11712
11729
|
};
|
|
11730
|
+
const notifyIssueOwner = (sessionId, text) => {
|
|
11731
|
+
try {
|
|
11732
|
+
const target = Array.from(pidToTrackedSession.values()).find((t) => t.svampSessionId === sessionId && !t.stopped);
|
|
11733
|
+
const send = target?.sessionRPCHandlers?.sendInboxMessage;
|
|
11734
|
+
if (!send) {
|
|
11735
|
+
logger.log(`[issue] follow-up notify skipped \u2014 owner session ${sessionId.slice(0, 8)} not live on this machine`);
|
|
11736
|
+
return;
|
|
11737
|
+
}
|
|
11738
|
+
Promise.resolve(send({
|
|
11739
|
+
messageId: randomUUID$1(),
|
|
11740
|
+
from: "system:issues",
|
|
11741
|
+
subject: "issue follow-up",
|
|
11742
|
+
body: text,
|
|
11743
|
+
timestamp: Date.now(),
|
|
11744
|
+
read: false,
|
|
11745
|
+
urgency: "normal",
|
|
11746
|
+
hopCount: 1
|
|
11747
|
+
})).catch(() => {
|
|
11748
|
+
});
|
|
11749
|
+
logger.log(`[issue] follow-up notify \u2192 owner ${sessionId.slice(0, 8)}`);
|
|
11750
|
+
} catch {
|
|
11751
|
+
}
|
|
11752
|
+
};
|
|
11713
11753
|
server.on("services_registered", () => {
|
|
11714
11754
|
if (consecutiveHeartbeatFailures > 0) {
|
|
11715
11755
|
logger.log(`Hypha reconnection successful \u2014 services re-registered (resetting ${consecutiveHeartbeatFailures} failures)`);
|
|
@@ -13393,6 +13433,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13393
13433
|
}
|
|
13394
13434
|
if (decision.action === "wake") {
|
|
13395
13435
|
logger.log(`[Session ${sessionId}] Delivering inbox message to agent`);
|
|
13436
|
+
sessionService.markInboxHandled(message.messageId);
|
|
13396
13437
|
writeInboundContext(sessionId, { hopCount: message.hopCount ?? 0, threadId: message.threadId || message.messageId });
|
|
13397
13438
|
sessionService.pushMessage(formatted, "user");
|
|
13398
13439
|
if (!claudeProcess || claudeProcess.exitCode !== null) {
|
|
@@ -13475,11 +13516,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13475
13516
|
});
|
|
13476
13517
|
},
|
|
13477
13518
|
onIssue: async (params) => {
|
|
13478
|
-
const { issueRpc } = await import('./rpc-
|
|
13479
|
-
return issueRpc(params?.cwd || directory, params || {});
|
|
13519
|
+
const { issueRpc } = await import('./rpc-DgV6_G_Q.mjs');
|
|
13520
|
+
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner });
|
|
13480
13521
|
},
|
|
13481
13522
|
onWorkflow: async (params) => {
|
|
13482
|
-
const { workflowRpc } = await import('./rpc-
|
|
13523
|
+
const { workflowRpc } = await import('./rpc-CvpwmghB.mjs');
|
|
13483
13524
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
13484
13525
|
},
|
|
13485
13526
|
onRipgrep: async (args, cwd) => {
|
|
@@ -13600,6 +13641,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13600
13641
|
sessionService.updateMetadata(sessionMetadata);
|
|
13601
13642
|
if (typeof next.inboxHop === "number") {
|
|
13602
13643
|
writeInboundContext(sessionId, { hopCount: next.inboxHop, threadId: next.inboxThreadId });
|
|
13644
|
+
sessionService.markInboxHandled(next.id);
|
|
13603
13645
|
}
|
|
13604
13646
|
logger.log(`[Session ${sessionId}] Processing queued message: "${next.text.slice(0, 50)}..."`);
|
|
13605
13647
|
sessionWasProcessing = true;
|
|
@@ -13875,6 +13917,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13875
13917
|
const wake = decision.action === "wake" && acpBackendReady;
|
|
13876
13918
|
if (wake) {
|
|
13877
13919
|
logger.log(`[${agentName} Session ${sessionId}] Delivering inbox message to agent`);
|
|
13920
|
+
sessionService.markInboxHandled(message.messageId);
|
|
13878
13921
|
writeInboundContext(sessionId, { hopCount: message.hopCount ?? 0, threadId: message.threadId || message.messageId });
|
|
13879
13922
|
sessionService.pushMessage(formatted, "user");
|
|
13880
13923
|
sessionMetadata = { ...sessionMetadata, lifecycleState: "running" };
|
|
@@ -13905,6 +13948,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13905
13948
|
sessionService.updateMetadata(sessionMetadata);
|
|
13906
13949
|
if (typeof next.inboxHop === "number") {
|
|
13907
13950
|
writeInboundContext(sessionId, { hopCount: next.inboxHop, threadId: next.inboxThreadId });
|
|
13951
|
+
sessionService.markInboxHandled(next.id);
|
|
13908
13952
|
}
|
|
13909
13953
|
sessionService.pushMessage(next.text, "user");
|
|
13910
13954
|
sessionService.sendKeepAlive(true);
|
|
@@ -13956,6 +14000,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13956
14000
|
const remaining = queue.slice(1);
|
|
13957
14001
|
sessionMetadata = { ...sessionMetadata, messageQueue: remaining.length > 0 ? remaining : void 0, lifecycleState: "running" };
|
|
13958
14002
|
sessionService.updateMetadata(sessionMetadata);
|
|
14003
|
+
sessionService.markInboxHandled(next.id);
|
|
13959
14004
|
logger.log(`[Session ${sessionId}] Processing queued message from metadata update: "${next.text.slice(0, 50)}..."`);
|
|
13960
14005
|
sessionService.sendKeepAlive(true);
|
|
13961
14006
|
agentBackend.sendPrompt(sessionId, next.text).catch((err) => {
|
|
@@ -13985,11 +14030,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
13985
14030
|
});
|
|
13986
14031
|
},
|
|
13987
14032
|
onIssue: async (params) => {
|
|
13988
|
-
const { issueRpc } = await import('./rpc-
|
|
13989
|
-
return issueRpc(params?.cwd || directory, params || {});
|
|
14033
|
+
const { issueRpc } = await import('./rpc-DgV6_G_Q.mjs');
|
|
14034
|
+
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner });
|
|
13990
14035
|
},
|
|
13991
14036
|
onWorkflow: async (params) => {
|
|
13992
|
-
const { workflowRpc } = await import('./rpc-
|
|
14037
|
+
const { workflowRpc } = await import('./rpc-CvpwmghB.mjs');
|
|
13993
14038
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
13994
14039
|
},
|
|
13995
14040
|
onRipgrep: async (args, cwd) => {
|
|
@@ -14090,6 +14135,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14090
14135
|
const remaining = queue.slice(1);
|
|
14091
14136
|
sessionMetadata = { ...sessionMetadata, messageQueue: remaining.length > 0 ? remaining : void 0, lifecycleState: "running" };
|
|
14092
14137
|
sessionService.updateMetadata(sessionMetadata);
|
|
14138
|
+
sessionService.markInboxHandled(next.id);
|
|
14093
14139
|
logger.log(`[Session ${sessionId}] Processing queued message (ACP loop activation): "${next.text.slice(0, 50)}..."`);
|
|
14094
14140
|
sessionService.sendKeepAlive(true);
|
|
14095
14141
|
agentBackend.sendPrompt(sessionId, next.text).catch((err) => {
|
|
@@ -14180,6 +14226,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14180
14226
|
sessionMetadata = { ...sessionMetadata, messageQueue: remaining.length > 0 ? remaining : void 0, lifecycleState: "running" };
|
|
14181
14227
|
sessionService.updateMetadata(sessionMetadata);
|
|
14182
14228
|
sessionService.sendKeepAlive(true);
|
|
14229
|
+
sessionService.markInboxHandled(next.id);
|
|
14183
14230
|
logger.log(`[Session ${sessionId}] Processing queued message: "${next.text.slice(0, 50)}..."`);
|
|
14184
14231
|
sessionService.pushMessage(next.displayText || next.text, "user");
|
|
14185
14232
|
agentBackend.sendPrompt(sessionId, next.text).catch((err) => {
|
|
@@ -14742,7 +14789,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
14742
14789
|
const PING_TIMEOUT_MS = 15e3;
|
|
14743
14790
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
14744
14791
|
const RECONNECT_JITTER_MS = 2500;
|
|
14745
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
14792
|
+
const { WorkflowScheduler } = await import('./scheduler-D8Xj2_vB.mjs');
|
|
14746
14793
|
const workflowScheduler = new WorkflowScheduler({
|
|
14747
14794
|
projectRoots: () => {
|
|
14748
14795
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -15321,4 +15368,4 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
15321
15368
|
writeStopMarker: writeStopMarker
|
|
15322
15369
|
});
|
|
15323
15370
|
|
|
15324
|
-
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",
|