svamp-cli 0.2.290 → 0.2.291

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 (27) hide show
  1. package/dist/{adminCommands-BVvpkVsG.mjs → adminCommands-DuA0IQ8B.mjs} +1 -1
  2. package/dist/{agentCommands-fY4keaFA.mjs → agentCommands-CoPsnzwK.mjs} +5 -5
  3. package/dist/{auth-SR7v-8nf.mjs → auth-Dj_Pcii4.mjs} +1 -1
  4. package/dist/{cli-Re14H3q0.mjs → cli-CuzIOUig.mjs} +69 -69
  5. package/dist/cli.mjs +2 -2
  6. package/dist/{commands-Dc9t_OeY.mjs → commands-B-VYM4sA.mjs} +1 -1
  7. package/dist/{commands-CIyv2Qt-.mjs → commands-B9puiDBS.mjs} +79 -8
  8. package/dist/{commands-BC-T6wDo.mjs → commands-Bfgme-kK.mjs} +2 -2
  9. package/dist/{commands-Dwf-ntY-.mjs → commands-Cx8mEjjt.mjs} +2 -2
  10. package/dist/{commands-Bv5EcsN_.mjs → commands-DSI9ZUTG.mjs} +1 -1
  11. package/dist/{commands-CBsV6z9K.mjs → commands-DwQIShcm.mjs} +2 -2
  12. package/dist/{commands-zagci6-n.mjs → commands-eBqn9KgI.mjs} +1 -1
  13. package/dist/{commands-Dd-6WXYJ.mjs → commands-kahqMkYE.mjs} +7 -7
  14. package/dist/{fleet-DlRlerEG.mjs → fleet-CqbZhBG2.mjs} +1 -1
  15. package/dist/{frpc-B8zTErxt.mjs → frpc-BeGCyERl.mjs} +1 -1
  16. package/dist/{headlessCli-D22LyDyO.mjs → headlessCli-CJiHG0gu.mjs} +2 -2
  17. package/dist/index.mjs +1 -1
  18. package/dist/{notifyCommands-5PueOg8Q.mjs → notifyCommands-CXjWSZHe.mjs} +1 -1
  19. package/dist/{package-CpmmajAP.mjs → package-C0aVCX6O.mjs} +1 -1
  20. package/dist/{rpc-olai-LcU.mjs → rpc-1Ic_yDzC.mjs} +1 -1
  21. package/dist/{rpc-D3Hg4y67.mjs → rpc-DiG_DaMK.mjs} +1 -1
  22. package/dist/{run-BNiSOlBf.mjs → run-CKLU1B02.mjs} +16 -15
  23. package/dist/{run-B6V1wuT6.mjs → run-DZJuuuAu.mjs} +1 -1
  24. package/dist/{scheduler--MbVadb0.mjs → scheduler-C5Gk_hYP.mjs} +1 -1
  25. package/dist/{serveCommands-BONMg_af.mjs → serveCommands-Dipn0QHs.mjs} +5 -5
  26. package/dist/{sideband-Dnuy9-IL.mjs → sideband-BCMGW33d.mjs} +1 -1
  27. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { c as connectToHypha, K as computeCollectionConfigUpdate, L as SYSTEM_COLLECTION_CONFIG } from './run-BNiSOlBf.mjs';
1
+ import { c as connectToHypha, K as computeCollectionConfigUpdate, L as SYSTEM_COLLECTION_CONFIG } from './run-CKLU1B02.mjs';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import os from 'node:os';
@@ -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 { i as shortId } from './run-BNiSOlBf.mjs';
5
+ import { i as shortId } from './run-CKLU1B02.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -96,7 +96,7 @@ async function sessionSetTitle(title) {
96
96
  }
97
97
  async function sessionSetProjectDescription(description) {
98
98
  const dir = process.cwd();
99
- const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.at; });
99
+ const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.at; });
100
100
  const desc = sanitizeDescription(description, 240);
101
101
  if (!desc) {
102
102
  console.error("Project description is empty.");
@@ -343,7 +343,7 @@ async function sessionBroadcast(action, args) {
343
343
  console.log(`Broadcast sent: ${action}`);
344
344
  }
345
345
  async function connectToMachineService() {
346
- const { connectAndGetMachine } = await import('./commands-Dc9t_OeY.mjs');
346
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.mjs');
347
347
  return connectAndGetMachine();
348
348
  }
349
349
  function buildInboxMessage(args) {
@@ -421,7 +421,7 @@ async function inboxSend(targetSessionId, opts) {
421
421
  console.error("Message body is required.");
422
422
  process.exit(1);
423
423
  }
424
- const { connectAndResolveSession } = await import('./commands-Dc9t_OeY.mjs');
424
+ const { connectAndResolveSession } = await import('./commands-B-VYM4sA.mjs');
425
425
  let server;
426
426
  try {
427
427
  const { targetId, messageId } = await inboxSendCore(
@@ -475,7 +475,7 @@ async function inboxReply(messageId, body) {
475
475
  console.error("SVAMP_SESSION_ID not set. This command must be run inside a Svamp session.");
476
476
  process.exit(1);
477
477
  }
478
- const { connectAndResolveSession } = await import('./commands-Dc9t_OeY.mjs');
478
+ const { connectAndResolveSession } = await import('./commands-B-VYM4sA.mjs');
479
479
  const { server: localServer, machine: localMachine } = await connectToMachineService();
480
480
  let localDisconnected = false;
481
481
  const disconnectLocal = async () => {
@@ -1,4 +1,4 @@
1
- import { a0 as resolveModel } from './run-BNiSOlBf.mjs';
1
+ import { a0 as resolveModel } from './run-CKLU1B02.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { a1 as clearStopMarker, a2 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-BNiSOlBf.mjs';
1
+ import { a1 as clearStopMarker, a2 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-CKLU1B02.mjs';
2
2
  import { ensureSupervisorViaServiceManager, LAUNCHD_LABEL } from './serviceManager-hlOVxkhW.mjs';
3
3
 
4
4
  function flushAndExit(code) {
@@ -33,7 +33,7 @@ const subcommand = args[0];
33
33
  let daemonSubcommand = args[1];
34
34
  async function main() {
35
35
  try {
36
- const { getLoadedConfig } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ap; });
36
+ const { getLoadedConfig } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ap; });
37
37
  getLoadedConfig();
38
38
  } catch {
39
39
  }
@@ -52,7 +52,7 @@ async function main() {
52
52
  }
53
53
  const whenIdle = args.includes("--when-idle");
54
54
  const force = args.includes("--force");
55
- const mod = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aA; });
55
+ const mod = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aA; });
56
56
  if (whenIdle && !force) {
57
57
  if (mod.isDaemonAlive()) {
58
58
  mod.writePendingRestart({ reason: "svamp daemon restart --when-idle" });
@@ -356,7 +356,7 @@ async function main() {
356
356
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
357
357
  process.exit(1);
358
358
  }
359
- const { handleServiceCommand } = await import('./commands-Dd-6WXYJ.mjs');
359
+ const { handleServiceCommand } = await import('./commands-kahqMkYE.mjs');
360
360
  await handleServiceCommand();
361
361
  } else if (subcommand === "serve") {
362
362
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -364,7 +364,7 @@ async function main() {
364
364
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
365
365
  process.exit(1);
366
366
  }
367
- const { handleServeCommand } = await import('./serveCommands-BONMg_af.mjs');
367
+ const { handleServeCommand } = await import('./serveCommands-Dipn0QHs.mjs');
368
368
  await handleServeCommand();
369
369
  process.exit(0);
370
370
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -373,7 +373,7 @@ async function main() {
373
373
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
374
374
  process.exit(1);
375
375
  }
376
- const { processCommand } = await import('./commands-CBsV6z9K.mjs');
376
+ const { processCommand } = await import('./commands-DwQIShcm.mjs');
377
377
  let machineId;
378
378
  const processArgs = args.slice(1);
379
379
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -387,26 +387,26 @@ async function main() {
387
387
  }), machineId);
388
388
  process.exit(0);
389
389
  } else if (subcommand === "outpost") {
390
- const { outpostCommand } = await import('./commands-CIyv2Qt-.mjs');
390
+ const { outpostCommand } = await import('./commands-B9puiDBS.mjs');
391
391
  await outpostCommand(args.slice(1));
392
392
  process.exit(0);
393
393
  } else if (subcommand === "issue" || subcommand === "issues") {
394
- const { issueCommand } = await import('./commands-BC-T6wDo.mjs');
394
+ const { issueCommand } = await import('./commands-Bfgme-kK.mjs');
395
395
  await issueCommand(args.slice(1));
396
396
  await flushAndExit(0);
397
397
  } else if (subcommand === "workflow" || subcommand === "workflows") {
398
- const { workflowCommand } = await import('./commands-zagci6-n.mjs');
398
+ const { workflowCommand } = await import('./commands-eBqn9KgI.mjs');
399
399
  await workflowCommand(args.slice(1));
400
400
  await flushAndExit(0);
401
401
  } else if (subcommand === "wise-agent" || subcommand === "wise") {
402
402
  await handleWiseAgentCommand(args.slice(1));
403
403
  process.exit(0);
404
404
  } else if (subcommand === "feature" || subcommand === "crew") {
405
- const { crewCommand } = await import('./commands-Dwf-ntY-.mjs');
405
+ const { crewCommand } = await import('./commands-Cx8mEjjt.mjs');
406
406
  await crewCommand(args.slice(1));
407
407
  process.exit(0);
408
408
  } else if (subcommand === "notify") {
409
- const { notifyUser } = await import('./notifyCommands-5PueOg8Q.mjs');
409
+ const { notifyUser } = await import('./notifyCommands-CXjWSZHe.mjs');
410
410
  const rest = args.slice(1);
411
411
  let email;
412
412
  const o = {};
@@ -423,7 +423,7 @@ async function main() {
423
423
  } else if (subcommand === "admin") {
424
424
  const adminSub = args[1];
425
425
  if (adminSub === "set-collection-config") {
426
- const { setCollectionConfig } = await import('./adminCommands-BVvpkVsG.mjs');
426
+ const { setCollectionConfig } = await import('./adminCommands-DuA0IQ8B.mjs');
427
427
  const rest = args.slice(2);
428
428
  let alias;
429
429
  let configJson;
@@ -433,10 +433,10 @@ async function main() {
433
433
  }
434
434
  await setCollectionConfig(alias, configJson);
435
435
  } else if (adminSub === "create-system-collections") {
436
- const { createSystemCollections } = await import('./adminCommands-BVvpkVsG.mjs');
436
+ const { createSystemCollections } = await import('./adminCommands-DuA0IQ8B.mjs');
437
437
  await createSystemCollections();
438
438
  } else if (adminSub === "migrate-collection-children") {
439
- const { migrateCollectionChildren } = await import('./adminCommands-BVvpkVsG.mjs');
439
+ const { migrateCollectionChildren } = await import('./adminCommands-DuA0IQ8B.mjs');
440
440
  const rest = args.slice(2).filter((a) => !a.startsWith("-"));
441
441
  await migrateCollectionChildren(rest[0], rest[1]);
442
442
  } else {
@@ -444,7 +444,7 @@ async function main() {
444
444
  }
445
445
  process.exit(0);
446
446
  } else if (subcommand === "events") {
447
- const { listEvents, ackEvent } = await import('./notifyCommands-5PueOg8Q.mjs');
447
+ const { listEvents, ackEvent } = await import('./notifyCommands-CXjWSZHe.mjs');
448
448
  const sub = args[1];
449
449
  const rest = args.slice(2);
450
450
  let email;
@@ -465,7 +465,7 @@ async function main() {
465
465
  } else if (!subcommand || subcommand === "start") {
466
466
  await handleInteractiveCommand();
467
467
  } else if (subcommand === "--version" || subcommand === "-v") {
468
- const pkg = await import('./package-CpmmajAP.mjs').catch(() => ({ default: { version: "unknown" } }));
468
+ const pkg = await import('./package-C0aVCX6O.mjs').catch(() => ({ default: { version: "unknown" } }));
469
469
  console.log(`svamp version: ${pkg.default.version}`);
470
470
  } else {
471
471
  console.error(`Unknown command: ${subcommand}`);
@@ -474,7 +474,7 @@ async function main() {
474
474
  }
475
475
  }
476
476
  async function handleInteractiveCommand() {
477
- const { runInteractive } = await import('./run-B6V1wuT6.mjs');
477
+ const { runInteractive } = await import('./run-DZJuuuAu.mjs');
478
478
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
479
479
  let directory = process.cwd();
480
480
  let resumeSessionId;
@@ -519,7 +519,7 @@ async function handleAgentCommand() {
519
519
  return;
520
520
  }
521
521
  if (agentArgs[0] === "list") {
522
- const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aw; });
522
+ const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aw; });
523
523
  console.log("Known agents:");
524
524
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
525
525
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -531,7 +531,7 @@ async function handleAgentCommand() {
531
531
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
532
532
  return;
533
533
  }
534
- const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aw; });
534
+ const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aw; });
535
535
  let cwd = process.cwd();
536
536
  const filteredArgs = [];
537
537
  for (let i = 0; i < agentArgs.length; i++) {
@@ -555,12 +555,12 @@ async function handleAgentCommand() {
555
555
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
556
556
  let backend;
557
557
  if (KNOWN_CODEX_AGENTS[config.agentName]) {
558
- const { CodexAppServerBackend } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ax; });
558
+ const { CodexAppServerBackend } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ax; });
559
559
  backend = new CodexAppServerBackend({ cwd, log: logFn });
560
560
  } else {
561
- const { AcpBackend } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.av; });
562
- const { GeminiTransport } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ay; });
563
- const { DefaultTransport } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.au; });
561
+ const { AcpBackend } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.av; });
562
+ const { GeminiTransport } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ay; });
563
+ const { DefaultTransport } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.au; });
564
564
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
565
565
  backend = new AcpBackend({
566
566
  agentName: config.agentName,
@@ -687,7 +687,7 @@ async function handleSessionCommand() {
687
687
  process.exit(1);
688
688
  }
689
689
  }
690
- const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionLoopStart, sessionLoopCancel, sessionLoopStatus, sessionLoopExtend, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-Dc9t_OeY.mjs');
690
+ const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionLoopStart, sessionLoopCancel, sessionLoopStatus, sessionLoopExtend, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-B-VYM4sA.mjs');
691
691
  const parseFlagStr = (flag, shortFlag) => {
692
692
  for (let i = 1; i < sessionArgs.length; i++) {
693
693
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -755,7 +755,7 @@ async function handleSessionCommand() {
755
755
  allowDomain.push(sessionArgs[++i]);
756
756
  }
757
757
  }
758
- const { parseShareArg } = await import('./commands-Dc9t_OeY.mjs');
758
+ const { parseShareArg } = await import('./commands-B-VYM4sA.mjs');
759
759
  const shareEntries = share.map((s) => parseShareArg(s));
760
760
  await sessionSpawn(agent, dir, targetMachineId, {
761
761
  message,
@@ -845,7 +845,7 @@ async function handleSessionCommand() {
845
845
  console.error(" Rewinds history: rewrites the message + drops everything after it, then restarts Claude.");
846
846
  process.exit(1);
847
847
  }
848
- const { sessionEditMessage } = await import('./commands-Dc9t_OeY.mjs');
848
+ const { sessionEditMessage } = await import('./commands-B-VYM4sA.mjs');
849
849
  await sessionEditMessage(sessionArgs[1], sessionArgs[2], sessionArgs[3], targetMachineId);
850
850
  } else if (sessionSubcommand === "refine") {
851
851
  if (!sessionArgs[1] || !sessionArgs[2]) {
@@ -853,7 +853,7 @@ async function handleSessionCommand() {
853
853
  console.error(" Asks the agent to revise its latest reply in place (no extra round).");
854
854
  process.exit(1);
855
855
  }
856
- const { sessionRefineLastReply } = await import('./commands-Dc9t_OeY.mjs');
856
+ const { sessionRefineLastReply } = await import('./commands-B-VYM4sA.mjs');
857
857
  await sessionRefineLastReply(sessionArgs[1], sessionArgs[2], targetMachineId);
858
858
  } else if (sessionSubcommand === "undo-edit" || sessionSubcommand === "undo") {
859
859
  if (!sessionArgs[1]) {
@@ -861,7 +861,7 @@ async function handleSessionCommand() {
861
861
  console.error(" Reverts the most recent edit/refine, restoring the pre-edit history.");
862
862
  process.exit(1);
863
863
  }
864
- const { sessionUndoEdit } = await import('./commands-Dc9t_OeY.mjs');
864
+ const { sessionUndoEdit } = await import('./commands-B-VYM4sA.mjs');
865
865
  await sessionUndoEdit(sessionArgs[1], targetMachineId);
866
866
  } else if (sessionSubcommand === "query") {
867
867
  const dir = sessionArgs[1];
@@ -871,7 +871,7 @@ async function handleSessionCommand() {
871
871
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
872
872
  process.exit(1);
873
873
  }
874
- const { sessionQuery } = await import('./commands-Dc9t_OeY.mjs');
874
+ const { sessionQuery } = await import('./commands-B-VYM4sA.mjs');
875
875
  await sessionQuery(dir, prompt, targetMachineId, {
876
876
  timeout: parseFlagInt("--timeout"),
877
877
  json: hasFlag("--json"),
@@ -904,7 +904,7 @@ async function handleSessionCommand() {
904
904
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
905
905
  process.exit(1);
906
906
  }
907
- const { sessionApprove } = await import('./commands-Dc9t_OeY.mjs');
907
+ const { sessionApprove } = await import('./commands-B-VYM4sA.mjs');
908
908
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
909
909
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
910
910
  json: hasFlag("--json")
@@ -914,7 +914,7 @@ async function handleSessionCommand() {
914
914
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
915
915
  process.exit(1);
916
916
  }
917
- const { sessionDeny } = await import('./commands-Dc9t_OeY.mjs');
917
+ const { sessionDeny } = await import('./commands-B-VYM4sA.mjs');
918
918
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
919
919
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
920
920
  json: hasFlag("--json")
@@ -966,7 +966,7 @@ async function handleSessionCommand() {
966
966
  console.error("Usage: svamp session set-title <title>");
967
967
  process.exit(1);
968
968
  }
969
- const { sessionSetTitle } = await import('./agentCommands-fY4keaFA.mjs');
969
+ const { sessionSetTitle } = await import('./agentCommands-CoPsnzwK.mjs');
970
970
  await sessionSetTitle(title);
971
971
  } else if (sessionSubcommand === "set-project-description" || sessionSubcommand === "set-project") {
972
972
  const desc = sessionArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
@@ -974,7 +974,7 @@ async function handleSessionCommand() {
974
974
  console.error("Usage: svamp session set-project-description <text>");
975
975
  process.exit(1);
976
976
  }
977
- const { sessionSetProjectDescription } = await import('./agentCommands-fY4keaFA.mjs');
977
+ const { sessionSetProjectDescription } = await import('./agentCommands-CoPsnzwK.mjs');
978
978
  await sessionSetProjectDescription(desc);
979
979
  } else if (sessionSubcommand === "set-link") {
980
980
  const url = sessionArgs[1];
@@ -983,11 +983,11 @@ async function handleSessionCommand() {
983
983
  process.exit(1);
984
984
  }
985
985
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
986
- const { sessionSetLink } = await import('./agentCommands-fY4keaFA.mjs');
986
+ const { sessionSetLink } = await import('./agentCommands-CoPsnzwK.mjs');
987
987
  await sessionSetLink(url, label);
988
988
  } else if (sessionSubcommand === "link") {
989
989
  const op = sessionArgs[1];
990
- const lm = await import('./agentCommands-fY4keaFA.mjs');
990
+ const lm = await import('./agentCommands-CoPsnzwK.mjs');
991
991
  if (op === "add") {
992
992
  const url = sessionArgs[2];
993
993
  if (!url || url.startsWith("--")) {
@@ -1022,7 +1022,7 @@ async function handleSessionCommand() {
1022
1022
  process.exit(1);
1023
1023
  }
1024
1024
  const level = parseFlagStr("--level") || "info";
1025
- const { sessionNotify } = await import('./agentCommands-fY4keaFA.mjs');
1025
+ const { sessionNotify } = await import('./agentCommands-CoPsnzwK.mjs');
1026
1026
  await sessionNotify(message, level);
1027
1027
  } else if (sessionSubcommand === "broadcast") {
1028
1028
  const action = sessionArgs[1];
@@ -1030,7 +1030,7 @@ async function handleSessionCommand() {
1030
1030
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
1031
1031
  process.exit(1);
1032
1032
  }
1033
- const { sessionBroadcast } = await import('./agentCommands-fY4keaFA.mjs');
1033
+ const { sessionBroadcast } = await import('./agentCommands-CoPsnzwK.mjs');
1034
1034
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
1035
1035
  } else if (sessionSubcommand === "inbox") {
1036
1036
  const inboxSubcmd = sessionArgs[1];
@@ -1041,7 +1041,7 @@ async function handleSessionCommand() {
1041
1041
  process.exit(1);
1042
1042
  }
1043
1043
  if (agentSessionId) {
1044
- const { inboxSend } = await import('./agentCommands-fY4keaFA.mjs');
1044
+ const { inboxSend } = await import('./agentCommands-CoPsnzwK.mjs');
1045
1045
  await inboxSend(sessionArgs[2], {
1046
1046
  body: sessionArgs[3],
1047
1047
  subject: parseFlagStr("--subject"),
@@ -1056,7 +1056,7 @@ async function handleSessionCommand() {
1056
1056
  }
1057
1057
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
1058
1058
  if (agentSessionId && !sessionArgs[2]) {
1059
- const { inboxList } = await import('./agentCommands-fY4keaFA.mjs');
1059
+ const { inboxList } = await import('./agentCommands-CoPsnzwK.mjs');
1060
1060
  await inboxList({
1061
1061
  unread: hasFlag("--unread"),
1062
1062
  limit: parseFlagInt("--limit"),
@@ -1078,7 +1078,7 @@ async function handleSessionCommand() {
1078
1078
  process.exit(1);
1079
1079
  }
1080
1080
  if (agentSessionId && !sessionArgs[3]) {
1081
- const { inboxList } = await import('./agentCommands-fY4keaFA.mjs');
1081
+ const { inboxList } = await import('./agentCommands-CoPsnzwK.mjs');
1082
1082
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
1083
1083
  } else if (sessionArgs[3]) {
1084
1084
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -1088,7 +1088,7 @@ async function handleSessionCommand() {
1088
1088
  }
1089
1089
  } else if (inboxSubcmd === "reply") {
1090
1090
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
1091
- const { inboxReply } = await import('./agentCommands-fY4keaFA.mjs');
1091
+ const { inboxReply } = await import('./agentCommands-CoPsnzwK.mjs');
1092
1092
  await inboxReply(sessionArgs[2], sessionArgs[3]);
1093
1093
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
1094
1094
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -1126,7 +1126,7 @@ async function handleMachineCommand() {
1126
1126
  return;
1127
1127
  }
1128
1128
  if (machineSubcommand === "share") {
1129
- const { machineShare } = await import('./commands-Dc9t_OeY.mjs');
1129
+ const { machineShare } = await import('./commands-B-VYM4sA.mjs');
1130
1130
  let machineId;
1131
1131
  const shareArgs = [];
1132
1132
  for (let i = 1; i < machineArgs.length; i++) {
@@ -1177,14 +1177,14 @@ async function handleMachineCommand() {
1177
1177
  process.exit(1);
1178
1178
  }
1179
1179
  if (all) {
1180
- const { fleetExec } = await import('./fleet-DlRlerEG.mjs');
1180
+ const { fleetExec } = await import('./fleet-CqbZhBG2.mjs');
1181
1181
  await fleetExec(command, { cwd });
1182
1182
  } else {
1183
- const { machineExec } = await import('./commands-Dc9t_OeY.mjs');
1183
+ const { machineExec } = await import('./commands-B-VYM4sA.mjs');
1184
1184
  await machineExec(machineId, command, cwd);
1185
1185
  }
1186
1186
  } else if (machineSubcommand === "info") {
1187
- const { machineInfo } = await import('./commands-Dc9t_OeY.mjs');
1187
+ const { machineInfo } = await import('./commands-B-VYM4sA.mjs');
1188
1188
  let machineId;
1189
1189
  for (let i = 1; i < machineArgs.length; i++) {
1190
1190
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -1204,10 +1204,10 @@ async function handleMachineCommand() {
1204
1204
  level = machineArgs[++i];
1205
1205
  }
1206
1206
  }
1207
- const { machineNotify } = await import('./agentCommands-fY4keaFA.mjs');
1207
+ const { machineNotify } = await import('./agentCommands-CoPsnzwK.mjs');
1208
1208
  await machineNotify(message, level);
1209
1209
  } else if (machineSubcommand === "ls") {
1210
- const { machineLs } = await import('./commands-Dc9t_OeY.mjs');
1210
+ const { machineLs } = await import('./commands-B-VYM4sA.mjs');
1211
1211
  let machineId;
1212
1212
  let showHidden = false;
1213
1213
  let path;
@@ -1266,20 +1266,20 @@ Examples:
1266
1266
  };
1267
1267
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1268
1268
  if (sub === "status") {
1269
- const { fleetStatus } = await import('./fleet-DlRlerEG.mjs');
1269
+ const { fleetStatus } = await import('./fleet-CqbZhBG2.mjs');
1270
1270
  await fleetStatus();
1271
1271
  } else if (sub === "upgrade-claude") {
1272
- const { fleetUpgradeClaude } = await import('./fleet-DlRlerEG.mjs');
1272
+ const { fleetUpgradeClaude } = await import('./fleet-CqbZhBG2.mjs');
1273
1273
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1274
1274
  } else if (sub === "upgrade-svamp") {
1275
- const { fleetUpgradeSvamp } = await import('./fleet-DlRlerEG.mjs');
1275
+ const { fleetUpgradeSvamp } = await import('./fleet-CqbZhBG2.mjs');
1276
1276
  await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self"), force: hasFlag("force") });
1277
1277
  } else if (sub === "daemon-restart") {
1278
- const { fleetDaemonRestart } = await import('./fleet-DlRlerEG.mjs');
1278
+ const { fleetDaemonRestart } = await import('./fleet-CqbZhBG2.mjs');
1279
1279
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1280
1280
  } else if (sub === "push-skill") {
1281
1281
  const name = fleetArgs[1];
1282
- const { fleetPushSkill } = await import('./fleet-DlRlerEG.mjs');
1282
+ const { fleetPushSkill } = await import('./fleet-CqbZhBG2.mjs');
1283
1283
  await fleetPushSkill(name);
1284
1284
  } else {
1285
1285
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1295,7 +1295,7 @@ async function handleSkillsCommand() {
1295
1295
  await printSkillsHelp();
1296
1296
  return;
1297
1297
  }
1298
- const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-Bv5EcsN_.mjs');
1298
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-DSI9ZUTG.mjs');
1299
1299
  if (skillsSubcommand === "find" || skillsSubcommand === "search") {
1300
1300
  const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1301
1301
  if (!query) {
@@ -1342,7 +1342,7 @@ async function loginToHypha() {
1342
1342
  process.exit(1);
1343
1343
  }
1344
1344
  const anchor = anchorArg.replace(/\/+$/, "");
1345
- const { loadInstanceConfig } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ap; });
1345
+ const { loadInstanceConfig } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ap; });
1346
1346
  let cfg = null;
1347
1347
  try {
1348
1348
  cfg = await loadInstanceConfig({ anchor, force: true });
@@ -1453,7 +1453,7 @@ async function logoutFromHypha() {
1453
1453
  } catch {
1454
1454
  }
1455
1455
  try {
1456
- const { clearInstanceConfigCache } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ap; });
1456
+ const { clearInstanceConfigCache } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ap; });
1457
1457
  clearInstanceConfigCache();
1458
1458
  } catch {
1459
1459
  }
@@ -1795,7 +1795,7 @@ async function applyClaudeAuthFlags(argv) {
1795
1795
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1796
1796
  );
1797
1797
  }
1798
- const mod = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aq; });
1798
+ const mod = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aq; });
1799
1799
  if (hasHypha) {
1800
1800
  let url;
1801
1801
  const hyphaIdx = argv.indexOf("--use-hypha-proxy");
@@ -1849,7 +1849,7 @@ async function applyDaemonShareFlag(argv) {
1849
1849
  }
1850
1850
  }
1851
1851
  if (collected.length === 0) return;
1852
- const { updateEnvFile } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aq; });
1852
+ const { updateEnvFile } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aq; });
1853
1853
  const seen = /* @__PURE__ */ new Set();
1854
1854
  const deduped = collected.filter((e) => {
1855
1855
  const k = e.toLowerCase();
@@ -1882,7 +1882,7 @@ async function handleWiseAgentCommand(rest) {
1882
1882
  }
1883
1883
  });
1884
1884
  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(" ");
1885
- const { wiseAskCli } = await import('./commands-Dc9t_OeY.mjs');
1885
+ const { wiseAskCli } = await import('./commands-B-VYM4sA.mjs');
1886
1886
  await wiseAskCli(machineId, message, sessionId, { json });
1887
1887
  return;
1888
1888
  }
@@ -1894,7 +1894,7 @@ async function handleWiseAgentCommand(rest) {
1894
1894
  }
1895
1895
  return void 0;
1896
1896
  };
1897
- const { runWiseVoiceCli } = await import('./headlessCli-D22LyDyO.mjs');
1897
+ const { runWiseVoiceCli } = await import('./headlessCli-CJiHG0gu.mjs');
1898
1898
  await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
1899
1899
  return;
1900
1900
  }
@@ -1912,7 +1912,7 @@ async function handleWiseAgentCommand(rest) {
1912
1912
  const mode = valueOf(["--mode"]);
1913
1913
  const mission = valueOf(["--mission"]);
1914
1914
  const url = rest.slice(1).find((a) => /^https?:\/\//.test(a)) || "";
1915
- const { wiseJoinMeetingCli } = await import('./commands-Dc9t_OeY.mjs');
1915
+ const { wiseJoinMeetingCli } = await import('./commands-B-VYM4sA.mjs');
1916
1916
  await wiseJoinMeetingCli(machineId, url, sessionId, { json, mode, mission });
1917
1917
  return;
1918
1918
  }
@@ -1924,7 +1924,7 @@ async function handleWiseAgentCommand(rest) {
1924
1924
  }
1925
1925
  return void 0;
1926
1926
  };
1927
- const { wiseLeaveMeetingCli } = await import('./commands-Dc9t_OeY.mjs');
1927
+ const { wiseLeaveMeetingCli } = await import('./commands-B-VYM4sA.mjs');
1928
1928
  await wiseLeaveMeetingCli(valueOf(["--machine", "-m"]), valueOf(["--session", "-s"]), { json: rest.includes("--json") });
1929
1929
  return;
1930
1930
  }
@@ -1948,7 +1948,7 @@ async function handleWiseAgentCommand(rest) {
1948
1948
  }
1949
1949
  });
1950
1950
  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(" ");
1951
- const { wiseAnnounceCli } = await import('./commands-Dc9t_OeY.mjs');
1951
+ const { wiseAnnounceCli } = await import('./commands-B-VYM4sA.mjs');
1952
1952
  await wiseAnnounceCli(machineId, text, sessionId, { json });
1953
1953
  return;
1954
1954
  }
@@ -1960,7 +1960,7 @@ async function handleWiseAgentCommand(rest) {
1960
1960
  }
1961
1961
  return void 0;
1962
1962
  };
1963
- const { wiseMeetingsCli } = await import('./commands-Dc9t_OeY.mjs');
1963
+ const { wiseMeetingsCli } = await import('./commands-B-VYM4sA.mjs');
1964
1964
  await wiseMeetingsCli(valueOf(["--machine", "-m"]), { json: rest.includes("--json") });
1965
1965
  return;
1966
1966
  }
@@ -2010,7 +2010,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
2010
2010
  return;
2011
2011
  }
2012
2012
  const authArgs = rest.slice(1);
2013
- const mod = await import('./auth-SR7v-8nf.mjs');
2013
+ const mod = await import('./auth-Dj_Pcii4.mjs');
2014
2014
  let action;
2015
2015
  try {
2016
2016
  action = mod.parseWiseAgentAuthArgs(authArgs);
@@ -2020,7 +2020,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
2020
2020
  return;
2021
2021
  }
2022
2022
  if (action) {
2023
- const { updateEnvFile } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aq; });
2023
+ const { updateEnvFile } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aq; });
2024
2024
  const updates = mod.buildWiseAgentEnvUpdates(action);
2025
2025
  updateEnvFile(updates);
2026
2026
  for (const [k, v] of Object.entries(updates)) {
@@ -2034,7 +2034,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
2034
2034
  }
2035
2035
  async function handleDaemonAuthCommand(argv) {
2036
2036
  const sub = (argv[0] || "status").toLowerCase();
2037
- const mod = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aq; });
2037
+ const mod = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aq; });
2038
2038
  if (sub === "--help" || sub === "-h" || sub === "help") {
2039
2039
  console.log(`
2040
2040
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -2108,8 +2108,8 @@ one step: --use-hypha-proxy / --use-claude-login / --anthropic-base-url URL --an
2108
2108
  }
2109
2109
  async function handleDaemonCodexAuthCommand(argv) {
2110
2110
  const sub = (argv[0] || "status").toLowerCase();
2111
- const { updateEnvFile } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.aq; });
2112
- const { resolveCodexProvider } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ar; });
2111
+ const { updateEnvFile } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.aq; });
2112
+ const { resolveCodexProvider } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ar; });
2113
2113
  const redact = (k) => k && k.length > 10 ? `${k.slice(0, 6)}\u2026${k.slice(-4)}` : k ? "***" : "(unset)";
2114
2114
  if (sub === "--help" || sub === "-h" || sub === "help") {
2115
2115
  console.log(`
@@ -2441,7 +2441,7 @@ Examples:
2441
2441
  async function printSkillsHelp() {
2442
2442
  let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
2443
2443
  try {
2444
- const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.az; });
2444
+ const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.az; });
2445
2445
  browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
2446
2446
  } catch {
2447
2447
  }
package/dist/cli.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import './run-BNiSOlBf.mjs';
1
+ import './run-CKLU1B02.mjs';
2
2
  import './serviceManager-hlOVxkhW.mjs';
3
- import './cli-Re14H3q0.mjs';
3
+ import './cli-CuzIOUig.mjs';
4
4
  import 'os';
5
5
  import 'fs/promises';
6
6
  import 'fs';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { execSync, execFileSync } from 'node:child_process';
3
3
  import { basename, resolve, join, isAbsolute } from 'node:path';
4
4
  import os from 'node:os';
5
- import { a6 as formatHandle, a7 as normalizeAllowedUser, a8 as loadSecurityContextConfig, a9 as resolveSecurityContext, aa as buildSecurityContextFromFlags, ab as mergeSecurityContexts, c as connectToHypha, ac as buildSessionShareUrl, ad as computeOutboundHop, i as shortId, ae as registerAwaitingReply, af as buildMachineShareUrl, ag as parseHandle, ah as handleMatchesMetadata } from './run-BNiSOlBf.mjs';
5
+ import { a6 as formatHandle, a7 as normalizeAllowedUser, a8 as loadSecurityContextConfig, a9 as resolveSecurityContext, aa as buildSecurityContextFromFlags, ab as mergeSecurityContexts, c as connectToHypha, ac as buildSessionShareUrl, ad as computeOutboundHop, i as shortId, ae as registerAwaitingReply, af as buildMachineShareUrl, ag as parseHandle, ah as handleMatchesMetadata } from './run-CKLU1B02.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { join } from 'node:path';
4
4
  import os from 'node:os';
5
- import { a3 as ChannelStore, a4 as gatewayBase, a5 as genKey } from './run-BNiSOlBf.mjs';
5
+ import { a3 as ChannelStore, a4 as gatewayBase, a5 as genKey } from './run-CKLU1B02.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -76,6 +76,36 @@ function projectDir() {
76
76
  return process.cwd();
77
77
  }
78
78
  }
79
+ function remotesPath() {
80
+ return join(os.homedir(), ".svamp", "outpost-remotes.json");
81
+ }
82
+ function loadRemotes() {
83
+ try {
84
+ return JSON.parse(readFileSync(remotesPath(), "utf8"));
85
+ } catch {
86
+ return {};
87
+ }
88
+ }
89
+ function rememberRemote(channel, id, targeted = false) {
90
+ const all = loadRemotes();
91
+ const ch = all[channel] ||= {};
92
+ const now = (/* @__PURE__ */ new Date()).toISOString();
93
+ ch[id] = { firstSeen: ch[id]?.firstSeen || now, ...targeted ? { lastTargeted: now } : ch[id]?.lastTargeted ? { lastTargeted: ch[id].lastTargeted } : {} };
94
+ try {
95
+ writeFileSync(remotesPath(), JSON.stringify(all, null, 2));
96
+ } catch {
97
+ }
98
+ }
99
+ function forgetRemote(channel, id) {
100
+ const all = loadRemotes();
101
+ if (!all[channel]?.[id]) return false;
102
+ delete all[channel][id];
103
+ try {
104
+ writeFileSync(remotesPath(), JSON.stringify(all, null, 2));
105
+ } catch {
106
+ }
107
+ return true;
108
+ }
79
109
  async function outpostUp(args) {
80
110
  const session = process.env.SVAMP_SESSION_ID;
81
111
  if (!session) {
@@ -141,11 +171,20 @@ function usage() {
141
171
 
142
172
  svamp outpost up Create this session's outpost channel + print the install command
143
173
 
174
+ svamp outpost list List the outposts (machines) connected to this session
144
175
  svamp outpost status Show connected remotes + counts
145
- svamp outpost exec "<command>" Run a shell command on the connected remote, print its output
176
+ svamp outpost exec [--machine <id>] "<command>"
177
+ Run a shell command on one outpost (--machine <id>) or, with no
178
+ --machine, broadcast to every connected outpost. Output arrives
179
+ as chat messages. Each outpost's id is shown in its connect banner.
180
+ svamp outpost forget <id> Drop a machine id from the local list
146
181
  svamp outpost logs [--json] Show everything the remote(s) have sent back
147
182
  svamp outpost install [--os <os>] Print the install one-liner(s) for the current outpost setup
148
183
 
184
+ With several machines connected, target each by id, e.g.:
185
+ svamp outpost exec --machine build-mac "uname -a"
186
+ svamp outpost exec "hostname" # runs on ALL connected outposts
187
+
149
188
  Reads the relay control endpoint from ~/.svamp/outpost.json (or pass --control <url>).`);
150
189
  }
151
190
  async function outpostCommand(args) {
@@ -178,22 +217,54 @@ async function outpostCommand(args) {
178
217
  }
179
218
  const gateway = !!cfg?.serverBase && /\/services\/[^/]*:channels/.test(cfg.serverBase);
180
219
  if (sub === "exec" && gateway) {
181
- const cmd = args.slice(1).join(" ").trim();
220
+ const target = argVal(args, "--machine") || argVal(args, "-m");
221
+ const cmd = args.slice(1).filter((a, i, arr) => a !== "--machine" && a !== "-m" && arr[i - 1] !== "--machine" && arr[i - 1] !== "-m").join(" ").trim();
182
222
  if (!cmd) {
183
- console.error('usage: svamp outpost exec "<command>"');
223
+ console.error('usage: svamp outpost exec [--machine <id>] "<command>"');
184
224
  process.exit(1);
185
225
  }
186
- const { ChannelOutbox } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.as; });
226
+ const { ChannelOutbox } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.as; });
187
227
  const outbox = new ChannelOutbox(projectDir());
188
228
  const id = "x" + Date.now().toString(36);
189
- outbox.append(cfg.channel, { to: "outpost", body: JSON.stringify({ type: "exec", id, cmd }) });
190
- console.log(`Sent to the remote (channel ${cfg.channel}). Its output arrives as a message in this session shortly.`);
229
+ outbox.append(cfg.channel, { to: "outpost", body: JSON.stringify({ type: "exec", id, cmd, target: target || "" }) });
230
+ if (target) rememberRemote(cfg.channel, target, true);
231
+ console.log(target ? `Sent to outpost "${target}" (channel ${cfg.channel}). Its output arrives as a message in this session shortly.` : `Broadcast to all connected outposts (channel ${cfg.channel}). Output from each arrives as a message shortly. Use --machine <id> to target one.`);
232
+ return;
233
+ }
234
+ if (sub === "list" && gateway) {
235
+ const ch = new ChannelStore(projectDir()).get(cfg.channel);
236
+ const calls = (ch?.last_calls || []).filter((c) => c.sender === "outpost");
237
+ const known = loadRemotes()[cfg.channel] || {};
238
+ const ids = Object.keys(known);
239
+ if (!ids.length && !calls.length) {
240
+ console.log(`No outposts known yet on ${cfg.channel}. When one connects it announces itself in this session's chat as \u{1F5A5}\uFE0F outpost "<id>" connected \u2014 then target it with: svamp outpost exec --machine <id> "\u2026"`);
241
+ return;
242
+ }
243
+ console.log(`Outposts addressed from session ${cfg.session || cfg.channel} (each connect banner in chat confirms which are live):`);
244
+ for (const id of ids) {
245
+ const r = known[id];
246
+ console.log(` \u2022 ${id}${r.lastTargeted ? ` (last targeted ${r.lastTargeted})` : " (seen)"}`);
247
+ }
248
+ if (calls.length) console.log(` channel activity: ${calls.length} recent message(s); last at ${calls[0]?.at}`);
249
+ if (!ids.length) console.log(" (no machine ids recorded yet \u2014 the connect banner in chat shows each outpost's id)");
250
+ console.log(" Drop a stale id with: svamp outpost forget <id>");
251
+ return;
252
+ }
253
+ if ((sub === "forget" || sub === "remove") && gateway) {
254
+ const id = args[1];
255
+ if (!id) {
256
+ console.error("usage: svamp outpost forget <machine-id>");
257
+ process.exit(1);
258
+ }
259
+ console.log(forgetRemote(cfg.channel, id) ? `Forgot outpost "${id}".` : `No such outpost "${id}" recorded.`);
191
260
  return;
192
261
  }
193
262
  if (sub === "status" && gateway) {
194
263
  const ch = new ChannelStore(projectDir()).get(cfg.channel);
195
264
  const calls = (ch?.last_calls || []).filter((c) => c.sender === "outpost");
196
- console.log(calls.length ? `outpost active on ${cfg.channel} \u2014 ${calls.length} recent message(s); last at ${calls[0]?.at}` : `no outpost has connected to ${cfg.channel} yet`);
265
+ const ids = Object.keys(loadRemotes()[cfg.channel] || {});
266
+ const who = ids.length ? ` \u2014 known machines: ${ids.join(", ")}` : "";
267
+ console.log(calls.length ? `outpost active on ${cfg.channel} \u2014 ${calls.length} recent message(s); last at ${calls[0]?.at}${who}` : `no outpost has connected to ${cfg.channel} yet`);
197
268
  return;
198
269
  }
199
270
  if (sub === "logs" && gateway) {
@@ -1,8 +1,8 @@
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 { f as flushAndExit } from './cli-Re14H3q0.mjs';
5
- import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, H as summarize, n as addIssue } from './run-BNiSOlBf.mjs';
4
+ import { f as flushAndExit } from './cli-CuzIOUig.mjs';
5
+ import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, H as summarize, n as addIssue } from './run-CKLU1B02.mjs';
6
6
  import './serviceManager-hlOVxkhW.mjs';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -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-Dc9t_OeY.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-B-VYM4sA.mjs';
4
4
  import { execFileSync } from 'node:child_process';
5
- import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-BNiSOlBf.mjs';
5
+ import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-CKLU1B02.mjs';
6
6
  import 'node:os';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -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 { Q as parseFrontmatter, T as getSkillsServer, U as getSkillsWorkspaceName, V as getSkillsCollectionName, W as fetchWithTimeout, X as searchSkills, Y as SKILLS_DIR, Z as getSkillInfo, _ as downloadSkillFile, $ as listSkillFiles } from './run-BNiSOlBf.mjs';
4
+ import { Q as parseFrontmatter, T as getSkillsServer, U as getSkillsWorkspaceName, V as getSkillsCollectionName, W as fetchWithTimeout, X as searchSkills, Y as SKILLS_DIR, Z as getSkillInfo, _ as downloadSkillFile, $ as listSkillFiles } from './run-CKLU1B02.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-Dc9t_OeY.mjs';
3
+ import { connectAndGetMachine } from './commands-B-VYM4sA.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-BNiSOlBf.mjs';
8
+ import './run-CKLU1B02.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -1,5 +1,5 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { j as resolveProjectRoot, I as workflowSteps, z as setWorkflowEnabled, E as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, D as listWorkflows, B as saveWorkflow, C as rawWorkflow } from './run-BNiSOlBf.mjs';
2
+ import { j as resolveProjectRoot, I as workflowSteps, z as setWorkflowEnabled, E as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, D as listWorkflows, B as saveWorkflow, C as rawWorkflow } from './run-CKLU1B02.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
5
5
  import 'fs';
@@ -60,7 +60,7 @@ async function serviceExpose(args) {
60
60
  process.exit(1);
61
61
  }
62
62
  if (foreground) {
63
- const { runFrpcTunnel } = await import('./frpc-B8zTErxt.mjs');
63
+ const { runFrpcTunnel } = await import('./frpc-BeGCyERl.mjs');
64
64
  await runFrpcTunnel(name, ports, void 0, {
65
65
  group,
66
66
  groupKey,
@@ -70,7 +70,7 @@ async function serviceExpose(args) {
70
70
  });
71
71
  return;
72
72
  }
73
- const { connectAndGetMachine } = await import('./commands-Dc9t_OeY.mjs');
73
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.mjs');
74
74
  const { server, machine } = await connectAndGetMachine();
75
75
  try {
76
76
  const status = await machine.tunnelStart({
@@ -92,7 +92,7 @@ async function serviceExpose(args) {
92
92
  console.log(` port ${port}: ${url}`);
93
93
  }
94
94
  if (process.env.SVAMP_SESSION_ID) {
95
- const { autoAddSessionLink } = await import('./agentCommands-fY4keaFA.mjs');
95
+ const { autoAddSessionLink } = await import('./agentCommands-CoPsnzwK.mjs');
96
96
  let added = 0;
97
97
  for (const [port, url] of urlEntries) {
98
98
  const label = urlEntries.length > 1 ? `${name}:${port}` : name;
@@ -129,7 +129,7 @@ async function serviceServe(args) {
129
129
  console.log(`Serving ${resolvedDir}`);
130
130
  const servePort = 18080;
131
131
  const http = await import('http');
132
- const { serveStaticMount } = await import('./run-BNiSOlBf.mjs').then(function (n) { return n.ao; });
132
+ const { serveStaticMount } = await import('./run-CKLU1B02.mjs').then(function (n) { return n.ao; });
133
133
  const server = http.createServer((req, res) => {
134
134
  const u = new URL(req.url || "/", "http://127.0.0.1");
135
135
  let rel = u.pathname;
@@ -140,7 +140,7 @@ async function serviceServe(args) {
140
140
  server.once("error", reject);
141
141
  server.listen(servePort, "127.0.0.1", () => resolve());
142
142
  });
143
- const { runFrpcTunnel } = await import('./frpc-B8zTErxt.mjs');
143
+ const { runFrpcTunnel } = await import('./frpc-BeGCyERl.mjs');
144
144
  void server;
145
145
  await runFrpcTunnel(name, [servePort]);
146
146
  } catch (err) {
@@ -150,7 +150,7 @@ async function serviceServe(args) {
150
150
  }
151
151
  async function serviceList(_args) {
152
152
  try {
153
- const { connectAndGetMachine } = await import('./commands-Dc9t_OeY.mjs');
153
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.mjs');
154
154
  const { server, machine } = await connectAndGetMachine();
155
155
  try {
156
156
  const tunnels = await machine.tunnelList({});
@@ -190,7 +190,7 @@ async function serviceDelete(args) {
190
190
  process.exit(1);
191
191
  }
192
192
  try {
193
- const { connectAndGetMachine } = await import('./commands-Dc9t_OeY.mjs');
193
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.mjs');
194
194
  const { server, machine } = await connectAndGetMachine();
195
195
  try {
196
196
  await machine.tunnelStop({ name });
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import os from 'node:os';
4
- import { c as connectToHypha } from './run-BNiSOlBf.mjs';
4
+ import { c as connectToHypha } from './run-CKLU1B02.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-BaMR97BE.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -4,7 +4,7 @@ import { mkdirSync, chmodSync, writeFileSync, unlinkSync, existsSync, readFileSy
4
4
  import { join } from 'path';
5
5
  import { homedir, platform, arch } from 'os';
6
6
  import { randomUUID, createHash } from 'crypto';
7
- import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-BNiSOlBf.mjs';
7
+ import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-CKLU1B02.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
- import { a0 as resolveModel, ai as describeMisconfiguration, aj as buildMachineDeps } from './run-BNiSOlBf.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-Dnuy9-IL.mjs';
1
+ import { a0 as resolveModel, ai as describeMisconfiguration, aj as buildMachineDeps } from './run-CKLU1B02.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BCMGW33d.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-BNiSOlBf.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-CKLU1B02.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { c as connectToHypha, S as SharingNotificationSync, J as parseJwtEmail } from './run-BNiSOlBf.mjs';
1
+ import { c as connectToHypha, S as SharingNotificationSync, J as parseJwtEmail } from './run-CKLU1B02.mjs';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import { join } from 'node:path';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.290";
2
+ var version = "0.2.291";
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 { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-BNiSOlBf.mjs';
1
+ import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-CKLU1B02.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-BNiSOlBf.mjs';
1
+ import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-CKLU1B02.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -2973,7 +2973,7 @@ Connection: close\r
2973
2973
  const mount = this.mounts.get(mountName);
2974
2974
  const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
2975
2975
  try {
2976
- const { FrpcTunnel } = await import('./frpc-B8zTErxt.mjs');
2976
+ const { FrpcTunnel } = await import('./frpc-BeGCyERl.mjs');
2977
2977
  let tunnel;
2978
2978
  tunnel = new FrpcTunnel({
2979
2979
  name: tunnelName,
@@ -5869,7 +5869,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
5869
5869
  const tunnels = handlers.tunnels;
5870
5870
  if (!tunnels) throw new Error("Tunnel management not available");
5871
5871
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
5872
- const { FrpcTunnel } = await import('./frpc-B8zTErxt.mjs');
5872
+ const { FrpcTunnel } = await import('./frpc-BeGCyERl.mjs');
5873
5873
  const tunnel = new FrpcTunnel({
5874
5874
  name: params.name,
5875
5875
  ports: params.ports,
@@ -6345,7 +6345,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
6345
6345
  }
6346
6346
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
6347
6347
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
6348
- const { toolsForRole } = await import('./sideband-Dnuy9-IL.mjs');
6348
+ const { toolsForRole } = await import('./sideband-BCMGW33d.mjs');
6349
6349
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
6350
6350
  return fmt(r2);
6351
6351
  }
@@ -6450,7 +6450,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
6450
6450
  return { ok: false, call_id: callId, status: "busy", error: "channel is busy (too many concurrent requests) \u2014 retry shortly" };
6451
6451
  }
6452
6452
  const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
6453
- const { queryCore } = await import('./commands-Dc9t_OeY.mjs');
6453
+ const { queryCore } = await import('./commands-B-VYM4sA.mjs');
6454
6454
  const timeout = c.reply?.timeout_sec || 120;
6455
6455
  let result;
6456
6456
  try {
@@ -6522,7 +6522,7 @@ ${d?.error || "not found"}`;
6522
6522
  if ("error" in res) return { error: res.error };
6523
6523
  if (res.tier === "stateless") return dispatchStateless(res.c, res.dir, kwargs, context);
6524
6524
  if ("stopped" in res) return { error: `session ${res.sessionId.slice(0, 8)} is stopped \u2014 resume it to reach this channel` };
6525
- return res.rpc.channelSend({ channel: kwargs.channel, message: kwargs.message, from: kwargs.from, key: kwargs.key, session: kwargs.session, reply_to: kwargs.reply_to }, context);
6525
+ return res.rpc.channelSend({ channel: kwargs.channel, message: kwargs.message, from: kwargs.from, key: kwargs.key, session: kwargs.session, reply_to: kwargs.reply_to, no_reply: kwargs.no_reply }, context);
6526
6526
  },
6527
6527
  // Async reply retrieval for queue-mode channels — long-poll the channel outbox
6528
6528
  // for replies addressed to the caller. Routed to the session the message landed
@@ -7796,7 +7796,8 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
7796
7796
  }
7797
7797
  if (c.action?.kind === "loop") return { error: "loop channels are served by the channel server, not channelSend" };
7798
7798
  const queue = c.reply?.mode === "queue";
7799
- const replySession = queue ? params.reply_to?.session : void 0;
7799
+ const wantReply = queue && !params.no_reply;
7800
+ const replySession = wantReply ? params.reply_to?.session : void 0;
7800
7801
  const inboxMsg = {
7801
7802
  messageId: callId,
7802
7803
  body: xmlEscape(String(params.message ?? "").slice(0, 16 * 1024)),
@@ -7807,12 +7808,12 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
7807
7808
  channel: c.name,
7808
7809
  subject: c.name,
7809
7810
  ...replySession ? { fromSession: replySession, threadId: callId } : {},
7810
- ...queue ? { channelId: c.id, correlationId: callId } : {}
7811
+ ...wantReply ? { channelId: c.id, correlationId: callId } : {}
7811
7812
  };
7812
7813
  await rpcHandlers.sendInboxMessage(inboxMsg, ownerCtx);
7813
7814
  channelStore.recordCall(c.id, { sender: r.sender.name, verified: r.sender.verified, callId, outcome: "delivered" });
7814
7815
  syncChannelsToMetadata();
7815
- return { ok: true, call_id: callId, status: queue ? "queued" : "accepted", ...queue ? { correlationId: callId } : {} };
7816
+ return { ok: true, call_id: callId, status: wantReply ? "queued" : "accepted", ...wantReply ? { correlationId: callId } : {} };
7816
7817
  } catch (e) {
7817
7818
  channelStore.recordCall(c.id, { sender: r.sender.name, verified: r.sender.verified, callId, outcome: "error" });
7818
7819
  return { ok: false, call_id: callId, status: "error", error: e?.message || String(e) };
@@ -16273,7 +16274,7 @@ async function startDaemon(options) {
16273
16274
  try {
16274
16275
  const dir = loadSessionIndex()[sessionId]?.directory;
16275
16276
  if (!dir) return;
16276
- const { reconcileServiceLinks } = await import('./agentCommands-fY4keaFA.mjs');
16277
+ const { reconcileServiceLinks } = await import('./agentCommands-CoPsnzwK.mjs');
16277
16278
  const configPath = getSvampConfigPath(dir, sessionId);
16278
16279
  const config = readSvampConfig(configPath);
16279
16280
  const entries = Array.from(urls.entries());
@@ -16291,7 +16292,7 @@ async function startDaemon(options) {
16291
16292
  }
16292
16293
  }
16293
16294
  async function createExposedTunnel(spec) {
16294
- const { FrpcTunnel } = await import('./frpc-B8zTErxt.mjs');
16295
+ const { FrpcTunnel } = await import('./frpc-BeGCyERl.mjs');
16295
16296
  const tunnel = new FrpcTunnel({
16296
16297
  name: spec.name,
16297
16298
  ports: spec.ports,
@@ -18507,11 +18508,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
18507
18508
  });
18508
18509
  },
18509
18510
  onIssue: async (params) => {
18510
- const { issueRpc } = await import('./rpc-olai-LcU.mjs');
18511
+ const { issueRpc } = await import('./rpc-1Ic_yDzC.mjs');
18511
18512
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
18512
18513
  },
18513
18514
  onWorkflow: async (params) => {
18514
- const { workflowRpc } = await import('./rpc-D3Hg4y67.mjs');
18515
+ const { workflowRpc } = await import('./rpc-DiG_DaMK.mjs');
18515
18516
  return workflowRpc(params?.cwd || directory, params || {});
18516
18517
  },
18517
18518
  onRipgrep: async (args, cwd) => {
@@ -19124,11 +19125,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
19124
19125
  });
19125
19126
  },
19126
19127
  onIssue: async (params) => {
19127
- const { issueRpc } = await import('./rpc-olai-LcU.mjs');
19128
+ const { issueRpc } = await import('./rpc-1Ic_yDzC.mjs');
19128
19129
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
19129
19130
  },
19130
19131
  onWorkflow: async (params) => {
19131
- const { workflowRpc } = await import('./rpc-D3Hg4y67.mjs');
19132
+ const { workflowRpc } = await import('./rpc-DiG_DaMK.mjs');
19132
19133
  return workflowRpc(params?.cwd || directory, params || {});
19133
19134
  },
19134
19135
  onRipgrep: async (args, cwd) => {
@@ -20248,7 +20249,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
20248
20249
  const PING_TIMEOUT_MS = 15e3;
20249
20250
  const POST_RECONNECT_GRACE_MS = 2e4;
20250
20251
  const RECONNECT_JITTER_MS = 2500;
20251
- const { WorkflowScheduler } = await import('./scheduler--MbVadb0.mjs');
20252
+ const { WorkflowScheduler } = await import('./scheduler-C5Gk_hYP.mjs');
20252
20253
  const workflowScheduler = new WorkflowScheduler({
20253
20254
  projectRoots: () => {
20254
20255
  const dirs = /* @__PURE__ */ new Set();
@@ -1,4 +1,4 @@
1
- import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ak as applyClaudeProxyEnv, al as composeSessionId, am as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, an as generateHookSettings } from './run-BNiSOlBf.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ak as applyClaudeProxyEnv, al as composeSessionId, am as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, an as generateHookSettings } from './run-CKLU1B02.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';
@@ -1,4 +1,4 @@
1
- import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-BNiSOlBf.mjs';
1
+ import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-CKLU1B02.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-Dc9t_OeY.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.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-Dc9t_OeY.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.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-Dc9t_OeY.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.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-Dc9t_OeY.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.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-Dc9t_OeY.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-B-VYM4sA.mjs');
239
239
  const { machine, server } = await connectAndGetMachine(machineId);
240
240
  try {
241
241
  const info = await machine.serveInfo();
@@ -1,4 +1,4 @@
1
- import { R as READ_ONLY_TOOLS, M as loadMachineContext, N as buildMachineInstructions, O as machineToolsForRole, P as buildMachineTools } from './run-BNiSOlBf.mjs';
1
+ import { R as READ_ONLY_TOOLS, M as loadMachineContext, N as buildMachineInstructions, O as machineToolsForRole, P as buildMachineTools } from './run-CKLU1B02.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.290",
3
+ "version": "0.2.291",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",