svamp-cli 0.2.276 → 0.2.278

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/{agentCommands-DYduijxc.mjs → agentCommands-SejhmIxj.mjs} +5 -5
  2. package/dist/{auth-DF4dUys9.mjs → auth-Bp-lcNvX.mjs} +1 -1
  3. package/dist/{cli-BrZuHfQa.mjs → cli-DXiODLrJ.mjs} +95 -63
  4. package/dist/cli.mjs +2 -2
  5. package/dist/{commands-DLlgY23R.mjs → commands-3oQU6Zbl.mjs} +1 -1
  6. package/dist/{commands-clA49kHW.mjs → commands-BXRsOufU.mjs} +7 -7
  7. package/dist/{commands-DINv6746.mjs → commands-BiJbQChb.mjs} +1 -1
  8. package/dist/{commands-7WZLaYv2.mjs → commands-BzMbBsGM.mjs} +2 -2
  9. package/dist/{commands-Cxn4Cmts.mjs → commands-CBIRneT7.mjs} +8 -7
  10. package/dist/{commands-BjkRYbLw.mjs → commands-D95wyAGb.mjs} +2 -2
  11. package/dist/{commands-DvD1mdMU.mjs → commands-DmebpYk0.mjs} +2 -2
  12. package/dist/{fleet-xyz1ik_N.mjs → fleet-CIFev16_.mjs} +2 -2
  13. package/dist/{frpc-BkGcc69x.mjs → frpc-Czt8diGB.mjs} +1 -1
  14. package/dist/{headlessCli-Je1q_pDw.mjs → headlessCli-CfRDf2kB.mjs} +2 -2
  15. package/dist/index.mjs +1 -1
  16. package/dist/notifyCommands-Db7qJUME.mjs +128 -0
  17. package/dist/package-Cbe1TG7k.mjs +64 -0
  18. package/dist/{pinnedClaudeCode-D8Tbz32G.mjs → pinnedClaudeCode-BaMR97BE.mjs} +1 -1
  19. package/dist/{rpc-CBa5WaBD.mjs → rpc-AkzY2NVv.mjs} +1 -3
  20. package/dist/{rpc-HiJYPcOU.mjs → rpc-B_zN6Jvr.mjs} +1 -1
  21. package/dist/{run-BRHMebDp.mjs → run-CRuLlPmv.mjs} +1 -1
  22. package/dist/{run-DjThStDG.mjs → run-CumVWywx.mjs} +103 -26
  23. package/dist/{scheduler-D1JpZ5m8.mjs → scheduler-MPYVrdzd.mjs} +1 -1
  24. package/dist/{serveCommands-D-3LtTUy.mjs → serveCommands-DPVITK3a.mjs} +5 -5
  25. package/dist/{sideband-DdcXgJHf.mjs → sideband-CHcbWta4.mjs} +1 -1
  26. package/package.json +2 -2
  27. package/dist/package-D3rksT8O.mjs +0 -64
@@ -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-BkGcc69x.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-BkGcc69x.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-DdcXgJHf.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-DINv6746.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 {
@@ -6824,11 +6824,10 @@ function computeRetryDelayMs(attempt, cfg = getRateLimitRetryConfig(), rng = Mat
6824
6824
  }
6825
6825
  function isRetryableRateLimit(text, apiErrorStatus) {
6826
6826
  const t = (text || "").toLowerCase();
6827
- const hardLimit = t.includes("quota") || // The Hypha LLM proxy emits a 429 "Daily spending limit reached Resets
6828
- // at 00:00 UTC. Contact the admin to raise your limit." That is a hard cap
6829
- // that resets at a fixed time / needs human action — NOT a transient
6830
- // upstream throttle. Retrying it 10× just delays surfacing the real error.
6831
- t.includes("spending limit") || t.includes("credit") || t.includes("balance") || t.includes("billing") || t.includes("payment") || t.includes("subscription") || t.includes("1m-context") || t.includes("1m context") || t.includes("insufficient") || t.includes("usage limit") && !t.includes("not your usage limit");
6827
+ const strongHardLimit = t.includes("quota") || t.includes("spending limit") || t.includes("payment") || t.includes("subscription") || t.includes("1m-context") || t.includes("1m context") || t.includes("insufficient") || t.includes("usage limit") && !t.includes("not your usage limit");
6828
+ const serverFaultSignal = typeof apiErrorStatus === "number" && apiErrorStatus >= 500 && apiErrorStatus <= 599 || /\b(500|502|503|504|520|521|522|523|524|529)\b/.test(t);
6829
+ const weakBillingLimit = !serverFaultSignal && (t.includes("credit") || t.includes("balance") || t.includes("billing"));
6830
+ const hardLimit = strongHardLimit || weakBillingLimit;
6832
6831
  if (hardLimit) return false;
6833
6832
  const authIssue = apiErrorStatus === 401 || apiErrorStatus === 403 || t.includes("unauthorized") || t.includes("invalid api key") || t.includes("authentication") || t.includes("forbidden");
6834
6833
  if (authIssue) return false;
@@ -9449,6 +9448,7 @@ class SessionArtifactSync {
9449
9448
 
9450
9449
  const SHARE_COLLECTION_ALIAS = "svamp-shared-sessions";
9451
9450
  const EVENT_COLLECTION_ALIAS = "svamp-user-events";
9451
+ const RECIPIENT_SCOPING_CONFIG = { recipient_field: "recipientEmail", private_children: true };
9452
9452
  function emailHash(email) {
9453
9453
  return createHash("sha256").update(email.toLowerCase()).digest("hex").slice(0, 12);
9454
9454
  }
@@ -9477,10 +9477,10 @@ class SharingNotificationSync {
9477
9477
  return;
9478
9478
  }
9479
9479
  await Promise.all([
9480
- this.ensureCollection(SHARE_COLLECTION_ALIAS, "Svamp Shared Sessions", "Cross-workspace share notifications for session/machine bookmarks").then((id) => {
9480
+ this.ensureCollection(SHARE_COLLECTION_ALIAS, "Svamp Shared Sessions", "Cross-workspace share notifications for session/machine bookmarks", RECIPIENT_SCOPING_CONFIG).then((id) => {
9481
9481
  this.shareCollectionId = id;
9482
9482
  }),
9483
- this.ensureCollection(EVENT_COLLECTION_ALIAS, "Svamp User Events", "General-purpose user event inbox for bell notifications").then((id) => {
9483
+ this.ensureCollection(EVENT_COLLECTION_ALIAS, "Svamp User Events", "General-purpose user event inbox for bell notifications", RECIPIENT_SCOPING_CONFIG).then((id) => {
9484
9484
  this.eventCollectionId = id;
9485
9485
  })
9486
9486
  ]);
@@ -9490,7 +9490,7 @@ class SharingNotificationSync {
9490
9490
  this.log(`[SHARING NOTIFY] Init failed: ${err.message}`);
9491
9491
  }
9492
9492
  }
9493
- async ensureCollection(alias, name, description) {
9493
+ async ensureCollection(alias, name, description, extraConfig) {
9494
9494
  try {
9495
9495
  const existing = await this.artifactManager.read({
9496
9496
  artifact_id: alias,
@@ -9503,7 +9503,7 @@ class SharingNotificationSync {
9503
9503
  type: "collection",
9504
9504
  stage: true,
9505
9505
  manifest: { name, description },
9506
- config: { permissions: { "*": "r", "@": "rw+" } },
9506
+ config: { permissions: { "*": "r", "@": "rw+" }, ...extraConfig || {} },
9507
9507
  _rkwargs: true
9508
9508
  });
9509
9509
  await this.artifactManager.commit({
@@ -9664,6 +9664,52 @@ class SharingNotificationSync {
9664
9664
  this.log(`[USER EVENT] Failed to publish ${event.type} for ${event.recipientEmail}: ${err.message}`);
9665
9665
  }
9666
9666
  }
9667
+ /**
9668
+ * List user events addressed to `recipientEmail` (the bell inbox), newest first, excluding
9669
+ * expired ones. Reuses the global svamp-user-events collection — cross-workspace by design.
9670
+ * Mirrors the webapp's fetchUserEvents so the CLI reads the same source of truth.
9671
+ */
9672
+ async listUserEvents(recipientEmail) {
9673
+ if (!this.initialized || !this.eventCollectionId) return [];
9674
+ const normalized = recipientEmail.toLowerCase();
9675
+ try {
9676
+ const children = await this.artifactManager.list({
9677
+ parent_id: this.eventCollectionId,
9678
+ _rkwargs: true
9679
+ });
9680
+ if (!Array.isArray(children)) return [];
9681
+ const now = Date.now();
9682
+ return children.map((c) => c?.manifest).filter((m) => !!m && typeof m.recipientEmail === "string" && m.recipientEmail.toLowerCase() === normalized && (!m.expiresAt || m.expiresAt > now)).sort((a, b) => (b.createdAt || 0) - (a.createdAt || 0));
9683
+ } catch (err) {
9684
+ this.log(`[USER EVENT] listUserEvents failed for ${recipientEmail}: ${err.message}`);
9685
+ return [];
9686
+ }
9687
+ }
9688
+ /**
9689
+ * Acknowledge (dismiss) a user event by deleting its artifact. The alias is derived from the
9690
+ * event id + recipient email, so only the recipient's own event is removed. Returns true if a
9691
+ * matching event was deleted.
9692
+ */
9693
+ async ackUserEvent(eventId, recipientEmail) {
9694
+ if (!this.initialized || !this.eventCollectionId) return false;
9695
+ const normalized = recipientEmail.toLowerCase();
9696
+ try {
9697
+ const children = await this.artifactManager.list({ parent_id: this.eventCollectionId, _rkwargs: true });
9698
+ if (!Array.isArray(children)) return false;
9699
+ const short = eventId.slice(0, 8);
9700
+ const match = children.find((c) => {
9701
+ const m = c?.manifest;
9702
+ return m && typeof m.id === "string" && (m.id === eventId || m.id.slice(0, 8) === short) && typeof m.recipientEmail === "string" && m.recipientEmail.toLowerCase() === normalized;
9703
+ });
9704
+ if (!match) return false;
9705
+ await this.artifactManager.delete({ artifact_id: match.id, _rkwargs: true });
9706
+ this.log(`[USER EVENT] Acked ${eventId.slice(0, 8)} for ${recipientEmail}`);
9707
+ return true;
9708
+ } catch (err) {
9709
+ this.log(`[USER EVENT] ackUserEvent failed for ${recipientEmail}: ${err.message}`);
9710
+ return false;
9711
+ }
9712
+ }
9667
9713
  // ── Sharing config diff + sync ───────────────────────────────────
9668
9714
  async syncSharing(sessionId, oldSharing, newSharing, context) {
9669
9715
  if (!this.initialized) return;
@@ -11487,7 +11533,13 @@ class CodexAppServerBackend {
11487
11533
  if (avail === false) throw new Error("Installed Codex is too old for app-server \u2014 upgrade to >= 0.100 (`npm i -g @openai/codex@latest`).");
11488
11534
  await this.client.start();
11489
11535
  if (this.opts.resumeThreadId) {
11490
- await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
11536
+ try {
11537
+ await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
11538
+ } catch (err) {
11539
+ this.log(`[Codex] resumeThread(${this.opts.resumeThreadId}) failed (${err?.message ?? err}) \u2014 starting a fresh thread instead (context lost, session preserved)`);
11540
+ const r = await this.client.startThread({ model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
11541
+ this.model = this.model ?? r.model;
11542
+ }
11491
11543
  } else {
11492
11544
  const r = await this.client.startThread({ model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
11493
11545
  this.model = this.model ?? r.model;
@@ -16133,7 +16185,7 @@ async function startDaemon(options) {
16133
16185
  try {
16134
16186
  const dir = loadSessionIndex()[sessionId]?.directory;
16135
16187
  if (!dir) return;
16136
- const { reconcileServiceLinks } = await import('./agentCommands-DYduijxc.mjs');
16188
+ const { reconcileServiceLinks } = await import('./agentCommands-SejhmIxj.mjs');
16137
16189
  const configPath = getSvampConfigPath(dir, sessionId);
16138
16190
  const config = readSvampConfig(configPath);
16139
16191
  const entries = Array.from(urls.entries());
@@ -16151,7 +16203,7 @@ async function startDaemon(options) {
16151
16203
  }
16152
16204
  }
16153
16205
  async function createExposedTunnel(spec) {
16154
- const { FrpcTunnel } = await import('./frpc-BkGcc69x.mjs');
16206
+ const { FrpcTunnel } = await import('./frpc-Czt8diGB.mjs');
16155
16207
  const tunnel = new FrpcTunnel({
16156
16208
  name: spec.name,
16157
16209
  ports: spec.ports,
@@ -16179,7 +16231,7 @@ async function startDaemon(options) {
16179
16231
  ensureAutoInstalledCommands(logger);
16180
16232
  (async () => {
16181
16233
  try {
16182
- const { beginClaudeVersionReconcile } = await import('./pinnedClaudeCode-D8Tbz32G.mjs');
16234
+ const { beginClaudeVersionReconcile } = await import('./pinnedClaudeCode-BaMR97BE.mjs');
16183
16235
  beginClaudeVersionReconcile((msg) => logger.log(msg));
16184
16236
  } catch (e) {
16185
16237
  logger.log(`[claude-version] check failed: ${e?.message || e}`);
@@ -18367,11 +18419,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
18367
18419
  });
18368
18420
  },
18369
18421
  onIssue: async (params) => {
18370
- const { issueRpc } = await import('./rpc-HiJYPcOU.mjs');
18422
+ const { issueRpc } = await import('./rpc-B_zN6Jvr.mjs');
18371
18423
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
18372
18424
  },
18373
18425
  onWorkflow: async (params) => {
18374
- const { workflowRpc } = await import('./rpc-CBa5WaBD.mjs');
18426
+ const { workflowRpc } = await import('./rpc-AkzY2NVv.mjs');
18375
18427
  return workflowRpc(params?.cwd || directory, params || {});
18376
18428
  },
18377
18429
  onRipgrep: async (args, cwd) => {
@@ -18983,11 +19035,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
18983
19035
  });
18984
19036
  },
18985
19037
  onIssue: async (params) => {
18986
- const { issueRpc } = await import('./rpc-HiJYPcOU.mjs');
19038
+ const { issueRpc } = await import('./rpc-B_zN6Jvr.mjs');
18987
19039
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
18988
19040
  },
18989
19041
  onWorkflow: async (params) => {
18990
- const { workflowRpc } = await import('./rpc-CBa5WaBD.mjs');
19042
+ const { workflowRpc } = await import('./rpc-AkzY2NVv.mjs');
18991
19043
  return workflowRpc(params?.cwd || directory, params || {});
18992
19044
  },
18993
19045
  onRipgrep: async (args, cwd) => {
@@ -19489,7 +19541,11 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
19489
19541
  "event"
19490
19542
  );
19491
19543
  sessionService.sendSessionEnd();
19492
- deleteSession(sessionId);
19544
+ if (!acpPersisted) {
19545
+ deleteSession(sessionId);
19546
+ } else {
19547
+ logger.log(`[Agent Session ${sessionId}] start failed on restore \u2014 preserving persisted session for a later retry (not deleting)`);
19548
+ }
19493
19549
  });
19494
19550
  return {
19495
19551
  type: "success",
@@ -19631,13 +19687,16 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
19631
19687
  logger.log(`Restored machine metadata (sharing=${!!persistedMachineMeta.sharing}, securityContextConfig=${!!persistedMachineMeta.securityContextConfig}, injectPlatformGuidance=${persistedMachineMeta.injectPlatformGuidance})`);
19632
19688
  }
19633
19689
  let seededSharing = persistedMachineMeta?.sharing;
19690
+ let seedShareNotify = null;
19634
19691
  const seedEmails = parseDaemonShareEmails(process.env[DAEMON_SHARE_EMAILS_ENV]);
19635
19692
  if (seedEmails.length > 0) {
19636
19693
  const ownerEmail = parseJwtEmail(process.env.HYPHA_TOKEN || "") || void 0;
19694
+ const preSeedSharing = seededSharing;
19637
19695
  const result = applyDaemonShareSeed(seededSharing, seedEmails, ownerEmail);
19638
19696
  seededSharing = result.sharing;
19639
19697
  if (result.addedEmails.length > 0) {
19640
19698
  logger.log(`Seeded machine sharing with ${result.addedEmails.length} user(s): ${result.addedEmails.join(", ")}`);
19699
+ if (seededSharing) seedShareNotify = { oldSharing: preSeedSharing, newSharing: seededSharing, added: result.addedEmails };
19641
19700
  } else {
19642
19701
  logger.log(`Daemon --share seed: no new users (all already in allowedUsers).`);
19643
19702
  }
@@ -19674,7 +19733,25 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
19674
19733
  startedAt: Date.now()
19675
19734
  };
19676
19735
  const sharingNotificationSync = new SharingNotificationSync(server, logger.log);
19677
- sharingNotificationSync.init().catch(() => {
19736
+ const seedNotifyWorkspace = server.config.workspace;
19737
+ const seedNotifyClientId = server.config.client_id;
19738
+ sharingNotificationSync.init().then(() => {
19739
+ if (seedShareNotify) {
19740
+ sharingNotificationSync.syncSharing(
19741
+ `machine-${machineId}`,
19742
+ seedShareNotify.oldSharing,
19743
+ seedShareNotify.newSharing,
19744
+ {
19745
+ machineId,
19746
+ machineServiceId: `${seedNotifyWorkspace}/${seedNotifyClientId}:default`,
19747
+ ownerWorkspace: seedNotifyWorkspace,
19748
+ ownerEmail: seedShareNotify.newSharing.owner || "",
19749
+ label: process.env.SVAMP_DISPLAY_NAME || machineId,
19750
+ shareType: "machine"
19751
+ }
19752
+ ).catch((e) => logger.log(`[share-seed] notify failed: ${e?.message || e}`));
19753
+ }
19754
+ }).catch(() => {
19678
19755
  });
19679
19756
  const buildMachineHandlers = () => ({
19680
19757
  spawnSession,
@@ -19880,7 +19957,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
19880
19957
  }
19881
19958
  if (persistedSessions.length > 0) {
19882
19959
  try {
19883
- const { awaitClaudeVersionReady } = await import('./pinnedClaudeCode-D8Tbz32G.mjs');
19960
+ const { awaitClaudeVersionReady } = await import('./pinnedClaudeCode-BaMR97BE.mjs');
19884
19961
  await awaitClaudeVersionReady();
19885
19962
  } catch {
19886
19963
  }
@@ -20077,7 +20154,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
20077
20154
  const PING_TIMEOUT_MS = 15e3;
20078
20155
  const POST_RECONNECT_GRACE_MS = 2e4;
20079
20156
  const RECONNECT_JITTER_MS = 2500;
20080
- const { WorkflowScheduler } = await import('./scheduler-D1JpZ5m8.mjs');
20157
+ const { WorkflowScheduler } = await import('./scheduler-MPYVrdzd.mjs');
20081
20158
  const workflowScheduler = new WorkflowScheduler({
20082
20159
  projectRoots: () => {
20083
20160
  const dirs = /* @__PURE__ */ new Set();
@@ -20700,4 +20777,4 @@ var run = /*#__PURE__*/Object.freeze({
20700
20777
  writeStopMarker: writeStopMarker
20701
20778
  });
20702
20779
 
20703
- export { formatHandle as $, removeWorkflow as A, saveWorkflow as B, rawWorkflow as C, listWorkflows as D, isWorkflowEnabled as E, workflowCrons as F, cronMatches as G, summarize as H, workflowSteps as I, loadMachineContext as J, buildMachineInstructions as K, machineToolsForRole as L, buildMachineTools as M, parseFrontmatter as N, getSkillsServer as O, getSkillsWorkspaceName as P, getSkillsCollectionName as Q, READ_ONLY_TOOLS as R, fetchWithTimeout as S, searchSkills as T, SKILLS_DIR as U, getSkillInfo as V, downloadSkillFile as W, listSkillFiles as X, resolveModel as Y, clearStopMarker as Z, stopMarkerExists as _, createSessionStore as a, normalizeAllowedUser as a0, loadSecurityContextConfig as a1, resolveSecurityContext as a2, buildSecurityContextFromFlags as a3, mergeSecurityContexts as a4, buildSessionShareUrl as a5, computeOutboundHop as a6, registerAwaitingReply as a7, buildMachineShareUrl as a8, parseHandle as a9, handleMatchesMetadata as aa, describeMisconfiguration as ab, buildMachineDeps as ac, applyClaudeProxyEnv as ad, composeSessionId as ae, generateFriendlyName as af, generateHookSettings as ag, staticFileServer as ah, instanceConfig as ai, claudeAuth as aj, codexProvider as ak, projectInfo as al, DefaultTransport$1 as am, acpBackend as an, acpAgentConfig as ao, codexAppServerBackend as ap, GeminiTransport$1 as aq, api as ar, run as as, stopDaemon as b, connectToHypha as c, daemonStatus as d, getFrpsSubdomainHost as e, getFrpsServerPort as f, getHyphaServerUrl$1 as g, getFrpsServerAddr as h, shortId as i, resolveProjectRoot as j, getIssue as k, resumeIssue as l, addComment as m, addIssue as n, listIssues as o, pauseIssue as p, searchIssues as q, registerMachineService as r, startDaemon as s, isVisibleTo as t, updateIssue as u, getRun as v, listRuns as w, getWorkflow as x, runWorkflow as y, setWorkflowEnabled as z };
20780
+ export { clearStopMarker as $, removeWorkflow as A, saveWorkflow as B, rawWorkflow as C, listWorkflows as D, isWorkflowEnabled as E, workflowCrons as F, cronMatches as G, summarize as H, workflowSteps as I, parseJwtEmail as J, loadMachineContext as K, buildMachineInstructions as L, machineToolsForRole as M, buildMachineTools as N, parseFrontmatter as O, getSkillsServer as P, getSkillsWorkspaceName as Q, READ_ONLY_TOOLS as R, SharingNotificationSync as S, getSkillsCollectionName as T, fetchWithTimeout as U, searchSkills as V, SKILLS_DIR as W, getSkillInfo as X, downloadSkillFile as Y, listSkillFiles as Z, resolveModel as _, createSessionStore as a, stopMarkerExists as a0, formatHandle as a1, normalizeAllowedUser as a2, loadSecurityContextConfig as a3, resolveSecurityContext as a4, buildSecurityContextFromFlags as a5, mergeSecurityContexts as a6, buildSessionShareUrl as a7, computeOutboundHop as a8, registerAwaitingReply as a9, buildMachineShareUrl as aa, parseHandle as ab, handleMatchesMetadata as ac, describeMisconfiguration as ad, buildMachineDeps as ae, applyClaudeProxyEnv as af, composeSessionId as ag, generateFriendlyName as ah, generateHookSettings as ai, staticFileServer as aj, instanceConfig as ak, claudeAuth as al, codexProvider as am, projectInfo as an, DefaultTransport$1 as ao, acpBackend as ap, acpAgentConfig as aq, codexAppServerBackend as ar, GeminiTransport$1 as as, api as at, run as au, stopDaemon as b, connectToHypha as c, daemonStatus as d, getFrpsSubdomainHost as e, getFrpsServerPort as f, getHyphaServerUrl$1 as g, getFrpsServerAddr as h, shortId as i, resolveProjectRoot as j, getIssue as k, resumeIssue as l, addComment as m, addIssue as n, listIssues as o, pauseIssue as p, searchIssues as q, registerMachineService as r, startDaemon as s, isVisibleTo as t, updateIssue as u, getRun as v, listRuns as w, getWorkflow as x, runWorkflow as y, setWorkflowEnabled as z };
@@ -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-DjThStDG.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-DINv6746.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-DINv6746.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-DINv6746.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-DINv6746.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-DINv6746.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, J as loadMachineContext, K as buildMachineInstructions, L as machineToolsForRole, M as buildMachineTools } from './run-DjThStDG.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.276",
3
+ "version": "0.2.278",
4
4
  "description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
5
5
  "author": "Amun AI AB",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -20,7 +20,7 @@
20
20
  "scripts": {
21
21
  "build": "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
22
22
  "typecheck": "tsc --noEmit",
23
- "test": "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs",
23
+ "test": "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-user-events.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs",
24
24
  "test:hypha": "node --no-warnings test/test-hypha-service.mjs",
25
25
  "dev": "tsx src/cli.ts",
26
26
  "dev:daemon": "tsx src/cli.ts daemon start-sync",
@@ -1,64 +0,0 @@
1
- var name = "svamp-cli";
2
- var version = "0.2.276";
3
- var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
4
- var author = "Amun AI AB";
5
- var license = "SEE LICENSE IN LICENSE";
6
- var type = "module";
7
- var bin = {
8
- svamp: "./bin/svamp.mjs"
9
- };
10
- var files = [
11
- "dist",
12
- "bin"
13
- ];
14
- var main = "./dist/index.mjs";
15
- var exports$1 = {
16
- ".": "./dist/index.mjs",
17
- "./cli": "./dist/cli.mjs"
18
- };
19
- var scripts = {
20
- build: "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
21
- typecheck: "tsc --noEmit",
22
- test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-backend-accounts.mjs && npx tsx test/test-backend-oauth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-inbox-reconcile.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-isolation-disable.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-session-access-fallback.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-compact-detect.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs",
23
- "test:hypha": "node --no-warnings test/test-hypha-service.mjs",
24
- dev: "tsx src/cli.ts",
25
- "dev:daemon": "tsx src/cli.ts daemon start-sync",
26
- "test:e2e": "node --no-warnings test/e2e-session-tests.mjs",
27
- "test:frpc": "npx tsx test/test-frpc-e2e.mjs",
28
- prepublishOnly: "yarn build"
29
- };
30
- var dependencies = {
31
- "@agentclientprotocol/sdk": "^0.14.1",
32
- "@modelcontextprotocol/sdk": "^1.25.3",
33
- "hypha-rpc": "0.21.42",
34
- "node-pty": "1.2.0-beta.11",
35
- ws: "^8.18.0",
36
- yaml: "^2.8.2",
37
- zod: "^3.24.4"
38
- };
39
- var devDependencies = {
40
- "@types/node": ">=20",
41
- "@types/ws": "^8.5.14",
42
- pkgroll: "^2.14.2",
43
- tsx: "^4.20.6",
44
- typescript: "5.9.3"
45
- };
46
- var packageManager = "yarn@1.22.22";
47
- var _package = {
48
- name: name,
49
- version: version,
50
- description: description,
51
- author: author,
52
- license: license,
53
- type: type,
54
- bin: bin,
55
- files: files,
56
- main: main,
57
- exports: exports$1,
58
- scripts: scripts,
59
- dependencies: dependencies,
60
- devDependencies: devDependencies,
61
- packageManager: packageManager
62
- };
63
-
64
- export { author, bin, _package as default, dependencies, description, devDependencies, exports$1 as exports, files, license, main, name, packageManager, scripts, type, version };