@astrasyncai/verification-gateway 4.6.0 → 5.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.
- 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 +25 -35
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +25 -35
- 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 +42 -67
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +41 -66
- 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 +23 -32
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +23 -32
- 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 +22 -126
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +22 -124
- 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 +23 -31
- package/dist/bin/astrasync-codex-hook.js +23 -31
- package/dist/bin/astrasync-guard.js +23 -31
- package/dist/bin/astrasync.js +28 -36
- package/dist/browser/background.js +23 -31
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +23 -31
- 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 +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.d.mts +2 -2
- package/dist/codex/index.d.ts +2 -2
- package/dist/codex/index.js +23 -31
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +23 -31
- 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 +23 -31
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +23 -31
- 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 +12 -3
- package/dist/edge-core/index.d.ts +12 -3
- package/dist/edge-core/index.js +42 -36
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +42 -36
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-DBtPKXOL.d.mts → express-KkBZBMqi.d.mts} +1 -1
- package/dist/{express-D-8Ks2Uo.d.ts → express-xK8pRrmj.d.ts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +23 -31
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +23 -31
- 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-kGCGWd5x.d.mts → index-DIRzR5IS.d.mts} +1 -1
- package/dist/{index-DlZORQsb.d.ts → index-DLQ4Rcuc.d.ts} +1 -1
- package/dist/{index-CUfmJ1Dq.d.mts → index-GPDn_EGI.d.mts} +1 -1
- package/dist/{index-BND3kQev.d.ts → index-Hnz5VyMR.d.ts} +1 -1
- package/dist/index.d.mts +14 -10
- package/dist/index.d.ts +14 -10
- package/dist/index.js +44 -219
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -212
- 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.map +1 -1
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{mcp-DToTlwIn.d.ts → mcp-DPpu4xQz.d.ts} +53 -52
- package/dist/{mcp-ZRN4kY3b.d.mts → mcp-Dju_Sr1o.d.mts} +53 -52
- package/dist/{nextjs-C0KASOy_.d.mts → nextjs-BuoDBN4g.d.mts} +1 -1
- package/dist/{nextjs-lwNvWYWT.d.ts → nextjs-rZKzY_8o.d.ts} +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/sdk-CdO6TIEf.d.mts +142 -0
- package/dist/sdk-DxHuIJBm.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-DhhJxKIC.d.ts → types-3UV7IZx7.d.ts} +1 -3
- package/dist/{types-CGPU7HLi.d.ts → types-CNBaZKxY.d.ts} +24 -50
- package/dist/{types-Cx9hTpKI.d.mts → types-CSHcByFX.d.mts} +24 -50
- package/dist/{types-CfSJLS4i.d.mts → types-CoDjpbVY.d.mts} +1 -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 +22 -30
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +22 -30
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/sdk-B4aodEwj.d.ts +0 -215
- package/dist/sdk-B9dSwum7.d.mts +0 -215
package/dist/gateway/gateway.mjs
CHANGED
|
@@ -3705,7 +3705,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3705
3705
|
return evaluator.evaluate(context);
|
|
3706
3706
|
}
|
|
3707
3707
|
|
|
3708
|
-
// src/
|
|
3708
|
+
// src/trust-levels.ts
|
|
3709
3709
|
function getTrustLevel(score) {
|
|
3710
3710
|
if (score >= 80) return "PLATINUM";
|
|
3711
3711
|
if (score >= 60) return "GOLD";
|
|
@@ -3714,7 +3714,7 @@ function getTrustLevel(score) {
|
|
|
3714
3714
|
}
|
|
3715
3715
|
|
|
3716
3716
|
// src/version.ts
|
|
3717
|
-
var SDK_VERSION = "
|
|
3717
|
+
var SDK_VERSION = "5.0.0";
|
|
3718
3718
|
|
|
3719
3719
|
// src/http.ts
|
|
3720
3720
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -3744,11 +3744,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
3744
3744
|
// src/verify.ts
|
|
3745
3745
|
var DEFAULT_CONFIG = {
|
|
3746
3746
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
3747
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
3748
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
3749
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
3750
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3751
|
-
defaultAccessLevel: "none",
|
|
3752
3747
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3753
3748
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3754
3749
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -3871,6 +3866,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
|
3871
3866
|
expiresAt: Date.now() + ttlSeconds * 1e3
|
|
3872
3867
|
});
|
|
3873
3868
|
}
|
|
3869
|
+
function mcpGuidance(urls) {
|
|
3870
|
+
if (!urls?.mcpEndpoint) return void 0;
|
|
3871
|
+
return {
|
|
3872
|
+
endpoint: urls.mcpEndpoint,
|
|
3873
|
+
discoveryUrl: urls.mcpDiscoveryUrl,
|
|
3874
|
+
message: "If you are operating inside an MCP-capable host (Claude, ChatGPT, Cursor, or any MCP client), add the AstraSync MCP connector instead of integrating these URLs by hand: registration through the connector is KEYLESS and HUMAN-APPROVED \u2014 your human approves in an in-chat card, and you never see, hold, or transmit an API key, password, or private key."
|
|
3875
|
+
};
|
|
3876
|
+
}
|
|
3874
3877
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
3875
3878
|
const source = options.source ?? "no_credentials";
|
|
3876
3879
|
const isApiError = source === "api_error";
|
|
@@ -3897,11 +3900,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
3897
3900
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
3898
3901
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
3899
3902
|
steps: [
|
|
3903
|
+
// MCP steering leads when the hosted bridge is advertised — the
|
|
3904
|
+
// connector is the agent-actionable path (keyless, human-approved).
|
|
3905
|
+
...urls?.mcpEndpoint ? [
|
|
3906
|
+
`Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
|
|
3907
|
+
] : [],
|
|
3900
3908
|
"Register for an AstraSync account",
|
|
3901
3909
|
"Create and register your agent",
|
|
3902
3910
|
"Add your ASTRA-ID to request headers",
|
|
3903
3911
|
"Retry your request"
|
|
3904
|
-
]
|
|
3912
|
+
],
|
|
3913
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
3905
3914
|
};
|
|
3906
3915
|
return {
|
|
3907
3916
|
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
@@ -3909,13 +3918,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
3909
3918
|
// policy is not evaluated (we never reached the gate).
|
|
3910
3919
|
identityVerified: false,
|
|
3911
3920
|
policyAllowed: false,
|
|
3912
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
3913
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
3914
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
3915
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
3916
|
-
// in other languages, custom integrations) inherit the correct
|
|
3917
|
-
// semantics.
|
|
3918
|
-
accessLevel: "none",
|
|
3919
3921
|
guidance,
|
|
3920
3922
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
3921
3923
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4009,7 +4011,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4009
4011
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4010
4012
|
access: {
|
|
4011
4013
|
allowed: false,
|
|
4012
|
-
accessLevel: "none",
|
|
4013
4014
|
reason: "endpoint_deactivated",
|
|
4014
4015
|
failures: [
|
|
4015
4016
|
{
|
|
@@ -4072,7 +4073,7 @@ async function verify(config, request, options) {
|
|
|
4072
4073
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4073
4074
|
deprecationWarningShown = true;
|
|
4074
4075
|
console.warn(
|
|
4075
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4076
|
+
"[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."
|
|
4076
4077
|
);
|
|
4077
4078
|
}
|
|
4078
4079
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4118,14 +4119,6 @@ async function verify(config, request, options) {
|
|
|
4118
4119
|
const result2 = {
|
|
4119
4120
|
identityVerified: idVerifiedFromBackend,
|
|
4120
4121
|
policyAllowed: false,
|
|
4121
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4122
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4123
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4124
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4125
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4126
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4127
|
-
// the gate check — belt-and-braces.
|
|
4128
|
-
accessLevel: "none",
|
|
4129
4122
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4130
4123
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4131
4124
|
// as the fallback for older backends.
|
|
@@ -4136,7 +4129,10 @@ async function verify(config, request, options) {
|
|
|
4136
4129
|
guidance: {
|
|
4137
4130
|
message: apiResponse.access?.reason || "Access denied by PDLSS policy",
|
|
4138
4131
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4139
|
-
documentationUrl: urls?.documentationUrl ?? ""
|
|
4132
|
+
documentationUrl: urls?.documentationUrl ?? "",
|
|
4133
|
+
// 5.1.0: anonymous callers land on this branch — steer MCP-hosted
|
|
4134
|
+
// agents to the connector (this is what the edge deny body surfaces).
|
|
4135
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4140
4136
|
},
|
|
4141
4137
|
verifiedAt: /* @__PURE__ */ new Date(),
|
|
4142
4138
|
// Extract sessionId so decisions can be recorded for denials too
|
|
@@ -4174,7 +4170,6 @@ async function verify(config, request, options) {
|
|
|
4174
4170
|
trustScore: apiResponse.organization.trustScore
|
|
4175
4171
|
} : void 0;
|
|
4176
4172
|
const verificationContext = apiResponse.verificationContext;
|
|
4177
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4178
4173
|
const result = {
|
|
4179
4174
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4180
4175
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4186,7 +4181,6 @@ async function verify(config, request, options) {
|
|
|
4186
4181
|
// this load-bearing must never be defaulted on.
|
|
4187
4182
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4188
4183
|
policyAllowed: true,
|
|
4189
|
-
accessLevel,
|
|
4190
4184
|
agent,
|
|
4191
4185
|
developer,
|
|
4192
4186
|
organization,
|
|
@@ -4213,7 +4207,6 @@ async function verify(config, request, options) {
|
|
|
4213
4207
|
};
|
|
4214
4208
|
if (result.recommendation === "deny") {
|
|
4215
4209
|
result.policyAllowed = false;
|
|
4216
|
-
result.accessLevel = "none";
|
|
4217
4210
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4218
4211
|
result.guidance = result.runtimeChallenge ? {
|
|
4219
4212
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4329,7 +4322,6 @@ function toGatewayConfig(config) {
|
|
|
4329
4322
|
return {
|
|
4330
4323
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4331
4324
|
apiKey: config.apiKey,
|
|
4332
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4333
4325
|
minTrustScore: config.minTrustScore,
|
|
4334
4326
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4335
4327
|
cacheTtl: config.cacheTtl,
|
|
@@ -4357,7 +4349,7 @@ function toDecision(result) {
|
|
|
4357
4349
|
if (result.identityVerified && result.policyAllowed) {
|
|
4358
4350
|
return {
|
|
4359
4351
|
recommendation: "ALLOW",
|
|
4360
|
-
reason: `Verified
|
|
4352
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4361
4353
|
trustScore: result.agent?.trustScore,
|
|
4362
4354
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4363
4355
|
};
|