@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
|
@@ -497,9 +497,9 @@ var LocalEvaluator = class {
|
|
|
497
497
|
if (scopeBlock) {
|
|
498
498
|
return { recommendation: "DENY", reason: scopeBlock };
|
|
499
499
|
}
|
|
500
|
-
const
|
|
501
|
-
if (
|
|
502
|
-
return
|
|
500
|
+
const limitDecision = this.checkLimits(context);
|
|
501
|
+
if (limitDecision) {
|
|
502
|
+
return limitDecision;
|
|
503
503
|
}
|
|
504
504
|
if (context.purpose === "sub_agent.spawn" && this.policy.selfInstantiation) {
|
|
505
505
|
if (!this.policy.selfInstantiation.allowed) {
|
|
@@ -564,9 +564,21 @@ var LocalEvaluator = class {
|
|
|
564
564
|
checkLimits(context) {
|
|
565
565
|
const limits = this.policy.limits;
|
|
566
566
|
if (!limits) return null;
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
567
|
+
const value = context.transactionValue;
|
|
568
|
+
if (value !== void 0 && value > 0 && (limits.autonomousThreshold !== void 0 || limits.maxTransactionAmount !== void 0)) {
|
|
569
|
+
const autonomousThreshold = limits.autonomousThreshold ?? 0;
|
|
570
|
+
const hardLimit = limits.maxTransactionAmount ?? limits.autonomousThreshold ?? 0;
|
|
571
|
+
if (value > autonomousThreshold) {
|
|
572
|
+
if (value >= hardLimit) {
|
|
573
|
+
return {
|
|
574
|
+
recommendation: "DENY",
|
|
575
|
+
reason: `Transaction value ${value} at or above Hard Limit ${hardLimit}`
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
return {
|
|
579
|
+
recommendation: "MANUAL_REVIEW",
|
|
580
|
+
reason: `Transaction value ${value} is in the human-approval band (${autonomousThreshold}, ${hardLimit})`
|
|
581
|
+
};
|
|
570
582
|
}
|
|
571
583
|
}
|
|
572
584
|
if (limits.maxRequestsPerHour !== void 0) {
|
|
@@ -579,7 +591,10 @@ var LocalEvaluator = class {
|
|
|
579
591
|
} else {
|
|
580
592
|
entry.count++;
|
|
581
593
|
if (entry.count > limits.maxRequestsPerHour) {
|
|
582
|
-
return
|
|
594
|
+
return {
|
|
595
|
+
recommendation: "DENY",
|
|
596
|
+
reason: `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`
|
|
597
|
+
};
|
|
583
598
|
}
|
|
584
599
|
}
|
|
585
600
|
}
|
|
@@ -3788,10 +3803,16 @@ function validatePurpose(purpose, path) {
|
|
|
3788
3803
|
errors.push({ path: `${path}.targets`, message: "targets must be an array of strings" });
|
|
3789
3804
|
}
|
|
3790
3805
|
if (p.blockedPatterns !== void 0 && !isStringArray(p.blockedPatterns)) {
|
|
3791
|
-
errors.push({
|
|
3806
|
+
errors.push({
|
|
3807
|
+
path: `${path}.blockedPatterns`,
|
|
3808
|
+
message: "blockedPatterns must be an array of strings"
|
|
3809
|
+
});
|
|
3792
3810
|
}
|
|
3793
3811
|
if (p.requiresApproval !== void 0 && typeof p.requiresApproval !== "boolean") {
|
|
3794
|
-
errors.push({
|
|
3812
|
+
errors.push({
|
|
3813
|
+
path: `${path}.requiresApproval`,
|
|
3814
|
+
message: "requiresApproval must be a boolean"
|
|
3815
|
+
});
|
|
3795
3816
|
}
|
|
3796
3817
|
return errors;
|
|
3797
3818
|
}
|
|
@@ -3814,11 +3835,29 @@ function validateLimits(limits, path) {
|
|
|
3814
3835
|
return [{ path, message: "limits must be an object" }];
|
|
3815
3836
|
}
|
|
3816
3837
|
const l = limits;
|
|
3838
|
+
if (l.autonomousThreshold !== void 0 && typeof l.autonomousThreshold !== "number") {
|
|
3839
|
+
errors.push({
|
|
3840
|
+
path: `${path}.autonomousThreshold`,
|
|
3841
|
+
message: "autonomousThreshold must be a number"
|
|
3842
|
+
});
|
|
3843
|
+
}
|
|
3817
3844
|
if (l.maxTransactionAmount !== void 0 && typeof l.maxTransactionAmount !== "number") {
|
|
3818
|
-
errors.push({
|
|
3845
|
+
errors.push({
|
|
3846
|
+
path: `${path}.maxTransactionAmount`,
|
|
3847
|
+
message: "maxTransactionAmount must be a number"
|
|
3848
|
+
});
|
|
3849
|
+
}
|
|
3850
|
+
if (typeof l.autonomousThreshold === "number" && typeof l.maxTransactionAmount === "number" && l.autonomousThreshold > l.maxTransactionAmount) {
|
|
3851
|
+
errors.push({
|
|
3852
|
+
path: `${path}.autonomousThreshold`,
|
|
3853
|
+
message: "autonomousThreshold (Autonomous Limit) must be <= maxTransactionAmount (Hard Limit)"
|
|
3854
|
+
});
|
|
3819
3855
|
}
|
|
3820
3856
|
if (l.maxRequestsPerHour !== void 0 && typeof l.maxRequestsPerHour !== "number") {
|
|
3821
|
-
errors.push({
|
|
3857
|
+
errors.push({
|
|
3858
|
+
path: `${path}.maxRequestsPerHour`,
|
|
3859
|
+
message: "maxRequestsPerHour must be a number"
|
|
3860
|
+
});
|
|
3822
3861
|
}
|
|
3823
3862
|
if (l.currency !== void 0 && typeof l.currency !== "string") {
|
|
3824
3863
|
errors.push({ path: `${path}.currency`, message: "currency must be a string" });
|
|
@@ -3833,7 +3872,10 @@ function validateRiskThresholds(thresholds, path) {
|
|
|
3833
3872
|
const t = thresholds;
|
|
3834
3873
|
for (const range of ["autoAllow", "requireApproval", "autoBlock"]) {
|
|
3835
3874
|
if (!t[range] || typeof t[range] !== "object") {
|
|
3836
|
-
errors.push({
|
|
3875
|
+
errors.push({
|
|
3876
|
+
path: `${path}.${range}`,
|
|
3877
|
+
message: `${range} is required and must be an object with min and max`
|
|
3878
|
+
});
|
|
3837
3879
|
continue;
|
|
3838
3880
|
}
|
|
3839
3881
|
const r = t[range];
|
|
@@ -3938,7 +3980,7 @@ function getTrustLevel(score) {
|
|
|
3938
3980
|
}
|
|
3939
3981
|
|
|
3940
3982
|
// src/version.ts
|
|
3941
|
-
var SDK_VERSION = "4.
|
|
3983
|
+
var SDK_VERSION = "4.6.0";
|
|
3942
3984
|
|
|
3943
3985
|
// src/http.ts
|
|
3944
3986
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4162,6 +4204,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4162
4204
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
4163
4205
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
4164
4206
|
...isMisconfig && { misconfigured: true },
|
|
4207
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
4208
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
4209
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
4210
|
+
// deterministic and intentionally NOT marked retryable.
|
|
4211
|
+
...isApiError && { retryable: true },
|
|
4165
4212
|
correlationId: options.correlationId,
|
|
4166
4213
|
attemptId: options.attemptId,
|
|
4167
4214
|
verifiedAt: /* @__PURE__ */ new Date()
|