@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,4 +1,4 @@
|
|
|
1
1
|
import 'next/server';
|
|
2
|
-
import '../types-
|
|
3
|
-
export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-
|
|
2
|
+
import '../types-CSHcByFX.mjs';
|
|
3
|
+
export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-BuoDBN4g.mjs';
|
|
4
4
|
import '../metadata-capture.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'next/server';
|
|
2
|
-
import '../types-
|
|
3
|
-
export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-
|
|
2
|
+
import '../types-CNBaZKxY.js';
|
|
3
|
+
export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-rZKzY_8o.js';
|
|
4
4
|
import '../metadata-capture.js';
|
package/dist/adapters/nextjs.js
CHANGED
|
@@ -36,7 +36,7 @@ __export(nextjs_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(nextjs_exports);
|
|
37
37
|
|
|
38
38
|
// src/version.ts
|
|
39
|
-
var SDK_VERSION = "
|
|
39
|
+
var SDK_VERSION = "5.0.0";
|
|
40
40
|
|
|
41
41
|
// src/http.ts
|
|
42
42
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -114,7 +114,7 @@ async function awaitStepUpApproval(config, approval) {
|
|
|
114
114
|
return "timeout";
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
// src/
|
|
117
|
+
// src/trust-levels.ts
|
|
118
118
|
function getTrustLevel(score) {
|
|
119
119
|
if (score >= 80) return "PLATINUM";
|
|
120
120
|
if (score >= 60) return "GOLD";
|
|
@@ -132,11 +132,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
132
132
|
// src/verify.ts
|
|
133
133
|
var DEFAULT_CONFIG = {
|
|
134
134
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
135
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
136
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
137
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
138
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
139
|
-
defaultAccessLevel: "none",
|
|
140
135
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
141
136
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
142
137
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -293,6 +288,14 @@ function extractCredentials(headers, query) {
|
|
|
293
288
|
}
|
|
294
289
|
return credentials;
|
|
295
290
|
}
|
|
291
|
+
function mcpGuidance(urls) {
|
|
292
|
+
if (!urls?.mcpEndpoint) return void 0;
|
|
293
|
+
return {
|
|
294
|
+
endpoint: urls.mcpEndpoint,
|
|
295
|
+
discoveryUrl: urls.mcpDiscoveryUrl,
|
|
296
|
+
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."
|
|
297
|
+
};
|
|
298
|
+
}
|
|
296
299
|
function createGuidanceResponse(_config, reason, options = {}) {
|
|
297
300
|
const source = options.source ?? "no_credentials";
|
|
298
301
|
const isApiError = source === "api_error";
|
|
@@ -319,11 +322,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
319
322
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
320
323
|
documentationUrl: urls?.documentationUrl ?? "",
|
|
321
324
|
steps: [
|
|
325
|
+
// MCP steering leads when the hosted bridge is advertised — the
|
|
326
|
+
// connector is the agent-actionable path (keyless, human-approved).
|
|
327
|
+
...urls?.mcpEndpoint ? [
|
|
328
|
+
`Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
|
|
329
|
+
] : [],
|
|
322
330
|
"Register for an AstraSync account",
|
|
323
331
|
"Create and register your agent",
|
|
324
332
|
"Add your ASTRA-ID to request headers",
|
|
325
333
|
"Retry your request"
|
|
326
|
-
]
|
|
334
|
+
],
|
|
335
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
327
336
|
};
|
|
328
337
|
return {
|
|
329
338
|
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
@@ -331,13 +340,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
331
340
|
// policy is not evaluated (we never reached the gate).
|
|
332
341
|
identityVerified: false,
|
|
333
342
|
policyAllowed: false,
|
|
334
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
335
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
336
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
337
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
338
|
-
// in other languages, custom integrations) inherit the correct
|
|
339
|
-
// semantics.
|
|
340
|
-
accessLevel: "none",
|
|
341
343
|
guidance,
|
|
342
344
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
343
345
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -431,7 +433,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
431
433
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
432
434
|
access: {
|
|
433
435
|
allowed: false,
|
|
434
|
-
accessLevel: "none",
|
|
435
436
|
reason: "endpoint_deactivated",
|
|
436
437
|
failures: [
|
|
437
438
|
{
|
|
@@ -494,7 +495,7 @@ async function verify(config, request, options) {
|
|
|
494
495
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
495
496
|
deprecationWarningShown = true;
|
|
496
497
|
console.warn(
|
|
497
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
498
|
+
"[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."
|
|
498
499
|
);
|
|
499
500
|
}
|
|
500
501
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -540,14 +541,6 @@ async function verify(config, request, options) {
|
|
|
540
541
|
const result2 = {
|
|
541
542
|
identityVerified: idVerifiedFromBackend,
|
|
542
543
|
policyAllowed: false,
|
|
543
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
544
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
545
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
546
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
547
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
548
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
549
|
-
// the gate check — belt-and-braces.
|
|
550
|
-
accessLevel: "none",
|
|
551
544
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
552
545
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
553
546
|
// as the fallback for older backends.
|
|
@@ -558,7 +551,10 @@ async function verify(config, request, options) {
|
|
|
558
551
|
guidance: {
|
|
559
552
|
message: apiResponse.access?.reason || "Access denied by PDLSS policy",
|
|
560
553
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
561
|
-
documentationUrl: urls?.documentationUrl ?? ""
|
|
554
|
+
documentationUrl: urls?.documentationUrl ?? "",
|
|
555
|
+
// 5.1.0: anonymous callers land on this branch — steer MCP-hosted
|
|
556
|
+
// agents to the connector (this is what the edge deny body surfaces).
|
|
557
|
+
...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
|
|
562
558
|
},
|
|
563
559
|
verifiedAt: /* @__PURE__ */ new Date(),
|
|
564
560
|
// Extract sessionId so decisions can be recorded for denials too
|
|
@@ -596,7 +592,6 @@ async function verify(config, request, options) {
|
|
|
596
592
|
trustScore: apiResponse.organization.trustScore
|
|
597
593
|
} : void 0;
|
|
598
594
|
const verificationContext = apiResponse.verificationContext;
|
|
599
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
600
595
|
const result = {
|
|
601
596
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
602
597
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -608,7 +603,6 @@ async function verify(config, request, options) {
|
|
|
608
603
|
// this load-bearing must never be defaulted on.
|
|
609
604
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
610
605
|
policyAllowed: true,
|
|
611
|
-
accessLevel,
|
|
612
606
|
agent,
|
|
613
607
|
developer,
|
|
614
608
|
organization,
|
|
@@ -635,7 +629,6 @@ async function verify(config, request, options) {
|
|
|
635
629
|
};
|
|
636
630
|
if (result.recommendation === "deny") {
|
|
637
631
|
result.policyAllowed = false;
|
|
638
|
-
result.accessLevel = "none";
|
|
639
632
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
640
633
|
result.guidance = result.runtimeChallenge ? {
|
|
641
634
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -1770,7 +1763,7 @@ function createMiddleware(options) {
|
|
|
1770
1763
|
beaconPassThrough?.(request, pathname);
|
|
1771
1764
|
return NextResponse.next();
|
|
1772
1765
|
}
|
|
1773
|
-
if (routeConfig.
|
|
1766
|
+
if (routeConfig.observe) {
|
|
1774
1767
|
beaconPassThrough?.(request, pathname);
|
|
1775
1768
|
return NextResponse.next();
|
|
1776
1769
|
}
|
|
@@ -1800,7 +1793,6 @@ function createMiddleware(options) {
|
|
|
1800
1793
|
const preCheckResult = {
|
|
1801
1794
|
identityVerified: false,
|
|
1802
1795
|
policyAllowed: false,
|
|
1803
|
-
accessLevel: "none",
|
|
1804
1796
|
denialReasons: preCheckFailures.map((f) => f.message),
|
|
1805
1797
|
guidance: {
|
|
1806
1798
|
message: "Request exceeds counterparty-defined PDLSS limits.",
|
|
@@ -1938,7 +1930,6 @@ function createMiddleware(options) {
|
|
|
1938
1930
|
}
|
|
1939
1931
|
response.headers.set("X-AstraSync-Identity-Verified", result.identityVerified.toString());
|
|
1940
1932
|
response.headers.set("X-AstraSync-Policy-Allowed", result.policyAllowed.toString());
|
|
1941
|
-
response.headers.set("X-AstraSync-Access-Level", result.accessLevel);
|
|
1942
1933
|
if (result.agent) {
|
|
1943
1934
|
response.headers.set("X-AstraSync-Agent-Id", result.agent.astraId);
|
|
1944
1935
|
}
|