@astrasyncai/verification-gateway 4.5.1 → 5.0.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/README.md +1 -1
- 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 +11 -33
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +11 -33
- 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 +28 -65
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +27 -64
- 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 +9 -30
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +9 -30
- 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 +8 -124
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +8 -122
- 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 +63 -41
- package/dist/bin/astrasync-codex-hook.js +63 -41
- package/dist/bin/astrasync-guard.js +63 -41
- package/dist/bin/astrasync.js +75 -48
- package/dist/browser/background.js +63 -41
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +63 -41
- 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 +33 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +33 -6
- 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 +63 -41
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +63 -41
- 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 +63 -41
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +63 -41
- 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 +1 -3
- package/dist/edge-core/index.d.ts +1 -3
- package/dist/edge-core/index.js +11 -33
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +11 -33
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-DaqL11tx.d.ts → express-B5lWuemA.d.ts} +1 -1
- package/dist/{express-CR6F3njD.d.mts → express-Dm-snUuY.d.mts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +63 -41
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +63 -41
- 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-Cub7lK-T.d.mts → index-B5k_vUmK.d.mts} +1 -1
- package/dist/{index-BfIxCYIZ.d.ts → index-BOzM6xUq.d.mts} +1 -2
- package/dist/{index-CwAh7Tln.d.mts → index-dRfxUdFA.d.ts} +1 -2
- package/dist/{index-B5Ts1WtM.d.ts → index-y8xToocF.d.ts} +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +30 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -210
- 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 +22 -7
- package/dist/local-evaluator/evaluator.js.map +1 -1
- package/dist/local-evaluator/evaluator.mjs +22 -7
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{mcp-BgBJu4Jl.d.mts → mcp-DgsyQiQq.d.mts} +53 -52
- package/dist/{mcp--DgKOwfu.d.ts → mcp-OosmAcKf.d.ts} +53 -52
- package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-B1sBdEav.d.mts} +1 -1
- package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-DoRmhV_Z.d.ts} +1 -1
- package/dist/registration/index.d.mts +5 -1
- package/dist/registration/index.d.ts +5 -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-B83N3xKc.d.mts +142 -0
- package/dist/sdk-H_9BTNBS.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-DwSfO7Sb.d.ts → types-BK2POWNc.d.ts} +23 -50
- package/dist/{types-C0zfSXMB.d.mts → types-CJjZvPr9.d.mts} +23 -50
- package/dist/{types-C7Rb-w0d.d.mts → types-CXf3q4kZ.d.ts} +14 -3
- package/dist/{types-nIh3HtuA.d.ts → types-DQmop7ZW.d.mts} +14 -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 +8 -28
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +8 -28
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/sdk-Bbh9B_dw.d.mts +0 -215
- package/dist/sdk-C6SASmsh.d.ts +0 -215
package/README.md
CHANGED
|
@@ -152,7 +152,7 @@ try {
|
|
|
152
152
|
categories: ['accounting'],
|
|
153
153
|
allowedActions: ['accounting.read', 'accounting.write'],
|
|
154
154
|
},
|
|
155
|
-
limits: {
|
|
155
|
+
limits: { autonomousThreshold: 1_000, approvalThreshold: 10_000, currency: 'USD' },
|
|
156
156
|
scope: { resources: ['xero.invoices', 'quickbooks.bills'] },
|
|
157
157
|
selfInstantiation: { allowed: false },
|
|
158
158
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AstraSyncGateway } from '../gateway/gateway.mjs';
|
|
2
|
-
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-
|
|
3
|
-
import '../types-
|
|
2
|
+
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-DQmop7ZW.mjs';
|
|
3
|
+
import '../types-CJjZvPr9.mjs';
|
|
4
4
|
import '../metadata-capture.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AstraSyncGateway } from '../gateway/gateway.js';
|
|
2
|
-
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-
|
|
3
|
-
import '../types-
|
|
2
|
+
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-CXf3q4kZ.js';
|
|
3
|
+
import '../types-BK2POWNc.js';
|
|
4
4
|
import '../metadata-capture.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'express';
|
|
2
|
-
import '../types-
|
|
3
|
-
export { c as createMiddleware, a as extractAstraSyncCredentials } from '../express-
|
|
2
|
+
import '../types-CJjZvPr9.mjs';
|
|
3
|
+
export { c as createMiddleware, a as extractAstraSyncCredentials } from '../express-Dm-snUuY.mjs';
|
|
4
4
|
import '../metadata-capture.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'express';
|
|
2
|
-
import '../types-
|
|
3
|
-
export { c as createMiddleware, a as extractAstraSyncCredentials } from '../express-
|
|
2
|
+
import '../types-BK2POWNc.js';
|
|
3
|
+
export { c as createMiddleware, a as extractAstraSyncCredentials } from '../express-B5lWuemA.js';
|
|
4
4
|
import '../metadata-capture.js';
|
package/dist/adapters/express.js
CHANGED
|
@@ -26,7 +26,7 @@ __export(express_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(express_exports);
|
|
27
27
|
|
|
28
28
|
// src/version.ts
|
|
29
|
-
var SDK_VERSION = "
|
|
29
|
+
var SDK_VERSION = "5.0.0";
|
|
30
30
|
|
|
31
31
|
// src/http.ts
|
|
32
32
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -104,7 +104,7 @@ async function awaitStepUpApproval(config, approval) {
|
|
|
104
104
|
return "timeout";
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
// src/
|
|
107
|
+
// src/trust-levels.ts
|
|
108
108
|
function getTrustLevel(score) {
|
|
109
109
|
if (score >= 80) return "PLATINUM";
|
|
110
110
|
if (score >= 60) return "GOLD";
|
|
@@ -174,11 +174,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
174
174
|
// src/verify.ts
|
|
175
175
|
var DEFAULT_CONFIG = {
|
|
176
176
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
177
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
178
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
179
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
180
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
181
|
-
defaultAccessLevel: "none",
|
|
182
177
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
183
178
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
184
179
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -373,13 +368,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
373
368
|
// policy is not evaluated (we never reached the gate).
|
|
374
369
|
identityVerified: false,
|
|
375
370
|
policyAllowed: false,
|
|
376
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
377
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
378
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
379
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
380
|
-
// in other languages, custom integrations) inherit the correct
|
|
381
|
-
// semantics.
|
|
382
|
-
accessLevel: "none",
|
|
383
371
|
guidance,
|
|
384
372
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
385
373
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -402,6 +390,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
402
390
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
403
391
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
404
392
|
...isMisconfig && { misconfigured: true },
|
|
393
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
394
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
395
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
396
|
+
// deterministic and intentionally NOT marked retryable.
|
|
397
|
+
...isApiError && { retryable: true },
|
|
405
398
|
correlationId: options.correlationId,
|
|
406
399
|
attemptId: options.attemptId,
|
|
407
400
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -468,7 +461,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
468
461
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
469
462
|
access: {
|
|
470
463
|
allowed: false,
|
|
471
|
-
accessLevel: "none",
|
|
472
464
|
reason: "endpoint_deactivated",
|
|
473
465
|
failures: [
|
|
474
466
|
{
|
|
@@ -531,7 +523,7 @@ async function verify(config, request, options) {
|
|
|
531
523
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
532
524
|
deprecationWarningShown = true;
|
|
533
525
|
console.warn(
|
|
534
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
526
|
+
"[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."
|
|
535
527
|
);
|
|
536
528
|
}
|
|
537
529
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -577,14 +569,6 @@ async function verify(config, request, options) {
|
|
|
577
569
|
const result2 = {
|
|
578
570
|
identityVerified: idVerifiedFromBackend,
|
|
579
571
|
policyAllowed: false,
|
|
580
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
581
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
582
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
583
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
584
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
585
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
586
|
-
// the gate check — belt-and-braces.
|
|
587
|
-
accessLevel: "none",
|
|
588
572
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
589
573
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
590
574
|
// as the fallback for older backends.
|
|
@@ -633,7 +617,6 @@ async function verify(config, request, options) {
|
|
|
633
617
|
trustScore: apiResponse.organization.trustScore
|
|
634
618
|
} : void 0;
|
|
635
619
|
const verificationContext = apiResponse.verificationContext;
|
|
636
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
637
620
|
const result = {
|
|
638
621
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
639
622
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -645,7 +628,6 @@ async function verify(config, request, options) {
|
|
|
645
628
|
// this load-bearing must never be defaulted on.
|
|
646
629
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
647
630
|
policyAllowed: true,
|
|
648
|
-
accessLevel,
|
|
649
631
|
agent,
|
|
650
632
|
developer,
|
|
651
633
|
organization,
|
|
@@ -672,7 +654,6 @@ async function verify(config, request, options) {
|
|
|
672
654
|
};
|
|
673
655
|
if (result.recommendation === "deny") {
|
|
674
656
|
result.policyAllowed = false;
|
|
675
|
-
result.accessLevel = "none";
|
|
676
657
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
677
658
|
result.guidance = result.runtimeChallenge ? {
|
|
678
659
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -1612,7 +1593,6 @@ function defaultOnDenied(result, _req, res) {
|
|
|
1612
1593
|
error: {
|
|
1613
1594
|
code: !result.identityVerified ? "UNAUTHORIZED" : "INSUFFICIENT_ACCESS",
|
|
1614
1595
|
message: result.denialReasons?.[0] || "Access denied",
|
|
1615
|
-
accessLevel: result.accessLevel,
|
|
1616
1596
|
guidance: result.guidance,
|
|
1617
1597
|
// Round-10: aggregated per-dimension detail + correlation handle.
|
|
1618
1598
|
failures: result.failures,
|
|
@@ -1728,11 +1708,11 @@ function createMiddleware(options) {
|
|
|
1728
1708
|
}
|
|
1729
1709
|
const wellKnownUrls = config.apiBaseUrl ? await getWellKnownUrls(config.apiBaseUrl).catch(() => void 0) : void 0;
|
|
1730
1710
|
const credentials = customExtractCredentials ? customExtractCredentials(req) : defaultExtractCredentials(req);
|
|
1731
|
-
const shouldEnforce = routeConfig.
|
|
1732
|
-
if (routeConfig.
|
|
1711
|
+
const shouldEnforce = !routeConfig.observe;
|
|
1712
|
+
if (routeConfig.observe && (!config.evaluateAlwaysIfCredentialed || !credentials.astraId)) {
|
|
1733
1713
|
if (config.setPassThroughHeader) {
|
|
1734
1714
|
res.setHeader("X-Astra-Gateway-Mode", "unenforced");
|
|
1735
|
-
res.setHeader("X-Astra-Gateway-Reason", "route-
|
|
1715
|
+
res.setHeader("X-Astra-Gateway-Reason", "route-observe");
|
|
1736
1716
|
}
|
|
1737
1717
|
beaconPassThrough?.(req);
|
|
1738
1718
|
return next();
|
|
@@ -1769,7 +1749,6 @@ function createMiddleware(options) {
|
|
|
1769
1749
|
const result2 = {
|
|
1770
1750
|
identityVerified: false,
|
|
1771
1751
|
policyAllowed: false,
|
|
1772
|
-
accessLevel: "none",
|
|
1773
1752
|
denialReasons: preCheckFailures.map((f) => f.message),
|
|
1774
1753
|
guidance: {
|
|
1775
1754
|
message: "Request exceeds counterparty-defined PDLSS limits.",
|
|
@@ -1932,7 +1911,6 @@ function createMiddleware(options) {
|
|
|
1932
1911
|
const result = {
|
|
1933
1912
|
identityVerified: false,
|
|
1934
1913
|
policyAllowed: false,
|
|
1935
|
-
accessLevel: "none",
|
|
1936
1914
|
denialReasons: [`Verification middleware internal error: ${errorClass}`],
|
|
1937
1915
|
failures: [
|
|
1938
1916
|
{
|