@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
|
@@ -3948,7 +3948,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3948
3948
|
return evaluator.evaluate(context);
|
|
3949
3949
|
}
|
|
3950
3950
|
|
|
3951
|
-
// src/
|
|
3951
|
+
// src/trust-levels.ts
|
|
3952
3952
|
function getTrustLevel(score) {
|
|
3953
3953
|
if (score >= 80) return "PLATINUM";
|
|
3954
3954
|
if (score >= 60) return "GOLD";
|
|
@@ -3957,7 +3957,7 @@ function getTrustLevel(score) {
|
|
|
3957
3957
|
}
|
|
3958
3958
|
|
|
3959
3959
|
// src/version.ts
|
|
3960
|
-
var SDK_VERSION = "
|
|
3960
|
+
var SDK_VERSION = "5.0.0";
|
|
3961
3961
|
|
|
3962
3962
|
// src/http.ts
|
|
3963
3963
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -3987,11 +3987,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
3987
3987
|
// src/verify.ts
|
|
3988
3988
|
var DEFAULT_CONFIG = {
|
|
3989
3989
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
3990
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
3991
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
3992
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
3993
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3994
|
-
defaultAccessLevel: "none",
|
|
3995
3990
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3996
3991
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3997
3992
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -4114,6 +4109,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
|
4114
4109
|
expiresAt: Date.now() + ttlSeconds * 1e3
|
|
4115
4110
|
});
|
|
4116
4111
|
}
|
|
4112
|
+
function mcpGuidance(urls) {
|
|
4113
|
+
if (!urls?.mcpEndpoint) return void 0;
|
|
4114
|
+
return {
|
|
4115
|
+
endpoint: urls.mcpEndpoint,
|
|
4116
|
+
discoveryUrl: urls.mcpDiscoveryUrl,
|
|
4117
|
+
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."
|
|
4118
|
+
};
|
|
4119
|
+
}
|
|
4117
4120
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
4118
4121
|
const source = options.source ?? "no_credentials";
|
|
4119
4122
|
const isApiError = source === "api_error";
|
|
@@ -4140,11 +4143,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4140
4143
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4141
4144
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
4142
4145
|
steps: [
|
|
4146
|
+
// MCP steering leads when the hosted bridge is advertised — the
|
|
4147
|
+
// connector is the agent-actionable path (keyless, human-approved).
|
|
4148
|
+
...urls?.mcpEndpoint ? [
|
|
4149
|
+
`Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
|
|
4150
|
+
] : [],
|
|
4143
4151
|
"Register for an AstraSync account",
|
|
4144
4152
|
"Create and register your agent",
|
|
4145
4153
|
"Add your ASTRA-ID to request headers",
|
|
4146
4154
|
"Retry your request"
|
|
4147
|
-
]
|
|
4155
|
+
],
|
|
4156
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4148
4157
|
};
|
|
4149
4158
|
return {
|
|
4150
4159
|
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
@@ -4152,13 +4161,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4152
4161
|
// policy is not evaluated (we never reached the gate).
|
|
4153
4162
|
identityVerified: false,
|
|
4154
4163
|
policyAllowed: false,
|
|
4155
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4156
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
4157
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
4158
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
4159
|
-
// in other languages, custom integrations) inherit the correct
|
|
4160
|
-
// semantics.
|
|
4161
|
-
accessLevel: "none",
|
|
4162
4164
|
guidance,
|
|
4163
4165
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
4164
4166
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4252,7 +4254,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4252
4254
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4253
4255
|
access: {
|
|
4254
4256
|
allowed: false,
|
|
4255
|
-
accessLevel: "none",
|
|
4256
4257
|
reason: "endpoint_deactivated",
|
|
4257
4258
|
failures: [
|
|
4258
4259
|
{
|
|
@@ -4315,7 +4316,7 @@ async function verify(config, request, options) {
|
|
|
4315
4316
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4316
4317
|
deprecationWarningShown = true;
|
|
4317
4318
|
console.warn(
|
|
4318
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4319
|
+
"[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."
|
|
4319
4320
|
);
|
|
4320
4321
|
}
|
|
4321
4322
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4361,14 +4362,6 @@ async function verify(config, request, options) {
|
|
|
4361
4362
|
const result2 = {
|
|
4362
4363
|
identityVerified: idVerifiedFromBackend,
|
|
4363
4364
|
policyAllowed: false,
|
|
4364
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4365
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4366
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4367
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4368
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4369
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4370
|
-
// the gate check — belt-and-braces.
|
|
4371
|
-
accessLevel: "none",
|
|
4372
4365
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4373
4366
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4374
4367
|
// as the fallback for older backends.
|
|
@@ -4379,7 +4372,10 @@ async function verify(config, request, options) {
|
|
|
4379
4372
|
guidance: {
|
|
4380
4373
|
message: apiResponse.access?.reason || "Access denied by PDLSS policy",
|
|
4381
4374
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
4382
|
-
documentationUrl: urls?.documentationUrl ?? ""
|
|
4375
|
+
documentationUrl: urls?.documentationUrl ?? "",
|
|
4376
|
+
// 5.1.0: anonymous callers land on this branch — steer MCP-hosted
|
|
4377
|
+
// agents to the connector (this is what the edge deny body surfaces).
|
|
4378
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
4383
4379
|
},
|
|
4384
4380
|
verifiedAt: /* @__PURE__ */ new Date(),
|
|
4385
4381
|
// Extract sessionId so decisions can be recorded for denials too
|
|
@@ -4417,7 +4413,6 @@ async function verify(config, request, options) {
|
|
|
4417
4413
|
trustScore: apiResponse.organization.trustScore
|
|
4418
4414
|
} : void 0;
|
|
4419
4415
|
const verificationContext = apiResponse.verificationContext;
|
|
4420
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4421
4416
|
const result = {
|
|
4422
4417
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4423
4418
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4429,7 +4424,6 @@ async function verify(config, request, options) {
|
|
|
4429
4424
|
// this load-bearing must never be defaulted on.
|
|
4430
4425
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4431
4426
|
policyAllowed: true,
|
|
4432
|
-
accessLevel,
|
|
4433
4427
|
agent,
|
|
4434
4428
|
developer,
|
|
4435
4429
|
organization,
|
|
@@ -4456,7 +4450,6 @@ async function verify(config, request, options) {
|
|
|
4456
4450
|
};
|
|
4457
4451
|
if (result.recommendation === "deny") {
|
|
4458
4452
|
result.policyAllowed = false;
|
|
4459
|
-
result.accessLevel = "none";
|
|
4460
4453
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4461
4454
|
result.guidance = result.runtimeChallenge ? {
|
|
4462
4455
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4572,7 +4565,6 @@ function toGatewayConfig(config) {
|
|
|
4572
4565
|
return {
|
|
4573
4566
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4574
4567
|
apiKey: config.apiKey,
|
|
4575
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4576
4568
|
minTrustScore: config.minTrustScore,
|
|
4577
4569
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4578
4570
|
cacheTtl: config.cacheTtl,
|
|
@@ -4600,7 +4592,7 @@ function toDecision(result) {
|
|
|
4600
4592
|
if (result.identityVerified && result.policyAllowed) {
|
|
4601
4593
|
return {
|
|
4602
4594
|
recommendation: "ALLOW",
|
|
4603
|
-
reason: `Verified
|
|
4595
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4604
4596
|
trustScore: result.agent?.trustScore,
|
|
4605
4597
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4606
4598
|
};
|