svamp-cli 0.2.249 → 0.2.251

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.
Files changed (24) hide show
  1. package/dist/{agentCommands-B_ozIVKT.mjs → agentCommands-Bcqo8iMs.mjs} +5 -5
  2. package/dist/{auth-BLDmT7XN.mjs → auth-aefPotnn.mjs} +1 -1
  3. package/dist/cli.mjs +61 -61
  4. package/dist/{commands-DwhA-iV3.mjs → commands-BF-wFyla.mjs} +2 -2
  5. package/dist/{commands-CRMQUQZG.mjs → commands-BwvIihFY.mjs} +1 -1
  6. package/dist/{commands-Cs2fNd-_.mjs → commands-CBOY46Ig.mjs} +6 -6
  7. package/dist/{commands-DS4i8ohA.mjs → commands-Cy6dc7Ey.mjs} +1 -1
  8. package/dist/{commands-Djvi1cZ2.mjs → commands-D7Sifr5h.mjs} +2 -2
  9. package/dist/{commands-CL8YI8k5.mjs → commands-DV7Somb0.mjs} +1 -1
  10. package/dist/{commands-C3TQOYUo.mjs → commands-hPm8AYNG.mjs} +1 -1
  11. package/dist/{fleet-CJZOVjOY.mjs → fleet-CBIJW3k7.mjs} +1 -1
  12. package/dist/{frpc-CsjEXBuS.mjs → frpc-DshAO_N4.mjs} +1 -1
  13. package/dist/{headlessCli-qBontdlf.mjs → headlessCli-l72fsaU0.mjs} +2 -2
  14. package/dist/index.mjs +1 -1
  15. package/dist/{package-CP8yEiNu.mjs → package-ayXBWSo-.mjs} +1 -1
  16. package/dist/{rpc-C1DI7HfZ.mjs → rpc-B2BhUPgt.mjs} +1 -1
  17. package/dist/{rpc-BGFgegj5.mjs → rpc-CtfcD14b.mjs} +1 -1
  18. package/dist/{run-C61rsl7r.mjs → run-BCU137ie.mjs} +1 -1
  19. package/dist/{run-CHIppB2r.mjs → run-CRe59VaY.mjs} +36 -17
  20. package/dist/{scheduler-Csp21zzg.mjs → scheduler-CW_l0_B6.mjs} +1 -1
  21. package/dist/{serveCommands-BYHk72ZO.mjs → serveCommands-JgPmRokC.mjs} +5 -5
  22. package/dist/{serveManager-Di3xrvG2.mjs → serveManager-CL0QrW7Z.mjs} +2 -2
  23. package/dist/{sideband-Cs-kNLye.mjs → sideband-CiE3Nqih.mjs} +1 -1
  24. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync } from '
2
2
  import { join, dirname } from 'node:path';
3
3
  import os from 'node:os';
4
4
  import { requireNotSandboxed } from './sandboxDetect-DNTcbgWD.mjs';
5
- import { k as shortId } from './run-CHIppB2r.mjs';
5
+ import { k as shortId } from './run-CRe59VaY.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -97,7 +97,7 @@ async function sessionSetTitle(title) {
97
97
  }
98
98
  async function sessionSetProjectDescription(description) {
99
99
  const dir = process.cwd();
100
- const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.al; });
100
+ const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.al; });
101
101
  const desc = sanitizeDescription(description, 240);
102
102
  if (!desc) {
103
103
  console.error("Project description is empty.");
@@ -344,7 +344,7 @@ async function sessionBroadcast(action, args) {
344
344
  console.log(`Broadcast sent: ${action}`);
345
345
  }
346
346
  async function connectToMachineService() {
347
- const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
347
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.mjs');
348
348
  return connectAndGetMachine();
349
349
  }
350
350
  function buildInboxMessage(args) {
@@ -422,7 +422,7 @@ async function inboxSend(targetSessionId, opts) {
422
422
  console.error("Message body is required.");
423
423
  process.exit(1);
424
424
  }
425
- const { connectAndResolveSession } = await import('./commands-C3TQOYUo.mjs');
425
+ const { connectAndResolveSession } = await import('./commands-hPm8AYNG.mjs');
426
426
  let server;
427
427
  try {
428
428
  const { targetId, messageId } = await inboxSendCore(
@@ -476,7 +476,7 @@ async function inboxReply(messageId, body) {
476
476
  console.error("SVAMP_SESSION_ID not set. This command must be run inside a Svamp session.");
477
477
  process.exit(1);
478
478
  }
479
- const { connectAndResolveSession } = await import('./commands-C3TQOYUo.mjs');
479
+ const { connectAndResolveSession } = await import('./commands-hPm8AYNG.mjs');
480
480
  const { server: localServer, machine: localMachine } = await connectToMachineService();
481
481
  let localDisconnected = false;
482
482
  const disconnectLocal = async () => {
@@ -1,4 +1,4 @@
1
- import { a1 as resolveModel } from './run-CHIppB2r.mjs';
1
+ import { a1 as resolveModel } from './run-CRe59VaY.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-CHIppB2r.mjs';
1
+ import { e as clearStopMarker, f as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-CRe59VaY.mjs';
2
2
  import { ensureSupervisorViaServiceManager, LAUNCHD_LABEL } from './serviceManager-hlOVxkhW.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
@@ -35,7 +35,7 @@ const subcommand = args[0];
35
35
  let daemonSubcommand = args[1];
36
36
  async function main() {
37
37
  try {
38
- const { getLoadedConfig } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ar; });
38
+ const { getLoadedConfig } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ar; });
39
39
  getLoadedConfig();
40
40
  } catch {
41
41
  }
@@ -54,7 +54,7 @@ async function main() {
54
54
  }
55
55
  const whenIdle = args.includes("--when-idle");
56
56
  const force = args.includes("--force");
57
- const mod = await import('./run-CHIppB2r.mjs').then(function (n) { return n.at; });
57
+ const mod = await import('./run-CRe59VaY.mjs').then(function (n) { return n.at; });
58
58
  if (whenIdle && !force) {
59
59
  if (mod.isDaemonAlive()) {
60
60
  mod.writePendingRestart({ reason: "svamp daemon restart --when-idle" });
@@ -355,7 +355,7 @@ async function main() {
355
355
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
356
356
  process.exit(1);
357
357
  }
358
- const { handleServiceCommand } = await import('./commands-Cs2fNd-_.mjs');
358
+ const { handleServiceCommand } = await import('./commands-CBOY46Ig.mjs');
359
359
  await handleServiceCommand();
360
360
  } else if (subcommand === "serve") {
361
361
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -363,7 +363,7 @@ async function main() {
363
363
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
364
364
  process.exit(1);
365
365
  }
366
- const { handleServeCommand } = await import('./serveCommands-BYHk72ZO.mjs');
366
+ const { handleServeCommand } = await import('./serveCommands-JgPmRokC.mjs');
367
367
  await handleServeCommand();
368
368
  process.exit(0);
369
369
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -372,7 +372,7 @@ async function main() {
372
372
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
373
373
  process.exit(1);
374
374
  }
375
- const { processCommand } = await import('./commands-Djvi1cZ2.mjs');
375
+ const { processCommand } = await import('./commands-D7Sifr5h.mjs');
376
376
  let machineId;
377
377
  const processArgs = args.slice(1);
378
378
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -386,18 +386,18 @@ async function main() {
386
386
  }), machineId);
387
387
  process.exit(0);
388
388
  } else if (subcommand === "issue" || subcommand === "issues") {
389
- const { issueCommand } = await import('./commands-CRMQUQZG.mjs');
389
+ const { issueCommand } = await import('./commands-BwvIihFY.mjs');
390
390
  await issueCommand(args.slice(1));
391
391
  process.exit(0);
392
392
  } else if (subcommand === "workflow" || subcommand === "workflows") {
393
- const { workflowCommand } = await import('./commands-DS4i8ohA.mjs');
393
+ const { workflowCommand } = await import('./commands-Cy6dc7Ey.mjs');
394
394
  await workflowCommand(args.slice(1));
395
395
  process.exit(0);
396
396
  } else if (subcommand === "wise-agent" || subcommand === "wise") {
397
397
  await handleWiseAgentCommand(args.slice(1));
398
398
  process.exit(0);
399
399
  } else if (subcommand === "feature" || subcommand === "crew") {
400
- const { crewCommand } = await import('./commands-DwhA-iV3.mjs');
400
+ const { crewCommand } = await import('./commands-BF-wFyla.mjs');
401
401
  await crewCommand(args.slice(1));
402
402
  process.exit(0);
403
403
  } else if (subcommand === "--help" || subcommand === "-h") {
@@ -405,7 +405,7 @@ async function main() {
405
405
  } else if (!subcommand || subcommand === "start") {
406
406
  await handleInteractiveCommand();
407
407
  } else if (subcommand === "--version" || subcommand === "-v") {
408
- const pkg = await import('./package-CP8yEiNu.mjs').catch(() => ({ default: { version: "unknown" } }));
408
+ const pkg = await import('./package-ayXBWSo-.mjs').catch(() => ({ default: { version: "unknown" } }));
409
409
  console.log(`svamp version: ${pkg.default.version}`);
410
410
  } else {
411
411
  console.error(`Unknown command: ${subcommand}`);
@@ -414,7 +414,7 @@ async function main() {
414
414
  }
415
415
  }
416
416
  async function handleInteractiveCommand() {
417
- const { runInteractive } = await import('./run-C61rsl7r.mjs');
417
+ const { runInteractive } = await import('./run-BCU137ie.mjs');
418
418
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
419
419
  let directory = process.cwd();
420
420
  let resumeSessionId;
@@ -459,7 +459,7 @@ async function handleAgentCommand() {
459
459
  return;
460
460
  }
461
461
  if (agentArgs[0] === "list") {
462
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ao; });
462
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ao; });
463
463
  console.log("Known agents:");
464
464
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
465
465
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -471,7 +471,7 @@ async function handleAgentCommand() {
471
471
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
472
472
  return;
473
473
  }
474
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ao; });
474
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ao; });
475
475
  let cwd = process.cwd();
476
476
  const filteredArgs = [];
477
477
  for (let i = 0; i < agentArgs.length; i++) {
@@ -495,12 +495,12 @@ async function handleAgentCommand() {
495
495
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
496
496
  let backend;
497
497
  if (KNOWN_MCP_AGENTS[config.agentName]) {
498
- const { CodexMcpBackend } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ap; });
498
+ const { CodexMcpBackend } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ap; });
499
499
  backend = new CodexMcpBackend({ cwd, log: logFn });
500
500
  } else {
501
- const { AcpBackend } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.an; });
502
- const { GeminiTransport } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.aq; });
503
- const { DefaultTransport } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.am; });
501
+ const { AcpBackend } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.an; });
502
+ const { GeminiTransport } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.aq; });
503
+ const { DefaultTransport } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.am; });
504
504
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
505
505
  backend = new AcpBackend({
506
506
  agentName: config.agentName,
@@ -627,7 +627,7 @@ async function handleSessionCommand() {
627
627
  process.exit(1);
628
628
  }
629
629
  }
630
- 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-C3TQOYUo.mjs');
630
+ 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-hPm8AYNG.mjs');
631
631
  const parseFlagStr = (flag, shortFlag) => {
632
632
  for (let i = 1; i < sessionArgs.length; i++) {
633
633
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -695,7 +695,7 @@ async function handleSessionCommand() {
695
695
  allowDomain.push(sessionArgs[++i]);
696
696
  }
697
697
  }
698
- const { parseShareArg } = await import('./commands-C3TQOYUo.mjs');
698
+ const { parseShareArg } = await import('./commands-hPm8AYNG.mjs');
699
699
  const shareEntries = share.map((s) => parseShareArg(s));
700
700
  await sessionSpawn(agent, dir, targetMachineId, {
701
701
  message,
@@ -783,7 +783,7 @@ async function handleSessionCommand() {
783
783
  console.error(" Rewinds history: rewrites the message + drops everything after it, then restarts Claude.");
784
784
  process.exit(1);
785
785
  }
786
- const { sessionEditMessage } = await import('./commands-C3TQOYUo.mjs');
786
+ const { sessionEditMessage } = await import('./commands-hPm8AYNG.mjs');
787
787
  await sessionEditMessage(sessionArgs[1], sessionArgs[2], sessionArgs[3], targetMachineId);
788
788
  } else if (sessionSubcommand === "refine") {
789
789
  if (!sessionArgs[1] || !sessionArgs[2]) {
@@ -791,7 +791,7 @@ async function handleSessionCommand() {
791
791
  console.error(" Asks the agent to revise its latest reply in place (no extra round).");
792
792
  process.exit(1);
793
793
  }
794
- const { sessionRefineLastReply } = await import('./commands-C3TQOYUo.mjs');
794
+ const { sessionRefineLastReply } = await import('./commands-hPm8AYNG.mjs');
795
795
  await sessionRefineLastReply(sessionArgs[1], sessionArgs[2], targetMachineId);
796
796
  } else if (sessionSubcommand === "undo-edit" || sessionSubcommand === "undo") {
797
797
  if (!sessionArgs[1]) {
@@ -799,7 +799,7 @@ async function handleSessionCommand() {
799
799
  console.error(" Reverts the most recent edit/refine, restoring the pre-edit history.");
800
800
  process.exit(1);
801
801
  }
802
- const { sessionUndoEdit } = await import('./commands-C3TQOYUo.mjs');
802
+ const { sessionUndoEdit } = await import('./commands-hPm8AYNG.mjs');
803
803
  await sessionUndoEdit(sessionArgs[1], targetMachineId);
804
804
  } else if (sessionSubcommand === "query") {
805
805
  const dir = sessionArgs[1];
@@ -809,7 +809,7 @@ async function handleSessionCommand() {
809
809
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
810
810
  process.exit(1);
811
811
  }
812
- const { sessionQuery } = await import('./commands-C3TQOYUo.mjs');
812
+ const { sessionQuery } = await import('./commands-hPm8AYNG.mjs');
813
813
  await sessionQuery(dir, prompt, targetMachineId, {
814
814
  timeout: parseFlagInt("--timeout"),
815
815
  json: hasFlag("--json"),
@@ -842,7 +842,7 @@ async function handleSessionCommand() {
842
842
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
843
843
  process.exit(1);
844
844
  }
845
- const { sessionApprove } = await import('./commands-C3TQOYUo.mjs');
845
+ const { sessionApprove } = await import('./commands-hPm8AYNG.mjs');
846
846
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
847
847
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
848
848
  json: hasFlag("--json")
@@ -852,7 +852,7 @@ async function handleSessionCommand() {
852
852
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
853
853
  process.exit(1);
854
854
  }
855
- const { sessionDeny } = await import('./commands-C3TQOYUo.mjs');
855
+ const { sessionDeny } = await import('./commands-hPm8AYNG.mjs');
856
856
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
857
857
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
858
858
  json: hasFlag("--json")
@@ -897,7 +897,7 @@ async function handleSessionCommand() {
897
897
  console.error("Usage: svamp session set-title <title>");
898
898
  process.exit(1);
899
899
  }
900
- const { sessionSetTitle } = await import('./agentCommands-B_ozIVKT.mjs');
900
+ const { sessionSetTitle } = await import('./agentCommands-Bcqo8iMs.mjs');
901
901
  await sessionSetTitle(title);
902
902
  } else if (sessionSubcommand === "set-project-description" || sessionSubcommand === "set-project") {
903
903
  const desc = sessionArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
@@ -905,7 +905,7 @@ async function handleSessionCommand() {
905
905
  console.error("Usage: svamp session set-project-description <text>");
906
906
  process.exit(1);
907
907
  }
908
- const { sessionSetProjectDescription } = await import('./agentCommands-B_ozIVKT.mjs');
908
+ const { sessionSetProjectDescription } = await import('./agentCommands-Bcqo8iMs.mjs');
909
909
  await sessionSetProjectDescription(desc);
910
910
  } else if (sessionSubcommand === "set-link") {
911
911
  const url = sessionArgs[1];
@@ -914,11 +914,11 @@ async function handleSessionCommand() {
914
914
  process.exit(1);
915
915
  }
916
916
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
917
- const { sessionSetLink } = await import('./agentCommands-B_ozIVKT.mjs');
917
+ const { sessionSetLink } = await import('./agentCommands-Bcqo8iMs.mjs');
918
918
  await sessionSetLink(url, label);
919
919
  } else if (sessionSubcommand === "link") {
920
920
  const op = sessionArgs[1];
921
- const lm = await import('./agentCommands-B_ozIVKT.mjs');
921
+ const lm = await import('./agentCommands-Bcqo8iMs.mjs');
922
922
  if (op === "add") {
923
923
  const url = sessionArgs[2];
924
924
  if (!url || url.startsWith("--")) {
@@ -953,7 +953,7 @@ async function handleSessionCommand() {
953
953
  process.exit(1);
954
954
  }
955
955
  const level = parseFlagStr("--level") || "info";
956
- const { sessionNotify } = await import('./agentCommands-B_ozIVKT.mjs');
956
+ const { sessionNotify } = await import('./agentCommands-Bcqo8iMs.mjs');
957
957
  await sessionNotify(message, level);
958
958
  } else if (sessionSubcommand === "broadcast") {
959
959
  const action = sessionArgs[1];
@@ -961,7 +961,7 @@ async function handleSessionCommand() {
961
961
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
962
962
  process.exit(1);
963
963
  }
964
- const { sessionBroadcast } = await import('./agentCommands-B_ozIVKT.mjs');
964
+ const { sessionBroadcast } = await import('./agentCommands-Bcqo8iMs.mjs');
965
965
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
966
966
  } else if (sessionSubcommand === "inbox") {
967
967
  const inboxSubcmd = sessionArgs[1];
@@ -972,7 +972,7 @@ async function handleSessionCommand() {
972
972
  process.exit(1);
973
973
  }
974
974
  if (agentSessionId) {
975
- const { inboxSend } = await import('./agentCommands-B_ozIVKT.mjs');
975
+ const { inboxSend } = await import('./agentCommands-Bcqo8iMs.mjs');
976
976
  await inboxSend(sessionArgs[2], {
977
977
  body: sessionArgs[3],
978
978
  subject: parseFlagStr("--subject"),
@@ -987,7 +987,7 @@ async function handleSessionCommand() {
987
987
  }
988
988
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
989
989
  if (agentSessionId && !sessionArgs[2]) {
990
- const { inboxList } = await import('./agentCommands-B_ozIVKT.mjs');
990
+ const { inboxList } = await import('./agentCommands-Bcqo8iMs.mjs');
991
991
  await inboxList({
992
992
  unread: hasFlag("--unread"),
993
993
  limit: parseFlagInt("--limit"),
@@ -1009,7 +1009,7 @@ async function handleSessionCommand() {
1009
1009
  process.exit(1);
1010
1010
  }
1011
1011
  if (agentSessionId && !sessionArgs[3]) {
1012
- const { inboxList } = await import('./agentCommands-B_ozIVKT.mjs');
1012
+ const { inboxList } = await import('./agentCommands-Bcqo8iMs.mjs');
1013
1013
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
1014
1014
  } else if (sessionArgs[3]) {
1015
1015
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -1019,7 +1019,7 @@ async function handleSessionCommand() {
1019
1019
  }
1020
1020
  } else if (inboxSubcmd === "reply") {
1021
1021
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
1022
- const { inboxReply } = await import('./agentCommands-B_ozIVKT.mjs');
1022
+ const { inboxReply } = await import('./agentCommands-Bcqo8iMs.mjs');
1023
1023
  await inboxReply(sessionArgs[2], sessionArgs[3]);
1024
1024
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
1025
1025
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -1057,7 +1057,7 @@ async function handleMachineCommand() {
1057
1057
  return;
1058
1058
  }
1059
1059
  if (machineSubcommand === "share") {
1060
- const { machineShare } = await import('./commands-C3TQOYUo.mjs');
1060
+ const { machineShare } = await import('./commands-hPm8AYNG.mjs');
1061
1061
  let machineId;
1062
1062
  const shareArgs = [];
1063
1063
  for (let i = 1; i < machineArgs.length; i++) {
@@ -1108,14 +1108,14 @@ async function handleMachineCommand() {
1108
1108
  process.exit(1);
1109
1109
  }
1110
1110
  if (all) {
1111
- const { fleetExec } = await import('./fleet-CJZOVjOY.mjs');
1111
+ const { fleetExec } = await import('./fleet-CBIJW3k7.mjs');
1112
1112
  await fleetExec(command, { cwd });
1113
1113
  } else {
1114
- const { machineExec } = await import('./commands-C3TQOYUo.mjs');
1114
+ const { machineExec } = await import('./commands-hPm8AYNG.mjs');
1115
1115
  await machineExec(machineId, command, cwd);
1116
1116
  }
1117
1117
  } else if (machineSubcommand === "info") {
1118
- const { machineInfo } = await import('./commands-C3TQOYUo.mjs');
1118
+ const { machineInfo } = await import('./commands-hPm8AYNG.mjs');
1119
1119
  let machineId;
1120
1120
  for (let i = 1; i < machineArgs.length; i++) {
1121
1121
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -1135,10 +1135,10 @@ async function handleMachineCommand() {
1135
1135
  level = machineArgs[++i];
1136
1136
  }
1137
1137
  }
1138
- const { machineNotify } = await import('./agentCommands-B_ozIVKT.mjs');
1138
+ const { machineNotify } = await import('./agentCommands-Bcqo8iMs.mjs');
1139
1139
  await machineNotify(message, level);
1140
1140
  } else if (machineSubcommand === "ls") {
1141
- const { machineLs } = await import('./commands-C3TQOYUo.mjs');
1141
+ const { machineLs } = await import('./commands-hPm8AYNG.mjs');
1142
1142
  let machineId;
1143
1143
  let showHidden = false;
1144
1144
  let path;
@@ -1197,20 +1197,20 @@ Examples:
1197
1197
  };
1198
1198
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1199
1199
  if (sub === "status") {
1200
- const { fleetStatus } = await import('./fleet-CJZOVjOY.mjs');
1200
+ const { fleetStatus } = await import('./fleet-CBIJW3k7.mjs');
1201
1201
  await fleetStatus();
1202
1202
  } else if (sub === "upgrade-claude") {
1203
- const { fleetUpgradeClaude } = await import('./fleet-CJZOVjOY.mjs');
1203
+ const { fleetUpgradeClaude } = await import('./fleet-CBIJW3k7.mjs');
1204
1204
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1205
1205
  } else if (sub === "upgrade-svamp") {
1206
- const { fleetUpgradeSvamp } = await import('./fleet-CJZOVjOY.mjs');
1206
+ const { fleetUpgradeSvamp } = await import('./fleet-CBIJW3k7.mjs');
1207
1207
  await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self"), force: hasFlag("force") });
1208
1208
  } else if (sub === "daemon-restart") {
1209
- const { fleetDaemonRestart } = await import('./fleet-CJZOVjOY.mjs');
1209
+ const { fleetDaemonRestart } = await import('./fleet-CBIJW3k7.mjs');
1210
1210
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1211
1211
  } else if (sub === "push-skill") {
1212
1212
  const name = fleetArgs[1];
1213
- const { fleetPushSkill } = await import('./fleet-CJZOVjOY.mjs');
1213
+ const { fleetPushSkill } = await import('./fleet-CBIJW3k7.mjs');
1214
1214
  await fleetPushSkill(name);
1215
1215
  } else {
1216
1216
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1226,7 +1226,7 @@ async function handleSkillsCommand() {
1226
1226
  await printSkillsHelp();
1227
1227
  return;
1228
1228
  }
1229
- const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-CL8YI8k5.mjs');
1229
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-DV7Somb0.mjs');
1230
1230
  if (skillsSubcommand === "find" || skillsSubcommand === "search") {
1231
1231
  const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1232
1232
  if (!query) {
@@ -1273,7 +1273,7 @@ async function loginToHypha() {
1273
1273
  process.exit(1);
1274
1274
  }
1275
1275
  const anchor = anchorArg.replace(/\/+$/, "");
1276
- const { loadInstanceConfig } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ar; });
1276
+ const { loadInstanceConfig } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ar; });
1277
1277
  let cfg = null;
1278
1278
  try {
1279
1279
  cfg = await loadInstanceConfig({ anchor, force: true });
@@ -1384,7 +1384,7 @@ async function logoutFromHypha() {
1384
1384
  } catch {
1385
1385
  }
1386
1386
  try {
1387
- const { clearInstanceConfigCache } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ar; });
1387
+ const { clearInstanceConfigCache } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ar; });
1388
1388
  clearInstanceConfigCache();
1389
1389
  } catch {
1390
1390
  }
@@ -1723,7 +1723,7 @@ async function applyClaudeAuthFlags(argv) {
1723
1723
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1724
1724
  );
1725
1725
  }
1726
- const mod = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ak; });
1726
+ const mod = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ak; });
1727
1727
  if (hasHypha) {
1728
1728
  let url;
1729
1729
  const hyphaIdx = argv.indexOf("--use-hypha-proxy");
@@ -1777,7 +1777,7 @@ async function applyDaemonShareFlag(argv) {
1777
1777
  }
1778
1778
  }
1779
1779
  if (collected.length === 0) return;
1780
- const { updateEnvFile } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ak; });
1780
+ const { updateEnvFile } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ak; });
1781
1781
  const seen = /* @__PURE__ */ new Set();
1782
1782
  const deduped = collected.filter((e) => {
1783
1783
  const k = e.toLowerCase();
@@ -1810,7 +1810,7 @@ async function handleWiseAgentCommand(rest) {
1810
1810
  }
1811
1811
  });
1812
1812
  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(" ");
1813
- const { wiseAskCli } = await import('./commands-C3TQOYUo.mjs');
1813
+ const { wiseAskCli } = await import('./commands-hPm8AYNG.mjs');
1814
1814
  await wiseAskCli(machineId, message, sessionId, { json });
1815
1815
  return;
1816
1816
  }
@@ -1822,7 +1822,7 @@ async function handleWiseAgentCommand(rest) {
1822
1822
  }
1823
1823
  return void 0;
1824
1824
  };
1825
- const { runWiseVoiceCli } = await import('./headlessCli-qBontdlf.mjs');
1825
+ const { runWiseVoiceCli } = await import('./headlessCli-l72fsaU0.mjs');
1826
1826
  await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
1827
1827
  return;
1828
1828
  }
@@ -1840,7 +1840,7 @@ async function handleWiseAgentCommand(rest) {
1840
1840
  const mode = valueOf(["--mode"]);
1841
1841
  const mission = valueOf(["--mission"]);
1842
1842
  const url = rest.slice(1).find((a) => /^https?:\/\//.test(a)) || "";
1843
- const { wiseJoinMeetingCli } = await import('./commands-C3TQOYUo.mjs');
1843
+ const { wiseJoinMeetingCli } = await import('./commands-hPm8AYNG.mjs');
1844
1844
  await wiseJoinMeetingCli(machineId, url, sessionId, { json, mode, mission });
1845
1845
  return;
1846
1846
  }
@@ -1852,7 +1852,7 @@ async function handleWiseAgentCommand(rest) {
1852
1852
  }
1853
1853
  return void 0;
1854
1854
  };
1855
- const { wiseLeaveMeetingCli } = await import('./commands-C3TQOYUo.mjs');
1855
+ const { wiseLeaveMeetingCli } = await import('./commands-hPm8AYNG.mjs');
1856
1856
  await wiseLeaveMeetingCli(valueOf(["--machine", "-m"]), valueOf(["--session", "-s"]), { json: rest.includes("--json") });
1857
1857
  return;
1858
1858
  }
@@ -1876,7 +1876,7 @@ async function handleWiseAgentCommand(rest) {
1876
1876
  }
1877
1877
  });
1878
1878
  const text = rest.slice(1).map((a, idx) => ({ a, idx: idx + 1 })).filter(({ a, idx }) => !a.startsWith("-") && !consumed.has(String(idx))).map(({ a }) => a).join(" ");
1879
- const { wiseAnnounceCli } = await import('./commands-C3TQOYUo.mjs');
1879
+ const { wiseAnnounceCli } = await import('./commands-hPm8AYNG.mjs');
1880
1880
  await wiseAnnounceCli(machineId, text, sessionId, { json });
1881
1881
  return;
1882
1882
  }
@@ -1888,7 +1888,7 @@ async function handleWiseAgentCommand(rest) {
1888
1888
  }
1889
1889
  return void 0;
1890
1890
  };
1891
- const { wiseMeetingsCli } = await import('./commands-C3TQOYUo.mjs');
1891
+ const { wiseMeetingsCli } = await import('./commands-hPm8AYNG.mjs');
1892
1892
  await wiseMeetingsCli(valueOf(["--machine", "-m"]), { json: rest.includes("--json") });
1893
1893
  return;
1894
1894
  }
@@ -1938,7 +1938,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1938
1938
  return;
1939
1939
  }
1940
1940
  const authArgs = rest.slice(1);
1941
- const mod = await import('./auth-BLDmT7XN.mjs');
1941
+ const mod = await import('./auth-aefPotnn.mjs');
1942
1942
  let action;
1943
1943
  try {
1944
1944
  action = mod.parseWiseAgentAuthArgs(authArgs);
@@ -1948,7 +1948,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1948
1948
  return;
1949
1949
  }
1950
1950
  if (action) {
1951
- const { updateEnvFile } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ak; });
1951
+ const { updateEnvFile } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ak; });
1952
1952
  const updates = mod.buildWiseAgentEnvUpdates(action);
1953
1953
  updateEnvFile(updates);
1954
1954
  for (const [k, v] of Object.entries(updates)) {
@@ -1962,7 +1962,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1962
1962
  }
1963
1963
  async function handleDaemonAuthCommand(argv) {
1964
1964
  const sub = (argv[0] || "status").toLowerCase();
1965
- const mod = await import('./run-CHIppB2r.mjs').then(function (n) { return n.ak; });
1965
+ const mod = await import('./run-CRe59VaY.mjs').then(function (n) { return n.ak; });
1966
1966
  if (sub === "--help" || sub === "-h" || sub === "help") {
1967
1967
  console.log(`
1968
1968
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -2276,7 +2276,7 @@ Examples:
2276
2276
  async function printSkillsHelp() {
2277
2277
  let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
2278
2278
  try {
2279
- const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-CHIppB2r.mjs').then(function (n) { return n.as; });
2279
+ const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-CRe59VaY.mjs').then(function (n) { return n.as; });
2280
2280
  browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
2281
2281
  } catch {
2282
2282
  }
@@ -1,8 +1,8 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-C3TQOYUo.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-hPm8AYNG.mjs';
4
4
  import { execSync } from 'node:child_process';
5
- import { u as updateIssue, t as addComment, v as addIssue, k as shortId } from './run-CHIppB2r.mjs';
5
+ import { u as updateIssue, t as addComment, v as addIssue, k as shortId } from './run-CRe59VaY.mjs';
6
6
  import 'node:os';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -1,7 +1,7 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { n as resolveProjectRoot, x as searchIssues, w as listIssues, p as resumeIssue, q as pauseIssue, t as addComment, u as updateIssue, o as getIssue, y as isVisibleTo, L as summarize, v as addIssue } from './run-CHIppB2r.mjs';
4
+ import { n as resolveProjectRoot, x as searchIssues, w as listIssues, p as resumeIssue, q as pauseIssue, t as addComment, u as updateIssue, o as getIssue, y as isVisibleTo, L as summarize, v as addIssue } from './run-CRe59VaY.mjs';
5
5
  import 'os';
6
6
  import 'fs/promises';
7
7
  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-CsjEXBuS.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-DshAO_N4.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-C3TQOYUo.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.mjs');
72
72
  const { server, machine } = await connectAndGetMachine();
73
73
  try {
74
74
  const status = await machine.tunnelStart({
@@ -90,7 +90,7 @@ async function serviceExpose(args) {
90
90
  console.log(` port ${port}: ${url}`);
91
91
  }
92
92
  if (process.env.SVAMP_SESSION_ID) {
93
- const { autoAddSessionLink } = await import('./agentCommands-B_ozIVKT.mjs');
93
+ const { autoAddSessionLink } = await import('./agentCommands-Bcqo8iMs.mjs');
94
94
  let added = 0;
95
95
  for (const [port, url] of urlEntries) {
96
96
  const label = urlEntries.length > 1 ? `${name}:${port}` : name;
@@ -136,7 +136,7 @@ async function serviceServe(args) {
136
136
  };
137
137
  process.on("SIGINT", cleanup);
138
138
  process.on("SIGTERM", cleanup);
139
- const { runFrpcTunnel } = await import('./frpc-CsjEXBuS.mjs');
139
+ const { runFrpcTunnel } = await import('./frpc-DshAO_N4.mjs');
140
140
  await runFrpcTunnel(name, [caddyPort]);
141
141
  } catch (err) {
142
142
  console.error(`Error serving directory: ${err.message}`);
@@ -145,7 +145,7 @@ async function serviceServe(args) {
145
145
  }
146
146
  async function serviceList(_args) {
147
147
  try {
148
- const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
148
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.mjs');
149
149
  const { server, machine } = await connectAndGetMachine();
150
150
  try {
151
151
  const tunnels = await machine.tunnelList({});
@@ -185,7 +185,7 @@ async function serviceDelete(args) {
185
185
  process.exit(1);
186
186
  }
187
187
  try {
188
- const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
188
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.mjs');
189
189
  const { server, machine } = await connectAndGetMachine();
190
190
  try {
191
191
  await machine.tunnelStop({ name });
@@ -1,5 +1,5 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { n as resolveProjectRoot, M as workflowSteps, D as setWorkflowEnabled, I as isWorkflowEnabled, E as removeWorkflow, B as getWorkflow, H as listWorkflows, F as saveWorkflow, G as rawWorkflow } from './run-CHIppB2r.mjs';
2
+ import { n as resolveProjectRoot, M as workflowSteps, D as setWorkflowEnabled, I as isWorkflowEnabled, E as removeWorkflow, B as getWorkflow, H as listWorkflows, F as saveWorkflow, G as rawWorkflow } from './run-CRe59VaY.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
5
5
  import 'fs';
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-C3TQOYUo.mjs';
3
+ import { connectAndGetMachine } from './commands-hPm8AYNG.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-CHIppB2r.mjs';
8
+ import './run-CRe59VaY.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -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 { T as parseFrontmatter, U as getSkillsServer, V as getSkillsWorkspaceName, W as getSkillsCollectionName, X as fetchWithTimeout, Y as searchSkills, Z as SKILLS_DIR, _ as getSkillInfo, $ as downloadSkillFile, a0 as listSkillFiles } from './run-CHIppB2r.mjs';
4
+ import { T as parseFrontmatter, U as getSkillsServer, V as getSkillsWorkspaceName, W as getSkillsCollectionName, X as fetchWithTimeout, Y as searchSkills, Z as SKILLS_DIR, _ as getSkillInfo, $ as downloadSkillFile, a0 as listSkillFiles } from './run-CRe59VaY.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { basename, resolve, join, isAbsolute } from 'node:path';
4
4
  import os from 'node:os';
5
- import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, k as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-CHIppB2r.mjs';
5
+ import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, k as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-CRe59VaY.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -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-CHIppB2r.mjs';
4
+ import { c as connectToHypha } from './run-CRe59VaY.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-ivV7xAp3.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -4,7 +4,7 @@ import { mkdirSync, writeFileSync, unlinkSync, existsSync, chmodSync, readFileSy
4
4
  import { join } from 'path';
5
5
  import { homedir, platform, arch } from 'os';
6
6
  import { randomUUID, createHash } from 'crypto';
7
- import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-CHIppB2r.mjs';
7
+ import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-CRe59VaY.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
- import { a1 as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-CHIppB2r.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-Cs-kNLye.mjs';
1
+ import { a1 as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-CRe59VaY.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-CiE3Nqih.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-CHIppB2r.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-CRe59VaY.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.249";
2
+ var version = "0.2.251";
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";
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, u as updateIssue, o as getIssue, p as resumeIssue, q as pauseIssue, t as addComment, v as addIssue, w as listIssues, x as searchIssues, y as isVisibleTo } from './run-CHIppB2r.mjs';
1
+ import { n as resolveProjectRoot, u as updateIssue, o as getIssue, p as resumeIssue, q as pauseIssue, t as addComment, v as addIssue, w as listIssues, x as searchIssues, y as isVisibleTo } from './run-CRe59VaY.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, z as getRun, A as listRuns, B as getWorkflow, C as runWorkflow, D as setWorkflowEnabled, E as removeWorkflow, F as saveWorkflow, G as rawWorkflow, H as listWorkflows } from './run-CHIppB2r.mjs';
1
+ import { n as resolveProjectRoot, z as getRun, A as listRuns, B as getWorkflow, C as runWorkflow, D as setWorkflowEnabled, E as removeWorkflow, F as saveWorkflow, G as rawWorkflow, H as listWorkflows } from './run-CRe59VaY.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-CHIppB2r.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-CRe59VaY.mjs';
2
2
  import os from 'node:os';
3
3
  import { resolve, join } from 'node:path';
4
4
  import { existsSync, readFileSync, watch } from 'node:fs';
@@ -2998,7 +2998,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
2998
2998
  const tunnels = handlers.tunnels;
2999
2999
  if (!tunnels) throw new Error("Tunnel management not available");
3000
3000
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
3001
- const { FrpcTunnel } = await import('./frpc-CsjEXBuS.mjs');
3001
+ const { FrpcTunnel } = await import('./frpc-DshAO_N4.mjs');
3002
3002
  const tunnel = new FrpcTunnel({
3003
3003
  name: params.name,
3004
3004
  ports: params.ports,
@@ -3264,11 +3264,17 @@ async function registerMachineService(server, machineId, metadata, daemonState,
3264
3264
  rt.wiseUrl = WISE_URL;
3265
3265
  rt.wiseKey = WISE_KEY;
3266
3266
  }
3267
+ const wiseAutomaticLeave = {
3268
+ no_one_joined_timeout: Number(process.env.SVAMP_WISE_NO_ONE_JOINED_MS || 36e5),
3269
+ // 1h default
3270
+ max_time_left_alone: Number(process.env.SVAMP_WISE_LEFT_ALONE_MS || 6e5)
3271
+ // 10min default
3272
+ };
3267
3273
  try {
3268
3274
  const res = await fetch(`${base}/bots`, {
3269
3275
  method: "POST",
3270
3276
  headers: { "X-API-Key": key, "Content-Type": "application/json" },
3271
- body: JSON.stringify({ platform: parsed.platform, native_meeting_id: parsed.nativeId, bot_name: "WISE Agent", rt })
3277
+ body: JSON.stringify({ platform: parsed.platform, native_meeting_id: parsed.nativeId, bot_name: "WISE Agent", rt, automatic_leave: wiseAutomaticLeave })
3272
3278
  });
3273
3279
  const data = await res.json().catch(() => ({}));
3274
3280
  if (!res.ok) return { success: false, error: `meeting-api ${res.status}: ${data?.detail || data?.message || "launch failed"}` };
@@ -3449,7 +3455,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
3449
3455
  }
3450
3456
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
3451
3457
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
3452
- const { toolsForRole } = await import('./sideband-Cs-kNLye.mjs');
3458
+ const { toolsForRole } = await import('./sideband-CiE3Nqih.mjs');
3453
3459
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
3454
3460
  return fmt(r2);
3455
3461
  }
@@ -3548,7 +3554,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
3548
3554
  if (r.error || !r.sender) return { error: r.error || "unauthorized" };
3549
3555
  const callId = "call_" + Math.random().toString(16).slice(2, 12);
3550
3556
  const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
3551
- const { queryCore } = await import('./commands-C3TQOYUo.mjs');
3557
+ const { queryCore } = await import('./commands-hPm8AYNG.mjs');
3552
3558
  const timeout = c.reply?.timeout_sec || 120;
3553
3559
  let result;
3554
3560
  try {
@@ -11447,6 +11453,9 @@ function tokensInLastHour(ledger, now) {
11447
11453
  function isCostCeiling(kind) {
11448
11454
  return !!kind && kind !== "iteration";
11449
11455
  }
11456
+ function isHardBudgetStop(kind) {
11457
+ return isCostCeiling(kind) || kind === "iteration";
11458
+ }
11450
11459
  function checkLoopBudget(ledger, limits, now, startedAt) {
11451
11460
  const L = limits || {};
11452
11461
  const led = ledger || { turns: 0, tokens: 0, window: [] };
@@ -11471,6 +11480,13 @@ function checkLoopBudget(ledger, limits, now, startedAt) {
11471
11480
  }
11472
11481
  return { exceeded: false };
11473
11482
  }
11483
+ function computeSoftTurnCap(hardMax, cadence) {
11484
+ const c = Number.isFinite(cadence) && cadence >= 1 ? Math.floor(cadence) : 25;
11485
+ if (!Number.isFinite(hardMax) || hardMax <= 0 || hardMax >= UNBOUNDED_LOOP_ITERATIONS) return c;
11486
+ if (hardMax <= c) return Math.floor(hardMax);
11487
+ const chunks = Math.ceil(hardMax / c);
11488
+ return Math.ceil(hardMax / chunks);
11489
+ }
11474
11490
  const DEFAULT_LOOP_STUCK_CHECKPOINTS = 3;
11475
11491
  const DEFAULT_LOOP_MAX_AUTORESUMES = 3;
11476
11492
  const PROGRESS_HISTORY_CAP = 12;
@@ -12904,7 +12920,7 @@ function createSvampConfigChecker(directory, sessionId, getMetadata, setMetadata
12904
12920
  const explicitMax = typeof cfg.max_iterations === "number" ? cfg.max_iterations : typeof cfg.max_rounds === "number" ? cfg.max_rounds : void 0;
12905
12921
  const hasExplicitMax = typeof explicitMax === "number" && explicitMax > 0;
12906
12922
  const hardMax = hasExplicitMax ? explicitMax : DEFAULT_LOOP_MAX_ITERATIONS;
12907
- const softTurnCap = Math.min(hardMax, LOOP_CHECKPOINT_CADENCE);
12923
+ const softTurnCap = computeSoftTurnCap(hardMax, LOOP_CHECKPOINT_CADENCE);
12908
12924
  const condition = buildGoalCondition({ task, until, oracle, maxIterations: softTurnCap });
12909
12925
  const budget = parseLoopBudget(cfg.budget);
12910
12926
  try {
@@ -13364,7 +13380,7 @@ async function startDaemon(options) {
13364
13380
  try {
13365
13381
  const dir = loadSessionIndex()[sessionId]?.directory;
13366
13382
  if (!dir) return;
13367
- const { reconcileServiceLinks } = await import('./agentCommands-B_ozIVKT.mjs');
13383
+ const { reconcileServiceLinks } = await import('./agentCommands-Bcqo8iMs.mjs');
13368
13384
  const configPath = getSvampConfigPath(dir, sessionId);
13369
13385
  const config = readSvampConfig(configPath);
13370
13386
  const entries = Array.from(urls.entries());
@@ -13382,7 +13398,7 @@ async function startDaemon(options) {
13382
13398
  }
13383
13399
  }
13384
13400
  async function createExposedTunnel(spec) {
13385
- const { FrpcTunnel } = await import('./frpc-CsjEXBuS.mjs');
13401
+ const { FrpcTunnel } = await import('./frpc-DshAO_N4.mjs');
13386
13402
  const tunnel = new FrpcTunnel({
13387
13403
  name: spec.name,
13388
13404
  ports: spec.ports,
@@ -13402,7 +13418,7 @@ async function startDaemon(options) {
13402
13418
  return tunnel;
13403
13419
  }
13404
13420
  const tunnelRecreateState = /* @__PURE__ */ new Map();
13405
- const { ServeManager } = await import('./serveManager-Di3xrvG2.mjs');
13421
+ const { ServeManager } = await import('./serveManager-CL0QrW7Z.mjs');
13406
13422
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
13407
13423
  ensureAutoInstalledSkills(logger).catch(() => {
13408
13424
  });
@@ -14619,7 +14635,8 @@ ${parts.join("\n")}`);
14619
14635
  const prog = updateLoopProgress(ls, pending, now);
14620
14636
  ls.progress_history = prog.progress_history;
14621
14637
  ls.auto_resumes = prog.auto_resumes;
14622
- if (budgetCheck.exceeded && isCostCeiling(budgetCheck.kind)) {
14638
+ if (budgetCheck.exceeded && isHardBudgetStop(budgetCheck.kind)) {
14639
+ const iterStop = !isCostCeiling(budgetCheck.kind);
14623
14640
  writeGoalLoopState(directory, sessionId, {
14624
14641
  ...ls,
14625
14642
  active: false,
@@ -14630,7 +14647,8 @@ ${parts.join("\n")}`);
14630
14647
  progress_history: prog.progress_history,
14631
14648
  auto_resumes: prog.auto_resumes
14632
14649
  });
14633
- sessionService.pushMessage({ type: "message", message: `\u{1F6D1} Loop stopped \u2014 ${budgetCheck.reason} (hard cost ceiling \u2014 will not auto-resume). Resume & extend with: svamp session loop-resume ${sessionId} --max <N>`, level: "warning" }, "event");
14650
+ const detail = iterStop ? `${budgetCheck.reason} (hard iteration ceiling \u2014 will not auto-resume). Resume & extend with: svamp session loop-resume ${sessionId} --max <N>` : `${budgetCheck.reason} (hard cost ceiling \u2014 will not auto-resume). Resume & extend with: svamp session loop-resume ${sessionId} --max <N>`;
14651
+ sessionService.pushMessage({ type: "message", message: `\u{1F6D1} Loop stopped \u2014 ${detail}`, level: "warning" }, "event");
14634
14652
  checkSvampConfig?.();
14635
14653
  } else if (process.env.SVAMP_LOOP_VERIFY === "0") {
14636
14654
  writeGoalLoopState(directory, sessionId, { ...ls, active: false, phase: "done", completed_at: now, ledger, progress_history: prog.progress_history, auto_resumes: prog.auto_resumes });
@@ -15488,11 +15506,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
15488
15506
  });
15489
15507
  },
15490
15508
  onIssue: async (params) => {
15491
- const { issueRpc } = await import('./rpc-C1DI7HfZ.mjs');
15509
+ const { issueRpc } = await import('./rpc-B2BhUPgt.mjs');
15492
15510
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
15493
15511
  },
15494
15512
  onWorkflow: async (params) => {
15495
- const { workflowRpc } = await import('./rpc-BGFgegj5.mjs');
15513
+ const { workflowRpc } = await import('./rpc-CtfcD14b.mjs');
15496
15514
  return workflowRpc(params?.cwd || directory, params || {});
15497
15515
  },
15498
15516
  onRipgrep: async (args, cwd) => {
@@ -16028,11 +16046,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16028
16046
  });
16029
16047
  },
16030
16048
  onIssue: async (params) => {
16031
- const { issueRpc } = await import('./rpc-C1DI7HfZ.mjs');
16049
+ const { issueRpc } = await import('./rpc-B2BhUPgt.mjs');
16032
16050
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
16033
16051
  },
16034
16052
  onWorkflow: async (params) => {
16035
- const { workflowRpc } = await import('./rpc-BGFgegj5.mjs');
16053
+ const { workflowRpc } = await import('./rpc-CtfcD14b.mjs');
16036
16054
  return workflowRpc(params?.cwd || directory, params || {});
16037
16055
  },
16038
16056
  onRipgrep: async (args, cwd) => {
@@ -16250,9 +16268,10 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16250
16268
  const acpProg = updateLoopProgress(ls, acpPending, now);
16251
16269
  ls.progress_history = acpProg.progress_history;
16252
16270
  ls.auto_resumes = acpProg.auto_resumes;
16253
- if (budgetCheck.exceeded && isCostCeiling(budgetCheck.kind)) {
16271
+ if (budgetCheck.exceeded && isHardBudgetStop(budgetCheck.kind)) {
16272
+ const iterStop = !isCostCeiling(budgetCheck.kind);
16254
16273
  writeGoalLoopState(directory, sessionId, { ...ls, active: false, phase: "gave_up", completed_at: now, gave_up_reason: `resource budget exhausted \u2014 ${budgetCheck.reason}`, ledger });
16255
- sessionService.pushMessage({ type: "message", message: `\u{1F6D1} Loop stopped \u2014 ${budgetCheck.reason} (hard cost ceiling \u2014 will not auto-resume). Resume & extend with: svamp session loop-resume ${sessionId} --max <N>`, level: "warning" }, "event");
16274
+ sessionService.pushMessage({ type: "message", message: `\u{1F6D1} Loop stopped \u2014 ${budgetCheck.reason} (hard ${iterStop ? "iteration ceiling" : "cost ceiling"} \u2014 will not auto-resume). Resume & extend with: svamp session loop-resume ${sessionId} --max <N>`, level: "warning" }, "event");
16256
16275
  checkSvampConfig?.();
16257
16276
  return;
16258
16277
  }
@@ -16990,7 +17009,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
16990
17009
  const PING_TIMEOUT_MS = 15e3;
16991
17010
  const POST_RECONNECT_GRACE_MS = 2e4;
16992
17011
  const RECONNECT_JITTER_MS = 2500;
16993
- const { WorkflowScheduler } = await import('./scheduler-Csp21zzg.mjs');
17012
+ const { WorkflowScheduler } = await import('./scheduler-CW_l0_B6.mjs');
16994
17013
  const workflowScheduler = new WorkflowScheduler({
16995
17014
  projectRoots: () => {
16996
17015
  const dirs = /* @__PURE__ */ new Set();
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, H as listWorkflows, I as isWorkflowEnabled, J as workflowCrons, C as runWorkflow, K as cronMatches } from './run-CHIppB2r.mjs';
1
+ import { n as resolveProjectRoot, H as listWorkflows, I as isWorkflowEnabled, J as workflowCrons, C as runWorkflow, K as cronMatches } from './run-CRe59VaY.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.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-C3TQOYUo.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.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-C3TQOYUo.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.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-C3TQOYUo.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.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-C3TQOYUo.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-hPm8AYNG.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 { l as getHyphaServerUrl, S as ServeAuth, m as hasCookieToken } from './run-CHIppB2r.mjs';
7
+ import { l as getHyphaServerUrl, S as ServeAuth, m as hasCookieToken } from './run-CRe59VaY.mjs';
8
8
  import 'os';
9
9
  import 'fs/promises';
10
10
  import 'url';
@@ -751,7 +751,7 @@ class ServeManager {
751
751
  const mount = this.mounts.get(mountName);
752
752
  const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
753
753
  try {
754
- const { FrpcTunnel } = await import('./frpc-CsjEXBuS.mjs');
754
+ const { FrpcTunnel } = await import('./frpc-DshAO_N4.mjs');
755
755
  let tunnel;
756
756
  tunnel = new FrpcTunnel({
757
757
  name: tunnelName,
@@ -1,4 +1,4 @@
1
- import { R as READ_ONLY_TOOLS, N as loadMachineContext, O as buildMachineInstructions, P as machineToolsForRole, Q as buildMachineTools } from './run-CHIppB2r.mjs';
1
+ import { R as READ_ONLY_TOOLS, N as loadMachineContext, O as buildMachineInstructions, P as machineToolsForRole, Q as buildMachineTools } from './run-CRe59VaY.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.249",
3
+ "version": "0.2.251",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",