@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,"sources":["../../../src/lib/conformance/seeder.ts"],"sourcesContent":["import { AgentClient } from '../core/AgentClient';\nimport type { AgentConfig } from '../types';\nimport { generateIdempotencyKey } from '../utils/idempotency';\nimport type { ConformanceFixtures } from './types';\n\nexport interface SeedOptions {\n /** Protocol. Default: 'mcp'. */\n protocol?: 'mcp' | 'a2a';\n /** Bearer token forwarded to the agent. */\n authToken?: string;\n /** Full AgentConfig override. `id`/`agent_uri`/`protocol` are filled in from the other options. */\n agentConfig?: Partial<AgentConfig>;\n /**\n * Subset of seeders to run. Default: all.\n * `'create_media_buy'` implicitly runs `get_products` first to discover\n * a real product_id. `'sync_creatives'` implicitly runs\n * `list_creative_formats` first to pick a usable format.\n */\n seeders?: readonly SeederName[];\n /**\n * Brand reference for mutating seeders that require one. Default\n * `{ domain: 'conformance.example' }`. Sellers that enforce brand\n * allowlists should override this with a domain they're configured to\n * accept — otherwise `create_media_buy` seeding warns and falls through.\n */\n brand?: { domain: string; brand_id?: string };\n}\n\nexport type SeederName = 'create_property_list' | 'create_content_standards' | 'create_media_buy' | 'sync_creatives';\n\nexport interface SeedResult {\n fixtures: ConformanceFixtures;\n warnings: SeedWarning[];\n}\n\nexport interface SeedWarning {\n seeder: SeederName;\n reason: string;\n}\n\n// Cosmetic tag for human-readable names/labels only. NOT used for\n// idempotency_key — that's minted by `generateIdempotencyKey()`. Two\n// seeders racing with the same random suffix would produce two distinct\n// entities with identical names, which is fine for a seeder.\nconst UNIQUE_TAG = (): string => 'cf_seed_' + Math.random().toString(36).slice(2, 10);\n\n/**\n * Seeds an agent with known entities so Tier-3 fuzzing has real IDs to\n * feed back into referential + update tools. Each seeder is best-effort:\n * failures degrade to a recorded warning and an empty pool, never a\n * thrown exception, so a partial seed still lets the fuzzer run against\n * every other tool.\n *\n * Inputs are minimal hand-crafted payloads rather than fast-check\n * outputs — seeding is about producing a known-good entity, not\n * exploring the schema space. That's the job of runConformance.\n *\n * WARNING: This mutates the target. Point at a sandbox / test tenant.\n */\nexport async function seedFixtures(agentUrl: string, options: SeedOptions = {}): Promise<SeedResult> {\n const agent = buildAgent(agentUrl, options);\n const seeders =\n options.seeders ??\n (['create_property_list', 'create_content_standards', 'create_media_buy', 'sync_creatives'] as const);\n\n const ctx: SeederContext = {\n agent,\n brand: options.brand ?? { domain: 'conformance.example' },\n };\n\n const fixtures: ConformanceFixtures = {};\n const warnings: SeedWarning[] = [];\n\n for (const name of seeders) {\n try {\n const runner = SEEDERS[name];\n if (!runner) {\n warnings.push({ seeder: name, reason: `no seeder registered for ${name}` });\n continue;\n }\n const out = await runner(ctx);\n mergePool(fixtures, out.ids);\n warnings.push(...out.warnings);\n } catch (err) {\n warnings.push({ seeder: name, reason: `seeder threw: ${(err as Error)?.message ?? String(err)}` });\n }\n }\n\n return { fixtures, warnings };\n}\n\ninterface SeederContext {\n agent: AgentClient;\n brand: { domain: string; brand_id?: string };\n}\n\nfunction buildAgent(agentUrl: string, options: SeedOptions): AgentClient {\n const config: AgentConfig = {\n id: options.agentConfig?.id ?? 'conformance-seeder',\n name: options.agentConfig?.name ?? 'AdCP Conformance Seeder',\n agent_uri: agentUrl,\n protocol: options.protocol ?? options.agentConfig?.protocol ?? 'mcp',\n auth_token: options.authToken ?? options.agentConfig?.auth_token,\n ...options.agentConfig,\n };\n // The seeder tries every seed-tool regardless of declared capabilities.\n // Two SDK preflights are explicitly disabled:\n // - `validateFeatures: false` — don't refuse tools that aren't\n // declared in `get_adcp_capabilities`. The seeder just tries; the\n // agent's rejection becomes a recorded warning.\n // - `validation.responses: 'warn'` — don't fail a seed just because\n // the agent's response drifts from the response schema. We want\n // the ID if it's present; the fuzzer itself will do the strict\n // validation on downstream tools that actually care.\n return new AgentClient(config, {\n validateFeatures: false,\n validation: { responses: 'warn' },\n });\n}\n\nfunction mergePool(dest: ConformanceFixtures, src: Partial<Record<keyof ConformanceFixtures, string[]>>): void {\n for (const [key, values] of Object.entries(src)) {\n if (!values || values.length === 0) continue;\n const k = key as keyof ConformanceFixtures;\n const existing = dest[k] ?? [];\n dest[k] = [...existing, ...values];\n }\n}\n\ninterface SeederOutput {\n ids: Partial<Record<keyof ConformanceFixtures, string[]>>;\n warnings: SeedWarning[];\n}\ntype Seeder = (ctx: SeederContext) => Promise<SeederOutput>;\n\nconst SEEDERS: Record<SeederName, Seeder> = {\n create_property_list: seedPropertyList,\n create_content_standards: seedContentStandards,\n create_media_buy: seedMediaBuy,\n sync_creatives: seedSyncCreatives,\n};\n\nasync function seedPropertyList({ agent }: SeederContext): Promise<SeederOutput> {\n const result = await agent.executeTask('create_property_list', {\n idempotency_key: generateIdempotencyKey(),\n name: `Conformance Seeder List ${UNIQUE_TAG()}`,\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: summarizeResult(result) }],\n };\n }\n const listId = (result.data as { list?: { list_id?: unknown } })?.list?.list_id;\n if (typeof listId !== 'string' || listId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: 'response missing list.list_id' }],\n };\n }\n return { ids: { list_ids: [listId] }, warnings: [] };\n}\n\nasync function seedContentStandards({ agent }: SeederContext): Promise<SeederOutput> {\n // Minimal payload that still satisfies the \"at least one of policy,\n // policies, or registry_policy_ids is required\" invariant some sellers\n // enforce beyond the raw schema. A single inline policy is the most\n // portable shape — registry_policy_ids require a pre-existing registry\n // entry on the seller, which we can't assume.\n const result = await agent.executeTask('create_content_standards', {\n idempotency_key: generateIdempotencyKey(),\n scope: { languages_any: ['en'] },\n policies: [\n {\n policy_id: `cf_policy_${UNIQUE_TAG()}`,\n enforcement: 'may',\n policy: 'Conformance seeder placeholder policy — advisory only.',\n },\n ],\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: summarizeResult(result) }],\n };\n }\n const standardsId = (result.data as { standards_id?: unknown })?.standards_id;\n if (typeof standardsId !== 'string' || standardsId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: 'response missing standards_id' }],\n };\n }\n return { ids: { standards_ids: [standardsId] }, warnings: [] };\n}\n\n/**\n * Creates a media buy by first discovering a product via `get_products`,\n * then calling `create_media_buy` against that product. Captures the\n * returned `media_buy_id` and any `package_id`s from the response.\n */\nasync function seedMediaBuy({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const products = await agent.executeTask('get_products', {\n brief: 'Conformance fuzzer seed — any product acceptable',\n });\n if (!products.success || products.status !== 'completed' || !products.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products preflight: ' + summarizeResult(products) }],\n };\n }\n const productList = (products.data as { products?: unknown })?.products;\n if (!Array.isArray(productList) || productList.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products returned no products' }],\n };\n }\n const product = productList[0] as {\n product_id?: string;\n pricing_options?: Array<{ pricing_option_id?: string }>;\n };\n if (!product.product_id || !product.pricing_options?.[0]?.pricing_option_id) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'first product missing product_id or pricing_option_id' }],\n };\n }\n\n const tag = UNIQUE_TAG();\n const now = new Date();\n const start = new Date(now.getTime() + 24 * 60 * 60 * 1000); // +1 day\n const end = new Date(now.getTime() + 8 * 24 * 60 * 60 * 1000); // +8 days\n\n const brandRef: Record<string, string> = { domain: brand.domain };\n if (brand.brand_id) brandRef.brand_id = brand.brand_id;\n const result = await agent.executeTask('create_media_buy', {\n idempotency_key: generateIdempotencyKey(),\n account: { brand: brandRef, operator: brand.domain },\n brand: brandRef,\n start_time: start.toISOString(),\n end_time: end.toISOString(),\n total_budget: { amount: 100, currency: 'USD' },\n packages: [\n {\n buyer_ref: `cf_pkg_${tag}`,\n product_id: product.product_id,\n pricing_option_id: product.pricing_options[0].pricing_option_id,\n budget: 100,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [...warnings, { seeder: 'create_media_buy', reason: summarizeResult(result) }],\n };\n }\n\n const data = result.data as {\n media_buy_id?: unknown;\n packages?: Array<{ package_id?: unknown }>;\n };\n const ids: Partial<Record<keyof ConformanceFixtures, string[]>> = {};\n if (typeof data.media_buy_id === 'string' && data.media_buy_id.length > 0) {\n ids.media_buy_ids = [data.media_buy_id];\n } else {\n warnings.push({ seeder: 'create_media_buy', reason: 'response missing media_buy_id (may be submitted async)' });\n }\n const packageIds = (data.packages ?? [])\n .map(p => p?.package_id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0);\n if (packageIds.length > 0) ids.package_ids = packageIds;\n\n return { ids, warnings };\n}\n\nfunction summarizeResult(result: {\n success: boolean;\n status?: string;\n error?: string;\n adcpError?: { code?: string };\n}): string {\n if (result.success === false) {\n const code = result.adcpError?.code ? `${result.adcpError.code}: ` : '';\n return `agent rejected with ${code}${result.error ?? 'unknown error'}`;\n }\n return `unexpected status ${result.status ?? 'unknown'}`;\n}\n\n/**\n * Creates a single creative by first discovering formats via\n * `list_creative_formats`, picking the first format whose required\n * assets are all covered by our placeholder synthesis, then calling\n * `sync_creatives` with a minimal manifest. Captures returned\n * `creative_id`s into the pool.\n */\nasync function seedSyncCreatives({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const formatsResult = await agent.executeTask('list_creative_formats', {});\n if (!formatsResult.success || formatsResult.status !== 'completed' || !formatsResult.data) {\n return {\n ids: {},\n warnings: [\n { seeder: 'sync_creatives', reason: 'list_creative_formats preflight: ' + summarizeResult(formatsResult) },\n ],\n };\n }\n const formats = (formatsResult.data as { formats?: unknown }).formats;\n if (!Array.isArray(formats) || formats.length === 0) {\n return { ids: {}, warnings: [{ seeder: 'sync_creatives', reason: 'list_creative_formats returned no formats' }] };\n }\n\n const picked = pickSimpleFormat(formats as FormatDef[]);\n if (!picked) {\n return {\n ids: {},\n warnings: [{ seeder: 'sync_creatives', reason: 'no format with a synthesizable required-asset set' }],\n };\n }\n\n const manifest = synthesizeManifestAssets(picked);\n const creativeId = `cf_creative_${UNIQUE_TAG()}`;\n const tag = UNIQUE_TAG();\n\n const result = await agent.executeTask('sync_creatives', {\n idempotency_key: generateIdempotencyKey(),\n account: {\n brand: { domain: brand.domain, ...(brand.brand_id ? { brand_id: brand.brand_id } : {}) },\n operator: brand.domain,\n },\n creatives: [\n {\n creative_id: creativeId,\n name: `Conformance Seeder Creative ${tag}`,\n format_id: { agent_url: picked.format_id.agent_url, id: picked.format_id.id },\n assets: manifest,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return { ids: {}, warnings: [...warnings, { seeder: 'sync_creatives', reason: summarizeResult(result) }] };\n }\n\n const capturedIds = extractCreativeIds(result.data, creativeId);\n if (capturedIds.length === 0) {\n warnings.push({\n seeder: 'sync_creatives',\n reason: 'response did not surface a creative_id (may be pending review)',\n });\n return { ids: {}, warnings };\n }\n return { ids: { creative_ids: capturedIds }, warnings };\n}\n\n/**\n * Pick the first format whose required assets are all in the set of\n * types we know how to synthesize placeholder values for. Sorted by the\n * format's declared order — no clever heuristics.\n */\ninterface FormatDef {\n format_id: { agent_url: string; id: string };\n assets?: Array<{ asset_id: string; asset_type?: string; required?: boolean; item_type?: string }>;\n}\nfunction pickSimpleFormat(formats: FormatDef[]): FormatDef | null {\n for (const f of formats) {\n if (!f?.format_id?.agent_url || !f.format_id.id) continue;\n const required = (f.assets ?? []).filter(a => a?.required === true && a.item_type === 'individual');\n // Skip formats with zero required assets — sellers typically reject a\n // creative with an empty assets dict, so picking one would just\n // trade \"no format available\" for \"creative rejected\" downstream.\n if (required.length === 0) continue;\n if (required.every(a => ASSET_PLACEHOLDER[a.asset_type as keyof typeof ASSET_PLACEHOLDER])) return f;\n }\n return null;\n}\n\nfunction synthesizeManifestAssets(format: FormatDef): Record<string, unknown> {\n const manifest: Record<string, unknown> = {};\n for (const asset of format.assets ?? []) {\n if (asset?.required !== true || asset.item_type !== 'individual') continue;\n const placeholder = ASSET_PLACEHOLDER[asset.asset_type as keyof typeof ASSET_PLACEHOLDER];\n if (placeholder) manifest[asset.asset_id] = placeholder();\n }\n return manifest;\n}\n\n// Placeholder value per asset type. Kept intentionally small: the\n// seeder's job is to produce a creative the agent will accept, not to\n// fuzz the asset surface. We only cover types whose `required` fields\n// we can satisfy without format-specific knowledge (dimensions, codecs,\n// etc. use safe defaults).\nconst ASSET_PLACEHOLDER = {\n image: () => ({ asset_type: 'image', url: 'https://conformance.example/placeholder.png', width: 300, height: 250 }),\n video: () => ({ asset_type: 'video', url: 'https://conformance.example/placeholder.mp4', width: 640, height: 360 }),\n audio: () => ({ asset_type: 'audio', url: 'https://conformance.example/placeholder.mp3' }),\n text: () => ({ asset_type: 'text', content: 'Conformance seed text' }),\n url: () => ({ asset_type: 'url', url: 'https://conformance.example/' }),\n html: () => ({ asset_type: 'html', content: '<div>Conformance seed</div>' }),\n javascript: () => ({ asset_type: 'javascript', content: '/* conformance seed */' }),\n css: () => ({ asset_type: 'css', content: '/* conformance seed */' }),\n markdown: () => ({ asset_type: 'markdown', content: 'Conformance seed' }),\n} as const;\n\nfunction extractCreativeIds(data: unknown, fallbackId: string): string[] {\n const d = data as { creatives?: unknown; synced_creatives?: unknown };\n const items: unknown[] = [];\n if (Array.isArray(d.creatives)) items.push(...d.creatives);\n if (Array.isArray(d.synced_creatives)) items.push(...d.synced_creatives);\n const ids: string[] = [];\n for (const it of items) {\n const id = (it as { creative_id?: unknown })?.creative_id;\n if (typeof id === 'string' && id.length > 0) ids.push(id);\n }\n // Fall back to the id we supplied — spec allows sellers to echo back\n // buyer-supplied creative_ids on success.\n return ids.length > 0 ? ids : [fallbackId];\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/conformance/seeder.ts"],"sourcesContent":["import { AgentClient } from '../core/AgentClient';\nimport type { AgentConfig } from '../types';\nimport { generateIdempotencyKey } from '../utils/idempotency';\nimport type { ConformanceFixtures } from './types';\n\nexport interface SeedOptions {\n /** Protocol. Default: 'mcp'. */\n protocol?: 'mcp' | 'a2a';\n /** Bearer token forwarded to the agent. */\n authToken?: string;\n /** Full AgentConfig override. `id`/`agent_uri`/`protocol` are filled in from the other options. */\n agentConfig?: Partial<AgentConfig>;\n /**\n * Subset of seeders to run. Default: all.\n * `'create_media_buy'` implicitly runs `get_products` first to discover\n * a real product_id. `'sync_creatives'` implicitly runs\n * `list_creative_formats` first to pick a usable format.\n */\n seeders?: readonly SeederName[];\n /**\n * Brand reference for mutating seeders that require one. Default\n * `{ domain: 'conformance.example' }`. Sellers that enforce brand\n * allowlists should override this with a domain they're configured to\n * accept — otherwise `create_media_buy` seeding warns and falls through.\n */\n brand?: { domain: string; brand_id?: string };\n}\n\nexport type SeederName = 'create_property_list' | 'create_content_standards' | 'create_media_buy' | 'sync_creatives';\n\nexport interface SeedResult {\n fixtures: ConformanceFixtures;\n warnings: SeedWarning[];\n}\n\nexport interface SeedWarning {\n seeder: SeederName;\n reason: string;\n}\n\n// Cosmetic tag for human-readable names/labels only. NOT used for\n// idempotency_key — that's minted by `generateIdempotencyKey()`. Two\n// seeders racing with the same random suffix would produce two distinct\n// entities with identical names, which is fine for a seeder.\nconst UNIQUE_TAG = (): string => 'cf_seed_' + Math.random().toString(36).slice(2, 10);\n\n/**\n * Seeds an agent with known entities so Tier-3 fuzzing has real IDs to\n * feed back into referential + update tools. Each seeder is best-effort:\n * failures degrade to a recorded warning and an empty pool, never a\n * thrown exception, so a partial seed still lets the fuzzer run against\n * every other tool.\n *\n * Inputs are minimal hand-crafted payloads rather than fast-check\n * outputs — seeding is about producing a known-good entity, not\n * exploring the schema space. That's the job of runConformance.\n *\n * WARNING: This mutates the target. Point at a sandbox / test tenant.\n */\nexport async function seedFixtures(agentUrl: string, options: SeedOptions = {}): Promise<SeedResult> {\n const agent = buildAgent(agentUrl, options);\n const seeders =\n options.seeders ??\n (['create_property_list', 'create_content_standards', 'create_media_buy', 'sync_creatives'] as const);\n\n const ctx: SeederContext = {\n agent,\n brand: options.brand ?? { domain: 'conformance.example' },\n };\n\n const fixtures: ConformanceFixtures = {};\n const warnings: SeedWarning[] = [];\n\n for (const name of seeders) {\n try {\n const runner = SEEDERS[name];\n if (!runner) {\n warnings.push({ seeder: name, reason: `no seeder registered for ${name}` });\n continue;\n }\n const out = await runner(ctx);\n mergePool(fixtures, out.ids);\n warnings.push(...out.warnings);\n } catch (err) {\n warnings.push({ seeder: name, reason: `seeder threw: ${(err as Error)?.message ?? String(err)}` });\n }\n }\n\n return { fixtures, warnings };\n}\n\ninterface SeederContext {\n agent: AgentClient;\n brand: { domain: string; brand_id?: string };\n}\n\nfunction buildAgent(agentUrl: string, options: SeedOptions): AgentClient {\n const config: AgentConfig = {\n id: options.agentConfig?.id ?? 'conformance-seeder',\n name: options.agentConfig?.name ?? 'AdCP Conformance Seeder',\n agent_uri: agentUrl,\n protocol: options.protocol ?? options.agentConfig?.protocol ?? 'mcp',\n auth_token: options.authToken ?? options.agentConfig?.auth_token,\n ...options.agentConfig,\n };\n // The seeder tries every seed-tool regardless of declared capabilities.\n // Two SDK preflights are explicitly disabled:\n // - `validateFeatures: false` — don't refuse tools that aren't\n // declared in `get_adcp_capabilities`. The seeder just tries; the\n // agent's rejection becomes a recorded warning.\n // - `validation.responses: 'warn'` — don't fail a seed just because\n // the agent's response drifts from the response schema. We want\n // the ID if it's present; the fuzzer itself will do the strict\n // validation on downstream tools that actually care.\n return new AgentClient(config, {\n validateFeatures: false,\n validation: { responses: 'warn' },\n });\n}\n\nfunction mergePool(dest: ConformanceFixtures, src: Partial<Record<keyof ConformanceFixtures, string[]>>): void {\n for (const [key, values] of Object.entries(src)) {\n if (!values || values.length === 0) continue;\n const k = key as keyof ConformanceFixtures;\n const existing = dest[k] ?? [];\n dest[k] = [...existing, ...values];\n }\n}\n\ninterface SeederOutput {\n ids: Partial<Record<keyof ConformanceFixtures, string[]>>;\n warnings: SeedWarning[];\n}\ntype Seeder = (ctx: SeederContext) => Promise<SeederOutput>;\n\nconst SEEDERS: Record<SeederName, Seeder> = {\n create_property_list: seedPropertyList,\n create_content_standards: seedContentStandards,\n create_media_buy: seedMediaBuy,\n sync_creatives: seedSyncCreatives,\n};\n\nasync function seedPropertyList({ agent }: SeederContext): Promise<SeederOutput> {\n const result = await agent.executeTask('create_property_list', {\n idempotency_key: generateIdempotencyKey(),\n name: `Conformance Seeder List ${UNIQUE_TAG()}`,\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: summarizeResult(result) }],\n };\n }\n const listId = (result.data as { list?: { list_id?: unknown } })?.list?.list_id;\n if (typeof listId !== 'string' || listId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: 'response missing list.list_id' }],\n };\n }\n return { ids: { list_ids: [listId] }, warnings: [] };\n}\n\nasync function seedContentStandards({ agent }: SeederContext): Promise<SeederOutput> {\n // Minimal payload that still satisfies the \"at least one of policy,\n // policies, or registry_policy_ids is required\" invariant some sellers\n // enforce beyond the raw schema. A single inline policy is the most\n // portable shape — registry_policy_ids require a pre-existing registry\n // entry on the seller, which we can't assume.\n const result = await agent.executeTaskLegacy('create_content_standards', {\n idempotency_key: generateIdempotencyKey(),\n scope: { languages_any: ['en'] },\n policies: [\n {\n policy_id: `cf_policy_${UNIQUE_TAG()}`,\n enforcement: 'may',\n policy: 'Conformance seeder placeholder policy — advisory only.',\n },\n ],\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: summarizeResult(result) }],\n };\n }\n const standardsId = (result.data as { standards_id?: unknown })?.standards_id;\n if (typeof standardsId !== 'string' || standardsId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: 'response missing standards_id' }],\n };\n }\n return { ids: { standards_ids: [standardsId] }, warnings: [] };\n}\n\n/**\n * Creates a media buy by first discovering a product via `get_products`,\n * then calling `create_media_buy` against that product. Captures the\n * returned `media_buy_id` and any `package_id`s from the response.\n */\nasync function seedMediaBuy({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const products = await agent.executeTaskLegacy('get_products', {\n brief: 'Conformance fuzzer seed — any product acceptable',\n });\n if (!products.success || products.status !== 'completed' || !products.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products preflight: ' + summarizeResult(products) }],\n };\n }\n const productList = (products.data as { products?: unknown })?.products;\n if (!Array.isArray(productList) || productList.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products returned no products' }],\n };\n }\n const product = productList[0] as {\n product_id?: string;\n pricing_options?: Array<{ pricing_option_id?: string }>;\n };\n if (!product.product_id || !product.pricing_options?.[0]?.pricing_option_id) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'first product missing product_id or pricing_option_id' }],\n };\n }\n\n const tag = UNIQUE_TAG();\n const now = new Date();\n const start = new Date(now.getTime() + 24 * 60 * 60 * 1000); // +1 day\n const end = new Date(now.getTime() + 8 * 24 * 60 * 60 * 1000); // +8 days\n\n const brandRef: Record<string, string> = { domain: brand.domain };\n if (brand.brand_id) brandRef.brand_id = brand.brand_id;\n const result = await agent.executeTaskLegacy('create_media_buy', {\n idempotency_key: generateIdempotencyKey(),\n account: { brand: brandRef, operator: brand.domain },\n brand: brandRef,\n start_time: start.toISOString(),\n end_time: end.toISOString(),\n total_budget: { amount: 100, currency: 'USD' },\n packages: [\n {\n buyer_ref: `cf_pkg_${tag}`,\n product_id: product.product_id,\n pricing_option_id: product.pricing_options[0].pricing_option_id,\n budget: 100,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [...warnings, { seeder: 'create_media_buy', reason: summarizeResult(result) }],\n };\n }\n\n const data = result.data as {\n media_buy_id?: unknown;\n packages?: Array<{ package_id?: unknown }>;\n };\n const ids: Partial<Record<keyof ConformanceFixtures, string[]>> = {};\n if (typeof data.media_buy_id === 'string' && data.media_buy_id.length > 0) {\n ids.media_buy_ids = [data.media_buy_id];\n } else {\n warnings.push({ seeder: 'create_media_buy', reason: 'response missing media_buy_id (may be submitted async)' });\n }\n const packageIds = (data.packages ?? [])\n .map(p => p?.package_id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0);\n if (packageIds.length > 0) ids.package_ids = packageIds;\n\n return { ids, warnings };\n}\n\nfunction summarizeResult(result: {\n success: boolean;\n status?: string;\n error?: string;\n adcpError?: { code?: string };\n}): string {\n if (result.success === false) {\n const code = result.adcpError?.code ? `${result.adcpError.code}: ` : '';\n return `agent rejected with ${code}${result.error ?? 'unknown error'}`;\n }\n return `unexpected status ${result.status ?? 'unknown'}`;\n}\n\n/**\n * Creates a single creative by first discovering formats via\n * `list_creative_formats`, picking the first format whose required\n * assets are all covered by our placeholder synthesis, then calling\n * `sync_creatives` with a minimal manifest. Captures returned\n * `creative_id`s into the pool.\n */\nasync function seedSyncCreatives({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const formatsResult = await agent.executeTaskLegacy('list_creative_formats', {});\n if (!formatsResult.success || formatsResult.status !== 'completed' || !formatsResult.data) {\n return {\n ids: {},\n warnings: [\n { seeder: 'sync_creatives', reason: 'list_creative_formats preflight: ' + summarizeResult(formatsResult) },\n ],\n };\n }\n const formats = (formatsResult.data as { formats?: unknown }).formats;\n if (!Array.isArray(formats) || formats.length === 0) {\n return { ids: {}, warnings: [{ seeder: 'sync_creatives', reason: 'list_creative_formats returned no formats' }] };\n }\n\n const picked = pickSimpleFormat(formats as FormatDef[]);\n if (!picked) {\n return {\n ids: {},\n warnings: [{ seeder: 'sync_creatives', reason: 'no format with a synthesizable required-asset set' }],\n };\n }\n\n const manifest = synthesizeManifestAssets(picked);\n const creativeId = `cf_creative_${UNIQUE_TAG()}`;\n const tag = UNIQUE_TAG();\n\n const result = await agent.executeTaskLegacy('sync_creatives', {\n idempotency_key: generateIdempotencyKey(),\n account: {\n brand: { domain: brand.domain, ...(brand.brand_id ? { brand_id: brand.brand_id } : {}) },\n operator: brand.domain,\n },\n creatives: [\n {\n creative_id: creativeId,\n name: `Conformance Seeder Creative ${tag}`,\n format_id: { agent_url: picked.format_id.agent_url, id: picked.format_id.id },\n assets: manifest,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return { ids: {}, warnings: [...warnings, { seeder: 'sync_creatives', reason: summarizeResult(result) }] };\n }\n\n const capturedIds = extractCreativeIds(result.data, creativeId);\n if (capturedIds.length === 0) {\n warnings.push({\n seeder: 'sync_creatives',\n reason: 'response did not surface a creative_id (may be pending review)',\n });\n return { ids: {}, warnings };\n }\n return { ids: { creative_ids: capturedIds }, warnings };\n}\n\n/**\n * Pick the first format whose required assets are all in the set of\n * types we know how to synthesize placeholder values for. Sorted by the\n * format's declared order — no clever heuristics.\n */\ninterface FormatDef {\n format_id: { agent_url: string; id: string };\n assets?: Array<{ asset_id: string; asset_type?: string; required?: boolean; item_type?: string }>;\n}\nfunction pickSimpleFormat(formats: FormatDef[]): FormatDef | null {\n for (const f of formats) {\n if (!f?.format_id?.agent_url || !f.format_id.id) continue;\n const required = (f.assets ?? []).filter(a => a?.required === true && a.item_type === 'individual');\n // Skip formats with zero required assets — sellers typically reject a\n // creative with an empty assets dict, so picking one would just\n // trade \"no format available\" for \"creative rejected\" downstream.\n if (required.length === 0) continue;\n if (required.every(a => ASSET_PLACEHOLDER[a.asset_type as keyof typeof ASSET_PLACEHOLDER])) return f;\n }\n return null;\n}\n\nfunction synthesizeManifestAssets(format: FormatDef): Record<string, unknown> {\n const manifest: Record<string, unknown> = {};\n for (const asset of format.assets ?? []) {\n if (asset?.required !== true || asset.item_type !== 'individual') continue;\n const placeholder = ASSET_PLACEHOLDER[asset.asset_type as keyof typeof ASSET_PLACEHOLDER];\n if (placeholder) manifest[asset.asset_id] = placeholder();\n }\n return manifest;\n}\n\n// Placeholder value per asset type. Kept intentionally small: the\n// seeder's job is to produce a creative the agent will accept, not to\n// fuzz the asset surface. We only cover types whose `required` fields\n// we can satisfy without format-specific knowledge (dimensions, codecs,\n// etc. use safe defaults).\nconst ASSET_PLACEHOLDER = {\n image: () => ({ asset_type: 'image', url: 'https://conformance.example/placeholder.png', width: 300, height: 250 }),\n video: () => ({ asset_type: 'video', url: 'https://conformance.example/placeholder.mp4', width: 640, height: 360 }),\n audio: () => ({ asset_type: 'audio', url: 'https://conformance.example/placeholder.mp3' }),\n text: () => ({ asset_type: 'text', content: 'Conformance seed text' }),\n url: () => ({ asset_type: 'url', url: 'https://conformance.example/' }),\n html: () => ({ asset_type: 'html', content: '<div>Conformance seed</div>' }),\n javascript: () => ({ asset_type: 'javascript', content: '/* conformance seed */' }),\n css: () => ({ asset_type: 'css', content: '/* conformance seed */' }),\n markdown: () => ({ asset_type: 'markdown', content: 'Conformance seed' }),\n} as const;\n\nfunction extractCreativeIds(data: unknown, fallbackId: string): string[] {\n const d = data as { creatives?: unknown; synced_creatives?: unknown };\n const items: unknown[] = [];\n if (Array.isArray(d.creatives)) items.push(...d.creatives);\n if (Array.isArray(d.synced_creatives)) items.push(...d.synced_creatives);\n const ids: string[] = [];\n for (const it of items) {\n const id = (it as { creative_id?: unknown })?.creative_id;\n if (typeof id === 'string' && id.length > 0) ids.push(id);\n }\n // Fall back to the id we supplied — spec allows sellers to echo back\n // buyer-supplied creative_ids on success.\n return ids.length > 0 ? ids : [fallbackId];\n}\n"],"mappings":"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","names":[]}
@@ -75,7 +75,7 @@ async function seedPropertyList({ agent }) {
75
75
  return { ids: { list_ids: [listId] }, warnings: [] };
76
76
  }
77
77
  async function seedContentStandards({ agent }) {
78
- const result = await agent.executeTask("create_content_standards", {
78
+ const result = await agent.executeTaskLegacy("create_content_standards", {
79
79
  idempotency_key: generateIdempotencyKey(),
80
80
  scope: { languages_any: ["en"] },
81
81
  policies: [
@@ -103,7 +103,7 @@ async function seedContentStandards({ agent }) {
103
103
  }
104
104
  async function seedMediaBuy({ agent, brand }) {
105
105
  const warnings = [];
106
- const products = await agent.executeTask("get_products", {
106
+ const products = await agent.executeTaskLegacy("get_products", {
107
107
  brief: "Conformance fuzzer seed \u2014 any product acceptable"
108
108
  });
109
109
  if (!products.success || products.status !== "completed" || !products.data) {
@@ -132,7 +132,7 @@ async function seedMediaBuy({ agent, brand }) {
132
132
  const end = new Date(now.getTime() + 8 * 24 * 60 * 60 * 1e3);
133
133
  const brandRef = { domain: brand.domain };
134
134
  if (brand.brand_id) brandRef.brand_id = brand.brand_id;
135
- const result = await agent.executeTask("create_media_buy", {
135
+ const result = await agent.executeTaskLegacy("create_media_buy", {
136
136
  idempotency_key: generateIdempotencyKey(),
137
137
  account: { brand: brandRef, operator: brand.domain },
138
138
  brand: brandRef,
@@ -174,7 +174,7 @@ function summarizeResult(result) {
174
174
  }
175
175
  async function seedSyncCreatives({ agent, brand }) {
176
176
  const warnings = [];
177
- const formatsResult = await agent.executeTask("list_creative_formats", {});
177
+ const formatsResult = await agent.executeTaskLegacy("list_creative_formats", {});
178
178
  if (!formatsResult.success || formatsResult.status !== "completed" || !formatsResult.data) {
179
179
  return {
180
180
  ids: {},
@@ -197,7 +197,7 @@ async function seedSyncCreatives({ agent, brand }) {
197
197
  const manifest = synthesizeManifestAssets(picked);
198
198
  const creativeId = `cf_creative_${UNIQUE_TAG()}`;
199
199
  const tag = UNIQUE_TAG();
200
- const result = await agent.executeTask("sync_creatives", {
200
+ const result = await agent.executeTaskLegacy("sync_creatives", {
201
201
  idempotency_key: generateIdempotencyKey(),
202
202
  account: {
203
203
  brand: { domain: brand.domain, ...brand.brand_id ? { brand_id: brand.brand_id } : {} },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/conformance/seeder.ts"],"sourcesContent":["import { AgentClient } from '../core/AgentClient';\nimport type { AgentConfig } from '../types';\nimport { generateIdempotencyKey } from '../utils/idempotency';\nimport type { ConformanceFixtures } from './types';\n\nexport interface SeedOptions {\n /** Protocol. Default: 'mcp'. */\n protocol?: 'mcp' | 'a2a';\n /** Bearer token forwarded to the agent. */\n authToken?: string;\n /** Full AgentConfig override. `id`/`agent_uri`/`protocol` are filled in from the other options. */\n agentConfig?: Partial<AgentConfig>;\n /**\n * Subset of seeders to run. Default: all.\n * `'create_media_buy'` implicitly runs `get_products` first to discover\n * a real product_id. `'sync_creatives'` implicitly runs\n * `list_creative_formats` first to pick a usable format.\n */\n seeders?: readonly SeederName[];\n /**\n * Brand reference for mutating seeders that require one. Default\n * `{ domain: 'conformance.example' }`. Sellers that enforce brand\n * allowlists should override this with a domain they're configured to\n * accept — otherwise `create_media_buy` seeding warns and falls through.\n */\n brand?: { domain: string; brand_id?: string };\n}\n\nexport type SeederName = 'create_property_list' | 'create_content_standards' | 'create_media_buy' | 'sync_creatives';\n\nexport interface SeedResult {\n fixtures: ConformanceFixtures;\n warnings: SeedWarning[];\n}\n\nexport interface SeedWarning {\n seeder: SeederName;\n reason: string;\n}\n\n// Cosmetic tag for human-readable names/labels only. NOT used for\n// idempotency_key — that's minted by `generateIdempotencyKey()`. Two\n// seeders racing with the same random suffix would produce two distinct\n// entities with identical names, which is fine for a seeder.\nconst UNIQUE_TAG = (): string => 'cf_seed_' + Math.random().toString(36).slice(2, 10);\n\n/**\n * Seeds an agent with known entities so Tier-3 fuzzing has real IDs to\n * feed back into referential + update tools. Each seeder is best-effort:\n * failures degrade to a recorded warning and an empty pool, never a\n * thrown exception, so a partial seed still lets the fuzzer run against\n * every other tool.\n *\n * Inputs are minimal hand-crafted payloads rather than fast-check\n * outputs — seeding is about producing a known-good entity, not\n * exploring the schema space. That's the job of runConformance.\n *\n * WARNING: This mutates the target. Point at a sandbox / test tenant.\n */\nexport async function seedFixtures(agentUrl: string, options: SeedOptions = {}): Promise<SeedResult> {\n const agent = buildAgent(agentUrl, options);\n const seeders =\n options.seeders ??\n (['create_property_list', 'create_content_standards', 'create_media_buy', 'sync_creatives'] as const);\n\n const ctx: SeederContext = {\n agent,\n brand: options.brand ?? { domain: 'conformance.example' },\n };\n\n const fixtures: ConformanceFixtures = {};\n const warnings: SeedWarning[] = [];\n\n for (const name of seeders) {\n try {\n const runner = SEEDERS[name];\n if (!runner) {\n warnings.push({ seeder: name, reason: `no seeder registered for ${name}` });\n continue;\n }\n const out = await runner(ctx);\n mergePool(fixtures, out.ids);\n warnings.push(...out.warnings);\n } catch (err) {\n warnings.push({ seeder: name, reason: `seeder threw: ${(err as Error)?.message ?? String(err)}` });\n }\n }\n\n return { fixtures, warnings };\n}\n\ninterface SeederContext {\n agent: AgentClient;\n brand: { domain: string; brand_id?: string };\n}\n\nfunction buildAgent(agentUrl: string, options: SeedOptions): AgentClient {\n const config: AgentConfig = {\n id: options.agentConfig?.id ?? 'conformance-seeder',\n name: options.agentConfig?.name ?? 'AdCP Conformance Seeder',\n agent_uri: agentUrl,\n protocol: options.protocol ?? options.agentConfig?.protocol ?? 'mcp',\n auth_token: options.authToken ?? options.agentConfig?.auth_token,\n ...options.agentConfig,\n };\n // The seeder tries every seed-tool regardless of declared capabilities.\n // Two SDK preflights are explicitly disabled:\n // - `validateFeatures: false` — don't refuse tools that aren't\n // declared in `get_adcp_capabilities`. The seeder just tries; the\n // agent's rejection becomes a recorded warning.\n // - `validation.responses: 'warn'` — don't fail a seed just because\n // the agent's response drifts from the response schema. We want\n // the ID if it's present; the fuzzer itself will do the strict\n // validation on downstream tools that actually care.\n return new AgentClient(config, {\n validateFeatures: false,\n validation: { responses: 'warn' },\n });\n}\n\nfunction mergePool(dest: ConformanceFixtures, src: Partial<Record<keyof ConformanceFixtures, string[]>>): void {\n for (const [key, values] of Object.entries(src)) {\n if (!values || values.length === 0) continue;\n const k = key as keyof ConformanceFixtures;\n const existing = dest[k] ?? [];\n dest[k] = [...existing, ...values];\n }\n}\n\ninterface SeederOutput {\n ids: Partial<Record<keyof ConformanceFixtures, string[]>>;\n warnings: SeedWarning[];\n}\ntype Seeder = (ctx: SeederContext) => Promise<SeederOutput>;\n\nconst SEEDERS: Record<SeederName, Seeder> = {\n create_property_list: seedPropertyList,\n create_content_standards: seedContentStandards,\n create_media_buy: seedMediaBuy,\n sync_creatives: seedSyncCreatives,\n};\n\nasync function seedPropertyList({ agent }: SeederContext): Promise<SeederOutput> {\n const result = await agent.executeTask('create_property_list', {\n idempotency_key: generateIdempotencyKey(),\n name: `Conformance Seeder List ${UNIQUE_TAG()}`,\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: summarizeResult(result) }],\n };\n }\n const listId = (result.data as { list?: { list_id?: unknown } })?.list?.list_id;\n if (typeof listId !== 'string' || listId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: 'response missing list.list_id' }],\n };\n }\n return { ids: { list_ids: [listId] }, warnings: [] };\n}\n\nasync function seedContentStandards({ agent }: SeederContext): Promise<SeederOutput> {\n // Minimal payload that still satisfies the \"at least one of policy,\n // policies, or registry_policy_ids is required\" invariant some sellers\n // enforce beyond the raw schema. A single inline policy is the most\n // portable shape — registry_policy_ids require a pre-existing registry\n // entry on the seller, which we can't assume.\n const result = await agent.executeTask('create_content_standards', {\n idempotency_key: generateIdempotencyKey(),\n scope: { languages_any: ['en'] },\n policies: [\n {\n policy_id: `cf_policy_${UNIQUE_TAG()}`,\n enforcement: 'may',\n policy: 'Conformance seeder placeholder policy — advisory only.',\n },\n ],\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: summarizeResult(result) }],\n };\n }\n const standardsId = (result.data as { standards_id?: unknown })?.standards_id;\n if (typeof standardsId !== 'string' || standardsId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: 'response missing standards_id' }],\n };\n }\n return { ids: { standards_ids: [standardsId] }, warnings: [] };\n}\n\n/**\n * Creates a media buy by first discovering a product via `get_products`,\n * then calling `create_media_buy` against that product. Captures the\n * returned `media_buy_id` and any `package_id`s from the response.\n */\nasync function seedMediaBuy({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const products = await agent.executeTask('get_products', {\n brief: 'Conformance fuzzer seed — any product acceptable',\n });\n if (!products.success || products.status !== 'completed' || !products.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products preflight: ' + summarizeResult(products) }],\n };\n }\n const productList = (products.data as { products?: unknown })?.products;\n if (!Array.isArray(productList) || productList.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products returned no products' }],\n };\n }\n const product = productList[0] as {\n product_id?: string;\n pricing_options?: Array<{ pricing_option_id?: string }>;\n };\n if (!product.product_id || !product.pricing_options?.[0]?.pricing_option_id) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'first product missing product_id or pricing_option_id' }],\n };\n }\n\n const tag = UNIQUE_TAG();\n const now = new Date();\n const start = new Date(now.getTime() + 24 * 60 * 60 * 1000); // +1 day\n const end = new Date(now.getTime() + 8 * 24 * 60 * 60 * 1000); // +8 days\n\n const brandRef: Record<string, string> = { domain: brand.domain };\n if (brand.brand_id) brandRef.brand_id = brand.brand_id;\n const result = await agent.executeTask('create_media_buy', {\n idempotency_key: generateIdempotencyKey(),\n account: { brand: brandRef, operator: brand.domain },\n brand: brandRef,\n start_time: start.toISOString(),\n end_time: end.toISOString(),\n total_budget: { amount: 100, currency: 'USD' },\n packages: [\n {\n buyer_ref: `cf_pkg_${tag}`,\n product_id: product.product_id,\n pricing_option_id: product.pricing_options[0].pricing_option_id,\n budget: 100,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [...warnings, { seeder: 'create_media_buy', reason: summarizeResult(result) }],\n };\n }\n\n const data = result.data as {\n media_buy_id?: unknown;\n packages?: Array<{ package_id?: unknown }>;\n };\n const ids: Partial<Record<keyof ConformanceFixtures, string[]>> = {};\n if (typeof data.media_buy_id === 'string' && data.media_buy_id.length > 0) {\n ids.media_buy_ids = [data.media_buy_id];\n } else {\n warnings.push({ seeder: 'create_media_buy', reason: 'response missing media_buy_id (may be submitted async)' });\n }\n const packageIds = (data.packages ?? [])\n .map(p => p?.package_id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0);\n if (packageIds.length > 0) ids.package_ids = packageIds;\n\n return { ids, warnings };\n}\n\nfunction summarizeResult(result: {\n success: boolean;\n status?: string;\n error?: string;\n adcpError?: { code?: string };\n}): string {\n if (result.success === false) {\n const code = result.adcpError?.code ? `${result.adcpError.code}: ` : '';\n return `agent rejected with ${code}${result.error ?? 'unknown error'}`;\n }\n return `unexpected status ${result.status ?? 'unknown'}`;\n}\n\n/**\n * Creates a single creative by first discovering formats via\n * `list_creative_formats`, picking the first format whose required\n * assets are all covered by our placeholder synthesis, then calling\n * `sync_creatives` with a minimal manifest. Captures returned\n * `creative_id`s into the pool.\n */\nasync function seedSyncCreatives({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const formatsResult = await agent.executeTask('list_creative_formats', {});\n if (!formatsResult.success || formatsResult.status !== 'completed' || !formatsResult.data) {\n return {\n ids: {},\n warnings: [\n { seeder: 'sync_creatives', reason: 'list_creative_formats preflight: ' + summarizeResult(formatsResult) },\n ],\n };\n }\n const formats = (formatsResult.data as { formats?: unknown }).formats;\n if (!Array.isArray(formats) || formats.length === 0) {\n return { ids: {}, warnings: [{ seeder: 'sync_creatives', reason: 'list_creative_formats returned no formats' }] };\n }\n\n const picked = pickSimpleFormat(formats as FormatDef[]);\n if (!picked) {\n return {\n ids: {},\n warnings: [{ seeder: 'sync_creatives', reason: 'no format with a synthesizable required-asset set' }],\n };\n }\n\n const manifest = synthesizeManifestAssets(picked);\n const creativeId = `cf_creative_${UNIQUE_TAG()}`;\n const tag = UNIQUE_TAG();\n\n const result = await agent.executeTask('sync_creatives', {\n idempotency_key: generateIdempotencyKey(),\n account: {\n brand: { domain: brand.domain, ...(brand.brand_id ? { brand_id: brand.brand_id } : {}) },\n operator: brand.domain,\n },\n creatives: [\n {\n creative_id: creativeId,\n name: `Conformance Seeder Creative ${tag}`,\n format_id: { agent_url: picked.format_id.agent_url, id: picked.format_id.id },\n assets: manifest,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return { ids: {}, warnings: [...warnings, { seeder: 'sync_creatives', reason: summarizeResult(result) }] };\n }\n\n const capturedIds = extractCreativeIds(result.data, creativeId);\n if (capturedIds.length === 0) {\n warnings.push({\n seeder: 'sync_creatives',\n reason: 'response did not surface a creative_id (may be pending review)',\n });\n return { ids: {}, warnings };\n }\n return { ids: { creative_ids: capturedIds }, warnings };\n}\n\n/**\n * Pick the first format whose required assets are all in the set of\n * types we know how to synthesize placeholder values for. Sorted by the\n * format's declared order — no clever heuristics.\n */\ninterface FormatDef {\n format_id: { agent_url: string; id: string };\n assets?: Array<{ asset_id: string; asset_type?: string; required?: boolean; item_type?: string }>;\n}\nfunction pickSimpleFormat(formats: FormatDef[]): FormatDef | null {\n for (const f of formats) {\n if (!f?.format_id?.agent_url || !f.format_id.id) continue;\n const required = (f.assets ?? []).filter(a => a?.required === true && a.item_type === 'individual');\n // Skip formats with zero required assets — sellers typically reject a\n // creative with an empty assets dict, so picking one would just\n // trade \"no format available\" for \"creative rejected\" downstream.\n if (required.length === 0) continue;\n if (required.every(a => ASSET_PLACEHOLDER[a.asset_type as keyof typeof ASSET_PLACEHOLDER])) return f;\n }\n return null;\n}\n\nfunction synthesizeManifestAssets(format: FormatDef): Record<string, unknown> {\n const manifest: Record<string, unknown> = {};\n for (const asset of format.assets ?? []) {\n if (asset?.required !== true || asset.item_type !== 'individual') continue;\n const placeholder = ASSET_PLACEHOLDER[asset.asset_type as keyof typeof ASSET_PLACEHOLDER];\n if (placeholder) manifest[asset.asset_id] = placeholder();\n }\n return manifest;\n}\n\n// Placeholder value per asset type. Kept intentionally small: the\n// seeder's job is to produce a creative the agent will accept, not to\n// fuzz the asset surface. We only cover types whose `required` fields\n// we can satisfy without format-specific knowledge (dimensions, codecs,\n// etc. use safe defaults).\nconst ASSET_PLACEHOLDER = {\n image: () => ({ asset_type: 'image', url: 'https://conformance.example/placeholder.png', width: 300, height: 250 }),\n video: () => ({ asset_type: 'video', url: 'https://conformance.example/placeholder.mp4', width: 640, height: 360 }),\n audio: () => ({ asset_type: 'audio', url: 'https://conformance.example/placeholder.mp3' }),\n text: () => ({ asset_type: 'text', content: 'Conformance seed text' }),\n url: () => ({ asset_type: 'url', url: 'https://conformance.example/' }),\n html: () => ({ asset_type: 'html', content: '<div>Conformance seed</div>' }),\n javascript: () => ({ asset_type: 'javascript', content: '/* conformance seed */' }),\n css: () => ({ asset_type: 'css', content: '/* conformance seed */' }),\n markdown: () => ({ asset_type: 'markdown', content: 'Conformance seed' }),\n} as const;\n\nfunction extractCreativeIds(data: unknown, fallbackId: string): string[] {\n const d = data as { creatives?: unknown; synced_creatives?: unknown };\n const items: unknown[] = [];\n if (Array.isArray(d.creatives)) items.push(...d.creatives);\n if (Array.isArray(d.synced_creatives)) items.push(...d.synced_creatives);\n const ids: string[] = [];\n for (const it of items) {\n const id = (it as { creative_id?: unknown })?.creative_id;\n if (typeof id === 'string' && id.length > 0) ids.push(id);\n }\n // Fall back to the id we supplied — spec allows sellers to echo back\n // buyer-supplied creative_ids on success.\n return ids.length > 0 ? ids : [fallbackId];\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/conformance/seeder.ts"],"sourcesContent":["import { AgentClient } from '../core/AgentClient';\nimport type { AgentConfig } from '../types';\nimport { generateIdempotencyKey } from '../utils/idempotency';\nimport type { ConformanceFixtures } from './types';\n\nexport interface SeedOptions {\n /** Protocol. Default: 'mcp'. */\n protocol?: 'mcp' | 'a2a';\n /** Bearer token forwarded to the agent. */\n authToken?: string;\n /** Full AgentConfig override. `id`/`agent_uri`/`protocol` are filled in from the other options. */\n agentConfig?: Partial<AgentConfig>;\n /**\n * Subset of seeders to run. Default: all.\n * `'create_media_buy'` implicitly runs `get_products` first to discover\n * a real product_id. `'sync_creatives'` implicitly runs\n * `list_creative_formats` first to pick a usable format.\n */\n seeders?: readonly SeederName[];\n /**\n * Brand reference for mutating seeders that require one. Default\n * `{ domain: 'conformance.example' }`. Sellers that enforce brand\n * allowlists should override this with a domain they're configured to\n * accept — otherwise `create_media_buy` seeding warns and falls through.\n */\n brand?: { domain: string; brand_id?: string };\n}\n\nexport type SeederName = 'create_property_list' | 'create_content_standards' | 'create_media_buy' | 'sync_creatives';\n\nexport interface SeedResult {\n fixtures: ConformanceFixtures;\n warnings: SeedWarning[];\n}\n\nexport interface SeedWarning {\n seeder: SeederName;\n reason: string;\n}\n\n// Cosmetic tag for human-readable names/labels only. NOT used for\n// idempotency_key — that's minted by `generateIdempotencyKey()`. Two\n// seeders racing with the same random suffix would produce two distinct\n// entities with identical names, which is fine for a seeder.\nconst UNIQUE_TAG = (): string => 'cf_seed_' + Math.random().toString(36).slice(2, 10);\n\n/**\n * Seeds an agent with known entities so Tier-3 fuzzing has real IDs to\n * feed back into referential + update tools. Each seeder is best-effort:\n * failures degrade to a recorded warning and an empty pool, never a\n * thrown exception, so a partial seed still lets the fuzzer run against\n * every other tool.\n *\n * Inputs are minimal hand-crafted payloads rather than fast-check\n * outputs — seeding is about producing a known-good entity, not\n * exploring the schema space. That's the job of runConformance.\n *\n * WARNING: This mutates the target. Point at a sandbox / test tenant.\n */\nexport async function seedFixtures(agentUrl: string, options: SeedOptions = {}): Promise<SeedResult> {\n const agent = buildAgent(agentUrl, options);\n const seeders =\n options.seeders ??\n (['create_property_list', 'create_content_standards', 'create_media_buy', 'sync_creatives'] as const);\n\n const ctx: SeederContext = {\n agent,\n brand: options.brand ?? { domain: 'conformance.example' },\n };\n\n const fixtures: ConformanceFixtures = {};\n const warnings: SeedWarning[] = [];\n\n for (const name of seeders) {\n try {\n const runner = SEEDERS[name];\n if (!runner) {\n warnings.push({ seeder: name, reason: `no seeder registered for ${name}` });\n continue;\n }\n const out = await runner(ctx);\n mergePool(fixtures, out.ids);\n warnings.push(...out.warnings);\n } catch (err) {\n warnings.push({ seeder: name, reason: `seeder threw: ${(err as Error)?.message ?? String(err)}` });\n }\n }\n\n return { fixtures, warnings };\n}\n\ninterface SeederContext {\n agent: AgentClient;\n brand: { domain: string; brand_id?: string };\n}\n\nfunction buildAgent(agentUrl: string, options: SeedOptions): AgentClient {\n const config: AgentConfig = {\n id: options.agentConfig?.id ?? 'conformance-seeder',\n name: options.agentConfig?.name ?? 'AdCP Conformance Seeder',\n agent_uri: agentUrl,\n protocol: options.protocol ?? options.agentConfig?.protocol ?? 'mcp',\n auth_token: options.authToken ?? options.agentConfig?.auth_token,\n ...options.agentConfig,\n };\n // The seeder tries every seed-tool regardless of declared capabilities.\n // Two SDK preflights are explicitly disabled:\n // - `validateFeatures: false` — don't refuse tools that aren't\n // declared in `get_adcp_capabilities`. The seeder just tries; the\n // agent's rejection becomes a recorded warning.\n // - `validation.responses: 'warn'` — don't fail a seed just because\n // the agent's response drifts from the response schema. We want\n // the ID if it's present; the fuzzer itself will do the strict\n // validation on downstream tools that actually care.\n return new AgentClient(config, {\n validateFeatures: false,\n validation: { responses: 'warn' },\n });\n}\n\nfunction mergePool(dest: ConformanceFixtures, src: Partial<Record<keyof ConformanceFixtures, string[]>>): void {\n for (const [key, values] of Object.entries(src)) {\n if (!values || values.length === 0) continue;\n const k = key as keyof ConformanceFixtures;\n const existing = dest[k] ?? [];\n dest[k] = [...existing, ...values];\n }\n}\n\ninterface SeederOutput {\n ids: Partial<Record<keyof ConformanceFixtures, string[]>>;\n warnings: SeedWarning[];\n}\ntype Seeder = (ctx: SeederContext) => Promise<SeederOutput>;\n\nconst SEEDERS: Record<SeederName, Seeder> = {\n create_property_list: seedPropertyList,\n create_content_standards: seedContentStandards,\n create_media_buy: seedMediaBuy,\n sync_creatives: seedSyncCreatives,\n};\n\nasync function seedPropertyList({ agent }: SeederContext): Promise<SeederOutput> {\n const result = await agent.executeTask('create_property_list', {\n idempotency_key: generateIdempotencyKey(),\n name: `Conformance Seeder List ${UNIQUE_TAG()}`,\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: summarizeResult(result) }],\n };\n }\n const listId = (result.data as { list?: { list_id?: unknown } })?.list?.list_id;\n if (typeof listId !== 'string' || listId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_property_list', reason: 'response missing list.list_id' }],\n };\n }\n return { ids: { list_ids: [listId] }, warnings: [] };\n}\n\nasync function seedContentStandards({ agent }: SeederContext): Promise<SeederOutput> {\n // Minimal payload that still satisfies the \"at least one of policy,\n // policies, or registry_policy_ids is required\" invariant some sellers\n // enforce beyond the raw schema. A single inline policy is the most\n // portable shape — registry_policy_ids require a pre-existing registry\n // entry on the seller, which we can't assume.\n const result = await agent.executeTaskLegacy('create_content_standards', {\n idempotency_key: generateIdempotencyKey(),\n scope: { languages_any: ['en'] },\n policies: [\n {\n policy_id: `cf_policy_${UNIQUE_TAG()}`,\n enforcement: 'may',\n policy: 'Conformance seeder placeholder policy — advisory only.',\n },\n ],\n });\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: summarizeResult(result) }],\n };\n }\n const standardsId = (result.data as { standards_id?: unknown })?.standards_id;\n if (typeof standardsId !== 'string' || standardsId.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_content_standards', reason: 'response missing standards_id' }],\n };\n }\n return { ids: { standards_ids: [standardsId] }, warnings: [] };\n}\n\n/**\n * Creates a media buy by first discovering a product via `get_products`,\n * then calling `create_media_buy` against that product. Captures the\n * returned `media_buy_id` and any `package_id`s from the response.\n */\nasync function seedMediaBuy({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const products = await agent.executeTaskLegacy('get_products', {\n brief: 'Conformance fuzzer seed — any product acceptable',\n });\n if (!products.success || products.status !== 'completed' || !products.data) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products preflight: ' + summarizeResult(products) }],\n };\n }\n const productList = (products.data as { products?: unknown })?.products;\n if (!Array.isArray(productList) || productList.length === 0) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'get_products returned no products' }],\n };\n }\n const product = productList[0] as {\n product_id?: string;\n pricing_options?: Array<{ pricing_option_id?: string }>;\n };\n if (!product.product_id || !product.pricing_options?.[0]?.pricing_option_id) {\n return {\n ids: {},\n warnings: [{ seeder: 'create_media_buy', reason: 'first product missing product_id or pricing_option_id' }],\n };\n }\n\n const tag = UNIQUE_TAG();\n const now = new Date();\n const start = new Date(now.getTime() + 24 * 60 * 60 * 1000); // +1 day\n const end = new Date(now.getTime() + 8 * 24 * 60 * 60 * 1000); // +8 days\n\n const brandRef: Record<string, string> = { domain: brand.domain };\n if (brand.brand_id) brandRef.brand_id = brand.brand_id;\n const result = await agent.executeTaskLegacy('create_media_buy', {\n idempotency_key: generateIdempotencyKey(),\n account: { brand: brandRef, operator: brand.domain },\n brand: brandRef,\n start_time: start.toISOString(),\n end_time: end.toISOString(),\n total_budget: { amount: 100, currency: 'USD' },\n packages: [\n {\n buyer_ref: `cf_pkg_${tag}`,\n product_id: product.product_id,\n pricing_option_id: product.pricing_options[0].pricing_option_id,\n budget: 100,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return {\n ids: {},\n warnings: [...warnings, { seeder: 'create_media_buy', reason: summarizeResult(result) }],\n };\n }\n\n const data = result.data as {\n media_buy_id?: unknown;\n packages?: Array<{ package_id?: unknown }>;\n };\n const ids: Partial<Record<keyof ConformanceFixtures, string[]>> = {};\n if (typeof data.media_buy_id === 'string' && data.media_buy_id.length > 0) {\n ids.media_buy_ids = [data.media_buy_id];\n } else {\n warnings.push({ seeder: 'create_media_buy', reason: 'response missing media_buy_id (may be submitted async)' });\n }\n const packageIds = (data.packages ?? [])\n .map(p => p?.package_id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0);\n if (packageIds.length > 0) ids.package_ids = packageIds;\n\n return { ids, warnings };\n}\n\nfunction summarizeResult(result: {\n success: boolean;\n status?: string;\n error?: string;\n adcpError?: { code?: string };\n}): string {\n if (result.success === false) {\n const code = result.adcpError?.code ? `${result.adcpError.code}: ` : '';\n return `agent rejected with ${code}${result.error ?? 'unknown error'}`;\n }\n return `unexpected status ${result.status ?? 'unknown'}`;\n}\n\n/**\n * Creates a single creative by first discovering formats via\n * `list_creative_formats`, picking the first format whose required\n * assets are all covered by our placeholder synthesis, then calling\n * `sync_creatives` with a minimal manifest. Captures returned\n * `creative_id`s into the pool.\n */\nasync function seedSyncCreatives({ agent, brand }: SeederContext): Promise<SeederOutput> {\n const warnings: SeedWarning[] = [];\n const formatsResult = await agent.executeTaskLegacy('list_creative_formats', {});\n if (!formatsResult.success || formatsResult.status !== 'completed' || !formatsResult.data) {\n return {\n ids: {},\n warnings: [\n { seeder: 'sync_creatives', reason: 'list_creative_formats preflight: ' + summarizeResult(formatsResult) },\n ],\n };\n }\n const formats = (formatsResult.data as { formats?: unknown }).formats;\n if (!Array.isArray(formats) || formats.length === 0) {\n return { ids: {}, warnings: [{ seeder: 'sync_creatives', reason: 'list_creative_formats returned no formats' }] };\n }\n\n const picked = pickSimpleFormat(formats as FormatDef[]);\n if (!picked) {\n return {\n ids: {},\n warnings: [{ seeder: 'sync_creatives', reason: 'no format with a synthesizable required-asset set' }],\n };\n }\n\n const manifest = synthesizeManifestAssets(picked);\n const creativeId = `cf_creative_${UNIQUE_TAG()}`;\n const tag = UNIQUE_TAG();\n\n const result = await agent.executeTaskLegacy('sync_creatives', {\n idempotency_key: generateIdempotencyKey(),\n account: {\n brand: { domain: brand.domain, ...(brand.brand_id ? { brand_id: brand.brand_id } : {}) },\n operator: brand.domain,\n },\n creatives: [\n {\n creative_id: creativeId,\n name: `Conformance Seeder Creative ${tag}`,\n format_id: { agent_url: picked.format_id.agent_url, id: picked.format_id.id },\n assets: manifest,\n },\n ],\n });\n\n if (!result.success || result.status !== 'completed' || !result.data) {\n return { ids: {}, warnings: [...warnings, { seeder: 'sync_creatives', reason: summarizeResult(result) }] };\n }\n\n const capturedIds = extractCreativeIds(result.data, creativeId);\n if (capturedIds.length === 0) {\n warnings.push({\n seeder: 'sync_creatives',\n reason: 'response did not surface a creative_id (may be pending review)',\n });\n return { ids: {}, warnings };\n }\n return { ids: { creative_ids: capturedIds }, warnings };\n}\n\n/**\n * Pick the first format whose required assets are all in the set of\n * types we know how to synthesize placeholder values for. Sorted by the\n * format's declared order — no clever heuristics.\n */\ninterface FormatDef {\n format_id: { agent_url: string; id: string };\n assets?: Array<{ asset_id: string; asset_type?: string; required?: boolean; item_type?: string }>;\n}\nfunction pickSimpleFormat(formats: FormatDef[]): FormatDef | null {\n for (const f of formats) {\n if (!f?.format_id?.agent_url || !f.format_id.id) continue;\n const required = (f.assets ?? []).filter(a => a?.required === true && a.item_type === 'individual');\n // Skip formats with zero required assets — sellers typically reject a\n // creative with an empty assets dict, so picking one would just\n // trade \"no format available\" for \"creative rejected\" downstream.\n if (required.length === 0) continue;\n if (required.every(a => ASSET_PLACEHOLDER[a.asset_type as keyof typeof ASSET_PLACEHOLDER])) return f;\n }\n return null;\n}\n\nfunction synthesizeManifestAssets(format: FormatDef): Record<string, unknown> {\n const manifest: Record<string, unknown> = {};\n for (const asset of format.assets ?? []) {\n if (asset?.required !== true || asset.item_type !== 'individual') continue;\n const placeholder = ASSET_PLACEHOLDER[asset.asset_type as keyof typeof ASSET_PLACEHOLDER];\n if (placeholder) manifest[asset.asset_id] = placeholder();\n }\n return manifest;\n}\n\n// Placeholder value per asset type. Kept intentionally small: the\n// seeder's job is to produce a creative the agent will accept, not to\n// fuzz the asset surface. We only cover types whose `required` fields\n// we can satisfy without format-specific knowledge (dimensions, codecs,\n// etc. use safe defaults).\nconst ASSET_PLACEHOLDER = {\n image: () => ({ asset_type: 'image', url: 'https://conformance.example/placeholder.png', width: 300, height: 250 }),\n video: () => ({ asset_type: 'video', url: 'https://conformance.example/placeholder.mp4', width: 640, height: 360 }),\n audio: () => ({ asset_type: 'audio', url: 'https://conformance.example/placeholder.mp3' }),\n text: () => ({ asset_type: 'text', content: 'Conformance seed text' }),\n url: () => ({ asset_type: 'url', url: 'https://conformance.example/' }),\n html: () => ({ asset_type: 'html', content: '<div>Conformance seed</div>' }),\n javascript: () => ({ asset_type: 'javascript', content: '/* conformance seed */' }),\n css: () => ({ asset_type: 'css', content: '/* conformance seed */' }),\n markdown: () => ({ asset_type: 'markdown', content: 'Conformance seed' }),\n} as const;\n\nfunction extractCreativeIds(data: unknown, fallbackId: string): string[] {\n const d = data as { creatives?: unknown; synced_creatives?: unknown };\n const items: unknown[] = [];\n if (Array.isArray(d.creatives)) items.push(...d.creatives);\n if (Array.isArray(d.synced_creatives)) items.push(...d.synced_creatives);\n const ids: string[] = [];\n for (const it of items) {\n const id = (it as { creative_id?: unknown })?.creative_id;\n if (typeof id === 'string' && id.length > 0) ids.push(id);\n }\n // Fall back to the id we supplied — spec allows sellers to echo back\n // buyer-supplied creative_ids on success.\n return ids.length > 0 ? ids : [fallbackId];\n}\n"],"mappings":"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","names":[]}
@@ -1,12 +1,13 @@
1
1
  import type { AgentConfig } from '../types/index.mjs';
2
- import { AgentClient, type V2AugmentedGetProductsResponse } from './AgentClient.mjs';
3
- import type { SingleAgentClientConfig } from './SingleAgentClient.mjs';
2
+ import { AgentClient, type CanonicalGetProductsResponse, type CanonicalProjectionTaskOptions } from './AgentClient.mjs';
3
+ import type { CreativeDeliveryTaskOptions, SingleAgentClientConfig, SyncCreativesTaskOptions } from './SingleAgentClient.mjs';
4
4
  import { CreativeAgentClient } from './CreativeAgentClient.mjs';
5
- import type { CreativeFormat } from './CreativeAgentClient.mjs';
5
+ import type { LegacyCreativeFormat } from './CreativeAgentClient.mjs';
6
6
  import type { InputHandler, TaskOptions, TaskResult, TaskInfo } from './ConversationTypes.mjs';
7
7
  import type { WebhookHeaderValue } from '../webhooks/index.mjs';
8
- import type { GetProductsRequest, GetProductsResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse } from '../types/tools.generated.mjs';
8
+ import type { GetProductsRequest, GetProductsResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyResponse, UpdateMediaBuyResponse, SyncCreativesResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse } from '../types/tools.generated.mjs';
9
9
  import type { MutatingRequestInput } from '../utils/idempotency.mjs';
10
+ import type { CanonicalCreateMediaBuyRequest, CanonicalCreativeResponse, CanonicalGetProductsRequest, CanonicalListCreativesRequest, CanonicalListCreativesResponse, CanonicalSyncCreativesRequest, CanonicalUpdateMediaBuyRequest } from '../v2/projection/creative-delivery.mjs';
10
11
  /**
11
12
  * Collection of agent clients for parallel operations across multiple AdCP agents.
12
13
  *
@@ -38,41 +39,37 @@ export declare class AgentCollection {
38
39
  /**
39
40
  * Execute getProducts on all agents in parallel.
40
41
  *
41
- * Each agent's response is auto-augmented with v2 `format_options[]`
42
- * by default — see `AgentClient.getProducts()`. Pass
43
- * `{ project: false }` to opt out across all agents in this fan-out.
42
+ * Each agent's response is reduced to canonical `format_options[]`
43
+ * by default — see `AgentClient.getProducts()`.
44
44
  */
45
- getProducts(params: GetProductsRequest, inputHandler?: InputHandler, options?: TaskOptions & {
46
- project?: true;
47
- }): Promise<TaskResult<V2AugmentedGetProductsResponse>[]>;
48
- getProducts(params: GetProductsRequest, inputHandler?: InputHandler, options?: TaskOptions & {
49
- project: false;
50
- }): Promise<TaskResult<GetProductsResponse>[]>;
51
- /**
52
- * Execute listCreativeFormats on all agents in parallel
53
- */
54
- listCreativeFormats(params: ListCreativeFormatsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListCreativeFormatsResponse>[]>;
45
+ getProducts(params: CanonicalGetProductsRequest, inputHandler?: InputHandler, options?: CanonicalProjectionTaskOptions): Promise<TaskResult<CanonicalGetProductsResponse>[]>;
46
+ /** @deprecated Explicit raw-wire fan-out for migration tooling. */
47
+ getProductsLegacy(params: GetProductsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<GetProductsResponse>[]>;
48
+ /** @deprecated Migration-only fan-out for legacy named-format catalogs. */
49
+ listCreativeFormatsLegacy(params: ListCreativeFormatsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListCreativeFormatsResponse>[]>;
55
50
  /**
56
51
  * Execute createMediaBuy on all agents in parallel
57
52
  * Note: This might not make sense for all use cases, but provided for completeness
58
53
  */
59
- createMediaBuy(params: MutatingRequestInput<CreateMediaBuyRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<CreateMediaBuyResponse>[]>;
54
+ createMediaBuy(params: MutatingRequestInput<CanonicalCreateMediaBuyRequest>, inputHandler?: InputHandler, options?: CreativeDeliveryTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<CreateMediaBuyResponse>>[]>;
60
55
  /**
61
56
  * Execute updateMediaBuy on all agents in parallel
62
57
  */
63
- updateMediaBuy(params: MutatingRequestInput<UpdateMediaBuyRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<UpdateMediaBuyResponse>[]>;
58
+ updateMediaBuy(params: MutatingRequestInput<CanonicalUpdateMediaBuyRequest>, inputHandler?: InputHandler, options?: CreativeDeliveryTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<UpdateMediaBuyResponse>>[]>;
64
59
  /**
65
60
  * Execute syncCreatives on all agents in parallel
66
61
  */
67
- syncCreatives(params: MutatingRequestInput<SyncCreativesRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<SyncCreativesResponse>[]>;
62
+ syncCreatives(params: MutatingRequestInput<CanonicalSyncCreativesRequest>, inputHandler?: InputHandler, options?: SyncCreativesTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<SyncCreativesResponse>>[]>;
68
63
  /**
69
64
  * Execute listCreatives on all agents in parallel
70
65
  */
71
- listCreatives(params: ListCreativesRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListCreativesResponse>[]>;
66
+ listCreatives(params: CanonicalListCreativesRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<CanonicalListCreativesResponse>[]>;
72
67
  /**
73
68
  * Execute getMediaBuyDelivery on all agents in parallel
74
69
  */
75
- getMediaBuyDelivery(params: GetMediaBuyDeliveryRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<GetMediaBuyDeliveryResponse>[]>;
70
+ getMediaBuyDelivery(params: GetMediaBuyDeliveryRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<CanonicalCreativeResponse<GetMediaBuyDeliveryResponse>>[]>;
71
+ /** Execute canonical creative delivery reporting across all agents. */
72
+ getCreativeDelivery(params: GetCreativeDeliveryRequest, inputHandler?: InputHandler, options?: CanonicalProjectionTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<GetCreativeDeliveryResponse>>[]>;
76
73
  /**
77
74
  * Execute providePerformanceFeedback on all agents in parallel
78
75
  */
@@ -186,7 +183,7 @@ export declare class AgentCollection {
186
183
  *
187
184
  * All standard AdCP operations are available:
188
185
  * - `getProducts()` - Discover advertising products
189
- * - `listCreativeFormats()` - Get supported creative formats
186
+ * - `listCreativeFormatsLegacy()` - Inspect legacy named-format catalogs for migration tooling
190
187
  * - `createMediaBuy()` - Create new media buy
191
188
  * - `updateMediaBuy()` - Update existing media buy
192
189
  * - `syncCreatives()` - Upload/sync creative assets
@@ -588,7 +585,7 @@ export declare class ADCPMultiAgentClient {
588
585
  * );
589
586
  *
590
587
  * // List formats
591
- * const formats = await creativeAgent.listFormats();
588
+ * const formats = await creativeAgent.listFormatsLegacy();
592
589
  * ```
593
590
  */
594
591
  createCreativeAgent(agentUrl: string, protocol?: 'mcp' | 'a2a', authToken?: string): CreativeAgentClient;
@@ -601,7 +598,7 @@ export declare class ADCPMultiAgentClient {
601
598
  * @example
602
599
  * ```typescript
603
600
  * const creativeAgent = client.getStandardCreativeAgent();
604
- * const formats = await creativeAgent.listFormats();
601
+ * const formats = await creativeAgent.listFormatsLegacy();
605
602
  * ```
606
603
  */
607
604
  getStandardCreativeAgent(protocol?: 'mcp' | 'a2a'): CreativeAgentClient;
@@ -614,13 +611,13 @@ export declare class ADCPMultiAgentClient {
614
611
  *
615
612
  * @example
616
613
  * ```typescript
617
- * const formats = await client.discoverFormats();
614
+ * const formats = await client.discoverFormatsLegacy();
618
615
  *
619
616
  * // Find specific format
620
617
  * const banner = formats.find(f => f.format_id.id === 'display_300x250_image');
621
618
  * ```
622
619
  */
623
- discoverFormats(): Promise<CreativeFormat[]>;
620
+ discoverFormatsLegacy(): Promise<LegacyCreativeFormat[]>;
624
621
  /**
625
622
  * Find creative formats by dimensions
626
623
  *
@@ -631,10 +628,10 @@ export declare class ADCPMultiAgentClient {
631
628
  * @example
632
629
  * ```typescript
633
630
  * // Find all 300x250 formats
634
- * const mediumRectangles = await client.findFormatsByDimensions(300, 250);
631
+ * const mediumRectangles = await client.findLegacyFormatsByDimensions(300, 250);
635
632
  * ```
636
633
  */
637
- findFormatsByDimensions(width: number, height: number): Promise<CreativeFormat[]>;
634
+ findLegacyFormatsByDimensions(width: number, height: number): Promise<LegacyCreativeFormat[]>;
638
635
  }
639
636
  /**
640
637
  * Factory function to create a multi-agent ADCP client
@@ -1,12 +1,13 @@
1
1
  import type { AgentConfig } from '../types';
2
- import { AgentClient, type V2AugmentedGetProductsResponse } from './AgentClient';
3
- import type { SingleAgentClientConfig } from './SingleAgentClient';
2
+ import { AgentClient, type CanonicalGetProductsResponse, type CanonicalProjectionTaskOptions } from './AgentClient';
3
+ import type { CreativeDeliveryTaskOptions, SingleAgentClientConfig, SyncCreativesTaskOptions } from './SingleAgentClient';
4
4
  import { CreativeAgentClient } from './CreativeAgentClient';
5
- import type { CreativeFormat } from './CreativeAgentClient';
5
+ import type { LegacyCreativeFormat } from './CreativeAgentClient';
6
6
  import type { InputHandler, TaskOptions, TaskResult, TaskInfo } from './ConversationTypes';
7
7
  import type { WebhookHeaderValue } from '../webhooks';
8
- import type { GetProductsRequest, GetProductsResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse } from '../types/tools.generated';
8
+ import type { GetProductsRequest, GetProductsResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyResponse, UpdateMediaBuyResponse, SyncCreativesResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse } from '../types/tools.generated';
9
9
  import type { MutatingRequestInput } from '../utils/idempotency';
10
+ import type { CanonicalCreateMediaBuyRequest, CanonicalCreativeResponse, CanonicalGetProductsRequest, CanonicalListCreativesRequest, CanonicalListCreativesResponse, CanonicalSyncCreativesRequest, CanonicalUpdateMediaBuyRequest } from '../v2/projection/creative-delivery';
10
11
  /**
11
12
  * Collection of agent clients for parallel operations across multiple AdCP agents.
12
13
  *
@@ -38,41 +39,37 @@ export declare class AgentCollection {
38
39
  /**
39
40
  * Execute getProducts on all agents in parallel.
40
41
  *
41
- * Each agent's response is auto-augmented with v2 `format_options[]`
42
- * by default — see `AgentClient.getProducts()`. Pass
43
- * `{ project: false }` to opt out across all agents in this fan-out.
42
+ * Each agent's response is reduced to canonical `format_options[]`
43
+ * by default — see `AgentClient.getProducts()`.
44
44
  */
45
- getProducts(params: GetProductsRequest, inputHandler?: InputHandler, options?: TaskOptions & {
46
- project?: true;
47
- }): Promise<TaskResult<V2AugmentedGetProductsResponse>[]>;
48
- getProducts(params: GetProductsRequest, inputHandler?: InputHandler, options?: TaskOptions & {
49
- project: false;
50
- }): Promise<TaskResult<GetProductsResponse>[]>;
51
- /**
52
- * Execute listCreativeFormats on all agents in parallel
53
- */
54
- listCreativeFormats(params: ListCreativeFormatsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListCreativeFormatsResponse>[]>;
45
+ getProducts(params: CanonicalGetProductsRequest, inputHandler?: InputHandler, options?: CanonicalProjectionTaskOptions): Promise<TaskResult<CanonicalGetProductsResponse>[]>;
46
+ /** @deprecated Explicit raw-wire fan-out for migration tooling. */
47
+ getProductsLegacy(params: GetProductsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<GetProductsResponse>[]>;
48
+ /** @deprecated Migration-only fan-out for legacy named-format catalogs. */
49
+ listCreativeFormatsLegacy(params: ListCreativeFormatsRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListCreativeFormatsResponse>[]>;
55
50
  /**
56
51
  * Execute createMediaBuy on all agents in parallel
57
52
  * Note: This might not make sense for all use cases, but provided for completeness
58
53
  */
59
- createMediaBuy(params: MutatingRequestInput<CreateMediaBuyRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<CreateMediaBuyResponse>[]>;
54
+ createMediaBuy(params: MutatingRequestInput<CanonicalCreateMediaBuyRequest>, inputHandler?: InputHandler, options?: CreativeDeliveryTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<CreateMediaBuyResponse>>[]>;
60
55
  /**
61
56
  * Execute updateMediaBuy on all agents in parallel
62
57
  */
63
- updateMediaBuy(params: MutatingRequestInput<UpdateMediaBuyRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<UpdateMediaBuyResponse>[]>;
58
+ updateMediaBuy(params: MutatingRequestInput<CanonicalUpdateMediaBuyRequest>, inputHandler?: InputHandler, options?: CreativeDeliveryTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<UpdateMediaBuyResponse>>[]>;
64
59
  /**
65
60
  * Execute syncCreatives on all agents in parallel
66
61
  */
67
- syncCreatives(params: MutatingRequestInput<SyncCreativesRequest>, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<SyncCreativesResponse>[]>;
62
+ syncCreatives(params: MutatingRequestInput<CanonicalSyncCreativesRequest>, inputHandler?: InputHandler, options?: SyncCreativesTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<SyncCreativesResponse>>[]>;
68
63
  /**
69
64
  * Execute listCreatives on all agents in parallel
70
65
  */
71
- listCreatives(params: ListCreativesRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<ListCreativesResponse>[]>;
66
+ listCreatives(params: CanonicalListCreativesRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<CanonicalListCreativesResponse>[]>;
72
67
  /**
73
68
  * Execute getMediaBuyDelivery on all agents in parallel
74
69
  */
75
- getMediaBuyDelivery(params: GetMediaBuyDeliveryRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<GetMediaBuyDeliveryResponse>[]>;
70
+ getMediaBuyDelivery(params: GetMediaBuyDeliveryRequest, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<CanonicalCreativeResponse<GetMediaBuyDeliveryResponse>>[]>;
71
+ /** Execute canonical creative delivery reporting across all agents. */
72
+ getCreativeDelivery(params: GetCreativeDeliveryRequest, inputHandler?: InputHandler, options?: CanonicalProjectionTaskOptions): Promise<TaskResult<CanonicalCreativeResponse<GetCreativeDeliveryResponse>>[]>;
76
73
  /**
77
74
  * Execute providePerformanceFeedback on all agents in parallel
78
75
  */
@@ -186,7 +183,7 @@ export declare class AgentCollection {
186
183
  *
187
184
  * All standard AdCP operations are available:
188
185
  * - `getProducts()` - Discover advertising products
189
- * - `listCreativeFormats()` - Get supported creative formats
186
+ * - `listCreativeFormatsLegacy()` - Inspect legacy named-format catalogs for migration tooling
190
187
  * - `createMediaBuy()` - Create new media buy
191
188
  * - `updateMediaBuy()` - Update existing media buy
192
189
  * - `syncCreatives()` - Upload/sync creative assets
@@ -588,7 +585,7 @@ export declare class ADCPMultiAgentClient {
588
585
  * );
589
586
  *
590
587
  * // List formats
591
- * const formats = await creativeAgent.listFormats();
588
+ * const formats = await creativeAgent.listFormatsLegacy();
592
589
  * ```
593
590
  */
594
591
  createCreativeAgent(agentUrl: string, protocol?: 'mcp' | 'a2a', authToken?: string): CreativeAgentClient;
@@ -601,7 +598,7 @@ export declare class ADCPMultiAgentClient {
601
598
  * @example
602
599
  * ```typescript
603
600
  * const creativeAgent = client.getStandardCreativeAgent();
604
- * const formats = await creativeAgent.listFormats();
601
+ * const formats = await creativeAgent.listFormatsLegacy();
605
602
  * ```
606
603
  */
607
604
  getStandardCreativeAgent(protocol?: 'mcp' | 'a2a'): CreativeAgentClient;
@@ -614,13 +611,13 @@ export declare class ADCPMultiAgentClient {
614
611
  *
615
612
  * @example
616
613
  * ```typescript
617
- * const formats = await client.discoverFormats();
614
+ * const formats = await client.discoverFormatsLegacy();
618
615
  *
619
616
  * // Find specific format
620
617
  * const banner = formats.find(f => f.format_id.id === 'display_300x250_image');
621
618
  * ```
622
619
  */
623
- discoverFormats(): Promise<CreativeFormat[]>;
620
+ discoverFormatsLegacy(): Promise<LegacyCreativeFormat[]>;
624
621
  /**
625
622
  * Find creative formats by dimensions
626
623
  *
@@ -631,10 +628,10 @@ export declare class ADCPMultiAgentClient {
631
628
  * @example
632
629
  * ```typescript
633
630
  * // Find all 300x250 formats
634
- * const mediumRectangles = await client.findFormatsByDimensions(300, 250);
631
+ * const mediumRectangles = await client.findLegacyFormatsByDimensions(300, 250);
635
632
  * ```
636
633
  */
637
- findFormatsByDimensions(width: number, height: number): Promise<CreativeFormat[]>;
634
+ findLegacyFormatsByDimensions(width: number, height: number): Promise<LegacyCreativeFormat[]>;
638
635
  }
639
636
  /**
640
637
  * Factory function to create a multi-agent ADCP client
@@ -1 +1 @@
1
- {"version":3,"file":"ADCPMultiAgentClient.d.ts","sourceRoot":"","sources":["../../../src/lib/core/ADCPMultiAgentClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ADCPMultiAgentClient.d.ts","sourceRoot":"","sources":["../../../src/lib/core/ADCPMultiAgentClient.ts"],"names":[],"mappings":"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"}