@astrasyncai/verification-gateway 5.17.2 → 5.18.1

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 (105) hide show
  1. package/CHANGELOG.md +1878 -0
  2. package/README.md +141 -7
  3. package/dist/adapters/express.d.mts +1 -1
  4. package/dist/adapters/express.d.ts +1 -1
  5. package/dist/adapters/express.js +30 -12
  6. package/dist/adapters/express.js.map +1 -1
  7. package/dist/adapters/express.mjs +30 -12
  8. package/dist/adapters/express.mjs.map +1 -1
  9. package/dist/adapters/kit-express.d.mts +63 -0
  10. package/dist/adapters/kit-express.d.ts +63 -0
  11. package/dist/adapters/kit-express.js +88 -0
  12. package/dist/adapters/kit-express.js.map +1 -0
  13. package/dist/adapters/kit-express.mjs +61 -0
  14. package/dist/adapters/kit-express.mjs.map +1 -0
  15. package/dist/adapters/mcp.d.mts +1 -1
  16. package/dist/adapters/mcp.d.ts +1 -1
  17. package/dist/adapters/mcp.js +1 -1
  18. package/dist/adapters/mcp.js.map +1 -1
  19. package/dist/adapters/mcp.mjs +1 -1
  20. package/dist/adapters/mcp.mjs.map +1 -1
  21. package/dist/adapters/nextjs.d.mts +1 -1
  22. package/dist/adapters/nextjs.d.ts +1 -1
  23. package/dist/adapters/nextjs.js +18 -8
  24. package/dist/adapters/nextjs.js.map +1 -1
  25. package/dist/adapters/nextjs.mjs +18 -8
  26. package/dist/adapters/nextjs.mjs.map +1 -1
  27. package/dist/adapters/sdk.d.mts +1 -1
  28. package/dist/adapters/sdk.d.ts +1 -1
  29. package/dist/adapters/sdk.js +1 -1
  30. package/dist/adapters/sdk.js.map +1 -1
  31. package/dist/adapters/sdk.mjs +1 -1
  32. package/dist/adapters/sdk.mjs.map +1 -1
  33. package/dist/agent/index.js +1 -1
  34. package/dist/agent/index.js.map +1 -1
  35. package/dist/agent/index.mjs +1 -1
  36. package/dist/agent/index.mjs.map +1 -1
  37. package/dist/bin/astrasync-claude-hook.js +1 -1
  38. package/dist/bin/astrasync-codex-hook.js +1 -1
  39. package/dist/bin/astrasync-guard.js +330 -112
  40. package/dist/bin/astrasync.js +359 -113
  41. package/dist/browser/background.js +1 -1
  42. package/dist/browser/background.js.map +1 -1
  43. package/dist/browser/background.mjs +1 -1
  44. package/dist/browser/background.mjs.map +1 -1
  45. package/dist/cli/index.js +1 -1
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/cli/index.mjs +1 -1
  48. package/dist/cli/index.mjs.map +1 -1
  49. package/dist/codex/index.js +1 -1
  50. package/dist/codex/index.js.map +1 -1
  51. package/dist/codex/index.mjs +1 -1
  52. package/dist/codex/index.mjs.map +1 -1
  53. package/dist/cursor/extension.js +1 -1
  54. package/dist/cursor/extension.js.map +1 -1
  55. package/dist/cursor/extension.mjs +1 -1
  56. package/dist/cursor/extension.mjs.map +1 -1
  57. package/dist/edge-config.d.mts +1 -1
  58. package/dist/edge-config.d.ts +1 -1
  59. package/dist/edge-config.js +1 -1
  60. package/dist/edge-config.js.map +1 -1
  61. package/dist/edge-config.mjs +1 -1
  62. package/dist/edge-config.mjs.map +1 -1
  63. package/dist/edge-core/index.d.mts +5 -4
  64. package/dist/edge-core/index.d.ts +5 -4
  65. package/dist/edge-core/index.js +18 -8
  66. package/dist/edge-core/index.js.map +1 -1
  67. package/dist/edge-core/index.mjs +18 -8
  68. package/dist/edge-core/index.mjs.map +1 -1
  69. package/dist/gateway/gateway.js +1 -1
  70. package/dist/gateway/gateway.js.map +1 -1
  71. package/dist/gateway/gateway.mjs +1 -1
  72. package/dist/gateway/gateway.mjs.map +1 -1
  73. package/dist/git-trigger/git-hooks.d.mts +1 -1
  74. package/dist/git-trigger/git-hooks.d.ts +1 -1
  75. package/dist/index.d.mts +391 -13
  76. package/dist/index.d.ts +391 -13
  77. package/dist/index.js +766 -230
  78. package/dist/index.js.map +1 -1
  79. package/dist/index.mjs +749 -222
  80. package/dist/index.mjs.map +1 -1
  81. package/dist/registration/index.d.mts +1 -1
  82. package/dist/registration/index.d.ts +1 -1
  83. package/dist/registration/index.js +1 -1
  84. package/dist/registration/index.js.map +1 -1
  85. package/dist/registration/index.mjs +1 -1
  86. package/dist/registration/index.mjs.map +1 -1
  87. package/dist/transport/index.d.mts +4 -3
  88. package/dist/transport/index.d.ts +4 -3
  89. package/dist/transport/index.js +1 -1
  90. package/dist/transport/index.js.map +1 -1
  91. package/dist/transport/index.mjs +1 -1
  92. package/dist/transport/index.mjs.map +1 -1
  93. package/dist/{types-vNBvYD7Z.d.mts → types-3ObBpsnf.d.mts} +7 -0
  94. package/dist/{types-DA8LzAOB.d.ts → types-BoxZEYPS.d.ts} +7 -0
  95. package/dist/{types-DRb_plOh.d.mts → types-Cns4l8gX.d.mts} +17 -0
  96. package/dist/{types-DRb_plOh.d.ts → types-Cns4l8gX.d.ts} +17 -0
  97. package/dist/ui/index.d.mts +1 -1
  98. package/dist/ui/index.d.ts +1 -1
  99. package/dist/verify.d.mts +1 -1
  100. package/dist/verify.d.ts +1 -1
  101. package/dist/verify.js +1 -1
  102. package/dist/verify.js.map +1 -1
  103. package/dist/verify.mjs +1 -1
  104. package/dist/verify.mjs.map +1 -1
  105. package/package.json +8 -2
@@ -289,6 +289,23 @@ function detectCommerce(req, host) {
289
289
  }
290
290
  const signature = headerValue(req, "signature");
291
291
  const signatureInput = headerValue(req, "signature-input");
292
+ if (/\/checkout[-_]sessions(\/|$)/.test(req.uri) && headerValue(req, "ucp-agent")) {
293
+ const signed = Boolean(signature && signatureInput);
294
+ return {
295
+ protocol: "ucp",
296
+ artifacts: {
297
+ ucpRequest: { method, url, ...jsonBody && { body: jsonBody } },
298
+ ...signed && {
299
+ rfc9421: { headers, method, url, ...req.bodyText && { body: req.bodyText } }
300
+ }
301
+ },
302
+ evidence: {
303
+ path: req.uri,
304
+ ...signed && { keyid: signatureInput.match(/keyid="([^"]+)"/)?.[1] },
305
+ ...truncated
306
+ }
307
+ };
308
+ }
292
309
  if (signature && signatureInput) {
293
310
  const signatureAgent = headerValue(req, "signature-agent");
294
311
  const registryHint = headerValue(req, "x-agent-registry");
@@ -323,13 +340,6 @@ function detectCommerce(req, host) {
323
340
  evidence: { hasTimestamp: Boolean(acpTimestamp), ...truncated }
324
341
  };
325
342
  }
326
- if (/\/checkout[-_]sessions(\/|$)/.test(req.uri) && headerValue(req, "ucp-agent")) {
327
- return {
328
- protocol: "ucp",
329
- artifacts: { ucpRequest: { method, url, ...jsonBody && { body: jsonBody } } },
330
- evidence: { path: req.uri, ...truncated }
331
- };
332
- }
333
343
  if (jsonBody) {
334
344
  const intent = jsonBody.intent_mandate ?? jsonBody.intentMandate;
335
345
  const cart = jsonBody.cart_mandate ?? jsonBody.cartMandate;
@@ -442,7 +452,7 @@ function routePolicyOf(route) {
442
452
  }
443
453
 
444
454
  // src/version.ts
445
- var SDK_VERSION = "5.17.2";
455
+ var SDK_VERSION = "5.18.1";
446
456
 
447
457
  // src/http.ts
448
458
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -2334,6 +2344,7 @@ function createMiddleware(options) {
2334
2344
  anonymousBeacon = true,
2335
2345
  trustVerifiedHop = false,
2336
2346
  verifiedHopMaxAgeMs,
2347
+ defaultRoutePolicy = "pass",
2337
2348
  ...config
2338
2349
  } = options;
2339
2350
  if (config.apiBaseUrl) {
@@ -2399,12 +2410,15 @@ function createMiddleware(options) {
2399
2410
  });
2400
2411
  }
2401
2412
  const correlationId = req.headers["x-request-id"] || req.headers["x-correlation-id"];
2402
- const routeConfig = findRouteConfig(cachedRoutes, req.path, req.method, {
2413
+ const matchedRoute = findRouteConfig(cachedRoutes, req.path, req.method, {
2403
2414
  caseInsensitive: caseInsensitiveRouteMatch,
2404
2415
  logShadowDivergence: true,
2405
2416
  correlationId
2406
2417
  });
2407
- if (!routeConfig) {
2418
+ const credentials = customExtractCredentials ? customExtractCredentials(req) : defaultExtractCredentials(req);
2419
+ const credentialed = Boolean(credentials.astraId || credentials.apiKey || credentials.jwt);
2420
+ const observeUnmatched = !matchedRoute && (config.evaluateAlwaysIfCredentialed === true && Boolean(credentials.astraId) || defaultRoutePolicy === "observe" && credentialed);
2421
+ if (!matchedRoute && !observeUnmatched) {
2408
2422
  if (config.setPassThroughHeader) {
2409
2423
  res.setHeader("X-Astra-Gateway-Mode", "unenforced");
2410
2424
  res.setHeader(
@@ -2415,10 +2429,14 @@ function createMiddleware(options) {
2415
2429
  beaconPassThrough?.(req);
2416
2430
  return next();
2417
2431
  }
2432
+ const routeConfig = matchedRoute ?? {
2433
+ pattern: req.path,
2434
+ method: req.method,
2435
+ observe: true
2436
+ };
2418
2437
  const wellKnownUrls = config.apiBaseUrl ? await getWellKnownUrls(config.apiBaseUrl).catch(() => void 0) : void 0;
2419
- const credentials = customExtractCredentials ? customExtractCredentials(req) : defaultExtractCredentials(req);
2420
2438
  const shouldEnforce = !routeConfig.observe;
2421
- if (routeConfig.observe && (!config.evaluateAlwaysIfCredentialed || !credentials.astraId)) {
2439
+ if (routeConfig.observe && !observeUnmatched && (!config.evaluateAlwaysIfCredentialed || !credentials.astraId)) {
2422
2440
  if (config.setPassThroughHeader) {
2423
2441
  res.setHeader("X-Astra-Gateway-Mode", "unenforced");
2424
2442
  res.setHeader("X-Astra-Gateway-Reason", "route-observe");