svamp-cli 0.2.66 → 0.2.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -148,7 +148,7 @@ async function sessionBroadcast(action, args) {
148
148
  console.log(`Broadcast sent: ${action}`);
149
149
  }
150
150
  async function connectToMachineService() {
151
- const { connectAndGetMachine } = await import('./commands-Dcb26Zu0.mjs');
151
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
168
+ const { resolveSessionId } = await import('./commands-BO8gl_-u.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-Bcz2Dpyc.mjs';
1
+ import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-DZq12r28.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-Bcz2Dpyc.mjs').then(function (n) { return n.u; });
47
+ const { restartDaemon } = await import('./run-DZq12r28.mjs').then(function (n) { return n.u; });
48
48
  await restartDaemon();
49
49
  process.exit(0);
50
50
  }
@@ -280,7 +280,7 @@ async function main() {
280
280
  console.error("svamp service: Service commands are not available in sandboxed sessions.");
281
281
  process.exit(1);
282
282
  }
283
- const { handleServiceCommand } = await import('./commands-BmQQgxLZ.mjs');
283
+ const { handleServiceCommand } = await import('./commands-B6yUtg85.mjs');
284
284
  await handleServiceCommand();
285
285
  } else if (subcommand === "serve") {
286
286
  const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
@@ -288,7 +288,7 @@ async function main() {
288
288
  console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
289
289
  process.exit(1);
290
290
  }
291
- const { handleServeCommand } = await import('./serveCommands-pQMyiqPh.mjs');
291
+ const { handleServeCommand } = await import('./serveCommands-B-Ij7oce.mjs');
292
292
  await handleServeCommand();
293
293
  process.exit(0);
294
294
  } else if (subcommand === "process" || subcommand === "proc") {
@@ -297,7 +297,7 @@ async function main() {
297
297
  console.error("svamp process: Process commands are not available in sandboxed sessions.");
298
298
  process.exit(1);
299
299
  }
300
- const { processCommand } = await import('./commands-C2ePBKc_.mjs');
300
+ const { processCommand } = await import('./commands-D7A1aWC1.mjs');
301
301
  let machineId;
302
302
  const processArgs = args.slice(1);
303
303
  const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
@@ -315,7 +315,7 @@ async function main() {
315
315
  } else if (!subcommand || subcommand === "start") {
316
316
  await handleInteractiveCommand();
317
317
  } else if (subcommand === "--version" || subcommand === "-v") {
318
- const pkg = await import('./package-CsXMkPql.mjs').catch(() => ({ default: { version: "unknown" } }));
318
+ const pkg = await import('./package-wAsRM-Wx.mjs').catch(() => ({ default: { version: "unknown" } }));
319
319
  console.log(`svamp version: ${pkg.default.version}`);
320
320
  } else {
321
321
  console.error(`Unknown command: ${subcommand}`);
@@ -324,7 +324,7 @@ async function main() {
324
324
  }
325
325
  }
326
326
  async function handleInteractiveCommand() {
327
- const { runInteractive } = await import('./run-IqvcJfA9.mjs');
327
+ const { runInteractive } = await import('./run-B4a6wAxf.mjs');
328
328
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
329
329
  let directory = process.cwd();
330
330
  let resumeSessionId;
@@ -369,7 +369,7 @@ async function handleAgentCommand() {
369
369
  return;
370
370
  }
371
371
  if (agentArgs[0] === "list") {
372
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.p; });
372
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-DZq12r28.mjs').then(function (n) { return n.p; });
373
373
  console.log("Known agents:");
374
374
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
375
375
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -381,7 +381,7 @@ async function handleAgentCommand() {
381
381
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
382
382
  return;
383
383
  }
384
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.p; });
384
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-DZq12r28.mjs').then(function (n) { return n.p; });
385
385
  let cwd = process.cwd();
386
386
  const filteredArgs = [];
387
387
  for (let i = 0; i < agentArgs.length; i++) {
@@ -405,12 +405,12 @@ async function handleAgentCommand() {
405
405
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
406
406
  let backend;
407
407
  if (KNOWN_MCP_AGENTS[config.agentName]) {
408
- const { CodexMcpBackend } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.q; });
408
+ const { CodexMcpBackend } = await import('./run-DZq12r28.mjs').then(function (n) { return n.q; });
409
409
  backend = new CodexMcpBackend({ cwd, log: logFn });
410
410
  } else {
411
- const { AcpBackend } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.o; });
412
- const { GeminiTransport } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.G; });
413
- const { DefaultTransport } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.D; });
411
+ const { AcpBackend } = await import('./run-DZq12r28.mjs').then(function (n) { return n.o; });
412
+ const { GeminiTransport } = await import('./run-DZq12r28.mjs').then(function (n) { return n.G; });
413
+ const { DefaultTransport } = await import('./run-DZq12r28.mjs').then(function (n) { return n.D; });
414
414
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
415
415
  backend = new AcpBackend({
416
416
  agentName: config.agentName,
@@ -537,7 +537,7 @@ async function handleSessionCommand() {
537
537
  process.exit(1);
538
538
  }
539
539
  }
540
- const { sessionList, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-Dcb26Zu0.mjs');
540
+ const { sessionList, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-BO8gl_-u.mjs');
541
541
  const parseFlagStr = (flag, shortFlag) => {
542
542
  for (let i = 1; i < sessionArgs.length; i++) {
543
543
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -597,7 +597,7 @@ async function handleSessionCommand() {
597
597
  allowDomain.push(sessionArgs[++i]);
598
598
  }
599
599
  }
600
- const { parseShareArg } = await import('./commands-Dcb26Zu0.mjs');
600
+ const { parseShareArg } = await import('./commands-BO8gl_-u.mjs');
601
601
  const shareEntries = share.map((s) => parseShareArg(s));
602
602
  await sessionSpawn(agent, dir, targetMachineId, {
603
603
  message,
@@ -695,7 +695,7 @@ async function handleSessionCommand() {
695
695
  console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
696
696
  process.exit(1);
697
697
  }
698
- const { sessionApprove } = await import('./commands-Dcb26Zu0.mjs');
698
+ const { sessionApprove } = await import('./commands-BO8gl_-u.mjs');
699
699
  const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
700
700
  await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
701
701
  json: hasFlag("--json")
@@ -705,7 +705,7 @@ async function handleSessionCommand() {
705
705
  console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
706
706
  process.exit(1);
707
707
  }
708
- const { sessionDeny } = await import('./commands-Dcb26Zu0.mjs');
708
+ const { sessionDeny } = await import('./commands-BO8gl_-u.mjs');
709
709
  const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
710
710
  await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
711
711
  json: hasFlag("--json")
@@ -741,7 +741,7 @@ async function handleSessionCommand() {
741
741
  console.error("Usage: svamp session set-title <title>");
742
742
  process.exit(1);
743
743
  }
744
- const { sessionSetTitle } = await import('./agentCommands-C8Qd8G_t.mjs');
744
+ const { sessionSetTitle } = await import('./agentCommands-CVmNxFdC.mjs');
745
745
  await sessionSetTitle(title);
746
746
  } else if (sessionSubcommand === "set-link") {
747
747
  const url = sessionArgs[1];
@@ -750,7 +750,7 @@ async function handleSessionCommand() {
750
750
  process.exit(1);
751
751
  }
752
752
  const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
753
- const { sessionSetLink } = await import('./agentCommands-C8Qd8G_t.mjs');
753
+ const { sessionSetLink } = await import('./agentCommands-CVmNxFdC.mjs');
754
754
  await sessionSetLink(url, label);
755
755
  } else if (sessionSubcommand === "notify") {
756
756
  const message = sessionArgs[1];
@@ -759,7 +759,7 @@ async function handleSessionCommand() {
759
759
  process.exit(1);
760
760
  }
761
761
  const level = parseFlagStr("--level") || "info";
762
- const { sessionNotify } = await import('./agentCommands-C8Qd8G_t.mjs');
762
+ const { sessionNotify } = await import('./agentCommands-CVmNxFdC.mjs');
763
763
  await sessionNotify(message, level);
764
764
  } else if (sessionSubcommand === "broadcast") {
765
765
  const action = sessionArgs[1];
@@ -767,7 +767,7 @@ async function handleSessionCommand() {
767
767
  console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
768
768
  process.exit(1);
769
769
  }
770
- const { sessionBroadcast } = await import('./agentCommands-C8Qd8G_t.mjs');
770
+ const { sessionBroadcast } = await import('./agentCommands-CVmNxFdC.mjs');
771
771
  await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
772
772
  } else if (sessionSubcommand === "inbox") {
773
773
  const inboxSubcmd = sessionArgs[1];
@@ -778,7 +778,7 @@ async function handleSessionCommand() {
778
778
  process.exit(1);
779
779
  }
780
780
  if (agentSessionId) {
781
- const { inboxSend } = await import('./agentCommands-C8Qd8G_t.mjs');
781
+ const { inboxSend } = await import('./agentCommands-CVmNxFdC.mjs');
782
782
  await inboxSend(sessionArgs[2], {
783
783
  body: sessionArgs[3],
784
784
  subject: parseFlagStr("--subject"),
@@ -793,7 +793,7 @@ async function handleSessionCommand() {
793
793
  }
794
794
  } else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
795
795
  if (agentSessionId && !sessionArgs[2]) {
796
- const { inboxList } = await import('./agentCommands-C8Qd8G_t.mjs');
796
+ const { inboxList } = await import('./agentCommands-CVmNxFdC.mjs');
797
797
  await inboxList({
798
798
  unread: hasFlag("--unread"),
799
799
  limit: parseFlagInt("--limit"),
@@ -815,7 +815,7 @@ async function handleSessionCommand() {
815
815
  process.exit(1);
816
816
  }
817
817
  if (agentSessionId && !sessionArgs[3]) {
818
- const { inboxList } = await import('./agentCommands-C8Qd8G_t.mjs');
818
+ const { inboxList } = await import('./agentCommands-CVmNxFdC.mjs');
819
819
  await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
820
820
  } else if (sessionArgs[3]) {
821
821
  await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
@@ -825,7 +825,7 @@ async function handleSessionCommand() {
825
825
  }
826
826
  } else if (inboxSubcmd === "reply") {
827
827
  if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
828
- const { inboxReply } = await import('./agentCommands-C8Qd8G_t.mjs');
828
+ const { inboxReply } = await import('./agentCommands-CVmNxFdC.mjs');
829
829
  await inboxReply(sessionArgs[2], sessionArgs[3]);
830
830
  } else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
831
831
  await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
@@ -861,7 +861,7 @@ async function handleMachineCommand() {
861
861
  return;
862
862
  }
863
863
  if (machineSubcommand === "share") {
864
- const { machineShare } = await import('./commands-Dcb26Zu0.mjs');
864
+ const { machineShare } = await import('./commands-BO8gl_-u.mjs');
865
865
  let machineId;
866
866
  const shareArgs = [];
867
867
  for (let i = 1; i < machineArgs.length; i++) {
@@ -891,7 +891,7 @@ async function handleMachineCommand() {
891
891
  }
892
892
  await machineShare(machineId, { add, remove, list, configPath, showConfig });
893
893
  } else if (machineSubcommand === "exec") {
894
- const { machineExec } = await import('./commands-Dcb26Zu0.mjs');
894
+ const { machineExec } = await import('./commands-BO8gl_-u.mjs');
895
895
  let machineId;
896
896
  let cwd;
897
897
  const cmdParts = [];
@@ -911,7 +911,7 @@ async function handleMachineCommand() {
911
911
  }
912
912
  await machineExec(machineId, command, cwd);
913
913
  } else if (machineSubcommand === "info") {
914
- const { machineInfo } = await import('./commands-Dcb26Zu0.mjs');
914
+ const { machineInfo } = await import('./commands-BO8gl_-u.mjs');
915
915
  let machineId;
916
916
  for (let i = 1; i < machineArgs.length; i++) {
917
917
  if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
@@ -931,10 +931,10 @@ async function handleMachineCommand() {
931
931
  level = machineArgs[++i];
932
932
  }
933
933
  }
934
- const { machineNotify } = await import('./agentCommands-C8Qd8G_t.mjs');
934
+ const { machineNotify } = await import('./agentCommands-CVmNxFdC.mjs');
935
935
  await machineNotify(message, level);
936
936
  } else if (machineSubcommand === "ls") {
937
- const { machineLs } = await import('./commands-Dcb26Zu0.mjs');
937
+ const { machineLs } = await import('./commands-BO8gl_-u.mjs');
938
938
  let machineId;
939
939
  let showHidden = false;
940
940
  let path;
@@ -1403,7 +1403,7 @@ async function applyClaudeAuthFlags(argv) {
1403
1403
  "--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
1404
1404
  );
1405
1405
  }
1406
- const mod = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.t; });
1406
+ const mod = await import('./run-DZq12r28.mjs').then(function (n) { return n.t; });
1407
1407
  if (hasHypha) {
1408
1408
  mod.setClaudeAuthHyphaProxy();
1409
1409
  console.log("Claude auth configured: hypha-proxy (uses HYPHA_TOKEN live at each spawn).");
@@ -1441,7 +1441,7 @@ async function applyDaemonShareFlag(argv) {
1441
1441
  }
1442
1442
  }
1443
1443
  if (collected.length === 0) return;
1444
- const { updateEnvFile } = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.t; });
1444
+ const { updateEnvFile } = await import('./run-DZq12r28.mjs').then(function (n) { return n.t; });
1445
1445
  const seen = /* @__PURE__ */ new Set();
1446
1446
  const deduped = collected.filter((e) => {
1447
1447
  const k = e.toLowerCase();
@@ -1454,7 +1454,7 @@ async function applyDaemonShareFlag(argv) {
1454
1454
  }
1455
1455
  async function handleDaemonAuthCommand(argv) {
1456
1456
  const sub = (argv[0] || "status").toLowerCase();
1457
- const mod = await import('./run-Bcz2Dpyc.mjs').then(function (n) { return n.t; });
1457
+ const mod = await import('./run-DZq12r28.mjs').then(function (n) { return n.t; });
1458
1458
  if (sub === "--help" || sub === "-h" || sub === "help") {
1459
1459
  console.log(`
1460
1460
  svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
@@ -68,7 +68,7 @@ async function serviceExpose(args) {
68
68
  });
69
69
  return;
70
70
  }
71
- const { connectAndGetMachine } = await import('./commands-Dcb26Zu0.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
135
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
164
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.mjs');
165
165
  const { server, machine } = await connectAndGetMachine();
166
166
  try {
167
167
  await machine.tunnelStop({ name });
@@ -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-Bcz2Dpyc.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-DZq12r28.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-Dcb26Zu0.mjs';
3
+ import { connectAndGetMachine } from './commands-BO8gl_-u.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-Bcz2Dpyc.mjs';
8
+ import './run-DZq12r28.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
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-Bcz2Dpyc.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-DZq12r28.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.66";
2
+ var version = "0.2.67";
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";
@@ -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-Bcz2Dpyc.mjs';
5
+ import { c as connectToHypha, a as registerSessionService, k as generateHookSettings } from './run-DZq12r28.mjs';
6
6
  import { createServer } from 'node:http';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { createInterface } from 'node:readline';
@@ -7816,7 +7816,7 @@ async function startDaemon(options) {
7816
7816
  const list = loadExposedTunnels().filter((t) => t.name !== name);
7817
7817
  saveExposedTunnels(list);
7818
7818
  }
7819
- const { ServeManager } = await import('./serveManager-DhJ3TJ2a.mjs');
7819
+ const { ServeManager } = await import('./serveManager-D4f3wiSO.mjs');
7820
7820
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
7821
7821
  ensureAutoInstalledSkills(logger).catch(() => {
7822
7822
  });
@@ -8001,6 +8001,7 @@ async function startDaemon(options) {
8001
8001
  startedFromDaemon: true,
8002
8002
  startedBy: "daemon",
8003
8003
  lifecycleState: resumeSessionId ? "idle" : "starting",
8004
+ ...resumeSessionId && { claudeSessionId: resumeSessionId },
8004
8005
  sharing: options2.sharing,
8005
8006
  securityContext: options2.securityContext,
8006
8007
  tags: options2.tags,
@@ -8716,7 +8717,16 @@ The automated loop has finished. Review the progress above and let me know if yo
8716
8717
  artifactSync.scheduleDebouncedSync(sessionId, getSessionDir(directory, sessionId), sessionMetadata, machineId);
8717
8718
  }
8718
8719
  if (isResumeFailure) {
8719
- logger.log(`[Session ${sessionId}] Resume failed \u2014 Claude started fresh session (tried: ${persisted?.claudeResumeId ?? "unknown"}, got: ${msg.session_id})`);
8720
+ const triedId = persisted?.claudeResumeId ?? "unknown";
8721
+ logger.log(`[Session ${sessionId}] Resume failed \u2014 Claude started fresh session (tried: ${triedId}, got: ${msg.session_id})`);
8722
+ sessionService.pushMessage(
8723
+ {
8724
+ type: "message",
8725
+ message: `Resume incomplete \u2014 Claude could not restore the previous conversation. A new Claude session was started (expected ${triedId.slice(0, 8)}\u2026, got ${msg.session_id.slice(0, 8)}\u2026). Earlier messages remain in the history above for reference, but Claude does not have them in its context.`,
8726
+ level: "warning"
8727
+ },
8728
+ "event"
8729
+ );
8720
8730
  } else if (isConversationClear) {
8721
8731
  logger.log(`[Session ${sessionId}] Conversation cleared (/clear) \u2014 new Claude session: ${msg.session_id}`);
8722
8732
  sessionService.clearMessages();
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-Dcb26Zu0.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Dcb26Zu0.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-BO8gl_-u.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-Bcz2Dpyc.mjs';
7
+ import { S as ServeAuth, h as hasCookieToken } from './run-DZq12r28.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.66",
3
+ "version": "0.2.67",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",