@astrasyncai/verification-gateway 1.0.0 → 1.1.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.
Files changed (35) hide show
  1. package/dist/adapters/express.d.mts +2 -2
  2. package/dist/adapters/express.d.ts +2 -2
  3. package/dist/adapters/express.js +41 -3
  4. package/dist/adapters/express.js.map +1 -1
  5. package/dist/adapters/express.mjs +41 -3
  6. package/dist/adapters/express.mjs.map +1 -1
  7. package/dist/adapters/nextjs.d.mts +2 -2
  8. package/dist/adapters/nextjs.d.ts +2 -2
  9. package/dist/adapters/nextjs.js +14 -2
  10. package/dist/adapters/nextjs.js.map +1 -1
  11. package/dist/adapters/nextjs.mjs +14 -2
  12. package/dist/adapters/nextjs.mjs.map +1 -1
  13. package/dist/adapters/sdk.d.mts +2 -2
  14. package/dist/adapters/sdk.d.ts +2 -2
  15. package/dist/adapters/sdk.js +14 -2
  16. package/dist/adapters/sdk.js.map +1 -1
  17. package/dist/adapters/sdk.mjs +14 -2
  18. package/dist/adapters/sdk.mjs.map +1 -1
  19. package/dist/{express-BhD3mWsL.d.ts → express-BGZiLINd.d.ts} +1 -1
  20. package/dist/{express-DUDYpvNZ.d.mts → express-BoayLpqq.d.mts} +1 -1
  21. package/dist/index.d.mts +5 -5
  22. package/dist/index.d.ts +5 -5
  23. package/dist/index.js +44 -6
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.mjs +44 -6
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/{nextjs-BtqyLSVQ.d.mts → nextjs-BNbHm5Ui.d.mts} +1 -1
  28. package/dist/{nextjs-C9FPOjSh.d.ts → nextjs-DTCS5Sw8.d.ts} +1 -1
  29. package/dist/{sdk-BkVigGjF.d.ts → sdk-9TKZzhxE.d.ts} +1 -1
  30. package/dist/{sdk-xCbZgeZx.d.mts → sdk-VAFRmdt7.d.mts} +1 -1
  31. package/dist/{types-CS6v75-d.d.mts → types-cA_xfFU7.d.mts} +8 -0
  32. package/dist/{types-CS6v75-d.d.ts → types-cA_xfFU7.d.ts} +8 -0
  33. package/dist/ui/index.d.mts +1 -1
  34. package/dist/ui/index.d.ts +1 -1
  35. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -229,6 +229,7 @@ async function callVerifyAccessAPI(config, request) {
229
229
  if (requestData.enableRuntimeChallenge) body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
230
230
  if (requestData.createSession) body.createSession = requestData.createSession;
231
231
  if (requestData.counterpartyType) body.counterpartyType = requestData.counterpartyType;
232
+ if (requestData.counterpartyUrl) body.counterpartyUrl = requestData.counterpartyUrl;
232
233
  if (requestData.runtimeChallengeOptions) body.runtimeChallengeOptions = requestData.runtimeChallengeOptions;
233
234
  const headers = {
234
235
  "Content-Type": "application/json",
@@ -276,10 +277,17 @@ async function verify(config, request) {
276
277
  return cached;
277
278
  }
278
279
  }
280
+ const enrichedRequest = { ...request };
281
+ if (!enrichedRequest.counterpartyUrl && mergedConfig.counterpartyUrl) {
282
+ enrichedRequest.counterpartyUrl = mergedConfig.counterpartyUrl;
283
+ }
284
+ if (!enrichedRequest.counterpartyType && mergedConfig.counterpartyType) {
285
+ enrichedRequest.counterpartyType = mergedConfig.counterpartyType;
286
+ }
279
287
  if (mergedConfig.debug) {
280
288
  console.log("[VerificationGateway] Calling verify-access API");
281
289
  }
282
- const apiResponse = await callVerifyAccessAPI(mergedConfig, request);
290
+ const apiResponse = await callVerifyAccessAPI(mergedConfig, enrichedRequest);
283
291
  if (!apiResponse.success) {
284
292
  return createGuidanceResponse(mergedConfig, apiResponse.error);
285
293
  }
@@ -295,7 +303,11 @@ async function verify(config, request) {
295
303
  registrationUrl: `${mergedConfig.apiBaseUrl?.replace("/api", "")}/register`,
296
304
  documentationUrl: `${mergedConfig.apiBaseUrl?.replace("/api", "")}/docs/pdlss`
297
305
  },
298
- verifiedAt: /* @__PURE__ */ new Date()
306
+ verifiedAt: /* @__PURE__ */ new Date(),
307
+ // Extract sessionId so decisions can be recorded for denials too
308
+ sessionId: apiResponse.sessionId,
309
+ recommendation: apiResponse.recommendation,
310
+ recommendationReasons: apiResponse.recommendationReasons
299
311
  };
300
312
  return result2;
301
313
  }
@@ -379,6 +391,16 @@ async function verify(config, request) {
379
391
  }
380
392
  return result;
381
393
  }
394
+ async function recordDecision(config, sessionId, decision, reason) {
395
+ const headers = { "Content-Type": "application/json" };
396
+ if (config.apiKey) headers["X-API-Key"] = config.apiKey;
397
+ await fetch(`${config.apiBaseUrl}/agents/verify-access/${sessionId}/decision`, {
398
+ method: "POST",
399
+ headers,
400
+ body: JSON.stringify({ decision, reason })
401
+ }).catch(() => {
402
+ });
403
+ }
382
404
  async function quickVerify(config, credentials) {
383
405
  const result = await verify(config, {
384
406
  credentials,
@@ -523,6 +545,7 @@ function createMiddleware(options) {
523
545
  extractPurpose: customExtractPurpose,
524
546
  skipPaths = [],
525
547
  onDenied = defaultOnDenied,
548
+ recordDecisions,
526
549
  ...config
527
550
  } = options;
528
551
  return async (req, res, next) => {
@@ -556,16 +579,23 @@ function createMiddleware(options) {
556
579
  return;
557
580
  }
558
581
  const purpose = customExtractPurpose ? customExtractPurpose(req) : defaultExtractPurpose(req);
582
+ const shouldRecordDecisions = recordDecisions !== false;
559
583
  const result = await verify(config, {
560
584
  credentials,
561
585
  purpose,
562
586
  action: req.method.toLowerCase(),
563
587
  resource: req.path,
564
588
  clientIp: req.ip,
565
- userAgent: req.headers["user-agent"]
589
+ userAgent: req.headers["user-agent"],
590
+ createSession: shouldRecordDecisions
566
591
  });
567
592
  req.agentVerification = result;
593
+ const sessionId = result.sessionId;
568
594
  if (!hasMinimumAccess(result.accessLevel, routeConfig.minAccessLevel)) {
595
+ if (shouldRecordDecisions && sessionId) {
596
+ recordDecision(config, sessionId, "denied", result.denialReasons?.[0]).catch(() => {
597
+ });
598
+ }
569
599
  onDenied(result, req, res);
570
600
  return;
571
601
  }
@@ -574,10 +604,18 @@ function createMiddleware(options) {
574
604
  result.denialReasons = [
575
605
  `Trust score ${result.agent.trustScore} is below required ${routeConfig.minTrustScore}`
576
606
  ];
607
+ if (shouldRecordDecisions && sessionId) {
608
+ recordDecision(config, sessionId, "denied", result.denialReasons[0]).catch(() => {
609
+ });
610
+ }
577
611
  onDenied(result, req, res);
578
612
  return;
579
613
  }
580
614
  }
615
+ if (shouldRecordDecisions && sessionId) {
616
+ recordDecision(config, sessionId, "granted").catch(() => {
617
+ });
618
+ }
581
619
  next();
582
620
  } catch (error) {
583
621
  console.error("[VerificationGateway] Middleware error:", error);
@@ -1173,7 +1211,7 @@ __export(agent_exports, {
1173
1211
  ChallengeHandler: () => ChallengeHandler,
1174
1212
  formatPDLSSForTransport: () => formatPDLSSForTransport,
1175
1213
  parsePDLSSFromTransport: () => parsePDLSSFromTransport,
1176
- recordDecision: () => recordDecision
1214
+ recordDecision: () => recordDecision2
1177
1215
  });
1178
1216
 
1179
1217
  // src/agent/client.ts
@@ -1385,7 +1423,7 @@ function parsePDLSSFromTransport(transport) {
1385
1423
  }
1386
1424
 
1387
1425
  // src/agent/decision-client.ts
1388
- async function recordDecision(config, params) {
1426
+ async function recordDecision2(config, params) {
1389
1427
  const { sessionId, ...body } = params;
1390
1428
  const baseUrl = config.apiBaseUrl.replace(/\/$/, "");
1391
1429
  const url = `${baseUrl}/agents/verify-access/${encodeURIComponent(sessionId)}/decision`;
@@ -1438,7 +1476,7 @@ export {
1438
1476
  hasMinimumAccess,
1439
1477
  nextjs_exports as nextjs,
1440
1478
  quickVerify,
1441
- recordDecision,
1479
+ recordDecision2 as recordDecision,
1442
1480
  sdk_exports as sdk,
1443
1481
  transport_exports as transport,
1444
1482
  verify