@adcp/client 3.0.3 → 3.2.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 (72) hide show
  1. package/README.md +3 -0
  2. package/dist/lib/agents/index.generated.d.ts +27 -50
  3. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  4. package/dist/lib/agents/index.generated.js +12 -24
  5. package/dist/lib/agents/index.generated.js.map +1 -1
  6. package/dist/lib/auth/index.d.ts +8 -3
  7. package/dist/lib/auth/index.d.ts.map +1 -1
  8. package/dist/lib/auth/index.js +32 -6
  9. package/dist/lib/auth/index.js.map +1 -1
  10. package/dist/lib/core/ADCPMultiAgentClient.d.ts +150 -41
  11. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  12. package/dist/lib/core/ADCPMultiAgentClient.js +150 -41
  13. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  14. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  15. package/dist/lib/core/ConfigurationManager.d.ts.map +1 -1
  16. package/dist/lib/core/ConfigurationManager.js +14 -1
  17. package/dist/lib/core/ConfigurationManager.js.map +1 -1
  18. package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
  19. package/dist/lib/core/CreativeAgentClient.js +6 -1
  20. package/dist/lib/core/CreativeAgentClient.js.map +1 -1
  21. package/dist/lib/core/ResponseValidator.d.ts.map +1 -1
  22. package/dist/lib/core/ResponseValidator.js +5 -6
  23. package/dist/lib/core/ResponseValidator.js.map +1 -1
  24. package/dist/lib/core/SingleAgentClient.d.ts +6 -0
  25. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  26. package/dist/lib/core/SingleAgentClient.js +15 -7
  27. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  28. package/dist/lib/core/TaskExecutor.d.ts +1 -1
  29. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  30. package/dist/lib/core/TaskExecutor.js +60 -61
  31. package/dist/lib/core/TaskExecutor.js.map +1 -1
  32. package/dist/lib/index.d.ts +30 -15
  33. package/dist/lib/index.d.ts.map +1 -1
  34. package/dist/lib/index.js +86 -26
  35. package/dist/lib/index.js.map +1 -1
  36. package/dist/lib/protocols/a2a.d.ts +2 -1
  37. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  38. package/dist/lib/protocols/a2a.js +12 -4
  39. package/dist/lib/protocols/a2a.js.map +1 -1
  40. package/dist/lib/protocols/index.d.ts +12 -1
  41. package/dist/lib/protocols/index.d.ts.map +1 -1
  42. package/dist/lib/protocols/index.js +29 -14
  43. package/dist/lib/protocols/index.js.map +1 -1
  44. package/dist/lib/types/adcp.d.ts +3 -58
  45. package/dist/lib/types/adcp.d.ts.map +1 -1
  46. package/dist/lib/types/core.generated.d.ts +268 -211
  47. package/dist/lib/types/core.generated.d.ts.map +1 -1
  48. package/dist/lib/types/core.generated.js +2 -2
  49. package/dist/lib/types/schemas.generated.d.ts +3191 -2687
  50. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  51. package/dist/lib/types/schemas.generated.js +562 -480
  52. package/dist/lib/types/schemas.generated.js.map +1 -1
  53. package/dist/lib/types/tools.generated.d.ts +790 -654
  54. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  55. package/dist/lib/types/tools.generated.js +1 -1
  56. package/dist/lib/types/tools.generated.js.map +1 -1
  57. package/dist/lib/utils/index.d.ts +3 -0
  58. package/dist/lib/utils/index.d.ts.map +1 -1
  59. package/dist/lib/utils/index.js +10 -1
  60. package/dist/lib/utils/index.js.map +1 -1
  61. package/dist/lib/utils/preview-utils.d.ts.map +1 -1
  62. package/dist/lib/utils/preview-utils.js +2 -0
  63. package/dist/lib/utils/preview-utils.js.map +1 -1
  64. package/dist/lib/utils/response-unwrapper.d.ts +36 -0
  65. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -0
  66. package/dist/lib/utils/response-unwrapper.js +331 -0
  67. package/dist/lib/utils/response-unwrapper.js.map +1 -0
  68. package/dist/lib/version.d.ts +13 -5
  69. package/dist/lib/version.d.ts.map +1 -1
  70. package/dist/lib/version.js +19 -5
  71. package/dist/lib/version.js.map +1 -1
  72. package/package.json +6 -7
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ /**
3
+ * Response Unwrapper
4
+ *
5
+ * Extracts raw AdCP responses from protocol wrappers (MCP/A2A).
6
+ * Follows canonical A2A response format per AdCP specification.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.unwrapProtocolResponse = unwrapProtocolResponse;
43
+ exports.isAdcpError = isAdcpError;
44
+ exports.isAdcpSuccess = isAdcpSuccess;
45
+ const zod_1 = require("zod");
46
+ /**
47
+ * Standard error codes for response unwrapping
48
+ */
49
+ const ERROR_CODES = {
50
+ MCP_ERROR: 'mcp_error',
51
+ INVALID_RESPONSE: 'invalid_response',
52
+ UNKNOWN: 'unknown',
53
+ };
54
+ const schemas = __importStar(require("../types/schemas.generated"));
55
+ /**
56
+ * Map of AdCP tool names to their Zod response schemas
57
+ *
58
+ * TYPE SAFETY TRADE-OFF ANALYSIS:
59
+ *
60
+ * Current approach: All schemas cast to `z.ZodSchema<AdCPResponse>` (union type)
61
+ *
62
+ * Why we keep this approach:
63
+ * 1. Simplicity - Single map type is easy to maintain and extend
64
+ * 2. Runtime validation - Zod schemas provide full validation regardless of type
65
+ * 3. Return type accuracy - unwrapProtocolResponse returns `AdCPResponse` union anyway
66
+ * 4. Minimal type loss - The specific schema validates correctly at runtime
67
+ *
68
+ * Alternative considered (function overloads):
69
+ * ```typescript
70
+ * function unwrapProtocolResponse(response: any, toolName: 'get_products'): GetProductsResponse;
71
+ * function unwrapProtocolResponse(response: any, toolName: 'create_media_buy'): CreateMediaBuyResponse;
72
+ * // ... 13 overloads total
73
+ * ```
74
+ *
75
+ * Why we don't use overloads:
76
+ * 1. High maintenance burden - 13+ overload signatures to maintain
77
+ * 2. Fragile - Easy to forget updating overloads when adding tools
78
+ * 3. Limited benefit - Caller still needs type guards to narrow union
79
+ * 4. Optional toolName - toolName parameter is optional, overloads don't help
80
+ *
81
+ * Alternative considered (mapped types):
82
+ * ```typescript
83
+ * type ToolSchemaMap = {
84
+ * [K in keyof typeof TOOL_RESPONSE_SCHEMAS]: z.ZodSchema<Extract<AdCPResponse, { ... }>>
85
+ * }
86
+ * ```
87
+ *
88
+ * Why we don't use mapped types:
89
+ * 1. Complexity - Requires discriminated union detection logic
90
+ * 2. Fragile - AdCP responses don't all have discriminator fields
91
+ * 3. Minimal benefit - Still returns union type, needs type guards at call site
92
+ *
93
+ * Conclusion: Current approach provides best balance of simplicity, maintainability,
94
+ * and runtime safety. TypeScript types are validated by Zod at runtime anyway.
95
+ */
96
+ const TOOL_RESPONSE_SCHEMAS = {
97
+ get_products: schemas.GetProductsResponseSchema,
98
+ list_creative_formats: schemas.ListCreativeFormatsResponseSchema,
99
+ create_media_buy: schemas.CreateMediaBuyResponseSchema,
100
+ update_media_buy: schemas.UpdateMediaBuyResponseSchema,
101
+ sync_creatives: schemas.SyncCreativesResponseSchema, // Manually defined discriminated union
102
+ list_creatives: schemas.ListCreativesResponseSchema,
103
+ get_media_buy_delivery: schemas.GetMediaBuyDeliveryResponseSchema,
104
+ list_authorized_properties: schemas.ListAuthorizedPropertiesResponseSchema,
105
+ provide_performance_feedback: schemas.ProvidePerformanceFeedbackResponseSchema,
106
+ build_creative: schemas.BuildCreativeResponseSchema,
107
+ preview_creative: schemas.PreviewCreativeResponseSchema, // Manually defined discriminated union
108
+ get_signals: schemas.GetSignalsResponseSchema,
109
+ activate_signal: schemas.ActivateSignalResponseSchema,
110
+ };
111
+ /**
112
+ * Extract raw AdCP response from protocol wrapper
113
+ *
114
+ * @param protocolResponse - Raw response from MCP or A2A protocol
115
+ * @param toolName - Optional AdCP tool name for validation
116
+ * @param protocol - Protocol type ('mcp' or 'a2a'), if known. If not provided, will auto-detect.
117
+ * @returns Raw AdCP response data matching schema exactly
118
+ * @throws {Error} If response doesn't match expected schema for the tool
119
+ */
120
+ function unwrapProtocolResponse(protocolResponse, toolName, protocol) {
121
+ if (!protocolResponse) {
122
+ throw new Error('Protocol response is null or undefined');
123
+ }
124
+ // Extract response from protocol wrapper
125
+ let unwrapped;
126
+ if (protocol === 'mcp') {
127
+ unwrapped = unwrapMCPResponse(protocolResponse);
128
+ }
129
+ else if (protocol === 'a2a') {
130
+ unwrapped = unwrapA2AResponse(protocolResponse);
131
+ }
132
+ else {
133
+ // Auto-detect protocol if not specified
134
+ if (isMCPResponse(protocolResponse)) {
135
+ unwrapped = unwrapMCPResponse(protocolResponse);
136
+ }
137
+ else if (isA2AResponse(protocolResponse)) {
138
+ unwrapped = unwrapA2AResponse(protocolResponse);
139
+ }
140
+ else {
141
+ throw new Error('Unable to extract AdCP response from protocol wrapper');
142
+ }
143
+ }
144
+ // Validate response against schema if tool name provided
145
+ if (toolName) {
146
+ const schema = TOOL_RESPONSE_SCHEMAS[toolName];
147
+ if (schema) {
148
+ // Create wrapper schema that preserves protocol metadata
149
+ // We use z.intersection to combine the validated response with optional _message field
150
+ const wrapperSchema = zod_1.z.intersection(schema, zod_1.z.object({ _message: zod_1.z.string().optional() }));
151
+ const result = wrapperSchema.safeParse(unwrapped);
152
+ if (!result.success) {
153
+ throw new Error(`Response validation failed for ${toolName}: ${result.error.message}`);
154
+ }
155
+ return result.data;
156
+ }
157
+ }
158
+ // Return unwrapped response (no validation)
159
+ return unwrapped;
160
+ }
161
+ /**
162
+ * Check if response is MCP format
163
+ */
164
+ function isMCPResponse(response) {
165
+ return 'structuredContent' in response || 'isError' in response || 'content' in response;
166
+ }
167
+ /**
168
+ * Check if response is A2A format
169
+ */
170
+ function isA2AResponse(response) {
171
+ return 'result' in response || 'error' in response;
172
+ }
173
+ /**
174
+ * Unwrap MCP response - all MCP logic in one place
175
+ */
176
+ function unwrapMCPResponse(response) {
177
+ // MCP error response
178
+ if (response.isError === true) {
179
+ const errorContent = Array.isArray(response.content)
180
+ ? response.content.find((c) => c.type === 'text')?.text
181
+ : response.content?.text || 'Unknown error';
182
+ return {
183
+ errors: [
184
+ {
185
+ code: ERROR_CODES.MCP_ERROR,
186
+ message: errorContent || 'MCP tool call failed',
187
+ },
188
+ ],
189
+ };
190
+ }
191
+ // MCP success response with structuredContent
192
+ if (response.structuredContent !== undefined && response.structuredContent !== null) {
193
+ const data = response.structuredContent;
194
+ // Extract text messages from content field (parallel to A2A TextParts)
195
+ const textMessages = [];
196
+ if (response.content && Array.isArray(response.content)) {
197
+ for (const item of response.content) {
198
+ if (item.type === 'text' && item.text) {
199
+ textMessages.push(item.text);
200
+ }
201
+ }
202
+ }
203
+ // Include text messages if present (same pattern as A2A)
204
+ if (textMessages.length > 0) {
205
+ return {
206
+ ...data,
207
+ _message: textMessages.join('\n'),
208
+ };
209
+ }
210
+ return data;
211
+ }
212
+ // MCP text content fallback (try parsing as JSON)
213
+ if (response.content && Array.isArray(response.content)) {
214
+ const textContent = response.content.find((c) => c.type === 'text');
215
+ if (textContent?.text) {
216
+ try {
217
+ return JSON.parse(textContent.text);
218
+ }
219
+ catch {
220
+ // Include snippet of text for debugging (max 100 chars)
221
+ const snippet = textContent.text.length > 100 ? textContent.text.substring(0, 100) + '...' : textContent.text;
222
+ return {
223
+ errors: [
224
+ {
225
+ code: ERROR_CODES.INVALID_RESPONSE,
226
+ message: `Response does not contain structured AdCP data. Text content: "${snippet}"`,
227
+ },
228
+ ],
229
+ };
230
+ }
231
+ }
232
+ }
233
+ throw new Error('Invalid MCP response format');
234
+ }
235
+ /**
236
+ * Unwrap A2A response
237
+ *
238
+ * NOTE: This function should only be called when status is "completed".
239
+ * Intermediate statuses ("working", "submitted", "input-required") are handled
240
+ * at the response level (not in artifacts) and should not reach this function.
241
+ *
242
+ * A2A response flow:
243
+ * - Intermediate: { status: "working", message: "..." } - NO artifacts yet
244
+ * - Completed: { status: "completed", result: { artifacts: [...] } } - Parse artifacts here
245
+ */
246
+ function unwrapA2AResponse(response) {
247
+ // Validate that we're not processing intermediate statuses
248
+ // Task status check: only completed tasks should reach artifact extraction
249
+ if (response.result?.status?.state && response.result.status.state !== 'completed') {
250
+ throw new Error(`Cannot unwrap A2A response with intermediate status: ${response.result.status.state}. ` +
251
+ 'Only completed responses should be unwrapped.');
252
+ }
253
+ // A2A error response (JSON-RPC error)
254
+ if (response.error) {
255
+ return {
256
+ errors: [
257
+ {
258
+ code: response.error.code?.toString() || ERROR_CODES.UNKNOWN,
259
+ message: response.error.message || 'A2A JSON-RPC error occurred',
260
+ ...(response.error.data && { data: response.error.data }),
261
+ },
262
+ ],
263
+ };
264
+ }
265
+ // A2A completed response - simple requirements per AdCP spec:
266
+ // - MUST have result.artifacts array with at least one completed artifact
267
+ // - Completed artifact MUST have at least one DataPart (kind: 'data') with the AdCP response
268
+ // - MAY have TextParts (kind: 'text') with optional messages
269
+ const artifacts = response.result?.artifacts;
270
+ if (!Array.isArray(artifacts) || artifacts.length === 0) {
271
+ throw new Error('A2A completed response must have at least one artifact');
272
+ }
273
+ // Take last artifact (conversational protocols append artifacts over time)
274
+ // Note: A2A artifacts don't have a status field - only Tasks have status.
275
+ // If the Task status is "completed", all artifacts in result.artifacts are completed.
276
+ const artifact = artifacts[artifacts.length - 1];
277
+ if (!artifact) {
278
+ throw new Error('A2A completed response must have at least one artifact');
279
+ }
280
+ if (!artifact.parts || !Array.isArray(artifact.parts)) {
281
+ throw new Error('A2A artifact missing parts array');
282
+ }
283
+ // Extract DataPart (required) and TextParts (optional)
284
+ // Get last data part to be consistent with taking last artifact in conversational protocol
285
+ const dataParts = artifact.parts.filter((p) => p.kind === 'data');
286
+ const dataPart = dataParts[dataParts.length - 1];
287
+ if (!dataPart?.data) {
288
+ throw new Error('A2A completed response must have a DataPart with AdCP data');
289
+ }
290
+ const textParts = artifact.parts.filter((p) => p.kind === 'text' && p.text).map((p) => p.text);
291
+ // Unwrap nested response field if present (some agents wrap AdCP responses)
292
+ let data = dataPart.data;
293
+ if (data?.response && typeof data.response === 'object' && !Array.isArray(data.response)) {
294
+ data = data.response;
295
+ }
296
+ // Return data with optional message
297
+ if (textParts.length > 0) {
298
+ return {
299
+ ...data,
300
+ _message: textParts.join('\n'),
301
+ };
302
+ }
303
+ return data;
304
+ }
305
+ /**
306
+ * Check if a response is an AdCP error response
307
+ */
308
+ function isAdcpError(response) {
309
+ return Array.isArray(response?.errors) && response.errors.length > 0;
310
+ }
311
+ /**
312
+ * Check if a response is an AdCP success response for a specific task
313
+ *
314
+ * Uses Zod schemas to validate the response structure matches the expected
315
+ * success response format for the given task.
316
+ */
317
+ function isAdcpSuccess(response, taskName) {
318
+ // First check if it's an error response
319
+ if (isAdcpError(response)) {
320
+ return false;
321
+ }
322
+ // Try to validate with Zod schema if available
323
+ const schema = TOOL_RESPONSE_SCHEMAS[taskName];
324
+ if (schema) {
325
+ const result = schema.safeParse(response);
326
+ return result.success;
327
+ }
328
+ // Unknown task - can't validate, assume success if no errors
329
+ return true;
330
+ }
331
+ //# sourceMappingURL=response-unwrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-unwrapper.js","sourceRoot":"","sources":["../../../src/lib/utils/response-unwrapper.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,28 @@
1
1
  /**
2
2
  * AdCP client library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "2.7.2";
4
+ export declare const LIBRARY_VERSION = "3.1.0";
5
5
  /**
6
6
  * AdCP specification version this library is compatible with
7
7
  */
8
- export declare const ADCP_VERSION = "2.4.0";
8
+ export declare const ADCP_VERSION = "v2.5";
9
9
  /**
10
10
  * Full version information
11
11
  */
12
12
  export declare const VERSION_INFO: {
13
- readonly library: "2.7.2";
14
- readonly adcp: "2.4.0";
13
+ readonly library: "3.1.0";
14
+ readonly adcp: "v2.5";
15
15
  readonly compatible: true;
16
- readonly generatedAt: "2025-11-09T11:35:59.460Z";
16
+ readonly generatedAt: "2025-11-23T13:15:41.727Z";
17
17
  };
18
+ /**
19
+ * Get the AdCP specification version this library is built for
20
+ */
21
+ export declare function getAdcpVersion(): string;
22
+ /**
23
+ * Get the library version
24
+ */
25
+ export declare function getLibraryVersion(): string;
18
26
  /**
19
27
  * Check if this library version is compatible with a given AdCP version
20
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAI7D"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAI7D"}
@@ -3,24 +3,38 @@
3
3
  // This file is auto-generated by sync-version.ts
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.VERSION_INFO = exports.ADCP_VERSION = exports.LIBRARY_VERSION = void 0;
6
+ exports.getAdcpVersion = getAdcpVersion;
7
+ exports.getLibraryVersion = getLibraryVersion;
6
8
  exports.isCompatibleWith = isCompatibleWith;
7
9
  /**
8
10
  * AdCP client library version
9
11
  */
10
- exports.LIBRARY_VERSION = '2.7.2';
12
+ exports.LIBRARY_VERSION = '3.1.0';
11
13
  /**
12
14
  * AdCP specification version this library is compatible with
13
15
  */
14
- exports.ADCP_VERSION = '2.4.0';
16
+ exports.ADCP_VERSION = 'v2.5';
15
17
  /**
16
18
  * Full version information
17
19
  */
18
20
  exports.VERSION_INFO = {
19
- library: '2.7.2',
20
- adcp: '2.4.0',
21
+ library: '3.1.0',
22
+ adcp: 'v2.5',
21
23
  compatible: true,
22
- generatedAt: '2025-11-09T11:35:59.460Z',
24
+ generatedAt: '2025-11-23T13:15:41.727Z',
23
25
  };
26
+ /**
27
+ * Get the AdCP specification version this library is built for
28
+ */
29
+ function getAdcpVersion() {
30
+ return exports.ADCP_VERSION;
31
+ }
32
+ /**
33
+ * Get the library version
34
+ */
35
+ function getLibraryVersion() {
36
+ return exports.LIBRARY_VERSION;
37
+ }
24
38
  /**
25
39
  * Check if this library version is compatible with a given AdCP version
26
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,iDAAiD;;;AAyBjD,4CAIC;AA3BD;;GAEG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC;AAEvC;;GAEG;AACU,QAAA,YAAY,GAAG,OAAO,CAAC;AAEpC;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,0BAA0B;CAC/B,CAAC;AAEX;;GAEG;AACH,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,yCAAyC;IACzC,iEAAiE;IACjE,OAAO,WAAW,KAAK,oBAAY,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,iDAAiD;;;AAyBjD,wCAEC;AAKD,8CAEC;AAKD,4CAIC;AAzCD;;GAEG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC;AAEvC;;GAEG;AACU,QAAA,YAAY,GAAG,MAAM,CAAC;AAEnC;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,0BAA0B;CAC/B,CAAC;AAEX;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,oBAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,uBAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,yCAAyC;IACzC,iEAAiE;IACjE,OAAO,WAAW,KAAK,oBAAY,CAAC;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adcp/client",
3
- "version": "3.0.3",
3
+ "version": "3.2.0",
4
4
  "description": "AdCP client library with protocol support for MCP and A2A, includes testing framework",
5
5
  "main": "dist/lib/index.js",
6
6
  "types": "dist/lib/index.d.ts",
@@ -66,10 +66,8 @@
66
66
  "prepublishOnly": "npm run clean && (test -f src/lib/types/tools.generated.ts || npm run sync-schemas) && (test -f src/lib/types/tools.generated.ts || npm run generate-types) && npm run build:lib && node --test test/lib/adcp-client.test.js test/lib/validation.test.js test/lib/zod-schemas.test.js",
67
67
  "docs": "typedoc",
68
68
  "docs:watch": "typedoc --watch",
69
- "docs:serve": "cd docs && make serve",
70
- "docs:serve-simple": "echo '📚 Docs available at: file://'$(pwd)'/docs/index.html' && echo '🐳 For live preview: npm run docs:serve (Docker)' && echo '📦 Alternative: npx http-server docs -p 4000'",
71
- "docs:build": "npm run docs && cd docs && make build",
72
- "docs:install": "cd docs && make install",
69
+ "docs:serve": "npx http-server docs -p 4000 -o",
70
+ "docs:open": "open docs/api/index.html || xdg-open docs/api/index.html || start docs/api/index.html",
73
71
  "ci:validate": "node scripts/ci-validate.js",
74
72
  "ci:quick": "npm run format:check && npm run typecheck && npm run build:lib && npm test",
75
73
  "ci:schema-check": "npm run sync-schemas && npm run generate-types && git diff --exit-code src/lib/types/ src/lib/agents/ || (echo '⚠️ Generated files are out of sync. Run: npm run sync-schemas && npm run generate-types' && exit 1)",
@@ -149,7 +147,8 @@
149
147
  "node": ">=18.0.0"
150
148
  },
151
149
  "overrides": {
152
- "@types/glob": "^8.1.0"
150
+ "@types/glob": "^8.1.0",
151
+ "js-yaml": "^4.1.1"
153
152
  },
154
- "adcp_version": "2.4.0"
153
+ "adcp_version": "v2.5"
155
154
  }