svamp-cli 0.2.279 → 0.2.280

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 (26) hide show
  1. package/dist/adminCommands-7A_djft2.mjs +105 -0
  2. package/dist/{agentCommands-CZjZsqJC.mjs → agentCommands-SejhmIxj.mjs} +5 -5
  3. package/dist/{auth-CFWhaPVg.mjs → auth-Bp-lcNvX.mjs} +1 -1
  4. package/dist/{cli-E1osBiyj.mjs → cli-DqFchp_7.mjs} +81 -65
  5. package/dist/cli.mjs +2 -2
  6. package/dist/{commands-DW0HvMa8.mjs → commands-3oQU6Zbl.mjs} +1 -1
  7. package/dist/{commands-GYPd_Ddj.mjs → commands-BXRsOufU.mjs} +7 -7
  8. package/dist/{commands-ux1fl1qK.mjs → commands-BiJbQChb.mjs} +1 -1
  9. package/dist/{commands-C_XFxrjC.mjs → commands-BzMbBsGM.mjs} +2 -2
  10. package/dist/{commands-Chlqo2DT.mjs → commands-CBIRneT7.mjs} +1 -1
  11. package/dist/{commands-TFNC2BuR.mjs → commands-D95wyAGb.mjs} +2 -2
  12. package/dist/{commands-1FkeAcQD.mjs → commands-DVQTULwh.mjs} +2 -2
  13. package/dist/{fleet-cu0bUH3v.mjs → fleet-CIFev16_.mjs} +1 -1
  14. package/dist/{frpc-B1-dyz8z.mjs → frpc-Czt8diGB.mjs} +1 -1
  15. package/dist/{headlessCli-BvoiOGxZ.mjs → headlessCli-CfRDf2kB.mjs} +2 -2
  16. package/dist/index.mjs +1 -1
  17. package/dist/{notifyCommands-BrD5qNdF.mjs → notifyCommands-Db7qJUME.mjs} +1 -1
  18. package/dist/{package-BVdnXBp4.mjs → package-Cuybud2_.mjs} +1 -1
  19. package/dist/{rpc-DKY7-oh-.mjs → rpc-AkzY2NVv.mjs} +1 -1
  20. package/dist/{rpc-2I8SlTrz.mjs → rpc-B_zN6Jvr.mjs} +1 -1
  21. package/dist/{run-B10NKlSF.mjs → run-CRuLlPmv.mjs} +1 -1
  22. package/dist/{run-BtIiSNjM.mjs → run-CumVWywx.mjs} +11 -35
  23. package/dist/{scheduler-BOnAtzax.mjs → scheduler-MPYVrdzd.mjs} +1 -1
  24. package/dist/{serveCommands-DdZcK0Q9.mjs → serveCommands-DPVITK3a.mjs} +5 -5
  25. package/dist/{sideband-BjUyyMW7.mjs → sideband-CHcbWta4.mjs} +1 -1
  26. package/package.json +1 -1
@@ -0,0 +1,105 @@
1
+ import { c as connectToHypha } from './run-CumVWywx.mjs';
2
+ import { existsSync, readFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import os from 'node:os';
5
+ import 'os';
6
+ import 'fs/promises';
7
+ import 'fs';
8
+ import 'path';
9
+ import 'url';
10
+ import 'child_process';
11
+ import 'crypto';
12
+ import 'node:crypto';
13
+ import 'node:child_process';
14
+ import 'util';
15
+ import 'http';
16
+ import 'net';
17
+ import 'node:events';
18
+ import '@agentclientprotocol/sdk';
19
+ import 'node:readline';
20
+ import 'node:fs/promises';
21
+ import 'node:util';
22
+ import 'yaml';
23
+
24
+ function computeCollectionConfigUpdate(existingConfig, extra) {
25
+ const cfg = existingConfig || {};
26
+ const changed = Object.entries(extra).some(([k, v]) => JSON.stringify(cfg[k]) !== JSON.stringify(v));
27
+ return { changed, merged: { ...cfg, ...extra } };
28
+ }
29
+ function loadEnv() {
30
+ const SVAMP_HOME = process.env.SVAMP_HOME || join(os.homedir(), ".svamp");
31
+ for (const f of [join(SVAMP_HOME, ".env"), join(os.homedir(), ".hypha", ".env")]) {
32
+ if (!existsSync(f)) continue;
33
+ try {
34
+ for (const line of readFileSync(f, "utf-8").split("\n")) {
35
+ const m = line.match(/^\s*([A-Za-z0-9_]+)\s*=\s*(.*)\s*$/);
36
+ if (m && process.env[m[1]] === void 0) process.env[m[1]] = m[2].replace(/^["']|["']$/g, "");
37
+ }
38
+ } catch {
39
+ }
40
+ }
41
+ }
42
+ async function setCollectionConfig(alias, configJson) {
43
+ if (!alias || !configJson) {
44
+ console.error("Usage: svamp admin set-collection-config <alias> --config '<json>'");
45
+ console.error(` e.g. svamp admin set-collection-config svamp-user-events --config '{"private_children":true,"recipient_field":"recipientEmail"}'`);
46
+ process.exit(1);
47
+ }
48
+ let extra;
49
+ try {
50
+ extra = JSON.parse(configJson);
51
+ if (!extra || typeof extra !== "object" || Array.isArray(extra)) throw new Error("config must be a JSON object");
52
+ } catch (e) {
53
+ console.error(`--config must be a JSON object: ${e.message}`);
54
+ process.exit(1);
55
+ }
56
+ loadEnv();
57
+ const serverUrl = process.env.HYPHA_SERVER_URL;
58
+ const token = process.env.HYPHA_TOKEN;
59
+ if (!serverUrl || !token) {
60
+ console.error('Not logged in. Run "svamp login <url>" first.');
61
+ process.exit(1);
62
+ }
63
+ let server;
64
+ try {
65
+ server = await connectToHypha({ serverUrl, token, name: "svamp-admin-cli" });
66
+ } catch (e) {
67
+ console.error(`Failed to connect to Hypha: ${e.message}`);
68
+ process.exit(1);
69
+ }
70
+ try {
71
+ const am = await server.getService("public/artifact-manager");
72
+ if (!am) {
73
+ console.error("Artifact manager not available.");
74
+ process.exit(1);
75
+ }
76
+ let col;
77
+ try {
78
+ col = await am.read({ artifact_id: alias, _rkwargs: true });
79
+ } catch (e) {
80
+ console.error(`Collection "${alias}" not found (or not readable): ${e.message}`);
81
+ process.exit(1);
82
+ }
83
+ const { changed, merged } = computeCollectionConfigUpdate(col.config, extra);
84
+ if (!changed) {
85
+ console.log(`${alias}: config already up to date (no change).`);
86
+ return;
87
+ }
88
+ try {
89
+ await am.edit({ artifact_id: col.id, config: merged, _rkwargs: true });
90
+ await am.commit({ artifact_id: col.id, _rkwargs: true }).catch(() => {
91
+ });
92
+ } catch (e) {
93
+ console.error(`Failed to set config on "${alias}" (need owner/admin/root rights): ${e.message}`);
94
+ process.exit(1);
95
+ }
96
+ console.log(`\u2713 ${alias}: merged {${Object.keys(extra).join(", ")}} into config (existing keys preserved).`);
97
+ } finally {
98
+ try {
99
+ await server.disconnect?.();
100
+ } catch {
101
+ }
102
+ }
103
+ }
104
+
105
+ export { computeCollectionConfigUpdate, setCollectionConfig };
@@ -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-BtIiSNjM.mjs';
5
+ import { i as shortId } from './run-CumVWywx.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-BtIiSNjM.mjs').then(function (n) { return n.an; });
99
+ const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-CumVWywx.mjs').then(function (n) { return n.an; });
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-ux1fl1qK.mjs');
346
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
424
+ const { connectAndResolveSession } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
478
+ const { connectAndResolveSession } = await import('./commands-BiJbQChb.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 { _ as resolveModel } from './run-BtIiSNjM.mjs';
1
+ import { _ as resolveModel } from './run-CumVWywx.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { $ as clearStopMarker, a0 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-BtIiSNjM.mjs';
1
+ import { $ as clearStopMarker, a0 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-CumVWywx.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-BtIiSNjM.mjs').then(function (n) { return n.ak; });
36
+ const { getLoadedConfig } = await import('./run-CumVWywx.mjs').then(function (n) { return n.ak; });
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-BtIiSNjM.mjs').then(function (n) { return n.au; });
55
+ const mod = await import('./run-CumVWywx.mjs').then(function (n) { return n.au; });
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-GYPd_Ddj.mjs');
359
+ const { handleServiceCommand } = await import('./commands-BXRsOufU.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-DdZcK0Q9.mjs');
367
+ const { handleServeCommand } = await import('./serveCommands-DPVITK3a.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-TFNC2BuR.mjs');
376
+ const { processCommand } = await import('./commands-D95wyAGb.mjs');
377
377
  let machineId;
378
378
  const processArgs = args.slice(1);
379
379
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -387,22 +387,22 @@ async function main() {
387
387
  }), machineId);
388
388
  process.exit(0);
389
389
  } else if (subcommand === "issue" || subcommand === "issues") {
390
- const { issueCommand } = await import('./commands-1FkeAcQD.mjs');
390
+ const { issueCommand } = await import('./commands-DVQTULwh.mjs');
391
391
  await issueCommand(args.slice(1));
392
392
  await flushAndExit(0);
393
393
  } else if (subcommand === "workflow" || subcommand === "workflows") {
394
- const { workflowCommand } = await import('./commands-Chlqo2DT.mjs');
394
+ const { workflowCommand } = await import('./commands-CBIRneT7.mjs');
395
395
  await workflowCommand(args.slice(1));
396
396
  await flushAndExit(0);
397
397
  } else if (subcommand === "wise-agent" || subcommand === "wise") {
398
398
  await handleWiseAgentCommand(args.slice(1));
399
399
  process.exit(0);
400
400
  } else if (subcommand === "feature" || subcommand === "crew") {
401
- const { crewCommand } = await import('./commands-C_XFxrjC.mjs');
401
+ const { crewCommand } = await import('./commands-BzMbBsGM.mjs');
402
402
  await crewCommand(args.slice(1));
403
403
  process.exit(0);
404
404
  } else if (subcommand === "notify") {
405
- const { notifyUser } = await import('./notifyCommands-BrD5qNdF.mjs');
405
+ const { notifyUser } = await import('./notifyCommands-Db7qJUME.mjs');
406
406
  const rest = args.slice(1);
407
407
  let email;
408
408
  const o = {};
@@ -416,8 +416,24 @@ async function main() {
416
416
  }
417
417
  await notifyUser(email, o);
418
418
  process.exit(0);
419
+ } else if (subcommand === "admin") {
420
+ const adminSub = args[1];
421
+ if (adminSub === "set-collection-config") {
422
+ const { setCollectionConfig } = await import('./adminCommands-7A_djft2.mjs');
423
+ const rest = args.slice(2);
424
+ let alias;
425
+ let configJson;
426
+ for (let i = 0; i < rest.length; i++) {
427
+ if (rest[i] === "--config" && i + 1 < rest.length) configJson = rest[++i];
428
+ else if (!rest[i].startsWith("-") && !alias) alias = rest[i];
429
+ }
430
+ await setCollectionConfig(alias, configJson);
431
+ } else {
432
+ console.error("Usage: svamp admin set-collection-config <alias> --config '<json>'");
433
+ }
434
+ process.exit(0);
419
435
  } else if (subcommand === "events") {
420
- const { listEvents, ackEvent } = await import('./notifyCommands-BrD5qNdF.mjs');
436
+ const { listEvents, ackEvent } = await import('./notifyCommands-Db7qJUME.mjs');
421
437
  const sub = args[1];
422
438
  const rest = args.slice(2);
423
439
  let email;
@@ -438,7 +454,7 @@ async function main() {
438
454
  } else if (!subcommand || subcommand === "start") {
439
455
  await handleInteractiveCommand();
440
456
  } else if (subcommand === "--version" || subcommand === "-v") {
441
- const pkg = await import('./package-BVdnXBp4.mjs').catch(() => ({ default: { version: "unknown" } }));
457
+ const pkg = await import('./package-Cuybud2_.mjs').catch(() => ({ default: { version: "unknown" } }));
442
458
  console.log(`svamp version: ${pkg.default.version}`);
443
459
  } else {
444
460
  console.error(`Unknown command: ${subcommand}`);
@@ -447,7 +463,7 @@ async function main() {
447
463
  }
448
464
  }
449
465
  async function handleInteractiveCommand() {
450
- const { runInteractive } = await import('./run-B10NKlSF.mjs');
466
+ const { runInteractive } = await import('./run-CRuLlPmv.mjs');
451
467
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
452
468
  let directory = process.cwd();
453
469
  let resumeSessionId;
@@ -492,7 +508,7 @@ async function handleAgentCommand() {
492
508
  return;
493
509
  }
494
510
  if (agentArgs[0] === "list") {
495
- const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.aq; });
511
+ const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-CumVWywx.mjs').then(function (n) { return n.aq; });
496
512
  console.log("Known agents:");
497
513
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
498
514
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -504,7 +520,7 @@ async function handleAgentCommand() {
504
520
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
505
521
  return;
506
522
  }
507
- const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.aq; });
523
+ const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-CumVWywx.mjs').then(function (n) { return n.aq; });
508
524
  let cwd = process.cwd();
509
525
  const filteredArgs = [];
510
526
  for (let i = 0; i < agentArgs.length; i++) {
@@ -528,12 +544,12 @@ async function handleAgentCommand() {
528
544
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
529
545
  let backend;
530
546
  if (KNOWN_CODEX_AGENTS[config.agentName]) {
531
- const { CodexAppServerBackend } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.ar; });
547
+ const { CodexAppServerBackend } = await import('./run-CumVWywx.mjs').then(function (n) { return n.ar; });
532
548
  backend = new CodexAppServerBackend({ cwd, log: logFn });
533
549
  } else {
534
- const { AcpBackend } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.ap; });
535
- const { GeminiTransport } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.as; });
536
- const { DefaultTransport } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.ao; });
550
+ const { AcpBackend } = await import('./run-CumVWywx.mjs').then(function (n) { return n.ap; });
551
+ const { GeminiTransport } = await import('./run-CumVWywx.mjs').then(function (n) { return n.as; });
552
+ const { DefaultTransport } = await import('./run-CumVWywx.mjs').then(function (n) { return n.ao; });
537
553
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
538
554
  backend = new AcpBackend({
539
555
  agentName: config.agentName,
@@ -660,7 +676,7 @@ async function handleSessionCommand() {
660
676
  process.exit(1);
661
677
  }
662
678
  }
663
- 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-ux1fl1qK.mjs');
679
+ 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-BiJbQChb.mjs');
664
680
  const parseFlagStr = (flag, shortFlag) => {
665
681
  for (let i = 1; i < sessionArgs.length; i++) {
666
682
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -728,7 +744,7 @@ async function handleSessionCommand() {
728
744
  allowDomain.push(sessionArgs[++i]);
729
745
  }
730
746
  }
731
- const { parseShareArg } = await import('./commands-ux1fl1qK.mjs');
747
+ const { parseShareArg } = await import('./commands-BiJbQChb.mjs');
732
748
  const shareEntries = share.map((s) => parseShareArg(s));
733
749
  await sessionSpawn(agent, dir, targetMachineId, {
734
750
  message,
@@ -818,7 +834,7 @@ async function handleSessionCommand() {
818
834
  console.error(" Rewinds history: rewrites the message + drops everything after it, then restarts Claude.");
819
835
  process.exit(1);
820
836
  }
821
- const { sessionEditMessage } = await import('./commands-ux1fl1qK.mjs');
837
+ const { sessionEditMessage } = await import('./commands-BiJbQChb.mjs');
822
838
  await sessionEditMessage(sessionArgs[1], sessionArgs[2], sessionArgs[3], targetMachineId);
823
839
  } else if (sessionSubcommand === "refine") {
824
840
  if (!sessionArgs[1] || !sessionArgs[2]) {
@@ -826,7 +842,7 @@ async function handleSessionCommand() {
826
842
  console.error(" Asks the agent to revise its latest reply in place (no extra round).");
827
843
  process.exit(1);
828
844
  }
829
- const { sessionRefineLastReply } = await import('./commands-ux1fl1qK.mjs');
845
+ const { sessionRefineLastReply } = await import('./commands-BiJbQChb.mjs');
830
846
  await sessionRefineLastReply(sessionArgs[1], sessionArgs[2], targetMachineId);
831
847
  } else if (sessionSubcommand === "undo-edit" || sessionSubcommand === "undo") {
832
848
  if (!sessionArgs[1]) {
@@ -834,7 +850,7 @@ async function handleSessionCommand() {
834
850
  console.error(" Reverts the most recent edit/refine, restoring the pre-edit history.");
835
851
  process.exit(1);
836
852
  }
837
- const { sessionUndoEdit } = await import('./commands-ux1fl1qK.mjs');
853
+ const { sessionUndoEdit } = await import('./commands-BiJbQChb.mjs');
838
854
  await sessionUndoEdit(sessionArgs[1], targetMachineId);
839
855
  } else if (sessionSubcommand === "query") {
840
856
  const dir = sessionArgs[1];
@@ -844,7 +860,7 @@ async function handleSessionCommand() {
844
860
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
845
861
  process.exit(1);
846
862
  }
847
- const { sessionQuery } = await import('./commands-ux1fl1qK.mjs');
863
+ const { sessionQuery } = await import('./commands-BiJbQChb.mjs');
848
864
  await sessionQuery(dir, prompt, targetMachineId, {
849
865
  timeout: parseFlagInt("--timeout"),
850
866
  json: hasFlag("--json"),
@@ -877,7 +893,7 @@ async function handleSessionCommand() {
877
893
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
878
894
  process.exit(1);
879
895
  }
880
- const { sessionApprove } = await import('./commands-ux1fl1qK.mjs');
896
+ const { sessionApprove } = await import('./commands-BiJbQChb.mjs');
881
897
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
882
898
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
883
899
  json: hasFlag("--json")
@@ -887,7 +903,7 @@ async function handleSessionCommand() {
887
903
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
888
904
  process.exit(1);
889
905
  }
890
- const { sessionDeny } = await import('./commands-ux1fl1qK.mjs');
906
+ const { sessionDeny } = await import('./commands-BiJbQChb.mjs');
891
907
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
892
908
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
893
909
  json: hasFlag("--json")
@@ -939,7 +955,7 @@ async function handleSessionCommand() {
939
955
  console.error("Usage: svamp session set-title <title>");
940
956
  process.exit(1);
941
957
  }
942
- const { sessionSetTitle } = await import('./agentCommands-CZjZsqJC.mjs');
958
+ const { sessionSetTitle } = await import('./agentCommands-SejhmIxj.mjs');
943
959
  await sessionSetTitle(title);
944
960
  } else if (sessionSubcommand === "set-project-description" || sessionSubcommand === "set-project") {
945
961
  const desc = sessionArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
@@ -947,7 +963,7 @@ async function handleSessionCommand() {
947
963
  console.error("Usage: svamp session set-project-description <text>");
948
964
  process.exit(1);
949
965
  }
950
- const { sessionSetProjectDescription } = await import('./agentCommands-CZjZsqJC.mjs');
966
+ const { sessionSetProjectDescription } = await import('./agentCommands-SejhmIxj.mjs');
951
967
  await sessionSetProjectDescription(desc);
952
968
  } else if (sessionSubcommand === "set-link") {
953
969
  const url = sessionArgs[1];
@@ -956,11 +972,11 @@ async function handleSessionCommand() {
956
972
  process.exit(1);
957
973
  }
958
974
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
959
- const { sessionSetLink } = await import('./agentCommands-CZjZsqJC.mjs');
975
+ const { sessionSetLink } = await import('./agentCommands-SejhmIxj.mjs');
960
976
  await sessionSetLink(url, label);
961
977
  } else if (sessionSubcommand === "link") {
962
978
  const op = sessionArgs[1];
963
- const lm = await import('./agentCommands-CZjZsqJC.mjs');
979
+ const lm = await import('./agentCommands-SejhmIxj.mjs');
964
980
  if (op === "add") {
965
981
  const url = sessionArgs[2];
966
982
  if (!url || url.startsWith("--")) {
@@ -995,7 +1011,7 @@ async function handleSessionCommand() {
995
1011
  process.exit(1);
996
1012
  }
997
1013
  const level = parseFlagStr("--level") || "info";
998
- const { sessionNotify } = await import('./agentCommands-CZjZsqJC.mjs');
1014
+ const { sessionNotify } = await import('./agentCommands-SejhmIxj.mjs');
999
1015
  await sessionNotify(message, level);
1000
1016
  } else if (sessionSubcommand === "broadcast") {
1001
1017
  const action = sessionArgs[1];
@@ -1003,7 +1019,7 @@ async function handleSessionCommand() {
1003
1019
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
1004
1020
  process.exit(1);
1005
1021
  }
1006
- const { sessionBroadcast } = await import('./agentCommands-CZjZsqJC.mjs');
1022
+ const { sessionBroadcast } = await import('./agentCommands-SejhmIxj.mjs');
1007
1023
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
1008
1024
  } else if (sessionSubcommand === "inbox") {
1009
1025
  const inboxSubcmd = sessionArgs[1];
@@ -1014,7 +1030,7 @@ async function handleSessionCommand() {
1014
1030
  process.exit(1);
1015
1031
  }
1016
1032
  if (agentSessionId) {
1017
- const { inboxSend } = await import('./agentCommands-CZjZsqJC.mjs');
1033
+ const { inboxSend } = await import('./agentCommands-SejhmIxj.mjs');
1018
1034
  await inboxSend(sessionArgs[2], {
1019
1035
  body: sessionArgs[3],
1020
1036
  subject: parseFlagStr("--subject"),
@@ -1029,7 +1045,7 @@ async function handleSessionCommand() {
1029
1045
  }
1030
1046
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
1031
1047
  if (agentSessionId && !sessionArgs[2]) {
1032
- const { inboxList } = await import('./agentCommands-CZjZsqJC.mjs');
1048
+ const { inboxList } = await import('./agentCommands-SejhmIxj.mjs');
1033
1049
  await inboxList({
1034
1050
  unread: hasFlag("--unread"),
1035
1051
  limit: parseFlagInt("--limit"),
@@ -1051,7 +1067,7 @@ async function handleSessionCommand() {
1051
1067
  process.exit(1);
1052
1068
  }
1053
1069
  if (agentSessionId && !sessionArgs[3]) {
1054
- const { inboxList } = await import('./agentCommands-CZjZsqJC.mjs');
1070
+ const { inboxList } = await import('./agentCommands-SejhmIxj.mjs');
1055
1071
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
1056
1072
  } else if (sessionArgs[3]) {
1057
1073
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -1061,7 +1077,7 @@ async function handleSessionCommand() {
1061
1077
  }
1062
1078
  } else if (inboxSubcmd === "reply") {
1063
1079
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
1064
- const { inboxReply } = await import('./agentCommands-CZjZsqJC.mjs');
1080
+ const { inboxReply } = await import('./agentCommands-SejhmIxj.mjs');
1065
1081
  await inboxReply(sessionArgs[2], sessionArgs[3]);
1066
1082
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
1067
1083
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -1099,7 +1115,7 @@ async function handleMachineCommand() {
1099
1115
  return;
1100
1116
  }
1101
1117
  if (machineSubcommand === "share") {
1102
- const { machineShare } = await import('./commands-ux1fl1qK.mjs');
1118
+ const { machineShare } = await import('./commands-BiJbQChb.mjs');
1103
1119
  let machineId;
1104
1120
  const shareArgs = [];
1105
1121
  for (let i = 1; i < machineArgs.length; i++) {
@@ -1150,14 +1166,14 @@ async function handleMachineCommand() {
1150
1166
  process.exit(1);
1151
1167
  }
1152
1168
  if (all) {
1153
- const { fleetExec } = await import('./fleet-cu0bUH3v.mjs');
1169
+ const { fleetExec } = await import('./fleet-CIFev16_.mjs');
1154
1170
  await fleetExec(command, { cwd });
1155
1171
  } else {
1156
- const { machineExec } = await import('./commands-ux1fl1qK.mjs');
1172
+ const { machineExec } = await import('./commands-BiJbQChb.mjs');
1157
1173
  await machineExec(machineId, command, cwd);
1158
1174
  }
1159
1175
  } else if (machineSubcommand === "info") {
1160
- const { machineInfo } = await import('./commands-ux1fl1qK.mjs');
1176
+ const { machineInfo } = await import('./commands-BiJbQChb.mjs');
1161
1177
  let machineId;
1162
1178
  for (let i = 1; i < machineArgs.length; i++) {
1163
1179
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -1177,10 +1193,10 @@ async function handleMachineCommand() {
1177
1193
  level = machineArgs[++i];
1178
1194
  }
1179
1195
  }
1180
- const { machineNotify } = await import('./agentCommands-CZjZsqJC.mjs');
1196
+ const { machineNotify } = await import('./agentCommands-SejhmIxj.mjs');
1181
1197
  await machineNotify(message, level);
1182
1198
  } else if (machineSubcommand === "ls") {
1183
- const { machineLs } = await import('./commands-ux1fl1qK.mjs');
1199
+ const { machineLs } = await import('./commands-BiJbQChb.mjs');
1184
1200
  let machineId;
1185
1201
  let showHidden = false;
1186
1202
  let path;
@@ -1239,20 +1255,20 @@ Examples:
1239
1255
  };
1240
1256
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1241
1257
  if (sub === "status") {
1242
- const { fleetStatus } = await import('./fleet-cu0bUH3v.mjs');
1258
+ const { fleetStatus } = await import('./fleet-CIFev16_.mjs');
1243
1259
  await fleetStatus();
1244
1260
  } else if (sub === "upgrade-claude") {
1245
- const { fleetUpgradeClaude } = await import('./fleet-cu0bUH3v.mjs');
1261
+ const { fleetUpgradeClaude } = await import('./fleet-CIFev16_.mjs');
1246
1262
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1247
1263
  } else if (sub === "upgrade-svamp") {
1248
- const { fleetUpgradeSvamp } = await import('./fleet-cu0bUH3v.mjs');
1264
+ const { fleetUpgradeSvamp } = await import('./fleet-CIFev16_.mjs');
1249
1265
  await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self"), force: hasFlag("force") });
1250
1266
  } else if (sub === "daemon-restart") {
1251
- const { fleetDaemonRestart } = await import('./fleet-cu0bUH3v.mjs');
1267
+ const { fleetDaemonRestart } = await import('./fleet-CIFev16_.mjs');
1252
1268
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1253
1269
  } else if (sub === "push-skill") {
1254
1270
  const name = fleetArgs[1];
1255
- const { fleetPushSkill } = await import('./fleet-cu0bUH3v.mjs');
1271
+ const { fleetPushSkill } = await import('./fleet-CIFev16_.mjs');
1256
1272
  await fleetPushSkill(name);
1257
1273
  } else {
1258
1274
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1268,7 +1284,7 @@ async function handleSkillsCommand() {
1268
1284
  await printSkillsHelp();
1269
1285
  return;
1270
1286
  }
1271
- const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-DW0HvMa8.mjs');
1287
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-3oQU6Zbl.mjs');
1272
1288
  if (skillsSubcommand === "find" || skillsSubcommand === "search") {
1273
1289
  const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1274
1290
  if (!query) {
@@ -1315,7 +1331,7 @@ async function loginToHypha() {
1315
1331
  process.exit(1);
1316
1332
  }
1317
1333
  const anchor = anchorArg.replace(/\/+$/, "");
1318
- const { loadInstanceConfig } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.ak; });
1334
+ const { loadInstanceConfig } = await import('./run-CumVWywx.mjs').then(function (n) { return n.ak; });
1319
1335
  let cfg = null;
1320
1336
  try {
1321
1337
  cfg = await loadInstanceConfig({ anchor, force: true });
@@ -1426,7 +1442,7 @@ async function logoutFromHypha() {
1426
1442
  } catch {
1427
1443
  }
1428
1444
  try {
1429
- const { clearInstanceConfigCache } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.ak; });
1445
+ const { clearInstanceConfigCache } = await import('./run-CumVWywx.mjs').then(function (n) { return n.ak; });
1430
1446
  clearInstanceConfigCache();
1431
1447
  } catch {
1432
1448
  }
@@ -1765,7 +1781,7 @@ async function applyClaudeAuthFlags(argv) {
1765
1781
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1766
1782
  );
1767
1783
  }
1768
- const mod = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.al; });
1784
+ const mod = await import('./run-CumVWywx.mjs').then(function (n) { return n.al; });
1769
1785
  if (hasHypha) {
1770
1786
  let url;
1771
1787
  const hyphaIdx = argv.indexOf("--use-hypha-proxy");
@@ -1819,7 +1835,7 @@ async function applyDaemonShareFlag(argv) {
1819
1835
  }
1820
1836
  }
1821
1837
  if (collected.length === 0) return;
1822
- const { updateEnvFile } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.al; });
1838
+ const { updateEnvFile } = await import('./run-CumVWywx.mjs').then(function (n) { return n.al; });
1823
1839
  const seen = /* @__PURE__ */ new Set();
1824
1840
  const deduped = collected.filter((e) => {
1825
1841
  const k = e.toLowerCase();
@@ -1852,7 +1868,7 @@ async function handleWiseAgentCommand(rest) {
1852
1868
  }
1853
1869
  });
1854
1870
  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(" ");
1855
- const { wiseAskCli } = await import('./commands-ux1fl1qK.mjs');
1871
+ const { wiseAskCli } = await import('./commands-BiJbQChb.mjs');
1856
1872
  await wiseAskCli(machineId, message, sessionId, { json });
1857
1873
  return;
1858
1874
  }
@@ -1864,7 +1880,7 @@ async function handleWiseAgentCommand(rest) {
1864
1880
  }
1865
1881
  return void 0;
1866
1882
  };
1867
- const { runWiseVoiceCli } = await import('./headlessCli-BvoiOGxZ.mjs');
1883
+ const { runWiseVoiceCli } = await import('./headlessCli-CfRDf2kB.mjs');
1868
1884
  await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
1869
1885
  return;
1870
1886
  }
@@ -1882,7 +1898,7 @@ async function handleWiseAgentCommand(rest) {
1882
1898
  const mode = valueOf(["--mode"]);
1883
1899
  const mission = valueOf(["--mission"]);
1884
1900
  const url = rest.slice(1).find((a) => /^https?:\/\//.test(a)) || "";
1885
- const { wiseJoinMeetingCli } = await import('./commands-ux1fl1qK.mjs');
1901
+ const { wiseJoinMeetingCli } = await import('./commands-BiJbQChb.mjs');
1886
1902
  await wiseJoinMeetingCli(machineId, url, sessionId, { json, mode, mission });
1887
1903
  return;
1888
1904
  }
@@ -1894,7 +1910,7 @@ async function handleWiseAgentCommand(rest) {
1894
1910
  }
1895
1911
  return void 0;
1896
1912
  };
1897
- const { wiseLeaveMeetingCli } = await import('./commands-ux1fl1qK.mjs');
1913
+ const { wiseLeaveMeetingCli } = await import('./commands-BiJbQChb.mjs');
1898
1914
  await wiseLeaveMeetingCli(valueOf(["--machine", "-m"]), valueOf(["--session", "-s"]), { json: rest.includes("--json") });
1899
1915
  return;
1900
1916
  }
@@ -1918,7 +1934,7 @@ async function handleWiseAgentCommand(rest) {
1918
1934
  }
1919
1935
  });
1920
1936
  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(" ");
1921
- const { wiseAnnounceCli } = await import('./commands-ux1fl1qK.mjs');
1937
+ const { wiseAnnounceCli } = await import('./commands-BiJbQChb.mjs');
1922
1938
  await wiseAnnounceCli(machineId, text, sessionId, { json });
1923
1939
  return;
1924
1940
  }
@@ -1930,7 +1946,7 @@ async function handleWiseAgentCommand(rest) {
1930
1946
  }
1931
1947
  return void 0;
1932
1948
  };
1933
- const { wiseMeetingsCli } = await import('./commands-ux1fl1qK.mjs');
1949
+ const { wiseMeetingsCli } = await import('./commands-BiJbQChb.mjs');
1934
1950
  await wiseMeetingsCli(valueOf(["--machine", "-m"]), { json: rest.includes("--json") });
1935
1951
  return;
1936
1952
  }
@@ -1980,7 +1996,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1980
1996
  return;
1981
1997
  }
1982
1998
  const authArgs = rest.slice(1);
1983
- const mod = await import('./auth-CFWhaPVg.mjs');
1999
+ const mod = await import('./auth-Bp-lcNvX.mjs');
1984
2000
  let action;
1985
2001
  try {
1986
2002
  action = mod.parseWiseAgentAuthArgs(authArgs);
@@ -1990,7 +2006,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
1990
2006
  return;
1991
2007
  }
1992
2008
  if (action) {
1993
- const { updateEnvFile } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.al; });
2009
+ const { updateEnvFile } = await import('./run-CumVWywx.mjs').then(function (n) { return n.al; });
1994
2010
  const updates = mod.buildWiseAgentEnvUpdates(action);
1995
2011
  updateEnvFile(updates);
1996
2012
  for (const [k, v] of Object.entries(updates)) {
@@ -2004,7 +2020,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
2004
2020
  }
2005
2021
  async function handleDaemonAuthCommand(argv) {
2006
2022
  const sub = (argv[0] || "status").toLowerCase();
2007
- const mod = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.al; });
2023
+ const mod = await import('./run-CumVWywx.mjs').then(function (n) { return n.al; });
2008
2024
  if (sub === "--help" || sub === "-h" || sub === "help") {
2009
2025
  console.log(`
2010
2026
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -2078,8 +2094,8 @@ one step: --use-hypha-proxy / --use-claude-login / --anthropic-base-url URL --an
2078
2094
  }
2079
2095
  async function handleDaemonCodexAuthCommand(argv) {
2080
2096
  const sub = (argv[0] || "status").toLowerCase();
2081
- const { updateEnvFile } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.al; });
2082
- const { resolveCodexProvider } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.am; });
2097
+ const { updateEnvFile } = await import('./run-CumVWywx.mjs').then(function (n) { return n.al; });
2098
+ const { resolveCodexProvider } = await import('./run-CumVWywx.mjs').then(function (n) { return n.am; });
2083
2099
  const redact = (k) => k && k.length > 10 ? `${k.slice(0, 6)}\u2026${k.slice(-4)}` : k ? "***" : "(unset)";
2084
2100
  if (sub === "--help" || sub === "-h" || sub === "help") {
2085
2101
  console.log(`
@@ -2411,7 +2427,7 @@ Examples:
2411
2427
  async function printSkillsHelp() {
2412
2428
  let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
2413
2429
  try {
2414
- const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-BtIiSNjM.mjs').then(function (n) { return n.at; });
2430
+ const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-CumVWywx.mjs').then(function (n) { return n.at; });
2415
2431
  browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
2416
2432
  } catch {
2417
2433
  }
package/dist/cli.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import './run-BtIiSNjM.mjs';
1
+ import './run-CumVWywx.mjs';
2
2
  import './serviceManager-hlOVxkhW.mjs';
3
- import './cli-E1osBiyj.mjs';
3
+ import './cli-DqFchp_7.mjs';
4
4
  import 'os';
5
5
  import 'fs/promises';
6
6
  import 'fs';
@@ -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 { O as parseFrontmatter, P as getSkillsServer, Q as getSkillsWorkspaceName, T as getSkillsCollectionName, U as fetchWithTimeout, V as searchSkills, W as SKILLS_DIR, X as getSkillInfo, Y as downloadSkillFile, Z as listSkillFiles } from './run-BtIiSNjM.mjs';
4
+ import { O as parseFrontmatter, P as getSkillsServer, Q as getSkillsWorkspaceName, T as getSkillsCollectionName, U as fetchWithTimeout, V as searchSkills, W as SKILLS_DIR, X as getSkillInfo, Y as downloadSkillFile, Z as listSkillFiles } from './run-CumVWywx.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -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-B1-dyz8z.mjs');
63
+ const { runFrpcTunnel } = await import('./frpc-Czt8diGB.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-ux1fl1qK.mjs');
73
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-CZjZsqJC.mjs');
95
+ const { autoAddSessionLink } = await import('./agentCommands-SejhmIxj.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-BtIiSNjM.mjs').then(function (n) { return n.aj; });
132
+ const { serveStaticMount } = await import('./run-CumVWywx.mjs').then(function (n) { return n.aj; });
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-B1-dyz8z.mjs');
143
+ const { runFrpcTunnel } = await import('./frpc-Czt8diGB.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-ux1fl1qK.mjs');
153
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
193
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.mjs');
194
194
  const { server, machine } = await connectAndGetMachine();
195
195
  try {
196
196
  await machine.tunnelStop({ name });
@@ -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 { a1 as formatHandle, a2 as normalizeAllowedUser, a3 as loadSecurityContextConfig, a4 as resolveSecurityContext, a5 as buildSecurityContextFromFlags, a6 as mergeSecurityContexts, c as connectToHypha, a7 as buildSessionShareUrl, a8 as computeOutboundHop, i as shortId, a9 as registerAwaitingReply, aa as buildMachineShareUrl, ab as parseHandle, ac as handleMatchesMetadata } from './run-BtIiSNjM.mjs';
5
+ import { a1 as formatHandle, a2 as normalizeAllowedUser, a3 as loadSecurityContextConfig, a4 as resolveSecurityContext, a5 as buildSecurityContextFromFlags, a6 as mergeSecurityContexts, c as connectToHypha, a7 as buildSessionShareUrl, a8 as computeOutboundHop, i as shortId, a9 as registerAwaitingReply, aa as buildMachineShareUrl, ab as parseHandle, ac as handleMatchesMetadata } from './run-CumVWywx.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -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-ux1fl1qK.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-BiJbQChb.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-BtIiSNjM.mjs';
5
+ import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-CumVWywx.mjs';
6
6
  import 'node:os';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -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-BtIiSNjM.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-CumVWywx.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
5
5
  import 'fs';
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-ux1fl1qK.mjs';
3
+ import { connectAndGetMachine } from './commands-BiJbQChb.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-BtIiSNjM.mjs';
8
+ import './run-CumVWywx.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -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-E1osBiyj.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-BtIiSNjM.mjs';
4
+ import { f as flushAndExit } from './cli-DqFchp_7.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-CumVWywx.mjs';
6
6
  import './serviceManager-hlOVxkhW.mjs';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -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-BtIiSNjM.mjs';
4
+ import { c as connectToHypha } from './run-CumVWywx.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-BtIiSNjM.mjs';
7
+ import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-CumVWywx.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
- import { _ as resolveModel, ad as describeMisconfiguration, ae as buildMachineDeps } from './run-BtIiSNjM.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BjUyyMW7.mjs';
1
+ import { _ as resolveModel, ad as describeMisconfiguration, ae as buildMachineDeps } from './run-CumVWywx.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-CHcbWta4.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-BtIiSNjM.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-CumVWywx.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-BtIiSNjM.mjs';
1
+ import { c as connectToHypha, S as SharingNotificationSync, J as parseJwtEmail } from './run-CumVWywx.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.279";
2
+ var version = "0.2.280";
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, 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-BtIiSNjM.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-CumVWywx.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -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-BtIiSNjM.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-CumVWywx.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { af as applyClaudeProxyEnv, ag as composeSessionId, ah as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ai as generateHookSettings } from './run-BtIiSNjM.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { af as applyClaudeProxyEnv, ag as composeSessionId, ah as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ai as generateHookSettings } from './run-CumVWywx.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';
@@ -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-B1-dyz8z.mjs');
2976
+ const { FrpcTunnel } = await import('./frpc-Czt8diGB.mjs');
2977
2977
  let tunnel;
2978
2978
  tunnel = new FrpcTunnel({
2979
2979
  name: tunnelName,
@@ -5816,7 +5816,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
5816
5816
  const tunnels = handlers.tunnels;
5817
5817
  if (!tunnels) throw new Error("Tunnel management not available");
5818
5818
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
5819
- const { FrpcTunnel } = await import('./frpc-B1-dyz8z.mjs');
5819
+ const { FrpcTunnel } = await import('./frpc-Czt8diGB.mjs');
5820
5820
  const tunnel = new FrpcTunnel({
5821
5821
  name: params.name,
5822
5822
  ports: params.ports,
@@ -6292,7 +6292,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
6292
6292
  }
6293
6293
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
6294
6294
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
6295
- const { toolsForRole } = await import('./sideband-BjUyyMW7.mjs');
6295
+ const { toolsForRole } = await import('./sideband-CHcbWta4.mjs');
6296
6296
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
6297
6297
  return fmt(r2);
6298
6298
  }
@@ -6391,7 +6391,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
6391
6391
  if (r.error || !r.sender) return { error: r.error || "unauthorized" };
6392
6392
  const callId = "call_" + Math.random().toString(16).slice(2, 12);
6393
6393
  const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
6394
- const { queryCore } = await import('./commands-ux1fl1qK.mjs');
6394
+ const { queryCore } = await import('./commands-BiJbQChb.mjs');
6395
6395
  const timeout = c.reply?.timeout_sec || 120;
6396
6396
  let result;
6397
6397
  try {
@@ -9496,9 +9496,6 @@ class SharingNotificationSync {
9496
9496
  artifact_id: alias,
9497
9497
  _rkwargs: true
9498
9498
  });
9499
- if (extraConfig) {
9500
- await this.reconcileCollectionConfig(alias, existing, extraConfig);
9501
- }
9502
9499
  return existing.id;
9503
9500
  } catch {
9504
9501
  const collection = await this.artifactManager.create({
@@ -9517,27 +9514,6 @@ class SharingNotificationSync {
9517
9514
  return collection.id;
9518
9515
  }
9519
9516
  }
9520
- /**
9521
- * Add `extraConfig` keys to an EXISTING collection's config if any are missing, preserving the
9522
- * current config (permissions etc.). One-time + best-effort — see ensureCollection for rationale.
9523
- */
9524
- async reconcileCollectionConfig(alias, existing, extraConfig) {
9525
- try {
9526
- const cfg = existing?.config || {};
9527
- const missing = Object.entries(extraConfig).some(([k, v]) => cfg[k] !== v);
9528
- if (!missing) return;
9529
- await this.artifactManager.edit({
9530
- artifact_id: existing.id,
9531
- config: { ...cfg, ...extraConfig },
9532
- _rkwargs: true
9533
- });
9534
- await this.artifactManager.commit({ artifact_id: existing.id, _rkwargs: true }).catch(() => {
9535
- });
9536
- this.log(`[SHARING NOTIFY] Reconciled config on ${alias} \u2014 added recipient-scoping flag`);
9537
- } catch (err) {
9538
- this.log(`[SHARING NOTIFY] Config reconcile on ${alias} skipped: ${err?.message || err}`);
9539
- }
9540
- }
9541
9517
  // ── Share bookmark artifacts (svamp-shared-sessions) ──────────────
9542
9518
  async notifyShare(params) {
9543
9519
  if (!this.initialized || !this.shareCollectionId) return;
@@ -16209,7 +16185,7 @@ async function startDaemon(options) {
16209
16185
  try {
16210
16186
  const dir = loadSessionIndex()[sessionId]?.directory;
16211
16187
  if (!dir) return;
16212
- const { reconcileServiceLinks } = await import('./agentCommands-CZjZsqJC.mjs');
16188
+ const { reconcileServiceLinks } = await import('./agentCommands-SejhmIxj.mjs');
16213
16189
  const configPath = getSvampConfigPath(dir, sessionId);
16214
16190
  const config = readSvampConfig(configPath);
16215
16191
  const entries = Array.from(urls.entries());
@@ -16227,7 +16203,7 @@ async function startDaemon(options) {
16227
16203
  }
16228
16204
  }
16229
16205
  async function createExposedTunnel(spec) {
16230
- const { FrpcTunnel } = await import('./frpc-B1-dyz8z.mjs');
16206
+ const { FrpcTunnel } = await import('./frpc-Czt8diGB.mjs');
16231
16207
  const tunnel = new FrpcTunnel({
16232
16208
  name: spec.name,
16233
16209
  ports: spec.ports,
@@ -18443,11 +18419,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
18443
18419
  });
18444
18420
  },
18445
18421
  onIssue: async (params) => {
18446
- const { issueRpc } = await import('./rpc-2I8SlTrz.mjs');
18422
+ const { issueRpc } = await import('./rpc-B_zN6Jvr.mjs');
18447
18423
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
18448
18424
  },
18449
18425
  onWorkflow: async (params) => {
18450
- const { workflowRpc } = await import('./rpc-DKY7-oh-.mjs');
18426
+ const { workflowRpc } = await import('./rpc-AkzY2NVv.mjs');
18451
18427
  return workflowRpc(params?.cwd || directory, params || {});
18452
18428
  },
18453
18429
  onRipgrep: async (args, cwd) => {
@@ -19059,11 +19035,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
19059
19035
  });
19060
19036
  },
19061
19037
  onIssue: async (params) => {
19062
- const { issueRpc } = await import('./rpc-2I8SlTrz.mjs');
19038
+ const { issueRpc } = await import('./rpc-B_zN6Jvr.mjs');
19063
19039
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
19064
19040
  },
19065
19041
  onWorkflow: async (params) => {
19066
- const { workflowRpc } = await import('./rpc-DKY7-oh-.mjs');
19042
+ const { workflowRpc } = await import('./rpc-AkzY2NVv.mjs');
19067
19043
  return workflowRpc(params?.cwd || directory, params || {});
19068
19044
  },
19069
19045
  onRipgrep: async (args, cwd) => {
@@ -20178,7 +20154,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
20178
20154
  const PING_TIMEOUT_MS = 15e3;
20179
20155
  const POST_RECONNECT_GRACE_MS = 2e4;
20180
20156
  const RECONNECT_JITTER_MS = 2500;
20181
- const { WorkflowScheduler } = await import('./scheduler-BOnAtzax.mjs');
20157
+ const { WorkflowScheduler } = await import('./scheduler-MPYVrdzd.mjs');
20182
20158
  const workflowScheduler = new WorkflowScheduler({
20183
20159
  projectRoots: () => {
20184
20160
  const dirs = /* @__PURE__ */ new Set();
@@ -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-BtIiSNjM.mjs';
1
+ import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-CumVWywx.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-ux1fl1qK.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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-ux1fl1qK.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-BiJbQChb.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, K as loadMachineContext, L as buildMachineInstructions, M as machineToolsForRole, N as buildMachineTools } from './run-BtIiSNjM.mjs';
1
+ import { R as READ_ONLY_TOOLS, K as loadMachineContext, L as buildMachineInstructions, M as machineToolsForRole, N as buildMachineTools } from './run-CumVWywx.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.279",
3
+ "version": "0.2.280",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",