@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
package/dist/adapters/sdk.mjs
CHANGED
|
@@ -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}`;
|
|
@@ -19,84 +19,13 @@ function withUserAgent(initHeaders) {
|
|
|
19
19
|
}
|
|
20
20
|
var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
|
|
21
21
|
|
|
22
|
-
// src/
|
|
23
|
-
var ACCESS_LEVEL_HIERARCHY = {
|
|
24
|
-
none: 0,
|
|
25
|
-
restricted: 1,
|
|
26
|
-
"read-only": 2,
|
|
27
|
-
standard: 3,
|
|
28
|
-
full: 4,
|
|
29
|
-
internal: 5
|
|
30
|
-
};
|
|
22
|
+
// src/trust-levels.ts
|
|
31
23
|
function getTrustLevel(score) {
|
|
32
24
|
if (score >= 80) return "PLATINUM";
|
|
33
25
|
if (score >= 60) return "GOLD";
|
|
34
26
|
if (score >= 40) return "SILVER";
|
|
35
27
|
return "BRONZE";
|
|
36
28
|
}
|
|
37
|
-
function hasMinimumAccess(actual, required) {
|
|
38
|
-
return ACCESS_LEVEL_HIERARCHY[actual] >= ACCESS_LEVEL_HIERARCHY[required];
|
|
39
|
-
}
|
|
40
|
-
function getCapabilities(accessLevel) {
|
|
41
|
-
switch (accessLevel) {
|
|
42
|
-
case "none":
|
|
43
|
-
return {
|
|
44
|
-
canRead: false,
|
|
45
|
-
canWrite: false,
|
|
46
|
-
canDelete: false,
|
|
47
|
-
canAdmin: false,
|
|
48
|
-
canAccessInternal: false
|
|
49
|
-
};
|
|
50
|
-
case "restricted":
|
|
51
|
-
return {
|
|
52
|
-
canRead: false,
|
|
53
|
-
canWrite: false,
|
|
54
|
-
canDelete: false,
|
|
55
|
-
canAdmin: false,
|
|
56
|
-
canAccessInternal: false
|
|
57
|
-
};
|
|
58
|
-
case "read-only":
|
|
59
|
-
return {
|
|
60
|
-
canRead: true,
|
|
61
|
-
canWrite: false,
|
|
62
|
-
canDelete: false,
|
|
63
|
-
canAdmin: false,
|
|
64
|
-
canAccessInternal: false
|
|
65
|
-
};
|
|
66
|
-
case "standard":
|
|
67
|
-
return {
|
|
68
|
-
canRead: true,
|
|
69
|
-
canWrite: true,
|
|
70
|
-
canDelete: false,
|
|
71
|
-
canAdmin: false,
|
|
72
|
-
canAccessInternal: false
|
|
73
|
-
};
|
|
74
|
-
case "full":
|
|
75
|
-
return {
|
|
76
|
-
canRead: true,
|
|
77
|
-
canWrite: true,
|
|
78
|
-
canDelete: true,
|
|
79
|
-
canAdmin: false,
|
|
80
|
-
canAccessInternal: false
|
|
81
|
-
};
|
|
82
|
-
case "internal":
|
|
83
|
-
return {
|
|
84
|
-
canRead: true,
|
|
85
|
-
canWrite: true,
|
|
86
|
-
canDelete: true,
|
|
87
|
-
canAdmin: true,
|
|
88
|
-
canAccessInternal: true
|
|
89
|
-
};
|
|
90
|
-
default:
|
|
91
|
-
return {
|
|
92
|
-
canRead: false,
|
|
93
|
-
canWrite: false,
|
|
94
|
-
canDelete: false,
|
|
95
|
-
canAdmin: false,
|
|
96
|
-
canAccessInternal: false
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
29
|
|
|
101
30
|
// src/well-known.ts
|
|
102
31
|
var CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -108,11 +37,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
108
37
|
// src/verify.ts
|
|
109
38
|
var DEFAULT_CONFIG = {
|
|
110
39
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
111
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
112
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
113
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
114
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
115
|
-
defaultAccessLevel: "none",
|
|
116
40
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
117
41
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
118
42
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -276,13 +200,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
276
200
|
// policy is not evaluated (we never reached the gate).
|
|
277
201
|
identityVerified: false,
|
|
278
202
|
policyAllowed: false,
|
|
279
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
280
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
281
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
282
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
283
|
-
// in other languages, custom integrations) inherit the correct
|
|
284
|
-
// semantics.
|
|
285
|
-
accessLevel: "none",
|
|
286
203
|
guidance,
|
|
287
204
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
288
205
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -305,6 +222,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
305
222
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
306
223
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
307
224
|
...isMisconfig && { misconfigured: true },
|
|
225
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
226
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
227
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
228
|
+
// deterministic and intentionally NOT marked retryable.
|
|
229
|
+
...isApiError && { retryable: true },
|
|
308
230
|
correlationId: options.correlationId,
|
|
309
231
|
attemptId: options.attemptId,
|
|
310
232
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -371,7 +293,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
371
293
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
372
294
|
access: {
|
|
373
295
|
allowed: false,
|
|
374
|
-
accessLevel: "none",
|
|
375
296
|
reason: "endpoint_deactivated",
|
|
376
297
|
failures: [
|
|
377
298
|
{
|
|
@@ -434,7 +355,7 @@ async function verify(config, request, options) {
|
|
|
434
355
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
435
356
|
deprecationWarningShown = true;
|
|
436
357
|
console.warn(
|
|
437
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
358
|
+
"[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."
|
|
438
359
|
);
|
|
439
360
|
}
|
|
440
361
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -480,14 +401,6 @@ async function verify(config, request, options) {
|
|
|
480
401
|
const result2 = {
|
|
481
402
|
identityVerified: idVerifiedFromBackend,
|
|
482
403
|
policyAllowed: false,
|
|
483
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
484
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
485
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
486
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
487
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
488
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
489
|
-
// the gate check — belt-and-braces.
|
|
490
|
-
accessLevel: "none",
|
|
491
404
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
492
405
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
493
406
|
// as the fallback for older backends.
|
|
@@ -536,7 +449,6 @@ async function verify(config, request, options) {
|
|
|
536
449
|
trustScore: apiResponse.organization.trustScore
|
|
537
450
|
} : void 0;
|
|
538
451
|
const verificationContext = apiResponse.verificationContext;
|
|
539
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
540
452
|
const result = {
|
|
541
453
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
542
454
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -548,7 +460,6 @@ async function verify(config, request, options) {
|
|
|
548
460
|
// this load-bearing must never be defaulted on.
|
|
549
461
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
550
462
|
policyAllowed: true,
|
|
551
|
-
accessLevel,
|
|
552
463
|
agent,
|
|
553
464
|
developer,
|
|
554
465
|
organization,
|
|
@@ -575,7 +486,6 @@ async function verify(config, request, options) {
|
|
|
575
486
|
};
|
|
576
487
|
if (result.recommendation === "deny") {
|
|
577
488
|
result.policyAllowed = false;
|
|
578
|
-
result.accessLevel = "none";
|
|
579
489
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
580
490
|
result.guidance = result.runtimeChallenge ? {
|
|
581
491
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -604,7 +514,6 @@ async function quickVerify(config, credentials) {
|
|
|
604
514
|
return {
|
|
605
515
|
identityVerified: result.identityVerified,
|
|
606
516
|
policyAllowed: result.policyAllowed,
|
|
607
|
-
accessLevel: result.accessLevel,
|
|
608
517
|
reason: result.denialReasons?.[0]
|
|
609
518
|
};
|
|
610
519
|
}
|
|
@@ -615,7 +524,6 @@ var VerificationGatewayClient = class {
|
|
|
615
524
|
this.config = {
|
|
616
525
|
apiBaseUrl: options.apiBaseUrl,
|
|
617
526
|
apiKey: options.apiKey,
|
|
618
|
-
defaultAccessLevel: options.defaultAccessLevel,
|
|
619
527
|
minTrustScore: options.minTrustScore,
|
|
620
528
|
minTrustScoreForFull: options.minTrustScoreForFull,
|
|
621
529
|
cacheTtl: options.cacheTtl,
|
|
@@ -664,26 +572,6 @@ var VerificationGatewayClient = class {
|
|
|
664
572
|
async quickVerify(credentials) {
|
|
665
573
|
return this.executeWithRetry(() => quickVerify(this.config, credentials));
|
|
666
574
|
}
|
|
667
|
-
/**
|
|
668
|
-
* Check if an agent has a specific access level.
|
|
669
|
-
*
|
|
670
|
-
* @deprecated 3.2.0 — the access-level band is informational only; it no
|
|
671
|
-
* longer gates in the middleware adapters (post-3.1.0 feedback #1). This
|
|
672
|
-
* explicit opt-in query still works, but prefer gating on the server-side
|
|
673
|
-
* policy decision (identity + policy + trust) or per-route `minTrustScore`.
|
|
674
|
-
* Explicit per-route condition→constraint rules are the Phase-2 successor.
|
|
675
|
-
*/
|
|
676
|
-
async hasAccess(credentials, requiredLevel) {
|
|
677
|
-
const result = await this.quickVerify(credentials);
|
|
678
|
-
return hasMinimumAccess(result.accessLevel, requiredLevel);
|
|
679
|
-
}
|
|
680
|
-
/**
|
|
681
|
-
* Get capabilities for a verified agent
|
|
682
|
-
*/
|
|
683
|
-
async getCapabilities(credentials) {
|
|
684
|
-
const result = await this.quickVerify(credentials);
|
|
685
|
-
return getCapabilities(result.accessLevel);
|
|
686
|
-
}
|
|
687
575
|
/**
|
|
688
576
|
* Verify a specific ASTRA-ID
|
|
689
577
|
*/
|
|
@@ -745,9 +633,7 @@ async function verifyOnce(options) {
|
|
|
745
633
|
export {
|
|
746
634
|
VerificationGatewayClient,
|
|
747
635
|
createClient,
|
|
748
|
-
getCapabilities,
|
|
749
636
|
getTrustLevel,
|
|
750
|
-
hasMinimumAccess,
|
|
751
637
|
verifyOnce
|
|
752
638
|
};
|
|
753
639
|
//# sourceMappingURL=sdk.mjs.map
|