@astrasyncai/verification-gateway 4.2.1 → 4.4.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 (138) 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 +145 -21
  7. package/dist/adapters/express.js.map +1 -1
  8. package/dist/adapters/express.mjs +145 -21
  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 +72 -16
  13. package/dist/adapters/mcp.js.map +1 -1
  14. package/dist/adapters/mcp.mjs +72 -16
  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 +141 -19
  19. package/dist/adapters/nextjs.js.map +1 -1
  20. package/dist/adapters/nextjs.mjs +141 -19
  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 +24 -6
  25. package/dist/adapters/sdk.js.map +1 -1
  26. package/dist/adapters/sdk.mjs +24 -6
  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 +24 -3
  31. package/dist/agent/index.js.map +1 -1
  32. package/dist/agent/index.mjs +24 -3
  33. package/dist/agent/index.mjs.map +1 -1
  34. package/dist/bin/astrasync-claude-hook.js +22 -4
  35. package/dist/bin/astrasync-codex-hook.js +22 -4
  36. package/dist/bin/astrasync-guard.js +26 -8
  37. package/dist/bin/astrasync.js +76 -23
  38. package/dist/browser/background.js +22 -4
  39. package/dist/browser/background.js.map +1 -1
  40. package/dist/browser/background.mjs +22 -4
  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 +23 -2
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/index.mjs +23 -2
  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 +22 -4
  55. package/dist/codex/index.js.map +1 -1
  56. package/dist/codex/index.mjs +22 -4
  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 +22 -4
  63. package/dist/cursor/extension.js.map +1 -1
  64. package/dist/cursor/extension.mjs +22 -4
  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 +24 -1
  69. package/dist/edge-config.js.map +1 -1
  70. package/dist/edge-config.mjs +22 -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 +121 -16
  75. package/dist/edge-core/index.js.map +1 -1
  76. package/dist/edge-core/index.mjs +121 -16
  77. package/dist/edge-core/index.mjs.map +1 -1
  78. package/dist/{express-D_4hTn5Z.d.mts → express-CR6F3njD.d.mts} +1 -1
  79. package/dist/{express-BVd1_3FE.d.ts → express-DaqL11tx.d.ts} +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 +22 -4
  83. package/dist/gateway/gateway.js.map +1 -1
  84. package/dist/gateway/gateway.mjs +22 -4
  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-BqHKlLOU.d.ts → index-B5Ts1WtM.d.ts} +1 -1
  89. package/dist/{index-T1aBoUcc.d.ts → index-BfIxCYIZ.d.ts} +1 -1
  90. package/dist/{index-BTeQ9fgV.d.mts → index-Cub7lK-T.d.mts} +1 -1
  91. package/dist/{index-DQb5-_1X.d.mts → index-CwAh7Tln.d.mts} +1 -1
  92. package/dist/index.d.mts +58 -9
  93. package/dist/index.d.ts +58 -9
  94. package/dist/index.js +218 -54
  95. package/dist/index.js.map +1 -1
  96. package/dist/index.mjs +214 -54
  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/metadata-capture.d.mts +35 -5
  101. package/dist/metadata-capture.d.ts +35 -5
  102. package/dist/metadata-capture.js +44 -6
  103. package/dist/metadata-capture.js.map +1 -1
  104. package/dist/metadata-capture.mjs +43 -6
  105. package/dist/metadata-capture.mjs.map +1 -1
  106. package/dist/{nextjs-w7RTbP1P.d.ts → nextjs-DL6uE1ye.d.ts} +1 -1
  107. package/dist/{nextjs-WyeVr2Kp.d.mts → nextjs-DlX6xwbU.d.mts} +1 -1
  108. package/dist/platform-signatures.d.mts +18 -1
  109. package/dist/platform-signatures.d.ts +18 -1
  110. package/dist/platform-signatures.js +35 -2
  111. package/dist/platform-signatures.js.map +1 -1
  112. package/dist/platform-signatures.mjs +35 -2
  113. package/dist/platform-signatures.mjs.map +1 -1
  114. package/dist/registration/index.js +25 -4
  115. package/dist/registration/index.js.map +1 -1
  116. package/dist/registration/index.mjs +25 -4
  117. package/dist/registration/index.mjs.map +1 -1
  118. package/dist/{sdk-CbTNIkAa.d.mts → sdk-Bbh9B_dw.d.mts} +1 -1
  119. package/dist/{sdk-QeX0Z8Ho.d.ts → sdk-C6SASmsh.d.ts} +1 -1
  120. package/dist/transport/index.d.mts +2 -2
  121. package/dist/transport/index.d.ts +2 -2
  122. package/dist/transport/index.js +22 -1
  123. package/dist/transport/index.js.map +1 -1
  124. package/dist/transport/index.mjs +22 -1
  125. package/dist/transport/index.mjs.map +1 -1
  126. package/dist/{types-r850cOt0.d.mts → types-C0zfSXMB.d.mts} +22 -0
  127. package/dist/{types-DqfPU5Bl.d.mts → types-C7Rb-w0d.d.mts} +1 -1
  128. package/dist/{types-sMxBT-nM.d.ts → types-DwSfO7Sb.d.ts} +22 -0
  129. package/dist/{types-BLUx92FJ.d.ts → types-nIh3HtuA.d.ts} +1 -1
  130. package/dist/ui/index.d.mts +1 -1
  131. package/dist/ui/index.d.ts +1 -1
  132. package/dist/verify.d.mts +1 -1
  133. package/dist/verify.d.ts +1 -1
  134. package/dist/verify.js +29 -11
  135. package/dist/verify.js.map +1 -1
  136. package/dist/verify.mjs +29 -11
  137. package/dist/verify.mjs.map +1 -1
  138. package/package.json +1 -1
@@ -3701,7 +3701,25 @@ function getTrustLevel(score) {
3701
3701
  }
3702
3702
 
3703
3703
  // src/version.ts
3704
- var SDK_VERSION = "4.1.0";
3704
+ var SDK_VERSION = "4.4.0";
3705
+
3706
+ // src/http.ts
3707
+ var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
3708
+ function withUserAgent(initHeaders) {
3709
+ if (!initHeaders) return { "user-agent": SDK_USER_AGENT };
3710
+ if (initHeaders instanceof Headers) {
3711
+ const copy = new Headers(initHeaders);
3712
+ if (!copy.has("user-agent")) copy.set("user-agent", SDK_USER_AGENT);
3713
+ return copy;
3714
+ }
3715
+ if (Array.isArray(initHeaders)) {
3716
+ const has2 = initHeaders.some(([name]) => name.toLowerCase() === "user-agent");
3717
+ return has2 ? initHeaders : [...initHeaders, ["user-agent", SDK_USER_AGENT]];
3718
+ }
3719
+ const has = Object.keys(initHeaders).some((name) => name.toLowerCase() === "user-agent");
3720
+ return has ? initHeaders : { "user-agent": SDK_USER_AGENT, ...initHeaders };
3721
+ }
3722
+ var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
3705
3723
 
3706
3724
  // src/well-known.ts
3707
3725
  var CACHE_TTL_MS = 60 * 60 * 1e3;
@@ -3731,7 +3749,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
3731
3749
  initCheckPerformed = true;
3732
3750
  try {
3733
3751
  const probeUrl = `${apiBaseUrl}/agents/verify-access`;
3734
- const response = await fetch(probeUrl, { method: "HEAD" });
3752
+ const response = await sdkFetch(probeUrl, { method: "HEAD" });
3735
3753
  const contentType = response.headers.get("content-type") ?? "";
3736
3754
  if (contentType.startsWith("text/html")) {
3737
3755
  const message = `[VerificationGateway] apiBaseUrl '${apiBaseUrl}' returned HTML (content-type: ${contentType}). This usually means apiBaseUrl is pointing at a marketing site instead of the API. Expected: 'https://astrasync.ai/api' (prod) or 'https://staging.astrasync.ai/api' (staging).`;
@@ -3745,7 +3763,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
3745
3763
  );
3746
3764
  }
3747
3765
  if (apiKey) {
3748
- const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
3766
+ const selfCheck = await sdkFetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
3749
3767
  headers: { Authorization: `Bearer ${apiKey}` }
3750
3768
  });
3751
3769
  if (selfCheck.status === 401) {
@@ -3958,7 +3976,7 @@ async function callVerifyAccessAPI(config, request) {
3958
3976
  headers["X-API-Key"] = config.apiKey;
3959
3977
  }
3960
3978
  try {
3961
- const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
3979
+ const response = await sdkFetch(`${config.apiBaseUrl}/agents/verify-access`, {
3962
3980
  method: "POST",
3963
3981
  headers,
3964
3982
  body: JSON.stringify(body),
@@ -3700,7 +3700,25 @@ function getTrustLevel(score) {
3700
3700
  }
3701
3701
 
3702
3702
  // src/version.ts
3703
- var SDK_VERSION = "4.1.0";
3703
+ var SDK_VERSION = "4.4.0";
3704
+
3705
+ // src/http.ts
3706
+ var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
3707
+ function withUserAgent(initHeaders) {
3708
+ if (!initHeaders) return { "user-agent": SDK_USER_AGENT };
3709
+ if (initHeaders instanceof Headers) {
3710
+ const copy = new Headers(initHeaders);
3711
+ if (!copy.has("user-agent")) copy.set("user-agent", SDK_USER_AGENT);
3712
+ return copy;
3713
+ }
3714
+ if (Array.isArray(initHeaders)) {
3715
+ const has2 = initHeaders.some(([name]) => name.toLowerCase() === "user-agent");
3716
+ return has2 ? initHeaders : [...initHeaders, ["user-agent", SDK_USER_AGENT]];
3717
+ }
3718
+ const has = Object.keys(initHeaders).some((name) => name.toLowerCase() === "user-agent");
3719
+ return has ? initHeaders : { "user-agent": SDK_USER_AGENT, ...initHeaders };
3720
+ }
3721
+ var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
3704
3722
 
3705
3723
  // src/well-known.ts
3706
3724
  var CACHE_TTL_MS = 60 * 60 * 1e3;
@@ -3730,7 +3748,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
3730
3748
  initCheckPerformed = true;
3731
3749
  try {
3732
3750
  const probeUrl = `${apiBaseUrl}/agents/verify-access`;
3733
- const response = await fetch(probeUrl, { method: "HEAD" });
3751
+ const response = await sdkFetch(probeUrl, { method: "HEAD" });
3734
3752
  const contentType = response.headers.get("content-type") ?? "";
3735
3753
  if (contentType.startsWith("text/html")) {
3736
3754
  const message = `[VerificationGateway] apiBaseUrl '${apiBaseUrl}' returned HTML (content-type: ${contentType}). This usually means apiBaseUrl is pointing at a marketing site instead of the API. Expected: 'https://astrasync.ai/api' (prod) or 'https://staging.astrasync.ai/api' (staging).`;
@@ -3744,7 +3762,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
3744
3762
  );
3745
3763
  }
3746
3764
  if (apiKey) {
3747
- const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
3765
+ const selfCheck = await sdkFetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
3748
3766
  headers: { Authorization: `Bearer ${apiKey}` }
3749
3767
  });
3750
3768
  if (selfCheck.status === 401) {
@@ -3957,7 +3975,7 @@ async function callVerifyAccessAPI(config, request) {
3957
3975
  headers["X-API-Key"] = config.apiKey;
3958
3976
  }
3959
3977
  try {
3960
- const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
3978
+ const response = await sdkFetch(`${config.apiBaseUrl}/agents/verify-access`, {
3961
3979
  method: "POST",
3962
3980
  headers,
3963
3981
  body: JSON.stringify(body),
@@ -3677,6 +3677,27 @@ Policy saved to ${outputPath}`);
3677
3677
  }
3678
3678
  };
3679
3679
 
3680
+ // src/version.ts
3681
+ var SDK_VERSION = "4.4.0";
3682
+
3683
+ // src/http.ts
3684
+ var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
3685
+ function withUserAgent(initHeaders) {
3686
+ if (!initHeaders) return { "user-agent": SDK_USER_AGENT };
3687
+ if (initHeaders instanceof Headers) {
3688
+ const copy = new Headers(initHeaders);
3689
+ if (!copy.has("user-agent")) copy.set("user-agent", SDK_USER_AGENT);
3690
+ return copy;
3691
+ }
3692
+ if (Array.isArray(initHeaders)) {
3693
+ const has2 = initHeaders.some(([name]) => name.toLowerCase() === "user-agent");
3694
+ return has2 ? initHeaders : [...initHeaders, ["user-agent", SDK_USER_AGENT]];
3695
+ }
3696
+ const has = Object.keys(initHeaders).some((name) => name.toLowerCase() === "user-agent");
3697
+ return has ? initHeaders : { "user-agent": SDK_USER_AGENT, ...initHeaders };
3698
+ }
3699
+ var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
3700
+
3680
3701
  // src/cli/upgrade.ts
3681
3702
  var UpgradeFlow = class {
3682
3703
  constructor(config, callbacks, trigger) {
@@ -3822,7 +3843,7 @@ var UpgradeFlow = class {
3822
3843
  */
3823
3844
  async validateApiKey(apiKey) {
3824
3845
  try {
3825
- const response = await fetch(`${this.platformUrl}/api/v1/auth/me`, {
3846
+ const response = await sdkFetch(`${this.platformUrl}/api/v1/auth/me`, {
3826
3847
  headers: { Authorization: `Bearer ${apiKey}` }
3827
3848
  });
3828
3849
  if (!response.ok) {
@@ -3844,7 +3865,7 @@ var UpgradeFlow = class {
3844
3865
  async uploadPolicy(apiKey) {
3845
3866
  const policyYaml = toYaml(this.config.policy);
3846
3867
  try {
3847
- const response = await fetch(`${this.platformUrl}/api/v1/agents/policies/upload`, {
3868
+ const response = await sdkFetch(`${this.platformUrl}/api/v1/agents/policies/upload`, {
3848
3869
  method: "POST",
3849
3870
  headers: {
3850
3871
  "Content-Type": "application/json",
@@ -4608,9 +4629,6 @@ function getTrustLevel(score) {
4608
4629
  return "BRONZE";
4609
4630
  }
4610
4631
 
4611
- // src/version.ts
4612
- var SDK_VERSION = "4.1.0";
4613
-
4614
4632
  // src/well-known.ts
4615
4633
  var CACHE_TTL_MS = 60 * 60 * 1e3;
4616
4634
  var cache = /* @__PURE__ */ new Map();
@@ -4639,7 +4657,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
4639
4657
  initCheckPerformed = true;
4640
4658
  try {
4641
4659
  const probeUrl = `${apiBaseUrl}/agents/verify-access`;
4642
- const response = await fetch(probeUrl, { method: "HEAD" });
4660
+ const response = await sdkFetch(probeUrl, { method: "HEAD" });
4643
4661
  const contentType = response.headers.get("content-type") ?? "";
4644
4662
  if (contentType.startsWith("text/html")) {
4645
4663
  const message = `[VerificationGateway] apiBaseUrl '${apiBaseUrl}' returned HTML (content-type: ${contentType}). This usually means apiBaseUrl is pointing at a marketing site instead of the API. Expected: 'https://astrasync.ai/api' (prod) or 'https://staging.astrasync.ai/api' (staging).`;
@@ -4653,7 +4671,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
4653
4671
  );
4654
4672
  }
4655
4673
  if (apiKey) {
4656
- const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
4674
+ const selfCheck = await sdkFetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
4657
4675
  headers: { Authorization: `Bearer ${apiKey}` }
4658
4676
  });
4659
4677
  if (selfCheck.status === 401) {
@@ -4866,7 +4884,7 @@ async function callVerifyAccessAPI(config, request2) {
4866
4884
  headers["X-API-Key"] = config.apiKey;
4867
4885
  }
4868
4886
  try {
4869
- const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
4887
+ const response = await sdkFetch(`${config.apiBaseUrl}/agents/verify-access`, {
4870
4888
  method: "POST",
4871
4889
  headers,
4872
4890
  body: JSON.stringify(body),
@@ -26,6 +26,40 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
 
29
+ // src/version.ts
30
+ var SDK_VERSION;
31
+ var init_version = __esm({
32
+ "src/version.ts"() {
33
+ "use strict";
34
+ SDK_VERSION = "4.4.0";
35
+ }
36
+ });
37
+
38
+ // src/http.ts
39
+ function withUserAgent(initHeaders) {
40
+ if (!initHeaders) return { "user-agent": SDK_USER_AGENT };
41
+ if (initHeaders instanceof Headers) {
42
+ const copy = new Headers(initHeaders);
43
+ if (!copy.has("user-agent")) copy.set("user-agent", SDK_USER_AGENT);
44
+ return copy;
45
+ }
46
+ if (Array.isArray(initHeaders)) {
47
+ const has2 = initHeaders.some(([name]) => name.toLowerCase() === "user-agent");
48
+ return has2 ? initHeaders : [...initHeaders, ["user-agent", SDK_USER_AGENT]];
49
+ }
50
+ const has = Object.keys(initHeaders).some((name) => name.toLowerCase() === "user-agent");
51
+ return has ? initHeaders : { "user-agent": SDK_USER_AGENT, ...initHeaders };
52
+ }
53
+ var SDK_USER_AGENT, sdkFetch;
54
+ var init_http = __esm({
55
+ "src/http.ts"() {
56
+ "use strict";
57
+ init_version();
58
+ SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
59
+ sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
60
+ }
61
+ });
62
+
29
63
  // src/registration/errors.ts
30
64
  var AstraSyncError, KYDRequiredError, AuthenticationError, RegistrationDeniedError, RegistrationExpiredError, RegistrationTimeoutError;
31
65
  var init_errors = __esm({
@@ -101,6 +135,7 @@ var DEFAULT_BASE_URL, sleep, AstraSync;
101
135
  var init_api = __esm({
102
136
  "src/registration/api.ts"() {
103
137
  "use strict";
138
+ init_http();
104
139
  init_errors();
105
140
  DEFAULT_BASE_URL = "https://astrasync.ai";
106
141
  sleep = (ms) => new Promise((r) => setTimeout(r, ms));
@@ -222,7 +257,7 @@ var init_api = __esm({
222
257
  */
223
258
  async pollRegistration(requestId) {
224
259
  const url = `${this.baseUrl}/api/agents/request-registration/${requestId}`;
225
- const res = await fetch(url, { headers: { Accept: "application/json" } });
260
+ const res = await sdkFetch(url, { headers: { Accept: "application/json" } });
226
261
  if (!res.ok) {
227
262
  const errBody = await res.json().catch(() => ({}));
228
263
  throw new AstraSyncError(
@@ -279,7 +314,7 @@ var init_api = __esm({
279
314
  * Check API health.
280
315
  */
281
316
  async health() {
282
- const res = await fetch(`${this.baseUrl}/api/health/`);
317
+ const res = await sdkFetch(`${this.baseUrl}/api/health/`);
283
318
  if (!res.ok) {
284
319
  throw new AstraSyncError(`Health check failed: ${res.status}`, res.status);
285
320
  }
@@ -306,7 +341,7 @@ var init_api = __esm({
306
341
  const signature = await this.signRequest(method, endpoint, body || {});
307
342
  headers["X-AstraSync-Signature"] = signature;
308
343
  }
309
- const res = await fetch(url, {
344
+ const res = await sdkFetch(url, {
310
345
  method,
311
346
  headers,
312
347
  ...body ? { body: JSON.stringify(body) } : {}
@@ -331,7 +366,7 @@ var init_api = __esm({
331
366
  if (this.cachedJwt && this.jwtExpiresAt && Date.now() < this.jwtExpiresAt) {
332
367
  return this.cachedJwt;
333
368
  }
334
- const res = await fetch(`${this.baseUrl}/api/auth/login`, {
369
+ const res = await sdkFetch(`${this.baseUrl}/api/auth/login`, {
335
370
  method: "POST",
336
371
  headers: { "Content-Type": "application/json" },
337
372
  body: JSON.stringify({ email: this.email, password: this.password })
@@ -4019,6 +4054,7 @@ var UpgradeFlow;
4019
4054
  var init_upgrade = __esm({
4020
4055
  "src/cli/upgrade.ts"() {
4021
4056
  "use strict";
4057
+ init_http();
4022
4058
  init_pdlss_parser();
4023
4059
  UpgradeFlow = class {
4024
4060
  constructor(config, callbacks, trigger) {
@@ -4164,7 +4200,7 @@ var init_upgrade = __esm({
4164
4200
  */
4165
4201
  async validateApiKey(apiKey) {
4166
4202
  try {
4167
- const response = await fetch(`${this.platformUrl}/api/v1/auth/me`, {
4203
+ const response = await sdkFetch(`${this.platformUrl}/api/v1/auth/me`, {
4168
4204
  headers: { Authorization: `Bearer ${apiKey}` }
4169
4205
  });
4170
4206
  if (!response.ok) {
@@ -4186,7 +4222,7 @@ var init_upgrade = __esm({
4186
4222
  async uploadPolicy(apiKey) {
4187
4223
  const policyYaml = toYaml(this.config.policy);
4188
4224
  try {
4189
- const response = await fetch(`${this.platformUrl}/api/v1/agents/policies/upload`, {
4225
+ const response = await sdkFetch(`${this.platformUrl}/api/v1/agents/policies/upload`, {
4190
4226
  method: "POST",
4191
4227
  headers: {
4192
4228
  "Content-Type": "application/json",
@@ -4995,15 +5031,6 @@ var init_access_levels = __esm({
4995
5031
  }
4996
5032
  });
4997
5033
 
4998
- // src/version.ts
4999
- var SDK_VERSION;
5000
- var init_version = __esm({
5001
- "src/version.ts"() {
5002
- "use strict";
5003
- SDK_VERSION = "4.1.0";
5004
- }
5005
- });
5006
-
5007
5034
  // src/well-known.ts
5008
5035
  function getCachedWellKnownUrls(apiBaseUrl) {
5009
5036
  return cache.get(apiBaseUrl)?.data;
@@ -5012,6 +5039,7 @@ var CACHE_TTL_MS, cache;
5012
5039
  var init_well_known = __esm({
5013
5040
  "src/well-known.ts"() {
5014
5041
  "use strict";
5042
+ init_http();
5015
5043
  CACHE_TTL_MS = 60 * 60 * 1e3;
5016
5044
  cache = /* @__PURE__ */ new Map();
5017
5045
  }
@@ -5022,7 +5050,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
5022
5050
  initCheckPerformed = true;
5023
5051
  try {
5024
5052
  const probeUrl = `${apiBaseUrl}/agents/verify-access`;
5025
- const response = await fetch(probeUrl, { method: "HEAD" });
5053
+ const response = await sdkFetch(probeUrl, { method: "HEAD" });
5026
5054
  const contentType = response.headers.get("content-type") ?? "";
5027
5055
  if (contentType.startsWith("text/html")) {
5028
5056
  const message = `[VerificationGateway] apiBaseUrl '${apiBaseUrl}' returned HTML (content-type: ${contentType}). This usually means apiBaseUrl is pointing at a marketing site instead of the API. Expected: 'https://astrasync.ai/api' (prod) or 'https://staging.astrasync.ai/api' (staging).`;
@@ -5036,7 +5064,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
5036
5064
  );
5037
5065
  }
5038
5066
  if (apiKey) {
5039
- const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
5067
+ const selfCheck = await sdkFetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
5040
5068
  headers: { Authorization: `Bearer ${apiKey}` }
5041
5069
  });
5042
5070
  if (selfCheck.status === 401) {
@@ -5247,7 +5275,7 @@ async function callVerifyAccessAPI(config, request2) {
5247
5275
  headers["X-API-Key"] = config.apiKey;
5248
5276
  }
5249
5277
  try {
5250
- const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
5278
+ const response = await sdkFetch(`${config.apiBaseUrl}/agents/verify-access`, {
5251
5279
  method: "POST",
5252
5280
  headers,
5253
5281
  body: JSON.stringify(body),
@@ -5488,6 +5516,7 @@ var DEFAULT_CONFIG, initCheckPerformed, deprecationWarningShown, verificationCac
5488
5516
  var init_verify = __esm({
5489
5517
  "src/verify.ts"() {
5490
5518
  "use strict";
5519
+ init_http();
5491
5520
  init_access_levels();
5492
5521
  init_version();
5493
5522
  init_well_known();
@@ -5517,6 +5546,7 @@ var FALLBACK_MAX_WAIT_MS;
5517
5546
  var init_stepup_poll = __esm({
5518
5547
  "src/adapters/stepup-poll.ts"() {
5519
5548
  "use strict";
5549
+ init_http();
5520
5550
  FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
5521
5551
  }
5522
5552
  });
@@ -5538,12 +5568,19 @@ var init_settlement = __esm({
5538
5568
  });
5539
5569
 
5540
5570
  // src/transport/http.ts
5541
- var init_http = __esm({
5571
+ var init_http2 = __esm({
5542
5572
  "src/transport/http.ts"() {
5543
5573
  "use strict";
5544
5574
  }
5545
5575
  });
5546
5576
 
5577
+ // src/verified-hop.ts
5578
+ var init_verified_hop = __esm({
5579
+ "src/verified-hop.ts"() {
5580
+ "use strict";
5581
+ }
5582
+ });
5583
+
5547
5584
  // src/adapters/http-pdlss.ts
5548
5585
  var init_http_pdlss = __esm({
5549
5586
  "src/adapters/http-pdlss.ts"() {
@@ -5572,6 +5609,7 @@ var DEFAULT_EDGE_CONFIG, DEFAULT_TTL_MS, DEFAULT_MAX_STALE_MS;
5572
5609
  var init_edge_config = __esm({
5573
5610
  "src/edge-config.ts"() {
5574
5611
  "use strict";
5612
+ init_http();
5575
5613
  DEFAULT_EDGE_CONFIG = Object.freeze({
5576
5614
  version: 1,
5577
5615
  mode: "observe",
@@ -5650,7 +5688,8 @@ var init_express = __esm({
5650
5688
  "use strict";
5651
5689
  init_stepup_poll();
5652
5690
  init_verify();
5653
- init_http();
5691
+ init_http2();
5692
+ init_verified_hop();
5654
5693
  init_http_pdlss();
5655
5694
  init_approval_gate();
5656
5695
  init_pdlss_pre_check();
@@ -5668,12 +5707,13 @@ var init_nextjs = __esm({
5668
5707
  "use strict";
5669
5708
  init_stepup_poll();
5670
5709
  init_verify();
5671
- init_http();
5710
+ init_http2();
5672
5711
  init_pdlss_pre_check();
5673
5712
  init_metadata_capture();
5674
5713
  init_anonymous_beacon();
5675
5714
  init_http_pdlss();
5676
5715
  init_approval_gate();
5716
+ init_verified_hop();
5677
5717
  DEFAULT_ROUTES_REFRESH_MS2 = 5 * 60 * 1e3;
5678
5718
  }
5679
5719
  });
@@ -5773,6 +5813,7 @@ var init_rfc9421_verify = __esm({
5773
5813
  var init_ucp = __esm({
5774
5814
  "src/transport/ucp.ts"() {
5775
5815
  "use strict";
5816
+ init_http();
5776
5817
  init_purpose_mapping2();
5777
5818
  }
5778
5819
  });
@@ -5941,10 +5982,10 @@ var init_web_bot_auth = __esm({
5941
5982
  var init_transport = __esm({
5942
5983
  "src/transport/index.ts"() {
5943
5984
  "use strict";
5944
- init_http();
5985
+ init_http2();
5945
5986
  init_a2a();
5946
5987
  init_mcp();
5947
- init_http();
5988
+ init_http2();
5948
5989
  init_a2a();
5949
5990
  init_mcp();
5950
5991
  init_purpose_mapping2();
@@ -5977,6 +6018,7 @@ var init_transport = __esm({
5977
6018
  var init_mcp_server = __esm({
5978
6019
  "src/transport/mcp-server.ts"() {
5979
6020
  "use strict";
6021
+ init_verified_hop();
5980
6022
  }
5981
6023
  });
5982
6024
 
@@ -6022,6 +6064,7 @@ var init_client = __esm({
6022
6064
  "src/agent/client.ts"() {
6023
6065
  "use strict";
6024
6066
  init_http();
6067
+ init_http2();
6025
6068
  init_a2a();
6026
6069
  init_mcp();
6027
6070
  init_transport();
@@ -6047,6 +6090,7 @@ var init_pdlss_formatter = __esm({
6047
6090
  var init_decision_client = __esm({
6048
6091
  "src/agent/decision-client.ts"() {
6049
6092
  "use strict";
6093
+ init_http();
6050
6094
  }
6051
6095
  });
6052
6096
 
@@ -6062,6 +6106,13 @@ var init_agent = __esm({
6062
6106
  }
6063
6107
  });
6064
6108
 
6109
+ // src/runtime-signatures.ts
6110
+ var init_runtime_signatures = __esm({
6111
+ "src/runtime-signatures.ts"() {
6112
+ "use strict";
6113
+ }
6114
+ });
6115
+
6065
6116
  // src/index.ts
6066
6117
  var init_src = __esm({
6067
6118
  "src/index.ts"() {
@@ -6087,6 +6138,8 @@ var init_src = __esm({
6087
6138
  init_verify();
6088
6139
  init_verify();
6089
6140
  init_metadata_capture();
6141
+ init_runtime_signatures();
6142
+ init_http();
6090
6143
  init_version();
6091
6144
  }
6092
6145
  });
@@ -3938,7 +3938,25 @@ function getTrustLevel(score) {
3938
3938
  }
3939
3939
 
3940
3940
  // src/version.ts
3941
- var SDK_VERSION = "4.1.0";
3941
+ var SDK_VERSION = "4.4.0";
3942
+
3943
+ // src/http.ts
3944
+ var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
3945
+ function withUserAgent(initHeaders) {
3946
+ if (!initHeaders) return { "user-agent": SDK_USER_AGENT };
3947
+ if (initHeaders instanceof Headers) {
3948
+ const copy = new Headers(initHeaders);
3949
+ if (!copy.has("user-agent")) copy.set("user-agent", SDK_USER_AGENT);
3950
+ return copy;
3951
+ }
3952
+ if (Array.isArray(initHeaders)) {
3953
+ const has2 = initHeaders.some(([name]) => name.toLowerCase() === "user-agent");
3954
+ return has2 ? initHeaders : [...initHeaders, ["user-agent", SDK_USER_AGENT]];
3955
+ }
3956
+ const has = Object.keys(initHeaders).some((name) => name.toLowerCase() === "user-agent");
3957
+ return has ? initHeaders : { "user-agent": SDK_USER_AGENT, ...initHeaders };
3958
+ }
3959
+ var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
3942
3960
 
3943
3961
  // src/well-known.ts
3944
3962
  var CACHE_TTL_MS = 60 * 60 * 1e3;
@@ -3968,7 +3986,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
3968
3986
  initCheckPerformed = true;
3969
3987
  try {
3970
3988
  const probeUrl = `${apiBaseUrl}/agents/verify-access`;
3971
- const response = await fetch(probeUrl, { method: "HEAD" });
3989
+ const response = await sdkFetch(probeUrl, { method: "HEAD" });
3972
3990
  const contentType = response.headers.get("content-type") ?? "";
3973
3991
  if (contentType.startsWith("text/html")) {
3974
3992
  const message = `[VerificationGateway] apiBaseUrl '${apiBaseUrl}' returned HTML (content-type: ${contentType}). This usually means apiBaseUrl is pointing at a marketing site instead of the API. Expected: 'https://astrasync.ai/api' (prod) or 'https://staging.astrasync.ai/api' (staging).`;
@@ -3982,7 +4000,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
3982
4000
  );
3983
4001
  }
3984
4002
  if (apiKey) {
3985
- const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
4003
+ const selfCheck = await sdkFetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
3986
4004
  headers: { Authorization: `Bearer ${apiKey}` }
3987
4005
  });
3988
4006
  if (selfCheck.status === 401) {
@@ -4195,7 +4213,7 @@ async function callVerifyAccessAPI(config, request) {
4195
4213
  headers["X-API-Key"] = config.apiKey;
4196
4214
  }
4197
4215
  try {
4198
- const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
4216
+ const response = await sdkFetch(`${config.apiBaseUrl}/agents/verify-access`, {
4199
4217
  method: "POST",
4200
4218
  headers,
4201
4219
  body: JSON.stringify(body),