@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.
Files changed (134) hide show
  1. package/README.md +1 -1
  2. package/dist/adapter-interface/interface.d.mts +2 -2
  3. package/dist/adapter-interface/interface.d.ts +2 -2
  4. package/dist/adapters/express.d.mts +2 -2
  5. package/dist/adapters/express.d.ts +2 -2
  6. package/dist/adapters/express.js +6 -1
  7. package/dist/adapters/express.js.map +1 -1
  8. package/dist/adapters/express.mjs +6 -1
  9. package/dist/adapters/express.mjs.map +1 -1
  10. package/dist/adapters/mcp.d.mts +3 -394
  11. package/dist/adapters/mcp.d.ts +3 -394
  12. package/dist/adapters/mcp.js +6 -1
  13. package/dist/adapters/mcp.js.map +1 -1
  14. package/dist/adapters/mcp.mjs +6 -1
  15. package/dist/adapters/mcp.mjs.map +1 -1
  16. package/dist/adapters/nextjs.d.mts +2 -2
  17. package/dist/adapters/nextjs.d.ts +2 -2
  18. package/dist/adapters/nextjs.js +6 -1
  19. package/dist/adapters/nextjs.js.map +1 -1
  20. package/dist/adapters/nextjs.mjs +6 -1
  21. package/dist/adapters/nextjs.mjs.map +1 -1
  22. package/dist/adapters/sdk.d.mts +2 -2
  23. package/dist/adapters/sdk.d.ts +2 -2
  24. package/dist/adapters/sdk.js +6 -1
  25. package/dist/adapters/sdk.js.map +1 -1
  26. package/dist/adapters/sdk.mjs +6 -1
  27. package/dist/adapters/sdk.mjs.map +1 -1
  28. package/dist/agent/index.d.mts +2 -2
  29. package/dist/agent/index.d.ts +2 -2
  30. package/dist/agent/index.js +1 -1
  31. package/dist/agent/index.js.map +1 -1
  32. package/dist/agent/index.mjs +1 -1
  33. package/dist/agent/index.mjs.map +1 -1
  34. package/dist/bin/astrasync-claude-hook.js +60 -13
  35. package/dist/bin/astrasync-codex-hook.js +60 -13
  36. package/dist/bin/astrasync-guard.js +60 -13
  37. package/dist/bin/astrasync.js +68 -15
  38. package/dist/browser/background.js +60 -13
  39. package/dist/browser/background.js.map +1 -1
  40. package/dist/browser/background.mjs +60 -13
  41. package/dist/browser/background.mjs.map +1 -1
  42. package/dist/browser/browser-adapter.d.mts +2 -2
  43. package/dist/browser/browser-adapter.d.ts +2 -2
  44. package/dist/claude-code/claude-code-adapter.d.mts +2 -2
  45. package/dist/claude-code/claude-code-adapter.d.ts +2 -2
  46. package/dist/cli/index.d.mts +2 -2
  47. package/dist/cli/index.d.ts +2 -2
  48. package/dist/cli/index.js +33 -6
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/index.mjs +33 -6
  51. package/dist/cli/index.mjs.map +1 -1
  52. package/dist/codex/index.d.mts +2 -2
  53. package/dist/codex/index.d.ts +2 -2
  54. package/dist/codex/index.js +60 -13
  55. package/dist/codex/index.js.map +1 -1
  56. package/dist/codex/index.mjs +60 -13
  57. package/dist/codex/index.mjs.map +1 -1
  58. package/dist/cursor/cursor-adapter.d.mts +2 -2
  59. package/dist/cursor/cursor-adapter.d.ts +2 -2
  60. package/dist/cursor/extension.d.mts +2 -2
  61. package/dist/cursor/extension.d.ts +2 -2
  62. package/dist/cursor/extension.js +60 -13
  63. package/dist/cursor/extension.js.map +1 -1
  64. package/dist/cursor/extension.mjs +60 -13
  65. package/dist/cursor/extension.mjs.map +1 -1
  66. package/dist/edge-config.d.mts +1 -1
  67. package/dist/edge-config.d.ts +1 -1
  68. package/dist/edge-config.js +1 -1
  69. package/dist/edge-config.js.map +1 -1
  70. package/dist/edge-config.mjs +1 -1
  71. package/dist/edge-config.mjs.map +1 -1
  72. package/dist/edge-core/index.d.mts +1 -1
  73. package/dist/edge-core/index.d.ts +1 -1
  74. package/dist/edge-core/index.js +6 -1
  75. package/dist/edge-core/index.js.map +1 -1
  76. package/dist/edge-core/index.mjs +6 -1
  77. package/dist/edge-core/index.mjs.map +1 -1
  78. package/dist/{express-DaqL11tx.d.ts → express-D-8Ks2Uo.d.ts} +1 -1
  79. package/dist/{express-CR6F3njD.d.mts → express-DBtPKXOL.d.mts} +1 -1
  80. package/dist/gateway/gateway.d.mts +2 -2
  81. package/dist/gateway/gateway.d.ts +2 -2
  82. package/dist/gateway/gateway.js +60 -13
  83. package/dist/gateway/gateway.js.map +1 -1
  84. package/dist/gateway/gateway.mjs +60 -13
  85. package/dist/gateway/gateway.mjs.map +1 -1
  86. package/dist/git-trigger/git-hooks.d.mts +2 -2
  87. package/dist/git-trigger/git-hooks.d.ts +2 -2
  88. package/dist/{index-BfIxCYIZ.d.ts → index-BND3kQev.d.ts} +1 -2
  89. package/dist/{index-CwAh7Tln.d.mts → index-CUfmJ1Dq.d.mts} +1 -2
  90. package/dist/{index-B5Ts1WtM.d.ts → index-DlZORQsb.d.ts} +1 -1
  91. package/dist/{index-Cub7lK-T.d.mts → index-kGCGWd5x.d.mts} +1 -1
  92. package/dist/index.d.mts +10 -10
  93. package/dist/index.d.ts +10 -10
  94. package/dist/index.js +17 -1
  95. package/dist/index.js.map +1 -1
  96. package/dist/index.mjs +12 -1
  97. package/dist/index.mjs.map +1 -1
  98. package/dist/local-evaluator/evaluator.d.mts +2 -2
  99. package/dist/local-evaluator/evaluator.d.ts +2 -2
  100. package/dist/local-evaluator/evaluator.js +22 -7
  101. package/dist/local-evaluator/evaluator.js.map +1 -1
  102. package/dist/local-evaluator/evaluator.mjs +22 -7
  103. package/dist/local-evaluator/evaluator.mjs.map +1 -1
  104. package/dist/mcp-DToTlwIn.d.ts +396 -0
  105. package/dist/mcp-ZRN4kY3b.d.mts +396 -0
  106. package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-C0KASOy_.d.mts} +1 -1
  107. package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-lwNvWYWT.d.ts} +1 -1
  108. package/dist/registration/index.d.mts +5 -1
  109. package/dist/registration/index.d.ts +5 -1
  110. package/dist/registration/index.js +2 -1
  111. package/dist/registration/index.js.map +1 -1
  112. package/dist/registration/index.mjs +2 -1
  113. package/dist/registration/index.mjs.map +1 -1
  114. package/dist/{sdk-C6SASmsh.d.ts → sdk-B4aodEwj.d.ts} +1 -1
  115. package/dist/{sdk-Bbh9B_dw.d.mts → sdk-B9dSwum7.d.mts} +1 -1
  116. package/dist/transport/index.d.mts +2 -2
  117. package/dist/transport/index.d.ts +2 -2
  118. package/dist/transport/index.js +1 -1
  119. package/dist/transport/index.js.map +1 -1
  120. package/dist/transport/index.mjs +1 -1
  121. package/dist/transport/index.mjs.map +1 -1
  122. package/dist/{types-DwSfO7Sb.d.ts → types-CGPU7HLi.d.ts} +8 -0
  123. package/dist/{types-nIh3HtuA.d.ts → types-CfSJLS4i.d.mts} +14 -1
  124. package/dist/{types-C0zfSXMB.d.mts → types-Cx9hTpKI.d.mts} +8 -0
  125. package/dist/{types-C7Rb-w0d.d.mts → types-DhhJxKIC.d.ts} +14 -1
  126. package/dist/ui/index.d.mts +1 -1
  127. package/dist/ui/index.d.ts +1 -1
  128. package/dist/verify.d.mts +1 -1
  129. package/dist/verify.d.ts +1 -1
  130. package/dist/verify.js +6 -1
  131. package/dist/verify.js.map +1 -1
  132. package/dist/verify.mjs +6 -1
  133. package/dist/verify.mjs.map +1 -1
  134. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.mjs';
2
- import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-C7Rb-w0d.mjs';
2
+ import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-CfSJLS4i.mjs';
3
3
  import '../gateway/gateway.mjs';
4
- import '../types-C0zfSXMB.mjs';
4
+ import '../types-Cx9hTpKI.mjs';
5
5
  import '../metadata-capture.mjs';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.js';
2
- import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-nIh3HtuA.js';
2
+ import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-DhhJxKIC.js';
3
3
  import '../gateway/gateway.js';
4
- import '../types-DwSfO7Sb.js';
4
+ import '../types-CGPU7HLi.js';
5
5
  import '../metadata-capture.js';
6
6
 
7
7
  /**
@@ -1,8 +1,8 @@
1
1
  import { VSCodeAPI } from './cursor-adapter.mjs';
2
2
  import '../adapter-interface/interface.mjs';
3
3
  import '../gateway/gateway.mjs';
4
- import '../types-C7Rb-w0d.mjs';
5
- import '../types-C0zfSXMB.mjs';
4
+ import '../types-CfSJLS4i.mjs';
5
+ import '../types-Cx9hTpKI.mjs';
6
6
  import '../metadata-capture.mjs';
7
7
 
8
8
  /**
@@ -1,8 +1,8 @@
1
1
  import { VSCodeAPI } from './cursor-adapter.js';
2
2
  import '../adapter-interface/interface.js';
3
3
  import '../gateway/gateway.js';
4
- import '../types-nIh3HtuA.js';
5
- import '../types-DwSfO7Sb.js';
4
+ import '../types-DhhJxKIC.js';
5
+ import '../types-CGPU7HLi.js';
6
6
  import '../metadata-capture.js';
7
7
 
8
8
  /**
@@ -501,9 +501,9 @@ var LocalEvaluator = class {
501
501
  if (scopeBlock) {
502
502
  return { recommendation: "DENY", reason: scopeBlock };
503
503
  }
504
- const limitViolation = this.checkLimits(context);
505
- if (limitViolation) {
506
- return { recommendation: "DENY", reason: limitViolation };
504
+ const limitDecision = this.checkLimits(context);
505
+ if (limitDecision) {
506
+ return limitDecision;
507
507
  }
508
508
  if (context.purpose === "sub_agent.spawn" && this.policy.selfInstantiation) {
509
509
  if (!this.policy.selfInstantiation.allowed) {
@@ -568,9 +568,21 @@ var LocalEvaluator = class {
568
568
  checkLimits(context) {
569
569
  const limits = this.policy.limits;
570
570
  if (!limits) return null;
571
- if (limits.maxTransactionAmount !== void 0 && context.transactionValue !== void 0) {
572
- if (context.transactionValue > limits.maxTransactionAmount) {
573
- return `Transaction value ${context.transactionValue} exceeds limit ${limits.maxTransactionAmount}`;
571
+ const value = context.transactionValue;
572
+ if (value !== void 0 && value > 0 && (limits.autonomousThreshold !== void 0 || limits.maxTransactionAmount !== void 0)) {
573
+ const autonomousThreshold = limits.autonomousThreshold ?? 0;
574
+ const hardLimit = limits.maxTransactionAmount ?? limits.autonomousThreshold ?? 0;
575
+ if (value > autonomousThreshold) {
576
+ if (value >= hardLimit) {
577
+ return {
578
+ recommendation: "DENY",
579
+ reason: `Transaction value ${value} at or above Hard Limit ${hardLimit}`
580
+ };
581
+ }
582
+ return {
583
+ recommendation: "MANUAL_REVIEW",
584
+ reason: `Transaction value ${value} is in the human-approval band (${autonomousThreshold}, ${hardLimit})`
585
+ };
574
586
  }
575
587
  }
576
588
  if (limits.maxRequestsPerHour !== void 0) {
@@ -583,7 +595,10 @@ var LocalEvaluator = class {
583
595
  } else {
584
596
  entry.count++;
585
597
  if (entry.count > limits.maxRequestsPerHour) {
586
- return `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`;
598
+ return {
599
+ recommendation: "DENY",
600
+ reason: `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`
601
+ };
587
602
  }
588
603
  }
589
604
  }
@@ -3792,10 +3807,16 @@ function validatePurpose(purpose, path) {
3792
3807
  errors.push({ path: `${path}.targets`, message: "targets must be an array of strings" });
3793
3808
  }
3794
3809
  if (p.blockedPatterns !== void 0 && !isStringArray(p.blockedPatterns)) {
3795
- errors.push({ path: `${path}.blockedPatterns`, message: "blockedPatterns must be an array of strings" });
3810
+ errors.push({
3811
+ path: `${path}.blockedPatterns`,
3812
+ message: "blockedPatterns must be an array of strings"
3813
+ });
3796
3814
  }
3797
3815
  if (p.requiresApproval !== void 0 && typeof p.requiresApproval !== "boolean") {
3798
- errors.push({ path: `${path}.requiresApproval`, message: "requiresApproval must be a boolean" });
3816
+ errors.push({
3817
+ path: `${path}.requiresApproval`,
3818
+ message: "requiresApproval must be a boolean"
3819
+ });
3799
3820
  }
3800
3821
  return errors;
3801
3822
  }
@@ -3818,11 +3839,29 @@ function validateLimits(limits, path) {
3818
3839
  return [{ path, message: "limits must be an object" }];
3819
3840
  }
3820
3841
  const l = limits;
3842
+ if (l.autonomousThreshold !== void 0 && typeof l.autonomousThreshold !== "number") {
3843
+ errors.push({
3844
+ path: `${path}.autonomousThreshold`,
3845
+ message: "autonomousThreshold must be a number"
3846
+ });
3847
+ }
3821
3848
  if (l.maxTransactionAmount !== void 0 && typeof l.maxTransactionAmount !== "number") {
3822
- errors.push({ path: `${path}.maxTransactionAmount`, message: "maxTransactionAmount must be a number" });
3849
+ errors.push({
3850
+ path: `${path}.maxTransactionAmount`,
3851
+ message: "maxTransactionAmount must be a number"
3852
+ });
3853
+ }
3854
+ if (typeof l.autonomousThreshold === "number" && typeof l.maxTransactionAmount === "number" && l.autonomousThreshold > l.maxTransactionAmount) {
3855
+ errors.push({
3856
+ path: `${path}.autonomousThreshold`,
3857
+ message: "autonomousThreshold (Autonomous Limit) must be <= maxTransactionAmount (Hard Limit)"
3858
+ });
3823
3859
  }
3824
3860
  if (l.maxRequestsPerHour !== void 0 && typeof l.maxRequestsPerHour !== "number") {
3825
- errors.push({ path: `${path}.maxRequestsPerHour`, message: "maxRequestsPerHour must be a number" });
3861
+ errors.push({
3862
+ path: `${path}.maxRequestsPerHour`,
3863
+ message: "maxRequestsPerHour must be a number"
3864
+ });
3826
3865
  }
3827
3866
  if (l.currency !== void 0 && typeof l.currency !== "string") {
3828
3867
  errors.push({ path: `${path}.currency`, message: "currency must be a string" });
@@ -3837,7 +3876,10 @@ function validateRiskThresholds(thresholds, path) {
3837
3876
  const t = thresholds;
3838
3877
  for (const range of ["autoAllow", "requireApproval", "autoBlock"]) {
3839
3878
  if (!t[range] || typeof t[range] !== "object") {
3840
- errors.push({ path: `${path}.${range}`, message: `${range} is required and must be an object with min and max` });
3879
+ errors.push({
3880
+ path: `${path}.${range}`,
3881
+ message: `${range} is required and must be an object with min and max`
3882
+ });
3841
3883
  continue;
3842
3884
  }
3843
3885
  const r = t[range];
@@ -3942,7 +3984,7 @@ function getTrustLevel(score) {
3942
3984
  }
3943
3985
 
3944
3986
  // src/version.ts
3945
- var SDK_VERSION = "4.5.0";
3987
+ var SDK_VERSION = "4.6.0";
3946
3988
 
3947
3989
  // src/http.ts
3948
3990
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4166,6 +4208,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
4166
4208
  // 4.0.0: typed marker so adapters render the misconfig envelope (503 +
4167
4209
  // MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
4168
4210
  ...isMisconfig && { misconfigured: true },
4211
+ // 4.6.0: a transient api_error is retryable — mark it so consumers surface
4212
+ // "temporarily unavailable, retry" (recommendation 'error') instead of
4213
+ // coercing the absent recommendation to a policy 'deny'. Misconfig is
4214
+ // deterministic and intentionally NOT marked retryable.
4215
+ ...isApiError && { retryable: true },
4169
4216
  correlationId: options.correlationId,
4170
4217
  attemptId: options.attemptId,
4171
4218
  verifiedAt: /* @__PURE__ */ new Date()