@astrasyncai/verification-gateway 4.2.0 → 4.3.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 (112) hide show
  1. package/README.md +45 -21
  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 +56 -4
  7. package/dist/adapters/express.js.map +1 -1
  8. package/dist/adapters/express.mjs +56 -4
  9. package/dist/adapters/express.mjs.map +1 -1
  10. package/dist/adapters/mcp.d.mts +38 -30
  11. package/dist/adapters/mcp.d.ts +38 -30
  12. package/dist/adapters/mcp.js +22 -5
  13. package/dist/adapters/mcp.js.map +1 -1
  14. package/dist/adapters/mcp.mjs +22 -5
  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 +54 -4
  19. package/dist/adapters/nextjs.js.map +1 -1
  20. package/dist/adapters/nextjs.mjs +54 -4
  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/agent/index.d.mts +2 -2
  25. package/dist/agent/index.d.ts +2 -2
  26. package/dist/agent/index.js +2 -2
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/index.mjs +2 -2
  29. package/dist/agent/index.mjs.map +1 -1
  30. package/dist/bin/astrasync-claude-hook.js +2 -2
  31. package/dist/bin/astrasync-codex-hook.js +2 -2
  32. package/dist/bin/astrasync-guard.js +2 -2
  33. package/dist/bin/astrasync.js +14 -4
  34. package/dist/browser/background.js +2 -2
  35. package/dist/browser/background.js.map +1 -1
  36. package/dist/browser/background.mjs +2 -2
  37. package/dist/browser/background.mjs.map +1 -1
  38. package/dist/browser/browser-adapter.d.mts +2 -2
  39. package/dist/browser/browser-adapter.d.ts +2 -2
  40. package/dist/claude-code/claude-code-adapter.d.mts +2 -2
  41. package/dist/claude-code/claude-code-adapter.d.ts +2 -2
  42. package/dist/cli/index.d.mts +2 -2
  43. package/dist/cli/index.d.ts +2 -2
  44. package/dist/codex/index.d.mts +2 -2
  45. package/dist/codex/index.d.ts +2 -2
  46. package/dist/codex/index.js +2 -2
  47. package/dist/codex/index.js.map +1 -1
  48. package/dist/codex/index.mjs +2 -2
  49. package/dist/codex/index.mjs.map +1 -1
  50. package/dist/cursor/cursor-adapter.d.mts +2 -2
  51. package/dist/cursor/cursor-adapter.d.ts +2 -2
  52. package/dist/cursor/extension.d.mts +2 -2
  53. package/dist/cursor/extension.d.ts +2 -2
  54. package/dist/cursor/extension.js +2 -2
  55. package/dist/cursor/extension.js.map +1 -1
  56. package/dist/cursor/extension.mjs +2 -2
  57. package/dist/cursor/extension.mjs.map +1 -1
  58. package/dist/edge-config.d.mts +1 -1
  59. package/dist/edge-config.d.ts +1 -1
  60. package/dist/edge-core/index.d.mts +1 -1
  61. package/dist/edge-core/index.d.ts +1 -1
  62. package/dist/edge-core/index.js +25 -5
  63. package/dist/edge-core/index.js.map +1 -1
  64. package/dist/edge-core/index.mjs +25 -5
  65. package/dist/edge-core/index.mjs.map +1 -1
  66. package/dist/{express-D_4hTn5Z.d.mts → express-CR6F3njD.d.mts} +1 -1
  67. package/dist/{express-BVd1_3FE.d.ts → express-DaqL11tx.d.ts} +1 -1
  68. package/dist/gateway/gateway.d.mts +2 -2
  69. package/dist/gateway/gateway.d.ts +2 -2
  70. package/dist/gateway/gateway.js +2 -2
  71. package/dist/gateway/gateway.js.map +1 -1
  72. package/dist/gateway/gateway.mjs +2 -2
  73. package/dist/gateway/gateway.mjs.map +1 -1
  74. package/dist/git-trigger/git-hooks.d.mts +2 -2
  75. package/dist/git-trigger/git-hooks.d.ts +2 -2
  76. package/dist/{index-B0YHu_SP.d.ts → index-B5Ts1WtM.d.ts} +3 -3
  77. package/dist/{index-T1aBoUcc.d.ts → index-BfIxCYIZ.d.ts} +1 -1
  78. package/dist/{index-BPEBlOsE.d.mts → index-Cub7lK-T.d.mts} +3 -3
  79. package/dist/{index-DQb5-_1X.d.mts → index-CwAh7Tln.d.mts} +1 -1
  80. package/dist/index.d.mts +7 -7
  81. package/dist/index.d.ts +7 -7
  82. package/dist/index.js +74 -35
  83. package/dist/index.js.map +1 -1
  84. package/dist/index.mjs +71 -32
  85. package/dist/index.mjs.map +1 -1
  86. package/dist/local-evaluator/evaluator.d.mts +2 -2
  87. package/dist/local-evaluator/evaluator.d.ts +2 -2
  88. package/dist/metadata-capture.d.mts +18 -5
  89. package/dist/metadata-capture.d.ts +18 -5
  90. package/dist/metadata-capture.js +21 -4
  91. package/dist/metadata-capture.js.map +1 -1
  92. package/dist/metadata-capture.mjs +20 -4
  93. package/dist/metadata-capture.mjs.map +1 -1
  94. package/dist/{nextjs-w7RTbP1P.d.ts → nextjs-DL6uE1ye.d.ts} +1 -1
  95. package/dist/{nextjs-WyeVr2Kp.d.mts → nextjs-DlX6xwbU.d.mts} +1 -1
  96. package/dist/{sdk-CbTNIkAa.d.mts → sdk-Bbh9B_dw.d.mts} +1 -1
  97. package/dist/{sdk-QeX0Z8Ho.d.ts → sdk-C6SASmsh.d.ts} +1 -1
  98. package/dist/transport/index.d.mts +2 -2
  99. package/dist/transport/index.d.ts +2 -2
  100. package/dist/transport/index.js +5 -5
  101. package/dist/transport/index.js.map +1 -1
  102. package/dist/transport/index.mjs +2 -2
  103. package/dist/transport/index.mjs.map +1 -1
  104. package/dist/{types-r850cOt0.d.mts → types-C0zfSXMB.d.mts} +22 -0
  105. package/dist/{types-DqfPU5Bl.d.mts → types-C7Rb-w0d.d.mts} +1 -1
  106. package/dist/{types-sMxBT-nM.d.ts → types-DwSfO7Sb.d.ts} +22 -0
  107. package/dist/{types-BLUx92FJ.d.ts → types-nIh3HtuA.d.ts} +1 -1
  108. package/dist/ui/index.d.mts +1 -1
  109. package/dist/ui/index.d.ts +1 -1
  110. package/dist/verify.d.mts +1 -1
  111. package/dist/verify.d.ts +1 -1
  112. package/package.json +2 -4
@@ -30,7 +30,9 @@ var SECRET_HEADER_NAMES = /* @__PURE__ */ new Set([
30
30
  "x-astrasync-signature",
31
31
  "x-astrasync-secret",
32
32
  "x-hub-signature",
33
- "x-hub-signature-256"
33
+ "x-hub-signature-256",
34
+ // Short-lived verify dedupe token — must never persist in stored metadata.
35
+ "x-astra-verified-hop"
34
36
  ]);
35
37
  var SECRET_HEADER_PREFIXES = ["x-astrasync-", "kya-", "kya_"];
36
38
  var CREDENTIAL_HEADER_NAMES = /* @__PURE__ */ new Set([
@@ -1054,6 +1056,12 @@ function buildManualReviewBody(outcome) {
1054
1056
  };
1055
1057
  }
1056
1058
 
1059
+ // src/verified-hop.ts
1060
+ var MCP_VERIFIED_HOP_HEADER = "X-Astra-Verified-Hop";
1061
+ function serializeVerifiedHop(marker) {
1062
+ return `${marker.astraId};${marker.sessionId ?? ""};${marker.checkedAt}`;
1063
+ }
1064
+
1057
1065
  // src/edge-core/enforce.ts
1058
1066
  var ASAT_HEADERS = {
1059
1067
  trustScore: "X-AstraSync-Trust-Score",
@@ -1062,6 +1070,7 @@ var ASAT_HEADERS = {
1062
1070
  permissions: "X-AstraSync-Permissions",
1063
1071
  observedDecision: "X-AstraSync-Observed-Decision"
1064
1072
  };
1073
+ var STRIP_HEADER_PREFIXES = ["x-astrasync-", "x-astra-verified-hop"];
1065
1074
  function passUntouched() {
1066
1075
  return { action: "pass", injectHeaders: {}, stripHeaderPrefixes: [] };
1067
1076
  }
@@ -1074,8 +1083,8 @@ function applyOutcome(options, outcome, policy) {
1074
1083
  if (outcome.decision !== "allow") {
1075
1084
  injectHeaders[ASAT_HEADERS.observedDecision] = outcome.decision;
1076
1085
  }
1077
- Object.assign(injectHeaders, asatHeaders(outcome));
1078
- return { action: "pass", injectHeaders, stripHeaderPrefixes: ["x-astrasync-"] };
1086
+ Object.assign(injectHeaders, asatHeaders(outcome), verifiedHopHeader(outcome));
1087
+ return { action: "pass", injectHeaders, stripHeaderPrefixes: STRIP_HEADER_PREFIXES };
1079
1088
  }
1080
1089
  switch (outcome.decision) {
1081
1090
  case "deny":
@@ -1093,8 +1102,8 @@ function applyOutcome(options, outcome, policy) {
1093
1102
  bodyJson: buildManualReviewBody(outcome)
1094
1103
  };
1095
1104
  default:
1096
- Object.assign(injectHeaders, asatHeaders(outcome));
1097
- return { action: "pass", injectHeaders, stripHeaderPrefixes: ["x-astrasync-"] };
1105
+ Object.assign(injectHeaders, asatHeaders(outcome), verifiedHopHeader(outcome));
1106
+ return { action: "pass", injectHeaders, stripHeaderPrefixes: STRIP_HEADER_PREFIXES };
1098
1107
  }
1099
1108
  }
1100
1109
  function asatHeaders(outcome) {
@@ -1107,6 +1116,17 @@ function asatHeaders(outcome) {
1107
1116
  ...accessLevel && { [ASAT_HEADERS.permissions]: accessLevel }
1108
1117
  };
1109
1118
  }
1119
+ function verifiedHopHeader(outcome) {
1120
+ const agentId = outcome.asat?.agentId;
1121
+ if (!agentId) return {};
1122
+ return {
1123
+ [MCP_VERIFIED_HOP_HEADER]: serializeVerifiedHop({
1124
+ astraId: agentId,
1125
+ ...outcome.sessionId && { sessionId: outcome.sessionId },
1126
+ checkedAt: Date.now()
1127
+ })
1128
+ };
1129
+ }
1110
1130
 
1111
1131
  // src/adapters/http-pdlss.ts
1112
1132
  var HTTP_METHOD_ACTION_TABLE = {