@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/codex/index.mjs
CHANGED
|
@@ -3988,7 +3988,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3988
3988
|
return evaluator.evaluate(context);
|
|
3989
3989
|
}
|
|
3990
3990
|
|
|
3991
|
-
// src/
|
|
3991
|
+
// src/trust-levels.ts
|
|
3992
3992
|
function getTrustLevel(score) {
|
|
3993
3993
|
if (score >= 80) return "PLATINUM";
|
|
3994
3994
|
if (score >= 60) return "GOLD";
|
|
@@ -3997,7 +3997,7 @@ function getTrustLevel(score) {
|
|
|
3997
3997
|
}
|
|
3998
3998
|
|
|
3999
3999
|
// src/version.ts
|
|
4000
|
-
var SDK_VERSION = "
|
|
4000
|
+
var SDK_VERSION = "5.0.0";
|
|
4001
4001
|
|
|
4002
4002
|
// src/http.ts
|
|
4003
4003
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4027,11 +4027,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
4027
4027
|
// src/verify.ts
|
|
4028
4028
|
var DEFAULT_CONFIG = {
|
|
4029
4029
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
4030
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
4031
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
4032
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
4033
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
4034
|
-
defaultAccessLevel: "none",
|
|
4035
4030
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
4036
4031
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
4037
4032
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -4154,6 +4149,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
|
4154
4149
|
expiresAt: Date.now() + ttlSeconds * 1e3
|
|
4155
4150
|
});
|
|
4156
4151
|
}
|
|
4152
|
+
function mcpGuidance(urls) {
|
|
4153
|
+
if (!urls?.mcpEndpoint) return void 0;
|
|
4154
|
+
return {
|
|
4155
|
+
endpoint: urls.mcpEndpoint,
|
|
4156
|
+
discoveryUrl: urls.mcpDiscoveryUrl,
|
|
4157
|
+
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."
|
|
4158
|
+
};
|
|
4159
|
+
}
|
|
4157
4160
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
4158
4161
|
const source = options.source ?? "no_credentials";
|
|
4159
4162
|
const isApiError = source === "api_error";
|
|
@@ -4180,11 +4183,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4180
4183
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4181
4184
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
4182
4185
|
steps: [
|
|
4186
|
+
// MCP steering leads when the hosted bridge is advertised — the
|
|
4187
|
+
// connector is the agent-actionable path (keyless, human-approved).
|
|
4188
|
+
...urls?.mcpEndpoint ? [
|
|
4189
|
+
`Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
|
|
4190
|
+
] : [],
|
|
4183
4191
|
"Register for an AstraSync account",
|
|
4184
4192
|
"Create and register your agent",
|
|
4185
4193
|
"Add your ASTRA-ID to request headers",
|
|
4186
4194
|
"Retry your request"
|
|
4187
|
-
]
|
|
4195
|
+
],
|
|
4196
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4188
4197
|
};
|
|
4189
4198
|
return {
|
|
4190
4199
|
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
@@ -4192,13 +4201,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4192
4201
|
// policy is not evaluated (we never reached the gate).
|
|
4193
4202
|
identityVerified: false,
|
|
4194
4203
|
policyAllowed: false,
|
|
4195
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4196
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
4197
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
4198
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
4199
|
-
// in other languages, custom integrations) inherit the correct
|
|
4200
|
-
// semantics.
|
|
4201
|
-
accessLevel: "none",
|
|
4202
4204
|
guidance,
|
|
4203
4205
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
4204
4206
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4292,7 +4294,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4292
4294
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4293
4295
|
access: {
|
|
4294
4296
|
allowed: false,
|
|
4295
|
-
accessLevel: "none",
|
|
4296
4297
|
reason: "endpoint_deactivated",
|
|
4297
4298
|
failures: [
|
|
4298
4299
|
{
|
|
@@ -4355,7 +4356,7 @@ async function verify(config, request, options) {
|
|
|
4355
4356
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4356
4357
|
deprecationWarningShown = true;
|
|
4357
4358
|
console.warn(
|
|
4358
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4359
|
+
"[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."
|
|
4359
4360
|
);
|
|
4360
4361
|
}
|
|
4361
4362
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4401,14 +4402,6 @@ async function verify(config, request, options) {
|
|
|
4401
4402
|
const result2 = {
|
|
4402
4403
|
identityVerified: idVerifiedFromBackend,
|
|
4403
4404
|
policyAllowed: false,
|
|
4404
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4405
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4406
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4407
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4408
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4409
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4410
|
-
// the gate check — belt-and-braces.
|
|
4411
|
-
accessLevel: "none",
|
|
4412
4405
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4413
4406
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4414
4407
|
// as the fallback for older backends.
|
|
@@ -4419,7 +4412,10 @@ async function verify(config, request, options) {
|
|
|
4419
4412
|
guidance: {
|
|
4420
4413
|
message: apiResponse.access?.reason || "Access denied by PDLSS policy",
|
|
4421
4414
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4422
|
-
documentationUrl: urls?.documentationUrl ?? ""
|
|
4415
|
+
documentationUrl: urls?.documentationUrl ?? "",
|
|
4416
|
+
// 5.1.0: anonymous callers land on this branch — steer MCP-hosted
|
|
4417
|
+
// agents to the connector (this is what the edge deny body surfaces).
|
|
4418
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4423
4419
|
},
|
|
4424
4420
|
verifiedAt: /* @__PURE__ */ new Date(),
|
|
4425
4421
|
// Extract sessionId so decisions can be recorded for denials too
|
|
@@ -4457,7 +4453,6 @@ async function verify(config, request, options) {
|
|
|
4457
4453
|
trustScore: apiResponse.organization.trustScore
|
|
4458
4454
|
} : void 0;
|
|
4459
4455
|
const verificationContext = apiResponse.verificationContext;
|
|
4460
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4461
4456
|
const result = {
|
|
4462
4457
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4463
4458
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4469,7 +4464,6 @@ async function verify(config, request, options) {
|
|
|
4469
4464
|
// this load-bearing must never be defaulted on.
|
|
4470
4465
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4471
4466
|
policyAllowed: true,
|
|
4472
|
-
accessLevel,
|
|
4473
4467
|
agent,
|
|
4474
4468
|
developer,
|
|
4475
4469
|
organization,
|
|
@@ -4496,7 +4490,6 @@ async function verify(config, request, options) {
|
|
|
4496
4490
|
};
|
|
4497
4491
|
if (result.recommendation === "deny") {
|
|
4498
4492
|
result.policyAllowed = false;
|
|
4499
|
-
result.accessLevel = "none";
|
|
4500
4493
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4501
4494
|
result.guidance = result.runtimeChallenge ? {
|
|
4502
4495
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4612,7 +4605,6 @@ function toGatewayConfig(config) {
|
|
|
4612
4605
|
return {
|
|
4613
4606
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4614
4607
|
apiKey: config.apiKey,
|
|
4615
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4616
4608
|
minTrustScore: config.minTrustScore,
|
|
4617
4609
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4618
4610
|
cacheTtl: config.cacheTtl,
|
|
@@ -4640,7 +4632,7 @@ function toDecision(result) {
|
|
|
4640
4632
|
if (result.identityVerified && result.policyAllowed) {
|
|
4641
4633
|
return {
|
|
4642
4634
|
recommendation: "ALLOW",
|
|
4643
|
-
reason: `Verified
|
|
4635
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4644
4636
|
trustScore: result.agent?.trustScore,
|
|
4645
4637
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4646
4638
|
};
|