@agenticmail/api 0.9.18 → 0.9.19

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 (2) hide show
  1. package/dist/index.js +25 -11
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2673,6 +2673,17 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
2673
2673
  next(err);
2674
2674
  }
2675
2675
  });
2676
+ async function resolveSpamFolder(receiver) {
2677
+ const folders = await receiver.listFolders();
2678
+ const junkRe = /^junk\b|^junk mail\b|^spam\b/i;
2679
+ const found = folders.find((f) => f.specialUse === "\\Junk")?.path ?? folders.find((f) => junkRe.test(f.name) || junkRe.test(f.path))?.path;
2680
+ if (found) return found;
2681
+ try {
2682
+ await receiver.createFolder("Junk Mail");
2683
+ } catch {
2684
+ }
2685
+ return "Junk Mail";
2686
+ }
2676
2687
  router.get("/mail/spam", requireAgent, async (req, res, next) => {
2677
2688
  try {
2678
2689
  const agent = req.agent;
@@ -2680,15 +2691,16 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
2680
2691
  const offset = Math.max(parseInt(req.query.offset) || 0, 0);
2681
2692
  const password = getAgentPassword(agent);
2682
2693
  const receiver = await getReceiver(agent.stalwartPrincipal, password, config);
2694
+ const spamFolder = await resolveSpamFolder(receiver);
2683
2695
  let mailboxInfo;
2684
2696
  try {
2685
- mailboxInfo = await receiver.getMailboxInfo("Spam");
2697
+ mailboxInfo = await receiver.getMailboxInfo(spamFolder);
2686
2698
  } catch {
2687
- res.json({ messages: [], count: 0, total: 0, folder: "Spam" });
2699
+ res.json({ messages: [], count: 0, total: 0, folder: spamFolder });
2688
2700
  return;
2689
2701
  }
2690
- const envelopes = await receiver.listEnvelopes("Spam", { limit, offset });
2691
- res.json({ messages: envelopes, count: envelopes.length, total: mailboxInfo.exists, folder: "Spam" });
2702
+ const envelopes = await receiver.listEnvelopes(spamFolder, { limit, offset });
2703
+ res.json({ messages: envelopes, count: envelopes.length, total: mailboxInfo.exists, folder: spamFolder });
2692
2704
  } catch (err) {
2693
2705
  next(err);
2694
2706
  }
@@ -2793,12 +2805,13 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
2793
2805
  const folder = req.body?.folder || "INBOX";
2794
2806
  const password = getAgentPassword(agent);
2795
2807
  const receiver = await getReceiver(agent.stalwartPrincipal, password, config);
2796
- try {
2797
- await receiver.createFolder("Spam");
2798
- } catch {
2808
+ const spamFolder = await resolveSpamFolder(receiver);
2809
+ if (spamFolder === folder) {
2810
+ res.status(400).json({ error: "Message already in spam" });
2811
+ return;
2799
2812
  }
2800
- await receiver.moveMessage(uid, folder, "Spam");
2801
- res.json({ ok: true, movedToSpam: true });
2813
+ await receiver.moveMessage(uid, folder, spamFolder);
2814
+ res.json({ ok: true, movedToSpam: true, spam: spamFolder });
2802
2815
  } catch (err) {
2803
2816
  next(err);
2804
2817
  }
@@ -2813,8 +2826,9 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
2813
2826
  }
2814
2827
  const password = getAgentPassword(agent);
2815
2828
  const receiver = await getReceiver(agent.stalwartPrincipal, password, config);
2816
- await receiver.moveMessage(uid, "Spam", "INBOX");
2817
- res.json({ ok: true, movedToInbox: true });
2829
+ const spamFolder = await resolveSpamFolder(receiver);
2830
+ await receiver.moveMessage(uid, spamFolder, "INBOX");
2831
+ res.json({ ok: true, movedToInbox: true, spam: spamFolder });
2818
2832
  } catch (err) {
2819
2833
  next(err);
2820
2834
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticmail/api",
3
- "version": "0.9.18",
3
+ "version": "0.9.19",
4
4
  "description": "REST API server for AgenticMail — email and SMS endpoints for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",