svamp-cli 0.2.82 → 0.2.83

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.
@@ -148,7 +148,7 @@ async function sessionBroadcast(action, args) {
148
148
  console.log(`Broadcast sent: ${action}`);
149
149
  }
150
150
  async function connectToMachineService() {
151
- const { connectAndGetMachine } = await import('./commands-BSfZg4aa.mjs');
151
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.mjs');
152
152
  return connectAndGetMachine();
153
153
  }
154
154
  async function inboxSend(targetSessionId, opts) {
@@ -165,7 +165,7 @@ async function inboxSend(targetSessionId, opts) {
165
165
  }
166
166
  const { server, machine } = await connectToMachineService();
167
167
  try {
168
- const { resolveSessionId } = await import('./commands-BSfZg4aa.mjs');
168
+ const { resolveSessionId } = await import('./commands-Bd1H83bg.mjs');
169
169
  const sessions = await machine.listSessions();
170
170
  const match = resolveSessionId(sessions, targetSessionId);
171
171
  const fullTargetId = match.sessionId;
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-BvocESxe.mjs';
1
+ import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-C90uN1y2.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -44,7 +44,7 @@ async function main() {
44
44
  console.error(`svamp daemon restart: ${err.message || err}`);
45
45
  process.exit(1);
46
46
  }
47
- const { restartDaemon } = await import('./run-BvocESxe.mjs').then(function (n) { return n.K; });
47
+ const { restartDaemon } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.K; });
48
48
  await restartDaemon();
49
49
  process.exit(0);
50
50
  }
@@ -296,7 +296,7 @@ async function main() {
296
296
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
297
297
  process.exit(1);
298
298
  }
299
- const { handleServiceCommand } = await import('./commands-AzYDzCjE.mjs');
299
+ const { handleServiceCommand } = await import('./commands-iW8jm4vc.mjs');
300
300
  await handleServiceCommand();
301
301
  } else if (subcommand === "serve") {
302
302
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -304,7 +304,7 @@ async function main() {
304
304
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
305
305
  process.exit(1);
306
306
  }
307
- const { handleServeCommand } = await import('./serveCommands-DJUhkyLk.mjs');
307
+ const { handleServeCommand } = await import('./serveCommands-DgG_ZFt7.mjs');
308
308
  await handleServeCommand();
309
309
  process.exit(0);
310
310
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -313,7 +313,7 @@ async function main() {
313
313
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
314
314
  process.exit(1);
315
315
  }
316
- const { processCommand } = await import('./commands-DHOxmh4o.mjs');
316
+ const { processCommand } = await import('./commands-D8fkJXXU.mjs');
317
317
  let machineId;
318
318
  const processArgs = args.slice(1);
319
319
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -331,7 +331,7 @@ async function main() {
331
331
  } else if (!subcommand || subcommand === "start") {
332
332
  await handleInteractiveCommand();
333
333
  } else if (subcommand === "--version" || subcommand === "-v") {
334
- const pkg = await import('./package-BmFZfykH.mjs').catch(() => ({ default: { version: "unknown" } }));
334
+ const pkg = await import('./package-Cf8yLCTr.mjs').catch(() => ({ default: { version: "unknown" } }));
335
335
  console.log(`svamp version: ${pkg.default.version}`);
336
336
  } else {
337
337
  console.error(`Unknown command: ${subcommand}`);
@@ -340,7 +340,7 @@ async function main() {
340
340
  }
341
341
  }
342
342
  async function handleInteractiveCommand() {
343
- const { runInteractive } = await import('./run-CrOw9-WG.mjs');
343
+ const { runInteractive } = await import('./run-X3V7bQwE.mjs');
344
344
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
345
345
  let directory = process.cwd();
346
346
  let resumeSessionId;
@@ -385,7 +385,7 @@ async function handleAgentCommand() {
385
385
  return;
386
386
  }
387
387
  if (agentArgs[0] === "list") {
388
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-BvocESxe.mjs').then(function (n) { return n.F; });
388
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.F; });
389
389
  console.log("Known agents:");
390
390
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
391
391
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -397,7 +397,7 @@ async function handleAgentCommand() {
397
397
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
398
398
  return;
399
399
  }
400
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-BvocESxe.mjs').then(function (n) { return n.F; });
400
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.F; });
401
401
  let cwd = process.cwd();
402
402
  const filteredArgs = [];
403
403
  for (let i = 0; i < agentArgs.length; i++) {
@@ -421,12 +421,12 @@ async function handleAgentCommand() {
421
421
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
422
422
  let backend;
423
423
  if (KNOWN_MCP_AGENTS[config.agentName]) {
424
- const { CodexMcpBackend } = await import('./run-BvocESxe.mjs').then(function (n) { return n.G; });
424
+ const { CodexMcpBackend } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.G; });
425
425
  backend = new CodexMcpBackend({ cwd, log: logFn });
426
426
  } else {
427
- const { AcpBackend } = await import('./run-BvocESxe.mjs').then(function (n) { return n.E; });
428
- const { GeminiTransport } = await import('./run-BvocESxe.mjs').then(function (n) { return n.H; });
429
- const { DefaultTransport } = await import('./run-BvocESxe.mjs').then(function (n) { return n.D; });
427
+ const { AcpBackend } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.E; });
428
+ const { GeminiTransport } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.H; });
429
+ const { DefaultTransport } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.D; });
430
430
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
431
431
  backend = new AcpBackend({
432
432
  agentName: config.agentName,
@@ -553,7 +553,7 @@ async function handleSessionCommand() {
553
553
  process.exit(1);
554
554
  }
555
555
  }
556
- const { sessionList, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-BSfZg4aa.mjs');
556
+ const { sessionList, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-Bd1H83bg.mjs');
557
557
  const parseFlagStr = (flag, shortFlag) => {
558
558
  for (let i = 1; i < sessionArgs.length; i++) {
559
559
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -619,7 +619,7 @@ async function handleSessionCommand() {
619
619
  allowDomain.push(sessionArgs[++i]);
620
620
  }
621
621
  }
622
- const { parseShareArg } = await import('./commands-BSfZg4aa.mjs');
622
+ const { parseShareArg } = await import('./commands-Bd1H83bg.mjs');
623
623
  const shareEntries = share.map((s) => parseShareArg(s));
624
624
  await sessionSpawn(agent, dir, targetMachineId, {
625
625
  message,
@@ -705,7 +705,7 @@ async function handleSessionCommand() {
705
705
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
706
706
  process.exit(1);
707
707
  }
708
- const { sessionQuery } = await import('./commands-BSfZg4aa.mjs');
708
+ const { sessionQuery } = await import('./commands-Bd1H83bg.mjs');
709
709
  await sessionQuery(dir, prompt, targetMachineId, {
710
710
  timeout: parseFlagInt("--timeout"),
711
711
  json: hasFlag("--json"),
@@ -738,7 +738,7 @@ async function handleSessionCommand() {
738
738
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
739
739
  process.exit(1);
740
740
  }
741
- const { sessionApprove } = await import('./commands-BSfZg4aa.mjs');
741
+ const { sessionApprove } = await import('./commands-Bd1H83bg.mjs');
742
742
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
743
743
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
744
744
  json: hasFlag("--json")
@@ -748,7 +748,7 @@ async function handleSessionCommand() {
748
748
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
749
749
  process.exit(1);
750
750
  }
751
- const { sessionDeny } = await import('./commands-BSfZg4aa.mjs');
751
+ const { sessionDeny } = await import('./commands-Bd1H83bg.mjs');
752
752
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
753
753
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
754
754
  json: hasFlag("--json")
@@ -784,7 +784,7 @@ async function handleSessionCommand() {
784
784
  console.error("Usage: svamp session set-title <title>");
785
785
  process.exit(1);
786
786
  }
787
- const { sessionSetTitle } = await import('./agentCommands-BPpgoGxT.mjs');
787
+ const { sessionSetTitle } = await import('./agentCommands-Bf00Irxu.mjs');
788
788
  await sessionSetTitle(title);
789
789
  } else if (sessionSubcommand === "set-link") {
790
790
  const url = sessionArgs[1];
@@ -793,7 +793,7 @@ async function handleSessionCommand() {
793
793
  process.exit(1);
794
794
  }
795
795
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
796
- const { sessionSetLink } = await import('./agentCommands-BPpgoGxT.mjs');
796
+ const { sessionSetLink } = await import('./agentCommands-Bf00Irxu.mjs');
797
797
  await sessionSetLink(url, label);
798
798
  } else if (sessionSubcommand === "notify") {
799
799
  const message = sessionArgs[1];
@@ -802,7 +802,7 @@ async function handleSessionCommand() {
802
802
  process.exit(1);
803
803
  }
804
804
  const level = parseFlagStr("--level") || "info";
805
- const { sessionNotify } = await import('./agentCommands-BPpgoGxT.mjs');
805
+ const { sessionNotify } = await import('./agentCommands-Bf00Irxu.mjs');
806
806
  await sessionNotify(message, level);
807
807
  } else if (sessionSubcommand === "broadcast") {
808
808
  const action = sessionArgs[1];
@@ -810,7 +810,7 @@ async function handleSessionCommand() {
810
810
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
811
811
  process.exit(1);
812
812
  }
813
- const { sessionBroadcast } = await import('./agentCommands-BPpgoGxT.mjs');
813
+ const { sessionBroadcast } = await import('./agentCommands-Bf00Irxu.mjs');
814
814
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
815
815
  } else if (sessionSubcommand === "inbox") {
816
816
  const inboxSubcmd = sessionArgs[1];
@@ -821,7 +821,7 @@ async function handleSessionCommand() {
821
821
  process.exit(1);
822
822
  }
823
823
  if (agentSessionId) {
824
- const { inboxSend } = await import('./agentCommands-BPpgoGxT.mjs');
824
+ const { inboxSend } = await import('./agentCommands-Bf00Irxu.mjs');
825
825
  await inboxSend(sessionArgs[2], {
826
826
  body: sessionArgs[3],
827
827
  subject: parseFlagStr("--subject"),
@@ -836,7 +836,7 @@ async function handleSessionCommand() {
836
836
  }
837
837
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
838
838
  if (agentSessionId && !sessionArgs[2]) {
839
- const { inboxList } = await import('./agentCommands-BPpgoGxT.mjs');
839
+ const { inboxList } = await import('./agentCommands-Bf00Irxu.mjs');
840
840
  await inboxList({
841
841
  unread: hasFlag("--unread"),
842
842
  limit: parseFlagInt("--limit"),
@@ -858,7 +858,7 @@ async function handleSessionCommand() {
858
858
  process.exit(1);
859
859
  }
860
860
  if (agentSessionId && !sessionArgs[3]) {
861
- const { inboxList } = await import('./agentCommands-BPpgoGxT.mjs');
861
+ const { inboxList } = await import('./agentCommands-Bf00Irxu.mjs');
862
862
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
863
863
  } else if (sessionArgs[3]) {
864
864
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -868,7 +868,7 @@ async function handleSessionCommand() {
868
868
  }
869
869
  } else if (inboxSubcmd === "reply") {
870
870
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
871
- const { inboxReply } = await import('./agentCommands-BPpgoGxT.mjs');
871
+ const { inboxReply } = await import('./agentCommands-Bf00Irxu.mjs');
872
872
  await inboxReply(sessionArgs[2], sessionArgs[3]);
873
873
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
874
874
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -904,7 +904,7 @@ async function handleMachineCommand() {
904
904
  return;
905
905
  }
906
906
  if (machineSubcommand === "share") {
907
- const { machineShare } = await import('./commands-BSfZg4aa.mjs');
907
+ const { machineShare } = await import('./commands-Bd1H83bg.mjs');
908
908
  let machineId;
909
909
  const shareArgs = [];
910
910
  for (let i = 1; i < machineArgs.length; i++) {
@@ -934,7 +934,7 @@ async function handleMachineCommand() {
934
934
  }
935
935
  await machineShare(machineId, { add, remove, list, configPath, showConfig });
936
936
  } else if (machineSubcommand === "exec") {
937
- const { machineExec } = await import('./commands-BSfZg4aa.mjs');
937
+ const { machineExec } = await import('./commands-Bd1H83bg.mjs');
938
938
  let machineId;
939
939
  let cwd;
940
940
  const cmdParts = [];
@@ -954,7 +954,7 @@ async function handleMachineCommand() {
954
954
  }
955
955
  await machineExec(machineId, command, cwd);
956
956
  } else if (machineSubcommand === "info") {
957
- const { machineInfo } = await import('./commands-BSfZg4aa.mjs');
957
+ const { machineInfo } = await import('./commands-Bd1H83bg.mjs');
958
958
  let machineId;
959
959
  for (let i = 1; i < machineArgs.length; i++) {
960
960
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -974,10 +974,10 @@ async function handleMachineCommand() {
974
974
  level = machineArgs[++i];
975
975
  }
976
976
  }
977
- const { machineNotify } = await import('./agentCommands-BPpgoGxT.mjs');
977
+ const { machineNotify } = await import('./agentCommands-Bf00Irxu.mjs');
978
978
  await machineNotify(message, level);
979
979
  } else if (machineSubcommand === "ls") {
980
- const { machineLs } = await import('./commands-BSfZg4aa.mjs');
980
+ const { machineLs } = await import('./commands-Bd1H83bg.mjs');
981
981
  let machineId;
982
982
  let showHidden = false;
983
983
  let path;
@@ -1035,24 +1035,24 @@ Examples:
1035
1035
  };
1036
1036
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1037
1037
  if (sub === "status") {
1038
- const { fleetStatus } = await import('./fleet-DDYoKg0Q.mjs');
1038
+ const { fleetStatus } = await import('./fleet-CCCPxbz-.mjs');
1039
1039
  await fleetStatus();
1040
1040
  } else if (sub === "exec") {
1041
1041
  const command = fleetArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1042
- const { fleetExec } = await import('./fleet-DDYoKg0Q.mjs');
1042
+ const { fleetExec } = await import('./fleet-CCCPxbz-.mjs');
1043
1043
  await fleetExec(command, { cwd: flag("cwd") });
1044
1044
  } else if (sub === "upgrade-claude") {
1045
- const { fleetUpgradeClaude } = await import('./fleet-DDYoKg0Q.mjs');
1045
+ const { fleetUpgradeClaude } = await import('./fleet-CCCPxbz-.mjs');
1046
1046
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1047
1047
  } else if (sub === "upgrade-svamp") {
1048
- const { fleetUpgradeSvamp } = await import('./fleet-DDYoKg0Q.mjs');
1048
+ const { fleetUpgradeSvamp } = await import('./fleet-CCCPxbz-.mjs');
1049
1049
  await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self") });
1050
1050
  } else if (sub === "daemon-restart") {
1051
- const { fleetDaemonRestart } = await import('./fleet-DDYoKg0Q.mjs');
1051
+ const { fleetDaemonRestart } = await import('./fleet-CCCPxbz-.mjs');
1052
1052
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1053
1053
  } else if (sub === "push-skill") {
1054
1054
  const name = fleetArgs[1];
1055
- const { fleetPushSkill } = await import('./fleet-DDYoKg0Q.mjs');
1055
+ const { fleetPushSkill } = await import('./fleet-CCCPxbz-.mjs');
1056
1056
  await fleetPushSkill(name);
1057
1057
  } else {
1058
1058
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1068,7 +1068,7 @@ async function handleSkillsCommand() {
1068
1068
  await printSkillsHelp();
1069
1069
  return;
1070
1070
  }
1071
- const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-BXwzw3Mu.mjs');
1071
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-B3omCaQt.mjs');
1072
1072
  if (skillsSubcommand === "find" || skillsSubcommand === "search") {
1073
1073
  const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1074
1074
  if (!query) {
@@ -1514,7 +1514,7 @@ async function applyClaudeAuthFlags(argv) {
1514
1514
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1515
1515
  );
1516
1516
  }
1517
- const mod = await import('./run-BvocESxe.mjs').then(function (n) { return n.I; });
1517
+ const mod = await import('./run-C90uN1y2.mjs').then(function (n) { return n.I; });
1518
1518
  if (hasHypha) {
1519
1519
  let url;
1520
1520
  const hyphaIdx = argv.indexOf("--use-hypha-proxy");
@@ -1568,7 +1568,7 @@ async function applyDaemonShareFlag(argv) {
1568
1568
  }
1569
1569
  }
1570
1570
  if (collected.length === 0) return;
1571
- const { updateEnvFile } = await import('./run-BvocESxe.mjs').then(function (n) { return n.I; });
1571
+ const { updateEnvFile } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.I; });
1572
1572
  const seen = /* @__PURE__ */ new Set();
1573
1573
  const deduped = collected.filter((e) => {
1574
1574
  const k = e.toLowerCase();
@@ -1581,7 +1581,7 @@ async function applyDaemonShareFlag(argv) {
1581
1581
  }
1582
1582
  async function handleDaemonAuthCommand(argv) {
1583
1583
  const sub = (argv[0] || "status").toLowerCase();
1584
- const mod = await import('./run-BvocESxe.mjs').then(function (n) { return n.I; });
1584
+ const mod = await import('./run-C90uN1y2.mjs').then(function (n) { return n.I; });
1585
1585
  if (sub === "--help" || sub === "-h" || sub === "help") {
1586
1586
  console.log(`
1587
1587
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -1874,7 +1874,7 @@ Examples:
1874
1874
  async function printSkillsHelp() {
1875
1875
  let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
1876
1876
  try {
1877
- const { getArtifactBaseUrl, SKILLS_COLLECTION } = await import('./run-BvocESxe.mjs').then(function (n) { return n.J; });
1877
+ const { getArtifactBaseUrl, SKILLS_COLLECTION } = await import('./run-C90uN1y2.mjs').then(function (n) { return n.J; });
1878
1878
  browseUrl = `${getArtifactBaseUrl()}/${SKILLS_COLLECTION}`;
1879
1879
  } catch {
1880
1880
  }
@@ -1,7 +1,7 @@
1
1
  import os from 'os';
2
2
  import fs__default from 'fs';
3
3
  import { resolve, join, relative } from 'path';
4
- import { p as parseFrontmatter, j as getSkillsServer, k as SKILLS_WORKSPACE, l as SKILLS_COLLECTION, m as fetchWithTimeout, n as searchSkills, o as SKILLS_DIR, q as getSkillInfo, t as downloadSkillFile, u as listSkillFiles } from './run-BvocESxe.mjs';
4
+ import { p as parseFrontmatter, j as getSkillsServer, k as SKILLS_WORKSPACE, l as SKILLS_COLLECTION, m as fetchWithTimeout, n as searchSkills, o as SKILLS_DIR, q as getSkillInfo, t as downloadSkillFile, u as listSkillFiles } from './run-C90uN1y2.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { resolve, join } from 'node:path';
4
4
  import os from 'node:os';
5
- import { v as normalizeAllowedUser, w as loadSecurityContextConfig, x as resolveSecurityContext, y as buildSecurityContextFromFlags, z as mergeSecurityContexts, c as connectToHypha, A as buildSessionShareUrl, B as buildMachineShareUrl } from './run-BvocESxe.mjs';
5
+ import { v as normalizeAllowedUser, w as loadSecurityContextConfig, x as resolveSecurityContext, y as buildSecurityContextFromFlags, z as mergeSecurityContexts, c as connectToHypha, A as buildSessionShareUrl, B as buildMachineShareUrl } from './run-C90uN1y2.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-BSfZg4aa.mjs';
3
+ import { connectAndGetMachine } from './commands-Bd1H83bg.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:child_process';
6
6
  import 'node:path';
7
7
  import 'node:os';
8
- import './run-BvocESxe.mjs';
8
+ import './run-C90uN1y2.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -58,7 +58,7 @@ async function serviceExpose(args) {
58
58
  process.exit(1);
59
59
  }
60
60
  if (foreground) {
61
- const { runFrpcTunnel } = await import('./frpc-DPfGAdlj.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-F50mVRLL.mjs');
62
62
  await runFrpcTunnel(name, ports, void 0, {
63
63
  group,
64
64
  groupKey,
@@ -68,7 +68,7 @@ async function serviceExpose(args) {
68
68
  });
69
69
  return;
70
70
  }
71
- const { connectAndGetMachine } = await import('./commands-BSfZg4aa.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.mjs');
72
72
  const { server, machine } = await connectAndGetMachine();
73
73
  try {
74
74
  const status = await machine.tunnelStart({
@@ -123,7 +123,7 @@ async function serviceServe(args) {
123
123
  };
124
124
  process.on("SIGINT", cleanup);
125
125
  process.on("SIGTERM", cleanup);
126
- const { runFrpcTunnel } = await import('./frpc-DPfGAdlj.mjs');
126
+ const { runFrpcTunnel } = await import('./frpc-F50mVRLL.mjs');
127
127
  await runFrpcTunnel(name, [caddyPort]);
128
128
  } catch (err) {
129
129
  console.error(`Error serving directory: ${err.message}`);
@@ -132,7 +132,7 @@ async function serviceServe(args) {
132
132
  }
133
133
  async function serviceList(_args) {
134
134
  try {
135
- const { connectAndGetMachine } = await import('./commands-BSfZg4aa.mjs');
135
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.mjs');
136
136
  const { server, machine } = await connectAndGetMachine();
137
137
  try {
138
138
  const tunnels = await machine.tunnelList({});
@@ -161,7 +161,7 @@ async function serviceDelete(args) {
161
161
  process.exit(1);
162
162
  }
163
163
  try {
164
- const { connectAndGetMachine } = await import('./commands-BSfZg4aa.mjs');
164
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.mjs');
165
165
  const { server, machine } = await connectAndGetMachine();
166
166
  try {
167
167
  await machine.tunnelStop({ name });
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import os from 'node:os';
4
- import { c as connectToHypha } from './run-BvocESxe.mjs';
4
+ import { c as connectToHypha } from './run-C90uN1y2.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-HydRNEt7.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -3,7 +3,7 @@ import { mkdirSync, writeFileSync, unlinkSync, existsSync, chmodSync, readFileSy
3
3
  import { join } from 'path';
4
4
  import { homedir, platform, arch } from 'os';
5
5
  import { createHash, randomUUID } from 'crypto';
6
- import { e as getFrpsSubdomainHost, f as getFrpsServerAddr } from './run-BvocESxe.mjs';
6
+ import { e as getFrpsSubdomainHost, f as getFrpsServerAddr } from './run-C90uN1y2.mjs';
7
7
  import 'fs/promises';
8
8
  import 'url';
9
9
  import 'node:fs';
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-BvocESxe.mjs';
1
+ export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-C90uN1y2.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.82";
2
+ var version = "0.2.83";
3
3
  var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
4
4
  var author = "Amun AI AB";
5
5
  var license = "SEE LICENSE IN LICENSE";
@@ -2,7 +2,7 @@ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(im
2
2
  import fs, { mkdir as mkdir$1, readdir as readdir$1, readFile, writeFile as writeFile$1, rename, unlink } from 'fs/promises';
3
3
  import { readFileSync as readFileSync$1, mkdirSync, writeFileSync, renameSync, existsSync as existsSync$1, copyFileSync, unlinkSync as unlinkSync$1, watch, rmdirSync, readdirSync } from 'fs';
4
4
  import path__default, { join, dirname, resolve, basename } from 'path';
5
- import { URL as URL$1, fileURLToPath } from 'url';
5
+ import { fileURLToPath } from 'url';
6
6
  import { execFile, spawn as spawn$1, execSync as execSync$1 } from 'child_process';
7
7
  import { randomUUID as randomUUID$1 } from 'crypto';
8
8
  import { existsSync, readFileSync, writeFileSync as writeFileSync$1, mkdirSync as mkdirSync$1, appendFileSync, unlinkSync } from 'node:fs';
@@ -1393,7 +1393,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
1393
1393
  const tunnels = handlers.tunnels;
1394
1394
  if (!tunnels) throw new Error("Tunnel management not available");
1395
1395
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
1396
- const { FrpcTunnel } = await import('./frpc-DPfGAdlj.mjs');
1396
+ const { FrpcTunnel } = await import('./frpc-F50mVRLL.mjs');
1397
1397
  const tunnel = new FrpcTunnel({
1398
1398
  name: params.name,
1399
1399
  ports: params.ports,
@@ -5547,26 +5547,12 @@ function getHyphaServerUrl() {
5547
5547
  const raw = (process.env.HYPHA_SERVER_URL || "").trim();
5548
5548
  return raw ? raw.replace(/\/+$/, "") : void 0;
5549
5549
  }
5550
- function getHyphaHostname() {
5551
- const url = getHyphaServerUrl();
5552
- if (!url) return void 0;
5553
- try {
5554
- return new URL$1(url).hostname || void 0;
5555
- } catch {
5556
- return void 0;
5557
- }
5558
- }
5559
- function deriveOrThrow(prefix, envVar, purpose) {
5560
- const host = getHyphaHostname();
5561
- if (host) return prefix ? `${prefix}.${host}` : host;
5562
- throw new Error(
5563
- `Cannot determine ${purpose}: set ${envVar} explicitly, or set HYPHA_SERVER_URL so it can be derived. No hostname is hardcoded as a fallback.`
5564
- );
5565
- }
5566
5550
  function getFrpsSubdomainHost() {
5567
5551
  const explicit = (process.env.FRPS_SUBDOMAIN_HOST || "").trim();
5568
5552
  if (explicit) return explicit;
5569
- return deriveOrThrow("svc", "FRPS_SUBDOMAIN_HOST", "frps subdomain host");
5553
+ throw new Error(
5554
+ "frps subdomain host is not configured: set FRPS_SUBDOMAIN_HOST (e.g. svc.<your-domain>). It is deployment-specific and intentionally not derived from HYPHA_SERVER_URL, because a guessed host would silently mis-route tunnels."
5555
+ );
5570
5556
  }
5571
5557
  function getFrpsServerAddr() {
5572
5558
  const explicit = (process.env.FRPS_SERVER_ADDR || "").trim();
@@ -5576,10 +5562,8 @@ function getFrpsServerAddr() {
5576
5562
  function getSvampWebBaseUrl() {
5577
5563
  const explicit = (process.env.SVAMP_WEB_URL || "").trim();
5578
5564
  if (explicit) return explicit.replace(/\/+$/, "");
5579
- const host = getHyphaHostname();
5580
- if (host) return `https://svamp.${host}`;
5581
5565
  throw new Error(
5582
- "Cannot determine Svamp web base URL: set SVAMP_WEB_URL explicitly, or set HYPHA_SERVER_URL so it can be derived (https://svamp.<host>). No hostname is hardcoded as a fallback."
5566
+ "Svamp web base URL is not configured: set SVAMP_WEB_URL (e.g. https://svamp.<your-domain>). It is deployment-specific and intentionally not derived from HYPHA_SERVER_URL."
5583
5567
  );
5584
5568
  }
5585
5569
  function getSkillsServerUrl() {
@@ -5588,7 +5572,7 @@ function getSkillsServerUrl() {
5588
5572
  const server = getHyphaServerUrl();
5589
5573
  if (server) return server;
5590
5574
  throw new Error(
5591
- "Cannot determine skills marketplace server: set HYPHA_SKILLS_SERVER or HYPHA_SERVER_URL. No hostname is hardcoded as a fallback."
5575
+ "Cannot determine skills marketplace server: set HYPHA_SKILLS_SERVER or HYPHA_SERVER_URL."
5592
5576
  );
5593
5577
  }
5594
5578
 
@@ -8223,7 +8207,7 @@ async function startDaemon(options) {
8223
8207
  const list = loadExposedTunnels().filter((t) => t.name !== name);
8224
8208
  saveExposedTunnels(list);
8225
8209
  }
8226
- const { ServeManager } = await import('./serveManager-bhh_rQ5M.mjs');
8210
+ const { ServeManager } = await import('./serveManager-DBjlwnv7.mjs');
8227
8211
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
8228
8212
  ensureAutoInstalledSkills(logger).catch(() => {
8229
8213
  });
@@ -10796,7 +10780,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
10796
10780
  const specs = loadExposedTunnels();
10797
10781
  if (specs.length === 0) return;
10798
10782
  logger.log(`[exposed-tunnels] Restoring ${specs.length} tunnel(s) from ${EXPOSED_TUNNELS_FILE}`);
10799
- const { FrpcTunnel } = await import('./frpc-DPfGAdlj.mjs');
10783
+ const { FrpcTunnel } = await import('./frpc-F50mVRLL.mjs');
10800
10784
  for (const spec of specs) {
10801
10785
  if (tunnels.has(spec.name)) continue;
10802
10786
  try {
@@ -10822,11 +10806,15 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
10822
10806
  })().catch(() => {
10823
10807
  });
10824
10808
  if (seededSharing?.enabled) {
10825
- const shareUrl = buildMachineShareUrl({
10826
- machineId,
10827
- workspace: server.config?.workspace
10828
- });
10829
- logger.log(`Machine share URL: ${shareUrl}`);
10809
+ try {
10810
+ const shareUrl = buildMachineShareUrl({
10811
+ machineId,
10812
+ workspace: server.config?.workspace
10813
+ });
10814
+ logger.log(`Machine share URL: ${shareUrl}`);
10815
+ } catch (err) {
10816
+ logger.log(`Machine sharing is enabled but the share URL can't be built: ${err.message}`);
10817
+ }
10830
10818
  const userList = (seededSharing.allowedUsers || []).map((u) => u.email).join(", ");
10831
10819
  if (userList) logger.log(` Shared with: ${userList}`);
10832
10820
  }
@@ -2,7 +2,7 @@ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(im
2
2
  import os from 'node:os';
3
3
  import { resolve, join } from 'node:path';
4
4
  import { existsSync, readFileSync, watch } from 'node:fs';
5
- import { c as connectToHypha, a as registerSessionService, C as generateHookSettings } from './run-BvocESxe.mjs';
5
+ import { c as connectToHypha, a as registerSessionService, C as generateHookSettings } from './run-C90uN1y2.mjs';
6
6
  import { createServer } from 'node:http';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { createInterface } from 'node:readline';
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-BSfZg4aa.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.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-BSfZg4aa.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.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-BSfZg4aa.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.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-BSfZg4aa.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.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-BSfZg4aa.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-Bd1H83bg.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 { h as getHyphaServerUrl, S as ServeAuth, i as hasCookieToken } from './run-BvocESxe.mjs';
7
+ import { h as getHyphaServerUrl, S as ServeAuth, i as hasCookieToken } from './run-C90uN1y2.mjs';
8
8
  import 'os';
9
9
  import 'fs/promises';
10
10
  import 'url';
@@ -712,7 +712,7 @@ class ServeManager {
712
712
  const mount = this.mounts.get(mountName);
713
713
  const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, `static-${subdomainSafe}-${mount.linkToken}`]]) : void 0;
714
714
  try {
715
- const { FrpcTunnel } = await import('./frpc-DPfGAdlj.mjs');
715
+ const { FrpcTunnel } = await import('./frpc-F50mVRLL.mjs');
716
716
  let tunnel;
717
717
  tunnel = new FrpcTunnel({
718
718
  name: tunnelName,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svamp-cli",
3
- "version": "0.2.82",
3
+ "version": "0.2.83",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",