@astrasyncai/verification-gateway 1.0.0 → 2.0.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 (101) hide show
  1. package/dist/adapter-interface/interface.d.mts +71 -0
  2. package/dist/adapter-interface/interface.d.ts +71 -0
  3. package/dist/adapter-interface/interface.js +36 -0
  4. package/dist/adapter-interface/interface.js.map +1 -0
  5. package/dist/adapter-interface/interface.mjs +10 -0
  6. package/dist/adapter-interface/interface.mjs.map +1 -0
  7. package/dist/adapter-interface/purpose-mapping.d.mts +28 -0
  8. package/dist/adapter-interface/purpose-mapping.d.ts +28 -0
  9. package/dist/adapter-interface/purpose-mapping.js +117 -0
  10. package/dist/adapter-interface/purpose-mapping.js.map +1 -0
  11. package/dist/adapter-interface/purpose-mapping.mjs +89 -0
  12. package/dist/adapter-interface/purpose-mapping.mjs.map +1 -0
  13. package/dist/adapters/express.d.mts +2 -2
  14. package/dist/adapters/express.d.ts +2 -2
  15. package/dist/adapters/express.js +46 -9
  16. package/dist/adapters/express.js.map +1 -1
  17. package/dist/adapters/express.mjs +46 -9
  18. package/dist/adapters/express.mjs.map +1 -1
  19. package/dist/adapters/nextjs.d.mts +2 -2
  20. package/dist/adapters/nextjs.d.ts +2 -2
  21. package/dist/adapters/nextjs.js +19 -9
  22. package/dist/adapters/nextjs.js.map +1 -1
  23. package/dist/adapters/nextjs.mjs +19 -9
  24. package/dist/adapters/nextjs.mjs.map +1 -1
  25. package/dist/adapters/sdk.d.mts +2 -2
  26. package/dist/adapters/sdk.d.ts +2 -2
  27. package/dist/adapters/sdk.js +20 -4
  28. package/dist/adapters/sdk.js.map +1 -1
  29. package/dist/adapters/sdk.mjs +20 -4
  30. package/dist/adapters/sdk.mjs.map +1 -1
  31. package/dist/agent/index.d.mts +2 -0
  32. package/dist/agent/index.d.ts +2 -0
  33. package/dist/agent/index.js +354 -0
  34. package/dist/agent/index.js.map +1 -0
  35. package/dist/agent/index.mjs +323 -0
  36. package/dist/agent/index.mjs.map +1 -0
  37. package/dist/browser/browser-adapter.d.mts +106 -0
  38. package/dist/browser/browser-adapter.d.ts +106 -0
  39. package/dist/browser/browser-adapter.js +286 -0
  40. package/dist/browser/browser-adapter.js.map +1 -0
  41. package/dist/browser/browser-adapter.mjs +259 -0
  42. package/dist/browser/browser-adapter.mjs.map +1 -0
  43. package/dist/cli/index.d.mts +241 -0
  44. package/dist/cli/index.d.ts +241 -0
  45. package/dist/cli/index.js +3734 -0
  46. package/dist/cli/index.js.map +1 -0
  47. package/dist/cli/index.mjs +3688 -0
  48. package/dist/cli/index.mjs.map +1 -0
  49. package/dist/cursor/cursor-adapter.d.mts +92 -0
  50. package/dist/cursor/cursor-adapter.d.ts +92 -0
  51. package/dist/cursor/cursor-adapter.js +273 -0
  52. package/dist/cursor/cursor-adapter.js.map +1 -0
  53. package/dist/cursor/cursor-adapter.mjs +246 -0
  54. package/dist/cursor/cursor-adapter.mjs.map +1 -0
  55. package/dist/{express-DUDYpvNZ.d.mts → express-Cp4eg77F.d.mts} +1 -1
  56. package/dist/{express-BhD3mWsL.d.ts → express-DIEyq1Tz.d.ts} +1 -1
  57. package/dist/gateway/gateway.d.mts +70 -0
  58. package/dist/gateway/gateway.d.ts +70 -0
  59. package/dist/gateway/gateway.js +3726 -0
  60. package/dist/gateway/gateway.js.map +1 -0
  61. package/dist/gateway/gateway.mjs +3706 -0
  62. package/dist/gateway/gateway.mjs.map +1 -0
  63. package/dist/git-trigger/git-hooks.d.mts +69 -0
  64. package/dist/git-trigger/git-hooks.d.ts +69 -0
  65. package/dist/git-trigger/git-hooks.js +244 -0
  66. package/dist/git-trigger/git-hooks.js.map +1 -0
  67. package/dist/git-trigger/git-hooks.mjs +221 -0
  68. package/dist/git-trigger/git-hooks.mjs.map +1 -0
  69. package/dist/index-BhTbGU-o.d.mts +206 -0
  70. package/dist/index-Bhfxq9xI.d.ts +206 -0
  71. package/dist/index-CNkmHmpi.d.ts +89 -0
  72. package/dist/index-CoLebmwv.d.mts +89 -0
  73. package/dist/index.d.mts +8 -295
  74. package/dist/index.d.ts +8 -295
  75. package/dist/index.js +60 -21
  76. package/dist/index.js.map +1 -1
  77. package/dist/index.mjs +60 -21
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/local-evaluator/evaluator.d.mts +55 -0
  80. package/dist/local-evaluator/evaluator.d.ts +55 -0
  81. package/dist/local-evaluator/evaluator.js +272 -0
  82. package/dist/local-evaluator/evaluator.js.map +1 -0
  83. package/dist/local-evaluator/evaluator.mjs +244 -0
  84. package/dist/local-evaluator/evaluator.mjs.map +1 -0
  85. package/dist/{nextjs-C9FPOjSh.d.ts → nextjs-Cag7libc.d.ts} +1 -1
  86. package/dist/{nextjs-BtqyLSVQ.d.mts → nextjs-_C_FcJY5.d.mts} +1 -1
  87. package/dist/{sdk-BkVigGjF.d.ts → sdk-CMPDFUjo.d.ts} +3 -1
  88. package/dist/{sdk-xCbZgeZx.d.mts → sdk-DAJahT3p.d.mts} +3 -1
  89. package/dist/transport/index.d.mts +2 -0
  90. package/dist/transport/index.d.ts +2 -0
  91. package/dist/transport/index.js +211 -0
  92. package/dist/transport/index.js.map +1 -0
  93. package/dist/transport/index.mjs +176 -0
  94. package/dist/transport/index.mjs.map +1 -0
  95. package/dist/{types-CS6v75-d.d.mts → types-Bf8pML07.d.mts} +9 -1
  96. package/dist/{types-CS6v75-d.d.ts → types-Bf8pML07.d.ts} +9 -1
  97. package/dist/types-BvpGdsv1.d.mts +153 -0
  98. package/dist/types-Ce2mFJkO.d.ts +153 -0
  99. package/dist/ui/index.d.mts +1 -1
  100. package/dist/ui/index.d.ts +1 -1
  101. package/package.json +46 -1
@@ -1,4 +1,4 @@
1
- import { a as AccessLevel, i as TrustLevel, S as SDKOptions, b as VerificationResult } from './types-CS6v75-d.mjs';
1
+ import { a as AccessLevel, i as TrustLevel, S as SDKOptions, b as VerificationResult } from './types-Bf8pML07.mjs';
2
2
 
3
3
  /**
4
4
  * AstraSync Universal Verification Gateway - Access Level Definitions
@@ -109,6 +109,8 @@ declare class VerificationGatewayClient {
109
109
  isSubAgentRequest?: boolean;
110
110
  parentAgentId?: string;
111
111
  subAgentDepth?: number;
112
+ counterpartyUrl?: string;
113
+ counterpartyType?: string;
112
114
  }): Promise<VerificationResult>;
113
115
  /**
114
116
  * Quick verification - just check if credentials are valid
@@ -0,0 +1,2 @@
1
+ import '../types-Bf8pML07.mjs';
2
+ export { a as applyCredentials, d as detectProtocol, e as extractA2ACredentials, b as extractCredentialsFromProtocol, c as extractHttpCredentials, f as extractMcpCredentials, s as setA2AMetadata, g as setHttpHeaders, h as setMcpMeta } from '../index-CoLebmwv.mjs';
@@ -0,0 +1,2 @@
1
+ import '../types-Bf8pML07.js';
2
+ export { a as applyCredentials, d as detectProtocol, e as extractA2ACredentials, b as extractCredentialsFromProtocol, c as extractHttpCredentials, f as extractMcpCredentials, s as setA2AMetadata, g as setHttpHeaders, h as setMcpMeta } from '../index-CNkmHmpi.js';
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/transport/index.ts
21
+ var transport_exports = {};
22
+ __export(transport_exports, {
23
+ applyCredentials: () => applyCredentials,
24
+ detectProtocol: () => detectProtocol,
25
+ extractA2ACredentials: () => extractA2ACredentials,
26
+ extractCredentialsFromProtocol: () => extractCredentialsFromProtocol,
27
+ extractHttpCredentials: () => extractHttpCredentials,
28
+ extractMcpCredentials: () => extractMcpCredentials,
29
+ setA2AMetadata: () => setA2AMetadata,
30
+ setHttpHeaders: () => setHttpHeaders,
31
+ setMcpMeta: () => setMcpMeta
32
+ });
33
+ module.exports = __toCommonJS(transport_exports);
34
+
35
+ // src/transport/http.ts
36
+ var HEADER_PREFIX = "X-Astra-";
37
+ function setHttpHeaders(headers, credentials) {
38
+ const result = { ...headers };
39
+ result[`${HEADER_PREFIX}ID`] = credentials.agentId;
40
+ if (credentials.verifyUrl) {
41
+ result[`${HEADER_PREFIX}Verify`] = credentials.verifyUrl;
42
+ }
43
+ if (credentials.challengeUrl) {
44
+ result[`${HEADER_PREFIX}Challenge`] = credentials.challengeUrl;
45
+ }
46
+ if (credentials.pdlss?.purpose) {
47
+ const purposeValue = credentials.pdlss.purpose.action ? `${credentials.pdlss.purpose.category}:${credentials.pdlss.purpose.action}` : credentials.pdlss.purpose.category;
48
+ result[`${HEADER_PREFIX}Purpose`] = purposeValue;
49
+ }
50
+ if (credentials.pdlss?.duration?.maxSessionDuration) {
51
+ result[`${HEADER_PREFIX}Duration`] = String(credentials.pdlss.duration.maxSessionDuration);
52
+ }
53
+ if (credentials.pdlss?.scope?.jurisdiction) {
54
+ result[`${HEADER_PREFIX}Scope`] = credentials.pdlss.scope.jurisdiction;
55
+ }
56
+ return result;
57
+ }
58
+ function extractHttpCredentials(headers) {
59
+ const getValue = (key) => {
60
+ const v = headers[key] ?? headers[key.toLowerCase()];
61
+ return Array.isArray(v) ? v[0] : v;
62
+ };
63
+ const agentId = getValue(`${HEADER_PREFIX}ID`) ?? getValue("x-astra-id");
64
+ if (!agentId) return null;
65
+ const credentials = { agentId };
66
+ const verifyUrl = getValue(`${HEADER_PREFIX}Verify`) ?? getValue("x-astra-verify");
67
+ if (verifyUrl) credentials.verifyUrl = verifyUrl;
68
+ const challengeUrl = getValue(`${HEADER_PREFIX}Challenge`) ?? getValue("x-astra-challenge");
69
+ if (challengeUrl) credentials.challengeUrl = challengeUrl;
70
+ const purpose = getValue(`${HEADER_PREFIX}Purpose`) ?? getValue("x-astra-purpose");
71
+ if (purpose) {
72
+ const [category, action] = purpose.split(":");
73
+ credentials.pdlss = {
74
+ ...credentials.pdlss,
75
+ purpose: { category, action }
76
+ };
77
+ }
78
+ const duration = getValue(`${HEADER_PREFIX}Duration`) ?? getValue("x-astra-duration");
79
+ if (duration) {
80
+ credentials.pdlss = {
81
+ ...credentials.pdlss,
82
+ duration: { maxSessionDuration: parseInt(duration, 10) }
83
+ };
84
+ }
85
+ const scope = getValue(`${HEADER_PREFIX}Scope`) ?? getValue("x-astra-scope");
86
+ if (scope) {
87
+ credentials.pdlss = {
88
+ ...credentials.pdlss,
89
+ scope: { jurisdiction: scope }
90
+ };
91
+ }
92
+ return credentials;
93
+ }
94
+
95
+ // src/transport/a2a.ts
96
+ function setA2AMetadata(task, credentials) {
97
+ const astrasync = {
98
+ agentId: credentials.agentId
99
+ };
100
+ if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;
101
+ if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;
102
+ if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;
103
+ if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;
104
+ if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;
105
+ return {
106
+ ...task,
107
+ metadata: {
108
+ ...task.metadata,
109
+ astrasync
110
+ }
111
+ };
112
+ }
113
+ function extractA2ACredentials(task) {
114
+ const meta = task.metadata?.astrasync;
115
+ if (!meta?.agentId) return null;
116
+ const credentials = {
117
+ agentId: meta.agentId
118
+ };
119
+ if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;
120
+ if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;
121
+ if (meta.purpose || meta.duration || meta.scope) {
122
+ credentials.pdlss = {};
123
+ if (meta.purpose) credentials.pdlss.purpose = meta.purpose;
124
+ if (meta.duration) credentials.pdlss.duration = meta.duration;
125
+ if (meta.scope) credentials.pdlss.scope = meta.scope;
126
+ }
127
+ return credentials;
128
+ }
129
+
130
+ // src/transport/mcp.ts
131
+ function setMcpMeta(params, credentials) {
132
+ const astrasync = {
133
+ agentId: credentials.agentId
134
+ };
135
+ if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;
136
+ if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;
137
+ if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;
138
+ if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;
139
+ if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;
140
+ return {
141
+ ...params,
142
+ _meta: {
143
+ ...params._meta,
144
+ astrasync
145
+ }
146
+ };
147
+ }
148
+ function extractMcpCredentials(params) {
149
+ const meta = params._meta?.astrasync;
150
+ if (!meta?.agentId) return null;
151
+ const credentials = {
152
+ agentId: meta.agentId
153
+ };
154
+ if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;
155
+ if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;
156
+ if (meta.purpose || meta.duration || meta.scope) {
157
+ credentials.pdlss = {};
158
+ if (meta.purpose) credentials.pdlss.purpose = meta.purpose;
159
+ if (meta.duration) credentials.pdlss.duration = meta.duration;
160
+ if (meta.scope) credentials.pdlss.scope = meta.scope;
161
+ }
162
+ return credentials;
163
+ }
164
+
165
+ // src/transport/index.ts
166
+ function detectProtocol(context) {
167
+ if (context.metadata && typeof context.metadata === "object") {
168
+ return "a2a";
169
+ }
170
+ if (context._meta && typeof context._meta === "object") {
171
+ return "mcp";
172
+ }
173
+ return "http";
174
+ }
175
+ function applyCredentials(protocol, target, credentials) {
176
+ switch (protocol) {
177
+ case "http":
178
+ return setHttpHeaders(target, credentials);
179
+ case "a2a":
180
+ return setA2AMetadata(target, credentials);
181
+ case "mcp":
182
+ return setMcpMeta(target, credentials);
183
+ default:
184
+ return target;
185
+ }
186
+ }
187
+ function extractCredentialsFromProtocol(protocol, context) {
188
+ switch (protocol) {
189
+ case "http":
190
+ return extractHttpCredentials(context);
191
+ case "a2a":
192
+ return extractA2ACredentials(context);
193
+ case "mcp":
194
+ return extractMcpCredentials(context);
195
+ default:
196
+ return null;
197
+ }
198
+ }
199
+ // Annotate the CommonJS export names for ESM import in node:
200
+ 0 && (module.exports = {
201
+ applyCredentials,
202
+ detectProtocol,
203
+ extractA2ACredentials,
204
+ extractCredentialsFromProtocol,
205
+ extractHttpCredentials,
206
+ extractMcpCredentials,
207
+ setA2AMetadata,
208
+ setHttpHeaders,
209
+ setMcpMeta
210
+ });
211
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transport/index.ts","../../src/transport/http.ts","../../src/transport/a2a.ts","../../src/transport/mcp.ts"],"sourcesContent":["/**\n * Cross-Protocol Transport Module\n *\n * Provides adapters for injecting/extracting AstraSync credentials\n * across HTTP, A2A, and MCP protocols.\n */\n\nimport type { AstraSyncCredentials, ProtocolTransport } from '../types';\nimport { setHttpHeaders, extractHttpCredentials } from './http';\nimport { setA2AMetadata, extractA2ACredentials } from './a2a';\nimport { setMcpMeta, extractMcpCredentials } from './mcp';\n\nexport { setHttpHeaders, extractHttpCredentials } from './http';\nexport { setA2AMetadata, extractA2ACredentials } from './a2a';\nexport { setMcpMeta, extractMcpCredentials } from './mcp';\n\n/**\n * Auto-detect protocol from request/context shape.\n */\nexport function detectProtocol(context: Record<string, unknown>): ProtocolTransport {\n // A2A: has metadata block with task-like structure\n if (context.metadata && typeof context.metadata === 'object') {\n return 'a2a';\n }\n\n // MCP: has _meta block (MCP convention)\n if (context._meta && typeof context._meta === 'object') {\n return 'mcp';\n }\n\n // Default to HTTP\n return 'http';\n}\n\n/**\n * Apply credentials to any protocol target.\n */\nexport function applyCredentials(\n protocol: ProtocolTransport,\n target: Record<string, unknown>,\n credentials: AstraSyncCredentials,\n): Record<string, unknown> {\n switch (protocol) {\n case 'http':\n return setHttpHeaders(target as Record<string, string>, credentials);\n case 'a2a':\n return setA2AMetadata(target, credentials);\n case 'mcp':\n return setMcpMeta(target, credentials);\n default:\n return target;\n }\n}\n\n/**\n * Extract credentials from any protocol context.\n */\nexport function extractCredentialsFromProtocol(\n protocol: ProtocolTransport,\n context: Record<string, unknown>,\n): AstraSyncCredentials | null {\n switch (protocol) {\n case 'http':\n return extractHttpCredentials(context as Record<string, string | string[] | undefined>);\n case 'a2a':\n return extractA2ACredentials(context);\n case 'mcp':\n return extractMcpCredentials(context);\n default:\n return null;\n }\n}\n","/**\n * HTTP Transport Adapter\n *\n * Maps AstraSync credentials to/from HTTP headers (X-Astra-* convention).\n */\n\nimport type { AstraSyncCredentials } from '../types';\n\nconst HEADER_PREFIX = 'X-Astra-';\n\n/**\n * Inject AstraSync credentials into HTTP headers.\n */\nexport function setHttpHeaders(\n headers: Record<string, string>,\n credentials: AstraSyncCredentials,\n): Record<string, string> {\n const result = { ...headers };\n\n result[`${HEADER_PREFIX}ID`] = credentials.agentId;\n\n if (credentials.verifyUrl) {\n result[`${HEADER_PREFIX}Verify`] = credentials.verifyUrl;\n }\n\n if (credentials.challengeUrl) {\n result[`${HEADER_PREFIX}Challenge`] = credentials.challengeUrl;\n }\n\n if (credentials.pdlss?.purpose) {\n const purposeValue = credentials.pdlss.purpose.action\n ? `${credentials.pdlss.purpose.category}:${credentials.pdlss.purpose.action}`\n : credentials.pdlss.purpose.category;\n result[`${HEADER_PREFIX}Purpose`] = purposeValue;\n }\n\n if (credentials.pdlss?.duration?.maxSessionDuration) {\n result[`${HEADER_PREFIX}Duration`] = String(credentials.pdlss.duration.maxSessionDuration);\n }\n\n if (credentials.pdlss?.scope?.jurisdiction) {\n result[`${HEADER_PREFIX}Scope`] = credentials.pdlss.scope.jurisdiction;\n }\n\n return result;\n}\n\n/**\n * Extract AstraSync credentials from HTTP headers.\n */\nexport function extractHttpCredentials(\n headers: Record<string, string | string[] | undefined>,\n): AstraSyncCredentials | null {\n const getValue = (key: string): string | undefined => {\n const v = headers[key] ?? headers[key.toLowerCase()];\n return Array.isArray(v) ? v[0] : v;\n };\n\n const agentId = getValue(`${HEADER_PREFIX}ID`) ?? getValue('x-astra-id');\n if (!agentId) return null;\n\n const credentials: AstraSyncCredentials = { agentId };\n\n const verifyUrl = getValue(`${HEADER_PREFIX}Verify`) ?? getValue('x-astra-verify');\n if (verifyUrl) credentials.verifyUrl = verifyUrl;\n\n const challengeUrl = getValue(`${HEADER_PREFIX}Challenge`) ?? getValue('x-astra-challenge');\n if (challengeUrl) credentials.challengeUrl = challengeUrl;\n\n const purpose = getValue(`${HEADER_PREFIX}Purpose`) ?? getValue('x-astra-purpose');\n if (purpose) {\n const [category, action] = purpose.split(':');\n credentials.pdlss = {\n ...credentials.pdlss,\n purpose: { category, action },\n };\n }\n\n const duration = getValue(`${HEADER_PREFIX}Duration`) ?? getValue('x-astra-duration');\n if (duration) {\n credentials.pdlss = {\n ...credentials.pdlss,\n duration: { maxSessionDuration: parseInt(duration, 10) },\n };\n }\n\n const scope = getValue(`${HEADER_PREFIX}Scope`) ?? getValue('x-astra-scope');\n if (scope) {\n credentials.pdlss = {\n ...credentials.pdlss,\n scope: { jurisdiction: scope },\n };\n }\n\n return credentials;\n}\n","/**\n * A2A (Agent-to-Agent) Transport Adapter\n *\n * Maps AstraSync credentials to/from A2A task metadata.astrasync block.\n */\n\nimport type { AstraSyncCredentials } from '../types';\n\ninterface A2ATask {\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\ninterface AstraSyncMetadata {\n agentId: string;\n verifyUrl?: string;\n challengeUrl?: string;\n purpose?: { category: string; action?: string };\n duration?: { maxSessionDuration?: number };\n scope?: { jurisdiction?: string };\n}\n\n/**\n * Add AstraSync credentials to an A2A task's metadata block.\n */\nexport function setA2AMetadata(\n task: A2ATask,\n credentials: AstraSyncCredentials,\n): A2ATask {\n const astrasync: AstraSyncMetadata = {\n agentId: credentials.agentId,\n };\n\n if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;\n if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;\n if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;\n if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;\n if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;\n\n return {\n ...task,\n metadata: {\n ...task.metadata,\n astrasync,\n },\n };\n}\n\n/**\n * Extract AstraSync credentials from an A2A task's metadata block.\n */\nexport function extractA2ACredentials(task: A2ATask): AstraSyncCredentials | null {\n const meta = task.metadata?.astrasync as AstraSyncMetadata | undefined;\n if (!meta?.agentId) return null;\n\n const credentials: AstraSyncCredentials = {\n agentId: meta.agentId,\n };\n\n if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;\n if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;\n\n if (meta.purpose || meta.duration || meta.scope) {\n credentials.pdlss = {};\n if (meta.purpose) credentials.pdlss.purpose = meta.purpose;\n if (meta.duration) credentials.pdlss.duration = meta.duration;\n if (meta.scope) credentials.pdlss.scope = meta.scope;\n }\n\n return credentials;\n}\n","/**\n * MCP (Model Context Protocol) Transport Adapter\n *\n * Maps AstraSync credentials to/from MCP params._meta.astrasync block.\n */\n\nimport type { AstraSyncCredentials } from '../types';\n\ninterface McpParams {\n _meta?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\ninterface AstraSyncMeta {\n agentId: string;\n verifyUrl?: string;\n challengeUrl?: string;\n purpose?: { category: string; action?: string };\n duration?: { maxSessionDuration?: number };\n scope?: { jurisdiction?: string };\n}\n\n/**\n * Add AstraSync credentials to MCP params' _meta block.\n */\nexport function setMcpMeta(\n params: McpParams,\n credentials: AstraSyncCredentials,\n): McpParams {\n const astrasync: AstraSyncMeta = {\n agentId: credentials.agentId,\n };\n\n if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;\n if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;\n if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;\n if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;\n if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;\n\n return {\n ...params,\n _meta: {\n ...params._meta,\n astrasync,\n },\n };\n}\n\n/**\n * Extract AstraSync credentials from MCP params' _meta block.\n */\nexport function extractMcpCredentials(params: McpParams): AstraSyncCredentials | null {\n const meta = params._meta?.astrasync as AstraSyncMeta | undefined;\n if (!meta?.agentId) return null;\n\n const credentials: AstraSyncCredentials = {\n agentId: meta.agentId,\n };\n\n if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;\n if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;\n\n if (meta.purpose || meta.duration || meta.scope) {\n credentials.pdlss = {};\n if (meta.purpose) credentials.pdlss.purpose = meta.purpose;\n if (meta.duration) credentials.pdlss.duration = meta.duration;\n if (meta.scope) credentials.pdlss.scope = meta.scope;\n }\n\n return credentials;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACQA,IAAM,gBAAgB;AAKf,SAAS,eACd,SACA,aACwB;AACxB,QAAM,SAAS,EAAE,GAAG,QAAQ;AAE5B,SAAO,GAAG,aAAa,IAAI,IAAI,YAAY;AAE3C,MAAI,YAAY,WAAW;AACzB,WAAO,GAAG,aAAa,QAAQ,IAAI,YAAY;AAAA,EACjD;AAEA,MAAI,YAAY,cAAc;AAC5B,WAAO,GAAG,aAAa,WAAW,IAAI,YAAY;AAAA,EACpD;AAEA,MAAI,YAAY,OAAO,SAAS;AAC9B,UAAM,eAAe,YAAY,MAAM,QAAQ,SAC3C,GAAG,YAAY,MAAM,QAAQ,QAAQ,IAAI,YAAY,MAAM,QAAQ,MAAM,KACzE,YAAY,MAAM,QAAQ;AAC9B,WAAO,GAAG,aAAa,SAAS,IAAI;AAAA,EACtC;AAEA,MAAI,YAAY,OAAO,UAAU,oBAAoB;AACnD,WAAO,GAAG,aAAa,UAAU,IAAI,OAAO,YAAY,MAAM,SAAS,kBAAkB;AAAA,EAC3F;AAEA,MAAI,YAAY,OAAO,OAAO,cAAc;AAC1C,WAAO,GAAG,aAAa,OAAO,IAAI,YAAY,MAAM,MAAM;AAAA,EAC5D;AAEA,SAAO;AACT;AAKO,SAAS,uBACd,SAC6B;AAC7B,QAAM,WAAW,CAAC,QAAoC;AACpD,UAAM,IAAI,QAAQ,GAAG,KAAK,QAAQ,IAAI,YAAY,CAAC;AACnD,WAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI;AAAA,EACnC;AAEA,QAAM,UAAU,SAAS,GAAG,aAAa,IAAI,KAAK,SAAS,YAAY;AACvE,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,cAAoC,EAAE,QAAQ;AAEpD,QAAM,YAAY,SAAS,GAAG,aAAa,QAAQ,KAAK,SAAS,gBAAgB;AACjF,MAAI,UAAW,aAAY,YAAY;AAEvC,QAAM,eAAe,SAAS,GAAG,aAAa,WAAW,KAAK,SAAS,mBAAmB;AAC1F,MAAI,aAAc,aAAY,eAAe;AAE7C,QAAM,UAAU,SAAS,GAAG,aAAa,SAAS,KAAK,SAAS,iBAAiB;AACjF,MAAI,SAAS;AACX,UAAM,CAAC,UAAU,MAAM,IAAI,QAAQ,MAAM,GAAG;AAC5C,gBAAY,QAAQ;AAAA,MAClB,GAAG,YAAY;AAAA,MACf,SAAS,EAAE,UAAU,OAAO;AAAA,IAC9B;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,GAAG,aAAa,UAAU,KAAK,SAAS,kBAAkB;AACpF,MAAI,UAAU;AACZ,gBAAY,QAAQ;AAAA,MAClB,GAAG,YAAY;AAAA,MACf,UAAU,EAAE,oBAAoB,SAAS,UAAU,EAAE,EAAE;AAAA,IACzD;AAAA,EACF;AAEA,QAAM,QAAQ,SAAS,GAAG,aAAa,OAAO,KAAK,SAAS,eAAe;AAC3E,MAAI,OAAO;AACT,gBAAY,QAAQ;AAAA,MAClB,GAAG,YAAY;AAAA,MACf,OAAO,EAAE,cAAc,MAAM;AAAA,IAC/B;AAAA,EACF;AAEA,SAAO;AACT;;;ACtEO,SAAS,eACd,MACA,aACS;AACT,QAAM,YAA+B;AAAA,IACnC,SAAS,YAAY;AAAA,EACvB;AAEA,MAAI,YAAY,UAAW,WAAU,YAAY,YAAY;AAC7D,MAAI,YAAY,aAAc,WAAU,eAAe,YAAY;AACnE,MAAI,YAAY,OAAO,QAAS,WAAU,UAAU,YAAY,MAAM;AACtE,MAAI,YAAY,OAAO,SAAU,WAAU,WAAW,YAAY,MAAM;AACxE,MAAI,YAAY,OAAO,MAAO,WAAU,QAAQ,YAAY,MAAM;AAElE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,KAAK;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAKO,SAAS,sBAAsB,MAA4C;AAChF,QAAM,OAAO,KAAK,UAAU;AAC5B,MAAI,CAAC,MAAM,QAAS,QAAO;AAE3B,QAAM,cAAoC;AAAA,IACxC,SAAS,KAAK;AAAA,EAChB;AAEA,MAAI,KAAK,UAAW,aAAY,YAAY,KAAK;AACjD,MAAI,KAAK,aAAc,aAAY,eAAe,KAAK;AAEvD,MAAI,KAAK,WAAW,KAAK,YAAY,KAAK,OAAO;AAC/C,gBAAY,QAAQ,CAAC;AACrB,QAAI,KAAK,QAAS,aAAY,MAAM,UAAU,KAAK;AACnD,QAAI,KAAK,SAAU,aAAY,MAAM,WAAW,KAAK;AACrD,QAAI,KAAK,MAAO,aAAY,MAAM,QAAQ,KAAK;AAAA,EACjD;AAEA,SAAO;AACT;;;AC7CO,SAAS,WACd,QACA,aACW;AACX,QAAM,YAA2B;AAAA,IAC/B,SAAS,YAAY;AAAA,EACvB;AAEA,MAAI,YAAY,UAAW,WAAU,YAAY,YAAY;AAC7D,MAAI,YAAY,aAAc,WAAU,eAAe,YAAY;AACnE,MAAI,YAAY,OAAO,QAAS,WAAU,UAAU,YAAY,MAAM;AACtE,MAAI,YAAY,OAAO,SAAU,WAAU,WAAW,YAAY,MAAM;AACxE,MAAI,YAAY,OAAO,MAAO,WAAU,QAAQ,YAAY,MAAM;AAElE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAKO,SAAS,sBAAsB,QAAgD;AACpF,QAAM,OAAO,OAAO,OAAO;AAC3B,MAAI,CAAC,MAAM,QAAS,QAAO;AAE3B,QAAM,cAAoC;AAAA,IACxC,SAAS,KAAK;AAAA,EAChB;AAEA,MAAI,KAAK,UAAW,aAAY,YAAY,KAAK;AACjD,MAAI,KAAK,aAAc,aAAY,eAAe,KAAK;AAEvD,MAAI,KAAK,WAAW,KAAK,YAAY,KAAK,OAAO;AAC/C,gBAAY,QAAQ,CAAC;AACrB,QAAI,KAAK,QAAS,aAAY,MAAM,UAAU,KAAK;AACnD,QAAI,KAAK,SAAU,aAAY,MAAM,WAAW,KAAK;AACrD,QAAI,KAAK,MAAO,aAAY,MAAM,QAAQ,KAAK;AAAA,EACjD;AAEA,SAAO;AACT;;;AHnDO,SAAS,eAAe,SAAqD;AAElF,MAAI,QAAQ,YAAY,OAAO,QAAQ,aAAa,UAAU;AAC5D,WAAO;AAAA,EACT;AAGA,MAAI,QAAQ,SAAS,OAAO,QAAQ,UAAU,UAAU;AACtD,WAAO;AAAA,EACT;AAGA,SAAO;AACT;AAKO,SAAS,iBACd,UACA,QACA,aACyB;AACzB,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,eAAe,QAAkC,WAAW;AAAA,IACrE,KAAK;AACH,aAAO,eAAe,QAAQ,WAAW;AAAA,IAC3C,KAAK;AACH,aAAO,WAAW,QAAQ,WAAW;AAAA,IACvC;AACE,aAAO;AAAA,EACX;AACF;AAKO,SAAS,+BACd,UACA,SAC6B;AAC7B,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,uBAAuB,OAAwD;AAAA,IACxF,KAAK;AACH,aAAO,sBAAsB,OAAO;AAAA,IACtC,KAAK;AACH,aAAO,sBAAsB,OAAO;AAAA,IACtC;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
@@ -0,0 +1,176 @@
1
+ // src/transport/http.ts
2
+ var HEADER_PREFIX = "X-Astra-";
3
+ function setHttpHeaders(headers, credentials) {
4
+ const result = { ...headers };
5
+ result[`${HEADER_PREFIX}ID`] = credentials.agentId;
6
+ if (credentials.verifyUrl) {
7
+ result[`${HEADER_PREFIX}Verify`] = credentials.verifyUrl;
8
+ }
9
+ if (credentials.challengeUrl) {
10
+ result[`${HEADER_PREFIX}Challenge`] = credentials.challengeUrl;
11
+ }
12
+ if (credentials.pdlss?.purpose) {
13
+ const purposeValue = credentials.pdlss.purpose.action ? `${credentials.pdlss.purpose.category}:${credentials.pdlss.purpose.action}` : credentials.pdlss.purpose.category;
14
+ result[`${HEADER_PREFIX}Purpose`] = purposeValue;
15
+ }
16
+ if (credentials.pdlss?.duration?.maxSessionDuration) {
17
+ result[`${HEADER_PREFIX}Duration`] = String(credentials.pdlss.duration.maxSessionDuration);
18
+ }
19
+ if (credentials.pdlss?.scope?.jurisdiction) {
20
+ result[`${HEADER_PREFIX}Scope`] = credentials.pdlss.scope.jurisdiction;
21
+ }
22
+ return result;
23
+ }
24
+ function extractHttpCredentials(headers) {
25
+ const getValue = (key) => {
26
+ const v = headers[key] ?? headers[key.toLowerCase()];
27
+ return Array.isArray(v) ? v[0] : v;
28
+ };
29
+ const agentId = getValue(`${HEADER_PREFIX}ID`) ?? getValue("x-astra-id");
30
+ if (!agentId) return null;
31
+ const credentials = { agentId };
32
+ const verifyUrl = getValue(`${HEADER_PREFIX}Verify`) ?? getValue("x-astra-verify");
33
+ if (verifyUrl) credentials.verifyUrl = verifyUrl;
34
+ const challengeUrl = getValue(`${HEADER_PREFIX}Challenge`) ?? getValue("x-astra-challenge");
35
+ if (challengeUrl) credentials.challengeUrl = challengeUrl;
36
+ const purpose = getValue(`${HEADER_PREFIX}Purpose`) ?? getValue("x-astra-purpose");
37
+ if (purpose) {
38
+ const [category, action] = purpose.split(":");
39
+ credentials.pdlss = {
40
+ ...credentials.pdlss,
41
+ purpose: { category, action }
42
+ };
43
+ }
44
+ const duration = getValue(`${HEADER_PREFIX}Duration`) ?? getValue("x-astra-duration");
45
+ if (duration) {
46
+ credentials.pdlss = {
47
+ ...credentials.pdlss,
48
+ duration: { maxSessionDuration: parseInt(duration, 10) }
49
+ };
50
+ }
51
+ const scope = getValue(`${HEADER_PREFIX}Scope`) ?? getValue("x-astra-scope");
52
+ if (scope) {
53
+ credentials.pdlss = {
54
+ ...credentials.pdlss,
55
+ scope: { jurisdiction: scope }
56
+ };
57
+ }
58
+ return credentials;
59
+ }
60
+
61
+ // src/transport/a2a.ts
62
+ function setA2AMetadata(task, credentials) {
63
+ const astrasync = {
64
+ agentId: credentials.agentId
65
+ };
66
+ if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;
67
+ if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;
68
+ if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;
69
+ if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;
70
+ if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;
71
+ return {
72
+ ...task,
73
+ metadata: {
74
+ ...task.metadata,
75
+ astrasync
76
+ }
77
+ };
78
+ }
79
+ function extractA2ACredentials(task) {
80
+ const meta = task.metadata?.astrasync;
81
+ if (!meta?.agentId) return null;
82
+ const credentials = {
83
+ agentId: meta.agentId
84
+ };
85
+ if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;
86
+ if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;
87
+ if (meta.purpose || meta.duration || meta.scope) {
88
+ credentials.pdlss = {};
89
+ if (meta.purpose) credentials.pdlss.purpose = meta.purpose;
90
+ if (meta.duration) credentials.pdlss.duration = meta.duration;
91
+ if (meta.scope) credentials.pdlss.scope = meta.scope;
92
+ }
93
+ return credentials;
94
+ }
95
+
96
+ // src/transport/mcp.ts
97
+ function setMcpMeta(params, credentials) {
98
+ const astrasync = {
99
+ agentId: credentials.agentId
100
+ };
101
+ if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;
102
+ if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;
103
+ if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;
104
+ if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;
105
+ if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;
106
+ return {
107
+ ...params,
108
+ _meta: {
109
+ ...params._meta,
110
+ astrasync
111
+ }
112
+ };
113
+ }
114
+ function extractMcpCredentials(params) {
115
+ const meta = params._meta?.astrasync;
116
+ if (!meta?.agentId) return null;
117
+ const credentials = {
118
+ agentId: meta.agentId
119
+ };
120
+ if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;
121
+ if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;
122
+ if (meta.purpose || meta.duration || meta.scope) {
123
+ credentials.pdlss = {};
124
+ if (meta.purpose) credentials.pdlss.purpose = meta.purpose;
125
+ if (meta.duration) credentials.pdlss.duration = meta.duration;
126
+ if (meta.scope) credentials.pdlss.scope = meta.scope;
127
+ }
128
+ return credentials;
129
+ }
130
+
131
+ // src/transport/index.ts
132
+ function detectProtocol(context) {
133
+ if (context.metadata && typeof context.metadata === "object") {
134
+ return "a2a";
135
+ }
136
+ if (context._meta && typeof context._meta === "object") {
137
+ return "mcp";
138
+ }
139
+ return "http";
140
+ }
141
+ function applyCredentials(protocol, target, credentials) {
142
+ switch (protocol) {
143
+ case "http":
144
+ return setHttpHeaders(target, credentials);
145
+ case "a2a":
146
+ return setA2AMetadata(target, credentials);
147
+ case "mcp":
148
+ return setMcpMeta(target, credentials);
149
+ default:
150
+ return target;
151
+ }
152
+ }
153
+ function extractCredentialsFromProtocol(protocol, context) {
154
+ switch (protocol) {
155
+ case "http":
156
+ return extractHttpCredentials(context);
157
+ case "a2a":
158
+ return extractA2ACredentials(context);
159
+ case "mcp":
160
+ return extractMcpCredentials(context);
161
+ default:
162
+ return null;
163
+ }
164
+ }
165
+ export {
166
+ applyCredentials,
167
+ detectProtocol,
168
+ extractA2ACredentials,
169
+ extractCredentialsFromProtocol,
170
+ extractHttpCredentials,
171
+ extractMcpCredentials,
172
+ setA2AMetadata,
173
+ setHttpHeaders,
174
+ setMcpMeta
175
+ };
176
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transport/http.ts","../../src/transport/a2a.ts","../../src/transport/mcp.ts","../../src/transport/index.ts"],"sourcesContent":["/**\n * HTTP Transport Adapter\n *\n * Maps AstraSync credentials to/from HTTP headers (X-Astra-* convention).\n */\n\nimport type { AstraSyncCredentials } from '../types';\n\nconst HEADER_PREFIX = 'X-Astra-';\n\n/**\n * Inject AstraSync credentials into HTTP headers.\n */\nexport function setHttpHeaders(\n headers: Record<string, string>,\n credentials: AstraSyncCredentials,\n): Record<string, string> {\n const result = { ...headers };\n\n result[`${HEADER_PREFIX}ID`] = credentials.agentId;\n\n if (credentials.verifyUrl) {\n result[`${HEADER_PREFIX}Verify`] = credentials.verifyUrl;\n }\n\n if (credentials.challengeUrl) {\n result[`${HEADER_PREFIX}Challenge`] = credentials.challengeUrl;\n }\n\n if (credentials.pdlss?.purpose) {\n const purposeValue = credentials.pdlss.purpose.action\n ? `${credentials.pdlss.purpose.category}:${credentials.pdlss.purpose.action}`\n : credentials.pdlss.purpose.category;\n result[`${HEADER_PREFIX}Purpose`] = purposeValue;\n }\n\n if (credentials.pdlss?.duration?.maxSessionDuration) {\n result[`${HEADER_PREFIX}Duration`] = String(credentials.pdlss.duration.maxSessionDuration);\n }\n\n if (credentials.pdlss?.scope?.jurisdiction) {\n result[`${HEADER_PREFIX}Scope`] = credentials.pdlss.scope.jurisdiction;\n }\n\n return result;\n}\n\n/**\n * Extract AstraSync credentials from HTTP headers.\n */\nexport function extractHttpCredentials(\n headers: Record<string, string | string[] | undefined>,\n): AstraSyncCredentials | null {\n const getValue = (key: string): string | undefined => {\n const v = headers[key] ?? headers[key.toLowerCase()];\n return Array.isArray(v) ? v[0] : v;\n };\n\n const agentId = getValue(`${HEADER_PREFIX}ID`) ?? getValue('x-astra-id');\n if (!agentId) return null;\n\n const credentials: AstraSyncCredentials = { agentId };\n\n const verifyUrl = getValue(`${HEADER_PREFIX}Verify`) ?? getValue('x-astra-verify');\n if (verifyUrl) credentials.verifyUrl = verifyUrl;\n\n const challengeUrl = getValue(`${HEADER_PREFIX}Challenge`) ?? getValue('x-astra-challenge');\n if (challengeUrl) credentials.challengeUrl = challengeUrl;\n\n const purpose = getValue(`${HEADER_PREFIX}Purpose`) ?? getValue('x-astra-purpose');\n if (purpose) {\n const [category, action] = purpose.split(':');\n credentials.pdlss = {\n ...credentials.pdlss,\n purpose: { category, action },\n };\n }\n\n const duration = getValue(`${HEADER_PREFIX}Duration`) ?? getValue('x-astra-duration');\n if (duration) {\n credentials.pdlss = {\n ...credentials.pdlss,\n duration: { maxSessionDuration: parseInt(duration, 10) },\n };\n }\n\n const scope = getValue(`${HEADER_PREFIX}Scope`) ?? getValue('x-astra-scope');\n if (scope) {\n credentials.pdlss = {\n ...credentials.pdlss,\n scope: { jurisdiction: scope },\n };\n }\n\n return credentials;\n}\n","/**\n * A2A (Agent-to-Agent) Transport Adapter\n *\n * Maps AstraSync credentials to/from A2A task metadata.astrasync block.\n */\n\nimport type { AstraSyncCredentials } from '../types';\n\ninterface A2ATask {\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\ninterface AstraSyncMetadata {\n agentId: string;\n verifyUrl?: string;\n challengeUrl?: string;\n purpose?: { category: string; action?: string };\n duration?: { maxSessionDuration?: number };\n scope?: { jurisdiction?: string };\n}\n\n/**\n * Add AstraSync credentials to an A2A task's metadata block.\n */\nexport function setA2AMetadata(\n task: A2ATask,\n credentials: AstraSyncCredentials,\n): A2ATask {\n const astrasync: AstraSyncMetadata = {\n agentId: credentials.agentId,\n };\n\n if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;\n if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;\n if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;\n if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;\n if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;\n\n return {\n ...task,\n metadata: {\n ...task.metadata,\n astrasync,\n },\n };\n}\n\n/**\n * Extract AstraSync credentials from an A2A task's metadata block.\n */\nexport function extractA2ACredentials(task: A2ATask): AstraSyncCredentials | null {\n const meta = task.metadata?.astrasync as AstraSyncMetadata | undefined;\n if (!meta?.agentId) return null;\n\n const credentials: AstraSyncCredentials = {\n agentId: meta.agentId,\n };\n\n if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;\n if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;\n\n if (meta.purpose || meta.duration || meta.scope) {\n credentials.pdlss = {};\n if (meta.purpose) credentials.pdlss.purpose = meta.purpose;\n if (meta.duration) credentials.pdlss.duration = meta.duration;\n if (meta.scope) credentials.pdlss.scope = meta.scope;\n }\n\n return credentials;\n}\n","/**\n * MCP (Model Context Protocol) Transport Adapter\n *\n * Maps AstraSync credentials to/from MCP params._meta.astrasync block.\n */\n\nimport type { AstraSyncCredentials } from '../types';\n\ninterface McpParams {\n _meta?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\ninterface AstraSyncMeta {\n agentId: string;\n verifyUrl?: string;\n challengeUrl?: string;\n purpose?: { category: string; action?: string };\n duration?: { maxSessionDuration?: number };\n scope?: { jurisdiction?: string };\n}\n\n/**\n * Add AstraSync credentials to MCP params' _meta block.\n */\nexport function setMcpMeta(\n params: McpParams,\n credentials: AstraSyncCredentials,\n): McpParams {\n const astrasync: AstraSyncMeta = {\n agentId: credentials.agentId,\n };\n\n if (credentials.verifyUrl) astrasync.verifyUrl = credentials.verifyUrl;\n if (credentials.challengeUrl) astrasync.challengeUrl = credentials.challengeUrl;\n if (credentials.pdlss?.purpose) astrasync.purpose = credentials.pdlss.purpose;\n if (credentials.pdlss?.duration) astrasync.duration = credentials.pdlss.duration;\n if (credentials.pdlss?.scope) astrasync.scope = credentials.pdlss.scope;\n\n return {\n ...params,\n _meta: {\n ...params._meta,\n astrasync,\n },\n };\n}\n\n/**\n * Extract AstraSync credentials from MCP params' _meta block.\n */\nexport function extractMcpCredentials(params: McpParams): AstraSyncCredentials | null {\n const meta = params._meta?.astrasync as AstraSyncMeta | undefined;\n if (!meta?.agentId) return null;\n\n const credentials: AstraSyncCredentials = {\n agentId: meta.agentId,\n };\n\n if (meta.verifyUrl) credentials.verifyUrl = meta.verifyUrl;\n if (meta.challengeUrl) credentials.challengeUrl = meta.challengeUrl;\n\n if (meta.purpose || meta.duration || meta.scope) {\n credentials.pdlss = {};\n if (meta.purpose) credentials.pdlss.purpose = meta.purpose;\n if (meta.duration) credentials.pdlss.duration = meta.duration;\n if (meta.scope) credentials.pdlss.scope = meta.scope;\n }\n\n return credentials;\n}\n","/**\n * Cross-Protocol Transport Module\n *\n * Provides adapters for injecting/extracting AstraSync credentials\n * across HTTP, A2A, and MCP protocols.\n */\n\nimport type { AstraSyncCredentials, ProtocolTransport } from '../types';\nimport { setHttpHeaders, extractHttpCredentials } from './http';\nimport { setA2AMetadata, extractA2ACredentials } from './a2a';\nimport { setMcpMeta, extractMcpCredentials } from './mcp';\n\nexport { setHttpHeaders, extractHttpCredentials } from './http';\nexport { setA2AMetadata, extractA2ACredentials } from './a2a';\nexport { setMcpMeta, extractMcpCredentials } from './mcp';\n\n/**\n * Auto-detect protocol from request/context shape.\n */\nexport function detectProtocol(context: Record<string, unknown>): ProtocolTransport {\n // A2A: has metadata block with task-like structure\n if (context.metadata && typeof context.metadata === 'object') {\n return 'a2a';\n }\n\n // MCP: has _meta block (MCP convention)\n if (context._meta && typeof context._meta === 'object') {\n return 'mcp';\n }\n\n // Default to HTTP\n return 'http';\n}\n\n/**\n * Apply credentials to any protocol target.\n */\nexport function applyCredentials(\n protocol: ProtocolTransport,\n target: Record<string, unknown>,\n credentials: AstraSyncCredentials,\n): Record<string, unknown> {\n switch (protocol) {\n case 'http':\n return setHttpHeaders(target as Record<string, string>, credentials);\n case 'a2a':\n return setA2AMetadata(target, credentials);\n case 'mcp':\n return setMcpMeta(target, credentials);\n default:\n return target;\n }\n}\n\n/**\n * Extract credentials from any protocol context.\n */\nexport function extractCredentialsFromProtocol(\n protocol: ProtocolTransport,\n context: Record<string, unknown>,\n): AstraSyncCredentials | null {\n switch (protocol) {\n case 'http':\n return extractHttpCredentials(context as Record<string, string | string[] | undefined>);\n case 'a2a':\n return extractA2ACredentials(context);\n case 'mcp':\n return extractMcpCredentials(context);\n default:\n return null;\n }\n}\n"],"mappings":"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","names":[]}
@@ -54,6 +54,10 @@ interface GatewayConfig {
54
54
  debug?: boolean;
55
55
  /** Custom headers to send with verification requests */
56
56
  customHeaders?: Record<string, string>;
57
+ /** This counterparty's URL (sent with verify-access requests for analytics) */
58
+ counterpartyUrl?: string;
59
+ /** This counterparty's type (sent with verify-access requests for analytics) */
60
+ counterpartyType?: CounterpartyType;
57
61
  }
58
62
  /**
59
63
  * Verified agent information
@@ -202,6 +206,8 @@ interface VerificationRequest {
202
206
  createSession?: boolean;
203
207
  /** Counterparty type */
204
208
  counterpartyType?: CounterpartyType;
209
+ /** Counterparty URL */
210
+ counterpartyUrl?: string;
205
211
  /** Runtime challenge options */
206
212
  runtimeChallengeOptions?: {
207
213
  timeoutOverride?: number;
@@ -236,6 +242,8 @@ interface ExpressMiddlewareOptions extends GatewayConfig {
236
242
  skipPaths?: string[];
237
243
  /** Custom response for denied requests */
238
244
  onDenied?: (result: VerificationResult, req: unknown, res: unknown) => void;
245
+ /** Automatically create sessions and record grant/deny decisions (default: true) */
246
+ recordDecisions?: boolean;
239
247
  }
240
248
  /**
241
249
  * Next.js middleware options
@@ -356,4 +364,4 @@ interface CommerceShieldProps {
356
364
  className?: string;
357
365
  }
358
366
 
359
- export type { AgentCredentials as A, CommerceShieldProps as C, EnhancedVerificationResult as E, GatewayConfig as G, NextJsMiddlewareOptions as N, ProtocolTransport as P, RouteAccessConfig as R, SDKOptions as S, TokenGuidance as T, VerificationRequest as V, AccessLevel as a, VerificationResult as b, AstraSyncCredentials as c, CounterpartyType as d, ExpressMiddlewareOptions as e, GuidanceInfo as f, PDLSSInfo as g, RuntimeChallengeResult as h, TrustLevel as i, VerifiedAgent as j, VerifiedDeveloper as k, VerifiedOrganization as l };
367
+ export type { AgentCredentials as A, CommerceShieldProps as C, EnhancedVerificationResult as E, GatewayConfig as G, NextJsMiddlewareOptions as N, PDLSSInfo as P, RouteAccessConfig as R, SDKOptions as S, TokenGuidance as T, VerificationRequest as V, AccessLevel as a, VerificationResult as b, AstraSyncCredentials as c, CounterpartyType as d, ExpressMiddlewareOptions as e, GuidanceInfo as f, ProtocolTransport as g, RuntimeChallengeResult as h, TrustLevel as i, VerifiedAgent as j, VerifiedDeveloper as k, VerifiedOrganization as l };
@@ -54,6 +54,10 @@ interface GatewayConfig {
54
54
  debug?: boolean;
55
55
  /** Custom headers to send with verification requests */
56
56
  customHeaders?: Record<string, string>;
57
+ /** This counterparty's URL (sent with verify-access requests for analytics) */
58
+ counterpartyUrl?: string;
59
+ /** This counterparty's type (sent with verify-access requests for analytics) */
60
+ counterpartyType?: CounterpartyType;
57
61
  }
58
62
  /**
59
63
  * Verified agent information
@@ -202,6 +206,8 @@ interface VerificationRequest {
202
206
  createSession?: boolean;
203
207
  /** Counterparty type */
204
208
  counterpartyType?: CounterpartyType;
209
+ /** Counterparty URL */
210
+ counterpartyUrl?: string;
205
211
  /** Runtime challenge options */
206
212
  runtimeChallengeOptions?: {
207
213
  timeoutOverride?: number;
@@ -236,6 +242,8 @@ interface ExpressMiddlewareOptions extends GatewayConfig {
236
242
  skipPaths?: string[];
237
243
  /** Custom response for denied requests */
238
244
  onDenied?: (result: VerificationResult, req: unknown, res: unknown) => void;
245
+ /** Automatically create sessions and record grant/deny decisions (default: true) */
246
+ recordDecisions?: boolean;
239
247
  }
240
248
  /**
241
249
  * Next.js middleware options
@@ -356,4 +364,4 @@ interface CommerceShieldProps {
356
364
  className?: string;
357
365
  }
358
366
 
359
- export type { AgentCredentials as A, CommerceShieldProps as C, EnhancedVerificationResult as E, GatewayConfig as G, NextJsMiddlewareOptions as N, ProtocolTransport as P, RouteAccessConfig as R, SDKOptions as S, TokenGuidance as T, VerificationRequest as V, AccessLevel as a, VerificationResult as b, AstraSyncCredentials as c, CounterpartyType as d, ExpressMiddlewareOptions as e, GuidanceInfo as f, PDLSSInfo as g, RuntimeChallengeResult as h, TrustLevel as i, VerifiedAgent as j, VerifiedDeveloper as k, VerifiedOrganization as l };
367
+ export type { AgentCredentials as A, CommerceShieldProps as C, EnhancedVerificationResult as E, GatewayConfig as G, NextJsMiddlewareOptions as N, PDLSSInfo as P, RouteAccessConfig as R, SDKOptions as S, TokenGuidance as T, VerificationRequest as V, AccessLevel as a, VerificationResult as b, AstraSyncCredentials as c, CounterpartyType as d, ExpressMiddlewareOptions as e, GuidanceInfo as f, ProtocolTransport as g, RuntimeChallengeResult as h, TrustLevel as i, VerifiedAgent as j, VerifiedDeveloper as k, VerifiedOrganization as l };