@adcp/sdk 12.1.1 → 13.0.0-rc.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 (410) hide show
  1. package/README.md +19 -3
  2. package/bin/adcp-fuzz.js +3 -1
  3. package/dist/lib/adapters/content-standards-adapter.d.mts +9 -9
  4. package/dist/lib/adapters/content-standards-adapter.d.ts +9 -9
  5. package/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -1
  6. package/dist/lib/adapters/content-standards-adapter.js +22 -22
  7. package/dist/lib/adapters/content-standards-adapter.js.map +1 -1
  8. package/dist/lib/adapters/content-standards-adapter.mjs +18 -18
  9. package/dist/lib/adapters/content-standards-adapter.mjs.map +1 -1
  10. package/dist/lib/adapters/index.d.mts +2 -2
  11. package/dist/lib/adapters/index.d.ts +2 -2
  12. package/dist/lib/adapters/index.d.ts.map +1 -1
  13. package/dist/lib/adapters/index.js +10 -10
  14. package/dist/lib/adapters/index.js.map +1 -1
  15. package/dist/lib/adapters/index.mjs +9 -9
  16. package/dist/lib/adapters/index.mjs.map +1 -1
  17. package/dist/lib/auth/oauth/provider-cache.d.mts +7 -0
  18. package/dist/lib/auth/oauth/provider-cache.d.ts +8 -0
  19. package/dist/lib/auth/oauth/provider-cache.d.ts.map +1 -0
  20. package/dist/lib/auth/oauth/provider-cache.js +44 -0
  21. package/dist/lib/auth/oauth/provider-cache.js.map +1 -0
  22. package/dist/lib/auth/oauth/provider-cache.mjs +19 -0
  23. package/dist/lib/auth/oauth/provider-cache.mjs.map +1 -0
  24. package/dist/lib/conformance/invariants/uniformError.js +1 -1
  25. package/dist/lib/conformance/invariants/uniformError.js.map +1 -1
  26. package/dist/lib/conformance/invariants/uniformError.mjs +1 -1
  27. package/dist/lib/conformance/invariants/uniformError.mjs.map +1 -1
  28. package/dist/lib/conformance/runners.js +1 -1
  29. package/dist/lib/conformance/runners.js.map +1 -1
  30. package/dist/lib/conformance/runners.mjs +1 -1
  31. package/dist/lib/conformance/runners.mjs.map +1 -1
  32. package/dist/lib/conformance/seeder.js +5 -5
  33. package/dist/lib/conformance/seeder.js.map +1 -1
  34. package/dist/lib/conformance/seeder.mjs +5 -5
  35. package/dist/lib/conformance/seeder.mjs.map +1 -1
  36. package/dist/lib/core/ADCPMultiAgentClient.d.mts +26 -29
  37. package/dist/lib/core/ADCPMultiAgentClient.d.ts +26 -29
  38. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  39. package/dist/lib/core/ADCPMultiAgentClient.js +27 -19
  40. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  41. package/dist/lib/core/ADCPMultiAgentClient.mjs +27 -19
  42. package/dist/lib/core/ADCPMultiAgentClient.mjs.map +1 -1
  43. package/dist/lib/core/AgentClient.d.mts +148 -138
  44. package/dist/lib/core/AgentClient.d.ts +148 -138
  45. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  46. package/dist/lib/core/AgentClient.js +174 -85
  47. package/dist/lib/core/AgentClient.js.map +1 -1
  48. package/dist/lib/core/AgentClient.mjs +174 -85
  49. package/dist/lib/core/AgentClient.mjs.map +1 -1
  50. package/dist/lib/core/AsyncHandler.d.mts +18 -16
  51. package/dist/lib/core/AsyncHandler.d.ts +18 -16
  52. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  53. package/dist/lib/core/AsyncHandler.js +22 -1
  54. package/dist/lib/core/AsyncHandler.js.map +1 -1
  55. package/dist/lib/core/AsyncHandler.mjs +22 -1
  56. package/dist/lib/core/AsyncHandler.mjs.map +1 -1
  57. package/dist/lib/core/ConversationTypes.d.mts +6 -2
  58. package/dist/lib/core/ConversationTypes.d.ts +6 -2
  59. package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
  60. package/dist/lib/core/ConversationTypes.js.map +1 -1
  61. package/dist/lib/core/CreativeAgentClient.d.mts +41 -17
  62. package/dist/lib/core/CreativeAgentClient.d.ts +41 -17
  63. package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
  64. package/dist/lib/core/CreativeAgentClient.js +39 -12
  65. package/dist/lib/core/CreativeAgentClient.js.map +1 -1
  66. package/dist/lib/core/CreativeAgentClient.mjs +39 -12
  67. package/dist/lib/core/CreativeAgentClient.mjs.map +1 -1
  68. package/dist/lib/core/SingleAgentClient.d.mts +127 -50
  69. package/dist/lib/core/SingleAgentClient.d.ts +127 -50
  70. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  71. package/dist/lib/core/SingleAgentClient.js +1617 -177
  72. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  73. package/dist/lib/core/SingleAgentClient.mjs +1627 -177
  74. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  75. package/dist/lib/core/TaskExecutor.d.mts +9 -0
  76. package/dist/lib/core/TaskExecutor.d.ts +9 -0
  77. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  78. package/dist/lib/core/TaskExecutor.js +136 -43
  79. package/dist/lib/core/TaskExecutor.js.map +1 -1
  80. package/dist/lib/core/TaskExecutor.mjs +136 -43
  81. package/dist/lib/core/TaskExecutor.mjs.map +1 -1
  82. package/dist/lib/index.d.mts +111 -17
  83. package/dist/lib/index.d.ts +111 -17
  84. package/dist/lib/index.d.ts.map +1 -1
  85. package/dist/lib/index.js +94 -94
  86. package/dist/lib/index.js.map +1 -1
  87. package/dist/lib/index.mjs +93 -94
  88. package/dist/lib/index.mjs.map +1 -1
  89. package/dist/lib/protocols/index.d.ts.map +1 -1
  90. package/dist/lib/protocols/index.js +6 -15
  91. package/dist/lib/protocols/index.js.map +1 -1
  92. package/dist/lib/protocols/index.mjs +6 -16
  93. package/dist/lib/protocols/index.mjs.map +1 -1
  94. package/dist/lib/protocols/mcp-modern.d.ts.map +1 -1
  95. package/dist/lib/protocols/mcp-modern.js +87 -12
  96. package/dist/lib/protocols/mcp-modern.js.map +1 -1
  97. package/dist/lib/protocols/mcp-modern.mjs +89 -12
  98. package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
  99. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  100. package/dist/lib/server/create-adcp-server.d.mts +6 -0
  101. package/dist/lib/server/create-adcp-server.d.ts +6 -0
  102. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  103. package/dist/lib/server/create-adcp-server.js +295 -48
  104. package/dist/lib/server/create-adcp-server.js.map +1 -1
  105. package/dist/lib/server/create-adcp-server.mjs +301 -50
  106. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  107. package/dist/lib/server/decisioning/assembly-helpers.d.mts +27 -13
  108. package/dist/lib/server/decisioning/assembly-helpers.d.ts +27 -13
  109. package/dist/lib/server/decisioning/assembly-helpers.d.ts.map +1 -1
  110. package/dist/lib/server/decisioning/assembly-helpers.js +136 -14
  111. package/dist/lib/server/decisioning/assembly-helpers.js.map +1 -1
  112. package/dist/lib/server/decisioning/assembly-helpers.mjs +134 -13
  113. package/dist/lib/server/decisioning/assembly-helpers.mjs.map +1 -1
  114. package/dist/lib/server/decisioning/index.d.mts +13 -12
  115. package/dist/lib/server/decisioning/index.d.ts +13 -12
  116. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  117. package/dist/lib/server/decisioning/index.js +6 -0
  118. package/dist/lib/server/decisioning/index.js.map +1 -1
  119. package/dist/lib/server/decisioning/index.mjs +9 -3
  120. package/dist/lib/server/decisioning/index.mjs.map +1 -1
  121. package/dist/lib/server/decisioning/list-helpers.d.mts +13 -3
  122. package/dist/lib/server/decisioning/list-helpers.d.ts +13 -3
  123. package/dist/lib/server/decisioning/list-helpers.d.ts.map +1 -1
  124. package/dist/lib/server/decisioning/list-helpers.js +13 -3
  125. package/dist/lib/server/decisioning/list-helpers.js.map +1 -1
  126. package/dist/lib/server/decisioning/list-helpers.mjs +11 -2
  127. package/dist/lib/server/decisioning/list-helpers.mjs.map +1 -1
  128. package/dist/lib/server/decisioning/manifest-helpers.d.mts +5 -3
  129. package/dist/lib/server/decisioning/manifest-helpers.d.ts +5 -3
  130. package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -1
  131. package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -1
  132. package/dist/lib/server/decisioning/manifest-helpers.mjs.map +1 -1
  133. package/dist/lib/server/decisioning/proposal/dispatch.d.mts +2 -2
  134. package/dist/lib/server/decisioning/proposal/dispatch.d.ts +2 -2
  135. package/dist/lib/server/decisioning/proposal/dispatch.d.ts.map +1 -1
  136. package/dist/lib/server/decisioning/proposal/dispatch.js.map +1 -1
  137. package/dist/lib/server/decisioning/proposal/dispatch.mjs.map +1 -1
  138. package/dist/lib/server/decisioning/proposal/index.d.mts +1 -1
  139. package/dist/lib/server/decisioning/proposal/index.d.ts +1 -1
  140. package/dist/lib/server/decisioning/proposal/index.d.ts.map +1 -1
  141. package/dist/lib/server/decisioning/proposal/index.js.map +1 -1
  142. package/dist/lib/server/decisioning/proposal/index.mjs.map +1 -1
  143. package/dist/lib/server/decisioning/proposal/lifecycle.d.mts +3 -2
  144. package/dist/lib/server/decisioning/proposal/lifecycle.d.ts +3 -2
  145. package/dist/lib/server/decisioning/proposal/lifecycle.d.ts.map +1 -1
  146. package/dist/lib/server/decisioning/proposal/lifecycle.js.map +1 -1
  147. package/dist/lib/server/decisioning/proposal/lifecycle.mjs.map +1 -1
  148. package/dist/lib/server/decisioning/proposal/mock-manager.d.mts +3 -3
  149. package/dist/lib/server/decisioning/proposal/mock-manager.d.ts +3 -3
  150. package/dist/lib/server/decisioning/proposal/mock-manager.d.ts.map +1 -1
  151. package/dist/lib/server/decisioning/proposal/mock-manager.js.map +1 -1
  152. package/dist/lib/server/decisioning/proposal/mock-manager.mjs.map +1 -1
  153. package/dist/lib/server/decisioning/proposal/types.d.mts +10 -6
  154. package/dist/lib/server/decisioning/proposal/types.d.ts +10 -6
  155. package/dist/lib/server/decisioning/proposal/types.d.ts.map +1 -1
  156. package/dist/lib/server/decisioning/proposal/types.js.map +1 -1
  157. package/dist/lib/server/decisioning/proposal/types.mjs.map +1 -1
  158. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +21 -2
  159. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +21 -2
  160. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  161. package/dist/lib/server/decisioning/runtime/from-platform.js +754 -81
  162. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  163. package/dist/lib/server/decisioning/runtime/from-platform.mjs +763 -81
  164. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  165. package/dist/lib/server/decisioning/specialisms/brand-rights.d.mts +9 -9
  166. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts +9 -9
  167. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts.map +1 -1
  168. package/dist/lib/server/decisioning/specialisms/brand-rights.js.map +1 -1
  169. package/dist/lib/server/decisioning/specialisms/content-standards.d.mts +16 -16
  170. package/dist/lib/server/decisioning/specialisms/content-standards.d.ts +16 -16
  171. package/dist/lib/server/decisioning/specialisms/content-standards.d.ts.map +1 -1
  172. package/dist/lib/server/decisioning/specialisms/content-standards.js.map +1 -1
  173. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.mts +15 -13
  174. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +15 -13
  175. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -1
  176. package/dist/lib/server/decisioning/specialisms/creative-ad-server.js.map +1 -1
  177. package/dist/lib/server/decisioning/specialisms/creative.d.mts +12 -11
  178. package/dist/lib/server/decisioning/specialisms/creative.d.ts +12 -11
  179. package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -1
  180. package/dist/lib/server/decisioning/specialisms/creative.js.map +1 -1
  181. package/dist/lib/server/decisioning/specialisms/sales.d.mts +25 -15
  182. package/dist/lib/server/decisioning/specialisms/sales.d.ts +25 -15
  183. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  184. package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -1
  185. package/dist/lib/server/index.d.mts +3 -3
  186. package/dist/lib/server/index.d.ts +3 -3
  187. package/dist/lib/server/index.d.ts.map +1 -1
  188. package/dist/lib/server/index.js +72 -72
  189. package/dist/lib/server/index.js.map +1 -1
  190. package/dist/lib/server/index.mjs +36 -36
  191. package/dist/lib/server/index.mjs.map +1 -1
  192. package/dist/lib/server/legacy/v5/index.d.mts +1 -0
  193. package/dist/lib/server/legacy/v5/index.d.ts +1 -0
  194. package/dist/lib/server/legacy/v5/index.d.ts.map +1 -1
  195. package/dist/lib/server/legacy/v5/index.js +74 -1
  196. package/dist/lib/server/legacy/v5/index.js.map +1 -1
  197. package/dist/lib/server/legacy/v5/index.mjs +75 -1
  198. package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
  199. package/dist/lib/server/responses.d.mts +2 -2
  200. package/dist/lib/server/responses.d.ts +2 -2
  201. package/dist/lib/server/responses.js.map +1 -1
  202. package/dist/lib/server/responses.mjs.map +1 -1
  203. package/dist/lib/testing/client.js +1 -1
  204. package/dist/lib/testing/client.js.map +1 -1
  205. package/dist/lib/testing/client.mjs +1 -1
  206. package/dist/lib/testing/client.mjs.map +1 -1
  207. package/dist/lib/testing/scenarios/brand-rights.js +6 -6
  208. package/dist/lib/testing/scenarios/brand-rights.js.map +1 -1
  209. package/dist/lib/testing/scenarios/brand-rights.mjs +6 -6
  210. package/dist/lib/testing/scenarios/brand-rights.mjs.map +1 -1
  211. package/dist/lib/testing/scenarios/creative.js +7 -7
  212. package/dist/lib/testing/scenarios/creative.js.map +1 -1
  213. package/dist/lib/testing/scenarios/creative.mjs +7 -7
  214. package/dist/lib/testing/scenarios/creative.mjs.map +1 -1
  215. package/dist/lib/testing/scenarios/discovery.js +2 -2
  216. package/dist/lib/testing/scenarios/discovery.js.map +1 -1
  217. package/dist/lib/testing/scenarios/discovery.mjs +2 -2
  218. package/dist/lib/testing/scenarios/discovery.mjs.map +1 -1
  219. package/dist/lib/testing/scenarios/edge-cases.js +11 -11
  220. package/dist/lib/testing/scenarios/edge-cases.js.map +1 -1
  221. package/dist/lib/testing/scenarios/edge-cases.mjs +11 -11
  222. package/dist/lib/testing/scenarios/edge-cases.mjs.map +1 -1
  223. package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
  224. package/dist/lib/testing/scenarios/governance.js +16 -22
  225. package/dist/lib/testing/scenarios/governance.js.map +1 -1
  226. package/dist/lib/testing/scenarios/governance.mjs +16 -22
  227. package/dist/lib/testing/scenarios/governance.mjs.map +1 -1
  228. package/dist/lib/testing/scenarios/media-buy.js +5 -5
  229. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  230. package/dist/lib/testing/scenarios/media-buy.mjs +5 -5
  231. package/dist/lib/testing/scenarios/media-buy.mjs.map +1 -1
  232. package/dist/lib/testing/scenarios/schema-compliance.js +1 -1
  233. package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -1
  234. package/dist/lib/testing/scenarios/schema-compliance.mjs +1 -1
  235. package/dist/lib/testing/scenarios/schema-compliance.mjs.map +1 -1
  236. package/dist/lib/testing/scenarios/trusted-match.d.ts.map +1 -1
  237. package/dist/lib/testing/scenarios/trusted-match.js +4 -3
  238. package/dist/lib/testing/scenarios/trusted-match.js.map +1 -1
  239. package/dist/lib/testing/scenarios/trusted-match.mjs +4 -3
  240. package/dist/lib/testing/scenarios/trusted-match.mjs.map +1 -1
  241. package/dist/lib/testing/storyboard/shape-drift-hints.d.mts +3 -4
  242. package/dist/lib/testing/storyboard/shape-drift-hints.d.ts +3 -4
  243. package/dist/lib/testing/storyboard/shape-drift-hints.d.ts.map +1 -1
  244. package/dist/lib/testing/storyboard/shape-drift-hints.js +27 -27
  245. package/dist/lib/testing/storyboard/shape-drift-hints.js.map +1 -1
  246. package/dist/lib/testing/storyboard/shape-drift-hints.mjs +27 -27
  247. package/dist/lib/testing/storyboard/shape-drift-hints.mjs.map +1 -1
  248. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
  249. package/dist/lib/testing/storyboard/task-map.js +43 -5
  250. package/dist/lib/testing/storyboard/task-map.js.map +1 -1
  251. package/dist/lib/testing/storyboard/task-map.mjs +43 -5
  252. package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
  253. package/dist/lib/testing/test-helpers.d.mts +2 -2
  254. package/dist/lib/testing/test-helpers.d.ts +2 -2
  255. package/dist/lib/testing/test-helpers.js.map +1 -1
  256. package/dist/lib/testing/test-helpers.mjs.map +1 -1
  257. package/dist/lib/types/adcp.d.mts +14 -14
  258. package/dist/lib/types/adcp.d.ts +14 -14
  259. package/dist/lib/types/adcp.d.ts.map +1 -1
  260. package/dist/lib/types/adcp.js.map +1 -1
  261. package/dist/lib/types/adcp.mjs.map +1 -1
  262. package/dist/lib/types/index.d.mts +2 -2
  263. package/dist/lib/types/index.d.ts +2 -2
  264. package/dist/lib/types/index.d.ts.map +1 -1
  265. package/dist/lib/types/index.js.map +1 -1
  266. package/dist/lib/types/index.mjs.map +1 -1
  267. package/dist/lib/utils/capabilities.d.mts +6 -0
  268. package/dist/lib/utils/capabilities.d.ts +6 -0
  269. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  270. package/dist/lib/utils/capabilities.js +4 -0
  271. package/dist/lib/utils/capabilities.js.map +1 -1
  272. package/dist/lib/utils/capabilities.mjs +4 -0
  273. package/dist/lib/utils/capabilities.mjs.map +1 -1
  274. package/dist/lib/utils/creative-delivery.d.mts +52 -10
  275. package/dist/lib/utils/creative-delivery.d.ts +52 -10
  276. package/dist/lib/utils/creative-delivery.d.ts.map +1 -1
  277. package/dist/lib/utils/creative-delivery.js +104 -9
  278. package/dist/lib/utils/creative-delivery.js.map +1 -1
  279. package/dist/lib/utils/creative-delivery.mjs +104 -8
  280. package/dist/lib/utils/creative-delivery.mjs.map +1 -1
  281. package/dist/lib/utils/format-assets.d.mts +41 -38
  282. package/dist/lib/utils/format-assets.d.ts +41 -38
  283. package/dist/lib/utils/format-assets.d.ts.map +1 -1
  284. package/dist/lib/utils/format-assets.js +3 -1
  285. package/dist/lib/utils/format-assets.js.map +1 -1
  286. package/dist/lib/utils/format-assets.mjs +3 -1
  287. package/dist/lib/utils/format-assets.mjs.map +1 -1
  288. package/dist/lib/utils/index.d.mts +8 -8
  289. package/dist/lib/utils/index.d.ts +8 -8
  290. package/dist/lib/utils/index.d.ts.map +1 -1
  291. package/dist/lib/utils/index.js +11 -9
  292. package/dist/lib/utils/index.js.map +1 -1
  293. package/dist/lib/utils/index.mjs +9 -8
  294. package/dist/lib/utils/index.mjs.map +1 -1
  295. package/dist/lib/utils/preview-utils.d.mts +11 -8
  296. package/dist/lib/utils/preview-utils.d.ts +11 -8
  297. package/dist/lib/utils/preview-utils.d.ts.map +1 -1
  298. package/dist/lib/utils/preview-utils.js +4 -4
  299. package/dist/lib/utils/preview-utils.js.map +1 -1
  300. package/dist/lib/utils/preview-utils.mjs +3 -3
  301. package/dist/lib/utils/preview-utils.mjs.map +1 -1
  302. package/dist/lib/utils/tool-request-schemas.d.mts +2 -2
  303. package/dist/lib/utils/tool-request-schemas.d.ts +2 -2
  304. package/dist/lib/v2/projection/aao-reference-formats.json +492 -0
  305. package/dist/lib/v2/projection/augment-response.d.mts +31 -11
  306. package/dist/lib/v2/projection/augment-response.d.ts +31 -11
  307. package/dist/lib/v2/projection/augment-response.d.ts.map +1 -1
  308. package/dist/lib/v2/projection/augment-response.js +233 -27
  309. package/dist/lib/v2/projection/augment-response.js.map +1 -1
  310. package/dist/lib/v2/projection/augment-response.mjs +232 -27
  311. package/dist/lib/v2/projection/augment-response.mjs.map +1 -1
  312. package/dist/lib/v2/projection/builders.d.mts +7 -6
  313. package/dist/lib/v2/projection/builders.d.ts +7 -6
  314. package/dist/lib/v2/projection/builders.d.ts.map +1 -1
  315. package/dist/lib/v2/projection/builders.js +11 -8
  316. package/dist/lib/v2/projection/builders.js.map +1 -1
  317. package/dist/lib/v2/projection/builders.mjs +9 -6
  318. package/dist/lib/v2/projection/builders.mjs.map +1 -1
  319. package/dist/lib/v2/projection/catalog-snapshot.d.mts +47 -0
  320. package/dist/lib/v2/projection/catalog-snapshot.d.ts +48 -0
  321. package/dist/lib/v2/projection/catalog-snapshot.d.ts.map +1 -0
  322. package/dist/lib/v2/projection/catalog-snapshot.js +291 -0
  323. package/dist/lib/v2/projection/catalog-snapshot.js.map +1 -0
  324. package/dist/lib/v2/projection/catalog-snapshot.mjs +265 -0
  325. package/dist/lib/v2/projection/catalog-snapshot.mjs.map +1 -0
  326. package/dist/lib/v2/projection/catalog.d.mts +23 -2
  327. package/dist/lib/v2/projection/catalog.d.ts +23 -2
  328. package/dist/lib/v2/projection/catalog.d.ts.map +1 -1
  329. package/dist/lib/v2/projection/catalog.js +34 -10
  330. package/dist/lib/v2/projection/catalog.js.map +1 -1
  331. package/dist/lib/v2/projection/catalog.mjs +33 -10
  332. package/dist/lib/v2/projection/catalog.mjs.map +1 -1
  333. package/dist/lib/v2/projection/creative-delivery.d.mts +157 -0
  334. package/dist/lib/v2/projection/creative-delivery.d.ts +158 -0
  335. package/dist/lib/v2/projection/creative-delivery.d.ts.map +1 -0
  336. package/dist/lib/v2/projection/creative-delivery.js +967 -0
  337. package/dist/lib/v2/projection/creative-delivery.js.map +1 -0
  338. package/dist/lib/v2/projection/creative-delivery.mjs +941 -0
  339. package/dist/lib/v2/projection/creative-delivery.mjs.map +1 -0
  340. package/dist/lib/v2/projection/index.d.mts +8 -6
  341. package/dist/lib/v2/projection/index.d.ts +8 -6
  342. package/dist/lib/v2/projection/index.d.ts.map +1 -1
  343. package/dist/lib/v2/projection/index.js +26 -4
  344. package/dist/lib/v2/projection/index.js.map +1 -1
  345. package/dist/lib/v2/projection/index.mjs +28 -4
  346. package/dist/lib/v2/projection/index.mjs.map +1 -1
  347. package/dist/lib/v2/projection/legacy-metadata.d.mts +21 -0
  348. package/dist/lib/v2/projection/legacy-metadata.d.ts +22 -0
  349. package/dist/lib/v2/projection/legacy-metadata.d.ts.map +1 -0
  350. package/dist/lib/v2/projection/legacy-metadata.js +73 -0
  351. package/dist/lib/v2/projection/legacy-metadata.js.map +1 -0
  352. package/dist/lib/v2/projection/legacy-metadata.mjs +45 -0
  353. package/dist/lib/v2/projection/legacy-metadata.mjs.map +1 -0
  354. package/dist/lib/v2/projection/types.d.mts +29 -23
  355. package/dist/lib/v2/projection/types.d.ts +29 -23
  356. package/dist/lib/v2/projection/types.d.ts.map +1 -1
  357. package/dist/lib/v2/projection/types.js.map +1 -1
  358. package/dist/lib/v2/projection/v1-to-v2.d.mts +29 -6
  359. package/dist/lib/v2/projection/v1-to-v2.d.ts +29 -6
  360. package/dist/lib/v2/projection/v1-to-v2.d.ts.map +1 -1
  361. package/dist/lib/v2/projection/v1-to-v2.js +218 -9
  362. package/dist/lib/v2/projection/v1-to-v2.js.map +1 -1
  363. package/dist/lib/v2/projection/v1-to-v2.mjs +219 -10
  364. package/dist/lib/v2/projection/v1-to-v2.mjs.map +1 -1
  365. package/dist/lib/v2/projection/v2-to-v1.d.mts +31 -2
  366. package/dist/lib/v2/projection/v2-to-v1.d.ts +31 -2
  367. package/dist/lib/v2/projection/v2-to-v1.d.ts.map +1 -1
  368. package/dist/lib/v2/projection/v2-to-v1.js +138 -7
  369. package/dist/lib/v2/projection/v2-to-v1.js.map +1 -1
  370. package/dist/lib/v2/projection/v2-to-v1.mjs +135 -6
  371. package/dist/lib/v2/projection/v2-to-v1.mjs.map +1 -1
  372. package/dist/lib/v2/projection/write-side.d.mts +12 -13
  373. package/dist/lib/v2/projection/write-side.d.ts +12 -13
  374. package/dist/lib/v2/projection/write-side.d.ts.map +1 -1
  375. package/dist/lib/v2/projection/write-side.js +16 -12
  376. package/dist/lib/v2/projection/write-side.js.map +1 -1
  377. package/dist/lib/v2/projection/write-side.mjs +16 -12
  378. package/dist/lib/v2/projection/write-side.mjs.map +1 -1
  379. package/dist/lib/version.d.mts +3 -3
  380. package/dist/lib/version.d.ts +3 -3
  381. package/dist/lib/version.d.ts.map +1 -1
  382. package/dist/lib/version.js +3 -3
  383. package/dist/lib/version.js.map +1 -1
  384. package/dist/lib/version.mjs +3 -3
  385. package/dist/lib/version.mjs.map +1 -1
  386. package/docs/guides/BUILD-AN-AGENT.md +7 -2
  387. package/docs/guides/PREVIEW-ASSET-DURABILITY.md +6 -2
  388. package/docs/llms.txt +1 -0
  389. package/examples/README.md +1 -1
  390. package/examples/batch-preview-test.ts +3 -3
  391. package/examples/conversation-client.ts +2 -2
  392. package/examples/debug-preview-response.ts +1 -1
  393. package/examples/decisioning-platform-broadcast-tv.ts +10 -4
  394. package/examples/decisioning-platform-mock-seller.ts +16 -9
  395. package/examples/decisioning-platform-programmatic.ts +18 -7
  396. package/examples/error-compliant-server.ts +26 -16
  397. package/examples/generative-creative-demo.ts +7 -19
  398. package/examples/hello_creative_adapter_ad_server.ts +37 -16
  399. package/examples/hello_creative_adapter_template.ts +12 -10
  400. package/examples/hello_seller_adapter_guaranteed.ts +52 -23
  401. package/examples/hello_seller_adapter_multi_tenant.ts +6 -3
  402. package/examples/hello_seller_adapter_non_guaranteed.ts +54 -26
  403. package/examples/hello_seller_adapter_proposal_mode.ts +40 -14
  404. package/examples/hello_seller_adapter_social.ts +2 -7
  405. package/examples/inspect-card-formats.ts +1 -1
  406. package/examples/simple-getting-started.ts +1 -1
  407. package/examples/test-helpers-demo.ts +1 -1
  408. package/package.json +2 -2
  409. package/skills/build-decisioning-creative-template/SKILL.md +11 -11
  410. package/skills/build-decisioning-platform/advanced/REFERENCE.md +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/types/index.ts"],"sourcesContent":["// AdCP Core Types - Main exports for external consumers\nexport * from './adcp';\n\n// Re-export key types for easier importing\nexport type {\n AgentConfig,\n TestResult,\n TestRequest,\n ApiResponse,\n CreativeFormat,\n AdvertisingProduct,\n MediaBuy,\n Targeting,\n ManageCreativeAssetsRequest,\n ManageCreativeAssetsResponse,\n CreateMediaBuyAsyncResponseData,\n UpdateMediaBuyAsyncResponseData,\n GetProductsAsyncResponseData,\n SyncCreativesAsyncResponseData,\n} from './adcp';\n\n// Re-export the structured format identifier from generated core types.\n// AdCP 3.0.1 renamed the schema title from \"Format ID\" to \"Format Reference\n// (Structured Object)\" — purely a doc change, the wire shape is identical.\n// We expose the new canonical name AND keep the historical `FormatID` alias\n// so SDK consumers don't break across the version bump.\nexport type { FormatReferenceStructuredObject } from './core.generated';\nimport type { FormatReferenceStructuredObject } from './core.generated';\nexport type { RequireCacheScopeWhenProducts, ServerPayload } from './server-payload';\nexport * from './server-payload-aliases';\n/**\n * @deprecated AdCP 3.0.1 renamed this type to `FormatReferenceStructuredObject`\n * (the wire shape is identical — pure documentation rename per the spec). This\n * alias is preserved for one minor cycle so existing imports keep compiling;\n * editor tooling will surface the rename so downstream code can migrate at its\n * own pace. Slated for removal in the next major.\n */\nexport type FormatID = FormatReferenceStructuredObject;\n\n// Re-export wire request/response types adopters need when building a\n// DecisioningPlatform or calling AdCP agents. Source of truth is\n// `tools.generated.ts`; this curated block is the public surface so\n// adopters never reach into generated files.\n//\n// Intentionally excluded — name conflicts with legacy adcp.ts shapes:\n// SyncCreativesRequest, ListCreativesRequest, ListCreativesResponse,\n// ManageCreativeAssetsRequest, ManageCreativeAssetsResponse (adcp.ts versions\n// already public via `export * from './adcp'` above; use those).\n// Intentionally excluded — comply-runner internals, not specialism surface:\n// ComplyTestControllerRequest/Response, SeedSuccess, SimulationSuccess,\n// ControllerError, ForcedDirectiveSuccess, StateTransitionSuccess,\n// ListScenariosSuccess.\n// Intentionally excluded — internal pagination/packaging sub-shapes, not\n// part of the top-level tool request/response surface:\n// PaginationRequest, PaginationResponse, PackageRequest,\n// TMPResponseType, WebhookResponseType.\n\n// Account model + account operations\nexport type {\n AccountReference,\n ListAccountsRequest,\n ListAccountsResponse,\n SyncAccountsRequest,\n SyncAccountsResponse,\n SyncAccountsSuccess,\n SyncAccountsError,\n GetAccountFinancialsRequest,\n GetAccountFinancialsResponse,\n GetAccountFinancialsSuccess,\n GetAccountFinancialsError,\n} from './tools.generated';\n\n// Capabilities\nexport type { AdCPSpecialism, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse } from './tools.generated';\n\n// Sales — media buy\nexport type {\n GetProductsRequest,\n GetProductsResponse,\n GetProductsAsyncSubmitted,\n CreateMediaBuyRequest,\n CreateMediaBuyResponse,\n CreateMediaBuySuccess,\n CreateMediaBuyError,\n CreateMediaBuySubmitted,\n CreateMediaBuyAsyncSubmitted,\n UpdateMediaBuyRequest,\n UpdateMediaBuyResponse,\n UpdateMediaBuySuccess,\n UpdateMediaBuyError,\n UpdateMediaBuyAsyncSubmitted,\n GetMediaBuysRequest,\n GetMediaBuysResponse,\n GetMediaBuyDeliveryRequest,\n GetMediaBuyDeliveryResponse,\n GetMediaBuyArtifactsRequest,\n GetMediaBuyArtifactsResponse,\n ProvidePerformanceFeedbackRequest,\n ProvidePerformanceFeedbackResponse,\n ProvidePerformanceFeedbackSuccess,\n ProvidePerformanceFeedbackError,\n SyncPlansRequest,\n SyncPlansResponse,\n ReportUsageRequest,\n ReportUsageResponse,\n ReportPlanOutcomeRequest,\n ReportPlanOutcomeResponse,\n GetPlanAuditLogsRequest,\n GetPlanAuditLogsResponse,\n} from './tools.generated';\n\n// Pricing models (discriminated union across pricing types)\nexport type { PricingOption, CPMPricingOption, CPCPricingOption, CPVPricingOption } from './tools.generated';\n\n// Media-channel + status enums; publisher property + reporting shapes\nexport type {\n MediaChannel,\n AudienceStatus,\n MediaBuyStatus,\n CreativeStatus,\n Placement,\n PublisherPropertySelector,\n ReportingCapabilities,\n} from './tools.generated';\n\n// Audiences, catalogs, event sources, and events (audience-sync + retail media)\nexport type {\n SyncAudiencesRequest,\n SyncAudiencesResponse,\n SyncAudiencesSuccess,\n SyncAudiencesError,\n SyncCatalogsRequest,\n SyncCatalogsResponse,\n SyncCatalogsSuccess,\n SyncCatalogsError,\n SyncCatalogsAsyncSubmitted,\n SyncEventSourcesRequest,\n SyncEventSourcesResponse,\n SyncEventSourcesSuccess,\n SyncEventSourcesError,\n LogEventRequest,\n LogEventResponse,\n LogEventSuccess,\n LogEventError,\n} from './tools.generated';\n\n// Signals\nexport type {\n GetSignalsRequest,\n GetSignalsResponse,\n ActivateSignalRequest,\n ActivateSignalResponse,\n ActivateSignalSuccess,\n ActivateSignalError,\n SignalID,\n SignalValueType,\n SignalAvailabilityType,\n SignalAvailabilityType as SignalCatalogType,\n Destination,\n Deployment,\n ActivationKey,\n VendorPricingOption,\n SignalFilters, // embedded in GetSignalsRequest.filters\n SignalTargeting, // embedded in ActivateSignalRequest.signal_targeting\n} from './tools.generated';\n\n// Creative\nexport type {\n BuildCreativeRequest,\n BuildCreativeResponse,\n BuildCreativeSuccess,\n BuildCreativeError,\n BuildCreativeMultiSuccess,\n BuildCreativeAsyncSubmitted,\n CreativeManifest,\n PreviewCreativeRequest,\n PreviewCreativeResponse,\n PreviewCreativeSingleResponse,\n PreviewCreativeVariantResponse,\n PreviewCreativeBatchResponse,\n PreviewBatchResultSuccess,\n PreviewBatchResultError,\n ListCreativeFormatsRequest,\n ListCreativeFormatsResponse,\n GetCreativeFeaturesRequest,\n GetCreativeFeaturesResponse,\n GetCreativeDeliveryRequest,\n GetCreativeDeliveryResponse,\n SyncCreativesResponse,\n SyncCreativesSuccess,\n SyncCreativesError,\n SyncCreativesSubmitted,\n SyncCreativesAsyncSubmitted,\n CreativeAsset,\n CreativeQuality,\n Format,\n ProductFormatDeclaration,\n FormatIDParameter,\n} from './tools.generated';\n\n// Governance — property lists\nexport type {\n PropertyList,\n CreatePropertyListRequest,\n CreatePropertyListResponse,\n UpdatePropertyListRequest,\n UpdatePropertyListResponse,\n GetPropertyListRequest,\n GetPropertyListResponse,\n ListPropertyListsRequest,\n ListPropertyListsResponse,\n DeletePropertyListRequest,\n DeletePropertyListResponse,\n} from './tools.generated';\n\n// Governance — collection lists\nexport type {\n CollectionList,\n CreateCollectionListRequest,\n CreateCollectionListResponse,\n UpdateCollectionListRequest,\n UpdateCollectionListResponse,\n GetCollectionListRequest,\n GetCollectionListResponse,\n ListCollectionListsRequest,\n ListCollectionListsResponse,\n DeleteCollectionListRequest,\n DeleteCollectionListResponse,\n} from './tools.generated';\n\n// Governance — content standards + delivery validation\nexport type {\n CheckGovernanceRequest,\n CheckGovernanceResponse,\n SyncGovernanceRequest,\n SyncGovernanceResponse,\n SyncGovernanceSuccess,\n SyncGovernanceError,\n CreateContentStandardsRequest,\n CreateContentStandardsResponse,\n UpdateContentStandardsRequest,\n UpdateContentStandardsResponse,\n UpdateContentStandardsSuccess,\n UpdateContentStandardsError,\n ListContentStandardsRequest,\n ListContentStandardsResponse,\n GetContentStandardsRequest,\n GetContentStandardsResponse,\n CalibrateContentRequest,\n CalibrateContentResponse,\n ValidateContentDeliveryRequest,\n ValidateContentDeliveryResponse,\n} from './tools.generated';\n\n// Sponsored intelligence\nexport type {\n SIGetOfferingRequest,\n SIGetOfferingResponse,\n SIInitiateSessionRequest,\n SIInitiateSessionResponse,\n SISendMessageRequest,\n SISendMessageResponse,\n SITerminateSessionRequest,\n SITerminateSessionResponse,\n SICapabilities,\n SIIdentity,\n SISessionStatus,\n SIUIElement,\n} from './tools.generated';\n\n// Brand rights — identity discovery + licensing for branded inventory.\n// `creative_approval` is webhook-only (not an MCP/A2A tool) — types\n// re-exported for adopters wiring their own HTTP receiver.\nexport type {\n GetBrandIdentityRequest,\n GetBrandIdentityResponse,\n GetBrandIdentitySuccess,\n GetRightsRequest,\n GetRightsResponse,\n GetRightsSuccess,\n AcquireRightsRequest,\n AcquireRightsResponse,\n AcquireRightsAcquired,\n AcquireRightsPendingApproval,\n AcquireRightsRejected,\n AcquireRightsError,\n UpdateRightsRequest,\n UpdateRightsResponse,\n UpdateRightsSuccess,\n UpdateRightsError,\n CreativeApprovalRequest,\n CreativeApprovalResponse,\n CreativeApproved,\n CreativeRejected,\n CreativePendingReview,\n CreativeApprovalError,\n RightsTerms,\n RightsConstraint,\n RightUse,\n RightType,\n GenerationCredential,\n} from './core.generated';\n\n// Strict format asset slot types (hand-authored — the codegen drops the\n// discriminated per-asset-type branches of Format.assets[]).\nexport * from './format-asset-slots';\n\n// Discriminated union of creative asset INSTANCES (what a buyer delivers\n// inside `creative_manifest.assets`). Companion to format-asset-slots.ts\n// (which describes what a publisher SELLS in `Format.assets[]`). The\n// individual ImageAsset / VideoAsset / etc. interfaces are generated; this\n// file is the missing canonical union over them.\n// Note: tools.generated.ts also has `AssetVariant`, a narrower generated union\n// that omits AudioAsset. `AssetInstance` (this file) is the curated, complete\n// union — prefer it. `AssetVariant` is intentionally not re-exported.\nexport * from './asset-instances';\n\n// Strict per-row types for sync_* response success arms. The codegen\n// leaves these row shapes inline; named types make the discriminators\n// (e.g., SyncAccountsResponseRow.action) reachable to handler authors.\nexport * from './sync-rows';\n\n// Re-export const-array enum values (e.g., MediaChannelValues, PacingValues)\n// for consumers that need to enumerate or validate against the spec's\n// literal sets without re-deriving them from Zod schemas.\nexport * from './enums.generated';\n\n// Re-export inline-union value arrays for anonymous string-literal unions\n// inside named schemas (e.g., ImageAssetRequirements_FormatsValues,\n// VideoAssetRequirements_ContainersValues). Companion to enums.generated;\n// see scripts/generate-inline-enum-arrays.ts.\nexport * from './inline-enums.generated';\n\n// Back-compat aliases for inline-enum exports collapsed in AdCP 3.0.1\n// (adcp#3148 / #3174 hoisted byte-identical literal sets into shared\n// `enums/*.json` files). Each alias is `@deprecated` so editor tooling\n// surfaces the canonical replacement; slated for removal in the next major.\nexport * from './inline-enums.aliases';\n\n// Back-compat aliases for the 6 error-details schemas renamed in AdCP 3.0.x\n// (adcp#3149 / adcp#3566 canonicalized SCREAMING_SNAKE titles into Title Case).\n// Each alias is `@deprecated`; slated for removal in the next major.\nexport * from './error-details.aliases';\n\n// Well-known file shapes (brand.json, adagents.json) inferred from the\n// canonical Zod schemas. Re-exported so adopters can derive types like\n// `BrandDefinition` directly from the spec instead of hand-rolling\n// interfaces that drift across versions. Source of truth is the schema\n// cache (`schemas/cache/{version}/{brand,adagents}.json`) — regenerate\n// with `npm run generate-wellknown-schemas` when the spec bumps.\nexport type { BrandJson, AdagentsJson } from './wellknown-schemas.generated';\nexport { BrandJsonSchema, AdagentsJsonSchema } from './wellknown-schemas.generated';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAc,mBADd;AA6BA,0BAAc,qCA7Bd;AAiTA,0BAAc,iCAjTd;AA2TA,0BAAc,8BA3Td;AAgUA,0BAAc,wBAhUd;AAqUA,0BAAc,8BArUd;AA2UA,0BAAc,qCA3Ud;AAiVA,0BAAc,mCAjVd;AAsVA,0BAAc,oCAtVd;AA+VA,+BAAoD;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/types/index.ts"],"sourcesContent":["// AdCP Core Types - Main exports for external consumers\nexport * from './adcp';\n\n// Re-export key types for easier importing\nexport type {\n AgentConfig,\n TestResult,\n TestRequest,\n ApiResponse,\n LegacyCreativeFormatSummary,\n LegacyAdvertisingProduct,\n MediaBuy,\n Targeting,\n LegacyManagedCreativeAsset,\n LegacyManageSyncCreativesRequest,\n LegacyManageListCreativesRequest,\n LegacyManageListCreativesResponse,\n LegacyManagedCreativeFilters,\n ManageCreativeAssetsRequest,\n ManageCreativeAssetsResponse,\n CreateMediaBuyAsyncResponseData,\n UpdateMediaBuyAsyncResponseData,\n GetProductsAsyncResponseData,\n SyncCreativesAsyncResponseData,\n} from './adcp';\n\n// Re-export the structured format identifier from generated core types.\n// AdCP 3.0.1 renamed the schema title from \"Format ID\" to \"Format Reference\n// (Structured Object)\" — purely a doc change, the wire shape is identical.\n// We expose the new canonical name AND keep the historical `FormatID` alias\n// so SDK consumers don't break across the version bump.\nexport type { FormatReferenceStructuredObject } from './core.generated';\nimport type { FormatReferenceStructuredObject } from './core.generated';\nexport type { RequireCacheScopeWhenProducts, ServerPayload } from './server-payload';\nexport * from './server-payload-aliases';\n/**\n * @deprecated AdCP 3.0.1 renamed this type to `FormatReferenceStructuredObject`\n * (the wire shape is identical — pure documentation rename per the spec). This\n * alias is preserved for one minor cycle so existing imports keep compiling;\n * editor tooling will surface the rename so downstream code can migrate at its\n * own pace. Slated for removal in the next major.\n */\nexport type FormatID = FormatReferenceStructuredObject;\n\n// Re-export wire request/response types adopters need when building a\n// DecisioningPlatform or calling AdCP agents. Source of truth is\n// `tools.generated.ts`; this curated block is the public surface so\n// adopters never reach into generated files.\n//\n// Intentionally excluded — name conflicts with legacy adcp.ts shapes:\n// LegacyManageSyncCreativesRequest, LegacyManageListCreativesRequest, LegacyManageListCreativesResponse,\n// ManageCreativeAssetsRequest, ManageCreativeAssetsResponse (adcp.ts versions\n// already public via `export * from './adcp'` above; use those).\n// Intentionally excluded — comply-runner internals, not specialism surface:\n// ComplyTestControllerRequest/Response, SeedSuccess, SimulationSuccess,\n// ControllerError, ForcedDirectiveSuccess, StateTransitionSuccess,\n// ListScenariosSuccess.\n// Intentionally excluded — internal pagination/packaging sub-shapes, not\n// part of the top-level tool request/response surface:\n// PaginationRequest, PaginationResponse, PackageRequest,\n// TMPResponseType, WebhookResponseType.\n\n// Account model + account operations\nexport type {\n AccountReference,\n ListAccountsRequest,\n ListAccountsResponse,\n SyncAccountsRequest,\n SyncAccountsResponse,\n SyncAccountsSuccess,\n SyncAccountsError,\n GetAccountFinancialsRequest,\n GetAccountFinancialsResponse,\n GetAccountFinancialsSuccess,\n GetAccountFinancialsError,\n} from './tools.generated';\n\n// Capabilities\nexport type { AdCPSpecialism, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse } from './tools.generated';\n\n// Sales — media buy\nexport type {\n GetProductsRequest,\n GetProductsResponse,\n GetProductsAsyncSubmitted,\n CreateMediaBuyRequest,\n CreateMediaBuyResponse,\n CreateMediaBuySuccess,\n CreateMediaBuyError,\n CreateMediaBuySubmitted,\n CreateMediaBuyAsyncSubmitted,\n UpdateMediaBuyRequest,\n UpdateMediaBuyResponse,\n UpdateMediaBuySuccess,\n UpdateMediaBuyError,\n UpdateMediaBuyAsyncSubmitted,\n GetMediaBuysRequest,\n GetMediaBuysResponse,\n GetMediaBuyDeliveryRequest,\n GetMediaBuyDeliveryResponse,\n GetMediaBuyArtifactsRequest,\n GetMediaBuyArtifactsResponse,\n ProvidePerformanceFeedbackRequest,\n ProvidePerformanceFeedbackResponse,\n ProvidePerformanceFeedbackSuccess,\n ProvidePerformanceFeedbackError,\n SyncPlansRequest,\n SyncPlansResponse,\n ReportUsageRequest,\n ReportUsageResponse,\n ReportPlanOutcomeRequest,\n ReportPlanOutcomeResponse,\n GetPlanAuditLogsRequest,\n GetPlanAuditLogsResponse,\n} from './tools.generated';\n\n// Pricing models (discriminated union across pricing types)\nexport type { PricingOption, CPMPricingOption, CPCPricingOption, CPVPricingOption } from './tools.generated';\n\n// Media-channel + status enums; publisher property + reporting shapes\nexport type {\n MediaChannel,\n AudienceStatus,\n MediaBuyStatus,\n CreativeStatus,\n Placement,\n PublisherPropertySelector,\n ReportingCapabilities,\n} from './tools.generated';\n\n// Audiences, catalogs, event sources, and events (audience-sync + retail media)\nexport type {\n SyncAudiencesRequest,\n SyncAudiencesResponse,\n SyncAudiencesSuccess,\n SyncAudiencesError,\n SyncCatalogsRequest,\n SyncCatalogsResponse,\n SyncCatalogsSuccess,\n SyncCatalogsError,\n SyncCatalogsAsyncSubmitted,\n SyncEventSourcesRequest,\n SyncEventSourcesResponse,\n SyncEventSourcesSuccess,\n SyncEventSourcesError,\n LogEventRequest,\n LogEventResponse,\n LogEventSuccess,\n LogEventError,\n} from './tools.generated';\n\n// Signals\nexport type {\n GetSignalsRequest,\n GetSignalsResponse,\n ActivateSignalRequest,\n ActivateSignalResponse,\n ActivateSignalSuccess,\n ActivateSignalError,\n SignalID,\n SignalValueType,\n SignalAvailabilityType,\n SignalAvailabilityType as SignalCatalogType,\n Destination,\n Deployment,\n ActivationKey,\n VendorPricingOption,\n SignalFilters, // embedded in GetSignalsRequest.filters\n SignalTargeting, // embedded in ActivateSignalRequest.signal_targeting\n} from './tools.generated';\n\n// Creative\nexport type {\n BuildCreativeRequest,\n BuildCreativeResponse,\n BuildCreativeSuccess,\n BuildCreativeError,\n BuildCreativeMultiSuccess,\n BuildCreativeAsyncSubmitted,\n CreativeManifest,\n PreviewCreativeRequest,\n PreviewCreativeResponse,\n PreviewCreativeSingleResponse,\n PreviewCreativeVariantResponse,\n PreviewCreativeBatchResponse,\n PreviewBatchResultSuccess,\n PreviewBatchResultError,\n ListCreativeFormatsRequest,\n ListCreativeFormatsResponse,\n GetCreativeFeaturesRequest,\n GetCreativeFeaturesResponse,\n GetCreativeDeliveryRequest,\n GetCreativeDeliveryResponse,\n SyncCreativesRequest,\n SyncCreativesResponse,\n SyncCreativesSuccess,\n SyncCreativesError,\n SyncCreativesSubmitted,\n SyncCreativesAsyncSubmitted,\n ListCreativesRequest,\n ListCreativesResponse,\n CreativeFilters,\n CreativeAsset,\n CreativeQuality,\n Format,\n ProductFormatDeclaration,\n FormatIDParameter,\n} from './tools.generated';\n\n// Governance — property lists\nexport type {\n PropertyList,\n CreatePropertyListRequest,\n CreatePropertyListResponse,\n UpdatePropertyListRequest,\n UpdatePropertyListResponse,\n GetPropertyListRequest,\n GetPropertyListResponse,\n ListPropertyListsRequest,\n ListPropertyListsResponse,\n DeletePropertyListRequest,\n DeletePropertyListResponse,\n} from './tools.generated';\n\n// Governance — collection lists\nexport type {\n CollectionList,\n CreateCollectionListRequest,\n CreateCollectionListResponse,\n UpdateCollectionListRequest,\n UpdateCollectionListResponse,\n GetCollectionListRequest,\n GetCollectionListResponse,\n ListCollectionListsRequest,\n ListCollectionListsResponse,\n DeleteCollectionListRequest,\n DeleteCollectionListResponse,\n} from './tools.generated';\n\n// Governance — content standards + delivery validation\nexport type {\n CheckGovernanceRequest,\n CheckGovernanceResponse,\n SyncGovernanceRequest,\n SyncGovernanceResponse,\n SyncGovernanceSuccess,\n SyncGovernanceError,\n CreateContentStandardsRequest,\n CreateContentStandardsResponse,\n UpdateContentStandardsRequest,\n UpdateContentStandardsResponse,\n UpdateContentStandardsSuccess,\n UpdateContentStandardsError,\n ListContentStandardsRequest,\n ListContentStandardsResponse,\n GetContentStandardsRequest,\n GetContentStandardsResponse,\n CalibrateContentRequest,\n CalibrateContentResponse,\n ValidateContentDeliveryRequest,\n ValidateContentDeliveryResponse,\n} from './tools.generated';\n\n// Sponsored intelligence\nexport type {\n SIGetOfferingRequest,\n SIGetOfferingResponse,\n SIInitiateSessionRequest,\n SIInitiateSessionResponse,\n SISendMessageRequest,\n SISendMessageResponse,\n SITerminateSessionRequest,\n SITerminateSessionResponse,\n SICapabilities,\n SIIdentity,\n SISessionStatus,\n SIUIElement,\n} from './tools.generated';\n\n// Brand rights — identity discovery + licensing for branded inventory.\n// `creative_approval` is webhook-only (not an MCP/A2A tool) — types\n// re-exported for adopters wiring their own HTTP receiver.\nexport type {\n GetBrandIdentityRequest,\n GetBrandIdentityResponse,\n GetBrandIdentitySuccess,\n GetRightsRequest,\n GetRightsResponse,\n GetRightsSuccess,\n AcquireRightsRequest,\n AcquireRightsResponse,\n AcquireRightsAcquired,\n AcquireRightsPendingApproval,\n AcquireRightsRejected,\n AcquireRightsError,\n UpdateRightsRequest,\n UpdateRightsResponse,\n UpdateRightsSuccess,\n UpdateRightsError,\n CreativeApprovalRequest,\n CreativeApprovalResponse,\n CreativeApproved,\n CreativeRejected,\n CreativePendingReview,\n CreativeApprovalError,\n RightsTerms,\n RightsConstraint,\n RightUse,\n RightType,\n GenerationCredential,\n} from './core.generated';\n\n// Strict format asset slot types (hand-authored — the codegen drops the\n// discriminated per-asset-type branches of Format.assets[]).\nexport * from './format-asset-slots';\n\n// Discriminated union of creative asset INSTANCES (what a buyer delivers\n// inside `creative_manifest.assets`). Companion to format-asset-slots.ts\n// (which describes what a publisher SELLS in `Format.assets[]`). The\n// individual ImageAsset / VideoAsset / etc. interfaces are generated; this\n// file is the missing canonical union over them.\n// Note: tools.generated.ts also has `AssetVariant`, a narrower generated union\n// that omits AudioAsset. `AssetInstance` (this file) is the curated, complete\n// union — prefer it. `AssetVariant` is intentionally not re-exported.\nexport * from './asset-instances';\n\n// Strict per-row types for sync_* response success arms. The codegen\n// leaves these row shapes inline; named types make the discriminators\n// (e.g., SyncAccountsResponseRow.action) reachable to handler authors.\nexport * from './sync-rows';\n\n// Re-export const-array enum values (e.g., MediaChannelValues, PacingValues)\n// for consumers that need to enumerate or validate against the spec's\n// literal sets without re-deriving them from Zod schemas.\nexport * from './enums.generated';\n\n// Re-export inline-union value arrays for anonymous string-literal unions\n// inside named schemas (e.g., ImageAssetRequirements_FormatsValues,\n// VideoAssetRequirements_ContainersValues). Companion to enums.generated;\n// see scripts/generate-inline-enum-arrays.ts.\nexport * from './inline-enums.generated';\n\n// Back-compat aliases for inline-enum exports collapsed in AdCP 3.0.1\n// (adcp#3148 / #3174 hoisted byte-identical literal sets into shared\n// `enums/*.json` files). Each alias is `@deprecated` so editor tooling\n// surfaces the canonical replacement; slated for removal in the next major.\nexport * from './inline-enums.aliases';\n\n// Back-compat aliases for the 6 error-details schemas renamed in AdCP 3.0.x\n// (adcp#3149 / adcp#3566 canonicalized SCREAMING_SNAKE titles into Title Case).\n// Each alias is `@deprecated`; slated for removal in the next major.\nexport * from './error-details.aliases';\n\n// Well-known file shapes (brand.json, adagents.json) inferred from the\n// canonical Zod schemas. Re-exported so adopters can derive types like\n// `BrandDefinition` directly from the spec instead of hand-rolling\n// interfaces that drift across versions. Source of truth is the schema\n// cache (`schemas/cache/{version}/{brand,adagents}.json`) — regenerate\n// with `npm run generate-wellknown-schemas` when the spec bumps.\nexport type { BrandJson, AdagentsJson } from './wellknown-schemas.generated';\nexport { BrandJsonSchema, AdagentsJsonSchema } from './wellknown-schemas.generated';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAc,mBADd;AAkCA,0BAAc,qCAlCd;AA0TA,0BAAc,iCA1Td;AAoUA,0BAAc,8BApUd;AAyUA,0BAAc,wBAzUd;AA8UA,0BAAc,8BA9Ud;AAoVA,0BAAc,qCApVd;AA0VA,0BAAc,mCA1Vd;AA+VA,0BAAc,oCA/Vd;AAwWA,+BAAoD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/types/index.ts"],"sourcesContent":["// AdCP Core Types - Main exports for external consumers\nexport * from './adcp';\n\n// Re-export key types for easier importing\nexport type {\n AgentConfig,\n TestResult,\n TestRequest,\n ApiResponse,\n CreativeFormat,\n AdvertisingProduct,\n MediaBuy,\n Targeting,\n ManageCreativeAssetsRequest,\n ManageCreativeAssetsResponse,\n CreateMediaBuyAsyncResponseData,\n UpdateMediaBuyAsyncResponseData,\n GetProductsAsyncResponseData,\n SyncCreativesAsyncResponseData,\n} from './adcp';\n\n// Re-export the structured format identifier from generated core types.\n// AdCP 3.0.1 renamed the schema title from \"Format ID\" to \"Format Reference\n// (Structured Object)\" — purely a doc change, the wire shape is identical.\n// We expose the new canonical name AND keep the historical `FormatID` alias\n// so SDK consumers don't break across the version bump.\nexport type { FormatReferenceStructuredObject } from './core.generated';\nimport type { FormatReferenceStructuredObject } from './core.generated';\nexport type { RequireCacheScopeWhenProducts, ServerPayload } from './server-payload';\nexport * from './server-payload-aliases';\n/**\n * @deprecated AdCP 3.0.1 renamed this type to `FormatReferenceStructuredObject`\n * (the wire shape is identical — pure documentation rename per the spec). This\n * alias is preserved for one minor cycle so existing imports keep compiling;\n * editor tooling will surface the rename so downstream code can migrate at its\n * own pace. Slated for removal in the next major.\n */\nexport type FormatID = FormatReferenceStructuredObject;\n\n// Re-export wire request/response types adopters need when building a\n// DecisioningPlatform or calling AdCP agents. Source of truth is\n// `tools.generated.ts`; this curated block is the public surface so\n// adopters never reach into generated files.\n//\n// Intentionally excluded — name conflicts with legacy adcp.ts shapes:\n// SyncCreativesRequest, ListCreativesRequest, ListCreativesResponse,\n// ManageCreativeAssetsRequest, ManageCreativeAssetsResponse (adcp.ts versions\n// already public via `export * from './adcp'` above; use those).\n// Intentionally excluded — comply-runner internals, not specialism surface:\n// ComplyTestControllerRequest/Response, SeedSuccess, SimulationSuccess,\n// ControllerError, ForcedDirectiveSuccess, StateTransitionSuccess,\n// ListScenariosSuccess.\n// Intentionally excluded — internal pagination/packaging sub-shapes, not\n// part of the top-level tool request/response surface:\n// PaginationRequest, PaginationResponse, PackageRequest,\n// TMPResponseType, WebhookResponseType.\n\n// Account model + account operations\nexport type {\n AccountReference,\n ListAccountsRequest,\n ListAccountsResponse,\n SyncAccountsRequest,\n SyncAccountsResponse,\n SyncAccountsSuccess,\n SyncAccountsError,\n GetAccountFinancialsRequest,\n GetAccountFinancialsResponse,\n GetAccountFinancialsSuccess,\n GetAccountFinancialsError,\n} from './tools.generated';\n\n// Capabilities\nexport type { AdCPSpecialism, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse } from './tools.generated';\n\n// Sales — media buy\nexport type {\n GetProductsRequest,\n GetProductsResponse,\n GetProductsAsyncSubmitted,\n CreateMediaBuyRequest,\n CreateMediaBuyResponse,\n CreateMediaBuySuccess,\n CreateMediaBuyError,\n CreateMediaBuySubmitted,\n CreateMediaBuyAsyncSubmitted,\n UpdateMediaBuyRequest,\n UpdateMediaBuyResponse,\n UpdateMediaBuySuccess,\n UpdateMediaBuyError,\n UpdateMediaBuyAsyncSubmitted,\n GetMediaBuysRequest,\n GetMediaBuysResponse,\n GetMediaBuyDeliveryRequest,\n GetMediaBuyDeliveryResponse,\n GetMediaBuyArtifactsRequest,\n GetMediaBuyArtifactsResponse,\n ProvidePerformanceFeedbackRequest,\n ProvidePerformanceFeedbackResponse,\n ProvidePerformanceFeedbackSuccess,\n ProvidePerformanceFeedbackError,\n SyncPlansRequest,\n SyncPlansResponse,\n ReportUsageRequest,\n ReportUsageResponse,\n ReportPlanOutcomeRequest,\n ReportPlanOutcomeResponse,\n GetPlanAuditLogsRequest,\n GetPlanAuditLogsResponse,\n} from './tools.generated';\n\n// Pricing models (discriminated union across pricing types)\nexport type { PricingOption, CPMPricingOption, CPCPricingOption, CPVPricingOption } from './tools.generated';\n\n// Media-channel + status enums; publisher property + reporting shapes\nexport type {\n MediaChannel,\n AudienceStatus,\n MediaBuyStatus,\n CreativeStatus,\n Placement,\n PublisherPropertySelector,\n ReportingCapabilities,\n} from './tools.generated';\n\n// Audiences, catalogs, event sources, and events (audience-sync + retail media)\nexport type {\n SyncAudiencesRequest,\n SyncAudiencesResponse,\n SyncAudiencesSuccess,\n SyncAudiencesError,\n SyncCatalogsRequest,\n SyncCatalogsResponse,\n SyncCatalogsSuccess,\n SyncCatalogsError,\n SyncCatalogsAsyncSubmitted,\n SyncEventSourcesRequest,\n SyncEventSourcesResponse,\n SyncEventSourcesSuccess,\n SyncEventSourcesError,\n LogEventRequest,\n LogEventResponse,\n LogEventSuccess,\n LogEventError,\n} from './tools.generated';\n\n// Signals\nexport type {\n GetSignalsRequest,\n GetSignalsResponse,\n ActivateSignalRequest,\n ActivateSignalResponse,\n ActivateSignalSuccess,\n ActivateSignalError,\n SignalID,\n SignalValueType,\n SignalAvailabilityType,\n SignalAvailabilityType as SignalCatalogType,\n Destination,\n Deployment,\n ActivationKey,\n VendorPricingOption,\n SignalFilters, // embedded in GetSignalsRequest.filters\n SignalTargeting, // embedded in ActivateSignalRequest.signal_targeting\n} from './tools.generated';\n\n// Creative\nexport type {\n BuildCreativeRequest,\n BuildCreativeResponse,\n BuildCreativeSuccess,\n BuildCreativeError,\n BuildCreativeMultiSuccess,\n BuildCreativeAsyncSubmitted,\n CreativeManifest,\n PreviewCreativeRequest,\n PreviewCreativeResponse,\n PreviewCreativeSingleResponse,\n PreviewCreativeVariantResponse,\n PreviewCreativeBatchResponse,\n PreviewBatchResultSuccess,\n PreviewBatchResultError,\n ListCreativeFormatsRequest,\n ListCreativeFormatsResponse,\n GetCreativeFeaturesRequest,\n GetCreativeFeaturesResponse,\n GetCreativeDeliveryRequest,\n GetCreativeDeliveryResponse,\n SyncCreativesResponse,\n SyncCreativesSuccess,\n SyncCreativesError,\n SyncCreativesSubmitted,\n SyncCreativesAsyncSubmitted,\n CreativeAsset,\n CreativeQuality,\n Format,\n ProductFormatDeclaration,\n FormatIDParameter,\n} from './tools.generated';\n\n// Governance — property lists\nexport type {\n PropertyList,\n CreatePropertyListRequest,\n CreatePropertyListResponse,\n UpdatePropertyListRequest,\n UpdatePropertyListResponse,\n GetPropertyListRequest,\n GetPropertyListResponse,\n ListPropertyListsRequest,\n ListPropertyListsResponse,\n DeletePropertyListRequest,\n DeletePropertyListResponse,\n} from './tools.generated';\n\n// Governance — collection lists\nexport type {\n CollectionList,\n CreateCollectionListRequest,\n CreateCollectionListResponse,\n UpdateCollectionListRequest,\n UpdateCollectionListResponse,\n GetCollectionListRequest,\n GetCollectionListResponse,\n ListCollectionListsRequest,\n ListCollectionListsResponse,\n DeleteCollectionListRequest,\n DeleteCollectionListResponse,\n} from './tools.generated';\n\n// Governance — content standards + delivery validation\nexport type {\n CheckGovernanceRequest,\n CheckGovernanceResponse,\n SyncGovernanceRequest,\n SyncGovernanceResponse,\n SyncGovernanceSuccess,\n SyncGovernanceError,\n CreateContentStandardsRequest,\n CreateContentStandardsResponse,\n UpdateContentStandardsRequest,\n UpdateContentStandardsResponse,\n UpdateContentStandardsSuccess,\n UpdateContentStandardsError,\n ListContentStandardsRequest,\n ListContentStandardsResponse,\n GetContentStandardsRequest,\n GetContentStandardsResponse,\n CalibrateContentRequest,\n CalibrateContentResponse,\n ValidateContentDeliveryRequest,\n ValidateContentDeliveryResponse,\n} from './tools.generated';\n\n// Sponsored intelligence\nexport type {\n SIGetOfferingRequest,\n SIGetOfferingResponse,\n SIInitiateSessionRequest,\n SIInitiateSessionResponse,\n SISendMessageRequest,\n SISendMessageResponse,\n SITerminateSessionRequest,\n SITerminateSessionResponse,\n SICapabilities,\n SIIdentity,\n SISessionStatus,\n SIUIElement,\n} from './tools.generated';\n\n// Brand rights — identity discovery + licensing for branded inventory.\n// `creative_approval` is webhook-only (not an MCP/A2A tool) — types\n// re-exported for adopters wiring their own HTTP receiver.\nexport type {\n GetBrandIdentityRequest,\n GetBrandIdentityResponse,\n GetBrandIdentitySuccess,\n GetRightsRequest,\n GetRightsResponse,\n GetRightsSuccess,\n AcquireRightsRequest,\n AcquireRightsResponse,\n AcquireRightsAcquired,\n AcquireRightsPendingApproval,\n AcquireRightsRejected,\n AcquireRightsError,\n UpdateRightsRequest,\n UpdateRightsResponse,\n UpdateRightsSuccess,\n UpdateRightsError,\n CreativeApprovalRequest,\n CreativeApprovalResponse,\n CreativeApproved,\n CreativeRejected,\n CreativePendingReview,\n CreativeApprovalError,\n RightsTerms,\n RightsConstraint,\n RightUse,\n RightType,\n GenerationCredential,\n} from './core.generated';\n\n// Strict format asset slot types (hand-authored — the codegen drops the\n// discriminated per-asset-type branches of Format.assets[]).\nexport * from './format-asset-slots';\n\n// Discriminated union of creative asset INSTANCES (what a buyer delivers\n// inside `creative_manifest.assets`). Companion to format-asset-slots.ts\n// (which describes what a publisher SELLS in `Format.assets[]`). The\n// individual ImageAsset / VideoAsset / etc. interfaces are generated; this\n// file is the missing canonical union over them.\n// Note: tools.generated.ts also has `AssetVariant`, a narrower generated union\n// that omits AudioAsset. `AssetInstance` (this file) is the curated, complete\n// union — prefer it. `AssetVariant` is intentionally not re-exported.\nexport * from './asset-instances';\n\n// Strict per-row types for sync_* response success arms. The codegen\n// leaves these row shapes inline; named types make the discriminators\n// (e.g., SyncAccountsResponseRow.action) reachable to handler authors.\nexport * from './sync-rows';\n\n// Re-export const-array enum values (e.g., MediaChannelValues, PacingValues)\n// for consumers that need to enumerate or validate against the spec's\n// literal sets without re-deriving them from Zod schemas.\nexport * from './enums.generated';\n\n// Re-export inline-union value arrays for anonymous string-literal unions\n// inside named schemas (e.g., ImageAssetRequirements_FormatsValues,\n// VideoAssetRequirements_ContainersValues). Companion to enums.generated;\n// see scripts/generate-inline-enum-arrays.ts.\nexport * from './inline-enums.generated';\n\n// Back-compat aliases for inline-enum exports collapsed in AdCP 3.0.1\n// (adcp#3148 / #3174 hoisted byte-identical literal sets into shared\n// `enums/*.json` files). Each alias is `@deprecated` so editor tooling\n// surfaces the canonical replacement; slated for removal in the next major.\nexport * from './inline-enums.aliases';\n\n// Back-compat aliases for the 6 error-details schemas renamed in AdCP 3.0.x\n// (adcp#3149 / adcp#3566 canonicalized SCREAMING_SNAKE titles into Title Case).\n// Each alias is `@deprecated`; slated for removal in the next major.\nexport * from './error-details.aliases';\n\n// Well-known file shapes (brand.json, adagents.json) inferred from the\n// canonical Zod schemas. Re-exported so adopters can derive types like\n// `BrandDefinition` directly from the spec instead of hand-rolling\n// interfaces that drift across versions. Source of truth is the schema\n// cache (`schemas/cache/{version}/{brand,adagents}.json`) — regenerate\n// with `npm run generate-wellknown-schemas` when the spec bumps.\nexport type { BrandJson, AdagentsJson } from './wellknown-schemas.generated';\nexport { BrandJsonSchema, AdagentsJsonSchema } from './wellknown-schemas.generated';\n"],"mappings":"AACA,cAAc;AA4Bd,cAAc;AAoRd,cAAc;AAUd,cAAc;AAKd,cAAc;AAKd,cAAc;AAMd,cAAc;AAMd,cAAc;AAKd,cAAc;AASd,SAAS,iBAAiB,0BAA0B;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/types/index.ts"],"sourcesContent":["// AdCP Core Types - Main exports for external consumers\nexport * from './adcp';\n\n// Re-export key types for easier importing\nexport type {\n AgentConfig,\n TestResult,\n TestRequest,\n ApiResponse,\n LegacyCreativeFormatSummary,\n LegacyAdvertisingProduct,\n MediaBuy,\n Targeting,\n LegacyManagedCreativeAsset,\n LegacyManageSyncCreativesRequest,\n LegacyManageListCreativesRequest,\n LegacyManageListCreativesResponse,\n LegacyManagedCreativeFilters,\n ManageCreativeAssetsRequest,\n ManageCreativeAssetsResponse,\n CreateMediaBuyAsyncResponseData,\n UpdateMediaBuyAsyncResponseData,\n GetProductsAsyncResponseData,\n SyncCreativesAsyncResponseData,\n} from './adcp';\n\n// Re-export the structured format identifier from generated core types.\n// AdCP 3.0.1 renamed the schema title from \"Format ID\" to \"Format Reference\n// (Structured Object)\" — purely a doc change, the wire shape is identical.\n// We expose the new canonical name AND keep the historical `FormatID` alias\n// so SDK consumers don't break across the version bump.\nexport type { FormatReferenceStructuredObject } from './core.generated';\nimport type { FormatReferenceStructuredObject } from './core.generated';\nexport type { RequireCacheScopeWhenProducts, ServerPayload } from './server-payload';\nexport * from './server-payload-aliases';\n/**\n * @deprecated AdCP 3.0.1 renamed this type to `FormatReferenceStructuredObject`\n * (the wire shape is identical — pure documentation rename per the spec). This\n * alias is preserved for one minor cycle so existing imports keep compiling;\n * editor tooling will surface the rename so downstream code can migrate at its\n * own pace. Slated for removal in the next major.\n */\nexport type FormatID = FormatReferenceStructuredObject;\n\n// Re-export wire request/response types adopters need when building a\n// DecisioningPlatform or calling AdCP agents. Source of truth is\n// `tools.generated.ts`; this curated block is the public surface so\n// adopters never reach into generated files.\n//\n// Intentionally excluded — name conflicts with legacy adcp.ts shapes:\n// LegacyManageSyncCreativesRequest, LegacyManageListCreativesRequest, LegacyManageListCreativesResponse,\n// ManageCreativeAssetsRequest, ManageCreativeAssetsResponse (adcp.ts versions\n// already public via `export * from './adcp'` above; use those).\n// Intentionally excluded — comply-runner internals, not specialism surface:\n// ComplyTestControllerRequest/Response, SeedSuccess, SimulationSuccess,\n// ControllerError, ForcedDirectiveSuccess, StateTransitionSuccess,\n// ListScenariosSuccess.\n// Intentionally excluded — internal pagination/packaging sub-shapes, not\n// part of the top-level tool request/response surface:\n// PaginationRequest, PaginationResponse, PackageRequest,\n// TMPResponseType, WebhookResponseType.\n\n// Account model + account operations\nexport type {\n AccountReference,\n ListAccountsRequest,\n ListAccountsResponse,\n SyncAccountsRequest,\n SyncAccountsResponse,\n SyncAccountsSuccess,\n SyncAccountsError,\n GetAccountFinancialsRequest,\n GetAccountFinancialsResponse,\n GetAccountFinancialsSuccess,\n GetAccountFinancialsError,\n} from './tools.generated';\n\n// Capabilities\nexport type { AdCPSpecialism, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse } from './tools.generated';\n\n// Sales — media buy\nexport type {\n GetProductsRequest,\n GetProductsResponse,\n GetProductsAsyncSubmitted,\n CreateMediaBuyRequest,\n CreateMediaBuyResponse,\n CreateMediaBuySuccess,\n CreateMediaBuyError,\n CreateMediaBuySubmitted,\n CreateMediaBuyAsyncSubmitted,\n UpdateMediaBuyRequest,\n UpdateMediaBuyResponse,\n UpdateMediaBuySuccess,\n UpdateMediaBuyError,\n UpdateMediaBuyAsyncSubmitted,\n GetMediaBuysRequest,\n GetMediaBuysResponse,\n GetMediaBuyDeliveryRequest,\n GetMediaBuyDeliveryResponse,\n GetMediaBuyArtifactsRequest,\n GetMediaBuyArtifactsResponse,\n ProvidePerformanceFeedbackRequest,\n ProvidePerformanceFeedbackResponse,\n ProvidePerformanceFeedbackSuccess,\n ProvidePerformanceFeedbackError,\n SyncPlansRequest,\n SyncPlansResponse,\n ReportUsageRequest,\n ReportUsageResponse,\n ReportPlanOutcomeRequest,\n ReportPlanOutcomeResponse,\n GetPlanAuditLogsRequest,\n GetPlanAuditLogsResponse,\n} from './tools.generated';\n\n// Pricing models (discriminated union across pricing types)\nexport type { PricingOption, CPMPricingOption, CPCPricingOption, CPVPricingOption } from './tools.generated';\n\n// Media-channel + status enums; publisher property + reporting shapes\nexport type {\n MediaChannel,\n AudienceStatus,\n MediaBuyStatus,\n CreativeStatus,\n Placement,\n PublisherPropertySelector,\n ReportingCapabilities,\n} from './tools.generated';\n\n// Audiences, catalogs, event sources, and events (audience-sync + retail media)\nexport type {\n SyncAudiencesRequest,\n SyncAudiencesResponse,\n SyncAudiencesSuccess,\n SyncAudiencesError,\n SyncCatalogsRequest,\n SyncCatalogsResponse,\n SyncCatalogsSuccess,\n SyncCatalogsError,\n SyncCatalogsAsyncSubmitted,\n SyncEventSourcesRequest,\n SyncEventSourcesResponse,\n SyncEventSourcesSuccess,\n SyncEventSourcesError,\n LogEventRequest,\n LogEventResponse,\n LogEventSuccess,\n LogEventError,\n} from './tools.generated';\n\n// Signals\nexport type {\n GetSignalsRequest,\n GetSignalsResponse,\n ActivateSignalRequest,\n ActivateSignalResponse,\n ActivateSignalSuccess,\n ActivateSignalError,\n SignalID,\n SignalValueType,\n SignalAvailabilityType,\n SignalAvailabilityType as SignalCatalogType,\n Destination,\n Deployment,\n ActivationKey,\n VendorPricingOption,\n SignalFilters, // embedded in GetSignalsRequest.filters\n SignalTargeting, // embedded in ActivateSignalRequest.signal_targeting\n} from './tools.generated';\n\n// Creative\nexport type {\n BuildCreativeRequest,\n BuildCreativeResponse,\n BuildCreativeSuccess,\n BuildCreativeError,\n BuildCreativeMultiSuccess,\n BuildCreativeAsyncSubmitted,\n CreativeManifest,\n PreviewCreativeRequest,\n PreviewCreativeResponse,\n PreviewCreativeSingleResponse,\n PreviewCreativeVariantResponse,\n PreviewCreativeBatchResponse,\n PreviewBatchResultSuccess,\n PreviewBatchResultError,\n ListCreativeFormatsRequest,\n ListCreativeFormatsResponse,\n GetCreativeFeaturesRequest,\n GetCreativeFeaturesResponse,\n GetCreativeDeliveryRequest,\n GetCreativeDeliveryResponse,\n SyncCreativesRequest,\n SyncCreativesResponse,\n SyncCreativesSuccess,\n SyncCreativesError,\n SyncCreativesSubmitted,\n SyncCreativesAsyncSubmitted,\n ListCreativesRequest,\n ListCreativesResponse,\n CreativeFilters,\n CreativeAsset,\n CreativeQuality,\n Format,\n ProductFormatDeclaration,\n FormatIDParameter,\n} from './tools.generated';\n\n// Governance — property lists\nexport type {\n PropertyList,\n CreatePropertyListRequest,\n CreatePropertyListResponse,\n UpdatePropertyListRequest,\n UpdatePropertyListResponse,\n GetPropertyListRequest,\n GetPropertyListResponse,\n ListPropertyListsRequest,\n ListPropertyListsResponse,\n DeletePropertyListRequest,\n DeletePropertyListResponse,\n} from './tools.generated';\n\n// Governance — collection lists\nexport type {\n CollectionList,\n CreateCollectionListRequest,\n CreateCollectionListResponse,\n UpdateCollectionListRequest,\n UpdateCollectionListResponse,\n GetCollectionListRequest,\n GetCollectionListResponse,\n ListCollectionListsRequest,\n ListCollectionListsResponse,\n DeleteCollectionListRequest,\n DeleteCollectionListResponse,\n} from './tools.generated';\n\n// Governance — content standards + delivery validation\nexport type {\n CheckGovernanceRequest,\n CheckGovernanceResponse,\n SyncGovernanceRequest,\n SyncGovernanceResponse,\n SyncGovernanceSuccess,\n SyncGovernanceError,\n CreateContentStandardsRequest,\n CreateContentStandardsResponse,\n UpdateContentStandardsRequest,\n UpdateContentStandardsResponse,\n UpdateContentStandardsSuccess,\n UpdateContentStandardsError,\n ListContentStandardsRequest,\n ListContentStandardsResponse,\n GetContentStandardsRequest,\n GetContentStandardsResponse,\n CalibrateContentRequest,\n CalibrateContentResponse,\n ValidateContentDeliveryRequest,\n ValidateContentDeliveryResponse,\n} from './tools.generated';\n\n// Sponsored intelligence\nexport type {\n SIGetOfferingRequest,\n SIGetOfferingResponse,\n SIInitiateSessionRequest,\n SIInitiateSessionResponse,\n SISendMessageRequest,\n SISendMessageResponse,\n SITerminateSessionRequest,\n SITerminateSessionResponse,\n SICapabilities,\n SIIdentity,\n SISessionStatus,\n SIUIElement,\n} from './tools.generated';\n\n// Brand rights — identity discovery + licensing for branded inventory.\n// `creative_approval` is webhook-only (not an MCP/A2A tool) — types\n// re-exported for adopters wiring their own HTTP receiver.\nexport type {\n GetBrandIdentityRequest,\n GetBrandIdentityResponse,\n GetBrandIdentitySuccess,\n GetRightsRequest,\n GetRightsResponse,\n GetRightsSuccess,\n AcquireRightsRequest,\n AcquireRightsResponse,\n AcquireRightsAcquired,\n AcquireRightsPendingApproval,\n AcquireRightsRejected,\n AcquireRightsError,\n UpdateRightsRequest,\n UpdateRightsResponse,\n UpdateRightsSuccess,\n UpdateRightsError,\n CreativeApprovalRequest,\n CreativeApprovalResponse,\n CreativeApproved,\n CreativeRejected,\n CreativePendingReview,\n CreativeApprovalError,\n RightsTerms,\n RightsConstraint,\n RightUse,\n RightType,\n GenerationCredential,\n} from './core.generated';\n\n// Strict format asset slot types (hand-authored — the codegen drops the\n// discriminated per-asset-type branches of Format.assets[]).\nexport * from './format-asset-slots';\n\n// Discriminated union of creative asset INSTANCES (what a buyer delivers\n// inside `creative_manifest.assets`). Companion to format-asset-slots.ts\n// (which describes what a publisher SELLS in `Format.assets[]`). The\n// individual ImageAsset / VideoAsset / etc. interfaces are generated; this\n// file is the missing canonical union over them.\n// Note: tools.generated.ts also has `AssetVariant`, a narrower generated union\n// that omits AudioAsset. `AssetInstance` (this file) is the curated, complete\n// union — prefer it. `AssetVariant` is intentionally not re-exported.\nexport * from './asset-instances';\n\n// Strict per-row types for sync_* response success arms. The codegen\n// leaves these row shapes inline; named types make the discriminators\n// (e.g., SyncAccountsResponseRow.action) reachable to handler authors.\nexport * from './sync-rows';\n\n// Re-export const-array enum values (e.g., MediaChannelValues, PacingValues)\n// for consumers that need to enumerate or validate against the spec's\n// literal sets without re-deriving them from Zod schemas.\nexport * from './enums.generated';\n\n// Re-export inline-union value arrays for anonymous string-literal unions\n// inside named schemas (e.g., ImageAssetRequirements_FormatsValues,\n// VideoAssetRequirements_ContainersValues). Companion to enums.generated;\n// see scripts/generate-inline-enum-arrays.ts.\nexport * from './inline-enums.generated';\n\n// Back-compat aliases for inline-enum exports collapsed in AdCP 3.0.1\n// (adcp#3148 / #3174 hoisted byte-identical literal sets into shared\n// `enums/*.json` files). Each alias is `@deprecated` so editor tooling\n// surfaces the canonical replacement; slated for removal in the next major.\nexport * from './inline-enums.aliases';\n\n// Back-compat aliases for the 6 error-details schemas renamed in AdCP 3.0.x\n// (adcp#3149 / adcp#3566 canonicalized SCREAMING_SNAKE titles into Title Case).\n// Each alias is `@deprecated`; slated for removal in the next major.\nexport * from './error-details.aliases';\n\n// Well-known file shapes (brand.json, adagents.json) inferred from the\n// canonical Zod schemas. Re-exported so adopters can derive types like\n// `BrandDefinition` directly from the spec instead of hand-rolling\n// interfaces that drift across versions. Source of truth is the schema\n// cache (`schemas/cache/{version}/{brand,adagents}.json`) — regenerate\n// with `npm run generate-wellknown-schemas` when the spec bumps.\nexport type { BrandJson, AdagentsJson } from './wellknown-schemas.generated';\nexport { BrandJsonSchema, AdagentsJsonSchema } from './wellknown-schemas.generated';\n"],"mappings":"AACA,cAAc;AAiCd,cAAc;AAwRd,cAAc;AAUd,cAAc;AAKd,cAAc;AAKd,cAAc;AAMd,cAAc;AAMd,cAAc;AAKd,cAAc;AASd,SAAS,iBAAiB,0BAA0B;","names":[]}
@@ -17,6 +17,12 @@ export type AdcpProtocol = 'media_buy' | 'signals' | 'governance' | 'creative' |
17
17
  * Media buy features available on the agent
18
18
  */
19
19
  export interface MediaBuyFeatures {
20
+ /**
21
+ * Seller accepts canonical `format_kind` creative assets on write
22
+ * surfaces. AdCP 3.1 without this declaration remains unknown; the release
23
+ * number alone does not prove runtime support.
24
+ */
25
+ canonicalCreatives?: boolean;
20
26
  /**
21
27
  * Agent accepts package-scoped inline creative uploads in
22
28
  * create_media_buy/update_media_buy via `packages[].creatives`.
@@ -17,6 +17,12 @@ export type AdcpProtocol = 'media_buy' | 'signals' | 'governance' | 'creative' |
17
17
  * Media buy features available on the agent
18
18
  */
19
19
  export interface MediaBuyFeatures {
20
+ /**
21
+ * Seller accepts canonical `format_kind` creative assets on write
22
+ * surfaces. AdCP 3.1 without this declaration remains unknown; the release
23
+ * number alone does not prove runtime support.
24
+ */
25
+ canonicalCreatives?: boolean;
20
26
  /**
21
27
  * Agent accepts package-scoped inline creative uploads in
22
28
  * create_media_buy/update_media_buy via `packages[].creatives`.
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/capabilities.ts"],"names":[],"mappings":"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"}
@@ -241,6 +241,9 @@ function parseCapabilitiesResponse(response) {
241
241
  const wireProtocols = response.supported_protocols ?? [];
242
242
  const protocols = response.compliance_testing && !wireProtocols.includes("compliance_testing") ? [...wireProtocols, "compliance_testing"] : wireProtocols;
243
243
  const features = {
244
+ ...typeof response.media_buy?.features?.canonical_creatives === "boolean" && {
245
+ canonicalCreatives: response.media_buy.features.canonical_creatives
246
+ },
244
247
  inlineCreativeManagement: response.media_buy?.features?.inline_creative_management ?? false,
245
248
  propertyListFiltering: response.media_buy?.features?.property_list_filtering ?? false,
246
249
  contentStandards: response.media_buy?.features?.content_standards === true || declaresContentStandardsSpecialism,
@@ -381,6 +384,7 @@ const TASK_FEATURE_MAP = {
381
384
  update_rights: ["brand"]
382
385
  };
383
386
  const FEATURE_KEY_MAP = {
387
+ canonical_creatives: "canonicalCreatives",
384
388
  inline_creative_management: "inlineCreativeManagement",
385
389
  property_list_filtering: "propertyListFiltering",
386
390
  content_standards: "contentStandards",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/utils/capabilities.ts"],"sourcesContent":["/**\n * AdCP Capabilities utilities\n *\n * Provides types and helpers for working with agent capabilities,\n * including synthetic capabilities for v2 servers that don't support\n * the get_adcp_capabilities tool.\n */\n\n/**\n * Detected AdCP major version\n */\nexport type AdcpMajorVersion = 2 | 3;\n\n/**\n * Supported AdCP protocols/domains\n */\nexport type AdcpProtocol =\n | 'media_buy'\n | 'signals'\n | 'governance'\n | 'creative'\n | 'sponsored_intelligence'\n | 'trusted_match'\n | 'compliance_testing'\n | 'brand'\n | 'measurement';\n\n/**\n * Media buy features available on the agent\n */\nexport interface MediaBuyFeatures {\n /**\n * Agent accepts package-scoped inline creative uploads in\n * create_media_buy/update_media_buy via `packages[].creatives`.\n *\n * This is distinct from creative-library support. Use\n * `supportsSyncCreatives(caps)` when deciding whether to call the\n * library-scoped `sync_creatives` tool.\n */\n inlineCreativeManagement?: boolean;\n /** Agent supports property_list filtering in get_products */\n propertyListFiltering?: boolean;\n /** Agent supports content standards validation */\n contentStandards?: boolean;\n /** Agent supports conversion event tracking (sync_event_sources, log_event) */\n conversionTracking?: boolean;\n /** Agent supports first-party CRM audience management (sync_audiences) */\n audienceTargeting?: boolean;\n}\n\n/**\n * Account management capabilities declared by the seller\n */\nexport interface AccountCapabilities {\n /**\n * Whether the seller requires operator-level credentials.\n * When false (default), the agent authenticates once and declares brands/operators via sync_accounts.\n * When true, each operator must authenticate independently.\n */\n requireOperatorAuth: boolean;\n\n /**\n * OAuth authorization endpoint for obtaining operator-level credentials.\n * Present when the seller supports OAuth for operator authentication.\n * May be absent even when requireOperatorAuth is true — in that case,\n * operators obtain credentials out-of-band (e.g., seller portal, API key).\n */\n authorizationEndpoint?: string;\n\n /**\n * Billing models this seller supports (e.g., 'operator', 'agent').\n */\n supportedBilling: ('operator' | 'agent' | 'advertiser')[];\n\n /**\n * Default billing model applied when omitted from sync_accounts.\n */\n defaultBilling?: 'operator' | 'agent' | 'advertiser';\n\n /**\n * Whether an active account is required before calling get_products.\n */\n requiredForProducts: boolean;\n\n /**\n * Whether the seller supports sandbox accounts for testing.\n * For implicit accounts (require_operator_auth: false), declare sandbox via sync_accounts\n * with sandbox: true and reference by natural key. For explicit accounts\n * (require_operator_auth: true), discover pre-existing test accounts via list_accounts.\n */\n sandbox: boolean;\n}\n\n/**\n * Creative protocol capabilities declared by the agent.\n */\nexport interface CreativeCapabilities {\n /** Agent can validate compliance requirements while building creatives */\n supportsCompliance: boolean;\n /** Agent exposes a creative library addressable via creative_id */\n hasCreativeLibrary: boolean;\n /** Agent can generate creatives from a natural-language brief */\n supportsGeneration: boolean;\n /** Agent can adapt an existing creative to a new format */\n supportsTransformation: boolean;\n}\n\n/**\n * Idempotency capabilities declared by the seller.\n *\n * Clients MUST NOT fall back to an assumed TTL when the seller omits this —\n * `getIdempotencyReplayTtlSeconds()` throws when the declaration is missing\n * on a v3 server rather than silently defaulting to 24h. A seller without the\n * declaration is non-compliant and unsafe for retry-sensitive operations.\n */\nexport interface IdempotencyCapabilities {\n /**\n * Seconds the seller retains cached `(principal, idempotency_key, payload)`\n * tuples. BYOK callers compare their persisted key's age against this to\n * decide whether a fresh key + natural-key lookup is safer than reusing.\n */\n replayTtlSeconds: number;\n}\n\n/**\n * Normalized capabilities response that works for both v2 and v3 servers\n */\nexport interface AdcpCapabilities {\n /** Detected version ('v2' or 'v3') */\n version: 'v2' | 'v3';\n\n /**\n * Array of supported major versions (e.g., [2] or [2, 3]).\n * @deprecated Use {@link supportedVersions} for release-precision negotiation.\n * Removed in AdCP 4.0 per spec PR `adcontextprotocol/adcp#3493`. Continues\n * to be emitted alongside the new field through 3.x.\n */\n majorVersions: AdcpMajorVersion[];\n\n /**\n * Array of supported AdCP releases at release precision (`'3.0'`, `'3.1'`,\n * `'3.1.0-beta.1'`). Stable releases use `MAJOR.MINOR`; pre-releases use\n * the full pre-release tag. Set when the seller is on AdCP 3.1+ per spec\n * PR `adcontextprotocol/adcp#3493`. `undefined` on legacy 3.0-only sellers.\n */\n supportedVersions?: string[];\n\n /**\n * Full semver build of the seller's released AdCP version (e.g. `'3.1.2'`,\n * `'3.1.0-beta.1+sha.abc'`). Advisory — patch differences within the same\n * release-precision are non-breaking by spec convention. `undefined` on\n * legacy 3.0-only sellers.\n */\n buildVersion?: string;\n\n /** Supported protocols */\n protocols: AdcpProtocol[];\n\n /** Public specialism ids declared by this agent */\n specialisms?: string[];\n\n /** Media buy specific features */\n features: MediaBuyFeatures;\n\n /** Account management capabilities */\n account?: AccountCapabilities;\n\n /** Creative protocol capabilities */\n creative?: CreativeCapabilities;\n\n /** Idempotency replay capabilities (v3 sellers declaring `adcp.idempotency`) */\n idempotency?: IdempotencyCapabilities;\n\n /** Supported extension namespaces (e.g., 'scope3', 'garm') */\n extensions: string[];\n\n /**\n * Experimental AdCP surfaces this agent implements. Dot-namespaced feature\n * ids (e.g. `brand.rights_lifecycle`, `governance.campaign`, `trusted_match.core`)\n * sellers declare when they opt into surfaces whose schemas carry\n * `x-status: experimental`. Consumers should gate any reliance on\n * experimental fields on presence of the matching id here.\n *\n * See https://adcontextprotocol.org/docs/reference/experimental-status\n */\n experimentalFeatures?: string[];\n\n /** Publisher domains covered by this agent */\n publisherDomains?: string[];\n\n /** Supported advertising channels */\n channels?: string[];\n\n /** Last updated timestamp (if provided by server) */\n lastUpdated?: string;\n\n /** Whether this was synthesized from tool list (v2) or from get_adcp_capabilities (v3) */\n _synthetic: boolean;\n\n /** Raw response from get_adcp_capabilities (only for v3) */\n _raw?: Record<string, unknown>;\n}\n\n/**\n * Safely traverse nested keys in a Record<string, unknown>.\n */\nfunction getRawNested(obj: Record<string, unknown> | undefined, ...keys: string[]): unknown {\n let current: unknown = obj;\n for (const key of keys) {\n if (current == null || typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\n/**\n * Tool info for capability detection\n */\nexport interface ToolInfo {\n name: string;\n description?: string;\n}\n\n/**\n * Known AdCP tool names for protocol detection.\n * These map to task names in the AdCP schema index (kebab-case -> snake_case).\n *\n * Note: Some tools appear in multiple arrays (e.g., list_creative_formats is in\n * both MEDIA_BUY_TOOLS and CREATIVE_TOOLS). This is intentional — these tools\n * serve multiple domains, and their presence should activate all relevant\n * protocols when `detectProtocols()` runs.\n *\n * **Why these aren't manifest-derived (#1192).** The AdCP manifest\n * (`schemas/cache/{version}/manifest.json`) carries a single primary `protocol`\n * per tool — `list_creative_formats` is `media-buy` there, never `creative`.\n * That's an authoring convenience (where does the tool's spec page live), not\n * a capability-declaration semantic. The cross-listing here captures\n * operator reality: a CMP that exposes only `build_creative` /\n * `list_creative_formats` / `sync_creatives` IS a creative agent, and a buyer\n * discovering it via `tools/list` should see the `creative` protocol family.\n * Migrating to manifest-primary would silently flip `detectProtocols()`\n * results for cross-listed tools and break CMP↔DSP discovery flows. The\n * drift guard at `test/lib/capabilities-tools-drift.test.js` keeps the arrays\n * locked to recognized manifest tools (catches typos and removed-upstream\n * tools) without forcing the arrays to match the manifest's single-valued\n * view. See PR #1298 for the design rationale.\n */\nexport const MEDIA_BUY_TOOLS = [\n 'get_products',\n 'list_creative_formats', // Also in CREATIVE_TOOLS - serves both domains\n 'create_media_buy',\n 'update_media_buy',\n 'sync_creatives',\n 'list_creatives', // Also in CREATIVE_TOOLS - serves both domains\n 'get_media_buy_delivery',\n 'provide_performance_feedback',\n 'sync_audiences',\n 'sync_event_sources',\n 'sync_catalogs',\n 'log_event',\n] as const;\n\nexport const SIGNALS_TOOLS = ['get_signals', 'activate_signal'] as const;\n\nexport const GOVERNANCE_TOOLS = [\n // Property list management\n 'create_property_list',\n 'update_property_list',\n 'get_property_list',\n 'list_property_lists',\n 'delete_property_list',\n // Collection list management (program-level brand safety)\n 'create_collection_list',\n 'update_collection_list',\n 'get_collection_list',\n 'list_collection_lists',\n 'delete_collection_list',\n // Content standards\n 'list_content_standards',\n 'get_content_standards',\n 'create_content_standards',\n 'update_content_standards',\n 'calibrate_content',\n 'validate_content_delivery',\n 'get_media_buy_artifacts',\n // Campaign governance\n 'sync_plans',\n 'check_governance',\n 'report_plan_outcome',\n 'get_plan_audit_logs',\n // Creative governance\n 'get_creative_features',\n] as const;\n\nexport const CREATIVE_TOOLS = [\n 'build_creative',\n 'list_creative_formats',\n 'list_transformers',\n 'preview_creative',\n 'list_creatives',\n 'sync_creatives', // Also in MEDIA_BUY_TOOLS - serves both domains\n] as const;\n\nexport const SPONSORED_INTELLIGENCE_TOOLS = [\n 'si_get_offering',\n 'si_initiate_session',\n 'si_send_message',\n 'si_terminate_session',\n] as const;\n\nexport const TRUSTED_MATCH_TOOLS = ['context_match', 'identity_match'] as const;\n\nexport const COMPLIANCE_TOOLS = ['comply_test_controller'] as const;\n\n// `creative_approval` is intentionally absent — it's webhook-only (the buyer\n// POSTs to the `approval_webhook` URL returned by `acquire_rights`), not an\n// MCP/A2A tool the seller exposes. Adopters wire it via their HTTP server\n// using `BrandRightsPlatform.reviewCreativeApproval`.\nexport const BRAND_RIGHTS_TOOLS = [\n 'get_brand_identity',\n 'search_brands',\n 'get_rights',\n 'acquire_rights',\n 'update_rights',\n] as const;\n\nexport const EVENT_TRACKING_TOOLS = ['sync_event_sources', 'log_event'] as const;\n\nexport const ACCOUNT_TOOLS = ['list_accounts', 'sync_accounts'] as const;\n\nexport const PROTOCOL_TOOLS = ['get_adcp_capabilities', 'get_task_status', 'list_tasks'] as const;\n\n/**\n * Build synthetic capabilities from a list of available tools.\n * Used for v2 servers that don't support get_adcp_capabilities.\n */\n/**\n * Tool-group → protocol mapping for detection from tools/list.\n */\nconst TOOL_PROTOCOL_MAP: [readonly string[], AdcpProtocol][] = [\n [MEDIA_BUY_TOOLS, 'media_buy'],\n [SIGNALS_TOOLS, 'signals'],\n [GOVERNANCE_TOOLS, 'governance'],\n [CREATIVE_TOOLS, 'creative'],\n [SPONSORED_INTELLIGENCE_TOOLS, 'sponsored_intelligence'],\n [TRUSTED_MATCH_TOOLS, 'trusted_match'],\n [COMPLIANCE_TOOLS, 'compliance_testing'],\n [BRAND_RIGHTS_TOOLS, 'brand'],\n];\n\n/**\n * Detect protocols from tool names.\n */\nfunction detectProtocolsFromTools(toolNames: Set<string>): AdcpProtocol[] {\n const protocols: AdcpProtocol[] = [];\n for (const [tools, protocol] of TOOL_PROTOCOL_MAP) {\n if (tools.some(t => toolNames.has(t))) {\n protocols.push(protocol);\n }\n }\n return protocols;\n}\n\n/**\n * Augment declared capabilities with compliance_testing if the tool is present\n * but no `compliance_testing` capability block / protocol entry was advertised.\n *\n * Per AdCP 3.0, agents declare comply_test_controller support via the\n * top-level `capabilities.compliance_testing` block. `parseCapabilitiesResponse`\n * already promotes that block into the internal `protocols` list, so if we\n * reach this function with the tool present but the protocol missing, the\n * agent forgot the declaration. We auto-bridge (the SDK's internal type can\n * treat the agent as compliance-capable) and warn the agent once so they can\n * ship the proper block.\n *\n * Other protocols (media_buy, signals, etc.) are NOT augmented because a stub\n * or partial tool registration could produce false positives.\n */\nexport function augmentCapabilitiesFromTools(capabilities: AdcpCapabilities, tools: ToolInfo[]): AdcpCapabilities {\n const toolNames = new Set(tools.map(t => t.name));\n const hasComplianceTool = COMPLIANCE_TOOLS.some(t => toolNames.has(t));\n if (!hasComplianceTool || capabilities.protocols.includes('compliance_testing')) {\n return capabilities;\n }\n console.error(\n `[AdCP] Agent exposes comply_test_controller but omits the \\`compliance_testing\\` capability block ` +\n `from get_adcp_capabilities. Per AdCP 3.0, declare \\`capabilities.compliance_testing.scenarios\\` ` +\n `— not \\`supported_protocols\\`. The SDK is treating the agent as compliance-capable for this request.`\n );\n return {\n ...capabilities,\n protocols: [...capabilities.protocols, 'compliance_testing'],\n };\n}\n\nexport function buildSyntheticCapabilities(tools: ToolInfo[]): AdcpCapabilities {\n const toolNames = new Set(tools.map(t => t.name));\n const protocols = detectProtocolsFromTools(toolNames);\n\n // Detect features from tool presence\n const features: MediaBuyFeatures = {\n // Tool lists do not declare package-scoped inline creative upload support.\n inlineCreativeManagement: false,\n // Property list filtering is v3 only\n propertyListFiltering: false,\n // Content standards is v3 only\n contentStandards: false,\n // Conversion tracking if event tracking tools are available\n conversionTracking: EVENT_TRACKING_TOOLS.some(t => toolNames.has(t)),\n // Audience targeting if sync_audiences is available\n audienceTargeting: toolNames.has('sync_audiences'),\n };\n\n return {\n version: 'v2',\n majorVersions: [2],\n protocols,\n features,\n extensions: [],\n _synthetic: true,\n };\n}\n\n/**\n * Build synthetic v3 capabilities when the agent advertises\n * `get_adcp_capabilities` (a v3-only tool) but the call itself failed —\n * either the executor threw, or the response was non-success with no\n * structurally v3-shaped data (the case `looksLikeV3Capabilities` would\n * have caught).\n *\n * The agent is verifiably v3 because the v3-only discovery tool is\n * present in `tools/list`. Falling back to v2 synthetic in this case\n * triggers v2.5-schema lookups that have nothing to do with the original\n * failure, cascading \"AdCP schema data for version v2.5 not found\"\n * across every subsequent step. Treating as v3 (synthetic) lets the\n * caller continue against the right adapter set; the underlying\n * `get_adcp_capabilities` failure still surfaces in logs at the\n * call site.\n *\n * Sets `_synthetic: true` so version-compat checks know detail-level\n * fields (idempotency TTL, supportedVersions) are unknown — callers\n * skip those checks rather than throw `VersionUnsupportedError` on a\n * verifiably-v3 agent.\n *\n * Refs: #1217 (carve-out from #1197/closed), #1189 / #1201 (the v3-shape\n * heuristic this complements).\n */\nexport function buildSyntheticV3Capabilities(tools: ToolInfo[]): AdcpCapabilities {\n const toolNames = new Set(tools.map(t => t.name));\n const protocols = detectProtocolsFromTools(toolNames);\n\n const features: MediaBuyFeatures = {\n // Tool lists do not declare package-scoped inline creative upload support.\n inlineCreativeManagement: false,\n propertyListFiltering: false,\n contentStandards: false,\n conversionTracking: EVENT_TRACKING_TOOLS.some(t => toolNames.has(t)),\n audienceTargeting: toolNames.has('sync_audiences'),\n };\n\n return {\n version: 'v3',\n majorVersions: [3],\n protocols,\n features,\n extensions: [],\n _synthetic: true,\n };\n}\n\n/**\n * Heuristic: does this `get_adcp_capabilities` response look v3-shaped?\n *\n * Used by callers (e.g. SingleAgentClient.getCapabilities) when the response\n * fails strict schema validation but is structurally non-empty. The question\n * the heuristic answers is \"is this a v3 agent with a wire-shape bug, or a\n * v2 agent that happens to advertise the tool?\". Falling back to v2 in the\n * former case masks the original bug behind cascading v2.5-schema-not-found\n * errors; treating it as v3 surfaces the wire-shape bug at its source.\n *\n * Affirmative v3 signals (any one is enough):\n * - `adcp` block (only v3 servers carry the `{ major_versions, idempotency, ... }` envelope)\n * - `supported_protocols` array (v3-only top-level field)\n * - any v3 protocol-level capability block (`media_buy`, `signals`, `creative`, `brand`,\n * `governance`, `sponsored_intelligence`, `compliance_testing`, `account`)\n *\n * v2 servers don't expose `get_adcp_capabilities` at all (the tool itself is\n * a v3-only addition), so reaching this function with a non-empty payload\n * already strongly implies v3 — but we belt-and-suspenders the structural\n * check to avoid mis-promoting genuinely empty / null responses.\n */\nexport function looksLikeV3Capabilities(data: unknown): boolean {\n if (!isPlainObject(data)) return false;\n if (isPlainObject(data.adcp)) return true;\n if (Array.isArray(data.supported_protocols)) return true;\n const v3Blocks = [\n 'account',\n 'media_buy',\n 'signals',\n 'creative',\n 'brand',\n 'governance',\n 'sponsored_intelligence',\n 'compliance_testing',\n ] as const;\n return v3Blocks.some(block => isPlainObject(data[block]));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction declaresSpecialism(specialisms: readonly string[] | undefined, specialism: string): boolean {\n return specialisms?.includes(specialism) === true;\n}\n\nfunction hasContentStandardsSupport(capabilities: Pick<AdcpCapabilities, 'features' | 'specialisms'>): boolean {\n return (\n capabilities.features.contentStandards === true || declaresSpecialism(capabilities.specialisms, 'content-standards')\n );\n}\n\n/**\n * Parse a get_adcp_capabilities response into normalized form\n */\nexport function parseCapabilitiesResponse(response: any): AdcpCapabilities {\n const majorVersions = (response.adcp?.major_versions ?? [2]) as AdcpMajorVersion[];\n const highestVersion = Math.max(...majorVersions) as AdcpMajorVersion;\n const specialisms = Array.isArray(response.specialisms)\n ? response.specialisms.filter((s: unknown): s is string => typeof s === 'string')\n : undefined;\n const declaresContentStandardsSpecialism = declaresSpecialism(specialisms, 'content-standards');\n\n // AdCP 3.1+ release-precision capability fields per spec PR\n // `adcontextprotocol/adcp#3493`. Both fields are optional during the 3.x\n // SHOULD-emit phase; legacy 3.0 sellers won't carry them. Filter\n // `supported_versions` to strings — a misbehaving seller emitting\n // `['3.0', 42, null]` shouldn't poison the typed array. Match the\n // filtering that `extractVersionUnsupportedDetails` already does so the\n // two seller-input surfaces have the same safety contract.\n const supportedVersions = Array.isArray(response.adcp?.supported_versions)\n ? (response.adcp.supported_versions as unknown[]).filter((v): v is string => typeof v === 'string')\n : undefined;\n const buildVersion = typeof response.adcp?.build_version === 'string' ? response.adcp.build_version : undefined;\n\n // Per AdCP 3.0, `compliance_testing` is declared as a top-level\n // capability block, not as a value in `supported_protocols`. Normalize\n // legacy callers (who grep for `protocols.includes('compliance_testing')`)\n // by promoting the block into the protocols list at parse time — the\n // internal `AdcpCapabilities.protocols` shape is the SDK's own normalization\n // and doesn't need to match the wire.\n const wireProtocols = (response.supported_protocols ?? []) as AdcpProtocol[];\n const protocols =\n response.compliance_testing && !wireProtocols.includes('compliance_testing' as AdcpProtocol)\n ? ([...wireProtocols, 'compliance_testing'] as AdcpProtocol[])\n : wireProtocols;\n\n const features: MediaBuyFeatures = {\n inlineCreativeManagement: response.media_buy?.features?.inline_creative_management ?? false,\n propertyListFiltering: response.media_buy?.features?.property_list_filtering ?? false,\n contentStandards: response.media_buy?.features?.content_standards === true || declaresContentStandardsSpecialism,\n conversionTracking: response.media_buy?.features?.conversion_tracking ?? false,\n audienceTargeting: response.media_buy?.features?.audience_targeting ?? false,\n };\n\n let account: AccountCapabilities | undefined;\n if (response.account) {\n account = {\n requireOperatorAuth: response.account.require_operator_auth ?? false,\n authorizationEndpoint: response.account.authorization_endpoint,\n supportedBilling: response.account.supported_billing ?? [],\n defaultBilling: response.account.default_billing,\n requiredForProducts: response.account.required_for_products ?? false,\n sandbox: response.account.sandbox ?? false,\n };\n }\n\n let creative: CreativeCapabilities | undefined;\n if (response.creative) {\n creative = {\n supportsCompliance: response.creative.supports_compliance ?? false,\n hasCreativeLibrary: response.creative.has_creative_library ?? false,\n supportsGeneration: response.creative.supports_generation ?? false,\n supportsTransformation: response.creative.supports_transformation ?? false,\n };\n }\n\n // adcp.idempotency.replay_ttl_seconds is REQUIRED per spec when the seller\n // supports mutating tools. Absence is surfaced downstream as a fail-closed\n // error in getIdempotencyReplayTtlSeconds() — we deliberately do NOT default.\n let idempotency: IdempotencyCapabilities | undefined;\n const rawTtl = response.adcp?.idempotency?.replay_ttl_seconds;\n if (typeof rawTtl === 'number' && Number.isFinite(rawTtl) && rawTtl > 0) {\n idempotency = { replayTtlSeconds: rawTtl };\n }\n\n return {\n version: highestVersion >= 3 ? 'v3' : 'v2',\n majorVersions,\n supportedVersions,\n buildVersion,\n protocols,\n specialisms,\n features,\n account,\n creative,\n idempotency,\n extensions: response.extensions_supported ?? [],\n experimentalFeatures: Array.isArray(response.experimental_features)\n ? response.experimental_features.filter((f: unknown): f is string => typeof f === 'string')\n : undefined,\n publisherDomains: response.media_buy?.portfolio?.publisher_domains,\n channels: response.media_buy?.portfolio?.channels,\n lastUpdated: response.last_updated,\n _synthetic: false,\n _raw: response,\n };\n}\n\n/**\n * Check if capabilities indicate v3 support\n */\nexport function supportsV3(capabilities: AdcpCapabilities): boolean {\n return capabilities.majorVersions.includes(3);\n}\n\n/**\n * Check if a specific protocol is supported\n */\nexport function supportsProtocol(capabilities: AdcpCapabilities, protocol: AdcpProtocol): boolean {\n return capabilities.protocols.includes(protocol);\n}\n\n/**\n * Check if property list filtering is supported (v3 feature)\n */\nexport function supportsPropertyListFiltering(capabilities: AdcpCapabilities): boolean {\n return capabilities.features.propertyListFiltering ?? false;\n}\n\n/**\n * Check if content standards are supported (v3 feature)\n */\nexport function supportsContentStandards(capabilities: AdcpCapabilities): boolean {\n return hasContentStandardsSupport(capabilities);\n}\n\n/**\n * Check whether the seller advertises a creative library suitable for the\n * library-scoped `sync_creatives` workflow.\n *\n * This intentionally keys off `creative.has_creative_library`, not tool-list\n * presence. A seller can expose inline package creatives without a reusable\n * library, and `sync_creatives` is not safe to replace with inline\n * create/update media-buy calls unless the buyer supplies package context.\n */\nexport function supportsSyncCreatives(capabilities: AdcpCapabilities): boolean {\n return capabilities.creative?.hasCreativeLibrary === true;\n}\n\n/**\n * Check if the seller requires per-operator authentication\n */\nexport function requiresOperatorAuth(capabilities: AdcpCapabilities): boolean {\n return capabilities.account?.requireOperatorAuth ?? false;\n}\n\n/**\n * Check if an active account is required before calling get_products\n */\nexport function requiresAccountForProducts(capabilities: AdcpCapabilities): boolean {\n return capabilities.account?.requiredForProducts ?? false;\n}\n\n/**\n * Check if the seller supports sandbox accounts\n */\nexport function supportsSandbox(capabilities: AdcpCapabilities): boolean {\n return capabilities.account?.sandbox ?? false;\n}\n\n/**\n * Check if the agent has opted into a specific experimental AdCP surface.\n *\n * Experimental surfaces carry `x-status: experimental` in the spec and their\n * fields may change between minor releases. Consumers should gate any\n * reliance on experimental fields on a positive check here.\n *\n * @param capabilities — normalized capabilities from `parseCapabilitiesResponse`\n * @param featureId — dot-namespaced id (e.g. `brand.rights_lifecycle`)\n *\n * @example\n * ```ts\n * if (supportsExperimentalFeature(caps, 'brand.rights_lifecycle')) {\n * // safe to call acquire_rights / release_rights and read their responses\n * }\n * ```\n */\nexport function supportsExperimentalFeature(capabilities: AdcpCapabilities, featureId: string): boolean {\n return capabilities.experimentalFeatures?.includes(featureId) ?? false;\n}\n\n/**\n * Feature name that can be checked via supports()/require().\n *\n * Supported namespaces:\n * - Plain names resolve to media_buy.features (e.g., 'audience_targeting')\n * - 'media_buy', 'signals', etc. check supported_protocols\n * - 'ext:<name>' checks extensions_supported (e.g., 'ext:scope3')\n * - 'targeting.<name>' checks media_buy.execution.targeting (e.g., 'targeting.geo_countries')\n */\nexport type FeatureName = string;\n\n/**\n * Map of task names to features they require.\n *\n * When validateFeatures is enabled (default), SingleAgentClient checks\n * these features against seller capabilities before sending a request.\n * Tasks not listed here have no feature requirements.\n */\nexport const TASK_FEATURE_MAP: Record<string, FeatureName[]> = {\n // Core media buy tasks require the media_buy protocol\n get_products: ['media_buy'],\n // list_creative_formats intentionally omitted — serves both media-buy and creative domains\n create_media_buy: ['media_buy'],\n update_media_buy: ['media_buy'],\n get_media_buys: ['media_buy'],\n get_media_buy_delivery: ['media_buy'],\n provide_performance_feedback: ['media_buy'],\n\n // sync_creatives intentionally omitted — serves both media-buy and creative domains\n // list_creatives intentionally omitted — serves both media-buy and creative domains\n\n // Audience management\n sync_audiences: ['media_buy', 'audience_targeting'],\n sync_catalogs: ['media_buy'],\n\n // Event tracking / conversion\n sync_event_sources: ['media_buy', 'conversion_tracking'],\n log_event: ['media_buy', 'conversion_tracking'],\n\n // Signals protocol\n get_signals: ['signals'],\n activate_signal: ['signals'],\n\n // Creative protocol\n build_creative: ['creative'],\n list_transformers: ['creative'],\n preview_creative: ['creative'],\n\n // Governance protocol\n create_property_list: ['governance'],\n update_property_list: ['governance'],\n get_property_list: ['governance'],\n list_property_lists: ['governance'],\n delete_property_list: ['governance'],\n list_content_standards: ['governance', 'content_standards'],\n get_content_standards: ['governance', 'content_standards'],\n create_content_standards: ['governance', 'content_standards'],\n update_content_standards: ['governance', 'content_standards'],\n calibrate_content: ['governance', 'content_standards'],\n validate_content_delivery: ['governance', 'content_standards'],\n get_media_buy_artifacts: ['governance'],\n\n // Campaign governance\n sync_plans: ['governance'],\n check_governance: ['governance'],\n report_plan_outcome: ['governance'],\n get_plan_audit_logs: ['governance'],\n\n // Creative governance\n get_creative_features: ['governance'],\n\n // Sponsored intelligence protocol\n si_get_offering: ['sponsored_intelligence'],\n si_initiate_session: ['sponsored_intelligence'],\n si_send_message: ['sponsored_intelligence'],\n si_terminate_session: ['sponsored_intelligence'],\n\n // Trusted match protocol\n context_match: ['trusted_match'],\n identity_match: ['trusted_match'],\n\n // Compliance protocol\n comply_test_controller: ['compliance_testing'],\n\n // Brand rights protocol\n get_brand_identity: ['brand'],\n search_brands: ['brand'],\n get_rights: ['brand'],\n acquire_rights: ['brand'],\n update_rights: ['brand'],\n};\n\n/**\n * Map of media_buy.features field names to their camelCase keys in MediaBuyFeatures.\n */\nconst FEATURE_KEY_MAP: Record<string, keyof MediaBuyFeatures> = {\n inline_creative_management: 'inlineCreativeManagement',\n property_list_filtering: 'propertyListFiltering',\n content_standards: 'contentStandards',\n conversion_tracking: 'conversionTracking',\n audience_targeting: 'audienceTargeting',\n audience_management: 'audienceTargeting', // legacy alias\n};\n\n/**\n * Resolve whether a single feature is supported by the given capabilities.\n *\n * Absent = unsupported (returns false).\n */\nexport function resolveFeature(capabilities: AdcpCapabilities, feature: FeatureName): boolean {\n // Protocol-level check (e.g., 'media_buy', 'signals')\n if (capabilities.protocols.includes(feature as AdcpProtocol)) {\n return true;\n }\n\n // Extension check (e.g., 'ext:scope3')\n if (feature.startsWith('ext:')) {\n const extName = feature.slice(4);\n return capabilities.extensions.includes(extName);\n }\n\n // Experimental-surface check (e.g., 'experimental:brand.rights_lifecycle')\n if (feature.startsWith('experimental:')) {\n const featureId = feature.slice('experimental:'.length);\n return supportsExperimentalFeature(capabilities, featureId);\n }\n\n // Targeting check (e.g., 'targeting.geo_countries')\n if (feature.startsWith('targeting.')) {\n const targetingKey = feature.slice(10);\n const targeting = getRawNested(capabilities._raw, 'media_buy', 'execution', 'targeting');\n if (!targeting || typeof targeting !== 'object') return false;\n return !!(targeting as Record<string, unknown>)[targetingKey];\n }\n\n // Media buy features (e.g., 'audience_targeting', 'conversion_tracking')\n const featureKey = FEATURE_KEY_MAP[feature];\n if (featureKey) {\n if (featureKey === 'contentStandards') {\n return supportsContentStandards(capabilities);\n }\n return capabilities.features[featureKey] ?? false;\n }\n\n // Check raw media_buy.features for features not in the normalized map\n const rawFeatures = getRawNested(capabilities._raw, 'media_buy', 'features');\n if (rawFeatures && typeof rawFeatures === 'object' && feature in rawFeatures) {\n return !!(rawFeatures as Record<string, unknown>)[feature];\n }\n\n // Unknown feature — absent means unsupported\n return false;\n}\n\n/**\n * List all declared feature names from capabilities (for error messages).\n */\nexport function listDeclaredFeatures(capabilities: AdcpCapabilities): string[] {\n const features: string[] = [];\n\n // Protocols\n for (const p of capabilities.protocols) {\n features.push(p);\n }\n\n // Media buy features\n for (const [snakeKey, camelKey] of Object.entries(FEATURE_KEY_MAP)) {\n const declared =\n camelKey === 'contentStandards'\n ? supportsContentStandards(capabilities)\n : (capabilities.features[camelKey] ?? false);\n if (declared) {\n features.push(snakeKey);\n }\n }\n\n // Public specialism declarations\n for (const specialism of capabilities.specialisms ?? []) {\n features.push(`specialism:${specialism}`);\n }\n\n // Extensions\n for (const ext of capabilities.extensions) {\n features.push(`ext:${ext}`);\n }\n\n // Experimental surfaces\n for (const id of capabilities.experimentalFeatures ?? []) {\n features.push(`experimental:${id}`);\n }\n\n // Targeting (from raw response)\n const targeting = getRawNested(capabilities._raw, 'media_buy', 'execution', 'targeting');\n if (targeting && typeof targeting === 'object') {\n for (const [key, value] of Object.entries(targeting)) {\n if (value === true || (typeof value === 'object' && value !== null)) {\n features.push(`targeting.${key}`);\n }\n }\n }\n\n return [...new Set(features)];\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/utils/capabilities.ts"],"sourcesContent":["/**\n * AdCP Capabilities utilities\n *\n * Provides types and helpers for working with agent capabilities,\n * including synthetic capabilities for v2 servers that don't support\n * the get_adcp_capabilities tool.\n */\n\n/**\n * Detected AdCP major version\n */\nexport type AdcpMajorVersion = 2 | 3;\n\n/**\n * Supported AdCP protocols/domains\n */\nexport type AdcpProtocol =\n | 'media_buy'\n | 'signals'\n | 'governance'\n | 'creative'\n | 'sponsored_intelligence'\n | 'trusted_match'\n | 'compliance_testing'\n | 'brand'\n | 'measurement';\n\n/**\n * Media buy features available on the agent\n */\nexport interface MediaBuyFeatures {\n /**\n * Seller accepts canonical `format_kind` creative assets on write\n * surfaces. AdCP 3.1 without this declaration remains unknown; the release\n * number alone does not prove runtime support.\n */\n canonicalCreatives?: boolean;\n /**\n * Agent accepts package-scoped inline creative uploads in\n * create_media_buy/update_media_buy via `packages[].creatives`.\n *\n * This is distinct from creative-library support. Use\n * `supportsSyncCreatives(caps)` when deciding whether to call the\n * library-scoped `sync_creatives` tool.\n */\n inlineCreativeManagement?: boolean;\n /** Agent supports property_list filtering in get_products */\n propertyListFiltering?: boolean;\n /** Agent supports content standards validation */\n contentStandards?: boolean;\n /** Agent supports conversion event tracking (sync_event_sources, log_event) */\n conversionTracking?: boolean;\n /** Agent supports first-party CRM audience management (sync_audiences) */\n audienceTargeting?: boolean;\n}\n\n/**\n * Account management capabilities declared by the seller\n */\nexport interface AccountCapabilities {\n /**\n * Whether the seller requires operator-level credentials.\n * When false (default), the agent authenticates once and declares brands/operators via sync_accounts.\n * When true, each operator must authenticate independently.\n */\n requireOperatorAuth: boolean;\n\n /**\n * OAuth authorization endpoint for obtaining operator-level credentials.\n * Present when the seller supports OAuth for operator authentication.\n * May be absent even when requireOperatorAuth is true — in that case,\n * operators obtain credentials out-of-band (e.g., seller portal, API key).\n */\n authorizationEndpoint?: string;\n\n /**\n * Billing models this seller supports (e.g., 'operator', 'agent').\n */\n supportedBilling: ('operator' | 'agent' | 'advertiser')[];\n\n /**\n * Default billing model applied when omitted from sync_accounts.\n */\n defaultBilling?: 'operator' | 'agent' | 'advertiser';\n\n /**\n * Whether an active account is required before calling get_products.\n */\n requiredForProducts: boolean;\n\n /**\n * Whether the seller supports sandbox accounts for testing.\n * For implicit accounts (require_operator_auth: false), declare sandbox via sync_accounts\n * with sandbox: true and reference by natural key. For explicit accounts\n * (require_operator_auth: true), discover pre-existing test accounts via list_accounts.\n */\n sandbox: boolean;\n}\n\n/**\n * Creative protocol capabilities declared by the agent.\n */\nexport interface CreativeCapabilities {\n /** Agent can validate compliance requirements while building creatives */\n supportsCompliance: boolean;\n /** Agent exposes a creative library addressable via creative_id */\n hasCreativeLibrary: boolean;\n /** Agent can generate creatives from a natural-language brief */\n supportsGeneration: boolean;\n /** Agent can adapt an existing creative to a new format */\n supportsTransformation: boolean;\n}\n\n/**\n * Idempotency capabilities declared by the seller.\n *\n * Clients MUST NOT fall back to an assumed TTL when the seller omits this —\n * `getIdempotencyReplayTtlSeconds()` throws when the declaration is missing\n * on a v3 server rather than silently defaulting to 24h. A seller without the\n * declaration is non-compliant and unsafe for retry-sensitive operations.\n */\nexport interface IdempotencyCapabilities {\n /**\n * Seconds the seller retains cached `(principal, idempotency_key, payload)`\n * tuples. BYOK callers compare their persisted key's age against this to\n * decide whether a fresh key + natural-key lookup is safer than reusing.\n */\n replayTtlSeconds: number;\n}\n\n/**\n * Normalized capabilities response that works for both v2 and v3 servers\n */\nexport interface AdcpCapabilities {\n /** Detected version ('v2' or 'v3') */\n version: 'v2' | 'v3';\n\n /**\n * Array of supported major versions (e.g., [2] or [2, 3]).\n * @deprecated Use {@link supportedVersions} for release-precision negotiation.\n * Removed in AdCP 4.0 per spec PR `adcontextprotocol/adcp#3493`. Continues\n * to be emitted alongside the new field through 3.x.\n */\n majorVersions: AdcpMajorVersion[];\n\n /**\n * Array of supported AdCP releases at release precision (`'3.0'`, `'3.1'`,\n * `'3.1.0-beta.1'`). Stable releases use `MAJOR.MINOR`; pre-releases use\n * the full pre-release tag. Set when the seller is on AdCP 3.1+ per spec\n * PR `adcontextprotocol/adcp#3493`. `undefined` on legacy 3.0-only sellers.\n */\n supportedVersions?: string[];\n\n /**\n * Full semver build of the seller's released AdCP version (e.g. `'3.1.2'`,\n * `'3.1.0-beta.1+sha.abc'`). Advisory — patch differences within the same\n * release-precision are non-breaking by spec convention. `undefined` on\n * legacy 3.0-only sellers.\n */\n buildVersion?: string;\n\n /** Supported protocols */\n protocols: AdcpProtocol[];\n\n /** Public specialism ids declared by this agent */\n specialisms?: string[];\n\n /** Media buy specific features */\n features: MediaBuyFeatures;\n\n /** Account management capabilities */\n account?: AccountCapabilities;\n\n /** Creative protocol capabilities */\n creative?: CreativeCapabilities;\n\n /** Idempotency replay capabilities (v3 sellers declaring `adcp.idempotency`) */\n idempotency?: IdempotencyCapabilities;\n\n /** Supported extension namespaces (e.g., 'scope3', 'garm') */\n extensions: string[];\n\n /**\n * Experimental AdCP surfaces this agent implements. Dot-namespaced feature\n * ids (e.g. `brand.rights_lifecycle`, `governance.campaign`, `trusted_match.core`)\n * sellers declare when they opt into surfaces whose schemas carry\n * `x-status: experimental`. Consumers should gate any reliance on\n * experimental fields on presence of the matching id here.\n *\n * See https://adcontextprotocol.org/docs/reference/experimental-status\n */\n experimentalFeatures?: string[];\n\n /** Publisher domains covered by this agent */\n publisherDomains?: string[];\n\n /** Supported advertising channels */\n channels?: string[];\n\n /** Last updated timestamp (if provided by server) */\n lastUpdated?: string;\n\n /** Whether this was synthesized from tool list (v2) or from get_adcp_capabilities (v3) */\n _synthetic: boolean;\n\n /** Raw response from get_adcp_capabilities (only for v3) */\n _raw?: Record<string, unknown>;\n}\n\n/**\n * Safely traverse nested keys in a Record<string, unknown>.\n */\nfunction getRawNested(obj: Record<string, unknown> | undefined, ...keys: string[]): unknown {\n let current: unknown = obj;\n for (const key of keys) {\n if (current == null || typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\n/**\n * Tool info for capability detection\n */\nexport interface ToolInfo {\n name: string;\n description?: string;\n}\n\n/**\n * Known AdCP tool names for protocol detection.\n * These map to task names in the AdCP schema index (kebab-case -> snake_case).\n *\n * Note: Some tools appear in multiple arrays (e.g., list_creative_formats is in\n * both MEDIA_BUY_TOOLS and CREATIVE_TOOLS). This is intentional — these tools\n * serve multiple domains, and their presence should activate all relevant\n * protocols when `detectProtocols()` runs.\n *\n * **Why these aren't manifest-derived (#1192).** The AdCP manifest\n * (`schemas/cache/{version}/manifest.json`) carries a single primary `protocol`\n * per tool — `list_creative_formats` is `media-buy` there, never `creative`.\n * That's an authoring convenience (where does the tool's spec page live), not\n * a capability-declaration semantic. The cross-listing here captures\n * operator reality: a CMP that exposes only `build_creative` /\n * `list_creative_formats` / `sync_creatives` IS a creative agent, and a buyer\n * discovering it via `tools/list` should see the `creative` protocol family.\n * Migrating to manifest-primary would silently flip `detectProtocols()`\n * results for cross-listed tools and break CMP↔DSP discovery flows. The\n * drift guard at `test/lib/capabilities-tools-drift.test.js` keeps the arrays\n * locked to recognized manifest tools (catches typos and removed-upstream\n * tools) without forcing the arrays to match the manifest's single-valued\n * view. See PR #1298 for the design rationale.\n */\nexport const MEDIA_BUY_TOOLS = [\n 'get_products',\n 'list_creative_formats', // Also in CREATIVE_TOOLS - serves both domains\n 'create_media_buy',\n 'update_media_buy',\n 'sync_creatives',\n 'list_creatives', // Also in CREATIVE_TOOLS - serves both domains\n 'get_media_buy_delivery',\n 'provide_performance_feedback',\n 'sync_audiences',\n 'sync_event_sources',\n 'sync_catalogs',\n 'log_event',\n] as const;\n\nexport const SIGNALS_TOOLS = ['get_signals', 'activate_signal'] as const;\n\nexport const GOVERNANCE_TOOLS = [\n // Property list management\n 'create_property_list',\n 'update_property_list',\n 'get_property_list',\n 'list_property_lists',\n 'delete_property_list',\n // Collection list management (program-level brand safety)\n 'create_collection_list',\n 'update_collection_list',\n 'get_collection_list',\n 'list_collection_lists',\n 'delete_collection_list',\n // Content standards\n 'list_content_standards',\n 'get_content_standards',\n 'create_content_standards',\n 'update_content_standards',\n 'calibrate_content',\n 'validate_content_delivery',\n 'get_media_buy_artifacts',\n // Campaign governance\n 'sync_plans',\n 'check_governance',\n 'report_plan_outcome',\n 'get_plan_audit_logs',\n // Creative governance\n 'get_creative_features',\n] as const;\n\nexport const CREATIVE_TOOLS = [\n 'build_creative',\n 'list_creative_formats',\n 'list_transformers',\n 'preview_creative',\n 'list_creatives',\n 'sync_creatives', // Also in MEDIA_BUY_TOOLS - serves both domains\n] as const;\n\nexport const SPONSORED_INTELLIGENCE_TOOLS = [\n 'si_get_offering',\n 'si_initiate_session',\n 'si_send_message',\n 'si_terminate_session',\n] as const;\n\nexport const TRUSTED_MATCH_TOOLS = ['context_match', 'identity_match'] as const;\n\nexport const COMPLIANCE_TOOLS = ['comply_test_controller'] as const;\n\n// `creative_approval` is intentionally absent — it's webhook-only (the buyer\n// POSTs to the `approval_webhook` URL returned by `acquire_rights`), not an\n// MCP/A2A tool the seller exposes. Adopters wire it via their HTTP server\n// using `BrandRightsPlatform.reviewCreativeApproval`.\nexport const BRAND_RIGHTS_TOOLS = [\n 'get_brand_identity',\n 'search_brands',\n 'get_rights',\n 'acquire_rights',\n 'update_rights',\n] as const;\n\nexport const EVENT_TRACKING_TOOLS = ['sync_event_sources', 'log_event'] as const;\n\nexport const ACCOUNT_TOOLS = ['list_accounts', 'sync_accounts'] as const;\n\nexport const PROTOCOL_TOOLS = ['get_adcp_capabilities', 'get_task_status', 'list_tasks'] as const;\n\n/**\n * Build synthetic capabilities from a list of available tools.\n * Used for v2 servers that don't support get_adcp_capabilities.\n */\n/**\n * Tool-group → protocol mapping for detection from tools/list.\n */\nconst TOOL_PROTOCOL_MAP: [readonly string[], AdcpProtocol][] = [\n [MEDIA_BUY_TOOLS, 'media_buy'],\n [SIGNALS_TOOLS, 'signals'],\n [GOVERNANCE_TOOLS, 'governance'],\n [CREATIVE_TOOLS, 'creative'],\n [SPONSORED_INTELLIGENCE_TOOLS, 'sponsored_intelligence'],\n [TRUSTED_MATCH_TOOLS, 'trusted_match'],\n [COMPLIANCE_TOOLS, 'compliance_testing'],\n [BRAND_RIGHTS_TOOLS, 'brand'],\n];\n\n/**\n * Detect protocols from tool names.\n */\nfunction detectProtocolsFromTools(toolNames: Set<string>): AdcpProtocol[] {\n const protocols: AdcpProtocol[] = [];\n for (const [tools, protocol] of TOOL_PROTOCOL_MAP) {\n if (tools.some(t => toolNames.has(t))) {\n protocols.push(protocol);\n }\n }\n return protocols;\n}\n\n/**\n * Augment declared capabilities with compliance_testing if the tool is present\n * but no `compliance_testing` capability block / protocol entry was advertised.\n *\n * Per AdCP 3.0, agents declare comply_test_controller support via the\n * top-level `capabilities.compliance_testing` block. `parseCapabilitiesResponse`\n * already promotes that block into the internal `protocols` list, so if we\n * reach this function with the tool present but the protocol missing, the\n * agent forgot the declaration. We auto-bridge (the SDK's internal type can\n * treat the agent as compliance-capable) and warn the agent once so they can\n * ship the proper block.\n *\n * Other protocols (media_buy, signals, etc.) are NOT augmented because a stub\n * or partial tool registration could produce false positives.\n */\nexport function augmentCapabilitiesFromTools(capabilities: AdcpCapabilities, tools: ToolInfo[]): AdcpCapabilities {\n const toolNames = new Set(tools.map(t => t.name));\n const hasComplianceTool = COMPLIANCE_TOOLS.some(t => toolNames.has(t));\n if (!hasComplianceTool || capabilities.protocols.includes('compliance_testing')) {\n return capabilities;\n }\n console.error(\n `[AdCP] Agent exposes comply_test_controller but omits the \\`compliance_testing\\` capability block ` +\n `from get_adcp_capabilities. Per AdCP 3.0, declare \\`capabilities.compliance_testing.scenarios\\` ` +\n `— not \\`supported_protocols\\`. The SDK is treating the agent as compliance-capable for this request.`\n );\n return {\n ...capabilities,\n protocols: [...capabilities.protocols, 'compliance_testing'],\n };\n}\n\nexport function buildSyntheticCapabilities(tools: ToolInfo[]): AdcpCapabilities {\n const toolNames = new Set(tools.map(t => t.name));\n const protocols = detectProtocolsFromTools(toolNames);\n\n // Detect features from tool presence\n const features: MediaBuyFeatures = {\n // Tool lists do not declare package-scoped inline creative upload support.\n inlineCreativeManagement: false,\n // Property list filtering is v3 only\n propertyListFiltering: false,\n // Content standards is v3 only\n contentStandards: false,\n // Conversion tracking if event tracking tools are available\n conversionTracking: EVENT_TRACKING_TOOLS.some(t => toolNames.has(t)),\n // Audience targeting if sync_audiences is available\n audienceTargeting: toolNames.has('sync_audiences'),\n };\n\n return {\n version: 'v2',\n majorVersions: [2],\n protocols,\n features,\n extensions: [],\n _synthetic: true,\n };\n}\n\n/**\n * Build synthetic v3 capabilities when the agent advertises\n * `get_adcp_capabilities` (a v3-only tool) but the call itself failed —\n * either the executor threw, or the response was non-success with no\n * structurally v3-shaped data (the case `looksLikeV3Capabilities` would\n * have caught).\n *\n * The agent is verifiably v3 because the v3-only discovery tool is\n * present in `tools/list`. Falling back to v2 synthetic in this case\n * triggers v2.5-schema lookups that have nothing to do with the original\n * failure, cascading \"AdCP schema data for version v2.5 not found\"\n * across every subsequent step. Treating as v3 (synthetic) lets the\n * caller continue against the right adapter set; the underlying\n * `get_adcp_capabilities` failure still surfaces in logs at the\n * call site.\n *\n * Sets `_synthetic: true` so version-compat checks know detail-level\n * fields (idempotency TTL, supportedVersions) are unknown — callers\n * skip those checks rather than throw `VersionUnsupportedError` on a\n * verifiably-v3 agent.\n *\n * Refs: #1217 (carve-out from #1197/closed), #1189 / #1201 (the v3-shape\n * heuristic this complements).\n */\nexport function buildSyntheticV3Capabilities(tools: ToolInfo[]): AdcpCapabilities {\n const toolNames = new Set(tools.map(t => t.name));\n const protocols = detectProtocolsFromTools(toolNames);\n\n const features: MediaBuyFeatures = {\n // Tool lists do not declare package-scoped inline creative upload support.\n inlineCreativeManagement: false,\n propertyListFiltering: false,\n contentStandards: false,\n conversionTracking: EVENT_TRACKING_TOOLS.some(t => toolNames.has(t)),\n audienceTargeting: toolNames.has('sync_audiences'),\n };\n\n return {\n version: 'v3',\n majorVersions: [3],\n protocols,\n features,\n extensions: [],\n _synthetic: true,\n };\n}\n\n/**\n * Heuristic: does this `get_adcp_capabilities` response look v3-shaped?\n *\n * Used by callers (e.g. SingleAgentClient.getCapabilities) when the response\n * fails strict schema validation but is structurally non-empty. The question\n * the heuristic answers is \"is this a v3 agent with a wire-shape bug, or a\n * v2 agent that happens to advertise the tool?\". Falling back to v2 in the\n * former case masks the original bug behind cascading v2.5-schema-not-found\n * errors; treating it as v3 surfaces the wire-shape bug at its source.\n *\n * Affirmative v3 signals (any one is enough):\n * - `adcp` block (only v3 servers carry the `{ major_versions, idempotency, ... }` envelope)\n * - `supported_protocols` array (v3-only top-level field)\n * - any v3 protocol-level capability block (`media_buy`, `signals`, `creative`, `brand`,\n * `governance`, `sponsored_intelligence`, `compliance_testing`, `account`)\n *\n * v2 servers don't expose `get_adcp_capabilities` at all (the tool itself is\n * a v3-only addition), so reaching this function with a non-empty payload\n * already strongly implies v3 — but we belt-and-suspenders the structural\n * check to avoid mis-promoting genuinely empty / null responses.\n */\nexport function looksLikeV3Capabilities(data: unknown): boolean {\n if (!isPlainObject(data)) return false;\n if (isPlainObject(data.adcp)) return true;\n if (Array.isArray(data.supported_protocols)) return true;\n const v3Blocks = [\n 'account',\n 'media_buy',\n 'signals',\n 'creative',\n 'brand',\n 'governance',\n 'sponsored_intelligence',\n 'compliance_testing',\n ] as const;\n return v3Blocks.some(block => isPlainObject(data[block]));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction declaresSpecialism(specialisms: readonly string[] | undefined, specialism: string): boolean {\n return specialisms?.includes(specialism) === true;\n}\n\nfunction hasContentStandardsSupport(capabilities: Pick<AdcpCapabilities, 'features' | 'specialisms'>): boolean {\n return (\n capabilities.features.contentStandards === true || declaresSpecialism(capabilities.specialisms, 'content-standards')\n );\n}\n\n/**\n * Parse a get_adcp_capabilities response into normalized form\n */\nexport function parseCapabilitiesResponse(response: any): AdcpCapabilities {\n const majorVersions = (response.adcp?.major_versions ?? [2]) as AdcpMajorVersion[];\n const highestVersion = Math.max(...majorVersions) as AdcpMajorVersion;\n const specialisms = Array.isArray(response.specialisms)\n ? response.specialisms.filter((s: unknown): s is string => typeof s === 'string')\n : undefined;\n const declaresContentStandardsSpecialism = declaresSpecialism(specialisms, 'content-standards');\n\n // AdCP 3.1+ release-precision capability fields per spec PR\n // `adcontextprotocol/adcp#3493`. Both fields are optional during the 3.x\n // SHOULD-emit phase; legacy 3.0 sellers won't carry them. Filter\n // `supported_versions` to strings — a misbehaving seller emitting\n // `['3.0', 42, null]` shouldn't poison the typed array. Match the\n // filtering that `extractVersionUnsupportedDetails` already does so the\n // two seller-input surfaces have the same safety contract.\n const supportedVersions = Array.isArray(response.adcp?.supported_versions)\n ? (response.adcp.supported_versions as unknown[]).filter((v): v is string => typeof v === 'string')\n : undefined;\n const buildVersion = typeof response.adcp?.build_version === 'string' ? response.adcp.build_version : undefined;\n\n // Per AdCP 3.0, `compliance_testing` is declared as a top-level\n // capability block, not as a value in `supported_protocols`. Normalize\n // legacy callers (who grep for `protocols.includes('compliance_testing')`)\n // by promoting the block into the protocols list at parse time — the\n // internal `AdcpCapabilities.protocols` shape is the SDK's own normalization\n // and doesn't need to match the wire.\n const wireProtocols = (response.supported_protocols ?? []) as AdcpProtocol[];\n const protocols =\n response.compliance_testing && !wireProtocols.includes('compliance_testing' as AdcpProtocol)\n ? ([...wireProtocols, 'compliance_testing'] as AdcpProtocol[])\n : wireProtocols;\n\n const features: MediaBuyFeatures = {\n ...(typeof response.media_buy?.features?.canonical_creatives === 'boolean' && {\n canonicalCreatives: response.media_buy.features.canonical_creatives,\n }),\n inlineCreativeManagement: response.media_buy?.features?.inline_creative_management ?? false,\n propertyListFiltering: response.media_buy?.features?.property_list_filtering ?? false,\n contentStandards: response.media_buy?.features?.content_standards === true || declaresContentStandardsSpecialism,\n conversionTracking: response.media_buy?.features?.conversion_tracking ?? false,\n audienceTargeting: response.media_buy?.features?.audience_targeting ?? false,\n };\n\n let account: AccountCapabilities | undefined;\n if (response.account) {\n account = {\n requireOperatorAuth: response.account.require_operator_auth ?? false,\n authorizationEndpoint: response.account.authorization_endpoint,\n supportedBilling: response.account.supported_billing ?? [],\n defaultBilling: response.account.default_billing,\n requiredForProducts: response.account.required_for_products ?? false,\n sandbox: response.account.sandbox ?? false,\n };\n }\n\n let creative: CreativeCapabilities | undefined;\n if (response.creative) {\n creative = {\n supportsCompliance: response.creative.supports_compliance ?? false,\n hasCreativeLibrary: response.creative.has_creative_library ?? false,\n supportsGeneration: response.creative.supports_generation ?? false,\n supportsTransformation: response.creative.supports_transformation ?? false,\n };\n }\n\n // adcp.idempotency.replay_ttl_seconds is REQUIRED per spec when the seller\n // supports mutating tools. Absence is surfaced downstream as a fail-closed\n // error in getIdempotencyReplayTtlSeconds() — we deliberately do NOT default.\n let idempotency: IdempotencyCapabilities | undefined;\n const rawTtl = response.adcp?.idempotency?.replay_ttl_seconds;\n if (typeof rawTtl === 'number' && Number.isFinite(rawTtl) && rawTtl > 0) {\n idempotency = { replayTtlSeconds: rawTtl };\n }\n\n return {\n version: highestVersion >= 3 ? 'v3' : 'v2',\n majorVersions,\n supportedVersions,\n buildVersion,\n protocols,\n specialisms,\n features,\n account,\n creative,\n idempotency,\n extensions: response.extensions_supported ?? [],\n experimentalFeatures: Array.isArray(response.experimental_features)\n ? response.experimental_features.filter((f: unknown): f is string => typeof f === 'string')\n : undefined,\n publisherDomains: response.media_buy?.portfolio?.publisher_domains,\n channels: response.media_buy?.portfolio?.channels,\n lastUpdated: response.last_updated,\n _synthetic: false,\n _raw: response,\n };\n}\n\n/**\n * Check if capabilities indicate v3 support\n */\nexport function supportsV3(capabilities: AdcpCapabilities): boolean {\n return capabilities.majorVersions.includes(3);\n}\n\n/**\n * Check if a specific protocol is supported\n */\nexport function supportsProtocol(capabilities: AdcpCapabilities, protocol: AdcpProtocol): boolean {\n return capabilities.protocols.includes(protocol);\n}\n\n/**\n * Check if property list filtering is supported (v3 feature)\n */\nexport function supportsPropertyListFiltering(capabilities: AdcpCapabilities): boolean {\n return capabilities.features.propertyListFiltering ?? false;\n}\n\n/**\n * Check if content standards are supported (v3 feature)\n */\nexport function supportsContentStandards(capabilities: AdcpCapabilities): boolean {\n return hasContentStandardsSupport(capabilities);\n}\n\n/**\n * Check whether the seller advertises a creative library suitable for the\n * library-scoped `sync_creatives` workflow.\n *\n * This intentionally keys off `creative.has_creative_library`, not tool-list\n * presence. A seller can expose inline package creatives without a reusable\n * library, and `sync_creatives` is not safe to replace with inline\n * create/update media-buy calls unless the buyer supplies package context.\n */\nexport function supportsSyncCreatives(capabilities: AdcpCapabilities): boolean {\n return capabilities.creative?.hasCreativeLibrary === true;\n}\n\n/**\n * Check if the seller requires per-operator authentication\n */\nexport function requiresOperatorAuth(capabilities: AdcpCapabilities): boolean {\n return capabilities.account?.requireOperatorAuth ?? false;\n}\n\n/**\n * Check if an active account is required before calling get_products\n */\nexport function requiresAccountForProducts(capabilities: AdcpCapabilities): boolean {\n return capabilities.account?.requiredForProducts ?? false;\n}\n\n/**\n * Check if the seller supports sandbox accounts\n */\nexport function supportsSandbox(capabilities: AdcpCapabilities): boolean {\n return capabilities.account?.sandbox ?? false;\n}\n\n/**\n * Check if the agent has opted into a specific experimental AdCP surface.\n *\n * Experimental surfaces carry `x-status: experimental` in the spec and their\n * fields may change between minor releases. Consumers should gate any\n * reliance on experimental fields on a positive check here.\n *\n * @param capabilities — normalized capabilities from `parseCapabilitiesResponse`\n * @param featureId — dot-namespaced id (e.g. `brand.rights_lifecycle`)\n *\n * @example\n * ```ts\n * if (supportsExperimentalFeature(caps, 'brand.rights_lifecycle')) {\n * // safe to call acquire_rights / release_rights and read their responses\n * }\n * ```\n */\nexport function supportsExperimentalFeature(capabilities: AdcpCapabilities, featureId: string): boolean {\n return capabilities.experimentalFeatures?.includes(featureId) ?? false;\n}\n\n/**\n * Feature name that can be checked via supports()/require().\n *\n * Supported namespaces:\n * - Plain names resolve to media_buy.features (e.g., 'audience_targeting')\n * - 'media_buy', 'signals', etc. check supported_protocols\n * - 'ext:<name>' checks extensions_supported (e.g., 'ext:scope3')\n * - 'targeting.<name>' checks media_buy.execution.targeting (e.g., 'targeting.geo_countries')\n */\nexport type FeatureName = string;\n\n/**\n * Map of task names to features they require.\n *\n * When validateFeatures is enabled (default), SingleAgentClient checks\n * these features against seller capabilities before sending a request.\n * Tasks not listed here have no feature requirements.\n */\nexport const TASK_FEATURE_MAP: Record<string, FeatureName[]> = {\n // Core media buy tasks require the media_buy protocol\n get_products: ['media_buy'],\n // list_creative_formats intentionally omitted — serves both media-buy and creative domains\n create_media_buy: ['media_buy'],\n update_media_buy: ['media_buy'],\n get_media_buys: ['media_buy'],\n get_media_buy_delivery: ['media_buy'],\n provide_performance_feedback: ['media_buy'],\n\n // sync_creatives intentionally omitted — serves both media-buy and creative domains\n // list_creatives intentionally omitted — serves both media-buy and creative domains\n\n // Audience management\n sync_audiences: ['media_buy', 'audience_targeting'],\n sync_catalogs: ['media_buy'],\n\n // Event tracking / conversion\n sync_event_sources: ['media_buy', 'conversion_tracking'],\n log_event: ['media_buy', 'conversion_tracking'],\n\n // Signals protocol\n get_signals: ['signals'],\n activate_signal: ['signals'],\n\n // Creative protocol\n build_creative: ['creative'],\n list_transformers: ['creative'],\n preview_creative: ['creative'],\n\n // Governance protocol\n create_property_list: ['governance'],\n update_property_list: ['governance'],\n get_property_list: ['governance'],\n list_property_lists: ['governance'],\n delete_property_list: ['governance'],\n list_content_standards: ['governance', 'content_standards'],\n get_content_standards: ['governance', 'content_standards'],\n create_content_standards: ['governance', 'content_standards'],\n update_content_standards: ['governance', 'content_standards'],\n calibrate_content: ['governance', 'content_standards'],\n validate_content_delivery: ['governance', 'content_standards'],\n get_media_buy_artifacts: ['governance'],\n\n // Campaign governance\n sync_plans: ['governance'],\n check_governance: ['governance'],\n report_plan_outcome: ['governance'],\n get_plan_audit_logs: ['governance'],\n\n // Creative governance\n get_creative_features: ['governance'],\n\n // Sponsored intelligence protocol\n si_get_offering: ['sponsored_intelligence'],\n si_initiate_session: ['sponsored_intelligence'],\n si_send_message: ['sponsored_intelligence'],\n si_terminate_session: ['sponsored_intelligence'],\n\n // Trusted match protocol\n context_match: ['trusted_match'],\n identity_match: ['trusted_match'],\n\n // Compliance protocol\n comply_test_controller: ['compliance_testing'],\n\n // Brand rights protocol\n get_brand_identity: ['brand'],\n search_brands: ['brand'],\n get_rights: ['brand'],\n acquire_rights: ['brand'],\n update_rights: ['brand'],\n};\n\n/**\n * Map of media_buy.features field names to their camelCase keys in MediaBuyFeatures.\n */\nconst FEATURE_KEY_MAP: Record<string, keyof MediaBuyFeatures> = {\n canonical_creatives: 'canonicalCreatives',\n inline_creative_management: 'inlineCreativeManagement',\n property_list_filtering: 'propertyListFiltering',\n content_standards: 'contentStandards',\n conversion_tracking: 'conversionTracking',\n audience_targeting: 'audienceTargeting',\n audience_management: 'audienceTargeting', // legacy alias\n};\n\n/**\n * Resolve whether a single feature is supported by the given capabilities.\n *\n * Absent = unsupported (returns false).\n */\nexport function resolveFeature(capabilities: AdcpCapabilities, feature: FeatureName): boolean {\n // Protocol-level check (e.g., 'media_buy', 'signals')\n if (capabilities.protocols.includes(feature as AdcpProtocol)) {\n return true;\n }\n\n // Extension check (e.g., 'ext:scope3')\n if (feature.startsWith('ext:')) {\n const extName = feature.slice(4);\n return capabilities.extensions.includes(extName);\n }\n\n // Experimental-surface check (e.g., 'experimental:brand.rights_lifecycle')\n if (feature.startsWith('experimental:')) {\n const featureId = feature.slice('experimental:'.length);\n return supportsExperimentalFeature(capabilities, featureId);\n }\n\n // Targeting check (e.g., 'targeting.geo_countries')\n if (feature.startsWith('targeting.')) {\n const targetingKey = feature.slice(10);\n const targeting = getRawNested(capabilities._raw, 'media_buy', 'execution', 'targeting');\n if (!targeting || typeof targeting !== 'object') return false;\n return !!(targeting as Record<string, unknown>)[targetingKey];\n }\n\n // Media buy features (e.g., 'audience_targeting', 'conversion_tracking')\n const featureKey = FEATURE_KEY_MAP[feature];\n if (featureKey) {\n if (featureKey === 'contentStandards') {\n return supportsContentStandards(capabilities);\n }\n return capabilities.features[featureKey] ?? false;\n }\n\n // Check raw media_buy.features for features not in the normalized map\n const rawFeatures = getRawNested(capabilities._raw, 'media_buy', 'features');\n if (rawFeatures && typeof rawFeatures === 'object' && feature in rawFeatures) {\n return !!(rawFeatures as Record<string, unknown>)[feature];\n }\n\n // Unknown feature — absent means unsupported\n return false;\n}\n\n/**\n * List all declared feature names from capabilities (for error messages).\n */\nexport function listDeclaredFeatures(capabilities: AdcpCapabilities): string[] {\n const features: string[] = [];\n\n // Protocols\n for (const p of capabilities.protocols) {\n features.push(p);\n }\n\n // Media buy features\n for (const [snakeKey, camelKey] of Object.entries(FEATURE_KEY_MAP)) {\n const declared =\n camelKey === 'contentStandards'\n ? supportsContentStandards(capabilities)\n : (capabilities.features[camelKey] ?? false);\n if (declared) {\n features.push(snakeKey);\n }\n }\n\n // Public specialism declarations\n for (const specialism of capabilities.specialisms ?? []) {\n features.push(`specialism:${specialism}`);\n }\n\n // Extensions\n for (const ext of capabilities.extensions) {\n features.push(`ext:${ext}`);\n }\n\n // Experimental surfaces\n for (const id of capabilities.experimentalFeatures ?? []) {\n features.push(`experimental:${id}`);\n }\n\n // Targeting (from raw response)\n const targeting = getRawNested(capabilities._raw, 'media_buy', 'execution', 'targeting');\n if (targeting && typeof targeting === 'object') {\n for (const [key, value] of Object.entries(targeting)) {\n if (value === true || (typeof value === 'object' && value !== null)) {\n features.push(`targeting.${key}`);\n }\n }\n }\n\n return [...new Set(features)];\n}\n"],"mappings":"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","names":[]}
@@ -191,6 +191,9 @@ function parseCapabilitiesResponse(response) {
191
191
  const wireProtocols = response.supported_protocols ?? [];
192
192
  const protocols = response.compliance_testing && !wireProtocols.includes("compliance_testing") ? [...wireProtocols, "compliance_testing"] : wireProtocols;
193
193
  const features = {
194
+ ...typeof response.media_buy?.features?.canonical_creatives === "boolean" && {
195
+ canonicalCreatives: response.media_buy.features.canonical_creatives
196
+ },
194
197
  inlineCreativeManagement: response.media_buy?.features?.inline_creative_management ?? false,
195
198
  propertyListFiltering: response.media_buy?.features?.property_list_filtering ?? false,
196
199
  contentStandards: response.media_buy?.features?.content_standards === true || declaresContentStandardsSpecialism,
@@ -331,6 +334,7 @@ const TASK_FEATURE_MAP = {
331
334
  update_rights: ["brand"]
332
335
  };
333
336
  const FEATURE_KEY_MAP = {
337
+ canonical_creatives: "canonicalCreatives",
334
338
  inline_creative_management: "inlineCreativeManagement",
335
339
  property_list_filtering: "propertyListFiltering",
336
340
  content_standards: "contentStandards",