@astrasyncai/verification-gateway 4.5.1 → 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 +2 -2
- package/dist/adapters/mcp.d.ts +2 -2
- 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 +67 -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 +6 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -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--DgKOwfu.d.ts → mcp-DToTlwIn.d.ts} +1 -1
- package/dist/{mcp-BgBJu4Jl.d.mts → mcp-ZRN4kY3b.d.mts} +1 -1
- 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 +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-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
package/dist/codex/index.mjs
CHANGED
|
@@ -514,9 +514,9 @@ var LocalEvaluator = class {
|
|
|
514
514
|
if (scopeBlock) {
|
|
515
515
|
return { recommendation: "DENY", reason: scopeBlock };
|
|
516
516
|
}
|
|
517
|
-
const
|
|
518
|
-
if (
|
|
519
|
-
return
|
|
517
|
+
const limitDecision = this.checkLimits(context);
|
|
518
|
+
if (limitDecision) {
|
|
519
|
+
return limitDecision;
|
|
520
520
|
}
|
|
521
521
|
if (context.purpose === "sub_agent.spawn" && this.policy.selfInstantiation) {
|
|
522
522
|
if (!this.policy.selfInstantiation.allowed) {
|
|
@@ -581,9 +581,21 @@ var LocalEvaluator = class {
|
|
|
581
581
|
checkLimits(context) {
|
|
582
582
|
const limits = this.policy.limits;
|
|
583
583
|
if (!limits) return null;
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
584
|
+
const value = context.transactionValue;
|
|
585
|
+
if (value !== void 0 && value > 0 && (limits.autonomousThreshold !== void 0 || limits.maxTransactionAmount !== void 0)) {
|
|
586
|
+
const autonomousThreshold = limits.autonomousThreshold ?? 0;
|
|
587
|
+
const hardLimit = limits.maxTransactionAmount ?? limits.autonomousThreshold ?? 0;
|
|
588
|
+
if (value > autonomousThreshold) {
|
|
589
|
+
if (value >= hardLimit) {
|
|
590
|
+
return {
|
|
591
|
+
recommendation: "DENY",
|
|
592
|
+
reason: `Transaction value ${value} at or above Hard Limit ${hardLimit}`
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
return {
|
|
596
|
+
recommendation: "MANUAL_REVIEW",
|
|
597
|
+
reason: `Transaction value ${value} is in the human-approval band (${autonomousThreshold}, ${hardLimit})`
|
|
598
|
+
};
|
|
587
599
|
}
|
|
588
600
|
}
|
|
589
601
|
if (limits.maxRequestsPerHour !== void 0) {
|
|
@@ -596,7 +608,10 @@ var LocalEvaluator = class {
|
|
|
596
608
|
} else {
|
|
597
609
|
entry.count++;
|
|
598
610
|
if (entry.count > limits.maxRequestsPerHour) {
|
|
599
|
-
return
|
|
611
|
+
return {
|
|
612
|
+
recommendation: "DENY",
|
|
613
|
+
reason: `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`
|
|
614
|
+
};
|
|
600
615
|
}
|
|
601
616
|
}
|
|
602
617
|
}
|
|
@@ -3805,10 +3820,16 @@ function validatePurpose(purpose, path) {
|
|
|
3805
3820
|
errors.push({ path: `${path}.targets`, message: "targets must be an array of strings" });
|
|
3806
3821
|
}
|
|
3807
3822
|
if (p.blockedPatterns !== void 0 && !isStringArray(p.blockedPatterns)) {
|
|
3808
|
-
errors.push({
|
|
3823
|
+
errors.push({
|
|
3824
|
+
path: `${path}.blockedPatterns`,
|
|
3825
|
+
message: "blockedPatterns must be an array of strings"
|
|
3826
|
+
});
|
|
3809
3827
|
}
|
|
3810
3828
|
if (p.requiresApproval !== void 0 && typeof p.requiresApproval !== "boolean") {
|
|
3811
|
-
errors.push({
|
|
3829
|
+
errors.push({
|
|
3830
|
+
path: `${path}.requiresApproval`,
|
|
3831
|
+
message: "requiresApproval must be a boolean"
|
|
3832
|
+
});
|
|
3812
3833
|
}
|
|
3813
3834
|
return errors;
|
|
3814
3835
|
}
|
|
@@ -3831,11 +3852,29 @@ function validateLimits(limits, path) {
|
|
|
3831
3852
|
return [{ path, message: "limits must be an object" }];
|
|
3832
3853
|
}
|
|
3833
3854
|
const l = limits;
|
|
3855
|
+
if (l.autonomousThreshold !== void 0 && typeof l.autonomousThreshold !== "number") {
|
|
3856
|
+
errors.push({
|
|
3857
|
+
path: `${path}.autonomousThreshold`,
|
|
3858
|
+
message: "autonomousThreshold must be a number"
|
|
3859
|
+
});
|
|
3860
|
+
}
|
|
3834
3861
|
if (l.maxTransactionAmount !== void 0 && typeof l.maxTransactionAmount !== "number") {
|
|
3835
|
-
errors.push({
|
|
3862
|
+
errors.push({
|
|
3863
|
+
path: `${path}.maxTransactionAmount`,
|
|
3864
|
+
message: "maxTransactionAmount must be a number"
|
|
3865
|
+
});
|
|
3866
|
+
}
|
|
3867
|
+
if (typeof l.autonomousThreshold === "number" && typeof l.maxTransactionAmount === "number" && l.autonomousThreshold > l.maxTransactionAmount) {
|
|
3868
|
+
errors.push({
|
|
3869
|
+
path: `${path}.autonomousThreshold`,
|
|
3870
|
+
message: "autonomousThreshold (Autonomous Limit) must be <= maxTransactionAmount (Hard Limit)"
|
|
3871
|
+
});
|
|
3836
3872
|
}
|
|
3837
3873
|
if (l.maxRequestsPerHour !== void 0 && typeof l.maxRequestsPerHour !== "number") {
|
|
3838
|
-
errors.push({
|
|
3874
|
+
errors.push({
|
|
3875
|
+
path: `${path}.maxRequestsPerHour`,
|
|
3876
|
+
message: "maxRequestsPerHour must be a number"
|
|
3877
|
+
});
|
|
3839
3878
|
}
|
|
3840
3879
|
if (l.currency !== void 0 && typeof l.currency !== "string") {
|
|
3841
3880
|
errors.push({ path: `${path}.currency`, message: "currency must be a string" });
|
|
@@ -3850,7 +3889,10 @@ function validateRiskThresholds(thresholds, path) {
|
|
|
3850
3889
|
const t = thresholds;
|
|
3851
3890
|
for (const range of ["autoAllow", "requireApproval", "autoBlock"]) {
|
|
3852
3891
|
if (!t[range] || typeof t[range] !== "object") {
|
|
3853
|
-
errors.push({
|
|
3892
|
+
errors.push({
|
|
3893
|
+
path: `${path}.${range}`,
|
|
3894
|
+
message: `${range} is required and must be an object with min and max`
|
|
3895
|
+
});
|
|
3854
3896
|
continue;
|
|
3855
3897
|
}
|
|
3856
3898
|
const r = t[range];
|
|
@@ -3955,7 +3997,7 @@ function getTrustLevel(score) {
|
|
|
3955
3997
|
}
|
|
3956
3998
|
|
|
3957
3999
|
// src/version.ts
|
|
3958
|
-
var SDK_VERSION = "4.
|
|
4000
|
+
var SDK_VERSION = "4.6.0";
|
|
3959
4001
|
|
|
3960
4002
|
// src/http.ts
|
|
3961
4003
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4179,6 +4221,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4179
4221
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
4180
4222
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
4181
4223
|
...isMisconfig && { misconfigured: true },
|
|
4224
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
4225
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
4226
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
4227
|
+
// deterministic and intentionally NOT marked retryable.
|
|
4228
|
+
...isApiError && { retryable: true },
|
|
4182
4229
|
correlationId: options.correlationId,
|
|
4183
4230
|
attemptId: options.attemptId,
|
|
4184
4231
|
verifiedAt: /* @__PURE__ */ new Date()
|