svamp-cli 0.2.89 → 0.2.91

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-DY1ciMPa.mjs');
151
+ const { connectAndGetMachine } = await import('./commands-kGkSBEMq.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-DY1ciMPa.mjs');
168
+ const { resolveSessionId } = await import('./commands-kGkSBEMq.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 { z as resolveModel } from './run-C4i9N-F6.mjs';
1
+ import { z as resolveModel } from './run-DWr_h85y.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -7,12 +7,13 @@ import 'url';
7
7
  import 'child_process';
8
8
  import 'crypto';
9
9
  import 'node:fs';
10
+ import 'node:vm';
11
+ import 'node:child_process';
12
+ import 'ws';
10
13
  import 'util';
11
14
  import 'node:crypto';
12
15
  import 'node:path';
13
16
  import 'node:os';
14
- import 'node:vm';
15
- import 'node:child_process';
16
17
  import '@agentclientprotocol/sdk';
17
18
  import '@modelcontextprotocol/sdk/client/index.js';
18
19
  import '@modelcontextprotocol/sdk/client/stdio.js';
@@ -29,6 +30,10 @@ function buildWiseAgentEnvUpdates(action) {
29
30
  return { WISE_AGENT_PROVIDER: "hypha-proxy", ...action.url ? { SVAMP_HYPHA_PROXY_URL: action.url } : {} };
30
31
  case "use-claude-haiku":
31
32
  return { WISE_AGENT_PROVIDER: "claude-haiku", WISE_AGENT_MODEL: void 0, ...action.url ? { SVAMP_HYPHA_PROXY_URL: action.url } : {} };
33
+ case "set":
34
+ return { WISE_AGENT_PROVIDER: "openai", WISE_AGENT_BASE_URL: action.url, WISE_AGENT_API_KEY: action.key };
35
+ case "set-key":
36
+ return { WISE_AGENT_API_KEY: action.key };
32
37
  case "set-model":
33
38
  return { WISE_AGENT_MODEL: action.model };
34
39
  case "set-base-url":
@@ -59,6 +64,12 @@ function parseWiseAgentAuthArgs(args) {
59
64
  return { kind: "use-hypha-proxy", url: rest[0] };
60
65
  case "use-claude-haiku":
61
66
  return { kind: "use-claude-haiku", url: rest[0] };
67
+ case "set":
68
+ if (!rest[0] || !rest[1]) throw new Error("Usage: svamp wise-agent auth set <BASE_URL> <KEY>");
69
+ return { kind: "set", url: rest[0], key: rest[1] };
70
+ case "set-key":
71
+ if (!rest[0]) throw new Error("Usage: svamp wise-agent auth set-key <KEY>");
72
+ return { kind: "set-key", key: rest[0] };
62
73
  case "set-model":
63
74
  if (!rest[0]) throw new Error("Usage: svamp wise-agent auth set-model <model>");
64
75
  return { kind: "set-model", model: rest[0] };
@@ -66,7 +77,7 @@ function parseWiseAgentAuthArgs(args) {
66
77
  if (!rest[0]) throw new Error("Usage: svamp wise-agent auth set-base-url <url>");
67
78
  return { kind: "set-base-url", url: rest[0] };
68
79
  default:
69
- throw new Error(`Unknown wise-agent auth command "${sub}". Try: status | use-openai [KEY] | use-hypha-proxy [URL] | use-claude-haiku [URL] | set-model <m> | set-base-url <url>`);
80
+ throw new Error(`Unknown wise-agent auth command "${sub}". Try: status | use-openai [KEY] | use-hypha-proxy [URL] | use-claude-haiku [URL] | set <URL> <KEY> | set-key <KEY> | set-model <m> | set-base-url <url>`);
70
81
  }
71
82
  }
72
83
 
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-C4i9N-F6.mjs';
1
+ import { e as clearStopMarker, f as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-DWr_h85y.mjs';
2
2
  import { ensureSupervisorViaServiceManager, LAUNCHD_LABEL } from './serviceManager-hlOVxkhW.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
@@ -8,12 +8,13 @@ import 'url';
8
8
  import 'child_process';
9
9
  import 'crypto';
10
10
  import 'node:fs';
11
+ import 'node:vm';
12
+ import 'node:child_process';
13
+ import 'ws';
11
14
  import 'util';
12
15
  import 'node:crypto';
13
16
  import 'node:path';
14
17
  import 'node:os';
15
- import 'node:vm';
16
- import 'node:child_process';
17
18
  import '@agentclientprotocol/sdk';
18
19
  import '@modelcontextprotocol/sdk/client/index.js';
19
20
  import '@modelcontextprotocol/sdk/client/stdio.js';
@@ -34,7 +35,7 @@ const subcommand = args[0];
34
35
  let daemonSubcommand = args[1];
35
36
  async function main() {
36
37
  try {
37
- const { getLoadedConfig } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.O; });
38
+ const { getLoadedConfig } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.P; });
38
39
  getLoadedConfig();
39
40
  } catch {
40
41
  }
@@ -51,7 +52,7 @@ async function main() {
51
52
  console.error(`svamp daemon restart: ${err.message || err}`);
52
53
  process.exit(1);
53
54
  }
54
- const { restartDaemon } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.Q; });
55
+ const { restartDaemon } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.T; });
55
56
  await restartDaemon();
56
57
  process.exit(0);
57
58
  }
@@ -344,7 +345,7 @@ async function main() {
344
345
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
345
346
  process.exit(1);
346
347
  }
347
- const { handleServiceCommand } = await import('./commands-25hlQVK5.mjs');
348
+ const { handleServiceCommand } = await import('./commands-B9ssOqX0.mjs');
348
349
  await handleServiceCommand();
349
350
  } else if (subcommand === "serve") {
350
351
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -352,7 +353,7 @@ async function main() {
352
353
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
353
354
  process.exit(1);
354
355
  }
355
- const { handleServeCommand } = await import('./serveCommands-B2brwRfz.mjs');
356
+ const { handleServeCommand } = await import('./serveCommands-Js_HSnLs.mjs');
356
357
  await handleServeCommand();
357
358
  process.exit(0);
358
359
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -361,7 +362,7 @@ async function main() {
361
362
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
362
363
  process.exit(1);
363
364
  }
364
- const { processCommand } = await import('./commands-CVPCcCqU.mjs');
365
+ const { processCommand } = await import('./commands-C6HpuYOB.mjs');
365
366
  let machineId;
366
367
  const processArgs = args.slice(1);
367
368
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -375,7 +376,7 @@ async function main() {
375
376
  }), machineId);
376
377
  process.exit(0);
377
378
  } else if (subcommand === "routine" || subcommand === "routines") {
378
- const { routineCommand } = await import('./commands-CA-A0G2y.mjs');
379
+ const { routineCommand } = await import('./commands-DemyBiUh.mjs');
379
380
  await routineCommand(args.slice(1));
380
381
  process.exit(0);
381
382
  } else if (subcommand === "wise-agent" || subcommand === "wise") {
@@ -386,7 +387,7 @@ async function main() {
386
387
  } else if (!subcommand || subcommand === "start") {
387
388
  await handleInteractiveCommand();
388
389
  } else if (subcommand === "--version" || subcommand === "-v") {
389
- const pkg = await import('./package-jHkQchZL.mjs').catch(() => ({ default: { version: "unknown" } }));
390
+ const pkg = await import('./package-GxcmHBEB.mjs').catch(() => ({ default: { version: "unknown" } }));
390
391
  console.log(`svamp version: ${pkg.default.version}`);
391
392
  } else {
392
393
  console.error(`Unknown command: ${subcommand}`);
@@ -395,7 +396,7 @@ async function main() {
395
396
  }
396
397
  }
397
398
  async function handleInteractiveCommand() {
398
- const { runInteractive } = await import('./run-DLtX5Yom.mjs');
399
+ const { runInteractive } = await import('./run-YihZemmc.mjs');
399
400
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
400
401
  let directory = process.cwd();
401
402
  let resumeSessionId;
@@ -440,7 +441,7 @@ async function handleAgentCommand() {
440
441
  return;
441
442
  }
442
443
  if (agentArgs[0] === "list") {
443
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.K; });
444
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.L; });
444
445
  console.log("Known agents:");
445
446
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
446
447
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -452,7 +453,7 @@ async function handleAgentCommand() {
452
453
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
453
454
  return;
454
455
  }
455
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.K; });
456
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.L; });
456
457
  let cwd = process.cwd();
457
458
  const filteredArgs = [];
458
459
  for (let i = 0; i < agentArgs.length; i++) {
@@ -476,12 +477,12 @@ async function handleAgentCommand() {
476
477
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
477
478
  let backend;
478
479
  if (KNOWN_MCP_AGENTS[config.agentName]) {
479
- const { CodexMcpBackend } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.L; });
480
+ const { CodexMcpBackend } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.M; });
480
481
  backend = new CodexMcpBackend({ cwd, log: logFn });
481
482
  } else {
482
- const { AcpBackend } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.J; });
483
- const { GeminiTransport } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.M; });
484
- const { DefaultTransport } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.I; });
483
+ const { AcpBackend } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.K; });
484
+ const { GeminiTransport } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.N; });
485
+ const { DefaultTransport } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.J; });
485
486
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
486
487
  backend = new AcpBackend({
487
488
  agentName: config.agentName,
@@ -608,7 +609,7 @@ async function handleSessionCommand() {
608
609
  process.exit(1);
609
610
  }
610
611
  }
611
- const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-DY1ciMPa.mjs');
612
+ const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-kGkSBEMq.mjs');
612
613
  const parseFlagStr = (flag, shortFlag) => {
613
614
  for (let i = 1; i < sessionArgs.length; i++) {
614
615
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -676,7 +677,7 @@ async function handleSessionCommand() {
676
677
  allowDomain.push(sessionArgs[++i]);
677
678
  }
678
679
  }
679
- const { parseShareArg } = await import('./commands-DY1ciMPa.mjs');
680
+ const { parseShareArg } = await import('./commands-kGkSBEMq.mjs');
680
681
  const shareEntries = share.map((s) => parseShareArg(s));
681
682
  await sessionSpawn(agent, dir, targetMachineId, {
682
683
  message,
@@ -763,7 +764,7 @@ async function handleSessionCommand() {
763
764
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
764
765
  process.exit(1);
765
766
  }
766
- const { sessionQuery } = await import('./commands-DY1ciMPa.mjs');
767
+ const { sessionQuery } = await import('./commands-kGkSBEMq.mjs');
767
768
  await sessionQuery(dir, prompt, targetMachineId, {
768
769
  timeout: parseFlagInt("--timeout"),
769
770
  json: hasFlag("--json"),
@@ -796,7 +797,7 @@ async function handleSessionCommand() {
796
797
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
797
798
  process.exit(1);
798
799
  }
799
- const { sessionApprove } = await import('./commands-DY1ciMPa.mjs');
800
+ const { sessionApprove } = await import('./commands-kGkSBEMq.mjs');
800
801
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
801
802
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
802
803
  json: hasFlag("--json")
@@ -806,7 +807,7 @@ async function handleSessionCommand() {
806
807
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
807
808
  process.exit(1);
808
809
  }
809
- const { sessionDeny } = await import('./commands-DY1ciMPa.mjs');
810
+ const { sessionDeny } = await import('./commands-kGkSBEMq.mjs');
810
811
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
811
812
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
812
813
  json: hasFlag("--json")
@@ -842,7 +843,7 @@ async function handleSessionCommand() {
842
843
  console.error("Usage: svamp session set-title <title>");
843
844
  process.exit(1);
844
845
  }
845
- const { sessionSetTitle } = await import('./agentCommands-7zzJYIzN.mjs');
846
+ const { sessionSetTitle } = await import('./agentCommands-Cq5-Dj_E.mjs');
846
847
  await sessionSetTitle(title);
847
848
  } else if (sessionSubcommand === "set-link") {
848
849
  const url = sessionArgs[1];
@@ -851,7 +852,7 @@ async function handleSessionCommand() {
851
852
  process.exit(1);
852
853
  }
853
854
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
854
- const { sessionSetLink } = await import('./agentCommands-7zzJYIzN.mjs');
855
+ const { sessionSetLink } = await import('./agentCommands-Cq5-Dj_E.mjs');
855
856
  await sessionSetLink(url, label);
856
857
  } else if (sessionSubcommand === "notify") {
857
858
  const message = sessionArgs[1];
@@ -860,7 +861,7 @@ async function handleSessionCommand() {
860
861
  process.exit(1);
861
862
  }
862
863
  const level = parseFlagStr("--level") || "info";
863
- const { sessionNotify } = await import('./agentCommands-7zzJYIzN.mjs');
864
+ const { sessionNotify } = await import('./agentCommands-Cq5-Dj_E.mjs');
864
865
  await sessionNotify(message, level);
865
866
  } else if (sessionSubcommand === "broadcast") {
866
867
  const action = sessionArgs[1];
@@ -868,7 +869,7 @@ async function handleSessionCommand() {
868
869
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
869
870
  process.exit(1);
870
871
  }
871
- const { sessionBroadcast } = await import('./agentCommands-7zzJYIzN.mjs');
872
+ const { sessionBroadcast } = await import('./agentCommands-Cq5-Dj_E.mjs');
872
873
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
873
874
  } else if (sessionSubcommand === "inbox") {
874
875
  const inboxSubcmd = sessionArgs[1];
@@ -879,7 +880,7 @@ async function handleSessionCommand() {
879
880
  process.exit(1);
880
881
  }
881
882
  if (agentSessionId) {
882
- const { inboxSend } = await import('./agentCommands-7zzJYIzN.mjs');
883
+ const { inboxSend } = await import('./agentCommands-Cq5-Dj_E.mjs');
883
884
  await inboxSend(sessionArgs[2], {
884
885
  body: sessionArgs[3],
885
886
  subject: parseFlagStr("--subject"),
@@ -894,7 +895,7 @@ async function handleSessionCommand() {
894
895
  }
895
896
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
896
897
  if (agentSessionId && !sessionArgs[2]) {
897
- const { inboxList } = await import('./agentCommands-7zzJYIzN.mjs');
898
+ const { inboxList } = await import('./agentCommands-Cq5-Dj_E.mjs');
898
899
  await inboxList({
899
900
  unread: hasFlag("--unread"),
900
901
  limit: parseFlagInt("--limit"),
@@ -916,7 +917,7 @@ async function handleSessionCommand() {
916
917
  process.exit(1);
917
918
  }
918
919
  if (agentSessionId && !sessionArgs[3]) {
919
- const { inboxList } = await import('./agentCommands-7zzJYIzN.mjs');
920
+ const { inboxList } = await import('./agentCommands-Cq5-Dj_E.mjs');
920
921
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
921
922
  } else if (sessionArgs[3]) {
922
923
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -926,7 +927,7 @@ async function handleSessionCommand() {
926
927
  }
927
928
  } else if (inboxSubcmd === "reply") {
928
929
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
929
- const { inboxReply } = await import('./agentCommands-7zzJYIzN.mjs');
930
+ const { inboxReply } = await import('./agentCommands-Cq5-Dj_E.mjs');
930
931
  await inboxReply(sessionArgs[2], sessionArgs[3]);
931
932
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
932
933
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -962,7 +963,7 @@ async function handleMachineCommand() {
962
963
  return;
963
964
  }
964
965
  if (machineSubcommand === "share") {
965
- const { machineShare } = await import('./commands-DY1ciMPa.mjs');
966
+ const { machineShare } = await import('./commands-kGkSBEMq.mjs');
966
967
  let machineId;
967
968
  const shareArgs = [];
968
969
  for (let i = 1; i < machineArgs.length; i++) {
@@ -992,7 +993,7 @@ async function handleMachineCommand() {
992
993
  }
993
994
  await machineShare(machineId, { add, remove, list, configPath, showConfig });
994
995
  } else if (machineSubcommand === "exec") {
995
- const { machineExec } = await import('./commands-DY1ciMPa.mjs');
996
+ const { machineExec } = await import('./commands-kGkSBEMq.mjs');
996
997
  let machineId;
997
998
  let cwd;
998
999
  const cmdParts = [];
@@ -1012,7 +1013,7 @@ async function handleMachineCommand() {
1012
1013
  }
1013
1014
  await machineExec(machineId, command, cwd);
1014
1015
  } else if (machineSubcommand === "info") {
1015
- const { machineInfo } = await import('./commands-DY1ciMPa.mjs');
1016
+ const { machineInfo } = await import('./commands-kGkSBEMq.mjs');
1016
1017
  let machineId;
1017
1018
  for (let i = 1; i < machineArgs.length; i++) {
1018
1019
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -1032,10 +1033,10 @@ async function handleMachineCommand() {
1032
1033
  level = machineArgs[++i];
1033
1034
  }
1034
1035
  }
1035
- const { machineNotify } = await import('./agentCommands-7zzJYIzN.mjs');
1036
+ const { machineNotify } = await import('./agentCommands-Cq5-Dj_E.mjs');
1036
1037
  await machineNotify(message, level);
1037
1038
  } else if (machineSubcommand === "ls") {
1038
- const { machineLs } = await import('./commands-DY1ciMPa.mjs');
1039
+ const { machineLs } = await import('./commands-kGkSBEMq.mjs');
1039
1040
  let machineId;
1040
1041
  let showHidden = false;
1041
1042
  let path;
@@ -1093,24 +1094,24 @@ Examples:
1093
1094
  };
1094
1095
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1095
1096
  if (sub === "status") {
1096
- const { fleetStatus } = await import('./fleet-B_HW0j1E.mjs');
1097
+ const { fleetStatus } = await import('./fleet-DRQS1weD.mjs');
1097
1098
  await fleetStatus();
1098
1099
  } else if (sub === "exec") {
1099
1100
  const command = fleetArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1100
- const { fleetExec } = await import('./fleet-B_HW0j1E.mjs');
1101
+ const { fleetExec } = await import('./fleet-DRQS1weD.mjs');
1101
1102
  await fleetExec(command, { cwd: flag("cwd") });
1102
1103
  } else if (sub === "upgrade-claude") {
1103
- const { fleetUpgradeClaude } = await import('./fleet-B_HW0j1E.mjs');
1104
+ const { fleetUpgradeClaude } = await import('./fleet-DRQS1weD.mjs');
1104
1105
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1105
1106
  } else if (sub === "upgrade-svamp") {
1106
- const { fleetUpgradeSvamp } = await import('./fleet-B_HW0j1E.mjs');
1107
+ const { fleetUpgradeSvamp } = await import('./fleet-DRQS1weD.mjs');
1107
1108
  await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self") });
1108
1109
  } else if (sub === "daemon-restart") {
1109
- const { fleetDaemonRestart } = await import('./fleet-B_HW0j1E.mjs');
1110
+ const { fleetDaemonRestart } = await import('./fleet-DRQS1weD.mjs');
1110
1111
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1111
1112
  } else if (sub === "push-skill") {
1112
1113
  const name = fleetArgs[1];
1113
- const { fleetPushSkill } = await import('./fleet-B_HW0j1E.mjs');
1114
+ const { fleetPushSkill } = await import('./fleet-DRQS1weD.mjs');
1114
1115
  await fleetPushSkill(name);
1115
1116
  } else {
1116
1117
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1126,7 +1127,7 @@ async function handleSkillsCommand() {
1126
1127
  await printSkillsHelp();
1127
1128
  return;
1128
1129
  }
1129
- const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-BIsNPVCT.mjs');
1130
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-LfAaLGbG.mjs');
1130
1131
  if (skillsSubcommand === "find" || skillsSubcommand === "search") {
1131
1132
  const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1132
1133
  if (!query) {
@@ -1173,7 +1174,7 @@ async function loginToHypha() {
1173
1174
  process.exit(1);
1174
1175
  }
1175
1176
  const anchor = anchorArg.replace(/\/+$/, "");
1176
- const { loadInstanceConfig } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.O; });
1177
+ const { loadInstanceConfig } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.P; });
1177
1178
  let cfg = null;
1178
1179
  try {
1179
1180
  cfg = await loadInstanceConfig({ anchor, force: true });
@@ -1284,7 +1285,7 @@ async function logoutFromHypha() {
1284
1285
  } catch {
1285
1286
  }
1286
1287
  try {
1287
- const { clearInstanceConfigCache } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.O; });
1288
+ const { clearInstanceConfigCache } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.P; });
1288
1289
  clearInstanceConfigCache();
1289
1290
  } catch {
1290
1291
  }
@@ -1530,7 +1531,7 @@ Commands:
1530
1531
 
1531
1532
  Session management (requires daemon running):
1532
1533
  svamp session spawn <agent> [opts] Spawn a new agent session (agents: claude, gemini, codex)
1533
- svamp session send <id> <message> Send message to a session (--wait, --response, --btw)
1534
+ svamp session send <id> <message> Send message to a session (non-urgent by default; --wait/--response/--urgency urgent to wake)
1534
1535
  svamp session query <dir> <prompt> Stateless one-shot: spawn \u2192 ask \u2192 answer \u2192 delete
1535
1536
  svamp session wait <id> Wait for agent to become idle
1536
1537
  svamp session messages <id> Show message history (--last N, --json, --raw)
@@ -1615,7 +1616,7 @@ async function applyClaudeAuthFlags(argv) {
1615
1616
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1616
1617
  );
1617
1618
  }
1618
- const mod = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.N; });
1619
+ const mod = await import('./run-DWr_h85y.mjs').then(function (n) { return n.O; });
1619
1620
  if (hasHypha) {
1620
1621
  let url;
1621
1622
  const hyphaIdx = argv.indexOf("--use-hypha-proxy");
@@ -1669,7 +1670,7 @@ async function applyDaemonShareFlag(argv) {
1669
1670
  }
1670
1671
  }
1671
1672
  if (collected.length === 0) return;
1672
- const { updateEnvFile } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.N; });
1673
+ const { updateEnvFile } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.O; });
1673
1674
  const seen = /* @__PURE__ */ new Set();
1674
1675
  const deduped = collected.filter((e) => {
1675
1676
  const k = e.toLowerCase();
@@ -1682,8 +1683,37 @@ async function applyDaemonShareFlag(argv) {
1682
1683
  }
1683
1684
  async function handleWiseAgentCommand(rest) {
1684
1685
  const sub = rest[0];
1686
+ if (sub === "ask") {
1687
+ const valueOf = (flags) => {
1688
+ for (const f of flags) {
1689
+ const i = rest.indexOf(f);
1690
+ if (i >= 0 && rest[i + 1]) return rest[i + 1];
1691
+ }
1692
+ return void 0;
1693
+ };
1694
+ const sessionId = valueOf(["--session", "-s"]);
1695
+ const machineId = valueOf(["--machine", "-m"]);
1696
+ const json = rest.includes("--json");
1697
+ const consumed = /* @__PURE__ */ new Set();
1698
+ ["--session", "-s", "--machine", "-m"].forEach((f) => {
1699
+ const i = rest.indexOf(f);
1700
+ if (i >= 0) {
1701
+ consumed.add(String(i));
1702
+ consumed.add(String(i + 1));
1703
+ }
1704
+ });
1705
+ 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(" ");
1706
+ const { wiseAskCli } = await import('./commands-kGkSBEMq.mjs');
1707
+ await wiseAskCli(machineId, message, sessionId, { json });
1708
+ return;
1709
+ }
1685
1710
  if (sub === "--help" || sub === "-h") {
1686
- console.log(`Usage: svamp wise-agent auth <command>
1711
+ console.log(`Usage:
1712
+ svamp wise ask "<message>" [--session <id>] [-m <machine>] [--json]
1713
+ Fast WISE turn \u2014 GLOBAL machine-manager by default (daemon status, run
1714
+ commands, inspect/spawn/drive any session); --session <id> scopes to one.
1715
+
1716
+ svamp wise-agent auth <command>
1687
1717
 
1688
1718
  Configure the server-side WISE Agent's fast model (text companion to the deep agent).
1689
1719
 
@@ -1691,10 +1721,17 @@ Configure the server-side WISE Agent's fast model (text companion to the deep ag
1691
1721
  use-openai [KEY] Route via OpenAI (default provider). Optional API key.
1692
1722
  use-hypha-proxy [URL] Route via the Hypha LLM proxy (quota-governed).
1693
1723
  use-claude-haiku [URL] Fallback: Claude Haiku via the proxy (no OpenAI key).
1724
+ set <BASE_URL> <KEY> Custom OpenAI-compatible gateway: base URL + key together.
1725
+ set-key <KEY> Set just the API key.
1694
1726
  set-model <model> Override the model id (e.g. gpt-5-mini).
1695
1727
  set-base-url <url> Override the OpenAI-compatible base URL.
1696
1728
 
1697
- Persisted to ~/.svamp/.env. Run \`svamp daemon restart\` afterwards to apply.`);
1729
+ Env equivalents (read from ~/.svamp/.env or the daemon's environment):
1730
+ OPENAI_API_KEY / WISE_AGENT_API_KEY \xB7 OPENAI_BASE_URL / WISE_AGENT_BASE_URL
1731
+ WISE_AGENT_PROVIDER \xB7 WISE_AGENT_MODEL \xB7 SVAMP_HYPHA_PROXY_URL \xB7 HYPHA_TOKEN
1732
+
1733
+ Persisted to ~/.svamp/.env. Run \`svamp daemon restart\` afterwards to apply.
1734
+ If none is set, hitting a WISE Agent channel returns a clear "not configured" error.`);
1698
1735
  return;
1699
1736
  }
1700
1737
  if (rest[0] && rest[0] !== "auth") {
@@ -1703,7 +1740,7 @@ Persisted to ~/.svamp/.env. Run \`svamp daemon restart\` afterwards to apply.`);
1703
1740
  return;
1704
1741
  }
1705
1742
  const authArgs = rest.slice(1);
1706
- const mod = await import('./auth-BRm_dfqc.mjs');
1743
+ const mod = await import('./auth-DPhc_hNc.mjs');
1707
1744
  let action;
1708
1745
  try {
1709
1746
  action = mod.parseWiseAgentAuthArgs(authArgs);
@@ -1713,7 +1750,7 @@ Persisted to ~/.svamp/.env. Run \`svamp daemon restart\` afterwards to apply.`);
1713
1750
  return;
1714
1751
  }
1715
1752
  if (action) {
1716
- const { updateEnvFile } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.N; });
1753
+ const { updateEnvFile } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.O; });
1717
1754
  const updates = mod.buildWiseAgentEnvUpdates(action);
1718
1755
  updateEnvFile(updates);
1719
1756
  for (const [k, v] of Object.entries(updates)) {
@@ -1727,7 +1764,7 @@ Persisted to ~/.svamp/.env. Run \`svamp daemon restart\` afterwards to apply.`);
1727
1764
  }
1728
1765
  async function handleDaemonAuthCommand(argv) {
1729
1766
  const sub = (argv[0] || "status").toLowerCase();
1730
- const mod = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.N; });
1767
+ const mod = await import('./run-DWr_h85y.mjs').then(function (n) { return n.O; });
1731
1768
  if (sub === "--help" || sub === "-h" || sub === "help") {
1732
1769
  console.log(`
1733
1770
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -1841,8 +1878,14 @@ COMMANDS:
1841
1878
  same-user sessions on other machines, and how to reach them (alias: env)
1842
1879
 
1843
1880
  Communicate:
1844
- send <id> <message> [--wait] [--response] [--btw] [--require-approval] [--timeout N] [--json]
1881
+ send <id> <message> [--wait] [--response] [--btw] [--require-approval] [--timeout N] [--json] [--urgency urgent|normal]
1845
1882
  Send a message to a running session.
1883
+ By default this is NON-URGENT: it lands in the peer's
1884
+ inbox and is processed on their next idle turn (it does
1885
+ NOT interrupt them). Use --wait/--response (synchronous)
1886
+ or --urgency urgent to wake the agent immediately. Loop
1887
+ safeguard: a send issued from a turn that was itself
1888
+ triggered by an inbox message is always non-urgent.
1846
1889
  --wait block until the agent goes idle
1847
1890
  --response block AND print the agent's
1848
1891
  text answer (implies --wait)
@@ -2024,7 +2067,7 @@ Examples:
2024
2067
  async function printSkillsHelp() {
2025
2068
  let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
2026
2069
  try {
2027
- const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-C4i9N-F6.mjs').then(function (n) { return n.P; });
2070
+ const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-DWr_h85y.mjs').then(function (n) { return n.Q; });
2028
2071
  browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
2029
2072
  } catch {
2030
2073
  }
@@ -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-BiazjxzU.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-BBNWJChC.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-DY1ciMPa.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-kGkSBEMq.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-BiazjxzU.mjs');
126
+ const { runFrpcTunnel } = await import('./frpc-BBNWJChC.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-DY1ciMPa.mjs');
135
+ const { connectAndGetMachine } = await import('./commands-kGkSBEMq.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-DY1ciMPa.mjs');
164
+ const { connectAndGetMachine } = await import('./commands-kGkSBEMq.mjs');
165
165
  const { server, machine } = await connectAndGetMachine();
166
166
  try {
167
167
  await machine.tunnelStop({ name });
@@ -1,19 +1,20 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-DY1ciMPa.mjs';
3
+ import { connectAndGetMachine } from './commands-kGkSBEMq.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-C4i9N-F6.mjs';
8
+ import './run-DWr_h85y.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
12
12
  import 'child_process';
13
13
  import 'crypto';
14
+ import 'node:vm';
15
+ import 'ws';
14
16
  import 'util';
15
17
  import 'node:crypto';
16
- import 'node:vm';
17
18
  import '@agentclientprotocol/sdk';
18
19
  import '@modelcontextprotocol/sdk/client/index.js';
19
20
  import '@modelcontextprotocol/sdk/client/stdio.js';
@@ -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-C4i9N-F6.mjs';
3
+ import { R as RoutineStore, m as RoutineRunner } from './run-DWr_h85y.mjs';
4
4
  import 'os';
5
5
  import 'fs/promises';
6
6
  import 'fs';
@@ -9,11 +9,12 @@ import 'url';
9
9
  import 'child_process';
10
10
  import 'crypto';
11
11
  import 'node:fs';
12
+ import 'node:vm';
13
+ import 'ws';
12
14
  import 'util';
13
15
  import 'node:crypto';
14
16
  import 'node:path';
15
17
  import 'node:os';
16
- import 'node:vm';
17
18
  import '@agentclientprotocol/sdk';
18
19
  import '@modelcontextprotocol/sdk/client/index.js';
19
20
  import '@modelcontextprotocol/sdk/client/stdio.js';
@@ -1,18 +1,19 @@
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-C4i9N-F6.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-DWr_h85y.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
8
8
  import 'crypto';
9
9
  import 'node:fs';
10
+ import 'node:vm';
11
+ import 'node:child_process';
12
+ import 'ws';
10
13
  import 'util';
11
14
  import 'node:crypto';
12
15
  import 'node:path';
13
16
  import 'node:os';
14
- import 'node:vm';
15
- import 'node:child_process';
16
17
  import '@agentclientprotocol/sdk';
17
18
  import '@modelcontextprotocol/sdk/client/index.js';
18
19
  import '@modelcontextprotocol/sdk/client/stdio.js';