@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
|
@@ -3969,7 +3969,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3969
3969
|
return evaluator.evaluate(context);
|
|
3970
3970
|
}
|
|
3971
3971
|
|
|
3972
|
-
// src/
|
|
3972
|
+
// src/trust-levels.ts
|
|
3973
3973
|
function getTrustLevel(score) {
|
|
3974
3974
|
if (score >= 80) return "PLATINUM";
|
|
3975
3975
|
if (score >= 60) return "GOLD";
|
|
@@ -3978,7 +3978,7 @@ function getTrustLevel(score) {
|
|
|
3978
3978
|
}
|
|
3979
3979
|
|
|
3980
3980
|
// src/version.ts
|
|
3981
|
-
var SDK_VERSION = "
|
|
3981
|
+
var SDK_VERSION = "5.0.0";
|
|
3982
3982
|
|
|
3983
3983
|
// src/http.ts
|
|
3984
3984
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4008,11 +4008,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
4008
4008
|
// src/verify.ts
|
|
4009
4009
|
var DEFAULT_CONFIG = {
|
|
4010
4010
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
4011
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
4012
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
4013
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
4014
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
4015
|
-
defaultAccessLevel: "none",
|
|
4016
4011
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
4017
4012
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
4018
4013
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -4135,6 +4130,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
|
4135
4130
|
expiresAt: Date.now() + ttlSeconds * 1e3
|
|
4136
4131
|
});
|
|
4137
4132
|
}
|
|
4133
|
+
function mcpGuidance(urls) {
|
|
4134
|
+
if (!urls?.mcpEndpoint) return void 0;
|
|
4135
|
+
return {
|
|
4136
|
+
endpoint: urls.mcpEndpoint,
|
|
4137
|
+
discoveryUrl: urls.mcpDiscoveryUrl,
|
|
4138
|
+
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."
|
|
4139
|
+
};
|
|
4140
|
+
}
|
|
4138
4141
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
4139
4142
|
const source = options.source ?? "no_credentials";
|
|
4140
4143
|
const isApiError = source === "api_error";
|
|
@@ -4161,11 +4164,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4161
4164
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4162
4165
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
4163
4166
|
steps: [
|
|
4167
|
+
// MCP steering leads when the hosted bridge is advertised — the
|
|
4168
|
+
// connector is the agent-actionable path (keyless, human-approved).
|
|
4169
|
+
...urls?.mcpEndpoint ? [
|
|
4170
|
+
`Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
|
|
4171
|
+
] : [],
|
|
4164
4172
|
"Register for an AstraSync account",
|
|
4165
4173
|
"Create and register your agent",
|
|
4166
4174
|
"Add your ASTRA-ID to request headers",
|
|
4167
4175
|
"Retry your request"
|
|
4168
|
-
]
|
|
4176
|
+
],
|
|
4177
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4169
4178
|
};
|
|
4170
4179
|
return {
|
|
4171
4180
|
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
@@ -4173,13 +4182,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4173
4182
|
// policy is not evaluated (we never reached the gate).
|
|
4174
4183
|
identityVerified: false,
|
|
4175
4184
|
policyAllowed: false,
|
|
4176
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4177
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
4178
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
4179
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
4180
|
-
// in other languages, custom integrations) inherit the correct
|
|
4181
|
-
// semantics.
|
|
4182
|
-
accessLevel: "none",
|
|
4183
4185
|
guidance,
|
|
4184
4186
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
4185
4187
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4273,7 +4275,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4273
4275
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4274
4276
|
access: {
|
|
4275
4277
|
allowed: false,
|
|
4276
|
-
accessLevel: "none",
|
|
4277
4278
|
reason: "endpoint_deactivated",
|
|
4278
4279
|
failures: [
|
|
4279
4280
|
{
|
|
@@ -4336,7 +4337,7 @@ async function verify(config, request, options) {
|
|
|
4336
4337
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4337
4338
|
deprecationWarningShown = true;
|
|
4338
4339
|
console.warn(
|
|
4339
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4340
|
+
"[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."
|
|
4340
4341
|
);
|
|
4341
4342
|
}
|
|
4342
4343
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4382,14 +4383,6 @@ async function verify(config, request, options) {
|
|
|
4382
4383
|
const result2 = {
|
|
4383
4384
|
identityVerified: idVerifiedFromBackend,
|
|
4384
4385
|
policyAllowed: false,
|
|
4385
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4386
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4387
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4388
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4389
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4390
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4391
|
-
// the gate check — belt-and-braces.
|
|
4392
|
-
accessLevel: "none",
|
|
4393
4386
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4394
4387
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4395
4388
|
// as the fallback for older backends.
|
|
@@ -4400,7 +4393,10 @@ async function verify(config, request, options) {
|
|
|
4400
4393
|
guidance: {
|
|
4401
4394
|
message: apiResponse.access?.reason || "Access denied by PDLSS policy",
|
|
4402
4395
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4403
|
-
documentationUrl: urls?.documentationUrl ?? ""
|
|
4396
|
+
documentationUrl: urls?.documentationUrl ?? "",
|
|
4397
|
+
// 5.1.0: anonymous callers land on this branch — steer MCP-hosted
|
|
4398
|
+
// agents to the connector (this is what the edge deny body surfaces).
|
|
4399
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4404
4400
|
},
|
|
4405
4401
|
verifiedAt: /* @__PURE__ */ new Date(),
|
|
4406
4402
|
// Extract sessionId so decisions can be recorded for denials too
|
|
@@ -4438,7 +4434,6 @@ async function verify(config, request, options) {
|
|
|
4438
4434
|
trustScore: apiResponse.organization.trustScore
|
|
4439
4435
|
} : void 0;
|
|
4440
4436
|
const verificationContext = apiResponse.verificationContext;
|
|
4441
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4442
4437
|
const result = {
|
|
4443
4438
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4444
4439
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4450,7 +4445,6 @@ async function verify(config, request, options) {
|
|
|
4450
4445
|
// this load-bearing must never be defaulted on.
|
|
4451
4446
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4452
4447
|
policyAllowed: true,
|
|
4453
|
-
accessLevel,
|
|
4454
4448
|
agent,
|
|
4455
4449
|
developer,
|
|
4456
4450
|
organization,
|
|
@@ -4477,7 +4471,6 @@ async function verify(config, request, options) {
|
|
|
4477
4471
|
};
|
|
4478
4472
|
if (result.recommendation === "deny") {
|
|
4479
4473
|
result.policyAllowed = false;
|
|
4480
|
-
result.accessLevel = "none";
|
|
4481
4474
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4482
4475
|
result.guidance = result.runtimeChallenge ? {
|
|
4483
4476
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4593,7 +4586,6 @@ function toGatewayConfig(config) {
|
|
|
4593
4586
|
return {
|
|
4594
4587
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4595
4588
|
apiKey: config.apiKey,
|
|
4596
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4597
4589
|
minTrustScore: config.minTrustScore,
|
|
4598
4590
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4599
4591
|
cacheTtl: config.cacheTtl,
|
|
@@ -4621,7 +4613,7 @@ function toDecision(result) {
|
|
|
4621
4613
|
if (result.identityVerified && result.policyAllowed) {
|
|
4622
4614
|
return {
|
|
4623
4615
|
recommendation: "ALLOW",
|
|
4624
|
-
reason: `Verified
|
|
4616
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4625
4617
|
trustScore: result.agent?.trustScore,
|
|
4626
4618
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4627
4619
|
};
|