@adcp/sdk 16.0.0-beta.8 → 16.0.0-beta.9

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 (355) hide show
  1. package/AGENTS.md +3 -3
  2. package/README.md +3 -0
  3. package/bin/adcp.js +10 -13
  4. package/dist/lib/core/AgentClient.d.mts +8 -5
  5. package/dist/lib/core/AgentClient.d.ts +8 -5
  6. package/dist/lib/core/AgentClient.js +9 -4
  7. package/dist/lib/core/AgentClient.mjs +9 -4
  8. package/dist/lib/core/SingleAgentClient.d.mts +19 -112
  9. package/dist/lib/core/SingleAgentClient.d.ts +19 -112
  10. package/dist/lib/core/SingleAgentClient.js +270 -252
  11. package/dist/lib/core/SingleAgentClient.mjs +275 -253
  12. package/dist/lib/core/TaskExecutor.d.mts +1 -16
  13. package/dist/lib/core/TaskExecutor.d.ts +1 -16
  14. package/dist/lib/core/TaskExecutor.js +34 -51
  15. package/dist/lib/core/TaskExecutor.mjs +12 -29
  16. package/dist/lib/core/product-cache.d.mts +3 -1
  17. package/dist/lib/core/product-cache.d.ts +3 -1
  18. package/dist/lib/core/product-cache.js +2 -1
  19. package/dist/lib/core/product-cache.mjs +2 -1
  20. package/dist/lib/errors/index.d.mts +2 -8
  21. package/dist/lib/errors/index.d.ts +2 -8
  22. package/dist/lib/errors/index.js +4 -4
  23. package/dist/lib/errors/index.mjs +4 -4
  24. package/dist/lib/index.d.mts +4 -4
  25. package/dist/lib/index.d.ts +4 -4
  26. package/dist/lib/index.js +0 -14
  27. package/dist/lib/index.mjs +0 -14
  28. package/dist/lib/media-buy/compatibility.d.mts +1 -1
  29. package/dist/lib/media-buy/compatibility.d.ts +1 -1
  30. package/dist/lib/media-buy/compatibility.js +26 -45
  31. package/dist/lib/media-buy/compatibility.mjs +26 -45
  32. package/dist/lib/media-buy/legacy-purchase-continuation.d.mts +2 -2
  33. package/dist/lib/media-buy/legacy-purchase-continuation.d.ts +2 -2
  34. package/dist/lib/protocols/index.js +14 -22
  35. package/dist/lib/protocols/index.mjs +5 -13
  36. package/dist/lib/registry/types.d.mts +3 -2
  37. package/dist/lib/registry/types.d.ts +3 -2
  38. package/dist/lib/registry/types.generated.d.mts +51 -11
  39. package/dist/lib/registry/types.generated.d.ts +51 -11
  40. package/dist/lib/reporting/source/conformance.d.mts +8 -8
  41. package/dist/lib/reporting/source/conformance.d.ts +8 -8
  42. package/dist/lib/reporting/source/manifest.d.mts +27 -27
  43. package/dist/lib/reporting/source/manifest.d.ts +27 -27
  44. package/dist/lib/server/create-adcp-server.js +6 -0
  45. package/dist/lib/server/create-adcp-server.mjs +6 -0
  46. package/dist/lib/testing/compliance/comply.js +0 -8
  47. package/dist/lib/testing/compliance/comply.mjs +0 -8
  48. package/dist/lib/testing/compliance/storyboard-tracks.js +11 -0
  49. package/dist/lib/testing/compliance/storyboard-tracks.mjs +11 -0
  50. package/dist/lib/testing/index.d.mts +2 -0
  51. package/dist/lib/testing/index.d.ts +2 -0
  52. package/dist/lib/testing/index.js +5 -0
  53. package/dist/lib/testing/index.mjs +3 -0
  54. package/dist/lib/testing/scenarios/capabilities.d.mts +2 -2
  55. package/dist/lib/testing/scenarios/capabilities.d.ts +2 -2
  56. package/dist/lib/testing/scenarios/capabilities.js +8 -41
  57. package/dist/lib/testing/scenarios/capabilities.mjs +9 -42
  58. package/dist/lib/testing/storyboard/creative-build-probe.d.mts +34 -0
  59. package/dist/lib/testing/storyboard/creative-build-probe.d.ts +34 -0
  60. package/dist/lib/testing/storyboard/creative-build-probe.js +395 -0
  61. package/dist/lib/testing/storyboard/creative-build-probe.mjs +373 -0
  62. package/dist/lib/testing/storyboard/index.d.mts +2 -0
  63. package/dist/lib/testing/storyboard/index.d.ts +2 -0
  64. package/dist/lib/testing/storyboard/index.js +5 -0
  65. package/dist/lib/testing/storyboard/index.mjs +3 -0
  66. package/dist/lib/testing/storyboard/loader.js +12 -0
  67. package/dist/lib/testing/storyboard/loader.mjs +12 -0
  68. package/dist/lib/testing/storyboard/property-list-reference.d.mts +15 -0
  69. package/dist/lib/testing/storyboard/property-list-reference.d.ts +15 -0
  70. package/dist/lib/testing/storyboard/property-list-reference.js +514 -0
  71. package/dist/lib/testing/storyboard/property-list-reference.mjs +487 -0
  72. package/dist/lib/testing/storyboard/runner.js +318 -58
  73. package/dist/lib/testing/storyboard/runner.mjs +322 -58
  74. package/dist/lib/testing/storyboard/types.d.mts +38 -16
  75. package/dist/lib/testing/storyboard/types.d.ts +38 -16
  76. package/dist/lib/testing/storyboard/types.js +1 -0
  77. package/dist/lib/testing/storyboard/types.mjs +1 -0
  78. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  79. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  80. package/dist/lib/testing/storyboard/validations.js +64 -0
  81. package/dist/lib/testing/storyboard/validations.mjs +67 -1
  82. package/dist/lib/testing/types.d.mts +15 -1
  83. package/dist/lib/testing/types.d.ts +15 -1
  84. package/dist/lib/types/schemas.generated.d.ts +65 -65
  85. package/dist/lib/types/wellknown-schemas.generated.d.mts +21 -21
  86. package/dist/lib/types/wellknown-schemas.generated.d.ts +21 -21
  87. package/dist/lib/utils/adcp-version-config.js +6 -0
  88. package/dist/lib/utils/adcp-version-config.mjs +6 -0
  89. package/dist/lib/utils/capabilities.d.mts +7 -9
  90. package/dist/lib/utils/capabilities.d.ts +7 -9
  91. package/dist/lib/utils/capabilities.js +14 -28
  92. package/dist/lib/utils/capabilities.mjs +14 -27
  93. package/dist/lib/utils/creative-adapter.d.mts +15 -113
  94. package/dist/lib/utils/creative-adapter.d.ts +15 -113
  95. package/dist/lib/utils/creative-adapter.js +7 -106
  96. package/dist/lib/utils/creative-adapter.mjs +7 -102
  97. package/dist/lib/utils/format-renders.d.mts +20 -80
  98. package/dist/lib/utils/format-renders.d.ts +20 -80
  99. package/dist/lib/utils/format-renders.js +7 -67
  100. package/dist/lib/utils/format-renders.mjs +7 -66
  101. package/dist/lib/utils/index.d.mts +1 -2
  102. package/dist/lib/utils/index.d.ts +1 -2
  103. package/dist/lib/utils/index.js +0 -7
  104. package/dist/lib/utils/index.mjs +0 -6
  105. package/dist/lib/utils/preview-normalizer.d.mts +31 -80
  106. package/dist/lib/utils/preview-normalizer.d.ts +31 -80
  107. package/dist/lib/utils/preview-normalizer.js +5 -50
  108. package/dist/lib/utils/preview-normalizer.mjs +5 -49
  109. package/dist/lib/utils/pricing-adapter.d.mts +2 -36
  110. package/dist/lib/utils/pricing-adapter.d.ts +2 -36
  111. package/dist/lib/utils/pricing-adapter.js +0 -105
  112. package/dist/lib/utils/pricing-adapter.mjs +0 -100
  113. package/dist/lib/utils/request-normalizer.d.mts +1 -2
  114. package/dist/lib/utils/request-normalizer.d.ts +1 -2
  115. package/dist/lib/v2/projection/creative-delivery.d.mts +2 -0
  116. package/dist/lib/v2/projection/creative-delivery.d.ts +2 -0
  117. package/dist/lib/v2/projection/creative-delivery.js +7 -0
  118. package/dist/lib/v2/projection/creative-delivery.mjs +6 -0
  119. package/dist/lib/v2/projection/legacy-metadata.d.mts +12 -0
  120. package/dist/lib/v2/projection/legacy-metadata.d.ts +12 -0
  121. package/dist/lib/v2/projection/legacy-metadata.js +41 -1
  122. package/dist/lib/v2/projection/legacy-metadata.mjs +37 -1
  123. package/dist/lib/v2/projection/legacy-normalization.d.mts +1 -1
  124. package/dist/lib/v2/projection/legacy-normalization.d.ts +1 -1
  125. package/dist/lib/v2/projection/v1-to-v2.js +13 -0
  126. package/dist/lib/v2/projection/v1-to-v2.mjs +14 -0
  127. package/dist/lib/validation/client-hooks.d.mts +1 -4
  128. package/dist/lib/validation/client-hooks.d.ts +1 -4
  129. package/dist/lib/validation/get-products-request.d.mts +1 -1
  130. package/dist/lib/validation/get-products-request.d.ts +1 -1
  131. package/dist/lib/validation/schema-loader.js +6 -0
  132. package/dist/lib/validation/schema-loader.mjs +6 -0
  133. package/dist/lib/validation/schema-validator.js +1 -26
  134. package/dist/lib/validation/schema-validator.mjs +1 -26
  135. package/dist/lib/version.d.mts +5 -5
  136. package/dist/lib/version.d.ts +5 -5
  137. package/dist/lib/version.js +3 -5
  138. package/dist/lib/version.mjs +3 -5
  139. package/docs/TYPE-SUMMARY.md +2 -2
  140. package/docs/development/PROTOCOL_DIFFERENCES.md +1 -1
  141. package/docs/guides/CONFORMANCE.md +25 -0
  142. package/docs/guides/CREATIVE-BUILD-PROBE.md +156 -0
  143. package/docs/guides/CREATIVE-DELIVERY.md +45 -6
  144. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +15 -18
  145. package/docs/guides/VALIDATE-YOUR-AGENT.md +5 -0
  146. package/docs/llms.txt +2 -2
  147. package/docs/migration-13-to-14.md +20 -16
  148. package/docs/migration-14.x-rc-worksheet.md +5 -5
  149. package/docs/migration-4.x-to-5.x.md +12 -7
  150. package/docs/migration-drop-adcp-2.md +25 -0
  151. package/package.json +3 -18
  152. package/skills/call-adcp-agent/SKILL.md +23 -25
  153. package/dist/lib/adapters/legacy/v2-5/create_media_buy.d.mts +0 -3
  154. package/dist/lib/adapters/legacy/v2-5/create_media_buy.d.ts +0 -3
  155. package/dist/lib/adapters/legacy/v2-5/create_media_buy.js +0 -33
  156. package/dist/lib/adapters/legacy/v2-5/create_media_buy.mjs +0 -9
  157. package/dist/lib/adapters/legacy/v2-5/get_products.d.mts +0 -8
  158. package/dist/lib/adapters/legacy/v2-5/get_products.d.ts +0 -8
  159. package/dist/lib/adapters/legacy/v2-5/get_products.js +0 -33
  160. package/dist/lib/adapters/legacy/v2-5/get_products.mjs +0 -9
  161. package/dist/lib/adapters/legacy/v2-5/index.d.mts +0 -34
  162. package/dist/lib/adapters/legacy/v2-5/index.d.ts +0 -34
  163. package/dist/lib/adapters/legacy/v2-5/index.js +0 -50
  164. package/dist/lib/adapters/legacy/v2-5/index.mjs +0 -25
  165. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.d.mts +0 -8
  166. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.d.ts +0 -8
  167. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.js +0 -33
  168. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.mjs +0 -9
  169. package/dist/lib/adapters/legacy/v2-5/preview_creative.d.mts +0 -3
  170. package/dist/lib/adapters/legacy/v2-5/preview_creative.d.ts +0 -3
  171. package/dist/lib/adapters/legacy/v2-5/preview_creative.js +0 -33
  172. package/dist/lib/adapters/legacy/v2-5/preview_creative.mjs +0 -9
  173. package/dist/lib/adapters/legacy/v2-5/sync_creatives.d.mts +0 -11
  174. package/dist/lib/adapters/legacy/v2-5/sync_creatives.d.ts +0 -11
  175. package/dist/lib/adapters/legacy/v2-5/sync_creatives.js +0 -32
  176. package/dist/lib/adapters/legacy/v2-5/sync_creatives.mjs +0 -8
  177. package/dist/lib/adapters/legacy/v2-5/types.d.mts +0 -39
  178. package/dist/lib/adapters/legacy/v2-5/types.d.ts +0 -39
  179. package/dist/lib/adapters/legacy/v2-5/types.js +0 -16
  180. package/dist/lib/adapters/legacy/v2-5/types.mjs +0 -0
  181. package/dist/lib/adapters/legacy/v2-5/update_media_buy.d.mts +0 -3
  182. package/dist/lib/adapters/legacy/v2-5/update_media_buy.d.ts +0 -3
  183. package/dist/lib/adapters/legacy/v2-5/update_media_buy.js +0 -35
  184. package/dist/lib/adapters/legacy/v2-5/update_media_buy.mjs +0 -11
  185. package/dist/lib/schemas-data/v2.5/_provenance.json +0 -8
  186. package/dist/lib/schemas-data/v2.5/adagents.json +0 -494
  187. package/dist/lib/schemas-data/v2.5/core/activation-key.json +0 -50
  188. package/dist/lib/schemas-data/v2.5/core/assets/audio-asset.json +0 -32
  189. package/dist/lib/schemas-data/v2.5/core/assets/css-asset.json +0 -21
  190. package/dist/lib/schemas-data/v2.5/core/assets/daast-asset.json +0 -87
  191. package/dist/lib/schemas-data/v2.5/core/assets/html-asset.json +0 -21
  192. package/dist/lib/schemas-data/v2.5/core/assets/image-asset.json +0 -38
  193. package/dist/lib/schemas-data/v2.5/core/assets/javascript-asset.json +0 -21
  194. package/dist/lib/schemas-data/v2.5/core/assets/markdown-asset.json +0 -31
  195. package/dist/lib/schemas-data/v2.5/core/assets/text-asset.json +0 -21
  196. package/dist/lib/schemas-data/v2.5/core/assets/url-asset.json +0 -26
  197. package/dist/lib/schemas-data/v2.5/core/assets/vast-asset.json +0 -87
  198. package/dist/lib/schemas-data/v2.5/core/assets/video-asset.json +0 -44
  199. package/dist/lib/schemas-data/v2.5/core/assets/webhook-asset.json +0 -71
  200. package/dist/lib/schemas-data/v2.5/core/async-response-data.json +0 -88
  201. package/dist/lib/schemas-data/v2.5/core/brand-manifest-ref.json +0 -33
  202. package/dist/lib/schemas-data/v2.5/core/brand-manifest.json +0 -409
  203. package/dist/lib/schemas-data/v2.5/core/context.json +0 -8
  204. package/dist/lib/schemas-data/v2.5/core/creative-asset.json +0 -125
  205. package/dist/lib/schemas-data/v2.5/core/creative-assignment.json +0 -31
  206. package/dist/lib/schemas-data/v2.5/core/creative-filters.json +0 -111
  207. package/dist/lib/schemas-data/v2.5/core/creative-manifest.json +0 -72
  208. package/dist/lib/schemas-data/v2.5/core/creative-policy.json +0 -27
  209. package/dist/lib/schemas-data/v2.5/core/delivery-metrics.json +0 -171
  210. package/dist/lib/schemas-data/v2.5/core/deployment.json +0 -93
  211. package/dist/lib/schemas-data/v2.5/core/destination.json +0 -53
  212. package/dist/lib/schemas-data/v2.5/core/error.json +0 -40
  213. package/dist/lib/schemas-data/v2.5/core/ext.json +0 -8
  214. package/dist/lib/schemas-data/v2.5/core/format-id.json +0 -47
  215. package/dist/lib/schemas-data/v2.5/core/format.json +0 -324
  216. package/dist/lib/schemas-data/v2.5/core/frequency-cap.json +0 -18
  217. package/dist/lib/schemas-data/v2.5/core/mcp-webhook-payload.json +0 -152
  218. package/dist/lib/schemas-data/v2.5/core/measurement.json +0 -48
  219. package/dist/lib/schemas-data/v2.5/core/media-buy.json +0 -62
  220. package/dist/lib/schemas-data/v2.5/core/package.json +0 -72
  221. package/dist/lib/schemas-data/v2.5/core/performance-feedback.json +0 -90
  222. package/dist/lib/schemas-data/v2.5/core/placement.json +0 -34
  223. package/dist/lib/schemas-data/v2.5/core/pricing-option.json +0 -35
  224. package/dist/lib/schemas-data/v2.5/core/product-filters.json +0 -102
  225. package/dist/lib/schemas-data/v2.5/core/product.json +0 -153
  226. package/dist/lib/schemas-data/v2.5/core/promoted-offerings.json +0 -115
  227. package/dist/lib/schemas-data/v2.5/core/promoted-products.json +0 -67
  228. package/dist/lib/schemas-data/v2.5/core/property-id.json +0 -14
  229. package/dist/lib/schemas-data/v2.5/core/property-tag.json +0 -16
  230. package/dist/lib/schemas-data/v2.5/core/property.json +0 -62
  231. package/dist/lib/schemas-data/v2.5/core/protocol-envelope.json +0 -146
  232. package/dist/lib/schemas-data/v2.5/core/publisher-property-selector.json +0 -92
  233. package/dist/lib/schemas-data/v2.5/core/push-notification-config.json +0 -48
  234. package/dist/lib/schemas-data/v2.5/core/reporting-capabilities.json +0 -71
  235. package/dist/lib/schemas-data/v2.5/core/response.json +0 -24
  236. package/dist/lib/schemas-data/v2.5/core/signal-filters.json +0 -35
  237. package/dist/lib/schemas-data/v2.5/core/start-timing.json +0 -18
  238. package/dist/lib/schemas-data/v2.5/core/sub-asset.json +0 -79
  239. package/dist/lib/schemas-data/v2.5/core/targeting.json +0 -50
  240. package/dist/lib/schemas-data/v2.5/core/tasks-get-request.json +0 -43
  241. package/dist/lib/schemas-data/v2.5/core/tasks-get-response.json +0 -166
  242. package/dist/lib/schemas-data/v2.5/core/tasks-list-request.json +0 -192
  243. package/dist/lib/schemas-data/v2.5/core/tasks-list-response.json +0 -183
  244. package/dist/lib/schemas-data/v2.5/creative/asset-types/index.json +0 -101
  245. package/dist/lib/schemas-data/v2.5/creative/list-creative-formats-request.json +0 -73
  246. package/dist/lib/schemas-data/v2.5/creative/list-creative-formats-response.json +0 -61
  247. package/dist/lib/schemas-data/v2.5/creative/preview-creative-request.json +0 -164
  248. package/dist/lib/schemas-data/v2.5/creative/preview-creative-response.json +0 -245
  249. package/dist/lib/schemas-data/v2.5/creative/preview-render.json +0 -225
  250. package/dist/lib/schemas-data/v2.5/enums/adcp-domain.json +0 -11
  251. package/dist/lib/schemas-data/v2.5/enums/asset-content-type.json +0 -22
  252. package/dist/lib/schemas-data/v2.5/enums/auth-scheme.json +0 -11
  253. package/dist/lib/schemas-data/v2.5/enums/available-metric.json +0 -18
  254. package/dist/lib/schemas-data/v2.5/enums/channels.json +0 -18
  255. package/dist/lib/schemas-data/v2.5/enums/co-branding-requirement.json +0 -12
  256. package/dist/lib/schemas-data/v2.5/enums/creative-action.json +0 -14
  257. package/dist/lib/schemas-data/v2.5/enums/creative-agent-capability.json +0 -13
  258. package/dist/lib/schemas-data/v2.5/enums/creative-sort-field.json +0 -15
  259. package/dist/lib/schemas-data/v2.5/enums/creative-status.json +0 -19
  260. package/dist/lib/schemas-data/v2.5/enums/daast-tracking-event.json +0 -20
  261. package/dist/lib/schemas-data/v2.5/enums/daast-version.json +0 -11
  262. package/dist/lib/schemas-data/v2.5/enums/delivery-type.json +0 -15
  263. package/dist/lib/schemas-data/v2.5/enums/dimension-unit.json +0 -13
  264. package/dist/lib/schemas-data/v2.5/enums/feed-format.json +0 -12
  265. package/dist/lib/schemas-data/v2.5/enums/feedback-source.json +0 -13
  266. package/dist/lib/schemas-data/v2.5/enums/format-category.json +0 -16
  267. package/dist/lib/schemas-data/v2.5/enums/format-id-parameter.json +0 -11
  268. package/dist/lib/schemas-data/v2.5/enums/frequency-cap-scope.json +0 -13
  269. package/dist/lib/schemas-data/v2.5/enums/history-entry-type.json +0 -11
  270. package/dist/lib/schemas-data/v2.5/enums/http-method.json +0 -11
  271. package/dist/lib/schemas-data/v2.5/enums/identifier-types.json +0 -34
  272. package/dist/lib/schemas-data/v2.5/enums/javascript-module-type.json +0 -12
  273. package/dist/lib/schemas-data/v2.5/enums/landing-page-requirement.json +0 -12
  274. package/dist/lib/schemas-data/v2.5/enums/markdown-flavor.json +0 -11
  275. package/dist/lib/schemas-data/v2.5/enums/media-buy-status.json +0 -19
  276. package/dist/lib/schemas-data/v2.5/enums/metric-type.json +0 -17
  277. package/dist/lib/schemas-data/v2.5/enums/notification-type.json +0 -13
  278. package/dist/lib/schemas-data/v2.5/enums/pacing.json +0 -17
  279. package/dist/lib/schemas-data/v2.5/enums/preview-output-format.json +0 -11
  280. package/dist/lib/schemas-data/v2.5/enums/pricing-model.json +0 -25
  281. package/dist/lib/schemas-data/v2.5/enums/property-type.json +0 -16
  282. package/dist/lib/schemas-data/v2.5/enums/publisher-identifier-types.json +0 -19
  283. package/dist/lib/schemas-data/v2.5/enums/reporting-frequency.json +0 -12
  284. package/dist/lib/schemas-data/v2.5/enums/signal-catalog-type.json +0 -12
  285. package/dist/lib/schemas-data/v2.5/enums/sort-direction.json +0 -11
  286. package/dist/lib/schemas-data/v2.5/enums/standard-format-ids.json +0 -103
  287. package/dist/lib/schemas-data/v2.5/enums/task-status.json +0 -29
  288. package/dist/lib/schemas-data/v2.5/enums/task-type.json +0 -27
  289. package/dist/lib/schemas-data/v2.5/enums/update-frequency.json +0 -13
  290. package/dist/lib/schemas-data/v2.5/enums/url-asset-type.json +0 -12
  291. package/dist/lib/schemas-data/v2.5/enums/validation-mode.json +0 -11
  292. package/dist/lib/schemas-data/v2.5/enums/vast-tracking-event.json +0 -25
  293. package/dist/lib/schemas-data/v2.5/enums/vast-version.json +0 -14
  294. package/dist/lib/schemas-data/v2.5/enums/webhook-response-type.json +0 -13
  295. package/dist/lib/schemas-data/v2.5/enums/webhook-security-method.json +0 -12
  296. package/dist/lib/schemas-data/v2.5/index.json +0 -604
  297. package/dist/lib/schemas-data/v2.5/media-buy/build-creative-request.json +0 -31
  298. package/dist/lib/schemas-data/v2.5/media-buy/build-creative-response.json +0 -65
  299. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-input-required.json +0 -31
  300. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-submitted.json +0 -16
  301. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-working.json +0 -36
  302. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-request.json +0 -126
  303. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-response.json +0 -97
  304. package/dist/lib/schemas-data/v2.5/media-buy/get-media-buy-delivery-request.json +0 -54
  305. package/dist/lib/schemas-data/v2.5/media-buy/get-media-buy-delivery-response.json +0 -285
  306. package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-input-required.json +0 -38
  307. package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-submitted.json +0 -21
  308. package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-working.json +0 -34
  309. package/dist/lib/schemas-data/v2.5/media-buy/get-products-request.json +0 -28
  310. package/dist/lib/schemas-data/v2.5/media-buy/get-products-response.json +0 -33
  311. package/dist/lib/schemas-data/v2.5/media-buy/list-authorized-properties-request.json +0 -26
  312. package/dist/lib/schemas-data/v2.5/media-buy/list-authorized-properties-response.json +0 -70
  313. package/dist/lib/schemas-data/v2.5/media-buy/list-creative-formats-request.json +0 -58
  314. package/dist/lib/schemas-data/v2.5/media-buy/list-creative-formats-response.json +0 -61
  315. package/dist/lib/schemas-data/v2.5/media-buy/list-creatives-request.json +0 -137
  316. package/dist/lib/schemas-data/v2.5/media-buy/list-creatives-response.json +0 -437
  317. package/dist/lib/schemas-data/v2.5/media-buy/package-request.json +0 -80
  318. package/dist/lib/schemas-data/v2.5/media-buy/provide-performance-feedback-request.json +0 -88
  319. package/dist/lib/schemas-data/v2.5/media-buy/provide-performance-feedback-response.json +0 -66
  320. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-input-required.json +0 -25
  321. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-submitted.json +0 -16
  322. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-working.json +0 -46
  323. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-request.json +0 -178
  324. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-response.json +0 -149
  325. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-input-required.json +0 -24
  326. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-submitted.json +0 -16
  327. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-working.json +0 -36
  328. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-request.json +0 -129
  329. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-response.json +0 -99
  330. package/dist/lib/schemas-data/v2.5/pricing-options/cpc-option.json +0 -52
  331. package/dist/lib/schemas-data/v2.5/pricing-options/cpcv-option.json +0 -52
  332. package/dist/lib/schemas-data/v2.5/pricing-options/cpm-auction-option.json +0 -81
  333. package/dist/lib/schemas-data/v2.5/pricing-options/cpm-fixed-option.json +0 -52
  334. package/dist/lib/schemas-data/v2.5/pricing-options/cpp-option.json +0 -73
  335. package/dist/lib/schemas-data/v2.5/pricing-options/cpv-option.json +0 -88
  336. package/dist/lib/schemas-data/v2.5/pricing-options/flat-rate-option.json +0 -93
  337. package/dist/lib/schemas-data/v2.5/pricing-options/vcpm-auction-option.json +0 -81
  338. package/dist/lib/schemas-data/v2.5/pricing-options/vcpm-fixed-option.json +0 -52
  339. package/dist/lib/schemas-data/v2.5/protocols/adcp-extension.json +0 -33
  340. package/dist/lib/schemas-data/v2.5/signals/activate-signal-request.json +0 -32
  341. package/dist/lib/schemas-data/v2.5/signals/activate-signal-response.json +0 -68
  342. package/dist/lib/schemas-data/v2.5/signals/get-signals-request.json +0 -59
  343. package/dist/lib/schemas-data/v2.5/signals/get-signals-response.json +0 -100
  344. package/dist/lib/types/v2-5/index.d.mts +0 -1
  345. package/dist/lib/types/v2-5/index.d.ts +0 -1
  346. package/dist/lib/types/v2-5/index.js +0 -22
  347. package/dist/lib/types/v2-5/index.mjs +0 -1
  348. package/dist/lib/types/v2-5/tools.generated.d.mts +0 -3568
  349. package/dist/lib/types/v2-5/tools.generated.d.ts +0 -3568
  350. package/dist/lib/types/v2-5/tools.generated.js +0 -16
  351. package/dist/lib/types/v2-5/tools.generated.mjs +0 -0
  352. package/dist/lib/utils/sync-creatives-adapter.d.mts +0 -33
  353. package/dist/lib/utils/sync-creatives-adapter.d.ts +0 -33
  354. package/dist/lib/utils/sync-creatives-adapter.js +0 -83
  355. package/dist/lib/utils/sync-creatives-adapter.mjs +0 -59
package/AGENTS.md CHANGED
@@ -19,7 +19,7 @@ This document contains essential guidelines for AI coding assistants (Claude, Co
19
19
 
20
20
  **Testing an agent for conformance?** — Read `docs/guides/CONFORMANCE.md` and call `runConformance(agentUrl, opts)` from `@adcp/sdk/conformance`. Property-based fuzzing against the bundled JSON schemas; stateless tier covers 11 discovery tools across every protocol.
21
21
 
22
- **Migration guides** — [Account change feed](docs/migration-account-change-feed.md) (wake-up parsing, guarded bootstrap/drain, subscriber registration and ownership boundaries); `docs/migration-6.6-to-6.7.md` (fifteen adopter recipes; two breaking changes — `'implicit'` enforces inline-`account_id` refusal and `SalesPlatform` split into `SalesCorePlatform & SalesIngestionPlatform`; plus `definePlatform` helpers, `composeMethod`, `accounts.resolve` security presets, `accounts.upsert/list/syncGovernance(ctx)`, typed errors, `issues[].hint`, `BuyerAgentRegistry`, `createTenantRegistry`, `createOAuthPassthroughResolver`, `createRosterAccountStore`, `createTenantStore` w/ built-in tenant gate, `MEDIA_BUY_TRANSITIONS` lifecycle helpers, `createMediaBuyStore` for `targeting_overlay` echo, `NoAccountCtx` narrow, `refAccountId(ref)`); `docs/migration-5.x-to-6.x.md` (5 → 6 framework shape); `docs/migration-4.x-to-5.x.md` (4 → 5); `docs/migration-buyer-agent-registry.md` (registry deep-dive).
22
+ **Migration guides** — [AdCP 2 retirement](docs/migration-drop-adcp-2.md) (AdCP 3-only discovery, removed compatibility APIs, and last supporting SDK pins); [Account change feed](docs/migration-account-change-feed.md) (wake-up parsing, guarded bootstrap/drain, subscriber registration and ownership boundaries); `docs/migration-6.6-to-6.7.md` (fifteen adopter recipes; two breaking changes — `'implicit'` enforces inline-`account_id` refusal and `SalesPlatform` split into `SalesCorePlatform & SalesIngestionPlatform`; plus `definePlatform` helpers, `composeMethod`, `accounts.resolve` security presets, `accounts.upsert/list/syncGovernance(ctx)`, typed errors, `issues[].hint`, `BuyerAgentRegistry`, `createTenantRegistry`, `createOAuthPassthroughResolver`, `createRosterAccountStore`, `createTenantStore` w/ built-in tenant gate, `MEDIA_BUY_TRANSITIONS` lifecycle helpers, `createMediaBuyStore` for `targeting_overlay` echo, `NoAccountCtx` narrow, `refAccountId(ref)`); `docs/migration-5.x-to-6.x.md` (5 → 6 framework shape); `docs/migration-4.x-to-5.x.md` (4 → 5); `docs/migration-buyer-agent-registry.md` (registry deep-dive).
23
23
 
24
24
  **Putting credentials in `ctx_metadata`?** — Don't. Read `docs/guides/CTX-METADATA-SAFETY.md` — wire-strip protects buyer responses but not log lines / error envelopes / heap dumps / adopter strings. Re-derive bearers per request; embed only non-secret upstream IDs.
25
25
 
@@ -263,7 +263,7 @@ npm run generate-zod-schemas # Generate runtime validation
263
263
 
264
264
  ### Wire-version compat (v3 SDK ↔ legacy sellers)
265
265
 
266
- The SDK speaks one AdCP major (`ADCP_VERSION` in `src/lib/version.ts`, currently `3.2.5`) on its public surface and adapts to legacy sellers underneath. v2.5 is the only active legacy shim; the recipe for adding a new one (e.g. v3 when the SDK pin moves to v4) lives in [`docs/development/WIRE-VERSION-COMPAT.md`](https://github.com/adcontextprotocol/adcp-client/blob/main/docs/development/WIRE-VERSION-COMPAT.md). Touch that doc whenever you add to `src/lib/adapters/legacy/`, `src/lib/types/v*-*/`, or `schemas/cache/<version>/`.
266
+ The SDK speaks one AdCP major (`ADCP_VERSION` in `src/lib/version.ts`, currently `3.2.5`) on its public surface and adapts to legacy sellers underneath. AdCP 2 support has been removed following its August 1, 2026 end of life. Maintained AdCP 3 compatibility and the policy for future major-version support are documented in [`docs/development/WIRE-VERSION-COMPAT.md`](https://github.com/adcontextprotocol/adcp-client/blob/main/docs/development/WIRE-VERSION-COMPAT.md). Touch that doc whenever you add to `src/lib/adapters/legacy/`, `src/lib/types/v*-*/`, or `schemas/cache/<version>/`.
267
267
 
268
268
  ## Testing Strategies
269
269
 
@@ -317,7 +317,7 @@ The pattern:
317
317
 
318
318
  - `normalizeRequestParams()` runs before validation, filling in derivable fields
319
319
  - `validateRequest()` runs Zod schemas after normalization
320
- - `adaptRequestForServerVersion()` handles v3→v2 downgrades for older servers
320
+ - `adaptRequestForServerVersion()` adapts requests to maintained AdCP 3 releases; AdCP 2 targets are rejected
321
321
 
322
322
  **Never add a required field without a backwards-compatible default or inference path.**
323
323
 
package/README.md CHANGED
@@ -34,6 +34,8 @@ npm install @adcp/sdk@adcp-3.1 # 13.x, maintained AdCP 3.1 line
34
34
  npm install @adcp/sdk@adcp-3.0 # 7.11.x, AdCP 3.0
35
35
  ```
36
36
 
37
+ AdCP 2 reached end of life on August 1, 2026. This checkout supports AdCP 3 agents only; review the [AdCP 2 retirement guide](./docs/migration-drop-adcp-2.md) before upgrading an integration that still calls AdCP 2 sellers.
38
+
37
39
  Upgrading to SDK 14? Read the [release-bound upgrade worksheet](./docs/migration-14.x-rc-worksheet.md), then use the [13-to-14](./docs/migration-13-to-14.md) or [12-to-14](./docs/migration-12-to-14.md) migration guide. The [prerelease history](./docs/releases/14.0.0-beta.0.md) covers changes made during the 14.0 beta cycle. The npm `latest` tag tracks SDK 14 (AdCP 3.2); SDK 13 stays available on `adcp-3.1` as the maintained AdCP 3.1 line. SDK 14 requires Node.js `^20.19.0 || >=22.12.0`. Older paths: [12-to-13](./docs/migration-12-to-13.md), **[MIGRATION-v8.md](./MIGRATION-v8.md)**, and [8.0-to-8.1](./docs/migration-8.0-to-8.1.md).
38
40
 
39
41
  ### Narrow type imports (`@adcp/sdk/types/<tool>`)
@@ -103,6 +105,7 @@ Start with the persona guide that matches your job:
103
105
  - [Build a seller](./docs/guides/SELLER-QUICKSTART-3.2.md)
104
106
  - [Call a seller](./docs/guides/BUYER-QUICKSTART-3.2.md)
105
107
  - [Adopt the account change feed](./docs/migration-account-change-feed.md)
108
+ - [Upgrade an integration that still uses AdCP 2](./docs/migration-drop-adcp-2.md)
106
109
  - [Upgrade from SDK 13](./docs/migration-13-to-14.md)
107
110
  - [Add AdCP to an existing platform](./docs/guides/EXISTING-PLATFORM.md)
108
111
  - [Run in production](./docs/guides/PRODUCTION-DURABILITY.md)
package/bin/adcp.js CHANGED
@@ -2023,7 +2023,6 @@ OPTIONS:
2023
2023
  --wait Wait for async/webhook responses
2024
2024
  --json Raw JSON output
2025
2025
  --debug Debug output
2026
- --allow-v2 Suppress the v2-sunset warning (unsupported since 2026-04-20)
2027
2026
  --help, -h Show help
2028
2027
 
2029
2028
  BUILT-IN AGENTS:
@@ -2121,7 +2120,7 @@ RUN OPTIONS (full assessment):
2121
2120
  --media-buy-lifecycle-compat
2122
2121
  Route compact media-buy storyboard steps through the
2123
2122
  SDK compatibility coordinator so the same storyboard can
2124
- exercise established v2.5–3.2 sellers.
2123
+ exercise established AdCP 3.0–3.2 sellers.
2125
2124
  --media-buy-compat-losses LOSSES
2126
2125
  Comma-separated guarantee losses explicitly accepted by
2127
2126
  that coordinator (for example feed_version_not_atomic).
@@ -4222,7 +4221,7 @@ function printFixtureResolution(records, coverageGaps) {
4222
4221
  const scope = record.product_handle ? `${record.product_handle}/` : '';
4223
4222
  if (record.status === 'resolved') {
4224
4223
  const ids = record.seller_ids || {};
4225
- const sellerId = ids.pricing_option_id || ids.product_id || '?';
4224
+ const sellerId = ids.pricing_option_id || ids.product_id || ids.capability_id || ids.format_id?.id || '?';
4226
4225
  console.log(` ✅ ${record.fixture_type} ${scope}${record.handle} → ${sellerId} (${record.strategy})`);
4227
4226
  } else if (record.status === 'unsatisfied') {
4228
4227
  continue;
@@ -5841,6 +5840,12 @@ function formatVerdict(verdict) {
5841
5840
 
5842
5841
  async function main() {
5843
5842
  const args = process.argv.slice(2);
5843
+ if (args.some(arg => arg === '--allow-v2' || arg.startsWith('--allow-v2='))) {
5844
+ console.error(
5845
+ 'ERROR: --allow-v2 has been removed. AdCP 2 reached end of life on 2026-08-01; upgrade the agent to AdCP 3. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/migration-drop-adcp-2.md'
5846
+ );
5847
+ process.exit(2);
5848
+ }
5844
5849
  if (args[0] === 'identity') return require('./adcp-identity.js').handleIdentityCommand(args.slice(1));
5845
5850
 
5846
5851
  // `--version` / `-v` is handled before subcommands and before the
@@ -5859,14 +5864,6 @@ async function main() {
5859
5864
  // skipped in CI, non-TTY, --json, and when ADCP_SKIP_VERSION_CHECK=1.
5860
5865
  scheduleVersionCheck(LIBRARY_VERSION);
5861
5866
 
5862
- // Global: suppress the v2-sunset warning before any subcommand runs.
5863
- // v2 went unsupported on 2026-04-20 (AdCP 3.0 GA, adcp#2220) — the library
5864
- // warns whenever an agent advertises v2 capabilities. The flag is for
5865
- // legacy holdouts who know what they're doing.
5866
- if (args.includes('--allow-v2')) {
5867
- process.env.ADCP_ALLOW_V2 = '1';
5868
- }
5869
-
5870
5867
  // Handle subcommands before global --help so their own --help works
5871
5868
  if (args[0] === 'registry') {
5872
5869
  const code = await handleRegistryCommand(args.slice(1));
@@ -5877,7 +5874,7 @@ async function main() {
5877
5874
  if (args[0] === 'init') {
5878
5875
  const { handleInitCommand } = require('./adcp-project.js');
5879
5876
  await handleInitCommand(
5880
- args.slice(1).filter(arg => arg !== '--allow-v2' && arg !== '--allow-http'),
5877
+ args.slice(1).filter(arg => arg !== '--allow-http'),
5881
5878
  { libraryVersion: LIBRARY_VERSION }
5882
5879
  );
5883
5880
  return;
@@ -5886,7 +5883,7 @@ async function main() {
5886
5883
  if (args[0] === 'doctor') {
5887
5884
  const { handleDoctorCommand } = require('./adcp-project.js');
5888
5885
  await handleDoctorCommand(
5889
- args.slice(1).filter(arg => arg !== '--allow-v2' && arg !== '--allow-http'),
5886
+ args.slice(1).filter(arg => arg !== '--allow-http'),
5890
5887
  {
5891
5888
  libraryVersion: LIBRARY_VERSION,
5892
5889
  adcpVersion: ADCP_VERSION,
@@ -160,7 +160,7 @@ export type TaskRequestFor<K extends AdcpTaskName> = TaskRequestTypeMap[K];
160
160
  * - `governance` — buyer-side governance config
161
161
  * - `requireV3ForMutations` — enforce AdCP v3 before dispatching mutating tools
162
162
  */
163
- export type InProcessAgentClientConfig = Pick<SingleAgentClientConfig, 'adcpVersion' | 'wireAdcpVersion' | 'versionEnvelope' | 'debug' | 'validation' | 'governance' | 'onActivity' | 'legacyFormatConverter' | 'projectionCatalogs' | 'canonicalFormatLegacyResolver' | 'validateFeatures' | 'requireV3ForMutations' | 'allowV2' | 'workingTimeout' | 'defaultMaxClarifications' | 'persistConversations' | 'deferredStorage' | 'resolveDeferredAgent' | 'deferredTaskTtlSeconds'> & {
163
+ export type InProcessAgentClientConfig = Pick<SingleAgentClientConfig, 'adcpVersion' | 'wireAdcpVersion' | 'versionEnvelope' | 'debug' | 'validation' | 'governance' | 'onActivity' | 'legacyFormatConverter' | 'projectionCatalogs' | 'canonicalFormatLegacyResolver' | 'validateFeatures' | 'requireV3ForMutations' | 'workingTimeout' | 'defaultMaxClarifications' | 'persistConversations' | 'deferredStorage' | 'resolveDeferredAgent' | 'deferredTaskTtlSeconds'> & {
164
164
  /**
165
165
  * Human-readable name for this agent, used in debug logs and
166
166
  * `getAgentName()`. Defaults to `'in-process'`.
@@ -536,8 +536,10 @@ export declare class AgentClient {
536
536
  /**
537
537
  * Resolve the creative wire mode used by canonical writes without sending a
538
538
  * mutation. Uses capabilities, this tool's input schema, and the client wire
539
- * pin. Older peers with insufficient evidence return `unknown` and require
540
- * an unambiguous legacy reference during projection; conflicting evidence
539
+ * pin. Older peers with insufficient evidence return `unknown`; a matching
540
+ * seller-advertised product option can establish canonical delivery for an
541
+ * individual 3.1 write. Otherwise projection requires an unambiguous legacy
542
+ * reference. Conflicting evidence
541
543
  * or unproven support with a 3.2+ buyer pin throws `CreativeFormatCapabilityError`.
542
544
  */
543
545
  resolveCreativeFormatWireMode(taskType: 'sync_creatives' | 'create_media_buy' | 'update_media_buy', options?: Pick<TaskOptions, 'signal' | 'transport'>): Promise<CreativeFormatWireMode>;
@@ -553,13 +555,12 @@ export declare class AgentClient {
553
555
  * Return the seller's declared `adcp.idempotency.replay_ttl_seconds`, or
554
556
  * throw when a v3 seller omits the (required) declaration.
555
557
  *
556
- * Returns `undefined` for v2 agents — v2 pre-dates the idempotency envelope.
557
558
  */
558
559
  getIdempotencyReplayTtlSeconds(): Promise<number | undefined>;
559
560
  /**
560
561
  * Assert that the seller's capabilities corroborate this client's pinned
561
562
  * AdCP major (per `getAdcpVersion()`). Throws `VersionUnsupportedError`
562
- * otherwise. Set `ADCP_ALLOW_V2=1` to bypass.
563
+ * otherwise.
563
564
  */
564
565
  requireSupportedMajor(taskType?: string): Promise<void>;
565
566
  /**
@@ -739,6 +740,8 @@ export declare class AgentClient {
739
740
  * Get the agent protocol
740
741
  */
741
742
  getProtocol(): 'mcp' | 'a2a';
743
+ /** Resolved MCP endpoint already used by this client; never performs discovery. */
744
+ getDiscoveredMcpEndpoint(): string | undefined;
742
745
  /**
743
746
  * Get the canonical base URL for this agent
744
747
  *
@@ -160,7 +160,7 @@ export type TaskRequestFor<K extends AdcpTaskName> = TaskRequestTypeMap[K];
160
160
  * - `governance` — buyer-side governance config
161
161
  * - `requireV3ForMutations` — enforce AdCP v3 before dispatching mutating tools
162
162
  */
163
- export type InProcessAgentClientConfig = Pick<SingleAgentClientConfig, 'adcpVersion' | 'wireAdcpVersion' | 'versionEnvelope' | 'debug' | 'validation' | 'governance' | 'onActivity' | 'legacyFormatConverter' | 'projectionCatalogs' | 'canonicalFormatLegacyResolver' | 'validateFeatures' | 'requireV3ForMutations' | 'allowV2' | 'workingTimeout' | 'defaultMaxClarifications' | 'persistConversations' | 'deferredStorage' | 'resolveDeferredAgent' | 'deferredTaskTtlSeconds'> & {
163
+ export type InProcessAgentClientConfig = Pick<SingleAgentClientConfig, 'adcpVersion' | 'wireAdcpVersion' | 'versionEnvelope' | 'debug' | 'validation' | 'governance' | 'onActivity' | 'legacyFormatConverter' | 'projectionCatalogs' | 'canonicalFormatLegacyResolver' | 'validateFeatures' | 'requireV3ForMutations' | 'workingTimeout' | 'defaultMaxClarifications' | 'persistConversations' | 'deferredStorage' | 'resolveDeferredAgent' | 'deferredTaskTtlSeconds'> & {
164
164
  /**
165
165
  * Human-readable name for this agent, used in debug logs and
166
166
  * `getAgentName()`. Defaults to `'in-process'`.
@@ -536,8 +536,10 @@ export declare class AgentClient {
536
536
  /**
537
537
  * Resolve the creative wire mode used by canonical writes without sending a
538
538
  * mutation. Uses capabilities, this tool's input schema, and the client wire
539
- * pin. Older peers with insufficient evidence return `unknown` and require
540
- * an unambiguous legacy reference during projection; conflicting evidence
539
+ * pin. Older peers with insufficient evidence return `unknown`; a matching
540
+ * seller-advertised product option can establish canonical delivery for an
541
+ * individual 3.1 write. Otherwise projection requires an unambiguous legacy
542
+ * reference. Conflicting evidence
541
543
  * or unproven support with a 3.2+ buyer pin throws `CreativeFormatCapabilityError`.
542
544
  */
543
545
  resolveCreativeFormatWireMode(taskType: 'sync_creatives' | 'create_media_buy' | 'update_media_buy', options?: Pick<TaskOptions, 'signal' | 'transport'>): Promise<CreativeFormatWireMode>;
@@ -553,13 +555,12 @@ export declare class AgentClient {
553
555
  * Return the seller's declared `adcp.idempotency.replay_ttl_seconds`, or
554
556
  * throw when a v3 seller omits the (required) declaration.
555
557
  *
556
- * Returns `undefined` for v2 agents — v2 pre-dates the idempotency envelope.
557
558
  */
558
559
  getIdempotencyReplayTtlSeconds(): Promise<number | undefined>;
559
560
  /**
560
561
  * Assert that the seller's capabilities corroborate this client's pinned
561
562
  * AdCP major (per `getAdcpVersion()`). Throws `VersionUnsupportedError`
562
- * otherwise. Set `ADCP_ALLOW_V2=1` to bypass.
563
+ * otherwise.
563
564
  */
564
565
  requireSupportedMajor(taskType?: string): Promise<void>;
565
566
  /**
@@ -739,6 +740,8 @@ export declare class AgentClient {
739
740
  * Get the agent protocol
740
741
  */
741
742
  getProtocol(): 'mcp' | 'a2a';
743
+ /** Resolved MCP endpoint already used by this client; never performs discovery. */
744
+ getDiscoveredMcpEndpoint(): string | undefined;
742
745
  /**
743
746
  * Get the canonical base URL for this agent
744
747
  *
@@ -794,8 +794,10 @@ class AgentClient {
794
794
  /**
795
795
  * Resolve the creative wire mode used by canonical writes without sending a
796
796
  * mutation. Uses capabilities, this tool's input schema, and the client wire
797
- * pin. Older peers with insufficient evidence return `unknown` and require
798
- * an unambiguous legacy reference during projection; conflicting evidence
797
+ * pin. Older peers with insufficient evidence return `unknown`; a matching
798
+ * seller-advertised product option can establish canonical delivery for an
799
+ * individual 3.1 write. Otherwise projection requires an unambiguous legacy
800
+ * reference. Conflicting evidence
799
801
  * or unproven support with a 3.2+ buyer pin throws `CreativeFormatCapabilityError`.
800
802
  */
801
803
  async resolveCreativeFormatWireMode(taskType, options) {
@@ -821,7 +823,6 @@ class AgentClient {
821
823
  * Return the seller's declared `adcp.idempotency.replay_ttl_seconds`, or
822
824
  * throw when a v3 seller omits the (required) declaration.
823
825
  *
824
- * Returns `undefined` for v2 agents — v2 pre-dates the idempotency envelope.
825
826
  */
826
827
  async getIdempotencyReplayTtlSeconds() {
827
828
  return this.client.getIdempotencyReplayTtlSeconds();
@@ -829,7 +830,7 @@ class AgentClient {
829
830
  /**
830
831
  * Assert that the seller's capabilities corroborate this client's pinned
831
832
  * AdCP major (per `getAdcpVersion()`). Throws `VersionUnsupportedError`
832
- * otherwise. Set `ADCP_ALLOW_V2=1` to bypass.
833
+ * otherwise.
833
834
  */
834
835
  async requireSupportedMajor(taskType = "request") {
835
836
  return this.client.requireSupportedMajor(taskType);
@@ -1173,6 +1174,10 @@ class AgentClient {
1173
1174
  getProtocol() {
1174
1175
  return this.client.getProtocol();
1175
1176
  }
1177
+ /** Resolved MCP endpoint already used by this client; never performs discovery. */
1178
+ getDiscoveredMcpEndpoint() {
1179
+ return this.client.getDiscoveredMcpEndpoint();
1180
+ }
1176
1181
  /**
1177
1182
  * Get the canonical base URL for this agent
1178
1183
  *
@@ -762,8 +762,10 @@ class AgentClient {
762
762
  /**
763
763
  * Resolve the creative wire mode used by canonical writes without sending a
764
764
  * mutation. Uses capabilities, this tool's input schema, and the client wire
765
- * pin. Older peers with insufficient evidence return `unknown` and require
766
- * an unambiguous legacy reference during projection; conflicting evidence
765
+ * pin. Older peers with insufficient evidence return `unknown`; a matching
766
+ * seller-advertised product option can establish canonical delivery for an
767
+ * individual 3.1 write. Otherwise projection requires an unambiguous legacy
768
+ * reference. Conflicting evidence
767
769
  * or unproven support with a 3.2+ buyer pin throws `CreativeFormatCapabilityError`.
768
770
  */
769
771
  async resolveCreativeFormatWireMode(taskType, options) {
@@ -789,7 +791,6 @@ class AgentClient {
789
791
  * Return the seller's declared `adcp.idempotency.replay_ttl_seconds`, or
790
792
  * throw when a v3 seller omits the (required) declaration.
791
793
  *
792
- * Returns `undefined` for v2 agents — v2 pre-dates the idempotency envelope.
793
794
  */
794
795
  async getIdempotencyReplayTtlSeconds() {
795
796
  return this.client.getIdempotencyReplayTtlSeconds();
@@ -797,7 +798,7 @@ class AgentClient {
797
798
  /**
798
799
  * Assert that the seller's capabilities corroborate this client's pinned
799
800
  * AdCP major (per `getAdcpVersion()`). Throws `VersionUnsupportedError`
800
- * otherwise. Set `ADCP_ALLOW_V2=1` to bypass.
801
+ * otherwise.
801
802
  */
802
803
  async requireSupportedMajor(taskType = "request") {
803
804
  return this.client.requireSupportedMajor(taskType);
@@ -1141,6 +1142,10 @@ class AgentClient {
1141
1142
  getProtocol() {
1142
1143
  return this.client.getProtocol();
1143
1144
  }
1145
+ /** Resolved MCP endpoint already used by this client; never performs discovery. */
1146
+ getDiscoveredMcpEndpoint() {
1147
+ return this.client.getDiscoveredMcpEndpoint();
1148
+ }
1144
1149
  /**
1145
1150
  * Get the canonical base URL for this agent
1146
1151
  *
@@ -380,35 +380,8 @@ export interface SingleAgentClientConfig extends ConversationConfig {
380
380
  * @default true
381
381
  */
382
382
  validateFeatures?: boolean;
383
- /**
384
- * Gate mutating-task dispatch on the seller's declared major version.
385
- * When the seller returns an authoritative `get_adcp_capabilities`
386
- * response, the guard requires:
387
- * 1. `major_versions` includes 3
388
- * 2. `adcp.idempotency.replay_ttl_seconds` is declared (spec-required)
389
- *
390
- * Sellers whose capabilities are synthesized from `tools/list` (no
391
- * authoritative `get_adcp_capabilities` response) route through the
392
- * v2 adapter with a one-time warning — a compliant v3 seller would
393
- * declare itself, so absence of a declaration is read as v2. Adopters
394
- * who need a hard "definitely-v3" gate should validate
395
- * `(await client.getCapabilities())._synthetic === false` directly.
396
- *
397
- * Throws `VersionUnsupportedError` before the request is sent when
398
- * the guard rejects. Bypass with `allowV2` or — process-wide as a
399
- * fallback — `ADCP_ALLOW_V2=1`.
400
- *
401
- * @default false
402
- */
383
+ /** Require release compatibility and the declared idempotency replay TTL before mutations. */
403
384
  requireV3ForMutations?: boolean;
404
- /**
405
- * Per-client bypass for the v3 guard. When `true`, the guard is off
406
- * regardless of the `ADCP_ALLOW_V2` env var. When `undefined`, the env
407
- * var is consulted as a fallback. Set explicitly in multi-tenant
408
- * deployments so one tenant's override can't silently disable safety
409
- * for another.
410
- */
411
- allowV2?: boolean;
412
385
  /**
413
386
  * Runtime schema validation options
414
387
  */
@@ -593,9 +566,7 @@ export declare class SingleAgentClient {
593
566
  private discoveredEndpointExpiresAt?;
594
567
  private sharedEvidenceEpoch?;
595
568
  private sharedEvidenceKey?;
596
- private _v2WarningFired;
597
569
  private _syntheticV3WarningFired;
598
- private _syntheticV2WarningFired;
599
570
  private readonly productPolicyRequestParamsByTask;
600
571
  private readonly canonicalCreativeTaskAssociations;
601
572
  private readonly previewCreativeHandlersByTask;
@@ -882,7 +853,7 @@ export declare class SingleAgentClient {
882
853
  /**
883
854
  * Execute task and call appropriate handler on completion
884
855
  *
885
- * Automatically adapts requests for v2 servers and normalizes responses.
856
+ * Adapts requests for maintained AdCP 3 releases and normalizes product responses.
886
857
  */
887
858
  private executeAndHandle;
888
859
  private executeAndHandleWithinDeadline;
@@ -928,8 +899,7 @@ export declare class SingleAgentClient {
928
899
  private applyProductPropertyPolicyToWebhookResult;
929
900
  /**
930
901
  * Adapt a request for the detected server wire version and the seller's
931
- * AdCP protocol version. Applies wire-format adapters (v2.5) when talking
932
- * to a v2 server, then applies protocol-version adapters (e.g. stripping
902
+ * AdCP protocol version. Applies protocol-version adapters (e.g. stripping
933
903
  * 3.1-only fields for a 3.0 seller). Returns the adapted params and any
934
904
  * drift log entries describing what was changed.
935
905
  *
@@ -937,22 +907,7 @@ export declare class SingleAgentClient {
937
907
  * current call's tool schemas can be supplied without cross-tenant caching.
938
908
  */
939
909
  private adaptRequest;
940
- /**
941
- * Normalize response to v3 format
942
- *
943
- * Converts v2 responses to v3 structure for consistent API surface.
944
- */
945
- private normalizeResponseToV3;
946
- /**
947
- * Check if request uses v3 features that the server doesn't support
948
- *
949
- * Returns an early empty result if the request requires v3 features
950
- * that the server doesn't support. This treats "products matching unsupported
951
- * capability" as an empty result set rather than an error.
952
- *
953
- * @returns TaskResult with empty data if v3 features are unsupported, null to proceed normally
954
- */
955
- private getEarlyResultForUnsupportedFeatures;
910
+ private normalizeEstablishedResponse;
956
911
  /**
957
912
  * Discover available advertising products
958
913
  *
@@ -1041,14 +996,17 @@ export declare class SingleAgentClient {
1041
996
  * sending a mutation. Discovers capabilities and the current tool's input
1042
997
  * schema, or reuses fresh cached/primed evidence, with this client's wire pin.
1043
998
  *
1044
- * `unknown` preserves the conservative legacy projection for older peers
1045
- * whose capabilities and schema do not establish support. Projection still
1046
- * requires an unambiguous legacy reference for each creative in that case.
999
+ * This context-free check returns `unknown` when capabilities and schema do
1000
+ * not establish support. A write to a proven 3.1 seller can still select
1001
+ * canonical delivery from matching seller-advertised product options;
1002
+ * otherwise projection requires an unambiguous legacy reference.
1047
1003
  * Conflicting evidence and unproven support with a 3.2+ buyer pin throw
1048
1004
  * `CreativeFormatCapabilityError`, just as they do during a write.
1049
1005
  */
1050
1006
  resolveCreativeFormatWireMode(taskType: 'sync_creatives' | 'create_media_buy' | 'update_media_buy', options?: ReadRequestOptions): Promise<CreativeFormatWireMode>;
1051
1007
  private resolveCreativeWireMode;
1008
+ /** Product evidence applies to this request only; it must never prime a tool-wide capability. */
1009
+ private productOptionsSupportCanonicalWire;
1052
1010
  /** Validate malformed creative payloads before capability discovery can perform I/O. */
1053
1011
  private validateBeforeCreativeCapabilityProbe;
1054
1012
  /**
@@ -1358,6 +1316,8 @@ export declare class SingleAgentClient {
1358
1316
  * Get the agent protocol (may be normalized from original config)
1359
1317
  */
1360
1318
  getProtocol(): 'mcp' | 'a2a';
1319
+ /** Resolved MCP endpoint already used by this client; never performs discovery. */
1320
+ getDiscoveredMcpEndpoint(): string | undefined;
1361
1321
  /**
1362
1322
  * Get the canonical base URL for this agent
1363
1323
  *
@@ -1526,7 +1486,7 @@ export declare class SingleAgentClient {
1526
1486
  * Get agent capabilities, including AdCP version support
1527
1487
  *
1528
1488
  * For v3 servers, calls get_adcp_capabilities tool.
1529
- * For v2 servers, builds synthetic capabilities from available tools.
1489
+ * Requires AdCP 3 capability discovery; retired AdCP 2 agents are rejected.
1530
1490
  *
1531
1491
  * @returns Promise resolving to normalized capabilities object
1532
1492
  *
@@ -1675,20 +1635,8 @@ export declare class SingleAgentClient {
1675
1635
  primeDiscoveryCache(seed: AgentDiscoverySeed): Promise<boolean>;
1676
1636
  /** Drop shared evidence when a seller answers with an error that says our cached view of it is stale. */
1677
1637
  private invalidateDiscoveryOnCapabilityError;
1678
- /**
1679
- * Emit a one-time warning when the agent reports v2 capabilities.
1680
- *
1681
- * v2 went unsupported on 2026-04-20 (AdCP 3.0 GA — adcp#2220). We still
1682
- * execute v2 code paths (no behaviour change), but clients integrating
1683
- * against an unsupported agent should hear about it loudly.
1684
- *
1685
- * Synthetic capabilities (no `get_adcp_capabilities` tool available) don't
1686
- * trigger the warning — we don't actually know the agent's version, and
1687
- * shouting at legitimately-unversioned agents would be noise.
1688
- *
1689
- * Suppression: `process.env.ADCP_ALLOW_V2 === '1'`.
1690
- */
1691
- private maybeWarnV2Sunset;
1638
+ /** Reject retired protocol generations before caching or dispatching. */
1639
+ private assertSupportedServer;
1692
1640
  /**
1693
1641
  * Warn once per client when `requireSupportedMajor` accepts synthetic v3
1694
1642
  * capabilities — the agent advertised the v3-only `get_adcp_capabilities`
@@ -1702,47 +1650,16 @@ export declare class SingleAgentClient {
1702
1650
  * cadence). Issue #1217.
1703
1651
  */
1704
1652
  private maybeWarnSyntheticV3;
1705
- /**
1706
- * Warn once per client when `requireSupportedMajor` routes a synthetic-v2
1707
- * seller through the v2 adapter — the agent did not expose
1708
- * `get_adcp_capabilities`, so the version was inferred from `tools/list`.
1709
- * A compliant v3 seller would declare itself; absence of a declaration is
1710
- * read as v2. Idempotency-TTL guarantees are unknown for these sellers,
1711
- * so BYOK retry callers should treat them as such.
1712
- *
1713
- * One-shot via `_syntheticV2WarningFired` (matches `maybeWarnV2Sunset`
1714
- * cadence).
1715
- */
1716
- private maybeWarnSyntheticV2;
1717
1653
  /**
1718
1654
  * Detect server AdCP version
1719
1655
  *
1720
1656
  * @returns 'v2' or 'v3' based on server capabilities
1721
1657
  */
1722
1658
  detectServerVersion(options?: ReadRequestOptions): Promise<'v2' | 'v3'>;
1723
- /**
1724
- * Whether the seller's capabilities are synthesized from `tools/list`
1725
- * with no authoritative `get_adcp_capabilities` response — i.e. the
1726
- * dispatcher routes through the v2 adapter and idempotency-TTL is
1727
- * unknown. Use this to gate retry behavior for sellers whose retry
1728
- * safety can't be derived from declared capabilities (lower attempt
1729
- * caps, longer backoff, or fall back to natural-key recovery).
1730
- *
1731
- * Returns `false` for declared v2 sellers, declared v3 sellers, and
1732
- * synthetic v3 sellers (which advertise the v3 discovery tool even
1733
- * when the call itself failed).
1734
- *
1735
- * Caveat for synthetic v3: the predicate returns `false`, but TTL is
1736
- * still unknown for those sellers — `getIdempotencyReplayTtlSeconds()`
1737
- * throws until the agent's capabilities endpoint is fixed (issue
1738
- * #1217). Retry-policy consumers that need a complete "TTL unknown"
1739
- * gate should additionally check `getCapabilities()._synthetic`.
1740
- */
1741
- isSyntheticV2(): Promise<boolean>;
1742
1659
  /**
1743
1660
  * Check if server supports a specific AdCP major version
1744
1661
  */
1745
- supportsVersion(version: 2 | 3): Promise<boolean>;
1662
+ supportsVersion(version: 3): Promise<boolean>;
1746
1663
  /**
1747
1664
  * Return the seller's declared `adcp.idempotency.replay_ttl_seconds`.
1748
1665
  *
@@ -1752,8 +1669,7 @@ export declare class SingleAgentClient {
1752
1669
  *
1753
1670
  * Fails closed when the seller is v3 but does not declare the field: the
1754
1671
  * spec makes the declaration REQUIRED, and silently defaulting to 24h
1755
- * would mislead buyers about retry safety. Callers on v2 servers get
1756
- * `undefined` instead of a throw — v2 pre-dates the idempotency envelope.
1672
+ * would mislead buyers about retry safety.
1757
1673
  */
1758
1674
  getIdempotencyReplayTtlSeconds(): Promise<number | undefined>;
1759
1675
  /**
@@ -1843,16 +1759,8 @@ export declare class SingleAgentClient {
1843
1759
  * 2. `capabilities.idempotency.replayTtlSeconds` present (spec-required
1844
1760
  * for real major-3+ sellers)
1845
1761
  *
1846
- * Sellers whose capabilities are synthesized from `tools/list` (no
1847
- * authoritative `get_adcp_capabilities` response) are treated as v2: a
1848
- * compliant v3 seller would declare itself, so absence of a declaration
1849
- * is taken as evidence of v2. The dispatcher routes the request through
1850
- * the v2 wire-shape adapter. A one-time warning surfaces the routing
1851
- * decision so adopters can audit it; retry-safety (idempotency TTL) is
1852
- * unknown for these sellers and BYOK callers should treat them as such.
1853
- *
1854
- * Per-client `allowV2: true` or, when that's undefined,
1855
- * `ADCP_ALLOW_V2=1` in the environment bypasses the guard entirely.
1762
+ * Synthetic v3 evidence is accepted only when the agent advertises discovery.
1763
+ * Agents without discovery and AdCP 2-only agents are rejected.
1856
1764
  *
1857
1765
  * Throws `VersionUnsupportedError` with the specific reason on failure.
1858
1766
  */
@@ -1866,7 +1774,6 @@ export declare class SingleAgentClient {
1866
1774
  * @deprecated Use `requireSupportedMajor()` instead.
1867
1775
  */
1868
1776
  requireV3(taskType?: string): Promise<void>;
1869
- private isV2Allowed;
1870
1777
  /**
1871
1778
  * Query a legacy creative-agent named-format catalog.
1872
1779
  *