@agentcash/router 0.6.4 → 0.6.6

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.
package/.claude/CLAUDE.md CHANGED
@@ -131,6 +131,21 @@ router
131
131
 
132
132
  ## Environment Variables
133
133
 
134
+ ### Base URL
135
+
136
+ `baseUrl` is **required** in `RouterConfig`. No auto-detection, no fallbacks. The realm is load-bearing for payment matching (MPP memo indexing, 402 challenge realm), so it must be explicitly set.
137
+
138
+ ```typescript
139
+ createRouter({
140
+ baseUrl: process.env.BASE_URL!,
141
+ // ...
142
+ })
143
+ ```
144
+
145
+ If `baseUrl` is missing, `createRouter` throws immediately — in dev and prod. This ensures devs discover the issue on first `pnpm dev` rather than deploying with a wrong realm.
146
+
147
+ ### CDP API Keys
148
+
134
149
  The router uses the default facilitator from `@coinbase/x402`, which requires CDP API keys in `process.env`:
135
150
 
136
151
  - `CDP_API_KEY_ID` — Coinbase Developer Platform API key ID
package/dist/index.cjs CHANGED
@@ -1467,20 +1467,17 @@ function createRouter(config) {
1467
1467
  const registry = new RouteRegistry();
1468
1468
  const nonceStore = config.siwx?.nonceStore ?? new MemoryNonceStore();
1469
1469
  const network = config.network ?? "eip155:8453";
1470
- const baseUrl = config.baseUrl ?? (typeof globalThis.process !== "undefined" ? process.env.NEXT_PUBLIC_BASE_URL : void 0);
1470
+ if (!config.baseUrl) {
1471
+ throw new Error(
1472
+ '[router] baseUrl is required in RouterConfig. Set it to your production domain (e.g., "https://api.example.com"). The realm is used for payment matching and must be correct.'
1473
+ );
1474
+ }
1471
1475
  if (config.protocols && config.protocols.length === 0) {
1472
1476
  throw new Error(
1473
1477
  "RouterConfig.protocols cannot be empty. Omit the field to use default ['x402'] or specify protocols explicitly."
1474
1478
  );
1475
1479
  }
1476
- if (!baseUrl) {
1477
- const msg = "baseUrl is required. Pass it in RouterConfig or set NEXT_PUBLIC_BASE_URL (e.g. https://myapp.com). It is used for discovery URLs, OpenAPI servers, and MPP realm.";
1478
- if (process.env.NODE_ENV === "production") {
1479
- throw new Error(msg);
1480
- }
1481
- console.warn(`[router] ${msg}`);
1482
- }
1483
- const resolvedBaseUrl = (baseUrl ?? "http://localhost:3000").replace(/\/+$/, "");
1480
+ const resolvedBaseUrl = config.baseUrl.replace(/\/+$/, "");
1484
1481
  let x402ConfigError;
1485
1482
  let mppConfigError;
1486
1483
  if ((!config.protocols || config.protocols.includes("x402")) && !config.payeeAddress) {
package/dist/index.d.cts CHANGED
@@ -235,13 +235,13 @@ interface RouteEntry {
235
235
  interface RouterConfig {
236
236
  payeeAddress: string;
237
237
  /**
238
- * Production origin URL (e.g. `https://myapp.com`).
239
- * Used for discovery URLs, OpenAPI servers, and MPP realm.
238
+ * Origin URL (e.g. `https://myapp.com`).
239
+ * Used for 402 challenge realm, discovery URLs, OpenAPI servers, and MPP memo indexing.
240
240
  *
241
- * Falls back to `NEXT_PUBLIC_BASE_URL` env var.
242
- * Required in production `next build` will fail without it.
241
+ * **Required.** No auto-detection the realm is load-bearing for payment matching,
242
+ * so it must be explicitly set by the consuming app.
243
243
  */
244
- baseUrl?: string;
244
+ baseUrl: string;
245
245
  network?: string;
246
246
  facilitatorUrl?: string;
247
247
  plugin?: RouterPlugin;
package/dist/index.d.ts CHANGED
@@ -235,13 +235,13 @@ interface RouteEntry {
235
235
  interface RouterConfig {
236
236
  payeeAddress: string;
237
237
  /**
238
- * Production origin URL (e.g. `https://myapp.com`).
239
- * Used for discovery URLs, OpenAPI servers, and MPP realm.
238
+ * Origin URL (e.g. `https://myapp.com`).
239
+ * Used for 402 challenge realm, discovery URLs, OpenAPI servers, and MPP memo indexing.
240
240
  *
241
- * Falls back to `NEXT_PUBLIC_BASE_URL` env var.
242
- * Required in production `next build` will fail without it.
241
+ * **Required.** No auto-detection the realm is load-bearing for payment matching,
242
+ * so it must be explicitly set by the consuming app.
243
243
  */
244
- baseUrl?: string;
244
+ baseUrl: string;
245
245
  network?: string;
246
246
  facilitatorUrl?: string;
247
247
  plugin?: RouterPlugin;
package/dist/index.js CHANGED
@@ -1430,20 +1430,17 @@ function createRouter(config) {
1430
1430
  const registry = new RouteRegistry();
1431
1431
  const nonceStore = config.siwx?.nonceStore ?? new MemoryNonceStore();
1432
1432
  const network = config.network ?? "eip155:8453";
1433
- const baseUrl = config.baseUrl ?? (typeof globalThis.process !== "undefined" ? process.env.NEXT_PUBLIC_BASE_URL : void 0);
1433
+ if (!config.baseUrl) {
1434
+ throw new Error(
1435
+ '[router] baseUrl is required in RouterConfig. Set it to your production domain (e.g., "https://api.example.com"). The realm is used for payment matching and must be correct.'
1436
+ );
1437
+ }
1434
1438
  if (config.protocols && config.protocols.length === 0) {
1435
1439
  throw new Error(
1436
1440
  "RouterConfig.protocols cannot be empty. Omit the field to use default ['x402'] or specify protocols explicitly."
1437
1441
  );
1438
1442
  }
1439
- if (!baseUrl) {
1440
- const msg = "baseUrl is required. Pass it in RouterConfig or set NEXT_PUBLIC_BASE_URL (e.g. https://myapp.com). It is used for discovery URLs, OpenAPI servers, and MPP realm.";
1441
- if (process.env.NODE_ENV === "production") {
1442
- throw new Error(msg);
1443
- }
1444
- console.warn(`[router] ${msg}`);
1445
- }
1446
- const resolvedBaseUrl = (baseUrl ?? "http://localhost:3000").replace(/\/+$/, "");
1443
+ const resolvedBaseUrl = config.baseUrl.replace(/\/+$/, "");
1447
1444
  let x402ConfigError;
1448
1445
  let mppConfigError;
1449
1446
  if ((!config.protocols || config.protocols.includes("x402")) && !config.payeeAddress) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentcash/router",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "Unified route builder for Next.js App Router APIs with x402, MPP, SIWX, and API key auth",
5
5
  "type": "module",
6
6
  "exports": {