@adcp/sdk 16.5.0 → 16.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/dist/lib/adapters/version/3.0/brand-fields.d.mts +7 -1
  2. package/dist/lib/adapters/version/3.0/brand-fields.d.ts +7 -1
  3. package/dist/lib/adapters/version/3.0/brand-fields.js +139 -3
  4. package/dist/lib/adapters/version/3.0/brand-fields.mjs +136 -2
  5. package/dist/lib/adapters/version/3.0/index.js +6 -0
  6. package/dist/lib/adapters/version/3.0/index.mjs +7 -1
  7. package/dist/lib/adapters/version/3.1/bidding.js +1 -1
  8. package/dist/lib/adapters/version/3.1/bidding.mjs +1 -1
  9. package/dist/lib/adapters/version/types.d.mts +5 -0
  10. package/dist/lib/adapters/version/types.d.ts +5 -0
  11. package/dist/lib/canonical-references/index.js +2 -0
  12. package/dist/lib/canonical-references/index.mjs +2 -0
  13. package/dist/lib/client/account-changes.d.mts +3 -1
  14. package/dist/lib/client/account-changes.d.ts +3 -1
  15. package/dist/lib/client/account-changes.js +22 -2
  16. package/dist/lib/client/account-changes.mjs +22 -2
  17. package/dist/lib/conformance/oracle.js +3 -2
  18. package/dist/lib/conformance/oracle.mjs +3 -2
  19. package/dist/lib/core/AgentClient.d.mts +165 -1
  20. package/dist/lib/core/AgentClient.d.ts +165 -1
  21. package/dist/lib/core/AgentClient.js +446 -8
  22. package/dist/lib/core/AgentClient.mjs +446 -8
  23. package/dist/lib/core/ConversationTypes.d.mts +8 -0
  24. package/dist/lib/core/ConversationTypes.d.ts +8 -0
  25. package/dist/lib/core/ProtocolResponseParser.d.mts +1 -1
  26. package/dist/lib/core/ProtocolResponseParser.d.ts +1 -1
  27. package/dist/lib/core/ProtocolResponseParser.js +28 -18
  28. package/dist/lib/core/ProtocolResponseParser.mjs +11 -1
  29. package/dist/lib/core/ResponseValidator.js +1 -1
  30. package/dist/lib/core/ResponseValidator.mjs +1 -1
  31. package/dist/lib/core/SingleAgentClient.d.mts +116 -6
  32. package/dist/lib/core/SingleAgentClient.d.ts +116 -6
  33. package/dist/lib/core/SingleAgentClient.js +556 -84
  34. package/dist/lib/core/SingleAgentClient.mjs +545 -72
  35. package/dist/lib/core/TaskExecutor.d.mts +7 -0
  36. package/dist/lib/core/TaskExecutor.d.ts +7 -0
  37. package/dist/lib/core/TaskExecutor.js +23 -8
  38. package/dist/lib/core/TaskExecutor.mjs +23 -8
  39. package/dist/lib/core/task-status.d.mts +2 -0
  40. package/dist/lib/core/task-status.d.ts +2 -0
  41. package/dist/lib/core/task-status.js +11 -2
  42. package/dist/lib/core/task-status.mjs +9 -1
  43. package/dist/lib/errors/index.d.mts +22 -0
  44. package/dist/lib/errors/index.d.ts +22 -0
  45. package/dist/lib/errors/index.js +43 -0
  46. package/dist/lib/errors/index.mjs +42 -0
  47. package/dist/lib/identity-3.3/trust.d.mts +1 -4
  48. package/dist/lib/identity-3.3/trust.d.ts +1 -4
  49. package/dist/lib/identity-3.3/trust.js +34 -21
  50. package/dist/lib/identity-3.3/trust.mjs +34 -21
  51. package/dist/lib/identity-3.3/validation.js +5 -3
  52. package/dist/lib/identity-3.3/validation.mjs +6 -4
  53. package/dist/lib/index.d.mts +8 -54
  54. package/dist/lib/index.d.ts +8 -54
  55. package/dist/lib/index.js +15 -0
  56. package/dist/lib/index.mjs +11 -0
  57. package/dist/lib/media-buy/action-assessment.js +29 -3
  58. package/dist/lib/media-buy/action-assessment.mjs +32 -4
  59. package/dist/lib/media-buy/action-contracts.d.mts +3 -0
  60. package/dist/lib/media-buy/action-contracts.d.ts +3 -0
  61. package/dist/lib/media-buy/action-contracts.js +24 -1
  62. package/dist/lib/media-buy/action-contracts.mjs +22 -1
  63. package/dist/lib/media-buy/compatibility.js +6 -1
  64. package/dist/lib/media-buy/compatibility.mjs +6 -1
  65. package/dist/lib/media-buy/preflight.js +1 -1
  66. package/dist/lib/media-buy/preflight.mjs +3 -2
  67. package/dist/lib/media-buy/types.d.mts +6 -1
  68. package/dist/lib/media-buy/types.d.ts +6 -1
  69. package/dist/lib/protocols/mcp-modern.d.mts +2 -0
  70. package/dist/lib/protocols/mcp-modern.d.ts +2 -0
  71. package/dist/lib/protocols/mcp-modern.js +31 -5
  72. package/dist/lib/protocols/mcp-modern.mjs +31 -5
  73. package/dist/lib/protocols/mcp-scope.d.mts +6 -1
  74. package/dist/lib/protocols/mcp-scope.d.ts +6 -1
  75. package/dist/lib/protocols/mcp-scope.js +25 -3
  76. package/dist/lib/protocols/mcp-scope.mjs +24 -3
  77. package/dist/lib/protocols/mcp.js +12 -6
  78. package/dist/lib/protocols/mcp.mjs +13 -6
  79. package/dist/lib/reporting/inspection.js +1 -0
  80. package/dist/lib/reporting/inspection.mjs +1 -0
  81. package/dist/lib/schemas/browser.d.mts +2 -0
  82. package/dist/lib/schemas/browser.d.ts +2 -0
  83. package/dist/lib/schemas/browser.js +3 -0
  84. package/dist/lib/schemas/browser.mjs +2 -0
  85. package/dist/lib/schemas/index.d.mts +5 -2
  86. package/dist/lib/schemas/index.d.ts +5 -2
  87. package/dist/lib/schemas/index.js +5 -0
  88. package/dist/lib/schemas/index.mjs +4 -0
  89. package/dist/lib/server/account-response-identity.d.mts +17 -0
  90. package/dist/lib/server/account-response-identity.d.ts +17 -0
  91. package/dist/lib/server/account-response-identity.js +52 -0
  92. package/dist/lib/server/account-response-identity.mjs +28 -0
  93. package/dist/lib/server/account-sync-contract.js +1 -0
  94. package/dist/lib/server/account-sync-contract.mjs +1 -0
  95. package/dist/lib/server/create-adcp-server.js +32 -19
  96. package/dist/lib/server/create-adcp-server.mjs +36 -12
  97. package/dist/lib/server/decisioning/account.d.mts +13 -6
  98. package/dist/lib/server/decisioning/account.d.ts +13 -6
  99. package/dist/lib/server/decisioning/account.js +37 -15
  100. package/dist/lib/server/decisioning/account.mjs +37 -15
  101. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +5 -5
  102. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +5 -5
  103. package/dist/lib/server/decisioning/runtime/from-platform.js +6 -6
  104. package/dist/lib/server/decisioning/runtime/from-platform.mjs +6 -6
  105. package/dist/lib/server/index.d.mts +1 -1
  106. package/dist/lib/server/index.d.ts +1 -1
  107. package/dist/lib/server/index.js +2 -0
  108. package/dist/lib/server/index.mjs +2 -0
  109. package/dist/lib/server/media-buy-action-resolver.d.mts +3 -0
  110. package/dist/lib/server/media-buy-action-resolver.d.ts +3 -0
  111. package/dist/lib/server/media-buy-action-resolver.js +32 -0
  112. package/dist/lib/server/media-buy-action-resolver.mjs +32 -0
  113. package/dist/lib/server/media-buy-store.d.mts +26 -12
  114. package/dist/lib/server/media-buy-store.d.ts +26 -12
  115. package/dist/lib/server/media-buy-store.js +69 -21
  116. package/dist/lib/server/media-buy-store.mjs +69 -21
  117. package/dist/lib/server/responses.js +9 -1
  118. package/dist/lib/server/responses.mjs +9 -1
  119. package/dist/lib/server/state-machine.d.mts +10 -11
  120. package/dist/lib/server/state-machine.d.ts +10 -11
  121. package/dist/lib/server/state-machine.js +20 -5
  122. package/dist/lib/server/state-machine.mjs +19 -5
  123. package/dist/lib/signing/agent-fetch.d.mts +1 -1
  124. package/dist/lib/signing/agent-fetch.d.ts +1 -1
  125. package/dist/lib/signing/agent-fetch.js +3 -3
  126. package/dist/lib/signing/agent-fetch.mjs +3 -3
  127. package/dist/lib/testing/client.d.mts +1 -0
  128. package/dist/lib/testing/client.d.ts +1 -0
  129. package/dist/lib/testing/client.js +6 -5
  130. package/dist/lib/testing/client.mjs +6 -5
  131. package/dist/lib/testing/storyboard/canonical-format-satisfaction.js +60 -14
  132. package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +60 -14
  133. package/dist/lib/testing/storyboard/compliance.d.mts +2 -5
  134. package/dist/lib/testing/storyboard/compliance.d.ts +2 -5
  135. package/dist/lib/testing/storyboard/compliance.js +62 -13
  136. package/dist/lib/testing/storyboard/compliance.mjs +63 -14
  137. package/dist/lib/testing/storyboard/context.d.mts +13 -3
  138. package/dist/lib/testing/storyboard/context.d.ts +13 -3
  139. package/dist/lib/testing/storyboard/context.js +15 -10
  140. package/dist/lib/testing/storyboard/context.mjs +15 -10
  141. package/dist/lib/testing/storyboard/default-invariants.js +10 -8
  142. package/dist/lib/testing/storyboard/default-invariants.mjs +11 -9
  143. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.mts +2 -0
  144. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +2 -0
  145. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +11 -0
  146. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +10 -0
  147. package/dist/lib/testing/storyboard/runner.js +23 -10
  148. package/dist/lib/testing/storyboard/runner.mjs +23 -10
  149. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  150. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  151. package/dist/lib/testing/storyboard/validations.js +4 -1
  152. package/dist/lib/testing/storyboard/validations.mjs +4 -1
  153. package/dist/lib/testing/test-controller.js +3 -0
  154. package/dist/lib/testing/test-controller.mjs +3 -0
  155. package/dist/lib/types/asset-instances.d.mts +1 -1
  156. package/dist/lib/types/asset-instances.d.ts +1 -1
  157. package/dist/lib/types/index.d.mts +5 -0
  158. package/dist/lib/types/index.d.ts +5 -0
  159. package/dist/lib/types/index.js +6 -1
  160. package/dist/lib/types/index.mjs +4 -1
  161. package/dist/lib/types/inline-enums.generated.d.mts +30 -4
  162. package/dist/lib/types/inline-enums.generated.d.ts +30 -4
  163. package/dist/lib/types/inline-enums.generated.js +41 -2
  164. package/dist/lib/types/inline-enums.generated.mjs +28 -2
  165. package/dist/lib/types/media-buy-delivery-report.d.mts +4 -0
  166. package/dist/lib/types/media-buy-delivery-report.d.ts +4 -0
  167. package/dist/lib/types/media-buy-delivery-report.js +16 -0
  168. package/dist/lib/types/media-buy-delivery-report.mjs +0 -0
  169. package/dist/lib/types/schemas.generated.d.ts +20 -69
  170. package/dist/lib/types/schemas.generated.js +29 -46
  171. package/dist/lib/types/schemas.generated.mjs +29 -46
  172. package/dist/lib/types/targeting-keys.generated.d.mts +4 -0
  173. package/dist/lib/types/targeting-keys.generated.d.ts +4 -0
  174. package/dist/lib/types/targeting-keys.generated.js +105 -0
  175. package/dist/lib/types/targeting-keys.generated.mjs +80 -0
  176. package/dist/lib/utils/adcp-version-config.js +5 -2
  177. package/dist/lib/utils/adcp-version-config.mjs +5 -2
  178. package/dist/lib/utils/envelope-status-compat.d.mts +18 -1
  179. package/dist/lib/utils/envelope-status-compat.d.ts +18 -1
  180. package/dist/lib/utils/envelope-status-compat.js +11 -5
  181. package/dist/lib/utils/envelope-status-compat.mjs +11 -5
  182. package/dist/lib/utils/response-unwrapper.js +18 -10
  183. package/dist/lib/utils/response-unwrapper.mjs +18 -10
  184. package/dist/lib/v2/format-schema/resolver.js +1 -1
  185. package/dist/lib/v2/format-schema/resolver.mjs +1 -1
  186. package/dist/lib/v2/projection/creative-delivery.js +123 -30
  187. package/dist/lib/v2/projection/creative-delivery.mjs +127 -30
  188. package/dist/lib/v2/projection/index.d.mts +1 -0
  189. package/dist/lib/v2/projection/index.d.ts +1 -0
  190. package/dist/lib/v2/projection/index.js +3 -0
  191. package/dist/lib/v2/projection/index.mjs +2 -0
  192. package/dist/lib/v2/projection/legacy-metadata.d.mts +19 -0
  193. package/dist/lib/v2/projection/legacy-metadata.d.ts +19 -0
  194. package/dist/lib/v2/projection/legacy-metadata.js +91 -0
  195. package/dist/lib/v2/projection/legacy-metadata.mjs +86 -0
  196. package/dist/lib/validation/compact-schema.d.mts +27 -0
  197. package/dist/lib/validation/compact-schema.d.ts +27 -0
  198. package/dist/lib/validation/compact-schema.js +276 -0
  199. package/dist/lib/validation/compact-schema.mjs +250 -0
  200. package/dist/lib/validation/media-buy-delivery-report.d.mts +8 -0
  201. package/dist/lib/validation/media-buy-delivery-report.d.ts +8 -0
  202. package/dist/lib/validation/media-buy-delivery-report.js +31 -0
  203. package/dist/lib/validation/media-buy-delivery-report.mjs +7 -0
  204. package/dist/lib/validation/schema-diagnostic-origins.d.mts +21 -0
  205. package/dist/lib/validation/schema-diagnostic-origins.d.ts +21 -0
  206. package/dist/lib/validation/schema-diagnostic-origins.js +193 -0
  207. package/dist/lib/validation/schema-diagnostic-origins.mjs +169 -0
  208. package/dist/lib/validation/schema-loader.js +86 -16
  209. package/dist/lib/validation/schema-loader.mjs +82 -16
  210. package/dist/lib/validation/schema-validator.d.mts +10 -19
  211. package/dist/lib/validation/schema-validator.d.ts +10 -19
  212. package/dist/lib/validation/schema-validator.js +136 -43
  213. package/dist/lib/validation/schema-validator.mjs +140 -44
  214. package/dist/lib/version.d.mts +3 -3
  215. package/dist/lib/version.d.ts +3 -3
  216. package/dist/lib/version.js +3 -3
  217. package/dist/lib/version.mjs +3 -3
  218. package/dist/lib/webhooks/index.d.mts +3 -0
  219. package/dist/lib/webhooks/index.d.ts +3 -0
  220. package/dist/lib/webhooks/index.js +3 -0
  221. package/dist/lib/webhooks/index.mjs +2 -0
  222. package/dist/lib/webhooks/media-buy-delivery.d.mts +43 -0
  223. package/dist/lib/webhooks/media-buy-delivery.d.ts +43 -0
  224. package/dist/lib/webhooks/media-buy-delivery.js +119 -0
  225. package/dist/lib/webhooks/media-buy-delivery.mjs +94 -0
  226. package/docs/TYPE-SUMMARY.md +2 -2
  227. package/docs/guides/BUILD-AN-AGENT.md +9 -1
  228. package/docs/guides/DELIVERY-WEBHOOK-PARSING.md +135 -0
  229. package/docs/guides/DISCOVERY-CACHE-AND-SESSION-REUSE.md +15 -0
  230. package/docs/guides/TYPED-CLIENT-TOOLS.md +49 -0
  231. package/docs/llms.txt +3 -3
  232. package/docs/migration-14.x-rc-worksheet.md +4 -4
  233. package/docs/migration-6.6-to-6.7.md +14 -0
  234. package/docs/migration-account-change-feed.md +19 -0
  235. package/docs/releases/sdk-16.6-adoption-fixes.md +33 -0
  236. package/package.json +2 -2
@@ -59,14 +59,19 @@ function asRecord(value) {
59
59
  function readMediaBuyStatus(record) {
60
60
  return (0, import_media_buy_status.getAuthoritativeMediaBuyStatus)(record);
61
61
  }
62
- function readMediaBuyFields(data) {
62
+ function readMediaBuyFields(data, adcpVersion) {
63
63
  const outer = asRecord(data);
64
64
  const nested = asRecord(outer?.media_buy);
65
65
  return {
66
66
  mediaBuyId: nested?.media_buy_id ?? outer?.media_buy_id,
67
- status: readMediaBuyStatus(nested) ?? readMediaBuyStatus(outer)
67
+ status: readMediaBuyStatus(nested) ?? readMediaBuyStatus(withRequestedVersion(outer, adcpVersion))
68
68
  };
69
69
  }
70
+ function withRequestedVersion(record, adcpVersion) {
71
+ if (!record || !adcpVersion) return record;
72
+ if (typeof record.adcp_version === "string" || typeof record.adcp_major_version === "number") return record;
73
+ return { ...record, adcp_version: adcpVersion };
74
+ }
70
75
  function readProposalFields(proposal) {
71
76
  if (!proposal) return {};
72
77
  const extracted = {};
@@ -181,15 +186,15 @@ const CONTEXT_EXTRACTORS = {
181
186
  control_media_buy(data) {
182
187
  return readCompactMediaBuyFields(data);
183
188
  },
184
- create_media_buy(data) {
185
- const { mediaBuyId, status } = readMediaBuyFields(data);
189
+ create_media_buy(data, adcpVersion) {
190
+ const { mediaBuyId, status } = readMediaBuyFields(data, adcpVersion);
186
191
  const extracted = {};
187
192
  if (mediaBuyId) extracted.media_buy_id = mediaBuyId;
188
193
  if (status) extracted.media_buy_status = status;
189
194
  return extracted;
190
195
  },
191
- update_media_buy(data) {
192
- const { mediaBuyId, status } = readMediaBuyFields(data);
196
+ update_media_buy(data, adcpVersion) {
197
+ const { mediaBuyId, status } = readMediaBuyFields(data, adcpVersion);
193
198
  const extracted = {};
194
199
  if (mediaBuyId) extracted.media_buy_id = mediaBuyId;
195
200
  if (status) extracted.media_buy_status = status;
@@ -381,11 +386,11 @@ const CONTEXT_EXTRACTORS = {
381
386
  return extracted;
382
387
  }
383
388
  };
384
- function extractContext(taskName, data) {
389
+ function extractContext(taskName, data, adcpVersion) {
385
390
  const extractor = CONTEXT_EXTRACTORS[taskName];
386
391
  if (!extractor) return {};
387
392
  try {
388
- return extractor(data);
393
+ return extractor(data, adcpVersion);
389
394
  } catch {
390
395
  return {};
391
396
  }
@@ -482,8 +487,8 @@ function applyContextOutputs(data, outputs) {
482
487
  }
483
488
  return result;
484
489
  }
485
- function extractContextWithProvenance(taskName, data, stepId) {
486
- const values = extractContext(taskName, data);
490
+ function extractContextWithProvenance(taskName, data, stepId, adcpVersion) {
491
+ const values = extractContext(taskName, data, adcpVersion);
487
492
  const clearGroups = (() => {
488
493
  const response = asRecord(data);
489
494
  switch (taskName) {
@@ -26,14 +26,19 @@ function asRecord(value) {
26
26
  function readMediaBuyStatus(record) {
27
27
  return getAuthoritativeMediaBuyStatus(record);
28
28
  }
29
- function readMediaBuyFields(data) {
29
+ function readMediaBuyFields(data, adcpVersion) {
30
30
  const outer = asRecord(data);
31
31
  const nested = asRecord(outer?.media_buy);
32
32
  return {
33
33
  mediaBuyId: nested?.media_buy_id ?? outer?.media_buy_id,
34
- status: readMediaBuyStatus(nested) ?? readMediaBuyStatus(outer)
34
+ status: readMediaBuyStatus(nested) ?? readMediaBuyStatus(withRequestedVersion(outer, adcpVersion))
35
35
  };
36
36
  }
37
+ function withRequestedVersion(record, adcpVersion) {
38
+ if (!record || !adcpVersion) return record;
39
+ if (typeof record.adcp_version === "string" || typeof record.adcp_major_version === "number") return record;
40
+ return { ...record, adcp_version: adcpVersion };
41
+ }
37
42
  function readProposalFields(proposal) {
38
43
  if (!proposal) return {};
39
44
  const extracted = {};
@@ -148,15 +153,15 @@ const CONTEXT_EXTRACTORS = {
148
153
  control_media_buy(data) {
149
154
  return readCompactMediaBuyFields(data);
150
155
  },
151
- create_media_buy(data) {
152
- const { mediaBuyId, status } = readMediaBuyFields(data);
156
+ create_media_buy(data, adcpVersion) {
157
+ const { mediaBuyId, status } = readMediaBuyFields(data, adcpVersion);
153
158
  const extracted = {};
154
159
  if (mediaBuyId) extracted.media_buy_id = mediaBuyId;
155
160
  if (status) extracted.media_buy_status = status;
156
161
  return extracted;
157
162
  },
158
- update_media_buy(data) {
159
- const { mediaBuyId, status } = readMediaBuyFields(data);
163
+ update_media_buy(data, adcpVersion) {
164
+ const { mediaBuyId, status } = readMediaBuyFields(data, adcpVersion);
160
165
  const extracted = {};
161
166
  if (mediaBuyId) extracted.media_buy_id = mediaBuyId;
162
167
  if (status) extracted.media_buy_status = status;
@@ -348,11 +353,11 @@ const CONTEXT_EXTRACTORS = {
348
353
  return extracted;
349
354
  }
350
355
  };
351
- function extractContext(taskName, data) {
356
+ function extractContext(taskName, data, adcpVersion) {
352
357
  const extractor = CONTEXT_EXTRACTORS[taskName];
353
358
  if (!extractor) return {};
354
359
  try {
355
- return extractor(data);
360
+ return extractor(data, adcpVersion);
356
361
  } catch {
357
362
  return {};
358
363
  }
@@ -449,8 +454,8 @@ function applyContextOutputs(data, outputs) {
449
454
  }
450
455
  return result;
451
456
  }
452
- function extractContextWithProvenance(taskName, data, stepId) {
453
- const values = extractContext(taskName, data);
457
+ function extractContextWithProvenance(taskName, data, stepId, adcpVersion) {
458
+ const values = extractContext(taskName, data, adcpVersion);
454
459
  const clearGroups = (() => {
455
460
  const response = asRecord(data);
456
461
  switch (taskName) {
@@ -332,10 +332,12 @@ function registerDefaultInvariants() {
332
332
  function buildEnumSchemaUrl(enumFile) {
333
333
  return `${SCHEMA_URL_BASE}/schemas/${import_version.ADCP_VERSION}/enums/${enumFile}`;
334
334
  }
335
- const MEDIA_BUY_TRANSITIONS = {
336
- transitions: import_state_machine.MEDIA_BUY_TRANSITIONS,
337
- enumFile: "media-buy-status.json"
338
- };
335
+ function mediaBuyTransitions(adcpVersion) {
336
+ return {
337
+ transitions: (0, import_state_machine.getMediaBuyTransitions)(adcpVersion),
338
+ enumFile: "media-buy-status.json"
339
+ };
340
+ }
339
341
  const CREATIVE_ASSET_TRANSITIONS = {
340
342
  transitions: import_state_machine.CREATIVE_ASSET_TRANSITIONS,
341
343
  enumFile: "creative-status.json"
@@ -432,8 +434,8 @@ function registerDefaultInvariants() {
432
434
  ["update_media_buy", extractMediaBuy],
433
435
  [
434
436
  "get_media_buys",
435
- (out, body) => {
436
- for (const buy of asArray(body.media_buys)) if (isObject(buy)) pushMediaBuy(out, buy);
437
+ (out, body, version) => {
438
+ for (const buy of asArray(body.media_buys)) if (isObject(buy)) pushMediaBuy(out, buy, false, version);
437
439
  }
438
440
  ],
439
441
  ["sync_creatives", extractCreatives],
@@ -462,7 +464,7 @@ function registerDefaultInvariants() {
462
464
  const extract = statusExtractors.get(task);
463
465
  if (!extract || task === "get_products" && asArray(body.proposals).length === 0) return void 0;
464
466
  const observations = [];
465
- extract(observations, body, adcpVersion);
467
+ extract(observations, body, asString(body.adcp_version) ?? adcpVersion);
466
468
  return observations;
467
469
  }
468
470
  function pushMediaBuy(obs, record, enveloped = false, adcpVersion = import_version.ADCP_VERSION) {
@@ -473,7 +475,7 @@ function registerDefaultInvariants() {
473
475
  resource_type: "media_buy",
474
476
  resource_id: id,
475
477
  status,
476
- graph: MEDIA_BUY_TRANSITIONS
478
+ graph: mediaBuyTransitions(adcpVersion)
477
479
  });
478
480
  }
479
481
  for (const pkg of asArray(record.packages)) {
@@ -4,7 +4,7 @@ import { STANDARD_ERROR_CODES } from "../../types/error-codes.mjs";
4
4
  import { getAuthoritativeMediaBuyStatus } from "../../utils/media-buy-status.mjs";
5
5
  import {
6
6
  CREATIVE_ASSET_TRANSITIONS as CREATIVE_ASSET_TRANSITIONS_TYPED,
7
- MEDIA_BUY_TRANSITIONS as MEDIA_BUY_TRANSITIONS_TYPED
7
+ getMediaBuyTransitions
8
8
  } from "../../server/state-machine.mjs";
9
9
  import { registerAssertion } from "./assertions.mjs";
10
10
  import { accountSyncContractAssertion } from "./account-sync-contract.mjs";
@@ -312,10 +312,12 @@ function registerDefaultInvariants() {
312
312
  function buildEnumSchemaUrl(enumFile) {
313
313
  return `${SCHEMA_URL_BASE}/schemas/${ADCP_VERSION}/enums/${enumFile}`;
314
314
  }
315
- const MEDIA_BUY_TRANSITIONS = {
316
- transitions: MEDIA_BUY_TRANSITIONS_TYPED,
317
- enumFile: "media-buy-status.json"
318
- };
315
+ function mediaBuyTransitions(adcpVersion) {
316
+ return {
317
+ transitions: getMediaBuyTransitions(adcpVersion),
318
+ enumFile: "media-buy-status.json"
319
+ };
320
+ }
319
321
  const CREATIVE_ASSET_TRANSITIONS = {
320
322
  transitions: CREATIVE_ASSET_TRANSITIONS_TYPED,
321
323
  enumFile: "creative-status.json"
@@ -412,8 +414,8 @@ function registerDefaultInvariants() {
412
414
  ["update_media_buy", extractMediaBuy],
413
415
  [
414
416
  "get_media_buys",
415
- (out, body) => {
416
- for (const buy of asArray(body.media_buys)) if (isObject(buy)) pushMediaBuy(out, buy);
417
+ (out, body, version) => {
418
+ for (const buy of asArray(body.media_buys)) if (isObject(buy)) pushMediaBuy(out, buy, false, version);
417
419
  }
418
420
  ],
419
421
  ["sync_creatives", extractCreatives],
@@ -442,7 +444,7 @@ function registerDefaultInvariants() {
442
444
  const extract = statusExtractors.get(task);
443
445
  if (!extract || task === "get_products" && asArray(body.proposals).length === 0) return void 0;
444
446
  const observations = [];
445
- extract(observations, body, adcpVersion);
447
+ extract(observations, body, asString(body.adcp_version) ?? adcpVersion);
446
448
  return observations;
447
449
  }
448
450
  function pushMediaBuy(obs, record, enveloped = false, adcpVersion = ADCP_VERSION) {
@@ -453,7 +455,7 @@ function registerDefaultInvariants() {
453
455
  resource_type: "media_buy",
454
456
  resource_id: id,
455
457
  status,
456
- graph: MEDIA_BUY_TRANSITIONS
458
+ graph: mediaBuyTransitions(adcpVersion)
457
459
  });
458
460
  }
459
461
  for (const pkg of asArray(record.packages)) {
@@ -34,6 +34,8 @@ export declare function signingProfileForAdcpVersion(version?: string): '3.2' |
34
34
  export declare function loadRequestSigningVectors(options?: LoadVectorsOptions): LoadedVectors;
35
35
  /** Load only the shared signing keyset, without requiring the grader vectors. */
36
36
  export declare function loadRequestSigningKeys(options?: LoadVectorsOptions): TestKeyset;
37
+ /** Refresh only the signing fixtures belonging to a changed custom compliance root. */
38
+ export declare function invalidateRequestSigningVectorCache(complianceDir: string): void;
37
39
  /** Test-only: clear the memoization cache so a fresh cache path is reread. */
38
40
  export declare function __resetVectorCache(): void;
39
41
  /** Where the A2A operation-resolution vectors came from. */
@@ -34,6 +34,8 @@ export declare function signingProfileForAdcpVersion(version?: string): '3.2' |
34
34
  export declare function loadRequestSigningVectors(options?: LoadVectorsOptions): LoadedVectors;
35
35
  /** Load only the shared signing keyset, without requiring the grader vectors. */
36
36
  export declare function loadRequestSigningKeys(options?: LoadVectorsOptions): TestKeyset;
37
+ /** Refresh only the signing fixtures belonging to a changed custom compliance root. */
38
+ export declare function invalidateRequestSigningVectorCache(complianceDir: string): void;
37
39
  /** Test-only: clear the memoization cache so a fresh cache path is reread. */
38
40
  export declare function __resetVectorCache(): void;
39
41
  /** Where the A2A operation-resolution vectors came from. */
@@ -22,6 +22,7 @@ __export(vector_loader_exports, {
22
22
  A2A_VECTORS_UNAVAILABLE_MESSAGE: () => A2A_VECTORS_UNAVAILABLE_MESSAGE,
23
23
  __resetVectorCache: () => __resetVectorCache,
24
24
  findKey: () => findKey,
25
+ invalidateRequestSigningVectorCache: () => invalidateRequestSigningVectorCache,
25
26
  loadA2aOperationResolutionVectors: () => loadA2aOperationResolutionVectors,
26
27
  loadRequestSigningKeys: () => loadRequestSigningKeys,
27
28
  loadRequestSigningVectors: () => loadRequestSigningVectors,
@@ -95,6 +96,15 @@ function loadRequestSigningKeys(options = {}) {
95
96
  const cacheDir = (0, import_compliance.getComplianceCacheDir)(options);
96
97
  return loadKeys((0, import_path.join)(cacheDir, "test-vectors", "request-signing", "keys.json"));
97
98
  }
99
+ function invalidateRequestSigningVectorCache(complianceDir) {
100
+ const sourceDir = (0, import_path.resolve)(complianceDir, "test-vectors", "request-signing");
101
+ for (const key of VECTOR_CACHE.keys()) {
102
+ if ((0, import_path.resolve)(key) === sourceDir) VECTOR_CACHE.delete(key);
103
+ }
104
+ for (const key of A2A_VECTOR_CACHE.keys()) {
105
+ if ((0, import_path.resolve)(key) === (0, import_path.join)(sourceDir, "a2a")) A2A_VECTOR_CACHE.delete(key);
106
+ }
107
+ }
98
108
  function __resetVectorCache() {
99
109
  VECTOR_CACHE.clear();
100
110
  A2A_VECTOR_CACHE.clear();
@@ -384,6 +394,7 @@ function strArray(v, where) {
384
394
  A2A_VECTORS_UNAVAILABLE_MESSAGE,
385
395
  __resetVectorCache,
386
396
  findKey,
397
+ invalidateRequestSigningVectorCache,
387
398
  loadA2aOperationResolutionVectors,
388
399
  loadRequestSigningKeys,
389
400
  loadRequestSigningVectors,
@@ -69,6 +69,15 @@ function loadRequestSigningKeys(options = {}) {
69
69
  const cacheDir = getComplianceCacheDir(options);
70
70
  return loadKeys(join(cacheDir, "test-vectors", "request-signing", "keys.json"));
71
71
  }
72
+ function invalidateRequestSigningVectorCache(complianceDir) {
73
+ const sourceDir = resolve(complianceDir, "test-vectors", "request-signing");
74
+ for (const key of VECTOR_CACHE.keys()) {
75
+ if (resolve(key) === sourceDir) VECTOR_CACHE.delete(key);
76
+ }
77
+ for (const key of A2A_VECTOR_CACHE.keys()) {
78
+ if (resolve(key) === join(sourceDir, "a2a")) A2A_VECTOR_CACHE.delete(key);
79
+ }
80
+ }
72
81
  function __resetVectorCache() {
73
82
  VECTOR_CACHE.clear();
74
83
  A2A_VECTOR_CACHE.clear();
@@ -357,6 +366,7 @@ export {
357
366
  A2A_VECTORS_UNAVAILABLE_MESSAGE,
358
367
  __resetVectorCache,
359
368
  findKey,
369
+ invalidateRequestSigningVectorCache,
360
370
  loadA2aOperationResolutionVectors,
361
371
  loadRequestSigningKeys,
362
372
  loadRequestSigningVectors,
@@ -684,7 +684,7 @@ function remapTaskCompletionOutputs(outputs) {
684
684
  return o;
685
685
  });
686
686
  }
687
- async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhookReceiver, originatingTaskName) {
687
+ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhookReceiver, originatingTaskName, responseAdcpVersion) {
688
688
  const hasTaskCompletionPath = outputs.some(
689
689
  (o) => typeof o.path === "string" && o.path.startsWith(TASK_COMPLETION_PATH_PREFIX)
690
690
  );
@@ -737,7 +737,10 @@ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhook
737
737
  if (winner.kind === "poll") {
738
738
  const polled = winner.result;
739
739
  if (polled.success === false) return { attempted: true, taskFailed: true };
740
- return { attempted: true, data: normalizeTaskCompletionData(polled.data, originatingTaskName) };
740
+ return {
741
+ attempted: true,
742
+ data: normalizeTaskCompletionData(polled.data, originatingTaskName, responseAdcpVersion)
743
+ };
741
744
  }
742
745
  const waitResult = winner.result;
743
746
  if (waitResult.timed_out) {
@@ -745,7 +748,10 @@ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhook
745
748
  }
746
749
  const webhookBody = waitResult.webhook.body;
747
750
  if (webhookBody?.status === "completed") {
748
- return { attempted: true, data: normalizeTaskCompletionData(webhookBody.result, originatingTaskName) };
751
+ return {
752
+ attempted: true,
753
+ data: normalizeTaskCompletionData(webhookBody.result, originatingTaskName, responseAdcpVersion)
754
+ };
749
755
  }
750
756
  return { attempted: true, taskFailed: true };
751
757
  } catch {
@@ -754,18 +760,19 @@ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhook
754
760
  if (timer) clearTimeout(timer);
755
761
  }
756
762
  }
757
- function normalizeTaskCompletionData(data, taskName) {
763
+ function normalizeTaskCompletionData(data, taskName, adcpVersion) {
758
764
  if (data == null || typeof data !== "object" || Array.isArray(data)) return data;
759
765
  const original = data;
760
- const compat = (0, import_envelope_status_compat.injectLegacyEnvelopeStatus)(original, { toolName: taskName });
766
+ const compatOptions = { toolName: taskName, adcpVersion };
767
+ const compat = (0, import_envelope_status_compat.injectLegacyEnvelopeStatus)(original, compatOptions);
761
768
  if (!("status" in original) && "status" in compat) {
762
769
  const { status: _status, ...rest } = compat;
763
- return (0, import_envelope_status_compat.normalizeLegacyMediaBuyStatusForReturn)(rest, { toolName: taskName });
770
+ return (0, import_envelope_status_compat.normalizeLegacyMediaBuyStatusForReturn)(rest, compatOptions);
764
771
  }
765
772
  if ((taskName === "create_media_buy" || taskName === "update_media_buy") && typeof original.status === "string" && compat.status === "completed" && typeof compat.media_buy_status === "string") {
766
- return (0, import_envelope_status_compat.normalizeLegacyMediaBuyStatusForReturn)({ ...compat, status: original.status }, { toolName: taskName });
773
+ return (0, import_envelope_status_compat.normalizeLegacyMediaBuyStatusForReturn)({ ...compat, status: original.status }, compatOptions);
767
774
  }
768
- return (0, import_envelope_status_compat.normalizeLegacyMediaBuyStatusForReturn)(compat, { toolName: taskName });
775
+ return (0, import_envelope_status_compat.normalizeLegacyMediaBuyStatusForReturn)(compat, compatOptions);
769
776
  }
770
777
  function readEnvIntOrDefault(value, fallback) {
771
778
  if (!value) return fallback;
@@ -5841,7 +5848,12 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
5841
5848
  };
5842
5849
  const hasData = taskResult?.data !== void 0 && taskResult?.data !== null;
5843
5850
  if (passed && hasData && taskResult && !(effectiveStep.task === "sync_accounts" && request.dry_run === true)) {
5844
- const extracted = (0, import_context.extractContextWithProvenance)(effectiveStep.task, taskResult.data, step.id);
5851
+ const extracted = (0, import_context.extractContextWithProvenance)(
5852
+ effectiveStep.task,
5853
+ taskResult.data,
5854
+ step.id,
5855
+ options._serverAdcpVersion ?? options.adcpVersion
5856
+ );
5845
5857
  const conventionUnset = [];
5846
5858
  for (const group of extracted.clearGroups ?? []) {
5847
5859
  if (group.when && !group.when.values.includes(updatedContext[group.when.key])) continue;
@@ -5872,7 +5884,8 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
5872
5884
  step.context_outputs,
5873
5885
  client,
5874
5886
  runState.webhookReceiver,
5875
- effectiveStep.task
5887
+ effectiveStep.task,
5888
+ options._serverAdcpVersion ?? options.adcpVersion
5876
5889
  );
5877
5890
  const extractionData = "data" in taskCompletionResolution ? taskCompletionResolution.data : hasData && taskResult ? taskResult.data : void 0;
5878
5891
  const remappedOutputs = remapTaskCompletionOutputs(step.context_outputs);
@@ -726,7 +726,7 @@ function remapTaskCompletionOutputs(outputs) {
726
726
  return o;
727
727
  });
728
728
  }
729
- async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhookReceiver, originatingTaskName) {
729
+ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhookReceiver, originatingTaskName, responseAdcpVersion) {
730
730
  const hasTaskCompletionPath = outputs.some(
731
731
  (o) => typeof o.path === "string" && o.path.startsWith(TASK_COMPLETION_PATH_PREFIX)
732
732
  );
@@ -779,7 +779,10 @@ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhook
779
779
  if (winner.kind === "poll") {
780
780
  const polled = winner.result;
781
781
  if (polled.success === false) return { attempted: true, taskFailed: true };
782
- return { attempted: true, data: normalizeTaskCompletionData(polled.data, originatingTaskName) };
782
+ return {
783
+ attempted: true,
784
+ data: normalizeTaskCompletionData(polled.data, originatingTaskName, responseAdcpVersion)
785
+ };
783
786
  }
784
787
  const waitResult = winner.result;
785
788
  if (waitResult.timed_out) {
@@ -787,7 +790,10 @@ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhook
787
790
  }
788
791
  const webhookBody = waitResult.webhook.body;
789
792
  if (webhookBody?.status === "completed") {
790
- return { attempted: true, data: normalizeTaskCompletionData(webhookBody.result, originatingTaskName) };
793
+ return {
794
+ attempted: true,
795
+ data: normalizeTaskCompletionData(webhookBody.result, originatingTaskName, responseAdcpVersion)
796
+ };
791
797
  }
792
798
  return { attempted: true, taskFailed: true };
793
799
  } catch {
@@ -796,18 +802,19 @@ async function resolveTaskCompletionOutputs(taskResult, outputs, client, webhook
796
802
  if (timer) clearTimeout(timer);
797
803
  }
798
804
  }
799
- function normalizeTaskCompletionData(data, taskName) {
805
+ function normalizeTaskCompletionData(data, taskName, adcpVersion) {
800
806
  if (data == null || typeof data !== "object" || Array.isArray(data)) return data;
801
807
  const original = data;
802
- const compat = injectLegacyEnvelopeStatus(original, { toolName: taskName });
808
+ const compatOptions = { toolName: taskName, adcpVersion };
809
+ const compat = injectLegacyEnvelopeStatus(original, compatOptions);
803
810
  if (!("status" in original) && "status" in compat) {
804
811
  const { status: _status, ...rest } = compat;
805
- return normalizeLegacyMediaBuyStatusForReturn(rest, { toolName: taskName });
812
+ return normalizeLegacyMediaBuyStatusForReturn(rest, compatOptions);
806
813
  }
807
814
  if ((taskName === "create_media_buy" || taskName === "update_media_buy") && typeof original.status === "string" && compat.status === "completed" && typeof compat.media_buy_status === "string") {
808
- return normalizeLegacyMediaBuyStatusForReturn({ ...compat, status: original.status }, { toolName: taskName });
815
+ return normalizeLegacyMediaBuyStatusForReturn({ ...compat, status: original.status }, compatOptions);
809
816
  }
810
- return normalizeLegacyMediaBuyStatusForReturn(compat, { toolName: taskName });
817
+ return normalizeLegacyMediaBuyStatusForReturn(compat, compatOptions);
811
818
  }
812
819
  function readEnvIntOrDefault(value, fallback) {
813
820
  if (!value) return fallback;
@@ -5883,7 +5890,12 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
5883
5890
  };
5884
5891
  const hasData = taskResult?.data !== void 0 && taskResult?.data !== null;
5885
5892
  if (passed && hasData && taskResult && !(effectiveStep.task === "sync_accounts" && request.dry_run === true)) {
5886
- const extracted = extractContextWithProvenance(effectiveStep.task, taskResult.data, step.id);
5893
+ const extracted = extractContextWithProvenance(
5894
+ effectiveStep.task,
5895
+ taskResult.data,
5896
+ step.id,
5897
+ options._serverAdcpVersion ?? options.adcpVersion
5898
+ );
5887
5899
  const conventionUnset = [];
5888
5900
  for (const group of extracted.clearGroups ?? []) {
5889
5901
  if (group.when && !group.when.values.includes(updatedContext[group.when.key])) continue;
@@ -5914,7 +5926,8 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
5914
5926
  step.context_outputs,
5915
5927
  client,
5916
5928
  runState.webhookReceiver,
5917
- effectiveStep.task
5929
+ effectiveStep.task,
5930
+ options._serverAdcpVersion ?? options.adcpVersion
5918
5931
  );
5919
5932
  const extractionData = "data" in taskCompletionResolution ? taskCompletionResolution.data : hasData && taskResult ? taskResult.data : void 0;
5920
5933
  const remappedOutputs = remapTaskCompletionOutputs(step.context_outputs);
@@ -197,7 +197,7 @@ export interface UpstreamTrafficQueryResult {
197
197
  */
198
198
  export declare function runValidations(validations: StoryboardValidation[], context: ValidationContext): ValidationResult[];
199
199
  /** Capability semver emitted in run summaries and used for advisory expiry. */
200
- export declare const RUNNER_CAPABILITY_VERSION = "16.5.0";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "16.6.0";
201
201
  /** True when a failed validation contributes to the owning step's grade. */
202
202
  export declare function validationFailsStep(result: ValidationResult): boolean;
203
203
  /**
@@ -197,7 +197,7 @@ export interface UpstreamTrafficQueryResult {
197
197
  */
198
198
  export declare function runValidations(validations: StoryboardValidation[], context: ValidationContext): ValidationResult[];
199
199
  /** Capability semver emitted in run summaries and used for advisory expiry. */
200
- export declare const RUNNER_CAPABILITY_VERSION = "16.5.0";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "16.6.0";
201
201
  /** True when a failed validation contributes to the owning step's grade. */
202
202
  export declare function validationFailsStep(result: ValidationResult): boolean;
203
203
  /**
@@ -295,8 +295,11 @@ function validateResponseSchemaForVersion(validation, ctx, taskResult) {
295
295
  return rest;
296
296
  })();
297
297
  const schema = import_response_schemas.TOOL_RESPONSE_SCHEMAS[taskName];
298
- const dataForValidation = Array.isArray(dataWithoutMessage) ? dataWithoutMessage : (0, import_envelope_status_compat.injectLegacyEnvelopeStatus)(dataWithoutMessage, { toolName: taskName });
299
298
  const responseAdcpVersion = ctx.responseAdcpVersion ?? ctx.adcpVersion;
299
+ const dataForValidation = Array.isArray(dataWithoutMessage) ? dataWithoutMessage : (0, import_envelope_status_compat.injectLegacyEnvelopeStatus)(dataWithoutMessage, {
300
+ toolName: taskName,
301
+ adcpVersion: responseAdcpVersion
302
+ });
300
303
  const parseResult = schema?.safeParse(
301
304
  (0, import_response_schemas.prepareResponseForSchemaValidation)(taskName, dataForValidation, responseAdcpVersion)
302
305
  );
@@ -276,8 +276,11 @@ function validateResponseSchemaForVersion(validation, ctx, taskResult) {
276
276
  return rest;
277
277
  })();
278
278
  const schema = TOOL_RESPONSE_SCHEMAS[taskName];
279
- const dataForValidation = Array.isArray(dataWithoutMessage) ? dataWithoutMessage : injectLegacyEnvelopeStatus(dataWithoutMessage, { toolName: taskName });
280
279
  const responseAdcpVersion = ctx.responseAdcpVersion ?? ctx.adcpVersion;
280
+ const dataForValidation = Array.isArray(dataWithoutMessage) ? dataWithoutMessage : injectLegacyEnvelopeStatus(dataWithoutMessage, {
281
+ toolName: taskName,
282
+ adcpVersion: responseAdcpVersion
283
+ });
281
284
  const parseResult = schema?.safeParse(
282
285
  prepareResponseForSchemaValidation(taskName, dataForValidation, responseAdcpVersion)
283
286
  );
@@ -31,6 +31,7 @@ __export(test_controller_exports, {
31
31
  });
32
32
  module.exports = __toCommonJS(test_controller_exports);
33
33
  var import_client = require('./client.js');
34
+ var import_errors = require('../errors/index.js');
34
35
  const TOOL_NAME = "comply_test_controller";
35
36
  const DEFAULT_SANDBOX_ACCOUNT = { brand: { domain: "test.example" }, operator: "test.example", sandbox: true };
36
37
  function buildAccount(options) {
@@ -84,6 +85,8 @@ async function detectController(client, profile, options) {
84
85
  }
85
86
  return { detected: false };
86
87
  } catch (error) {
88
+ if (error instanceof import_errors.ProtocolFeatureUnsupportedError && error.adcpError.details?.feature === "adcp_version")
89
+ throw error;
87
90
  (0, import_client.getLogger)().warn(
88
91
  { tool: TOOL_NAME, error: error instanceof Error ? error.message : String(error) },
89
92
  "comply_test_controller list_scenarios failed \u2014 treating as unavailable"
@@ -1,4 +1,5 @@
1
1
  import { getLogger, resolveAccount } from "./client.mjs";
2
+ import { ProtocolFeatureUnsupportedError } from "../errors/index.mjs";
2
3
  const TOOL_NAME = "comply_test_controller";
3
4
  const DEFAULT_SANDBOX_ACCOUNT = { brand: { domain: "test.example" }, operator: "test.example", sandbox: true };
4
5
  function buildAccount(options) {
@@ -52,6 +53,8 @@ async function detectController(client, profile, options) {
52
53
  }
53
54
  return { detected: false };
54
55
  } catch (error) {
56
+ if (error instanceof ProtocolFeatureUnsupportedError && error.adcpError.details?.feature === "adcp_version")
57
+ throw error;
55
58
  getLogger().warn(
56
59
  { tool: TOOL_NAME, error: error instanceof Error ? error.message : String(error) },
57
60
  "comply_test_controller list_scenarios failed \u2014 treating as unavailable"
@@ -31,4 +31,4 @@ export type AssetInstance = AssetVariant;
31
31
  * switch-case helpers.
32
32
  */
33
33
  export type AssetInstanceType = AssetInstance['asset_type'];
34
- export type { ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
34
+ export type { AssetVariant, ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
@@ -31,4 +31,4 @@ export type AssetInstance = AssetVariant;
31
31
  * switch-case helpers.
32
32
  */
33
33
  export type AssetInstanceType = AssetInstance['asset_type'];
34
- export type { ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
34
+ export type { AssetVariant, ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
@@ -50,3 +50,8 @@ export * from './enum-compat.mjs';
50
50
  export * from './error-details.aliases.mjs';
51
51
  export type { BrandJson, AdagentsJson } from './wellknown-schemas.generated.mjs';
52
52
  export { BrandJsonSchema, AdagentsJsonSchema } from './wellknown-schemas.generated.mjs';
53
+ export type { SearchBrandsRequest, SearchBrandsResponse, ValidatePropertyDeliveryRequest, ValidatePropertyDeliveryResponse, VerifyBrandClaimRequest, VerifyBrandClaimResponse, VerifyBrandClaimsRequestBulk as VerifyBrandClaimsRequest, VerifyBrandClaimsResponseBulk as VerifyBrandClaimsResponse, } from './core.generated.mjs';
54
+ export type { ComplyTestControllerRequest, ComplyTestControllerResponse, GetPrincipalRequest, GetPrincipalResponse, GetTaskStatusRequest, GetTaskStatusResponse, ListTasksRequest, ListTasksResponse, ListTransformersRequest, ListTransformersResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse, SyncPrincipalRequest, SyncPrincipalResponse, ValidateInputRequest, ValidateInputResponse, } from './tools.generated.mjs';
55
+ export type { MediaBuyDeliveryReport } from './media-buy-delivery-report.mjs';
56
+ export type { MediaBuyDeliveryWebhookResult } from './core.generated.mjs';
57
+ export { TargetingOverlayKeys, TargetingOverlaySupportKeys } from './targeting-keys.generated.mjs';
@@ -50,3 +50,8 @@ export * from './enum-compat';
50
50
  export * from './error-details.aliases';
51
51
  export type { BrandJson, AdagentsJson } from './wellknown-schemas.generated';
52
52
  export { BrandJsonSchema, AdagentsJsonSchema } from './wellknown-schemas.generated';
53
+ export type { SearchBrandsRequest, SearchBrandsResponse, ValidatePropertyDeliveryRequest, ValidatePropertyDeliveryResponse, VerifyBrandClaimRequest, VerifyBrandClaimResponse, VerifyBrandClaimsRequestBulk as VerifyBrandClaimsRequest, VerifyBrandClaimsResponseBulk as VerifyBrandClaimsResponse, } from './core.generated';
54
+ export type { ComplyTestControllerRequest, ComplyTestControllerResponse, GetPrincipalRequest, GetPrincipalResponse, GetTaskStatusRequest, GetTaskStatusResponse, ListTasksRequest, ListTasksResponse, ListTransformersRequest, ListTransformersResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse, SyncPrincipalRequest, SyncPrincipalResponse, ValidateInputRequest, ValidateInputResponse, } from './tools.generated';
55
+ export type { MediaBuyDeliveryReport } from './media-buy-delivery-report';
56
+ export type { MediaBuyDeliveryWebhookResult } from './core.generated';
57
+ export { TargetingOverlayKeys, TargetingOverlaySupportKeys } from './targeting-keys.generated';
@@ -20,7 +20,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  var types_exports = {};
21
21
  __export(types_exports, {
22
22
  AdagentsJsonSchema: () => import_wellknown_schemas.AdagentsJsonSchema,
23
- BrandJsonSchema: () => import_wellknown_schemas.BrandJsonSchema
23
+ BrandJsonSchema: () => import_wellknown_schemas.BrandJsonSchema,
24
+ TargetingOverlayKeys: () => import_targeting_keys.TargetingOverlayKeys,
25
+ TargetingOverlaySupportKeys: () => import_targeting_keys.TargetingOverlaySupportKeys
24
26
  });
25
27
  module.exports = __toCommonJS(types_exports);
26
28
  __reExport(types_exports, require('./adcp.js'), module.exports);
@@ -34,10 +36,13 @@ __reExport(types_exports, require('./inline-enums.aliases.js'), module.exports);
34
36
  __reExport(types_exports, require('./enum-compat.js'), module.exports);
35
37
  __reExport(types_exports, require('./error-details.aliases.js'), module.exports);
36
38
  var import_wellknown_schemas = require('./wellknown-schemas.generated.js');
39
+ var import_targeting_keys = require('./targeting-keys.generated.js');
37
40
  // Annotate the CommonJS export names for ESM import in node:
38
41
  0 && (module.exports = {
39
42
  AdagentsJsonSchema,
40
43
  BrandJsonSchema,
44
+ TargetingOverlayKeys,
45
+ TargetingOverlaySupportKeys,
41
46
  ...require('./adcp.js'),
42
47
  ...require('./server-payload-aliases.js'),
43
48
  ...require('./format-asset-slots.js'),
@@ -9,7 +9,10 @@ export * from "./inline-enums.aliases.mjs";
9
9
  export * from "./enum-compat.mjs";
10
10
  export * from "./error-details.aliases.mjs";
11
11
  import { BrandJsonSchema, AdagentsJsonSchema } from "./wellknown-schemas.generated.mjs";
12
+ import { TargetingOverlayKeys, TargetingOverlaySupportKeys } from "./targeting-keys.generated.mjs";
12
13
  export {
13
14
  AdagentsJsonSchema,
14
- BrandJsonSchema
15
+ BrandJsonSchema,
16
+ TargetingOverlayKeys,
17
+ TargetingOverlaySupportKeys
15
18
  };