@suveren/gateway 0.31.2 → 0.32.0

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.
@@ -223,7 +223,7 @@
223
223
  ]
224
224
  }
225
225
  ],
226
- "setupHint": "Use a test token (test_...) for development.",
226
+ "setupHint": "Use an organization access token (access_org_...), not an API key (test_... or live_...): Mollie's connector needs it to list your profiles. Test payments still work with it.",
227
227
  "setupGuide": [
228
228
  {
229
229
  "title": "Create a Mollie account",
@@ -232,12 +232,12 @@
232
232
  },
233
233
  {
234
234
  "title": "Get your access token",
235
- "description": "Go to Settings > Developer > Access tokens in your Mollie dashboard. Create an Organization access token.",
235
+ "description": "Go to Settings > Developer > Access tokens in your Mollie dashboard. Create an Organization access token with read and write access to payments, payment links, profiles, customers and organizations.",
236
236
  "link": "https://my.mollie.com/dashboard/developers/api-keys"
237
237
  },
238
238
  {
239
239
  "title": "Enter your token below",
240
- "description": "Paste your Access Token in the field below. Use a test token (test_...) for development."
240
+ "description": "Paste the organization access token (access_org_...) in the field below. An API key (test_... or live_...) does not work here."
241
241
  }
242
242
  ]
243
243
  }
@@ -3417,6 +3417,9 @@ function getConsumptionState(auth, executionLog, profile) {
3417
3417
  now,
3418
3418
  boundActionTypes(fieldName, fieldDef)
3419
3419
  );
3420
+ const unit = fieldDef.unit;
3421
+ const frameCurrency = auth.frame.currency;
3422
+ const currency = bt.kind !== "cumulative_sum" ? void 0 : typeof frameCurrency === "string" && /^[A-Z]{3}$/.test(frameCurrency) ? frameCurrency : typeof unit === "string" && unit.startsWith("currency:") ? unit.slice("currency:".length) : void 0;
3420
3423
  entries.push({
3421
3424
  // displayName FIRST: description is prose meant for a human reading the
3422
3425
  // profile, and rendering it here produced a paragraph where a label
@@ -3427,20 +3430,23 @@ function getConsumptionState(auth, executionLog, profile) {
3427
3430
  window: bt.window,
3428
3431
  field: fieldName,
3429
3432
  kind: bt.kind === "cumulative_sum" ? "sum" : "count",
3430
- of: bt.kind === "cumulative_sum" ? bt.of : void 0
3433
+ of: bt.kind === "cumulative_sum" ? bt.of : void 0,
3434
+ ...currency ? { currency } : {}
3431
3435
  });
3432
3436
  }
3433
3437
  return entries;
3434
3438
  }
3435
- var CURRENCY_SUM_FIELDS = /* @__PURE__ */ new Set(["amount", "spend"]);
3439
+ function formatSum(value, currency) {
3440
+ if (currency) return `${value.toFixed(2)} ${currency}`;
3441
+ return String(Number(value.toFixed(6)));
3442
+ }
3436
3443
  function formatConsumptionCompact(entries) {
3437
3444
  if (entries.length === 0) return "";
3438
3445
  const parts = [];
3439
3446
  for (const entry of entries) {
3440
3447
  if (entry.limit === null) continue;
3441
3448
  if (entry.kind === "sum") {
3442
- const prefix = entry.of && CURRENCY_SUM_FIELDS.has(entry.of) ? "$" : "";
3443
- parts.push(`${prefix}${entry.current}/${prefix}${entry.limit} ${entry.window}`);
3449
+ parts.push(`${formatSum(entry.current, entry.currency)}/${formatSum(entry.limit, entry.currency)} ${entry.window}`);
3444
3450
  } else {
3445
3451
  parts.push(`${entry.current}/${entry.limit} ${entry.window}`);
3446
3452
  }
@@ -3451,9 +3457,10 @@ function formatConsumptionFull(entries) {
3451
3457
  if (entries.length === 0) return "";
3452
3458
  const lines = [];
3453
3459
  for (const entry of entries) {
3454
- const limitStr = entry.limit !== null ? String(entry.limit) : "unlimited";
3460
+ const limitStr = entry.limit !== null ? entry.kind === "sum" ? formatSum(entry.limit, entry.currency) : String(entry.limit) : "unlimited";
3461
+ const currentStr = entry.kind === "sum" ? formatSum(entry.current, entry.currency) : String(entry.current);
3455
3462
  const label = `${entry.label}:`;
3456
- lines.push(` ${label.padEnd(30)} ${entry.current} / ${limitStr}`);
3463
+ lines.push(` ${label.padEnd(30)} ${currentStr} / ${limitStr}`);
3457
3464
  }
3458
3465
  return lines.join("\n");
3459
3466
  }
@@ -7404,7 +7411,11 @@ function createMcpServer(state2, integrationManager2) {
7404
7411
  tool.namespacedName,
7405
7412
  {
7406
7413
  description,
7407
- ...Object.keys(zodShape).length > 0 ? { inputSchema: zodShape } : {}
7414
+ // Always a schema, even an empty one: without it the SDK calls the
7415
+ // handler as (extra) instead of (args, extra), and the request's own
7416
+ // data (session id, headers, _meta) was forwarded to the connector as
7417
+ // the tool's arguments (Mollie GetOrganizationDetails, 2026-10-16).
7418
+ inputSchema: zodShape
7408
7419
  },
7409
7420
  // Built-in tools (reports, setup) never carry the outcome line: a
7410
7421
  // report's output is evidence and must not mix in a notice (nor the