svamp-cli 0.2.100 → 0.2.101

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-rSREfaQg.mjs');
151
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-rSREfaQg.mjs');
168
+ const { resolveSessionId } = await import('./commands-CdxEOPUt.mjs');
169
169
  const sessions = await machine.listSessions();
170
170
  const match = resolveSessionId(sessions, targetSessionId);
171
171
  const fullTargetId = match.sessionId;
@@ -1,4 +1,4 @@
1
- import { E as resolveModel } from './run-CdtYIBbd.mjs';
1
+ import { E as resolveModel } from './run-CsMTSngP.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { e as clearStopMarker, f as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-CdtYIBbd.mjs';
1
+ import { e as clearStopMarker, f as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-CsMTSngP.mjs';
2
2
  import { ensureSupervisorViaServiceManager, LAUNCHD_LABEL } from './serviceManager-hlOVxkhW.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
@@ -33,7 +33,7 @@ const subcommand = args[0];
33
33
  let daemonSubcommand = args[1];
34
34
  async function main() {
35
35
  try {
36
- const { getLoadedConfig } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.Y; });
36
+ const { getLoadedConfig } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.Y; });
37
37
  getLoadedConfig();
38
38
  } catch {
39
39
  }
@@ -50,7 +50,7 @@ async function main() {
50
50
  console.error(`svamp daemon restart: ${err.message || err}`);
51
51
  process.exit(1);
52
52
  }
53
- const { restartDaemon } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n._; });
53
+ const { restartDaemon } = await import('./run-CsMTSngP.mjs').then(function (n) { return n._; });
54
54
  await restartDaemon();
55
55
  process.exit(0);
56
56
  }
@@ -343,7 +343,7 @@ async function main() {
343
343
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
344
344
  process.exit(1);
345
345
  }
346
- const { handleServiceCommand } = await import('./commands-lSqc48Ib.mjs');
346
+ const { handleServiceCommand } = await import('./commands-D-3h8H0C.mjs');
347
347
  await handleServiceCommand();
348
348
  } else if (subcommand === "serve") {
349
349
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -351,7 +351,7 @@ async function main() {
351
351
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
352
352
  process.exit(1);
353
353
  }
354
- const { handleServeCommand } = await import('./serveCommands-BZd0reEj.mjs');
354
+ const { handleServeCommand } = await import('./serveCommands-Can8WtLI.mjs');
355
355
  await handleServeCommand();
356
356
  process.exit(0);
357
357
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -360,7 +360,7 @@ async function main() {
360
360
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
361
361
  process.exit(1);
362
362
  }
363
- const { processCommand } = await import('./commands-Cu96nDGv.mjs');
363
+ const { processCommand } = await import('./commands-B2uNdsyR.mjs');
364
364
  let machineId;
365
365
  const processArgs = args.slice(1);
366
366
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -374,7 +374,7 @@ async function main() {
374
374
  }), machineId);
375
375
  process.exit(0);
376
376
  } else if (subcommand === "routine" || subcommand === "routines") {
377
- const { routineCommand } = await import('./commands-ChzeHFd3.mjs');
377
+ const { routineCommand } = await import('./commands-Bxn_4u7d.mjs');
378
378
  await routineCommand(args.slice(1));
379
379
  process.exit(0);
380
380
  } else if (subcommand === "wise-agent" || subcommand === "wise") {
@@ -385,7 +385,7 @@ async function main() {
385
385
  } else if (!subcommand || subcommand === "start") {
386
386
  await handleInteractiveCommand();
387
387
  } else if (subcommand === "--version" || subcommand === "-v") {
388
- const pkg = await import('./package-B7S5w1VE.mjs').catch(() => ({ default: { version: "unknown" } }));
388
+ const pkg = await import('./package-DHxiXJ3N.mjs').catch(() => ({ default: { version: "unknown" } }));
389
389
  console.log(`svamp version: ${pkg.default.version}`);
390
390
  } else {
391
391
  console.error(`Unknown command: ${subcommand}`);
@@ -394,7 +394,7 @@ async function main() {
394
394
  }
395
395
  }
396
396
  async function handleInteractiveCommand() {
397
- const { runInteractive } = await import('./run-zXRdkYtk.mjs');
397
+ const { runInteractive } = await import('./run-C7WSV8zx.mjs');
398
398
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
399
399
  let directory = process.cwd();
400
400
  let resumeSessionId;
@@ -439,7 +439,7 @@ async function handleAgentCommand() {
439
439
  return;
440
440
  }
441
441
  if (agentArgs[0] === "list") {
442
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.U; });
442
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.U; });
443
443
  console.log("Known agents:");
444
444
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
445
445
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -451,7 +451,7 @@ async function handleAgentCommand() {
451
451
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
452
452
  return;
453
453
  }
454
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.U; });
454
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.U; });
455
455
  let cwd = process.cwd();
456
456
  const filteredArgs = [];
457
457
  for (let i = 0; i < agentArgs.length; i++) {
@@ -475,12 +475,12 @@ async function handleAgentCommand() {
475
475
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
476
476
  let backend;
477
477
  if (KNOWN_MCP_AGENTS[config.agentName]) {
478
- const { CodexMcpBackend } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.V; });
478
+ const { CodexMcpBackend } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.V; });
479
479
  backend = new CodexMcpBackend({ cwd, log: logFn });
480
480
  } else {
481
- const { AcpBackend } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.T; });
482
- const { GeminiTransport } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.W; });
483
- const { DefaultTransport } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.Q; });
481
+ const { AcpBackend } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.T; });
482
+ const { GeminiTransport } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.W; });
483
+ const { DefaultTransport } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.Q; });
484
484
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
485
485
  backend = new AcpBackend({
486
486
  agentName: config.agentName,
@@ -607,7 +607,7 @@ async function handleSessionCommand() {
607
607
  process.exit(1);
608
608
  }
609
609
  }
610
- const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionLoopStart, sessionLoopCancel, sessionLoopStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-rSREfaQg.mjs');
610
+ const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionLoopStart, sessionLoopCancel, sessionLoopStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-CdxEOPUt.mjs');
611
611
  const parseFlagStr = (flag, shortFlag) => {
612
612
  for (let i = 1; i < sessionArgs.length; i++) {
613
613
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -675,7 +675,7 @@ async function handleSessionCommand() {
675
675
  allowDomain.push(sessionArgs[++i]);
676
676
  }
677
677
  }
678
- const { parseShareArg } = await import('./commands-rSREfaQg.mjs');
678
+ const { parseShareArg } = await import('./commands-CdxEOPUt.mjs');
679
679
  const shareEntries = share.map((s) => parseShareArg(s));
680
680
  await sessionSpawn(agent, dir, targetMachineId, {
681
681
  message,
@@ -762,7 +762,7 @@ async function handleSessionCommand() {
762
762
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
763
763
  process.exit(1);
764
764
  }
765
- const { sessionQuery } = await import('./commands-rSREfaQg.mjs');
765
+ const { sessionQuery } = await import('./commands-CdxEOPUt.mjs');
766
766
  await sessionQuery(dir, prompt, targetMachineId, {
767
767
  timeout: parseFlagInt("--timeout"),
768
768
  json: hasFlag("--json"),
@@ -795,7 +795,7 @@ async function handleSessionCommand() {
795
795
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
796
796
  process.exit(1);
797
797
  }
798
- const { sessionApprove } = await import('./commands-rSREfaQg.mjs');
798
+ const { sessionApprove } = await import('./commands-CdxEOPUt.mjs');
799
799
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
800
800
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
801
801
  json: hasFlag("--json")
@@ -805,7 +805,7 @@ async function handleSessionCommand() {
805
805
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
806
806
  process.exit(1);
807
807
  }
808
- const { sessionDeny } = await import('./commands-rSREfaQg.mjs');
808
+ const { sessionDeny } = await import('./commands-CdxEOPUt.mjs');
809
809
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
810
810
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
811
811
  json: hasFlag("--json")
@@ -840,7 +840,7 @@ async function handleSessionCommand() {
840
840
  console.error("Usage: svamp session set-title <title>");
841
841
  process.exit(1);
842
842
  }
843
- const { sessionSetTitle } = await import('./agentCommands-muy26BZI.mjs');
843
+ const { sessionSetTitle } = await import('./agentCommands-CAqLhLOH.mjs');
844
844
  await sessionSetTitle(title);
845
845
  } else if (sessionSubcommand === "set-link") {
846
846
  const url = sessionArgs[1];
@@ -849,7 +849,7 @@ async function handleSessionCommand() {
849
849
  process.exit(1);
850
850
  }
851
851
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
852
- const { sessionSetLink } = await import('./agentCommands-muy26BZI.mjs');
852
+ const { sessionSetLink } = await import('./agentCommands-CAqLhLOH.mjs');
853
853
  await sessionSetLink(url, label);
854
854
  } else if (sessionSubcommand === "notify") {
855
855
  const message = sessionArgs[1];
@@ -858,7 +858,7 @@ async function handleSessionCommand() {
858
858
  process.exit(1);
859
859
  }
860
860
  const level = parseFlagStr("--level") || "info";
861
- const { sessionNotify } = await import('./agentCommands-muy26BZI.mjs');
861
+ const { sessionNotify } = await import('./agentCommands-CAqLhLOH.mjs');
862
862
  await sessionNotify(message, level);
863
863
  } else if (sessionSubcommand === "broadcast") {
864
864
  const action = sessionArgs[1];
@@ -866,7 +866,7 @@ async function handleSessionCommand() {
866
866
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
867
867
  process.exit(1);
868
868
  }
869
- const { sessionBroadcast } = await import('./agentCommands-muy26BZI.mjs');
869
+ const { sessionBroadcast } = await import('./agentCommands-CAqLhLOH.mjs');
870
870
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
871
871
  } else if (sessionSubcommand === "inbox") {
872
872
  const inboxSubcmd = sessionArgs[1];
@@ -877,7 +877,7 @@ async function handleSessionCommand() {
877
877
  process.exit(1);
878
878
  }
879
879
  if (agentSessionId) {
880
- const { inboxSend } = await import('./agentCommands-muy26BZI.mjs');
880
+ const { inboxSend } = await import('./agentCommands-CAqLhLOH.mjs');
881
881
  await inboxSend(sessionArgs[2], {
882
882
  body: sessionArgs[3],
883
883
  subject: parseFlagStr("--subject"),
@@ -892,7 +892,7 @@ async function handleSessionCommand() {
892
892
  }
893
893
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
894
894
  if (agentSessionId && !sessionArgs[2]) {
895
- const { inboxList } = await import('./agentCommands-muy26BZI.mjs');
895
+ const { inboxList } = await import('./agentCommands-CAqLhLOH.mjs');
896
896
  await inboxList({
897
897
  unread: hasFlag("--unread"),
898
898
  limit: parseFlagInt("--limit"),
@@ -914,7 +914,7 @@ async function handleSessionCommand() {
914
914
  process.exit(1);
915
915
  }
916
916
  if (agentSessionId && !sessionArgs[3]) {
917
- const { inboxList } = await import('./agentCommands-muy26BZI.mjs');
917
+ const { inboxList } = await import('./agentCommands-CAqLhLOH.mjs');
918
918
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
919
919
  } else if (sessionArgs[3]) {
920
920
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -924,7 +924,7 @@ async function handleSessionCommand() {
924
924
  }
925
925
  } else if (inboxSubcmd === "reply") {
926
926
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
927
- const { inboxReply } = await import('./agentCommands-muy26BZI.mjs');
927
+ const { inboxReply } = await import('./agentCommands-CAqLhLOH.mjs');
928
928
  await inboxReply(sessionArgs[2], sessionArgs[3]);
929
929
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
930
930
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -960,7 +960,7 @@ async function handleMachineCommand() {
960
960
  return;
961
961
  }
962
962
  if (machineSubcommand === "share") {
963
- const { machineShare } = await import('./commands-rSREfaQg.mjs');
963
+ const { machineShare } = await import('./commands-CdxEOPUt.mjs');
964
964
  let machineId;
965
965
  const shareArgs = [];
966
966
  for (let i = 1; i < machineArgs.length; i++) {
@@ -990,7 +990,7 @@ async function handleMachineCommand() {
990
990
  }
991
991
  await machineShare(machineId, { add, remove, list, configPath, showConfig });
992
992
  } else if (machineSubcommand === "exec") {
993
- const { machineExec } = await import('./commands-rSREfaQg.mjs');
993
+ const { machineExec } = await import('./commands-CdxEOPUt.mjs');
994
994
  let machineId;
995
995
  let cwd;
996
996
  const cmdParts = [];
@@ -1010,7 +1010,7 @@ async function handleMachineCommand() {
1010
1010
  }
1011
1011
  await machineExec(machineId, command, cwd);
1012
1012
  } else if (machineSubcommand === "info") {
1013
- const { machineInfo } = await import('./commands-rSREfaQg.mjs');
1013
+ const { machineInfo } = await import('./commands-CdxEOPUt.mjs');
1014
1014
  let machineId;
1015
1015
  for (let i = 1; i < machineArgs.length; i++) {
1016
1016
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -1030,10 +1030,10 @@ async function handleMachineCommand() {
1030
1030
  level = machineArgs[++i];
1031
1031
  }
1032
1032
  }
1033
- const { machineNotify } = await import('./agentCommands-muy26BZI.mjs');
1033
+ const { machineNotify } = await import('./agentCommands-CAqLhLOH.mjs');
1034
1034
  await machineNotify(message, level);
1035
1035
  } else if (machineSubcommand === "ls") {
1036
- const { machineLs } = await import('./commands-rSREfaQg.mjs');
1036
+ const { machineLs } = await import('./commands-CdxEOPUt.mjs');
1037
1037
  let machineId;
1038
1038
  let showHidden = false;
1039
1039
  let path;
@@ -1091,24 +1091,24 @@ Examples:
1091
1091
  };
1092
1092
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1093
1093
  if (sub === "status") {
1094
- const { fleetStatus } = await import('./fleet-qN96q6Qb.mjs');
1094
+ const { fleetStatus } = await import('./fleet-CNF84yJV.mjs');
1095
1095
  await fleetStatus();
1096
1096
  } else if (sub === "exec") {
1097
1097
  const command = fleetArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1098
- const { fleetExec } = await import('./fleet-qN96q6Qb.mjs');
1098
+ const { fleetExec } = await import('./fleet-CNF84yJV.mjs');
1099
1099
  await fleetExec(command, { cwd: flag("cwd") });
1100
1100
  } else if (sub === "upgrade-claude") {
1101
- const { fleetUpgradeClaude } = await import('./fleet-qN96q6Qb.mjs');
1101
+ const { fleetUpgradeClaude } = await import('./fleet-CNF84yJV.mjs');
1102
1102
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1103
1103
  } else if (sub === "upgrade-svamp") {
1104
- const { fleetUpgradeSvamp } = await import('./fleet-qN96q6Qb.mjs');
1104
+ const { fleetUpgradeSvamp } = await import('./fleet-CNF84yJV.mjs');
1105
1105
  await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self") });
1106
1106
  } else if (sub === "daemon-restart") {
1107
- const { fleetDaemonRestart } = await import('./fleet-qN96q6Qb.mjs');
1107
+ const { fleetDaemonRestart } = await import('./fleet-CNF84yJV.mjs');
1108
1108
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1109
1109
  } else if (sub === "push-skill") {
1110
1110
  const name = fleetArgs[1];
1111
- const { fleetPushSkill } = await import('./fleet-qN96q6Qb.mjs');
1111
+ const { fleetPushSkill } = await import('./fleet-CNF84yJV.mjs');
1112
1112
  await fleetPushSkill(name);
1113
1113
  } else {
1114
1114
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1124,7 +1124,7 @@ async function handleSkillsCommand() {
1124
1124
  await printSkillsHelp();
1125
1125
  return;
1126
1126
  }
1127
- const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-EwE87XNi.mjs');
1127
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-DRQUzw4j.mjs');
1128
1128
  if (skillsSubcommand === "find" || skillsSubcommand === "search") {
1129
1129
  const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1130
1130
  if (!query) {
@@ -1171,7 +1171,7 @@ async function loginToHypha() {
1171
1171
  process.exit(1);
1172
1172
  }
1173
1173
  const anchor = anchorArg.replace(/\/+$/, "");
1174
- const { loadInstanceConfig } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.Y; });
1174
+ const { loadInstanceConfig } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.Y; });
1175
1175
  let cfg = null;
1176
1176
  try {
1177
1177
  cfg = await loadInstanceConfig({ anchor, force: true });
@@ -1282,7 +1282,7 @@ async function logoutFromHypha() {
1282
1282
  } catch {
1283
1283
  }
1284
1284
  try {
1285
- const { clearInstanceConfigCache } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.Y; });
1285
+ const { clearInstanceConfigCache } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.Y; });
1286
1286
  clearInstanceConfigCache();
1287
1287
  } catch {
1288
1288
  }
@@ -1613,7 +1613,7 @@ async function applyClaudeAuthFlags(argv) {
1613
1613
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1614
1614
  );
1615
1615
  }
1616
- const mod = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.X; });
1616
+ const mod = await import('./run-CsMTSngP.mjs').then(function (n) { return n.X; });
1617
1617
  if (hasHypha) {
1618
1618
  let url;
1619
1619
  const hyphaIdx = argv.indexOf("--use-hypha-proxy");
@@ -1667,7 +1667,7 @@ async function applyDaemonShareFlag(argv) {
1667
1667
  }
1668
1668
  }
1669
1669
  if (collected.length === 0) return;
1670
- const { updateEnvFile } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.X; });
1670
+ const { updateEnvFile } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.X; });
1671
1671
  const seen = /* @__PURE__ */ new Set();
1672
1672
  const deduped = collected.filter((e) => {
1673
1673
  const k = e.toLowerCase();
@@ -1700,7 +1700,7 @@ async function handleWiseAgentCommand(rest) {
1700
1700
  }
1701
1701
  });
1702
1702
  const message = rest.slice(1).map((a, idx) => ({ a, idx: idx + 1 })).filter(({ a, idx }) => !a.startsWith("-") && !consumed.has(String(idx))).map(({ a }) => a).join(" ");
1703
- const { wiseAskCli } = await import('./commands-rSREfaQg.mjs');
1703
+ const { wiseAskCli } = await import('./commands-CdxEOPUt.mjs');
1704
1704
  await wiseAskCli(machineId, message, sessionId, { json });
1705
1705
  return;
1706
1706
  }
@@ -1712,7 +1712,7 @@ async function handleWiseAgentCommand(rest) {
1712
1712
  }
1713
1713
  return void 0;
1714
1714
  };
1715
- const { runWiseVoiceCli } = await import('./headlessCli-BVcAcLr1.mjs');
1715
+ const { runWiseVoiceCli } = await import('./headlessCli-DcP8eawK.mjs');
1716
1716
  await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
1717
1717
  return;
1718
1718
  }
@@ -1754,7 +1754,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1754
1754
  return;
1755
1755
  }
1756
1756
  const authArgs = rest.slice(1);
1757
- const mod = await import('./auth-RVq9wRhV.mjs');
1757
+ const mod = await import('./auth-CYA0e4mT.mjs');
1758
1758
  let action;
1759
1759
  try {
1760
1760
  action = mod.parseWiseAgentAuthArgs(authArgs);
@@ -1764,7 +1764,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1764
1764
  return;
1765
1765
  }
1766
1766
  if (action) {
1767
- const { updateEnvFile } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.X; });
1767
+ const { updateEnvFile } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.X; });
1768
1768
  const updates = mod.buildWiseAgentEnvUpdates(action);
1769
1769
  updateEnvFile(updates);
1770
1770
  for (const [k, v] of Object.entries(updates)) {
@@ -1778,7 +1778,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1778
1778
  }
1779
1779
  async function handleDaemonAuthCommand(argv) {
1780
1780
  const sub = (argv[0] || "status").toLowerCase();
1781
- const mod = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.X; });
1781
+ const mod = await import('./run-CsMTSngP.mjs').then(function (n) { return n.X; });
1782
1782
  if (sub === "--help" || sub === "-h" || sub === "help") {
1783
1783
  console.log(`
1784
1784
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -2081,7 +2081,7 @@ Examples:
2081
2081
  async function printSkillsHelp() {
2082
2082
  let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
2083
2083
  try {
2084
- const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-CdtYIBbd.mjs').then(function (n) { return n.Z; });
2084
+ const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-CsMTSngP.mjs').then(function (n) { return n.Z; });
2085
2085
  browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
2086
2086
  } catch {
2087
2087
  }
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-rSREfaQg.mjs';
3
+ import { connectAndGetMachine } from './commands-CdxEOPUt.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-CdtYIBbd.mjs';
8
+ import './run-CsMTSngP.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -1,6 +1,6 @@
1
1
  import { execFileSync } from 'node:child_process';
2
2
  import { createServer } from 'node:http';
3
- import { R as RoutineStore, m as RoutineRunner } from './run-CdtYIBbd.mjs';
3
+ import { R as RoutineStore, m as RoutineRunner } from './run-CsMTSngP.mjs';
4
4
  import 'os';
5
5
  import 'fs/promises';
6
6
  import 'fs';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { basename, resolve, join } from 'node:path';
4
4
  import os from 'node:os';
5
- import { F as normalizeAllowedUser, G as loadSecurityContextConfig, H as resolveSecurityContext, I as buildSecurityContextFromFlags, J as mergeSecurityContexts, c as connectToHypha, K as buildSessionShareUrl, L as computeOutboundHop, M as buildMachineShareUrl } from './run-CdtYIBbd.mjs';
5
+ import { F as normalizeAllowedUser, G as loadSecurityContextConfig, H as resolveSecurityContext, I as buildSecurityContextFromFlags, J as mergeSecurityContexts, c as connectToHypha, K as buildSessionShareUrl, L as computeOutboundHop, M as buildMachineShareUrl } from './run-CsMTSngP.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -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-CIkmTNdJ.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-WVnBbyjf.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-rSREfaQg.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-CIkmTNdJ.mjs');
126
+ const { runFrpcTunnel } = await import('./frpc-WVnBbyjf.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-rSREfaQg.mjs');
135
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-rSREfaQg.mjs');
164
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.mjs');
165
165
  const { server, machine } = await connectAndGetMachine();
166
166
  try {
167
167
  await machine.tunnelStop({ name });
@@ -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, n as getSkillsServer, o as getSkillsWorkspaceName, q as getSkillsCollectionName, t as fetchWithTimeout, u as searchSkills, v as SKILLS_DIR, w as getSkillInfo, x as downloadSkillFile, y as listSkillFiles } from './run-CdtYIBbd.mjs';
4
+ import { p as parseFrontmatter, n as getSkillsServer, o as getSkillsWorkspaceName, q as getSkillsCollectionName, t as fetchWithTimeout, u as searchSkills, v as SKILLS_DIR, w as getSkillInfo, x as downloadSkillFile, y as listSkillFiles } from './run-CsMTSngP.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -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-CdtYIBbd.mjs';
4
+ import { c as connectToHypha } from './run-CsMTSngP.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 { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-CdtYIBbd.mjs';
6
+ import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-CsMTSngP.mjs';
7
7
  import 'fs/promises';
8
8
  import 'url';
9
9
  import 'node:fs';
@@ -1,5 +1,5 @@
1
- import { E as resolveModel, N as describeMisconfiguration, O as buildMachineDeps } from './run-CdtYIBbd.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-JeID_jF-.mjs';
1
+ import { E as resolveModel, N as describeMisconfiguration, O as buildMachineDeps } from './run-CsMTSngP.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-C10Ni7p_.mjs';
3
3
  import { WebSocket } from 'ws';
4
4
  import { execSync, spawn } from 'child_process';
5
5
  import 'os';
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-CdtYIBbd.mjs';
1
+ export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-CsMTSngP.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.100";
2
+ var version = "0.2.101";
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 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 createSessionStore, r as registerMachineService, P as generateHookSettings } from './run-CdtYIBbd.mjs';
5
+ import { c as connectToHypha, a as createSessionStore, r as registerMachineService, P as generateHookSettings } from './run-CsMTSngP.mjs';
6
6
  import { createServer } from 'node:http';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { createInterface } from 'node:readline';
@@ -433,6 +433,75 @@ function buildTools(deps, skills) {
433
433
  }
434
434
  return "(sent to the coding agent)";
435
435
  }
436
+ },
437
+ // Create routine / loop / channel. ONLY call after the caller confirmed the
438
+ // proposed config (see the propose-then-confirm instruction in context.ts).
439
+ {
440
+ name: "create_routine",
441
+ readOnly: false,
442
+ description: "Create a session-scoped routine (cron schedule or webhook \u2192 message or loop). ONLY after the caller confirmed the proposal.",
443
+ parameters: { type: "object", properties: {
444
+ name: { type: "string", description: "Short human name." },
445
+ cron: { type: "string", description: 'Cron for a schedule trigger, e.g. "0 9 * * 1-5". Omit for a webhook.' },
446
+ tz: { type: "string", description: "IANA timezone for the schedule." },
447
+ action_kind: { type: "string", enum: ["message", "loop"], description: '"message" sends text to this session; "loop" starts a self-verifying loop.' },
448
+ message: { type: "string", description: "For message action: the text/template to deliver." },
449
+ task: { type: "string", description: "For loop action: the loop task." },
450
+ oracle: { type: "string", description: "For loop action: optional pass/fail command." }
451
+ }, required: ["name", "action_kind"], additionalProperties: false },
452
+ run: async (a) => {
453
+ const cron = a?.cron ? str$1(a.cron) : "";
454
+ const routine = {
455
+ name: str$1(a?.name),
456
+ enabled: true,
457
+ trigger: cron ? { type: "schedule", cron, ...a?.tz ? { tz: str$1(a.tz) } : {} } : { type: "webhook" },
458
+ action: str$1(a?.action_kind) === "loop" ? { kind: "loop", task_template: str$1(a?.task), loop: { task: str$1(a?.task), ...a?.oracle ? { oracle: str$1(a.oracle) } : {} } } : { kind: "message", template: str$1(a?.message) }
459
+ };
460
+ const r = await deps.saveRoutine(routine);
461
+ return r.success ? `Created routine "${str$1(a?.name)}" (${r.routine?.id || "saved"}).` : `Could not create routine: ${r.error || "unknown error"}.`;
462
+ }
463
+ },
464
+ {
465
+ name: "create_loop",
466
+ readOnly: false,
467
+ description: "Start a self-verifying loop in the bound session (iterates until an evaluator + optional oracle confirm done). ONLY after the caller confirmed the proposal.",
468
+ parameters: { type: "object", properties: {
469
+ task: { type: "string", description: "What the loop should accomplish." },
470
+ criteria: { type: "string", description: "How we know it is genuinely done." },
471
+ oracle: { type: "string", description: 'Optional pass/fail command (e.g. "npm test").' },
472
+ max_iterations: { type: "number", description: "Iteration ceiling (default 20)." }
473
+ }, required: ["task"], additionalProperties: false },
474
+ run: async (a) => {
475
+ await deps.startLoop({
476
+ task: str$1(a?.task),
477
+ criteria: a?.criteria ? str$1(a.criteria) : void 0,
478
+ oracle: a?.oracle ? str$1(a.oracle) : void 0,
479
+ maxIterations: typeof a?.max_iterations === "number" ? a.max_iterations : void 0
480
+ });
481
+ return `Started a loop: "${str$1(a?.task).slice(0, 80)}".`;
482
+ }
483
+ },
484
+ {
485
+ name: "create_channel",
486
+ readOnly: false,
487
+ description: "Create an inbound channel so other users/agents can message this session (identity-tagged). ONLY after the caller confirmed the proposal.",
488
+ parameters: { type: "object", properties: {
489
+ name: { type: "string", description: "Short channel name." },
490
+ description: { type: "string", description: "What this channel is for." },
491
+ identity_mode: { type: "string", enum: ["per-key", "caller-supplied", "fixed"], description: 'How callers are identified (default "per-key").' }
492
+ }, required: ["name"], additionalProperties: false },
493
+ run: async (a) => {
494
+ const mode = a?.identity_mode ? str$1(a.identity_mode) : "per-key";
495
+ const channel = {
496
+ name: str$1(a?.name),
497
+ ...a?.description ? { description: str$1(a.description) } : {},
498
+ enabled: true,
499
+ identity: mode === "fixed" ? { mode, fixed: { name: "caller", kind: "agent" } } : { mode },
500
+ action: { kind: "message" }
501
+ };
502
+ const r = await deps.saveChannel(channel);
503
+ return r.success ? `Created channel "${str$1(a?.name)}" (${r.channel?.id || "saved"}).` : `Could not create channel: ${r.error || "unknown error"}.`;
504
+ }
436
505
  }
437
506
  ];
438
507
  }
@@ -560,10 +629,12 @@ You are WISE Agent, a fast, text-mode companion to the deep coding agent (Claude
560
629
  - use_skill \u2014 load a project skill's full steps by name, then carry them out with run_bash.
561
630
  - run_bash \u2014 run a shell command on the session's machine (when granted).
562
631
  - send_to_session \u2014 hand a clear, reformulated instruction to the deep coding agent (when granted); pass wait=true to block for its reply.
632
+ - create_routine / create_loop / create_channel \u2014 set up a scheduled/triggered routine, a self-verifying loop, or an inbound channel for this session (when granted). ALWAYS propose first and confirm before calling these (see below).
563
633
 
564
634
  # Instructions
565
635
  - Answer general questions and questions about yourself directly. Use tools only to act on the machine/session.
566
636
  - Take the cheap path: read state directly; delegate anything LONG to summarize_session \u2014 keep your own context small.
637
+ - To create a routine, loop, or channel: first restate the resolved config in one line and ask the caller to reply "confirm" to proceed. Only call create_routine / create_loop / create_channel after they confirm in a follow-up message. Never create without confirmation.
567
638
  - For destructive actions (deleting, stopping, killing), require a verified caller and confirm intent; for safe reads, just do it.
568
639
  - If a tool fails or returns nothing useful, say so plainly \u2014 never fabricate a result.
569
640
  - Report the outcome in one line.`;
@@ -936,6 +1007,23 @@ function buildSessionDeps(rpc, opts = {}) {
936
1007
  recentMessageCount: messages.length,
937
1008
  latestMessage: latestText
938
1009
  };
1010
+ },
1011
+ async saveRoutine(routine) {
1012
+ return await rpc.saveRoutine(routine, ctx);
1013
+ },
1014
+ async startLoop(cfg) {
1015
+ await rpc.updateConfig({
1016
+ loop: {
1017
+ task: cfg.task,
1018
+ ...cfg.criteria ? { criteria: cfg.criteria } : {},
1019
+ ...cfg.oracle ? { oracle: cfg.oracle } : {},
1020
+ max_iterations: cfg.maxIterations ?? 20,
1021
+ evaluator: true
1022
+ }
1023
+ }, ctx);
1024
+ },
1025
+ async saveChannel(channel) {
1026
+ return await rpc.saveChannel(channel, ctx);
939
1027
  }
940
1028
  };
941
1029
  }
@@ -2077,7 +2165,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
2077
2165
  const tunnels = handlers.tunnels;
2078
2166
  if (!tunnels) throw new Error("Tunnel management not available");
2079
2167
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
2080
- const { FrpcTunnel } = await import('./frpc-CIkmTNdJ.mjs');
2168
+ const { FrpcTunnel } = await import('./frpc-WVnBbyjf.mjs');
2081
2169
  const tunnel = new FrpcTunnel({
2082
2170
  name: params.name,
2083
2171
  ports: params.ports,
@@ -2338,7 +2426,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
2338
2426
  }
2339
2427
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
2340
2428
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
2341
- const { toolsForRole } = await import('./sideband-JeID_jF-.mjs');
2429
+ const { toolsForRole } = await import('./sideband-C10Ni7p_.mjs');
2342
2430
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
2343
2431
  return fmt(r2);
2344
2432
  }
@@ -9834,7 +9922,7 @@ async function startDaemon(options) {
9834
9922
  const list = loadExposedTunnels().filter((t) => t.name !== name);
9835
9923
  saveExposedTunnels(list);
9836
9924
  }
9837
- const { ServeManager } = await import('./serveManager-lmPtmRnR.mjs');
9925
+ const { ServeManager } = await import('./serveManager-DfETVSOb.mjs');
9838
9926
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
9839
9927
  ensureAutoInstalledSkills(logger).catch(() => {
9840
9928
  });
@@ -12145,7 +12233,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
12145
12233
  const specs = loadExposedTunnels();
12146
12234
  if (specs.length === 0) return;
12147
12235
  logger.log(`[exposed-tunnels] Restoring ${specs.length} tunnel(s) from ${EXPOSED_TUNNELS_FILE}`);
12148
- const { FrpcTunnel } = await import('./frpc-CIkmTNdJ.mjs');
12236
+ const { FrpcTunnel } = await import('./frpc-WVnBbyjf.mjs');
12149
12237
  for (const spec of specs) {
12150
12238
  if (tunnels.has(spec.name)) continue;
12151
12239
  try {
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-rSREfaQg.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-rSREfaQg.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-rSREfaQg.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-rSREfaQg.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-rSREfaQg.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-CdxEOPUt.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-CdtYIBbd.mjs';
7
+ import { k as getHyphaServerUrl, S as ServeAuth, l as hasCookieToken } from './run-CsMTSngP.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-CIkmTNdJ.mjs');
715
+ const { FrpcTunnel } = await import('./frpc-WVnBbyjf.mjs');
716
716
  let tunnel;
717
717
  tunnel = new FrpcTunnel({
718
718
  name: tunnelName,
@@ -1,4 +1,4 @@
1
- import { z as READ_ONLY_TOOLS, A as loadMachineContext, B as buildMachineInstructions, C as machineToolsForRole, D as buildMachineTools } from './run-CdtYIBbd.mjs';
1
+ import { z as READ_ONLY_TOOLS, A as loadMachineContext, B as buildMachineInstructions, C as machineToolsForRole, D as buildMachineTools } from './run-CsMTSngP.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.100",
3
+ "version": "0.2.101",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",