@astrasyncai/verification-gateway 4.5.1 → 5.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/README.md +1 -1
- package/dist/adapter-interface/interface.d.mts +2 -2
- package/dist/adapter-interface/interface.d.ts +2 -2
- package/dist/adapters/express.d.mts +2 -2
- package/dist/adapters/express.d.ts +2 -2
- package/dist/adapters/express.js +11 -33
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +11 -33
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +2 -2
- package/dist/adapters/mcp.d.ts +2 -2
- package/dist/adapters/mcp.js +28 -65
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +27 -64
- package/dist/adapters/mcp.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 +9 -30
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +9 -30
- 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 +8 -124
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +8 -122
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +2 -2
- package/dist/agent/index.d.ts +2 -2
- 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 +63 -41
- package/dist/bin/astrasync-codex-hook.js +63 -41
- package/dist/bin/astrasync-guard.js +63 -41
- package/dist/bin/astrasync.js +75 -48
- package/dist/browser/background.js +63 -41
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +63 -41
- package/dist/browser/background.mjs.map +1 -1
- package/dist/browser/browser-adapter.d.mts +2 -2
- package/dist/browser/browser-adapter.d.ts +2 -2
- package/dist/claude-code/claude-code-adapter.d.mts +2 -2
- package/dist/claude-code/claude-code-adapter.d.ts +2 -2
- package/dist/cli/index.d.mts +2 -2
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +33 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +33 -6
- package/dist/cli/index.mjs.map +1 -1
- package/dist/codex/index.d.mts +2 -2
- package/dist/codex/index.d.ts +2 -2
- package/dist/codex/index.js +63 -41
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +63 -41
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/cursor-adapter.d.mts +2 -2
- package/dist/cursor/cursor-adapter.d.ts +2 -2
- package/dist/cursor/extension.d.mts +2 -2
- package/dist/cursor/extension.d.ts +2 -2
- package/dist/cursor/extension.js +63 -41
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +63 -41
- 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 -3
- package/dist/edge-core/index.d.ts +1 -3
- package/dist/edge-core/index.js +11 -33
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +11 -33
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-DaqL11tx.d.ts → express-B5lWuemA.d.ts} +1 -1
- package/dist/{express-CR6F3njD.d.mts → express-Dm-snUuY.d.mts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +63 -41
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +63 -41
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +2 -2
- package/dist/git-trigger/git-hooks.d.ts +2 -2
- package/dist/{index-Cub7lK-T.d.mts → index-B5k_vUmK.d.mts} +1 -1
- package/dist/{index-BfIxCYIZ.d.ts → index-BOzM6xUq.d.mts} +1 -2
- package/dist/{index-CwAh7Tln.d.mts → index-dRfxUdFA.d.ts} +1 -2
- package/dist/{index-B5Ts1WtM.d.ts → index-y8xToocF.d.ts} +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +30 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -210
- package/dist/index.mjs.map +1 -1
- package/dist/local-evaluator/evaluator.d.mts +2 -2
- package/dist/local-evaluator/evaluator.d.ts +2 -2
- package/dist/local-evaluator/evaluator.js +22 -7
- package/dist/local-evaluator/evaluator.js.map +1 -1
- package/dist/local-evaluator/evaluator.mjs +22 -7
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{mcp-BgBJu4Jl.d.mts → mcp-DgsyQiQq.d.mts} +53 -52
- package/dist/{mcp--DgKOwfu.d.ts → mcp-OosmAcKf.d.ts} +53 -52
- package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-B1sBdEav.d.mts} +1 -1
- package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-DoRmhV_Z.d.ts} +1 -1
- package/dist/registration/index.d.mts +5 -1
- package/dist/registration/index.d.ts +5 -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/sdk-B83N3xKc.d.mts +142 -0
- package/dist/sdk-H_9BTNBS.d.ts +142 -0
- package/dist/transport/index.d.mts +2 -2
- package/dist/transport/index.d.ts +2 -2
- 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-DwSfO7Sb.d.ts → types-BK2POWNc.d.ts} +23 -50
- package/dist/{types-C0zfSXMB.d.mts → types-CJjZvPr9.d.mts} +23 -50
- package/dist/{types-C7Rb-w0d.d.mts → types-CXf3q4kZ.d.ts} +14 -3
- package/dist/{types-nIh3HtuA.d.ts → types-DQmop7ZW.d.mts} +14 -3
- package/dist/ui/index.d.mts +2 -17
- package/dist/ui/index.d.ts +2 -17
- package/dist/ui/index.js +1 -43
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +1 -42
- package/dist/ui/index.mjs.map +1 -1
- package/dist/verify.d.mts +3 -4
- package/dist/verify.d.ts +3 -4
- package/dist/verify.js +8 -28
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +8 -28
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/sdk-Bbh9B_dw.d.mts +0 -215
- package/dist/sdk-C6SASmsh.d.ts +0 -215
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/version.ts
|
|
2
|
-
var SDK_VERSION = "
|
|
2
|
+
var SDK_VERSION = "5.0.0";
|
|
3
3
|
|
|
4
4
|
// src/http.ts
|
|
5
5
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -77,7 +77,7 @@ async function awaitStepUpApproval(config, approval) {
|
|
|
77
77
|
return "timeout";
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
// src/
|
|
80
|
+
// src/trust-levels.ts
|
|
81
81
|
function getTrustLevel(score) {
|
|
82
82
|
if (score >= 80) return "PLATINUM";
|
|
83
83
|
if (score >= 60) return "GOLD";
|
|
@@ -147,11 +147,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
147
147
|
// src/verify.ts
|
|
148
148
|
var DEFAULT_CONFIG = {
|
|
149
149
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
150
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
151
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
152
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
153
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
154
|
-
defaultAccessLevel: "none",
|
|
155
150
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
156
151
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
157
152
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -346,13 +341,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
346
341
|
// policy is not evaluated (we never reached the gate).
|
|
347
342
|
identityVerified: false,
|
|
348
343
|
policyAllowed: false,
|
|
349
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
350
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
351
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
352
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
353
|
-
// in other languages, custom integrations) inherit the correct
|
|
354
|
-
// semantics.
|
|
355
|
-
accessLevel: "none",
|
|
356
344
|
guidance,
|
|
357
345
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
358
346
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -375,6 +363,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
375
363
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
376
364
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
377
365
|
...isMisconfig && { misconfigured: true },
|
|
366
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
367
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
368
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
369
|
+
// deterministic and intentionally NOT marked retryable.
|
|
370
|
+
...isApiError && { retryable: true },
|
|
378
371
|
correlationId: options.correlationId,
|
|
379
372
|
attemptId: options.attemptId,
|
|
380
373
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -441,7 +434,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
441
434
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
442
435
|
access: {
|
|
443
436
|
allowed: false,
|
|
444
|
-
accessLevel: "none",
|
|
445
437
|
reason: "endpoint_deactivated",
|
|
446
438
|
failures: [
|
|
447
439
|
{
|
|
@@ -504,7 +496,7 @@ async function verify(config, request, options) {
|
|
|
504
496
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
505
497
|
deprecationWarningShown = true;
|
|
506
498
|
console.warn(
|
|
507
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
499
|
+
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access decisions (verified ID + runtime challenge + PDLSS + trust score). To gate access to an endpoint, configure the endpoint's trust_score_requirement server-side."
|
|
508
500
|
);
|
|
509
501
|
}
|
|
510
502
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -550,14 +542,6 @@ async function verify(config, request, options) {
|
|
|
550
542
|
const result2 = {
|
|
551
543
|
identityVerified: idVerifiedFromBackend,
|
|
552
544
|
policyAllowed: false,
|
|
553
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
554
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
555
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
556
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
557
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
558
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
559
|
-
// the gate check — belt-and-braces.
|
|
560
|
-
accessLevel: "none",
|
|
561
545
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
562
546
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
563
547
|
// as the fallback for older backends.
|
|
@@ -606,7 +590,6 @@ async function verify(config, request, options) {
|
|
|
606
590
|
trustScore: apiResponse.organization.trustScore
|
|
607
591
|
} : void 0;
|
|
608
592
|
const verificationContext = apiResponse.verificationContext;
|
|
609
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
610
593
|
const result = {
|
|
611
594
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
612
595
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -618,7 +601,6 @@ async function verify(config, request, options) {
|
|
|
618
601
|
// this load-bearing must never be defaulted on.
|
|
619
602
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
620
603
|
policyAllowed: true,
|
|
621
|
-
accessLevel,
|
|
622
604
|
agent,
|
|
623
605
|
developer,
|
|
624
606
|
organization,
|
|
@@ -645,7 +627,6 @@ async function verify(config, request, options) {
|
|
|
645
627
|
};
|
|
646
628
|
if (result.recommendation === "deny") {
|
|
647
629
|
result.policyAllowed = false;
|
|
648
|
-
result.accessLevel = "none";
|
|
649
630
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
650
631
|
result.guidance = result.runtimeChallenge ? {
|
|
651
632
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -1585,7 +1566,6 @@ function defaultOnDenied(result, _req, res) {
|
|
|
1585
1566
|
error: {
|
|
1586
1567
|
code: !result.identityVerified ? "UNAUTHORIZED" : "INSUFFICIENT_ACCESS",
|
|
1587
1568
|
message: result.denialReasons?.[0] || "Access denied",
|
|
1588
|
-
accessLevel: result.accessLevel,
|
|
1589
1569
|
guidance: result.guidance,
|
|
1590
1570
|
// Round-10: aggregated per-dimension detail + correlation handle.
|
|
1591
1571
|
failures: result.failures,
|
|
@@ -1701,11 +1681,11 @@ function createMiddleware(options) {
|
|
|
1701
1681
|
}
|
|
1702
1682
|
const wellKnownUrls = config.apiBaseUrl ? await getWellKnownUrls(config.apiBaseUrl).catch(() => void 0) : void 0;
|
|
1703
1683
|
const credentials = customExtractCredentials ? customExtractCredentials(req) : defaultExtractCredentials(req);
|
|
1704
|
-
const shouldEnforce = routeConfig.
|
|
1705
|
-
if (routeConfig.
|
|
1684
|
+
const shouldEnforce = !routeConfig.observe;
|
|
1685
|
+
if (routeConfig.observe && (!config.evaluateAlwaysIfCredentialed || !credentials.astraId)) {
|
|
1706
1686
|
if (config.setPassThroughHeader) {
|
|
1707
1687
|
res.setHeader("X-Astra-Gateway-Mode", "unenforced");
|
|
1708
|
-
res.setHeader("X-Astra-Gateway-Reason", "route-
|
|
1688
|
+
res.setHeader("X-Astra-Gateway-Reason", "route-observe");
|
|
1709
1689
|
}
|
|
1710
1690
|
beaconPassThrough?.(req);
|
|
1711
1691
|
return next();
|
|
@@ -1742,7 +1722,6 @@ function createMiddleware(options) {
|
|
|
1742
1722
|
const result2 = {
|
|
1743
1723
|
identityVerified: false,
|
|
1744
1724
|
policyAllowed: false,
|
|
1745
|
-
accessLevel: "none",
|
|
1746
1725
|
denialReasons: preCheckFailures.map((f) => f.message),
|
|
1747
1726
|
guidance: {
|
|
1748
1727
|
message: "Request exceeds counterparty-defined PDLSS limits.",
|
|
@@ -1905,7 +1884,6 @@ function createMiddleware(options) {
|
|
|
1905
1884
|
const result = {
|
|
1906
1885
|
identityVerified: false,
|
|
1907
1886
|
policyAllowed: false,
|
|
1908
|
-
accessLevel: "none",
|
|
1909
1887
|
denialReasons: [`Verification middleware internal error: ${errorClass}`],
|
|
1910
1888
|
failures: [
|
|
1911
1889
|
{
|