@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RequestHandler, Request } from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { w as VerificationResult, j as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-CSHcByFX.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* AstraSync Universal Verification Gateway - Express Middleware
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RequestHandler, Request } from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { w as VerificationResult, j as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-CNBaZKxY.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* AstraSync Universal Verification Gateway - Express Middleware
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-
|
|
2
|
-
import '../types-
|
|
1
|
+
import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-CoDjpbVY.mjs';
|
|
2
|
+
import '../types-CSHcByFX.mjs';
|
|
3
3
|
import '../metadata-capture.mjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-
|
|
2
|
-
import '../types-
|
|
1
|
+
import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-3UV7IZx7.js';
|
|
2
|
+
import '../types-CNBaZKxY.js';
|
|
3
3
|
import '../metadata-capture.js';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/gateway/gateway.js
CHANGED
|
@@ -3731,7 +3731,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3731
3731
|
return evaluator.evaluate(context);
|
|
3732
3732
|
}
|
|
3733
3733
|
|
|
3734
|
-
// src/
|
|
3734
|
+
// src/trust-levels.ts
|
|
3735
3735
|
function getTrustLevel(score) {
|
|
3736
3736
|
if (score >= 80) return "PLATINUM";
|
|
3737
3737
|
if (score >= 60) return "GOLD";
|
|
@@ -3740,7 +3740,7 @@ function getTrustLevel(score) {
|
|
|
3740
3740
|
}
|
|
3741
3741
|
|
|
3742
3742
|
// src/version.ts
|
|
3743
|
-
var SDK_VERSION = "
|
|
3743
|
+
var SDK_VERSION = "5.0.0";
|
|
3744
3744
|
|
|
3745
3745
|
// src/http.ts
|
|
3746
3746
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -3770,11 +3770,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
3770
3770
|
// src/verify.ts
|
|
3771
3771
|
var DEFAULT_CONFIG = {
|
|
3772
3772
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
3773
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
3774
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
3775
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
3776
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3777
|
-
defaultAccessLevel: "none",
|
|
3778
3773
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3779
3774
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3780
3775
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -3897,6 +3892,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
|
3897
3892
|
expiresAt: Date.now() + ttlSeconds * 1e3
|
|
3898
3893
|
});
|
|
3899
3894
|
}
|
|
3895
|
+
function mcpGuidance(urls) {
|
|
3896
|
+
if (!urls?.mcpEndpoint) return void 0;
|
|
3897
|
+
return {
|
|
3898
|
+
endpoint: urls.mcpEndpoint,
|
|
3899
|
+
discoveryUrl: urls.mcpDiscoveryUrl,
|
|
3900
|
+
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."
|
|
3901
|
+
};
|
|
3902
|
+
}
|
|
3900
3903
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
3901
3904
|
const source = options.source ?? "no_credentials";
|
|
3902
3905
|
const isApiError = source === "api_error";
|
|
@@ -3923,11 +3926,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
3923
3926
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
3924
3927
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
3925
3928
|
steps: [
|
|
3929
|
+
// MCP steering leads when the hosted bridge is advertised — the
|
|
3930
|
+
// connector is the agent-actionable path (keyless, human-approved).
|
|
3931
|
+
...urls?.mcpEndpoint ? [
|
|
3932
|
+
`Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
|
|
3933
|
+
] : [],
|
|
3926
3934
|
"Register for an AstraSync account",
|
|
3927
3935
|
"Create and register your agent",
|
|
3928
3936
|
"Add your ASTRA-ID to request headers",
|
|
3929
3937
|
"Retry your request"
|
|
3930
|
-
]
|
|
3938
|
+
],
|
|
3939
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
3931
3940
|
};
|
|
3932
3941
|
return {
|
|
3933
3942
|
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
@@ -3935,13 +3944,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
3935
3944
|
// policy is not evaluated (we never reached the gate).
|
|
3936
3945
|
identityVerified: false,
|
|
3937
3946
|
policyAllowed: false,
|
|
3938
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
3939
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
3940
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
3941
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
3942
|
-
// in other languages, custom integrations) inherit the correct
|
|
3943
|
-
// semantics.
|
|
3944
|
-
accessLevel: "none",
|
|
3945
3947
|
guidance,
|
|
3946
3948
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
3947
3949
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4035,7 +4037,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4035
4037
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4036
4038
|
access: {
|
|
4037
4039
|
allowed: false,
|
|
4038
|
-
accessLevel: "none",
|
|
4039
4040
|
reason: "endpoint_deactivated",
|
|
4040
4041
|
failures: [
|
|
4041
4042
|
{
|
|
@@ -4098,7 +4099,7 @@ async function verify(config, request, options) {
|
|
|
4098
4099
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4099
4100
|
deprecationWarningShown = true;
|
|
4100
4101
|
console.warn(
|
|
4101
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4102
|
+
"[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."
|
|
4102
4103
|
);
|
|
4103
4104
|
}
|
|
4104
4105
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4144,14 +4145,6 @@ async function verify(config, request, options) {
|
|
|
4144
4145
|
const result2 = {
|
|
4145
4146
|
identityVerified: idVerifiedFromBackend,
|
|
4146
4147
|
policyAllowed: false,
|
|
4147
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4148
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4149
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4150
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4151
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4152
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4153
|
-
// the gate check — belt-and-braces.
|
|
4154
|
-
accessLevel: "none",
|
|
4155
4148
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4156
4149
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4157
4150
|
// as the fallback for older backends.
|
|
@@ -4162,7 +4155,10 @@ async function verify(config, request, options) {
|
|
|
4162
4155
|
guidance: {
|
|
4163
4156
|
message: apiResponse.access?.reason || "Access denied by PDLSS policy",
|
|
4164
4157
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4165
|
-
documentationUrl: urls?.documentationUrl ?? ""
|
|
4158
|
+
documentationUrl: urls?.documentationUrl ?? "",
|
|
4159
|
+
// 5.1.0: anonymous callers land on this branch — steer MCP-hosted
|
|
4160
|
+
// agents to the connector (this is what the edge deny body surfaces).
|
|
4161
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4166
4162
|
},
|
|
4167
4163
|
verifiedAt: /* @__PURE__ */ new Date(),
|
|
4168
4164
|
// Extract sessionId so decisions can be recorded for denials too
|
|
@@ -4200,7 +4196,6 @@ async function verify(config, request, options) {
|
|
|
4200
4196
|
trustScore: apiResponse.organization.trustScore
|
|
4201
4197
|
} : void 0;
|
|
4202
4198
|
const verificationContext = apiResponse.verificationContext;
|
|
4203
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4204
4199
|
const result = {
|
|
4205
4200
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4206
4201
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4212,7 +4207,6 @@ async function verify(config, request, options) {
|
|
|
4212
4207
|
// this load-bearing must never be defaulted on.
|
|
4213
4208
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4214
4209
|
policyAllowed: true,
|
|
4215
|
-
accessLevel,
|
|
4216
4210
|
agent,
|
|
4217
4211
|
developer,
|
|
4218
4212
|
organization,
|
|
@@ -4239,7 +4233,6 @@ async function verify(config, request, options) {
|
|
|
4239
4233
|
};
|
|
4240
4234
|
if (result.recommendation === "deny") {
|
|
4241
4235
|
result.policyAllowed = false;
|
|
4242
|
-
result.accessLevel = "none";
|
|
4243
4236
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4244
4237
|
result.guidance = result.runtimeChallenge ? {
|
|
4245
4238
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4352,7 +4345,6 @@ function toGatewayConfig(config) {
|
|
|
4352
4345
|
return {
|
|
4353
4346
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4354
4347
|
apiKey: config.apiKey,
|
|
4355
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4356
4348
|
minTrustScore: config.minTrustScore,
|
|
4357
4349
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4358
4350
|
cacheTtl: config.cacheTtl,
|
|
@@ -4380,7 +4372,7 @@ function toDecision(result) {
|
|
|
4380
4372
|
if (result.identityVerified && result.policyAllowed) {
|
|
4381
4373
|
return {
|
|
4382
4374
|
recommendation: "ALLOW",
|
|
4383
|
-
reason: `Verified
|
|
4375
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4384
4376
|
trustScore: result.agent?.trustScore,
|
|
4385
4377
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4386
4378
|
};
|