@astrasyncai/verification-gateway 1.0.0 → 2.0.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.
- package/dist/adapter-interface/interface.d.mts +71 -0
- package/dist/adapter-interface/interface.d.ts +71 -0
- package/dist/adapter-interface/interface.js +36 -0
- package/dist/adapter-interface/interface.js.map +1 -0
- package/dist/adapter-interface/interface.mjs +10 -0
- package/dist/adapter-interface/interface.mjs.map +1 -0
- package/dist/adapter-interface/purpose-mapping.d.mts +28 -0
- package/dist/adapter-interface/purpose-mapping.d.ts +28 -0
- package/dist/adapter-interface/purpose-mapping.js +117 -0
- package/dist/adapter-interface/purpose-mapping.js.map +1 -0
- package/dist/adapter-interface/purpose-mapping.mjs +89 -0
- package/dist/adapter-interface/purpose-mapping.mjs.map +1 -0
- package/dist/adapters/express.d.mts +2 -2
- package/dist/adapters/express.d.ts +2 -2
- package/dist/adapters/express.js +46 -9
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +46 -9
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +2 -2
- package/dist/adapters/nextjs.d.ts +2 -2
- package/dist/adapters/nextjs.js +19 -9
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +19 -9
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +2 -2
- package/dist/adapters/sdk.d.ts +2 -2
- package/dist/adapters/sdk.js +20 -4
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +20 -4
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +2 -0
- package/dist/agent/index.d.ts +2 -0
- package/dist/agent/index.js +354 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/index.mjs +323 -0
- package/dist/agent/index.mjs.map +1 -0
- package/dist/browser/browser-adapter.d.mts +106 -0
- package/dist/browser/browser-adapter.d.ts +106 -0
- package/dist/browser/browser-adapter.js +286 -0
- package/dist/browser/browser-adapter.js.map +1 -0
- package/dist/browser/browser-adapter.mjs +259 -0
- package/dist/browser/browser-adapter.mjs.map +1 -0
- package/dist/cli/index.d.mts +241 -0
- package/dist/cli/index.d.ts +241 -0
- package/dist/cli/index.js +3734 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.mjs +3688 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/cursor/cursor-adapter.d.mts +92 -0
- package/dist/cursor/cursor-adapter.d.ts +92 -0
- package/dist/cursor/cursor-adapter.js +273 -0
- package/dist/cursor/cursor-adapter.js.map +1 -0
- package/dist/cursor/cursor-adapter.mjs +246 -0
- package/dist/cursor/cursor-adapter.mjs.map +1 -0
- package/dist/{express-DUDYpvNZ.d.mts → express-Cp4eg77F.d.mts} +1 -1
- package/dist/{express-BhD3mWsL.d.ts → express-DIEyq1Tz.d.ts} +1 -1
- package/dist/gateway/gateway.d.mts +70 -0
- package/dist/gateway/gateway.d.ts +70 -0
- package/dist/gateway/gateway.js +3726 -0
- package/dist/gateway/gateway.js.map +1 -0
- package/dist/gateway/gateway.mjs +3706 -0
- package/dist/gateway/gateway.mjs.map +1 -0
- package/dist/git-trigger/git-hooks.d.mts +69 -0
- package/dist/git-trigger/git-hooks.d.ts +69 -0
- package/dist/git-trigger/git-hooks.js +244 -0
- package/dist/git-trigger/git-hooks.js.map +1 -0
- package/dist/git-trigger/git-hooks.mjs +221 -0
- package/dist/git-trigger/git-hooks.mjs.map +1 -0
- package/dist/index-BhTbGU-o.d.mts +206 -0
- package/dist/index-Bhfxq9xI.d.ts +206 -0
- package/dist/index-CNkmHmpi.d.ts +89 -0
- package/dist/index-CoLebmwv.d.mts +89 -0
- package/dist/index.d.mts +8 -295
- package/dist/index.d.ts +8 -295
- package/dist/index.js +60 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +60 -21
- package/dist/index.mjs.map +1 -1
- package/dist/local-evaluator/evaluator.d.mts +55 -0
- package/dist/local-evaluator/evaluator.d.ts +55 -0
- package/dist/local-evaluator/evaluator.js +272 -0
- package/dist/local-evaluator/evaluator.js.map +1 -0
- package/dist/local-evaluator/evaluator.mjs +244 -0
- package/dist/local-evaluator/evaluator.mjs.map +1 -0
- package/dist/{nextjs-C9FPOjSh.d.ts → nextjs-Cag7libc.d.ts} +1 -1
- package/dist/{nextjs-BtqyLSVQ.d.mts → nextjs-_C_FcJY5.d.mts} +1 -1
- package/dist/{sdk-BkVigGjF.d.ts → sdk-CMPDFUjo.d.ts} +3 -1
- package/dist/{sdk-xCbZgeZx.d.mts → sdk-DAJahT3p.d.mts} +3 -1
- package/dist/transport/index.d.mts +2 -0
- package/dist/transport/index.d.ts +2 -0
- package/dist/transport/index.js +211 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/index.mjs +176 -0
- package/dist/transport/index.mjs.map +1 -0
- package/dist/{types-CS6v75-d.d.mts → types-Bf8pML07.d.mts} +9 -1
- package/dist/{types-CS6v75-d.d.ts → types-Bf8pML07.d.ts} +9 -1
- package/dist/types-BvpGdsv1.d.mts +153 -0
- package/dist/types-Ce2mFJkO.d.ts +153 -0
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/package.json +46 -1
package/dist/index.js
CHANGED
|
@@ -49,7 +49,7 @@ __export(src_exports, {
|
|
|
49
49
|
hasMinimumAccess: () => hasMinimumAccess,
|
|
50
50
|
nextjs: () => nextjs_exports,
|
|
51
51
|
quickVerify: () => quickVerify,
|
|
52
|
-
recordDecision: () =>
|
|
52
|
+
recordDecision: () => recordDecision2,
|
|
53
53
|
sdk: () => sdk_exports,
|
|
54
54
|
transport: () => transport_exports,
|
|
55
55
|
verify: () => verify
|
|
@@ -281,6 +281,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
281
281
|
if (requestData.enableRuntimeChallenge) body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
|
|
282
282
|
if (requestData.createSession) body.createSession = requestData.createSession;
|
|
283
283
|
if (requestData.counterpartyType) body.counterpartyType = requestData.counterpartyType;
|
|
284
|
+
if (requestData.counterpartyUrl) body.counterpartyUrl = requestData.counterpartyUrl;
|
|
284
285
|
if (requestData.runtimeChallengeOptions) body.runtimeChallengeOptions = requestData.runtimeChallengeOptions;
|
|
285
286
|
const headers = {
|
|
286
287
|
"Content-Type": "application/json",
|
|
@@ -328,10 +329,17 @@ async function verify(config, request) {
|
|
|
328
329
|
return cached;
|
|
329
330
|
}
|
|
330
331
|
}
|
|
332
|
+
const enrichedRequest = { ...request };
|
|
333
|
+
if (!enrichedRequest.counterpartyUrl && mergedConfig.counterpartyUrl) {
|
|
334
|
+
enrichedRequest.counterpartyUrl = mergedConfig.counterpartyUrl;
|
|
335
|
+
}
|
|
336
|
+
if (!enrichedRequest.counterpartyType && mergedConfig.counterpartyType) {
|
|
337
|
+
enrichedRequest.counterpartyType = mergedConfig.counterpartyType;
|
|
338
|
+
}
|
|
331
339
|
if (mergedConfig.debug) {
|
|
332
340
|
console.log("[VerificationGateway] Calling verify-access API");
|
|
333
341
|
}
|
|
334
|
-
const apiResponse = await callVerifyAccessAPI(mergedConfig,
|
|
342
|
+
const apiResponse = await callVerifyAccessAPI(mergedConfig, enrichedRequest);
|
|
335
343
|
if (!apiResponse.success) {
|
|
336
344
|
return createGuidanceResponse(mergedConfig, apiResponse.error);
|
|
337
345
|
}
|
|
@@ -347,7 +355,11 @@ async function verify(config, request) {
|
|
|
347
355
|
registrationUrl: `${mergedConfig.apiBaseUrl?.replace("/api", "")}/register`,
|
|
348
356
|
documentationUrl: `${mergedConfig.apiBaseUrl?.replace("/api", "")}/docs/pdlss`
|
|
349
357
|
},
|
|
350
|
-
verifiedAt: /* @__PURE__ */ new Date()
|
|
358
|
+
verifiedAt: /* @__PURE__ */ new Date(),
|
|
359
|
+
// Extract sessionId so decisions can be recorded for denials too
|
|
360
|
+
sessionId: apiResponse.sessionId,
|
|
361
|
+
recommendation: apiResponse.recommendation,
|
|
362
|
+
recommendationReasons: apiResponse.recommendationReasons
|
|
351
363
|
};
|
|
352
364
|
return result2;
|
|
353
365
|
}
|
|
@@ -431,6 +443,16 @@ async function verify(config, request) {
|
|
|
431
443
|
}
|
|
432
444
|
return result;
|
|
433
445
|
}
|
|
446
|
+
async function recordDecision(config, sessionId, decision, reason) {
|
|
447
|
+
const headers = { "Content-Type": "application/json" };
|
|
448
|
+
if (config.apiKey) headers["X-API-Key"] = config.apiKey;
|
|
449
|
+
await fetch(`${config.apiBaseUrl}/agents/verify-access/${sessionId}/decision`, {
|
|
450
|
+
method: "POST",
|
|
451
|
+
headers,
|
|
452
|
+
body: JSON.stringify({ decision, reason })
|
|
453
|
+
}).catch(() => {
|
|
454
|
+
});
|
|
455
|
+
}
|
|
434
456
|
async function quickVerify(config, credentials) {
|
|
435
457
|
const result = await verify(config, {
|
|
436
458
|
credentials,
|
|
@@ -575,6 +597,7 @@ function createMiddleware(options) {
|
|
|
575
597
|
extractPurpose: customExtractPurpose,
|
|
576
598
|
skipPaths = [],
|
|
577
599
|
onDenied = defaultOnDenied,
|
|
600
|
+
recordDecisions,
|
|
578
601
|
...config
|
|
579
602
|
} = options;
|
|
580
603
|
return async (req, res, next) => {
|
|
@@ -608,16 +631,26 @@ function createMiddleware(options) {
|
|
|
608
631
|
return;
|
|
609
632
|
}
|
|
610
633
|
const purpose = customExtractPurpose ? customExtractPurpose(req) : defaultExtractPurpose(req);
|
|
634
|
+
const counterpartyUrl = config.counterpartyUrl || `${req.protocol}://${req.get("host")}`;
|
|
635
|
+
const shouldRecordDecisions = recordDecisions !== false;
|
|
611
636
|
const result = await verify(config, {
|
|
612
637
|
credentials,
|
|
613
638
|
purpose,
|
|
614
639
|
action: req.method.toLowerCase(),
|
|
615
640
|
resource: req.path,
|
|
616
641
|
clientIp: req.ip,
|
|
617
|
-
userAgent: req.headers["user-agent"]
|
|
642
|
+
userAgent: req.headers["user-agent"],
|
|
643
|
+
createSession: shouldRecordDecisions,
|
|
644
|
+
counterpartyUrl,
|
|
645
|
+
counterpartyType: config.counterpartyType || "api"
|
|
618
646
|
});
|
|
619
647
|
req.agentVerification = result;
|
|
648
|
+
const sessionId = result.sessionId;
|
|
620
649
|
if (!hasMinimumAccess(result.accessLevel, routeConfig.minAccessLevel)) {
|
|
650
|
+
if (shouldRecordDecisions && sessionId) {
|
|
651
|
+
recordDecision(config, sessionId, "denied", result.denialReasons?.[0]).catch(() => {
|
|
652
|
+
});
|
|
653
|
+
}
|
|
621
654
|
onDenied(result, req, res);
|
|
622
655
|
return;
|
|
623
656
|
}
|
|
@@ -626,10 +659,18 @@ function createMiddleware(options) {
|
|
|
626
659
|
result.denialReasons = [
|
|
627
660
|
`Trust score ${result.agent.trustScore} is below required ${routeConfig.minTrustScore}`
|
|
628
661
|
];
|
|
662
|
+
if (shouldRecordDecisions && sessionId) {
|
|
663
|
+
recordDecision(config, sessionId, "denied", result.denialReasons[0]).catch(() => {
|
|
664
|
+
});
|
|
665
|
+
}
|
|
629
666
|
onDenied(result, req, res);
|
|
630
667
|
return;
|
|
631
668
|
}
|
|
632
669
|
}
|
|
670
|
+
if (shouldRecordDecisions && sessionId) {
|
|
671
|
+
recordDecision(config, sessionId, "granted").catch(() => {
|
|
672
|
+
});
|
|
673
|
+
}
|
|
633
674
|
next();
|
|
634
675
|
} catch (error) {
|
|
635
676
|
console.error("[VerificationGateway] Middleware error:", error);
|
|
@@ -640,17 +681,13 @@ function createMiddleware(options) {
|
|
|
640
681
|
function requireAccess(minAccessLevel, options) {
|
|
641
682
|
return createMiddleware({
|
|
642
683
|
...options,
|
|
643
|
-
routes: [
|
|
644
|
-
{ pattern: "*", method: "*", minAccessLevel }
|
|
645
|
-
]
|
|
684
|
+
routes: [{ pattern: "*", method: "*", minAccessLevel }]
|
|
646
685
|
});
|
|
647
686
|
}
|
|
648
687
|
function verifyOnly(options) {
|
|
649
688
|
return createMiddleware({
|
|
650
689
|
...options,
|
|
651
|
-
routes: [
|
|
652
|
-
{ pattern: "*", method: "*", minAccessLevel: "none" }
|
|
653
|
-
]
|
|
690
|
+
routes: [{ pattern: "*", method: "*", minAccessLevel: "none" }]
|
|
654
691
|
});
|
|
655
692
|
}
|
|
656
693
|
|
|
@@ -862,12 +899,7 @@ function generateCommerceShieldHtml(result, options) {
|
|
|
862
899
|
`.trim();
|
|
863
900
|
}
|
|
864
901
|
function createMiddleware2(options) {
|
|
865
|
-
const {
|
|
866
|
-
routes = [],
|
|
867
|
-
skipPaths = [],
|
|
868
|
-
showCommerceShield = true,
|
|
869
|
-
...config
|
|
870
|
-
} = options;
|
|
902
|
+
const { routes = [], skipPaths = [], showCommerceShield = true, ...config } = options;
|
|
871
903
|
return async function middleware(request) {
|
|
872
904
|
const { NextResponse } = await import("next/server");
|
|
873
905
|
const pathname = request.nextUrl.pathname;
|
|
@@ -920,6 +952,7 @@ function createMiddleware2(options) {
|
|
|
920
952
|
const registerUrl = result2.guidance?.registrationUrl || "/register";
|
|
921
953
|
return NextResponse.redirect(new URL(registerUrl, request.url));
|
|
922
954
|
}
|
|
955
|
+
const counterpartyUrl = config.counterpartyUrl || request.nextUrl.origin;
|
|
923
956
|
const purpose = request.headers.get("x-purpose") || inferPurpose(request.method);
|
|
924
957
|
const result = await verify(config, {
|
|
925
958
|
credentials,
|
|
@@ -927,7 +960,9 @@ function createMiddleware2(options) {
|
|
|
927
960
|
action: request.method.toLowerCase(),
|
|
928
961
|
resource: pathname,
|
|
929
962
|
clientIp: request.headers.get("x-forwarded-for")?.split(",")[0]?.trim() || void 0,
|
|
930
|
-
userAgent: request.headers.get("user-agent") || void 0
|
|
963
|
+
userAgent: request.headers.get("user-agent") || void 0,
|
|
964
|
+
counterpartyUrl,
|
|
965
|
+
counterpartyType: config.counterpartyType || "website"
|
|
931
966
|
});
|
|
932
967
|
if (!hasMinimumAccess(result.accessLevel, routeConfig.minAccessLevel)) {
|
|
933
968
|
if (pathname.startsWith("/api/")) {
|
|
@@ -990,7 +1025,9 @@ var VerificationGatewayClient = class {
|
|
|
990
1025
|
minTrustScoreForFull: options.minTrustScoreForFull,
|
|
991
1026
|
cacheTtl: options.cacheTtl,
|
|
992
1027
|
debug: options.debug,
|
|
993
|
-
customHeaders: options.customHeaders
|
|
1028
|
+
customHeaders: options.customHeaders,
|
|
1029
|
+
counterpartyUrl: options.counterpartyUrl,
|
|
1030
|
+
counterpartyType: options.counterpartyType
|
|
994
1031
|
};
|
|
995
1032
|
this.timeout = options.timeout || 1e4;
|
|
996
1033
|
this.retryConfig = options.retry || { maxRetries: 3, backoffMs: 1e3 };
|
|
@@ -1016,7 +1053,9 @@ var VerificationGatewayClient = class {
|
|
|
1016
1053
|
currency: options.currency,
|
|
1017
1054
|
isSubAgentRequest: options.isSubAgentRequest,
|
|
1018
1055
|
parentAgentId: options.parentAgentId,
|
|
1019
|
-
subAgentDepth: options.subAgentDepth
|
|
1056
|
+
subAgentDepth: options.subAgentDepth,
|
|
1057
|
+
counterpartyUrl: options.counterpartyUrl,
|
|
1058
|
+
counterpartyType: options.counterpartyType
|
|
1020
1059
|
})
|
|
1021
1060
|
);
|
|
1022
1061
|
}
|
|
@@ -1225,7 +1264,7 @@ __export(agent_exports, {
|
|
|
1225
1264
|
ChallengeHandler: () => ChallengeHandler,
|
|
1226
1265
|
formatPDLSSForTransport: () => formatPDLSSForTransport,
|
|
1227
1266
|
parsePDLSSFromTransport: () => parsePDLSSFromTransport,
|
|
1228
|
-
recordDecision: () =>
|
|
1267
|
+
recordDecision: () => recordDecision2
|
|
1229
1268
|
});
|
|
1230
1269
|
|
|
1231
1270
|
// src/agent/client.ts
|
|
@@ -1437,7 +1476,7 @@ function parsePDLSSFromTransport(transport) {
|
|
|
1437
1476
|
}
|
|
1438
1477
|
|
|
1439
1478
|
// src/agent/decision-client.ts
|
|
1440
|
-
async function
|
|
1479
|
+
async function recordDecision2(config, params) {
|
|
1441
1480
|
const { sessionId, ...body } = params;
|
|
1442
1481
|
const baseUrl = config.apiBaseUrl.replace(/\/$/, "");
|
|
1443
1482
|
const url = `${baseUrl}/agents/verify-access/${encodeURIComponent(sessionId)}/decision`;
|