@astrasyncai/verification-gateway 5.17.0 → 5.17.2
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/README.md +94 -18
- package/dist/adapters/express.d.mts +1 -1
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.js +33 -5
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +33 -5
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.d.ts +1 -1
- package/dist/adapters/mcp.js +24 -5
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +24 -5
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +1 -1
- package/dist/adapters/nextjs.d.ts +1 -1
- package/dist/adapters/nextjs.js +24 -5
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +24 -5
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +1 -1
- package/dist/adapters/sdk.d.ts +1 -1
- package/dist/adapters/sdk.js +5 -1
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +5 -1
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/index.mjs +1 -1
- package/dist/agent/index.mjs.map +1 -1
- package/dist/bin/astrasync-claude-hook.js +5 -1
- package/dist/bin/astrasync-codex-hook.js +5 -1
- package/dist/bin/astrasync-guard.js +34 -7
- package/dist/bin/astrasync.js +34 -7
- package/dist/browser/background.js +5 -1
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +5 -1
- package/dist/browser/background.mjs.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +1 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/codex/index.js +5 -1
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +5 -1
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/extension.js +5 -1
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +5 -1
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +1 -1
- package/dist/edge-config.d.ts +1 -1
- package/dist/edge-config.js +1 -1
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +1 -1
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.d.mts +1 -1
- package/dist/edge-core/index.d.ts +1 -1
- package/dist/edge-core/index.js +5 -1
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +5 -1
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.js +5 -1
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +5 -1
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +1 -1
- package/dist/git-trigger/git-hooks.d.ts +1 -1
- package/dist/index.d.mts +16 -2
- package/dist/index.d.ts +16 -2
- package/dist/index.js +33 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +33 -5
- package/dist/index.mjs.map +1 -1
- package/dist/registration/index.js +1 -1
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +1 -1
- package/dist/registration/index.mjs.map +1 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +1 -1
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-Bm1QvGqI.d.ts → types-DA8LzAOB.d.ts} +6 -0
- package/dist/{types-Blz520bR.d.mts → types-DRb_plOh.d.mts} +14 -0
- package/dist/{types-Blz520bR.d.ts → types-DRb_plOh.d.ts} +14 -0
- package/dist/{types-DBe4hgfT.d.mts → types-vNBvYD7Z.d.mts} +6 -0
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/verify.d.mts +1 -1
- package/dist/verify.d.ts +1 -1
- package/dist/verify.js +5 -1
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +5 -1
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -442,7 +442,7 @@ function routePolicyOf(route) {
|
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
// src/version.ts
|
|
445
|
-
var SDK_VERSION = "5.17.
|
|
445
|
+
var SDK_VERSION = "5.17.2";
|
|
446
446
|
|
|
447
447
|
// src/http.ts
|
|
448
448
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -744,6 +744,7 @@ function getCacheKey(request, counterpartyId) {
|
|
|
744
744
|
request.enableRuntimeChallenge ? "1" : "0",
|
|
745
745
|
// 5.16.0: route policy changes the verdict (owners / challenge).
|
|
746
746
|
request.routePolicy ? JSON.stringify(request.routePolicy) : "",
|
|
747
|
+
request.approvalHeldByRoute ? "1" : "0",
|
|
747
748
|
// callerMetadata fields contribute to risk model; include the ones
|
|
748
749
|
// backend reads. sourceIp/userAgent/forwardedFor change per-request
|
|
749
750
|
// so their inclusion effectively forces a re-check for any varying
|
|
@@ -951,6 +952,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
951
952
|
if (requestData.enableRuntimeChallenge)
|
|
952
953
|
body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
|
|
953
954
|
if (requestData.routePolicy) body.routePolicy = requestData.routePolicy;
|
|
955
|
+
if (requestData.approvalHeldByRoute) body.approvalHeldByRoute = true;
|
|
954
956
|
if (requestData.createSession) body.createSession = requestData.createSession;
|
|
955
957
|
if (requestData.durationRequired) body.durationRequired = requestData.durationRequired;
|
|
956
958
|
if (requestData.counterpartyType) body.counterpartyType = requestData.counterpartyType;
|
|
@@ -1282,6 +1284,8 @@ async function verify(config, request, options) {
|
|
|
1282
1284
|
} else if (result.recommendation === "step_up_required" && result.identityVerified) {
|
|
1283
1285
|
result.requiresStepUp = true;
|
|
1284
1286
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Step-up verification required"];
|
|
1287
|
+
const stepUpFailures = apiResponse.access?.failures;
|
|
1288
|
+
if (stepUpFailures?.length) result.failures = stepUpFailures;
|
|
1285
1289
|
}
|
|
1286
1290
|
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
1287
1291
|
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
@@ -1516,12 +1520,31 @@ function requiresHumanApproval(result) {
|
|
|
1516
1520
|
return result.requiresStepUp === true || result.requiresApproval === true;
|
|
1517
1521
|
}
|
|
1518
1522
|
function annotateApprovalRequired(result) {
|
|
1519
|
-
result
|
|
1520
|
-
...result.
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
+
if (isDimensionApproval(result)) {
|
|
1524
|
+
result.denialReasons = [DIMENSION_APPROVAL_REASON, ...result.denialReasons ?? []];
|
|
1525
|
+
return;
|
|
1526
|
+
}
|
|
1527
|
+
const named = (result.failures ?? []).some(
|
|
1528
|
+
(f) => f.dimension === "commerce.intent.approval_required"
|
|
1529
|
+
);
|
|
1530
|
+
if (!named) {
|
|
1531
|
+
result.failures = [
|
|
1532
|
+
...result.failures ?? [],
|
|
1533
|
+
{ dimension: "commerce.intent.approval_required", message: APPROVAL_REASON }
|
|
1534
|
+
];
|
|
1535
|
+
}
|
|
1523
1536
|
result.denialReasons = [APPROVAL_REASON, ...result.denialReasons ?? []];
|
|
1524
1537
|
}
|
|
1538
|
+
var DIMENSION_APPROVAL_REASON = "The agent's owner asked to approve this kind of request. The owner can approve or deny it in the AstraSync dashboard.";
|
|
1539
|
+
var DIMENSION_APPROVAL = /^pdlss\.[a-z_]+\.approval_required$/;
|
|
1540
|
+
function isDimensionApproval(result) {
|
|
1541
|
+
const f = result.failures ?? [];
|
|
1542
|
+
return f.some((x) => DIMENSION_APPROVAL.test(x.dimension)) && !f.some((x) => x.dimension === "commerce.intent.approval_required");
|
|
1543
|
+
}
|
|
1544
|
+
function onlyNeedsApproval(result) {
|
|
1545
|
+
if (!result.policyAllowed || !requiresHumanApproval(result)) return false;
|
|
1546
|
+
return (result.failures ?? []).every((f) => /\.approval_required$/.test(f.dimension));
|
|
1547
|
+
}
|
|
1525
1548
|
|
|
1526
1549
|
// src/pdlss-pre-check.ts
|
|
1527
1550
|
function performCounterpartyPreCheck(routeConfig, astraCreds, purpose) {
|
|
@@ -2485,6 +2508,7 @@ function createMiddleware(options) {
|
|
|
2485
2508
|
const attemptHeader = req.headers["x-astra-attempt-id"];
|
|
2486
2509
|
const inboundAttemptId = typeof attemptHeader === "string" && /^att_[0-9a-f]{32}$/.test(attemptHeader) ? attemptHeader : void 0;
|
|
2487
2510
|
const commerceArtifacts = detectExpressCommerce(req);
|
|
2511
|
+
const heldByRoute = options.approvalHeldByRoute?.(req) === true;
|
|
2488
2512
|
const verificationRequest = {
|
|
2489
2513
|
credentials,
|
|
2490
2514
|
...commerceArtifacts && { commerceArtifacts },
|
|
@@ -2496,6 +2520,7 @@ function createMiddleware(options) {
|
|
|
2496
2520
|
counterpartyType: config.counterpartyType || "api",
|
|
2497
2521
|
enableRuntimeChallenge,
|
|
2498
2522
|
...routePolicyOf(routeConfig) && { routePolicy: routePolicyOf(routeConfig) },
|
|
2523
|
+
...heldByRoute && { approvalHeldByRoute: true },
|
|
2499
2524
|
durationRequired: astraCreds?.pdlss?.duration?.maxSessionDuration,
|
|
2500
2525
|
...txValue !== void 0 && { transactionValue: txValue },
|
|
2501
2526
|
...txCurrency && { currency: txCurrency },
|
|
@@ -2552,6 +2577,9 @@ function createMiddleware(options) {
|
|
|
2552
2577
|
onDenied(result, req, res);
|
|
2553
2578
|
return;
|
|
2554
2579
|
}
|
|
2580
|
+
if (heldByRoute && !result.stepUpApproval && onlyNeedsApproval(result)) {
|
|
2581
|
+
return next();
|
|
2582
|
+
}
|
|
2555
2583
|
if (requiresHumanApproval(result)) {
|
|
2556
2584
|
annotateApprovalRequired(result);
|
|
2557
2585
|
if (shouldRecordDecisions && sessionId) {
|