svamp-cli 0.2.73 → 0.2.74

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.
@@ -47,7 +47,7 @@ While the agent is still emitting the body content (closing `</artifact>` not ye
47
47
  src="./outputs/viz.html" <!-- file path OR absolute URL; OR omit and use inline body -->
48
48
  title="Dashboard" <!-- header label -->
49
49
  height="540" <!-- fixed pixel height (10..4000); default = auto-size for files -->
50
- wide <!-- extend beyond bubble width -->
50
+ width="80%" <!-- px number (10..4000) or percentage; default = full chat-column width -->
51
51
  mode="default" <!-- "default" | "bare" | "immersive" | "card" -->
52
52
  description="..." <!-- card mode: summary text -->
53
53
  poster="./outputs/thumb.png" <!-- card mode: thumbnail image -->
@@ -69,7 +69,7 @@ Either `src` or an inline body is required. All other attributes optional.
69
69
 
70
70
  - `title` — short artifact name ("3D scene", "Sales dashboard"). Surfaced in the header, the new-tab title, and the singleton "Newer version of …" pill.
71
71
  - `height` — for content with no natural document height (Three.js scenes, video, fullscreen apps, URL embeds). For URL `src`, defaults to 540 px because auto-resize can't work cross-origin.
72
- - `wide` — for content that needs more horizontal space than a chat bubble.
72
+ - `width` — rarely needed. Artifacts span the **full chat-column width by default**. Set a px value or percentage (e.g. `width="400"`, `width="60%"`) only to deliberately shrink an artifact — a small widget that shouldn't be column-wide. The chat-column cap still applies, so this only narrows, never widens past the column.
73
73
  - `description` / `poster` — only used in card mode.
74
74
 
75
75
  ### Header / menu
@@ -148,7 +148,7 @@ async function sessionBroadcast(action, args) {
148
148
  console.log(`Broadcast sent: ${action}`);
149
149
  }
150
150
  async function connectToMachineService() {
151
- const { connectAndGetMachine } = await import('./commands-DV0URNXH.mjs');
151
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.mjs');
152
152
  return connectAndGetMachine();
153
153
  }
154
154
  async function inboxSend(targetSessionId, opts) {
@@ -165,7 +165,7 @@ async function inboxSend(targetSessionId, opts) {
165
165
  }
166
166
  const { server, machine } = await connectToMachineService();
167
167
  try {
168
- const { resolveSessionId } = await import('./commands-DV0URNXH.mjs');
168
+ const { resolveSessionId } = await import('./commands--SLXTrkN.mjs');
169
169
  const sessions = await machine.listSessions();
170
170
  const match = resolveSessionId(sessions, targetSessionId);
171
171
  const fullTargetId = match.sessionId;
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-CC-0bNTe.mjs';
1
+ import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-Br90om8R.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -44,7 +44,7 @@ async function main() {
44
44
  console.error(`svamp daemon restart: ${err.message || err}`);
45
45
  process.exit(1);
46
46
  }
47
- const { restartDaemon } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.u; });
47
+ const { restartDaemon } = await import('./run-Br90om8R.mjs').then(function (n) { return n.u; });
48
48
  await restartDaemon();
49
49
  process.exit(0);
50
50
  }
@@ -287,7 +287,7 @@ async function main() {
287
287
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
288
288
  process.exit(1);
289
289
  }
290
- const { handleServiceCommand } = await import('./commands-DJVdDzTe.mjs');
290
+ const { handleServiceCommand } = await import('./commands-yzpViN29.mjs');
291
291
  await handleServiceCommand();
292
292
  } else if (subcommand === "serve") {
293
293
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -295,7 +295,7 @@ async function main() {
295
295
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
296
296
  process.exit(1);
297
297
  }
298
- const { handleServeCommand } = await import('./serveCommands-BeQKrUIn.mjs');
298
+ const { handleServeCommand } = await import('./serveCommands-Cu_2l3vg.mjs');
299
299
  await handleServeCommand();
300
300
  process.exit(0);
301
301
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -304,7 +304,7 @@ async function main() {
304
304
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
305
305
  process.exit(1);
306
306
  }
307
- const { processCommand } = await import('./commands-Cyp2k10B.mjs');
307
+ const { processCommand } = await import('./commands-BTZCHV-Z.mjs');
308
308
  let machineId;
309
309
  const processArgs = args.slice(1);
310
310
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -322,7 +322,7 @@ async function main() {
322
322
  } else if (!subcommand || subcommand === "start") {
323
323
  await handleInteractiveCommand();
324
324
  } else if (subcommand === "--version" || subcommand === "-v") {
325
- const pkg = await import('./package-O54lUaPi.mjs').catch(() => ({ default: { version: "unknown" } }));
325
+ const pkg = await import('./package-C__x7TGc.mjs').catch(() => ({ default: { version: "unknown" } }));
326
326
  console.log(`svamp version: ${pkg.default.version}`);
327
327
  } else {
328
328
  console.error(`Unknown command: ${subcommand}`);
@@ -331,7 +331,7 @@ async function main() {
331
331
  }
332
332
  }
333
333
  async function handleInteractiveCommand() {
334
- const { runInteractive } = await import('./run-D4yrAi1I.mjs');
334
+ const { runInteractive } = await import('./run-DO_Axr2M.mjs');
335
335
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
336
336
  let directory = process.cwd();
337
337
  let resumeSessionId;
@@ -376,7 +376,7 @@ async function handleAgentCommand() {
376
376
  return;
377
377
  }
378
378
  if (agentArgs[0] === "list") {
379
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.p; });
379
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-Br90om8R.mjs').then(function (n) { return n.p; });
380
380
  console.log("Known agents:");
381
381
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
382
382
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -388,7 +388,7 @@ async function handleAgentCommand() {
388
388
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
389
389
  return;
390
390
  }
391
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.p; });
391
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-Br90om8R.mjs').then(function (n) { return n.p; });
392
392
  let cwd = process.cwd();
393
393
  const filteredArgs = [];
394
394
  for (let i = 0; i < agentArgs.length; i++) {
@@ -412,12 +412,12 @@ async function handleAgentCommand() {
412
412
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
413
413
  let backend;
414
414
  if (KNOWN_MCP_AGENTS[config.agentName]) {
415
- const { CodexMcpBackend } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.q; });
415
+ const { CodexMcpBackend } = await import('./run-Br90om8R.mjs').then(function (n) { return n.q; });
416
416
  backend = new CodexMcpBackend({ cwd, log: logFn });
417
417
  } else {
418
- const { AcpBackend } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.o; });
419
- const { GeminiTransport } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.G; });
420
- const { DefaultTransport } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.D; });
418
+ const { AcpBackend } = await import('./run-Br90om8R.mjs').then(function (n) { return n.o; });
419
+ const { GeminiTransport } = await import('./run-Br90om8R.mjs').then(function (n) { return n.G; });
420
+ const { DefaultTransport } = await import('./run-Br90om8R.mjs').then(function (n) { return n.D; });
421
421
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
422
422
  backend = new AcpBackend({
423
423
  agentName: config.agentName,
@@ -544,7 +544,7 @@ async function handleSessionCommand() {
544
544
  process.exit(1);
545
545
  }
546
546
  }
547
- const { sessionList, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-DV0URNXH.mjs');
547
+ const { sessionList, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands--SLXTrkN.mjs');
548
548
  const parseFlagStr = (flag, shortFlag) => {
549
549
  for (let i = 1; i < sessionArgs.length; i++) {
550
550
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -610,7 +610,7 @@ async function handleSessionCommand() {
610
610
  allowDomain.push(sessionArgs[++i]);
611
611
  }
612
612
  }
613
- const { parseShareArg } = await import('./commands-DV0URNXH.mjs');
613
+ const { parseShareArg } = await import('./commands--SLXTrkN.mjs');
614
614
  const shareEntries = share.map((s) => parseShareArg(s));
615
615
  await sessionSpawn(agent, dir, targetMachineId, {
616
616
  message,
@@ -694,7 +694,7 @@ async function handleSessionCommand() {
694
694
  console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
695
695
  process.exit(1);
696
696
  }
697
- const { sessionQuery } = await import('./commands-DV0URNXH.mjs');
697
+ const { sessionQuery } = await import('./commands--SLXTrkN.mjs');
698
698
  await sessionQuery(dir, prompt, targetMachineId, {
699
699
  timeout: parseFlagInt("--timeout"),
700
700
  json: hasFlag("--json"),
@@ -727,7 +727,7 @@ async function handleSessionCommand() {
727
727
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
728
728
  process.exit(1);
729
729
  }
730
- const { sessionApprove } = await import('./commands-DV0URNXH.mjs');
730
+ const { sessionApprove } = await import('./commands--SLXTrkN.mjs');
731
731
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
732
732
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
733
733
  json: hasFlag("--json")
@@ -737,7 +737,7 @@ async function handleSessionCommand() {
737
737
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
738
738
  process.exit(1);
739
739
  }
740
- const { sessionDeny } = await import('./commands-DV0URNXH.mjs');
740
+ const { sessionDeny } = await import('./commands--SLXTrkN.mjs');
741
741
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
742
742
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
743
743
  json: hasFlag("--json")
@@ -773,7 +773,7 @@ async function handleSessionCommand() {
773
773
  console.error("Usage: svamp session set-title <title>");
774
774
  process.exit(1);
775
775
  }
776
- const { sessionSetTitle } = await import('./agentCommands-C1Q4jqOT.mjs');
776
+ const { sessionSetTitle } = await import('./agentCommands-BXQNGfyi.mjs');
777
777
  await sessionSetTitle(title);
778
778
  } else if (sessionSubcommand === "set-link") {
779
779
  const url = sessionArgs[1];
@@ -782,7 +782,7 @@ async function handleSessionCommand() {
782
782
  process.exit(1);
783
783
  }
784
784
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
785
- const { sessionSetLink } = await import('./agentCommands-C1Q4jqOT.mjs');
785
+ const { sessionSetLink } = await import('./agentCommands-BXQNGfyi.mjs');
786
786
  await sessionSetLink(url, label);
787
787
  } else if (sessionSubcommand === "notify") {
788
788
  const message = sessionArgs[1];
@@ -791,7 +791,7 @@ async function handleSessionCommand() {
791
791
  process.exit(1);
792
792
  }
793
793
  const level = parseFlagStr("--level") || "info";
794
- const { sessionNotify } = await import('./agentCommands-C1Q4jqOT.mjs');
794
+ const { sessionNotify } = await import('./agentCommands-BXQNGfyi.mjs');
795
795
  await sessionNotify(message, level);
796
796
  } else if (sessionSubcommand === "broadcast") {
797
797
  const action = sessionArgs[1];
@@ -799,7 +799,7 @@ async function handleSessionCommand() {
799
799
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
800
800
  process.exit(1);
801
801
  }
802
- const { sessionBroadcast } = await import('./agentCommands-C1Q4jqOT.mjs');
802
+ const { sessionBroadcast } = await import('./agentCommands-BXQNGfyi.mjs');
803
803
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
804
804
  } else if (sessionSubcommand === "inbox") {
805
805
  const inboxSubcmd = sessionArgs[1];
@@ -810,7 +810,7 @@ async function handleSessionCommand() {
810
810
  process.exit(1);
811
811
  }
812
812
  if (agentSessionId) {
813
- const { inboxSend } = await import('./agentCommands-C1Q4jqOT.mjs');
813
+ const { inboxSend } = await import('./agentCommands-BXQNGfyi.mjs');
814
814
  await inboxSend(sessionArgs[2], {
815
815
  body: sessionArgs[3],
816
816
  subject: parseFlagStr("--subject"),
@@ -825,7 +825,7 @@ async function handleSessionCommand() {
825
825
  }
826
826
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
827
827
  if (agentSessionId && !sessionArgs[2]) {
828
- const { inboxList } = await import('./agentCommands-C1Q4jqOT.mjs');
828
+ const { inboxList } = await import('./agentCommands-BXQNGfyi.mjs');
829
829
  await inboxList({
830
830
  unread: hasFlag("--unread"),
831
831
  limit: parseFlagInt("--limit"),
@@ -847,7 +847,7 @@ async function handleSessionCommand() {
847
847
  process.exit(1);
848
848
  }
849
849
  if (agentSessionId && !sessionArgs[3]) {
850
- const { inboxList } = await import('./agentCommands-C1Q4jqOT.mjs');
850
+ const { inboxList } = await import('./agentCommands-BXQNGfyi.mjs');
851
851
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
852
852
  } else if (sessionArgs[3]) {
853
853
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -857,7 +857,7 @@ async function handleSessionCommand() {
857
857
  }
858
858
  } else if (inboxSubcmd === "reply") {
859
859
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
860
- const { inboxReply } = await import('./agentCommands-C1Q4jqOT.mjs');
860
+ const { inboxReply } = await import('./agentCommands-BXQNGfyi.mjs');
861
861
  await inboxReply(sessionArgs[2], sessionArgs[3]);
862
862
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
863
863
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -893,7 +893,7 @@ async function handleMachineCommand() {
893
893
  return;
894
894
  }
895
895
  if (machineSubcommand === "share") {
896
- const { machineShare } = await import('./commands-DV0URNXH.mjs');
896
+ const { machineShare } = await import('./commands--SLXTrkN.mjs');
897
897
  let machineId;
898
898
  const shareArgs = [];
899
899
  for (let i = 1; i < machineArgs.length; i++) {
@@ -923,7 +923,7 @@ async function handleMachineCommand() {
923
923
  }
924
924
  await machineShare(machineId, { add, remove, list, configPath, showConfig });
925
925
  } else if (machineSubcommand === "exec") {
926
- const { machineExec } = await import('./commands-DV0URNXH.mjs');
926
+ const { machineExec } = await import('./commands--SLXTrkN.mjs');
927
927
  let machineId;
928
928
  let cwd;
929
929
  const cmdParts = [];
@@ -943,7 +943,7 @@ async function handleMachineCommand() {
943
943
  }
944
944
  await machineExec(machineId, command, cwd);
945
945
  } else if (machineSubcommand === "info") {
946
- const { machineInfo } = await import('./commands-DV0URNXH.mjs');
946
+ const { machineInfo } = await import('./commands--SLXTrkN.mjs');
947
947
  let machineId;
948
948
  for (let i = 1; i < machineArgs.length; i++) {
949
949
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -963,10 +963,10 @@ async function handleMachineCommand() {
963
963
  level = machineArgs[++i];
964
964
  }
965
965
  }
966
- const { machineNotify } = await import('./agentCommands-C1Q4jqOT.mjs');
966
+ const { machineNotify } = await import('./agentCommands-BXQNGfyi.mjs');
967
967
  await machineNotify(message, level);
968
968
  } else if (machineSubcommand === "ls") {
969
- const { machineLs } = await import('./commands-DV0URNXH.mjs');
969
+ const { machineLs } = await import('./commands--SLXTrkN.mjs');
970
970
  let machineId;
971
971
  let showHidden = false;
972
972
  let path;
@@ -1020,24 +1020,24 @@ Examples:
1020
1020
  };
1021
1021
  const hasFlag = (name) => fleetArgs.includes(`--${name}`);
1022
1022
  if (sub === "status") {
1023
- const { fleetStatus } = await import('./fleet-B9CWHUv1.mjs');
1023
+ const { fleetStatus } = await import('./fleet-DMajjqRV.mjs');
1024
1024
  await fleetStatus();
1025
1025
  } else if (sub === "exec") {
1026
1026
  const command = fleetArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
1027
- const { fleetExec } = await import('./fleet-B9CWHUv1.mjs');
1027
+ const { fleetExec } = await import('./fleet-DMajjqRV.mjs');
1028
1028
  await fleetExec(command, { cwd: flag("cwd") });
1029
1029
  } else if (sub === "upgrade-claude") {
1030
- const { fleetUpgradeClaude } = await import('./fleet-B9CWHUv1.mjs');
1030
+ const { fleetUpgradeClaude } = await import('./fleet-DMajjqRV.mjs');
1031
1031
  await fleetUpgradeClaude({ version: flag("version", "-v") });
1032
1032
  } else if (sub === "upgrade-svamp") {
1033
- const { fleetUpgradeSvamp } = await import('./fleet-B9CWHUv1.mjs');
1033
+ const { fleetUpgradeSvamp } = await import('./fleet-DMajjqRV.mjs');
1034
1034
  await fleetUpgradeSvamp({ version: flag("version", "-v") });
1035
1035
  } else if (sub === "daemon-restart") {
1036
- const { fleetDaemonRestart } = await import('./fleet-B9CWHUv1.mjs');
1036
+ const { fleetDaemonRestart } = await import('./fleet-DMajjqRV.mjs');
1037
1037
  await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
1038
1038
  } else if (sub === "push-skill") {
1039
1039
  const name = fleetArgs[1];
1040
- const { fleetPushSkill } = await import('./fleet-B9CWHUv1.mjs');
1040
+ const { fleetPushSkill } = await import('./fleet-DMajjqRV.mjs');
1041
1041
  await fleetPushSkill(name);
1042
1042
  } else {
1043
1043
  console.error(`Unknown fleet subcommand: ${sub}`);
@@ -1496,7 +1496,7 @@ async function applyClaudeAuthFlags(argv) {
1496
1496
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1497
1497
  );
1498
1498
  }
1499
- const mod = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.t; });
1499
+ const mod = await import('./run-Br90om8R.mjs').then(function (n) { return n.t; });
1500
1500
  if (hasHypha) {
1501
1501
  mod.setClaudeAuthHyphaProxy();
1502
1502
  console.log("Claude auth configured: hypha-proxy (uses HYPHA_TOKEN live at each spawn).");
@@ -1534,7 +1534,7 @@ async function applyDaemonShareFlag(argv) {
1534
1534
  }
1535
1535
  }
1536
1536
  if (collected.length === 0) return;
1537
- const { updateEnvFile } = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.t; });
1537
+ const { updateEnvFile } = await import('./run-Br90om8R.mjs').then(function (n) { return n.t; });
1538
1538
  const seen = /* @__PURE__ */ new Set();
1539
1539
  const deduped = collected.filter((e) => {
1540
1540
  const k = e.toLowerCase();
@@ -1547,7 +1547,7 @@ async function applyDaemonShareFlag(argv) {
1547
1547
  }
1548
1548
  async function handleDaemonAuthCommand(argv) {
1549
1549
  const sub = (argv[0] || "status").toLowerCase();
1550
- const mod = await import('./run-CC-0bNTe.mjs').then(function (n) { return n.t; });
1550
+ const mod = await import('./run-Br90om8R.mjs').then(function (n) { return n.t; });
1551
1551
  if (sub === "--help" || sub === "-h" || sub === "help") {
1552
1552
  console.log(`
1553
1553
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { resolve, join } from 'node:path';
4
4
  import os from 'node:os';
5
- import { n as normalizeAllowedUser, l as loadSecurityContextConfig, e as resolveSecurityContext, f as buildSecurityContextFromFlags, m as mergeSecurityContexts, c as connectToHypha, i as buildSessionShareUrl, j as buildMachineShareUrl } from './run-CC-0bNTe.mjs';
5
+ import { n as normalizeAllowedUser, l as loadSecurityContextConfig, e as resolveSecurityContext, f as buildSecurityContextFromFlags, m as mergeSecurityContexts, c as connectToHypha, i as buildSessionShareUrl, j as buildMachineShareUrl } from './run-Br90om8R.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-DV0URNXH.mjs';
3
+ import { connectAndGetMachine } from './commands--SLXTrkN.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-CC-0bNTe.mjs';
8
+ import './run-Br90om8R.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -68,7 +68,7 @@ async function serviceExpose(args) {
68
68
  });
69
69
  return;
70
70
  }
71
- const { connectAndGetMachine } = await import('./commands-DV0URNXH.mjs');
71
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.mjs');
72
72
  const { server, machine } = await connectAndGetMachine();
73
73
  try {
74
74
  const status = await machine.tunnelStart({
@@ -132,7 +132,7 @@ async function serviceServe(args) {
132
132
  }
133
133
  async function serviceList(_args) {
134
134
  try {
135
- const { connectAndGetMachine } = await import('./commands-DV0URNXH.mjs');
135
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.mjs');
136
136
  const { server, machine } = await connectAndGetMachine();
137
137
  try {
138
138
  const tunnels = await machine.tunnelList({});
@@ -161,7 +161,7 @@ async function serviceDelete(args) {
161
161
  process.exit(1);
162
162
  }
163
163
  try {
164
- const { connectAndGetMachine } = await import('./commands-DV0URNXH.mjs');
164
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.mjs');
165
165
  const { server, machine } = await connectAndGetMachine();
166
166
  try {
167
167
  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-CC-0bNTe.mjs';
4
+ import { c as connectToHypha } from './run-Br90om8R.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-HydRNEt7.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-CC-0bNTe.mjs';
1
+ export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-Br90om8R.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.73";
2
+ var version = "0.2.74";
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";
@@ -5804,12 +5804,28 @@ btn.addEventListener('click', async () => {
5804
5804
  if (!token) throw new Error('Timed out waiting for sign-in. Please try again.');
5805
5805
 
5806
5806
  // 4. Set the cookie so subsequent requests to this origin are authenticated.
5807
- const secure = location.protocol === 'https:' ? '; Secure' : '';
5808
- document.cookie = cookieName + '=' + token + '; path=/; SameSite=Lax' + secure;
5807
+ // Over HTTPS use SameSite=None; Secure so the cookie is still sent when
5808
+ // this page is framed cross-site (e.g. embedded as an <artifact> iframe
5809
+ // in the Svamp app) \u2014 SameSite=Lax would be dropped in that third-party
5810
+ // context. Fall back to Lax on plain HTTP (SameSite=None requires Secure).
5811
+ const isHttps = location.protocol === 'https:';
5812
+ const sameSite = isHttps ? '; SameSite=None; Secure' : '; SameSite=Lax';
5813
+ document.cookie = cookieName + '=' + token + '; path=/' + sameSite;
5814
+
5815
+ // Also carry the token in the redirect URL as a fallback: browsers that
5816
+ // block third-party cookies entirely (Safari ITP, Chrome 3p-cookie
5817
+ // phaseout) won't send the cookie above when we're framed cross-site, but
5818
+ // the proxy also accepts ?token= on the request. Harmless when the cookie
5819
+ // does work \u2014 extractToken() prefers the cookie.
5820
+ let dest = redirectUrl;
5821
+ try {
5822
+ const sep = dest.indexOf('?') === -1 ? '?' : '&';
5823
+ dest = dest + sep + 'token=' + encodeURIComponent(token);
5824
+ } catch (e) {}
5809
5825
 
5810
5826
  try { popup.close(); } catch (e) {}
5811
5827
  statusEl.innerHTML = '<span class="ok">Signed in. Redirecting\u2026</span>';
5812
- setTimeout(() => { window.location.replace(redirectUrl); }, 300);
5828
+ setTimeout(() => { window.location.replace(dest); }, 300);
5813
5829
  } catch (err) {
5814
5830
  try { popup.close(); } catch (e) {}
5815
5831
  setError('Login failed: ' + (err && err.message ? err.message : err));
@@ -7869,7 +7885,7 @@ async function startDaemon(options) {
7869
7885
  const list = loadExposedTunnels().filter((t) => t.name !== name);
7870
7886
  saveExposedTunnels(list);
7871
7887
  }
7872
- const { ServeManager } = await import('./serveManager-B9cemdRt.mjs');
7888
+ const { ServeManager } = await import('./serveManager-ClzowUXI.mjs');
7873
7889
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
7874
7890
  ensureAutoInstalledSkills(logger).catch(() => {
7875
7891
  });
@@ -2,7 +2,7 @@ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(im
2
2
  import os from 'node:os';
3
3
  import { resolve, join } from 'node:path';
4
4
  import { existsSync, readFileSync, watch } from 'node:fs';
5
- import { c as connectToHypha, a as registerSessionService, k as generateHookSettings } from './run-CC-0bNTe.mjs';
5
+ import { c as connectToHypha, a as registerSessionService, k as generateHookSettings } from './run-Br90om8R.mjs';
6
6
  import { createServer } from 'node:http';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { createInterface } from 'node:readline';
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-DV0URNXH.mjs');
57
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.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-DV0URNXH.mjs');
96
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.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-DV0URNXH.mjs');
185
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.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-DV0URNXH.mjs');
205
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.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-DV0URNXH.mjs');
238
+ const { connectAndGetMachine } = await import('./commands--SLXTrkN.mjs');
239
239
  const { machine, server } = await connectAndGetMachine(machineId);
240
240
  try {
241
241
  const info = await machine.serveInfo();
@@ -4,7 +4,7 @@ import * as fs from 'fs';
4
4
  import * as http from 'http';
5
5
  import * as net from 'net';
6
6
  import * as path from 'path';
7
- import { S as ServeAuth, h as hasCookieToken } from './run-CC-0bNTe.mjs';
7
+ import { S as ServeAuth, h as hasCookieToken } from './run-Br90om8R.mjs';
8
8
  import 'os';
9
9
  import 'fs/promises';
10
10
  import 'url';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svamp-cli",
3
- "version": "0.2.73",
3
+ "version": "0.2.74",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",