@astrasyncai/verification-gateway 4.5.0 → 4.6.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 +6 -1
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +6 -1
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +3 -394
- package/dist/adapters/mcp.d.ts +3 -394
- package/dist/adapters/mcp.js +6 -1
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +6 -1
- 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 +6 -1
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +6 -1
- 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 +6 -1
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +6 -1
- 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 +60 -13
- package/dist/bin/astrasync-codex-hook.js +60 -13
- package/dist/bin/astrasync-guard.js +60 -13
- package/dist/bin/astrasync.js +68 -15
- package/dist/browser/background.js +60 -13
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +60 -13
- 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 +60 -13
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +60 -13
- 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 +60 -13
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +60 -13
- 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 -1
- package/dist/edge-core/index.d.ts +1 -1
- package/dist/edge-core/index.js +6 -1
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +6 -1
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-DaqL11tx.d.ts → express-D-8Ks2Uo.d.ts} +1 -1
- package/dist/{express-CR6F3njD.d.mts → express-DBtPKXOL.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 +60 -13
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +60 -13
- 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-BfIxCYIZ.d.ts → index-BND3kQev.d.ts} +1 -2
- package/dist/{index-CwAh7Tln.d.mts → index-CUfmJ1Dq.d.mts} +1 -2
- package/dist/{index-B5Ts1WtM.d.ts → index-DlZORQsb.d.ts} +1 -1
- package/dist/{index-Cub7lK-T.d.mts → index-kGCGWd5x.d.mts} +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -1
- 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-DToTlwIn.d.ts +396 -0
- package/dist/mcp-ZRN4kY3b.d.mts +396 -0
- package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-C0KASOy_.d.mts} +1 -1
- package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-lwNvWYWT.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 +2 -1
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +2 -1
- package/dist/registration/index.mjs.map +1 -1
- package/dist/{sdk-C6SASmsh.d.ts → sdk-B4aodEwj.d.ts} +1 -1
- package/dist/{sdk-Bbh9B_dw.d.mts → sdk-B9dSwum7.d.mts} +1 -1
- 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-CGPU7HLi.d.ts} +8 -0
- package/dist/{types-nIh3HtuA.d.ts → types-CfSJLS4i.d.mts} +14 -1
- package/dist/{types-C0zfSXMB.d.mts → types-Cx9hTpKI.d.mts} +8 -0
- package/dist/{types-C7Rb-w0d.d.mts → types-DhhJxKIC.d.ts} +14 -1
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/verify.d.mts +1 -1
- package/dist/verify.d.ts +1 -1
- package/dist/verify.js +6 -1
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +6 -1
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RequestHandler, Request } from 'express';
|
|
2
|
-
import { x as VerificationResult, k as ExpressMiddlewareOptions, c as AstraSyncCredentials } from './types-
|
|
2
|
+
import { x as VerificationResult, k as ExpressMiddlewareOptions, c as AstraSyncCredentials } from './types-CGPU7HLi.js';
|
|
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 { x as VerificationResult, k as ExpressMiddlewareOptions, c as AstraSyncCredentials } from './types-
|
|
2
|
+
import { x as VerificationResult, k as ExpressMiddlewareOptions, c as AstraSyncCredentials } from './types-Cx9hTpKI.mjs';
|
|
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-CfSJLS4i.mjs';
|
|
2
|
+
import '../types-Cx9hTpKI.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-DhhJxKIC.js';
|
|
2
|
+
import '../types-CGPU7HLi.js';
|
|
3
3
|
import '../metadata-capture.js';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/gateway/gateway.js
CHANGED
|
@@ -257,9 +257,9 @@ var LocalEvaluator = class {
|
|
|
257
257
|
if (scopeBlock) {
|
|
258
258
|
return { recommendation: "DENY", reason: scopeBlock };
|
|
259
259
|
}
|
|
260
|
-
const
|
|
261
|
-
if (
|
|
262
|
-
return
|
|
260
|
+
const limitDecision = this.checkLimits(context);
|
|
261
|
+
if (limitDecision) {
|
|
262
|
+
return limitDecision;
|
|
263
263
|
}
|
|
264
264
|
if (context.purpose === "sub_agent.spawn" && this.policy.selfInstantiation) {
|
|
265
265
|
if (!this.policy.selfInstantiation.allowed) {
|
|
@@ -324,9 +324,21 @@ var LocalEvaluator = class {
|
|
|
324
324
|
checkLimits(context) {
|
|
325
325
|
const limits = this.policy.limits;
|
|
326
326
|
if (!limits) return null;
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
327
|
+
const value = context.transactionValue;
|
|
328
|
+
if (value !== void 0 && value > 0 && (limits.autonomousThreshold !== void 0 || limits.maxTransactionAmount !== void 0)) {
|
|
329
|
+
const autonomousThreshold = limits.autonomousThreshold ?? 0;
|
|
330
|
+
const hardLimit = limits.maxTransactionAmount ?? limits.autonomousThreshold ?? 0;
|
|
331
|
+
if (value > autonomousThreshold) {
|
|
332
|
+
if (value >= hardLimit) {
|
|
333
|
+
return {
|
|
334
|
+
recommendation: "DENY",
|
|
335
|
+
reason: `Transaction value ${value} at or above Hard Limit ${hardLimit}`
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
return {
|
|
339
|
+
recommendation: "MANUAL_REVIEW",
|
|
340
|
+
reason: `Transaction value ${value} is in the human-approval band (${autonomousThreshold}, ${hardLimit})`
|
|
341
|
+
};
|
|
330
342
|
}
|
|
331
343
|
}
|
|
332
344
|
if (limits.maxRequestsPerHour !== void 0) {
|
|
@@ -339,7 +351,10 @@ var LocalEvaluator = class {
|
|
|
339
351
|
} else {
|
|
340
352
|
entry.count++;
|
|
341
353
|
if (entry.count > limits.maxRequestsPerHour) {
|
|
342
|
-
return
|
|
354
|
+
return {
|
|
355
|
+
recommendation: "DENY",
|
|
356
|
+
reason: `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`
|
|
357
|
+
};
|
|
343
358
|
}
|
|
344
359
|
}
|
|
345
360
|
}
|
|
@@ -3548,10 +3563,16 @@ function validatePurpose(purpose, path) {
|
|
|
3548
3563
|
errors.push({ path: `${path}.targets`, message: "targets must be an array of strings" });
|
|
3549
3564
|
}
|
|
3550
3565
|
if (p.blockedPatterns !== void 0 && !isStringArray(p.blockedPatterns)) {
|
|
3551
|
-
errors.push({
|
|
3566
|
+
errors.push({
|
|
3567
|
+
path: `${path}.blockedPatterns`,
|
|
3568
|
+
message: "blockedPatterns must be an array of strings"
|
|
3569
|
+
});
|
|
3552
3570
|
}
|
|
3553
3571
|
if (p.requiresApproval !== void 0 && typeof p.requiresApproval !== "boolean") {
|
|
3554
|
-
errors.push({
|
|
3572
|
+
errors.push({
|
|
3573
|
+
path: `${path}.requiresApproval`,
|
|
3574
|
+
message: "requiresApproval must be a boolean"
|
|
3575
|
+
});
|
|
3555
3576
|
}
|
|
3556
3577
|
return errors;
|
|
3557
3578
|
}
|
|
@@ -3574,11 +3595,29 @@ function validateLimits(limits, path) {
|
|
|
3574
3595
|
return [{ path, message: "limits must be an object" }];
|
|
3575
3596
|
}
|
|
3576
3597
|
const l = limits;
|
|
3598
|
+
if (l.autonomousThreshold !== void 0 && typeof l.autonomousThreshold !== "number") {
|
|
3599
|
+
errors.push({
|
|
3600
|
+
path: `${path}.autonomousThreshold`,
|
|
3601
|
+
message: "autonomousThreshold must be a number"
|
|
3602
|
+
});
|
|
3603
|
+
}
|
|
3577
3604
|
if (l.maxTransactionAmount !== void 0 && typeof l.maxTransactionAmount !== "number") {
|
|
3578
|
-
errors.push({
|
|
3605
|
+
errors.push({
|
|
3606
|
+
path: `${path}.maxTransactionAmount`,
|
|
3607
|
+
message: "maxTransactionAmount must be a number"
|
|
3608
|
+
});
|
|
3609
|
+
}
|
|
3610
|
+
if (typeof l.autonomousThreshold === "number" && typeof l.maxTransactionAmount === "number" && l.autonomousThreshold > l.maxTransactionAmount) {
|
|
3611
|
+
errors.push({
|
|
3612
|
+
path: `${path}.autonomousThreshold`,
|
|
3613
|
+
message: "autonomousThreshold (Autonomous Limit) must be <= maxTransactionAmount (Hard Limit)"
|
|
3614
|
+
});
|
|
3579
3615
|
}
|
|
3580
3616
|
if (l.maxRequestsPerHour !== void 0 && typeof l.maxRequestsPerHour !== "number") {
|
|
3581
|
-
errors.push({
|
|
3617
|
+
errors.push({
|
|
3618
|
+
path: `${path}.maxRequestsPerHour`,
|
|
3619
|
+
message: "maxRequestsPerHour must be a number"
|
|
3620
|
+
});
|
|
3582
3621
|
}
|
|
3583
3622
|
if (l.currency !== void 0 && typeof l.currency !== "string") {
|
|
3584
3623
|
errors.push({ path: `${path}.currency`, message: "currency must be a string" });
|
|
@@ -3593,7 +3632,10 @@ function validateRiskThresholds(thresholds, path) {
|
|
|
3593
3632
|
const t = thresholds;
|
|
3594
3633
|
for (const range of ["autoAllow", "requireApproval", "autoBlock"]) {
|
|
3595
3634
|
if (!t[range] || typeof t[range] !== "object") {
|
|
3596
|
-
errors.push({
|
|
3635
|
+
errors.push({
|
|
3636
|
+
path: `${path}.${range}`,
|
|
3637
|
+
message: `${range} is required and must be an object with min and max`
|
|
3638
|
+
});
|
|
3597
3639
|
continue;
|
|
3598
3640
|
}
|
|
3599
3641
|
const r = t[range];
|
|
@@ -3698,7 +3740,7 @@ function getTrustLevel(score) {
|
|
|
3698
3740
|
}
|
|
3699
3741
|
|
|
3700
3742
|
// src/version.ts
|
|
3701
|
-
var SDK_VERSION = "4.
|
|
3743
|
+
var SDK_VERSION = "4.6.0";
|
|
3702
3744
|
|
|
3703
3745
|
// src/http.ts
|
|
3704
3746
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -3922,6 +3964,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
3922
3964
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
3923
3965
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
3924
3966
|
...isMisconfig && { misconfigured: true },
|
|
3967
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
3968
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
3969
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
3970
|
+
// deterministic and intentionally NOT marked retryable.
|
|
3971
|
+
...isApiError && { retryable: true },
|
|
3925
3972
|
correlationId: options.correlationId,
|
|
3926
3973
|
attemptId: options.attemptId,
|
|
3927
3974
|
verifiedAt: /* @__PURE__ */ new Date()
|