@adcp/sdk 6.6.0 → 6.8.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 (1218) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/AGENTS.md +4 -0
  3. package/README.md +29 -16
  4. package/bin/adcp-resolve.js +166 -0
  5. package/bin/adcp.js +462 -11
  6. package/compliance/cache/{3.0.1 → 3.0.5}/index.json +2 -2
  7. package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/audience-sync/index.yaml +1 -1
  8. package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/brand-rights/index.yaml +3 -3
  9. package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/sales-social/index.yaml +7 -0
  10. package/compliance/cache/{3.0.1 → 3.0.5}/universal/runner-output-contract.yaml +23 -4
  11. package/compliance/cache/{3.0.1 → 3.0.5}/universal/storyboard-schema.yaml +106 -1
  12. package/compliance/cache/{3.0.1 → 3.0.5}/universal/v3-envelope-integrity.yaml +4 -2
  13. package/dist/lib/adapters/derived-account-store.d.ts +152 -0
  14. package/dist/lib/adapters/derived-account-store.d.ts.map +1 -0
  15. package/dist/lib/adapters/derived-account-store.js +135 -0
  16. package/dist/lib/adapters/derived-account-store.js.map +1 -0
  17. package/dist/lib/adapters/implicit-account-store.d.ts +172 -0
  18. package/dist/lib/adapters/implicit-account-store.d.ts.map +1 -0
  19. package/dist/lib/adapters/implicit-account-store.js +315 -0
  20. package/dist/lib/adapters/implicit-account-store.js.map +1 -0
  21. package/dist/lib/adapters/index.d.ts +5 -0
  22. package/dist/lib/adapters/index.d.ts.map +1 -1
  23. package/dist/lib/adapters/index.js +25 -1
  24. package/dist/lib/adapters/index.js.map +1 -1
  25. package/dist/lib/adapters/oauth-passthrough-resolver.d.ts +193 -0
  26. package/dist/lib/adapters/oauth-passthrough-resolver.d.ts.map +1 -0
  27. package/dist/lib/adapters/oauth-passthrough-resolver.js +180 -0
  28. package/dist/lib/adapters/oauth-passthrough-resolver.js.map +1 -0
  29. package/dist/lib/adapters/roster-account-store.d.ts +282 -0
  30. package/dist/lib/adapters/roster-account-store.d.ts.map +1 -0
  31. package/dist/lib/adapters/roster-account-store.js +216 -0
  32. package/dist/lib/adapters/roster-account-store.js.map +1 -0
  33. package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts.map +1 -1
  34. package/dist/lib/auth/oauth/ClientCredentialsFlow.js +5 -1
  35. package/dist/lib/auth/oauth/ClientCredentialsFlow.js.map +1 -1
  36. package/dist/lib/auth/oauth/discovery.d.ts.map +1 -1
  37. package/dist/lib/auth/oauth/discovery.js +6 -1
  38. package/dist/lib/auth/oauth/discovery.js.map +1 -1
  39. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  40. package/dist/lib/core/SingleAgentClient.d.ts +22 -0
  41. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  42. package/dist/lib/core/SingleAgentClient.js +86 -23
  43. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  44. package/dist/lib/index.d.ts +4 -4
  45. package/dist/lib/index.d.ts.map +1 -1
  46. package/dist/lib/index.js +27 -7
  47. package/dist/lib/index.js.map +1 -1
  48. package/dist/lib/mock-server/creative-ad-server/seed-data.d.ts +81 -0
  49. package/dist/lib/mock-server/creative-ad-server/seed-data.d.ts.map +1 -0
  50. package/dist/lib/mock-server/creative-ad-server/seed-data.js +200 -0
  51. package/dist/lib/mock-server/creative-ad-server/seed-data.js.map +1 -0
  52. package/dist/lib/mock-server/creative-ad-server/server.d.ts +39 -0
  53. package/dist/lib/mock-server/creative-ad-server/server.d.ts.map +1 -0
  54. package/dist/lib/mock-server/creative-ad-server/server.js +618 -0
  55. package/dist/lib/mock-server/creative-ad-server/server.js.map +1 -0
  56. package/dist/lib/mock-server/creative-template/server.d.ts.map +1 -1
  57. package/dist/lib/mock-server/creative-template/server.js +54 -9
  58. package/dist/lib/mock-server/creative-template/server.js.map +1 -1
  59. package/dist/lib/mock-server/index.d.ts +27 -1
  60. package/dist/lib/mock-server/index.d.ts.map +1 -1
  61. package/dist/lib/mock-server/index.js +289 -15
  62. package/dist/lib/mock-server/index.js.map +1 -1
  63. package/dist/lib/mock-server/sales-guaranteed/seed-data.d.ts +46 -0
  64. package/dist/lib/mock-server/sales-guaranteed/seed-data.d.ts.map +1 -0
  65. package/dist/lib/mock-server/sales-guaranteed/seed-data.js +167 -0
  66. package/dist/lib/mock-server/sales-guaranteed/seed-data.js.map +1 -0
  67. package/dist/lib/mock-server/sales-guaranteed/server.d.ts +14 -0
  68. package/dist/lib/mock-server/sales-guaranteed/server.d.ts.map +1 -0
  69. package/dist/lib/mock-server/sales-guaranteed/server.js +893 -0
  70. package/dist/lib/mock-server/sales-guaranteed/server.js.map +1 -0
  71. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.d.ts +66 -0
  72. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.d.ts.map +1 -0
  73. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.js +193 -0
  74. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.js.map +1 -0
  75. package/dist/lib/mock-server/sales-non-guaranteed/server.d.ts +33 -0
  76. package/dist/lib/mock-server/sales-non-guaranteed/server.d.ts.map +1 -0
  77. package/dist/lib/mock-server/sales-non-guaranteed/server.js +782 -0
  78. package/dist/lib/mock-server/sales-non-guaranteed/server.js.map +1 -0
  79. package/dist/lib/mock-server/sales-social/seed-data.d.ts +34 -0
  80. package/dist/lib/mock-server/sales-social/seed-data.d.ts.map +1 -0
  81. package/dist/lib/mock-server/sales-social/seed-data.js +42 -0
  82. package/dist/lib/mock-server/sales-social/seed-data.js.map +1 -0
  83. package/dist/lib/mock-server/sales-social/server.d.ts +17 -0
  84. package/dist/lib/mock-server/sales-social/server.d.ts.map +1 -0
  85. package/dist/lib/mock-server/sales-social/server.js +1219 -0
  86. package/dist/lib/mock-server/sales-social/server.js.map +1 -0
  87. package/dist/lib/mock-server/signal-marketplace/server.d.ts.map +1 -1
  88. package/dist/lib/mock-server/signal-marketplace/server.js +58 -9
  89. package/dist/lib/mock-server/signal-marketplace/server.js.map +1 -1
  90. package/dist/lib/mock-server/sponsored-intelligence/seed-data.d.ts +50 -0
  91. package/dist/lib/mock-server/sponsored-intelligence/seed-data.d.ts.map +1 -0
  92. package/dist/lib/mock-server/sponsored-intelligence/seed-data.js +133 -0
  93. package/dist/lib/mock-server/sponsored-intelligence/seed-data.js.map +1 -0
  94. package/dist/lib/mock-server/sponsored-intelligence/server.d.ts +13 -0
  95. package/dist/lib/mock-server/sponsored-intelligence/server.d.ts.map +1 -0
  96. package/dist/lib/mock-server/sponsored-intelligence/server.js +609 -0
  97. package/dist/lib/mock-server/sponsored-intelligence/server.js.map +1 -0
  98. package/dist/lib/protocols/mcp.d.ts +4 -4
  99. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  100. package/dist/lib/protocols/mcp.js +20 -54
  101. package/dist/lib/protocols/mcp.js.map +1 -1
  102. package/dist/lib/schemas-data/3.0/a2ui/bound-value.json +1 -1
  103. package/dist/lib/schemas-data/3.0/a2ui/component.json +1 -1
  104. package/dist/lib/schemas-data/3.0/a2ui/si-catalog.json +25 -25
  105. package/dist/lib/schemas-data/3.0/a2ui/surface.json +2 -2
  106. package/dist/lib/schemas-data/3.0/a2ui/user-action.json +1 -1
  107. package/dist/lib/schemas-data/3.0/account/get-account-financials-request.json +5 -5
  108. package/dist/lib/schemas-data/3.0/account/get-account-financials-response.json +10 -10
  109. package/dist/lib/schemas-data/3.0/account/list-accounts-request.json +4 -4
  110. package/dist/lib/schemas-data/3.0/account/list-accounts-response.json +6 -6
  111. package/dist/lib/schemas-data/3.0/account/report-usage-request.json +5 -5
  112. package/dist/lib/schemas-data/3.0/account/report-usage-response.json +4 -4
  113. package/dist/lib/schemas-data/3.0/account/sync-accounts-request.json +9 -9
  114. package/dist/lib/schemas-data/3.0/account/sync-accounts-response.json +12 -12
  115. package/dist/lib/schemas-data/3.0/account/sync-governance-request.json +5 -5
  116. package/dist/lib/schemas-data/3.0/account/sync-governance-response.json +8 -8
  117. package/dist/lib/schemas-data/3.0/adagents.json +32 -32
  118. package/dist/lib/schemas-data/3.0/brand/acquire-rights-request.json +8 -8
  119. package/dist/lib/schemas-data/3.0/brand/acquire-rights-response.json +14 -14
  120. package/dist/lib/schemas-data/3.0/brand/creative-approval-request.json +4 -4
  121. package/dist/lib/schemas-data/3.0/brand/creative-approval-response.json +10 -10
  122. package/dist/lib/schemas-data/3.0/brand/get-brand-identity-request.json +3 -3
  123. package/dist/lib/schemas-data/3.0/brand/get-brand-identity-response.json +8 -8
  124. package/dist/lib/schemas-data/3.0/brand/get-rights-request.json +7 -7
  125. package/dist/lib/schemas-data/3.0/brand/get-rights-response.json +9 -9
  126. package/dist/lib/schemas-data/3.0/brand/revocation-notification.json +4 -4
  127. package/dist/lib/schemas-data/3.0/brand/rights-pricing-option.json +5 -5
  128. package/dist/lib/schemas-data/3.0/brand/rights-terms.json +3 -3
  129. package/dist/lib/schemas-data/3.0/brand/update-rights-request.json +4 -4
  130. package/dist/lib/schemas-data/3.0/brand/update-rights-response.json +9 -9
  131. package/dist/lib/schemas-data/3.0/brand.json +14 -14
  132. package/dist/lib/schemas-data/3.0/bundled/content-standards/calibrate-content-request.json +2 -2
  133. package/dist/lib/schemas-data/3.0/bundled/content-standards/calibrate-content-response.json +35 -4
  134. package/dist/lib/schemas-data/3.0/bundled/content-standards/create-content-standards-request.json +2 -2
  135. package/dist/lib/schemas-data/3.0/bundled/content-standards/create-content-standards-response.json +35 -4
  136. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-content-standards-request.json +2 -2
  137. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-content-standards-response.json +35 -4
  138. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-media-buy-artifacts-request.json +2 -2
  139. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-media-buy-artifacts-response.json +35 -4
  140. package/dist/lib/schemas-data/3.0/bundled/content-standards/list-content-standards-request.json +2 -2
  141. package/dist/lib/schemas-data/3.0/bundled/content-standards/list-content-standards-response.json +35 -4
  142. package/dist/lib/schemas-data/3.0/bundled/content-standards/update-content-standards-request.json +2 -2
  143. package/dist/lib/schemas-data/3.0/bundled/content-standards/update-content-standards-response.json +35 -4
  144. package/dist/lib/schemas-data/3.0/bundled/content-standards/validate-content-delivery-request.json +2 -2
  145. package/dist/lib/schemas-data/3.0/bundled/content-standards/validate-content-delivery-response.json +35 -4
  146. package/dist/lib/schemas-data/3.0/bundled/core/tasks-get-request.json +2 -2
  147. package/dist/lib/schemas-data/3.0/bundled/core/tasks-get-response.json +2 -2
  148. package/dist/lib/schemas-data/3.0/bundled/core/tasks-list-request.json +2 -2
  149. package/dist/lib/schemas-data/3.0/bundled/core/tasks-list-response.json +2 -2
  150. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-delivery-request.json +2 -2
  151. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-delivery-response.json +40 -6
  152. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-features-request.json +7 -4
  153. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-features-response.json +35 -4
  154. package/dist/lib/schemas-data/3.0/bundled/creative/list-creative-formats-request.json +2 -2
  155. package/dist/lib/schemas-data/3.0/bundled/creative/list-creative-formats-response.json +38 -7
  156. package/dist/lib/schemas-data/3.0/bundled/creative/list-creatives-request.json +2 -2
  157. package/dist/lib/schemas-data/3.0/bundled/creative/list-creatives-response.json +40 -6
  158. package/dist/lib/schemas-data/3.0/bundled/creative/preview-creative-request.json +11 -5
  159. package/dist/lib/schemas-data/3.0/bundled/creative/preview-creative-response.json +40 -6
  160. package/dist/lib/schemas-data/3.0/bundled/creative/sync-creatives-request.json +7 -4
  161. package/dist/lib/schemas-data/3.0/bundled/creative/sync-creatives-response.json +101 -8
  162. package/dist/lib/schemas-data/3.0/bundled/media-buy/build-creative-request.json +7 -4
  163. package/dist/lib/schemas-data/3.0/bundled/media-buy/build-creative-response.json +110 -11
  164. package/dist/lib/schemas-data/3.0/bundled/media-buy/create-media-buy-request.json +7 -4
  165. package/dist/lib/schemas-data/3.0/bundled/media-buy/create-media-buy-response.json +68 -6
  166. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buy-delivery-request.json +2 -2
  167. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buy-delivery-response.json +35 -4
  168. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buys-request.json +2 -2
  169. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buys-response.json +35 -4
  170. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-products-request.json +2 -2
  171. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-products-response.json +35 -4
  172. package/dist/lib/schemas-data/3.0/bundled/media-buy/list-creative-formats-request.json +2 -2
  173. package/dist/lib/schemas-data/3.0/bundled/media-buy/list-creative-formats-response.json +38 -7
  174. package/dist/lib/schemas-data/3.0/bundled/media-buy/log-event-request.json +2 -2
  175. package/dist/lib/schemas-data/3.0/bundled/media-buy/log-event-response.json +35 -4
  176. package/dist/lib/schemas-data/3.0/bundled/media-buy/package-request.json +7 -4
  177. package/dist/lib/schemas-data/3.0/bundled/media-buy/provide-performance-feedback-request.json +2 -2
  178. package/dist/lib/schemas-data/3.0/bundled/media-buy/provide-performance-feedback-response.json +35 -4
  179. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-audiences-request.json +2 -2
  180. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-audiences-response.json +68 -6
  181. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-catalogs-request.json +2 -2
  182. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-catalogs-response.json +68 -6
  183. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-event-sources-request.json +2 -2
  184. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-event-sources-response.json +68 -6
  185. package/dist/lib/schemas-data/3.0/bundled/media-buy/update-media-buy-request.json +11 -5
  186. package/dist/lib/schemas-data/3.0/bundled/media-buy/update-media-buy-response.json +35 -4
  187. package/dist/lib/schemas-data/3.0/bundled/property/create-property-list-request.json +2 -2
  188. package/dist/lib/schemas-data/3.0/bundled/property/create-property-list-response.json +2 -2
  189. package/dist/lib/schemas-data/3.0/bundled/property/delete-property-list-request.json +2 -2
  190. package/dist/lib/schemas-data/3.0/bundled/property/delete-property-list-response.json +2 -2
  191. package/dist/lib/schemas-data/3.0/bundled/property/get-property-list-request.json +2 -2
  192. package/dist/lib/schemas-data/3.0/bundled/property/get-property-list-response.json +2 -2
  193. package/dist/lib/schemas-data/3.0/bundled/property/list-property-lists-request.json +2 -2
  194. package/dist/lib/schemas-data/3.0/bundled/property/list-property-lists-response.json +2 -2
  195. package/dist/lib/schemas-data/3.0/bundled/property/update-property-list-request.json +2 -2
  196. package/dist/lib/schemas-data/3.0/bundled/property/update-property-list-response.json +2 -2
  197. package/dist/lib/schemas-data/3.0/bundled/property/validate-property-delivery-request.json +2 -2
  198. package/dist/lib/schemas-data/3.0/bundled/property/validate-property-delivery-response.json +2 -2
  199. package/dist/lib/schemas-data/3.0/bundled/protocol/get-adcp-capabilities-request.json +2 -2
  200. package/dist/lib/schemas-data/3.0/bundled/protocol/get-adcp-capabilities-response.json +36 -5
  201. package/dist/lib/schemas-data/3.0/bundled/signals/activate-signal-request.json +2 -2
  202. package/dist/lib/schemas-data/3.0/bundled/signals/activate-signal-response.json +35 -4
  203. package/dist/lib/schemas-data/3.0/bundled/signals/get-signals-request.json +2 -2
  204. package/dist/lib/schemas-data/3.0/bundled/signals/get-signals-response.json +35 -4
  205. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-get-offering-request.json +2 -2
  206. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-get-offering-response.json +35 -4
  207. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-initiate-session-request.json +2 -2
  208. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-initiate-session-response.json +35 -4
  209. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-send-message-request.json +2 -2
  210. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-send-message-response.json +35 -4
  211. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-terminate-session-request.json +2 -2
  212. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-terminate-session-response.json +35 -4
  213. package/dist/lib/schemas-data/3.0/collection/base-collection-source.json +3 -3
  214. package/dist/lib/schemas-data/3.0/collection/collection-list-changed-webhook.json +2 -2
  215. package/dist/lib/schemas-data/3.0/collection/collection-list-filters.json +7 -7
  216. package/dist/lib/schemas-data/3.0/collection/collection-list.json +5 -5
  217. package/dist/lib/schemas-data/3.0/collection/create-collection-list-request.json +7 -7
  218. package/dist/lib/schemas-data/3.0/collection/create-collection-list-response.json +4 -4
  219. package/dist/lib/schemas-data/3.0/collection/delete-collection-list-request.json +4 -4
  220. package/dist/lib/schemas-data/3.0/collection/delete-collection-list-response.json +3 -3
  221. package/dist/lib/schemas-data/3.0/collection/get-collection-list-request.json +4 -4
  222. package/dist/lib/schemas-data/3.0/collection/get-collection-list-response.json +10 -10
  223. package/dist/lib/schemas-data/3.0/collection/list-collection-lists-request.json +5 -5
  224. package/dist/lib/schemas-data/3.0/collection/list-collection-lists-response.json +5 -5
  225. package/dist/lib/schemas-data/3.0/collection/update-collection-list-request.json +7 -7
  226. package/dist/lib/schemas-data/3.0/collection/update-collection-list-response.json +4 -4
  227. package/dist/lib/schemas-data/3.0/content-standards/artifact-webhook-payload.json +3 -3
  228. package/dist/lib/schemas-data/3.0/content-standards/artifact.json +7 -7
  229. package/dist/lib/schemas-data/3.0/content-standards/calibrate-content-request.json +4 -4
  230. package/dist/lib/schemas-data/3.0/content-standards/calibrate-content-response.json +8 -8
  231. package/dist/lib/schemas-data/3.0/content-standards/content-standards.json +7 -7
  232. package/dist/lib/schemas-data/3.0/content-standards/create-content-standards-request.json +7 -7
  233. package/dist/lib/schemas-data/3.0/content-standards/create-content-standards-response.json +6 -6
  234. package/dist/lib/schemas-data/3.0/content-standards/get-content-standards-request.json +3 -3
  235. package/dist/lib/schemas-data/3.0/content-standards/get-content-standards-response.json +7 -7
  236. package/dist/lib/schemas-data/3.0/content-standards/get-media-buy-artifacts-request.json +4 -4
  237. package/dist/lib/schemas-data/3.0/content-standards/get-media-buy-artifacts-response.json +8 -8
  238. package/dist/lib/schemas-data/3.0/content-standards/list-content-standards-request.json +5 -5
  239. package/dist/lib/schemas-data/3.0/content-standards/list-content-standards-response.json +8 -8
  240. package/dist/lib/schemas-data/3.0/content-standards/update-content-standards-request.json +7 -7
  241. package/dist/lib/schemas-data/3.0/content-standards/update-content-standards-response.json +6 -6
  242. package/dist/lib/schemas-data/3.0/content-standards/validate-content-delivery-request.json +4 -4
  243. package/dist/lib/schemas-data/3.0/content-standards/validate-content-delivery-response.json +8 -8
  244. package/dist/lib/schemas-data/3.0/core/account-ref.json +2 -2
  245. package/dist/lib/schemas-data/3.0/core/account.json +9 -9
  246. package/dist/lib/schemas-data/3.0/core/activation-key.json +1 -1
  247. package/dist/lib/schemas-data/3.0/core/ad-inventory-config.json +1 -1
  248. package/dist/lib/schemas-data/3.0/core/agent-encryption-key.json +1 -1
  249. package/dist/lib/schemas-data/3.0/core/agent-signing-key.json +1 -1
  250. package/dist/lib/schemas-data/3.0/core/app-item.json +4 -4
  251. package/dist/lib/schemas-data/3.0/core/assets/asset-union.json +53 -0
  252. package/dist/lib/schemas-data/3.0/core/assets/audio-asset.json +3 -3
  253. package/dist/lib/schemas-data/3.0/core/assets/brief-asset.json +2 -2
  254. package/dist/lib/schemas-data/3.0/core/assets/catalog-asset.json +2 -2
  255. package/dist/lib/schemas-data/3.0/core/assets/css-asset.json +2 -2
  256. package/dist/lib/schemas-data/3.0/core/assets/daast-asset.json +4 -4
  257. package/dist/lib/schemas-data/3.0/core/assets/html-asset.json +2 -2
  258. package/dist/lib/schemas-data/3.0/core/assets/image-asset.json +2 -2
  259. package/dist/lib/schemas-data/3.0/core/assets/javascript-asset.json +3 -3
  260. package/dist/lib/schemas-data/3.0/core/assets/markdown-asset.json +2 -2
  261. package/dist/lib/schemas-data/3.0/core/assets/text-asset.json +2 -2
  262. package/dist/lib/schemas-data/3.0/core/assets/url-asset.json +6 -5
  263. package/dist/lib/schemas-data/3.0/core/assets/vast-asset.json +4 -4
  264. package/dist/lib/schemas-data/3.0/core/assets/video-asset.json +7 -7
  265. package/dist/lib/schemas-data/3.0/core/assets/webhook-asset.json +7 -7
  266. package/dist/lib/schemas-data/3.0/core/async-response-data.json +25 -25
  267. package/dist/lib/schemas-data/3.0/core/attribution-window.json +4 -4
  268. package/dist/lib/schemas-data/3.0/core/audience-member.json +3 -3
  269. package/dist/lib/schemas-data/3.0/core/audience-selector.json +4 -4
  270. package/dist/lib/schemas-data/3.0/core/brand-id.json +1 -1
  271. package/dist/lib/schemas-data/3.0/core/brand-ref.json +2 -2
  272. package/dist/lib/schemas-data/3.0/core/business-entity.json +2 -2
  273. package/dist/lib/schemas-data/3.0/core/cancellation-policy.json +2 -2
  274. package/dist/lib/schemas-data/3.0/core/catalog-field-mapping.json +2 -2
  275. package/dist/lib/schemas-data/3.0/core/catalog.json +7 -7
  276. package/dist/lib/schemas-data/3.0/core/catchment.json +5 -5
  277. package/dist/lib/schemas-data/3.0/core/collection-distribution.json +2 -2
  278. package/dist/lib/schemas-data/3.0/core/collection-list-ref.json +1 -1
  279. package/dist/lib/schemas-data/3.0/core/collection-selector.json +1 -1
  280. package/dist/lib/schemas-data/3.0/core/collection.json +13 -13
  281. package/dist/lib/schemas-data/3.0/core/content-rating.json +2 -2
  282. package/dist/lib/schemas-data/3.0/core/context.json +1 -1
  283. package/dist/lib/schemas-data/3.0/core/creative-asset.json +6 -52
  284. package/dist/lib/schemas-data/3.0/core/creative-assignment.json +1 -1
  285. package/dist/lib/schemas-data/3.0/core/creative-brief.json +4 -4
  286. package/dist/lib/schemas-data/3.0/core/creative-consumption.json +1 -1
  287. package/dist/lib/schemas-data/3.0/core/creative-filters.json +4 -4
  288. package/dist/lib/schemas-data/3.0/core/creative-item.json +1 -1
  289. package/dist/lib/schemas-data/3.0/core/creative-manifest.json +7 -53
  290. package/dist/lib/schemas-data/3.0/core/creative-policy.json +3 -3
  291. package/dist/lib/schemas-data/3.0/core/creative-variable.json +1 -1
  292. package/dist/lib/schemas-data/3.0/core/creative-variant.json +5 -5
  293. package/dist/lib/schemas-data/3.0/core/data-provider-signal-selector.json +1 -1
  294. package/dist/lib/schemas-data/3.0/core/date-range.json +1 -1
  295. package/dist/lib/schemas-data/3.0/core/datetime-range.json +1 -1
  296. package/dist/lib/schemas-data/3.0/core/daypart-target.json +2 -2
  297. package/dist/lib/schemas-data/3.0/core/deadline-policy.json +1 -1
  298. package/dist/lib/schemas-data/3.0/core/delivery-forecast.json +7 -7
  299. package/dist/lib/schemas-data/3.0/core/delivery-metrics.json +5 -5
  300. package/dist/lib/schemas-data/3.0/core/deployment.json +3 -3
  301. package/dist/lib/schemas-data/3.0/core/destination-item.json +4 -4
  302. package/dist/lib/schemas-data/3.0/core/destination.json +1 -1
  303. package/dist/lib/schemas-data/3.0/core/diagnostic-issue.json +1 -1
  304. package/dist/lib/schemas-data/3.0/core/duration.json +1 -1
  305. package/dist/lib/schemas-data/3.0/core/education-item.json +4 -4
  306. package/dist/lib/schemas-data/3.0/core/error.json +34 -3
  307. package/dist/lib/schemas-data/3.0/core/event-custom-data.json +2 -2
  308. package/dist/lib/schemas-data/3.0/core/event-source-health.json +3 -3
  309. package/dist/lib/schemas-data/3.0/core/event.json +6 -6
  310. package/dist/lib/schemas-data/3.0/core/ext.json +1 -1
  311. package/dist/lib/schemas-data/3.0/core/feature-requirement.json +1 -1
  312. package/dist/lib/schemas-data/3.0/core/flight-item.json +4 -4
  313. package/dist/lib/schemas-data/3.0/core/forecast-point.json +18 -18
  314. package/dist/lib/schemas-data/3.0/core/forecast-range.json +1 -1
  315. package/dist/lib/schemas-data/3.0/core/format-id.json +1 -1
  316. package/dist/lib/schemas-data/3.0/core/format.json +42 -42
  317. package/dist/lib/schemas-data/3.0/core/frequency-cap.json +4 -4
  318. package/dist/lib/schemas-data/3.0/core/generation-credential.json +3 -3
  319. package/dist/lib/schemas-data/3.0/core/geo-breakdown-support.json +3 -3
  320. package/dist/lib/schemas-data/3.0/core/hotel-item.json +4 -4
  321. package/dist/lib/schemas-data/3.0/core/identifier.json +2 -2
  322. package/dist/lib/schemas-data/3.0/core/industry-identifier.json +2 -2
  323. package/dist/lib/schemas-data/3.0/core/insertion-order.json +1 -1
  324. package/dist/lib/schemas-data/3.0/core/installment-deadlines.json +2 -2
  325. package/dist/lib/schemas-data/3.0/core/installment.json +9 -9
  326. package/dist/lib/schemas-data/3.0/core/job-item.json +3 -3
  327. package/dist/lib/schemas-data/3.0/core/limited-series.json +1 -1
  328. package/dist/lib/schemas-data/3.0/core/material-deadline.json +1 -1
  329. package/dist/lib/schemas-data/3.0/core/mcp-webhook-payload.json +5 -5
  330. package/dist/lib/schemas-data/3.0/core/measurement-readiness.json +5 -5
  331. package/dist/lib/schemas-data/3.0/core/measurement-terms.json +3 -3
  332. package/dist/lib/schemas-data/3.0/core/measurement-window.json +1 -1
  333. package/dist/lib/schemas-data/3.0/core/media-buy-features.json +1 -1
  334. package/dist/lib/schemas-data/3.0/core/media-buy.json +7 -7
  335. package/dist/lib/schemas-data/3.0/core/offering-asset-group.json +16 -16
  336. package/dist/lib/schemas-data/3.0/core/offering.json +5 -5
  337. package/dist/lib/schemas-data/3.0/core/optimization-goal.json +6 -6
  338. package/dist/lib/schemas-data/3.0/core/outcome-measurement.json +2 -2
  339. package/dist/lib/schemas-data/3.0/core/overlay.json +1 -1
  340. package/dist/lib/schemas-data/3.0/core/package.json +14 -14
  341. package/dist/lib/schemas-data/3.0/core/pagination-request.json +1 -1
  342. package/dist/lib/schemas-data/3.0/core/pagination-response.json +1 -1
  343. package/dist/lib/schemas-data/3.0/core/performance-feedback.json +3 -3
  344. package/dist/lib/schemas-data/3.0/core/performance-standard.json +4 -4
  345. package/dist/lib/schemas-data/3.0/core/placement-definition.json +5 -5
  346. package/dist/lib/schemas-data/3.0/core/placement.json +2 -2
  347. package/dist/lib/schemas-data/3.0/core/planned-delivery.json +5 -5
  348. package/dist/lib/schemas-data/3.0/core/price.json +1 -1
  349. package/dist/lib/schemas-data/3.0/core/pricing-option.json +10 -10
  350. package/dist/lib/schemas-data/3.0/core/product-allocation.json +4 -4
  351. package/dist/lib/schemas-data/3.0/core/product-filters.json +16 -16
  352. package/dist/lib/schemas-data/3.0/core/product.json +28 -28
  353. package/dist/lib/schemas-data/3.0/core/property-id.json +1 -1
  354. package/dist/lib/schemas-data/3.0/core/property-list-ref.json +1 -1
  355. package/dist/lib/schemas-data/3.0/core/property-tag.json +1 -1
  356. package/dist/lib/schemas-data/3.0/core/property.json +6 -6
  357. package/dist/lib/schemas-data/3.0/core/proposal.json +6 -6
  358. package/dist/lib/schemas-data/3.0/core/protocol-envelope.json +3 -3
  359. package/dist/lib/schemas-data/3.0/core/provenance.json +6 -6
  360. package/dist/lib/schemas-data/3.0/core/publisher-property-selector.json +3 -3
  361. package/dist/lib/schemas-data/3.0/core/push-notification-config.json +2 -2
  362. package/dist/lib/schemas-data/3.0/core/real-estate-item.json +4 -4
  363. package/dist/lib/schemas-data/3.0/core/reference-asset.json +1 -1
  364. package/dist/lib/schemas-data/3.0/core/reporting-capabilities.json +5 -5
  365. package/dist/lib/schemas-data/3.0/core/reporting-webhook.json +3 -3
  366. package/dist/lib/schemas-data/3.0/core/requirements/asset-requirements.json +13 -13
  367. package/dist/lib/schemas-data/3.0/core/requirements/audio-asset-requirements.json +1 -1
  368. package/dist/lib/schemas-data/3.0/core/requirements/catalog-field-binding.json +4 -4
  369. package/dist/lib/schemas-data/3.0/core/requirements/catalog-requirements.json +5 -5
  370. package/dist/lib/schemas-data/3.0/core/requirements/css-asset-requirements.json +1 -1
  371. package/dist/lib/schemas-data/3.0/core/requirements/daast-asset-requirements.json +1 -1
  372. package/dist/lib/schemas-data/3.0/core/requirements/html-asset-requirements.json +1 -1
  373. package/dist/lib/schemas-data/3.0/core/requirements/image-asset-requirements.json +2 -2
  374. package/dist/lib/schemas-data/3.0/core/requirements/javascript-asset-requirements.json +1 -1
  375. package/dist/lib/schemas-data/3.0/core/requirements/markdown-asset-requirements.json +1 -1
  376. package/dist/lib/schemas-data/3.0/core/requirements/offering-asset-constraint.json +4 -4
  377. package/dist/lib/schemas-data/3.0/core/requirements/text-asset-requirements.json +1 -1
  378. package/dist/lib/schemas-data/3.0/core/requirements/url-asset-requirements.json +2 -2
  379. package/dist/lib/schemas-data/3.0/core/requirements/vast-asset-requirements.json +1 -1
  380. package/dist/lib/schemas-data/3.0/core/requirements/video-asset-requirements.json +6 -6
  381. package/dist/lib/schemas-data/3.0/core/requirements/webhook-asset-requirements.json +1 -1
  382. package/dist/lib/schemas-data/3.0/core/response.json +1 -1
  383. package/dist/lib/schemas-data/3.0/core/rights-constraint.json +4 -4
  384. package/dist/lib/schemas-data/3.0/core/seller-agent-ref.json +1 -1
  385. package/dist/lib/schemas-data/3.0/core/signal-definition.json +3 -3
  386. package/dist/lib/schemas-data/3.0/core/signal-filters.json +2 -2
  387. package/dist/lib/schemas-data/3.0/core/signal-id.json +1 -1
  388. package/dist/lib/schemas-data/3.0/core/signal-pricing-option.json +2 -2
  389. package/dist/lib/schemas-data/3.0/core/signal-pricing.json +6 -6
  390. package/dist/lib/schemas-data/3.0/core/signal-targeting.json +4 -4
  391. package/dist/lib/schemas-data/3.0/core/special.json +2 -2
  392. package/dist/lib/schemas-data/3.0/core/start-timing.json +1 -1
  393. package/dist/lib/schemas-data/3.0/core/store-item.json +3 -3
  394. package/dist/lib/schemas-data/3.0/core/talent.json +2 -2
  395. package/dist/lib/schemas-data/3.0/core/targeting.json +20 -20
  396. package/dist/lib/schemas-data/3.0/core/tasks-get-request.json +3 -3
  397. package/dist/lib/schemas-data/3.0/core/tasks-get-response.json +7 -7
  398. package/dist/lib/schemas-data/3.0/core/tasks-list-request.json +11 -11
  399. package/dist/lib/schemas-data/3.0/core/tasks-list-response.json +6 -6
  400. package/dist/lib/schemas-data/3.0/core/user-match.json +3 -3
  401. package/dist/lib/schemas-data/3.0/core/vehicle-item.json +4 -4
  402. package/dist/lib/schemas-data/3.0/core/vendor-pricing-option.json +2 -2
  403. package/dist/lib/schemas-data/3.0/core/x-entity-types.json +1 -1
  404. package/dist/lib/schemas-data/3.0/creative/asset-types/index.json +5 -5
  405. package/dist/lib/schemas-data/3.0/creative/creative-feature-result.json +2 -2
  406. package/dist/lib/schemas-data/3.0/creative/get-creative-delivery-request.json +5 -5
  407. package/dist/lib/schemas-data/3.0/creative/get-creative-delivery-response.json +7 -7
  408. package/dist/lib/schemas-data/3.0/creative/get-creative-features-request.json +5 -5
  409. package/dist/lib/schemas-data/3.0/creative/get-creative-features-response.json +8 -8
  410. package/dist/lib/schemas-data/3.0/creative/list-creative-formats-request.json +11 -11
  411. package/dist/lib/schemas-data/3.0/creative/list-creative-formats-response.json +7 -7
  412. package/dist/lib/schemas-data/3.0/creative/list-creatives-request.json +8 -8
  413. package/dist/lib/schemas-data/3.0/creative/list-creatives-response.json +14 -60
  414. package/dist/lib/schemas-data/3.0/creative/preview-creative-request.json +11 -11
  415. package/dist/lib/schemas-data/3.0/creative/preview-creative-response.json +12 -12
  416. package/dist/lib/schemas-data/3.0/creative/preview-render.json +1 -1
  417. package/dist/lib/schemas-data/3.0/creative/sync-creatives-async-response-input-required.json +3 -3
  418. package/dist/lib/schemas-data/3.0/creative/sync-creatives-async-response-submitted.json +3 -3
  419. package/dist/lib/schemas-data/3.0/creative/sync-creatives-async-response-working.json +3 -3
  420. package/dist/lib/schemas-data/3.0/creative/sync-creatives-request.json +7 -7
  421. package/dist/lib/schemas-data/3.0/creative/sync-creatives-response.json +13 -13
  422. package/dist/lib/schemas-data/3.0/enums/account-scope.json +1 -1
  423. package/dist/lib/schemas-data/3.0/enums/account-status.json +1 -1
  424. package/dist/lib/schemas-data/3.0/enums/action-source.json +1 -1
  425. package/dist/lib/schemas-data/3.0/enums/adcp-protocol.json +1 -1
  426. package/dist/lib/schemas-data/3.0/enums/adjustment-kind.json +1 -1
  427. package/dist/lib/schemas-data/3.0/enums/advertiser-industry.json +1 -1
  428. package/dist/lib/schemas-data/3.0/enums/age-verification-method.json +1 -1
  429. package/dist/lib/schemas-data/3.0/enums/assessment-status.json +1 -1
  430. package/dist/lib/schemas-data/3.0/enums/asset-content-type.json +1 -1
  431. package/dist/lib/schemas-data/3.0/enums/attribution-model.json +1 -1
  432. package/dist/lib/schemas-data/3.0/enums/audience-source.json +1 -1
  433. package/dist/lib/schemas-data/3.0/enums/audience-status.json +1 -1
  434. package/dist/lib/schemas-data/3.0/enums/audio-channel-layout.json +1 -1
  435. package/dist/lib/schemas-data/3.0/enums/auth-scheme.json +1 -1
  436. package/dist/lib/schemas-data/3.0/enums/available-metric.json +1 -1
  437. package/dist/lib/schemas-data/3.0/enums/billing-party.json +1 -1
  438. package/dist/lib/schemas-data/3.0/enums/binary-verdict.json +1 -1
  439. package/dist/lib/schemas-data/3.0/enums/brand-agent-type.json +1 -1
  440. package/dist/lib/schemas-data/3.0/enums/canceled-by.json +1 -1
  441. package/dist/lib/schemas-data/3.0/enums/catalog-action.json +1 -1
  442. package/dist/lib/schemas-data/3.0/enums/catalog-item-status.json +1 -1
  443. package/dist/lib/schemas-data/3.0/enums/catalog-type.json +1 -1
  444. package/dist/lib/schemas-data/3.0/enums/channels.json +1 -1
  445. package/dist/lib/schemas-data/3.0/enums/cloud-storage-protocol.json +1 -1
  446. package/dist/lib/schemas-data/3.0/enums/co-branding-requirement.json +1 -1
  447. package/dist/lib/schemas-data/3.0/enums/collection-cadence.json +1 -1
  448. package/dist/lib/schemas-data/3.0/enums/collection-kind.json +1 -1
  449. package/dist/lib/schemas-data/3.0/enums/collection-relationship.json +1 -1
  450. package/dist/lib/schemas-data/3.0/enums/collection-status.json +1 -1
  451. package/dist/lib/schemas-data/3.0/enums/consent-basis.json +1 -1
  452. package/dist/lib/schemas-data/3.0/enums/content-id-type.json +1 -1
  453. package/dist/lib/schemas-data/3.0/enums/content-rating-system.json +1 -1
  454. package/dist/lib/schemas-data/3.0/enums/creative-action.json +1 -1
  455. package/dist/lib/schemas-data/3.0/enums/creative-agent-capability.json +1 -1
  456. package/dist/lib/schemas-data/3.0/enums/creative-approval-status.json +1 -1
  457. package/dist/lib/schemas-data/3.0/enums/creative-identifier-type.json +1 -1
  458. package/dist/lib/schemas-data/3.0/enums/creative-quality.json +1 -1
  459. package/dist/lib/schemas-data/3.0/enums/creative-sort-field.json +1 -1
  460. package/dist/lib/schemas-data/3.0/enums/creative-status.json +1 -1
  461. package/dist/lib/schemas-data/3.0/enums/daast-tracking-event.json +1 -1
  462. package/dist/lib/schemas-data/3.0/enums/daast-version.json +1 -1
  463. package/dist/lib/schemas-data/3.0/enums/day-of-week.json +1 -1
  464. package/dist/lib/schemas-data/3.0/enums/delegation-authority.json +1 -1
  465. package/dist/lib/schemas-data/3.0/enums/delivery-type.json +1 -1
  466. package/dist/lib/schemas-data/3.0/enums/demographic-system.json +1 -1
  467. package/dist/lib/schemas-data/3.0/enums/derivative-type.json +1 -1
  468. package/dist/lib/schemas-data/3.0/enums/device-platform.json +1 -1
  469. package/dist/lib/schemas-data/3.0/enums/device-type.json +1 -1
  470. package/dist/lib/schemas-data/3.0/enums/digital-source-type.json +1 -1
  471. package/dist/lib/schemas-data/3.0/enums/dimension-unit.json +1 -1
  472. package/dist/lib/schemas-data/3.0/enums/disclosure-persistence.json +1 -1
  473. package/dist/lib/schemas-data/3.0/enums/disclosure-position.json +1 -1
  474. package/dist/lib/schemas-data/3.0/enums/distance-unit.json +1 -1
  475. package/dist/lib/schemas-data/3.0/enums/distribution-identifier-type.json +1 -1
  476. package/dist/lib/schemas-data/3.0/enums/error-code.json +185 -2
  477. package/dist/lib/schemas-data/3.0/enums/escalation-severity.json +1 -1
  478. package/dist/lib/schemas-data/3.0/enums/event-type.json +1 -1
  479. package/dist/lib/schemas-data/3.0/enums/exclusivity.json +1 -1
  480. package/dist/lib/schemas-data/3.0/enums/feature-check-status.json +1 -1
  481. package/dist/lib/schemas-data/3.0/enums/feed-format.json +1 -1
  482. package/dist/lib/schemas-data/3.0/enums/feedback-source.json +1 -1
  483. package/dist/lib/schemas-data/3.0/enums/forecast-method.json +1 -1
  484. package/dist/lib/schemas-data/3.0/enums/forecast-range-unit.json +1 -1
  485. package/dist/lib/schemas-data/3.0/enums/forecastable-metric.json +1 -1
  486. package/dist/lib/schemas-data/3.0/enums/format-id-parameter.json +1 -1
  487. package/dist/lib/schemas-data/3.0/enums/frame-rate-type.json +1 -1
  488. package/dist/lib/schemas-data/3.0/enums/frequency-cap-scope.json +1 -1
  489. package/dist/lib/schemas-data/3.0/enums/genre-taxonomy.json +1 -1
  490. package/dist/lib/schemas-data/3.0/enums/geo-level.json +1 -1
  491. package/dist/lib/schemas-data/3.0/enums/gop-type.json +1 -1
  492. package/dist/lib/schemas-data/3.0/enums/governance-decision.json +1 -1
  493. package/dist/lib/schemas-data/3.0/enums/governance-domain.json +1 -1
  494. package/dist/lib/schemas-data/3.0/enums/governance-mode.json +1 -1
  495. package/dist/lib/schemas-data/3.0/enums/governance-phase.json +1 -1
  496. package/dist/lib/schemas-data/3.0/enums/history-entry-type.json +1 -1
  497. package/dist/lib/schemas-data/3.0/enums/http-method.json +1 -1
  498. package/dist/lib/schemas-data/3.0/enums/identifier-types.json +1 -1
  499. package/dist/lib/schemas-data/3.0/enums/installment-status.json +1 -1
  500. package/dist/lib/schemas-data/3.0/enums/javascript-module-type.json +1 -1
  501. package/dist/lib/schemas-data/3.0/enums/landing-page-requirement.json +1 -1
  502. package/dist/lib/schemas-data/3.0/enums/makegood-remedy.json +1 -1
  503. package/dist/lib/schemas-data/3.0/enums/markdown-flavor.json +1 -1
  504. package/dist/lib/schemas-data/3.0/enums/match-id-type.json +1 -1
  505. package/dist/lib/schemas-data/3.0/enums/match-type.json +1 -1
  506. package/dist/lib/schemas-data/3.0/enums/media-buy-status.json +1 -1
  507. package/dist/lib/schemas-data/3.0/enums/media-buy-valid-action.json +1 -1
  508. package/dist/lib/schemas-data/3.0/enums/metric-type.json +1 -1
  509. package/dist/lib/schemas-data/3.0/enums/metro-system.json +1 -1
  510. package/dist/lib/schemas-data/3.0/enums/moov-atom-position.json +1 -1
  511. package/dist/lib/schemas-data/3.0/enums/notification-type.json +1 -1
  512. package/dist/lib/schemas-data/3.0/enums/outcome-type.json +1 -1
  513. package/dist/lib/schemas-data/3.0/enums/pacing.json +1 -1
  514. package/dist/lib/schemas-data/3.0/enums/payment-terms.json +1 -1
  515. package/dist/lib/schemas-data/3.0/enums/performance-standard-metric.json +1 -1
  516. package/dist/lib/schemas-data/3.0/enums/policy-category.json +1 -1
  517. package/dist/lib/schemas-data/3.0/enums/policy-enforcement.json +1 -1
  518. package/dist/lib/schemas-data/3.0/enums/postal-system.json +1 -1
  519. package/dist/lib/schemas-data/3.0/enums/preview-output-format.json +1 -1
  520. package/dist/lib/schemas-data/3.0/enums/pricing-model.json +1 -1
  521. package/dist/lib/schemas-data/3.0/enums/production-quality.json +1 -1
  522. package/dist/lib/schemas-data/3.0/enums/property-type.json +1 -1
  523. package/dist/lib/schemas-data/3.0/enums/proposal-status.json +1 -1
  524. package/dist/lib/schemas-data/3.0/enums/publisher-identifier-types.json +1 -1
  525. package/dist/lib/schemas-data/3.0/enums/purchase-type.json +1 -1
  526. package/dist/lib/schemas-data/3.0/enums/reach-unit.json +1 -1
  527. package/dist/lib/schemas-data/3.0/enums/reporting-frequency.json +1 -1
  528. package/dist/lib/schemas-data/3.0/enums/response-type.json +1 -1
  529. package/dist/lib/schemas-data/3.0/enums/restricted-attribute.json +1 -1
  530. package/dist/lib/schemas-data/3.0/enums/right-type.json +1 -1
  531. package/dist/lib/schemas-data/3.0/enums/right-use.json +1 -1
  532. package/dist/lib/schemas-data/3.0/enums/rights-billing-period.json +1 -1
  533. package/dist/lib/schemas-data/3.0/enums/scan-type.json +1 -1
  534. package/dist/lib/schemas-data/3.0/enums/si-session-status.json +1 -1
  535. package/dist/lib/schemas-data/3.0/enums/signal-catalog-type.json +1 -1
  536. package/dist/lib/schemas-data/3.0/enums/signal-source.json +1 -1
  537. package/dist/lib/schemas-data/3.0/enums/signal-value-type.json +1 -1
  538. package/dist/lib/schemas-data/3.0/enums/snapshot-unavailable-reason.json +1 -1
  539. package/dist/lib/schemas-data/3.0/enums/sort-direction.json +1 -1
  540. package/dist/lib/schemas-data/3.0/enums/sort-metric.json +1 -1
  541. package/dist/lib/schemas-data/3.0/enums/special-category.json +1 -1
  542. package/dist/lib/schemas-data/3.0/enums/specialism.json +1 -1
  543. package/dist/lib/schemas-data/3.0/enums/talent-role.json +1 -1
  544. package/dist/lib/schemas-data/3.0/enums/task-status.json +1 -1
  545. package/dist/lib/schemas-data/3.0/enums/task-type.json +1 -1
  546. package/dist/lib/schemas-data/3.0/enums/transport-mode.json +1 -1
  547. package/dist/lib/schemas-data/3.0/enums/travel-time-unit.json +1 -1
  548. package/dist/lib/schemas-data/3.0/enums/uid-type.json +1 -1
  549. package/dist/lib/schemas-data/3.0/enums/universal-macro.json +1 -1
  550. package/dist/lib/schemas-data/3.0/enums/update-frequency.json +1 -1
  551. package/dist/lib/schemas-data/3.0/enums/url-asset-type.json +1 -1
  552. package/dist/lib/schemas-data/3.0/enums/validation-mode.json +1 -1
  553. package/dist/lib/schemas-data/3.0/enums/vast-tracking-event.json +1 -1
  554. package/dist/lib/schemas-data/3.0/enums/vast-version.json +1 -1
  555. package/dist/lib/schemas-data/3.0/enums/viewability-standard.json +1 -1
  556. package/dist/lib/schemas-data/3.0/enums/wcag-level.json +1 -1
  557. package/dist/lib/schemas-data/3.0/enums/webhook-response-type.json +1 -1
  558. package/dist/lib/schemas-data/3.0/enums/webhook-security-method.json +1 -1
  559. package/dist/lib/schemas-data/3.0/error-details/account-setup-required.json +2 -2
  560. package/dist/lib/schemas-data/3.0/error-details/audience-too-small.json +2 -2
  561. package/dist/lib/schemas-data/3.0/error-details/budget-too-low.json +2 -2
  562. package/dist/lib/schemas-data/3.0/error-details/conflict.json +2 -2
  563. package/dist/lib/schemas-data/3.0/error-details/creative-rejected.json +2 -2
  564. package/dist/lib/schemas-data/3.0/error-details/policy-violation.json +2 -2
  565. package/dist/lib/schemas-data/3.0/error-details/rate-limited.json +1 -1
  566. package/dist/lib/schemas-data/3.0/error-details/vendor-error-codes.json +1 -1
  567. package/dist/lib/schemas-data/3.0/extensions/extension-meta.json +1 -1
  568. package/dist/lib/schemas-data/3.0/extensions/index.json +2 -2
  569. package/dist/lib/schemas-data/3.0/governance/attribute-definition.json +1 -1
  570. package/dist/lib/schemas-data/3.0/governance/audience-constraints.json +3 -3
  571. package/dist/lib/schemas-data/3.0/governance/check-governance-request.json +7 -7
  572. package/dist/lib/schemas-data/3.0/governance/check-governance-response.json +6 -6
  573. package/dist/lib/schemas-data/3.0/governance/get-plan-audit-logs-request.json +4 -4
  574. package/dist/lib/schemas-data/3.0/governance/get-plan-audit-logs-response.json +9 -9
  575. package/dist/lib/schemas-data/3.0/governance/policy-category-definition.json +2 -2
  576. package/dist/lib/schemas-data/3.0/governance/policy-entry.json +6 -6
  577. package/dist/lib/schemas-data/3.0/governance/policy-ref.json +1 -1
  578. package/dist/lib/schemas-data/3.0/governance/report-plan-outcome-request.json +6 -6
  579. package/dist/lib/schemas-data/3.0/governance/report-plan-outcome-response.json +4 -4
  580. package/dist/lib/schemas-data/3.0/governance/sync-plans-request.json +13 -13
  581. package/dist/lib/schemas-data/3.0/governance/sync-plans-response.json +4 -4
  582. package/dist/lib/schemas-data/3.0/index.json +364 -364
  583. package/dist/lib/schemas-data/3.0/manifest.json +1190 -0
  584. package/dist/lib/schemas-data/3.0/manifest.schema.json +202 -0
  585. package/dist/lib/schemas-data/3.0/media-buy/build-creative-async-response-input-required.json +4 -4
  586. package/dist/lib/schemas-data/3.0/media-buy/build-creative-async-response-submitted.json +3 -3
  587. package/dist/lib/schemas-data/3.0/media-buy/build-creative-async-response-working.json +3 -3
  588. package/dist/lib/schemas-data/3.0/media-buy/build-creative-request.json +11 -11
  589. package/dist/lib/schemas-data/3.0/media-buy/build-creative-response.json +17 -17
  590. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-async-response-input-required.json +4 -4
  591. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-async-response-submitted.json +3 -3
  592. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-async-response-working.json +3 -3
  593. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-request.json +12 -12
  594. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-response.json +15 -15
  595. package/dist/lib/schemas-data/3.0/media-buy/get-media-buy-delivery-request.json +17 -17
  596. package/dist/lib/schemas-data/3.0/media-buy/get-media-buy-delivery-response.json +24 -24
  597. package/dist/lib/schemas-data/3.0/media-buy/get-media-buys-request.json +7 -7
  598. package/dist/lib/schemas-data/3.0/media-buy/get-media-buys-response.json +19 -19
  599. package/dist/lib/schemas-data/3.0/media-buy/get-products-async-response-input-required.json +4 -4
  600. package/dist/lib/schemas-data/3.0/media-buy/get-products-async-response-submitted.json +3 -3
  601. package/dist/lib/schemas-data/3.0/media-buy/get-products-async-response-working.json +3 -3
  602. package/dist/lib/schemas-data/3.0/media-buy/get-products-request.json +11 -11
  603. package/dist/lib/schemas-data/3.0/media-buy/get-products-response.json +8 -8
  604. package/dist/lib/schemas-data/3.0/media-buy/list-creative-formats-request.json +11 -11
  605. package/dist/lib/schemas-data/3.0/media-buy/list-creative-formats-response.json +7 -7
  606. package/dist/lib/schemas-data/3.0/media-buy/log-event-request.json +4 -4
  607. package/dist/lib/schemas-data/3.0/media-buy/log-event-response.json +6 -6
  608. package/dist/lib/schemas-data/3.0/media-buy/package-request.json +12 -12
  609. package/dist/lib/schemas-data/3.0/media-buy/package-update.json +13 -13
  610. package/dist/lib/schemas-data/3.0/media-buy/provide-performance-feedback-request.json +6 -6
  611. package/dist/lib/schemas-data/3.0/media-buy/provide-performance-feedback-response.json +6 -6
  612. package/dist/lib/schemas-data/3.0/media-buy/sync-audiences-request.json +7 -7
  613. package/dist/lib/schemas-data/3.0/media-buy/sync-audiences-response.json +9 -9
  614. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  615. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-async-response-submitted.json +3 -3
  616. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-async-response-working.json +3 -3
  617. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-request.json +7 -7
  618. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-response.json +9 -9
  619. package/dist/lib/schemas-data/3.0/media-buy/sync-event-sources-request.json +5 -5
  620. package/dist/lib/schemas-data/3.0/media-buy/sync-event-sources-response.json +10 -10
  621. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-async-response-input-required.json +3 -3
  622. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-async-response-submitted.json +3 -3
  623. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-async-response-working.json +3 -3
  624. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-request.json +10 -10
  625. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-response.json +10 -10
  626. package/dist/lib/schemas-data/3.0/pricing-options/cpa-option.json +4 -4
  627. package/dist/lib/schemas-data/3.0/pricing-options/cpc-option.json +4 -4
  628. package/dist/lib/schemas-data/3.0/pricing-options/cpcv-option.json +4 -4
  629. package/dist/lib/schemas-data/3.0/pricing-options/cpm-option.json +4 -4
  630. package/dist/lib/schemas-data/3.0/pricing-options/cpp-option.json +5 -5
  631. package/dist/lib/schemas-data/3.0/pricing-options/cpv-option.json +4 -4
  632. package/dist/lib/schemas-data/3.0/pricing-options/flat-rate-option.json +4 -4
  633. package/dist/lib/schemas-data/3.0/pricing-options/price-breakdown.json +2 -2
  634. package/dist/lib/schemas-data/3.0/pricing-options/price-guidance.json +1 -1
  635. package/dist/lib/schemas-data/3.0/pricing-options/time-option.json +4 -4
  636. package/dist/lib/schemas-data/3.0/pricing-options/vcpm-option.json +4 -4
  637. package/dist/lib/schemas-data/3.0/property/authorization-result.json +1 -1
  638. package/dist/lib/schemas-data/3.0/property/base-property-source.json +4 -4
  639. package/dist/lib/schemas-data/3.0/property/create-property-list-request.json +7 -7
  640. package/dist/lib/schemas-data/3.0/property/create-property-list-response.json +4 -4
  641. package/dist/lib/schemas-data/3.0/property/delete-property-list-request.json +4 -4
  642. package/dist/lib/schemas-data/3.0/property/delete-property-list-response.json +3 -3
  643. package/dist/lib/schemas-data/3.0/property/delivery-record.json +3 -3
  644. package/dist/lib/schemas-data/3.0/property/get-property-list-request.json +4 -4
  645. package/dist/lib/schemas-data/3.0/property/get-property-list-response.json +7 -7
  646. package/dist/lib/schemas-data/3.0/property/list-property-lists-request.json +5 -5
  647. package/dist/lib/schemas-data/3.0/property/list-property-lists-response.json +5 -5
  648. package/dist/lib/schemas-data/3.0/property/property-error.json +2 -2
  649. package/dist/lib/schemas-data/3.0/property/property-feature-definition.json +2 -2
  650. package/dist/lib/schemas-data/3.0/property/property-feature-result.json +4 -4
  651. package/dist/lib/schemas-data/3.0/property/property-feature-value.json +2 -2
  652. package/dist/lib/schemas-data/3.0/property/property-feature.json +1 -1
  653. package/dist/lib/schemas-data/3.0/property/property-list-changed-webhook.json +2 -2
  654. package/dist/lib/schemas-data/3.0/property/property-list-filters.json +5 -5
  655. package/dist/lib/schemas-data/3.0/property/property-list.json +6 -6
  656. package/dist/lib/schemas-data/3.0/property/update-property-list-request.json +7 -7
  657. package/dist/lib/schemas-data/3.0/property/update-property-list-response.json +4 -4
  658. package/dist/lib/schemas-data/3.0/property/validate-property-delivery-request.json +5 -5
  659. package/dist/lib/schemas-data/3.0/property/validate-property-delivery-response.json +4 -4
  660. package/dist/lib/schemas-data/3.0/property/validation-result.json +5 -5
  661. package/dist/lib/schemas-data/3.0/protocol/get-adcp-capabilities-request.json +3 -3
  662. package/dist/lib/schemas-data/3.0/protocol/get-adcp-capabilities-response.json +26 -26
  663. package/dist/lib/schemas-data/3.0/signals/activate-signal-request.json +5 -5
  664. package/dist/lib/schemas-data/3.0/signals/activate-signal-response.json +7 -7
  665. package/dist/lib/schemas-data/3.0/signals/get-signals-request.json +8 -8
  666. package/dist/lib/schemas-data/3.0/signals/get-signals-response.json +10 -10
  667. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-capabilities.json +1 -1
  668. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-get-offering-request.json +3 -3
  669. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-get-offering-response.json +4 -4
  670. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-identity.json +1 -1
  671. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-initiate-session-request.json +5 -5
  672. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-initiate-session-response.json +7 -7
  673. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-send-message-request.json +3 -3
  674. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-send-message-response.json +7 -7
  675. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-terminate-session-request.json +3 -3
  676. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-terminate-session-response.json +5 -5
  677. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-ui-element.json +1 -1
  678. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  679. package/dist/lib/server/account-mode.d.ts +113 -0
  680. package/dist/lib/server/account-mode.d.ts.map +1 -0
  681. package/dist/lib/server/account-mode.js +125 -0
  682. package/dist/lib/server/account-mode.js.map +1 -0
  683. package/dist/lib/server/adcp-server.d.ts +21 -0
  684. package/dist/lib/server/adcp-server.d.ts.map +1 -1
  685. package/dist/lib/server/adcp-server.js +63 -1
  686. package/dist/lib/server/adcp-server.js.map +1 -1
  687. package/dist/lib/server/auth-signature.d.ts.map +1 -1
  688. package/dist/lib/server/auth-signature.js +21 -0
  689. package/dist/lib/server/auth-signature.js.map +1 -1
  690. package/dist/lib/server/auth.d.ts +59 -0
  691. package/dist/lib/server/auth.d.ts.map +1 -1
  692. package/dist/lib/server/auth.js +71 -3
  693. package/dist/lib/server/auth.js.map +1 -1
  694. package/dist/lib/server/create-adcp-server.d.ts +220 -21
  695. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  696. package/dist/lib/server/create-adcp-server.js +349 -14
  697. package/dist/lib/server/create-adcp-server.js.map +1 -1
  698. package/dist/lib/server/ctx-metadata/store.d.ts +1 -1
  699. package/dist/lib/server/ctx-metadata/store.d.ts.map +1 -1
  700. package/dist/lib/server/ctx-metadata/store.js +1 -0
  701. package/dist/lib/server/ctx-metadata/store.js.map +1 -1
  702. package/dist/lib/server/decisioning/account.d.ts +345 -21
  703. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  704. package/dist/lib/server/decisioning/account.js +150 -4
  705. package/dist/lib/server/decisioning/account.js.map +1 -1
  706. package/dist/lib/server/decisioning/admin-router.d.ts.map +1 -1
  707. package/dist/lib/server/decisioning/admin-router.js +5 -1
  708. package/dist/lib/server/decisioning/admin-router.js.map +1 -1
  709. package/dist/lib/server/decisioning/buyer-agent.d.ts +498 -0
  710. package/dist/lib/server/decisioning/buyer-agent.d.ts.map +1 -0
  711. package/dist/lib/server/decisioning/buyer-agent.js +382 -0
  712. package/dist/lib/server/decisioning/buyer-agent.js.map +1 -0
  713. package/dist/lib/server/decisioning/capabilities.d.ts +32 -5
  714. package/dist/lib/server/decisioning/capabilities.d.ts.map +1 -1
  715. package/dist/lib/server/decisioning/compose.d.ts +124 -0
  716. package/dist/lib/server/decisioning/compose.d.ts.map +1 -0
  717. package/dist/lib/server/decisioning/compose.js +48 -0
  718. package/dist/lib/server/decisioning/compose.js.map +1 -0
  719. package/dist/lib/server/decisioning/context.d.ts +11 -0
  720. package/dist/lib/server/decisioning/context.d.ts.map +1 -1
  721. package/dist/lib/server/decisioning/index.d.ts +13 -3
  722. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  723. package/dist/lib/server/decisioning/index.js +46 -2
  724. package/dist/lib/server/decisioning/index.js.map +1 -1
  725. package/dist/lib/server/decisioning/platform-helpers.d.ts +287 -0
  726. package/dist/lib/server/decisioning/platform-helpers.d.ts.map +1 -0
  727. package/dist/lib/server/decisioning/platform-helpers.js +336 -0
  728. package/dist/lib/server/decisioning/platform-helpers.js.map +1 -0
  729. package/dist/lib/server/decisioning/platform.d.ts +141 -20
  730. package/dist/lib/server/decisioning/platform.d.ts.map +1 -1
  731. package/dist/lib/server/decisioning/platform.js.map +1 -1
  732. package/dist/lib/server/decisioning/resolve-presets.d.ts +129 -0
  733. package/dist/lib/server/decisioning/resolve-presets.d.ts.map +1 -0
  734. package/dist/lib/server/decisioning/resolve-presets.js +142 -0
  735. package/dist/lib/server/decisioning/resolve-presets.js.map +1 -0
  736. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.d.ts +8 -0
  737. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.d.ts.map +1 -0
  738. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js +101 -0
  739. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js.map +1 -0
  740. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +91 -8
  741. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  742. package/dist/lib/server/decisioning/runtime/from-platform.js +928 -146
  743. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  744. package/dist/lib/server/decisioning/runtime/observed-modes.d.ts +40 -0
  745. package/dist/lib/server/decisioning/runtime/observed-modes.d.ts.map +1 -0
  746. package/dist/lib/server/decisioning/runtime/observed-modes.js +82 -0
  747. package/dist/lib/server/decisioning/runtime/observed-modes.js.map +1 -0
  748. package/dist/lib/server/decisioning/runtime/protocol-for-tool.js +2 -2
  749. package/dist/lib/server/decisioning/runtime/protocol-for-tool.js.map +1 -1
  750. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  751. package/dist/lib/server/decisioning/runtime/to-context.js +1 -0
  752. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  753. package/dist/lib/server/decisioning/runtime/validate-platform.d.ts.map +1 -1
  754. package/dist/lib/server/decisioning/runtime/validate-platform.js +40 -4
  755. package/dist/lib/server/decisioning/runtime/validate-platform.js.map +1 -1
  756. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts +83 -6
  757. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts.map +1 -1
  758. package/dist/lib/server/decisioning/specialisms/brand-rights.js +12 -5
  759. package/dist/lib/server/decisioning/specialisms/brand-rights.js.map +1 -1
  760. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +41 -4
  761. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -1
  762. package/dist/lib/server/decisioning/specialisms/creative.d.ts +47 -3
  763. package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -1
  764. package/dist/lib/server/decisioning/specialisms/sales.d.ts +115 -9
  765. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  766. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.d.ts +125 -0
  767. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.d.ts.map +1 -0
  768. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.js +52 -0
  769. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.js.map +1 -0
  770. package/dist/lib/server/decisioning/tenant-registry.d.ts +16 -0
  771. package/dist/lib/server/decisioning/tenant-registry.d.ts.map +1 -1
  772. package/dist/lib/server/decisioning/tenant-registry.js +8 -3
  773. package/dist/lib/server/decisioning/tenant-registry.js.map +1 -1
  774. package/dist/lib/server/decisioning/tenant-store.d.ts +200 -0
  775. package/dist/lib/server/decisioning/tenant-store.d.ts.map +1 -0
  776. package/dist/lib/server/decisioning/tenant-store.js +182 -0
  777. package/dist/lib/server/decisioning/tenant-store.js.map +1 -0
  778. package/dist/lib/server/decisioning/validate-specialisms.d.ts +66 -0
  779. package/dist/lib/server/decisioning/validate-specialisms.d.ts.map +1 -0
  780. package/dist/lib/server/decisioning/validate-specialisms.js +119 -0
  781. package/dist/lib/server/decisioning/validate-specialisms.js.map +1 -0
  782. package/dist/lib/server/index.d.ts +14 -2
  783. package/dist/lib/server/index.d.ts.map +1 -1
  784. package/dist/lib/server/index.js +41 -3
  785. package/dist/lib/server/index.js.map +1 -1
  786. package/dist/lib/server/media-buy-store.d.ts +126 -0
  787. package/dist/lib/server/media-buy-store.d.ts.map +1 -0
  788. package/dist/lib/server/media-buy-store.js +171 -0
  789. package/dist/lib/server/media-buy-store.js.map +1 -0
  790. package/dist/lib/server/redact.d.ts +52 -0
  791. package/dist/lib/server/redact.d.ts.map +1 -0
  792. package/dist/lib/server/redact.js +86 -0
  793. package/dist/lib/server/redact.js.map +1 -0
  794. package/dist/lib/server/responses.d.ts +60 -1
  795. package/dist/lib/server/responses.d.ts.map +1 -1
  796. package/dist/lib/server/responses.js +110 -1
  797. package/dist/lib/server/responses.js.map +1 -1
  798. package/dist/lib/server/serve.d.ts.map +1 -1
  799. package/dist/lib/server/serve.js +53 -1
  800. package/dist/lib/server/serve.js.map +1 -1
  801. package/dist/lib/server/state-machine.d.ts +80 -0
  802. package/dist/lib/server/state-machine.d.ts.map +1 -0
  803. package/dist/lib/server/state-machine.js +125 -0
  804. package/dist/lib/server/state-machine.js.map +1 -0
  805. package/dist/lib/server/test-controller.d.ts +51 -0
  806. package/dist/lib/server/test-controller.d.ts.map +1 -1
  807. package/dist/lib/server/test-controller.js +112 -30
  808. package/dist/lib/server/test-controller.js.map +1 -1
  809. package/dist/lib/server/upstream-helpers.d.ts +182 -0
  810. package/dist/lib/server/upstream-helpers.d.ts.map +1 -0
  811. package/dist/lib/server/upstream-helpers.js +140 -0
  812. package/dist/lib/server/upstream-helpers.js.map +1 -0
  813. package/dist/lib/signing/agent-resolver/canonicalize.d.ts +44 -0
  814. package/dist/lib/signing/agent-resolver/canonicalize.d.ts.map +1 -0
  815. package/dist/lib/signing/agent-resolver/canonicalize.js +85 -0
  816. package/dist/lib/signing/agent-resolver/canonicalize.js.map +1 -0
  817. package/dist/lib/signing/agent-resolver/capabilities-types.d.ts +54 -0
  818. package/dist/lib/signing/agent-resolver/capabilities-types.d.ts.map +1 -0
  819. package/dist/lib/signing/agent-resolver/capabilities-types.js +49 -0
  820. package/dist/lib/signing/agent-resolver/capabilities-types.js.map +1 -0
  821. package/dist/lib/signing/agent-resolver/consistency.d.ts +84 -0
  822. package/dist/lib/signing/agent-resolver/consistency.d.ts.map +1 -0
  823. package/dist/lib/signing/agent-resolver/consistency.js +121 -0
  824. package/dist/lib/signing/agent-resolver/consistency.js.map +1 -0
  825. package/dist/lib/signing/agent-resolver/errors.d.ts +68 -0
  826. package/dist/lib/signing/agent-resolver/errors.d.ts.map +1 -0
  827. package/dist/lib/signing/agent-resolver/errors.js +45 -0
  828. package/dist/lib/signing/agent-resolver/errors.js.map +1 -0
  829. package/dist/lib/signing/agent-resolver/etld.d.ts +25 -0
  830. package/dist/lib/signing/agent-resolver/etld.d.ts.map +1 -0
  831. package/dist/lib/signing/agent-resolver/etld.js +75 -0
  832. package/dist/lib/signing/agent-resolver/etld.js.map +1 -0
  833. package/dist/lib/signing/agent-resolver/fetch-helpers.d.ts +41 -0
  834. package/dist/lib/signing/agent-resolver/fetch-helpers.d.ts.map +1 -0
  835. package/dist/lib/signing/agent-resolver/fetch-helpers.js +85 -0
  836. package/dist/lib/signing/agent-resolver/fetch-helpers.js.map +1 -0
  837. package/dist/lib/signing/agent-resolver/index.d.ts +26 -0
  838. package/dist/lib/signing/agent-resolver/index.d.ts.map +1 -0
  839. package/dist/lib/signing/agent-resolver/index.js +33 -0
  840. package/dist/lib/signing/agent-resolver/index.js.map +1 -0
  841. package/dist/lib/signing/agent-resolver/jwks-set.d.ts +76 -0
  842. package/dist/lib/signing/agent-resolver/jwks-set.d.ts.map +1 -0
  843. package/dist/lib/signing/agent-resolver/jwks-set.js +124 -0
  844. package/dist/lib/signing/agent-resolver/jwks-set.js.map +1 -0
  845. package/dist/lib/signing/agent-resolver/resolve-agent.d.ts +123 -0
  846. package/dist/lib/signing/agent-resolver/resolve-agent.d.ts.map +1 -0
  847. package/dist/lib/signing/agent-resolver/resolve-agent.js +398 -0
  848. package/dist/lib/signing/agent-resolver/resolve-agent.js.map +1 -0
  849. package/dist/lib/signing/agent-resolver/select-agent.d.ts +54 -0
  850. package/dist/lib/signing/agent-resolver/select-agent.d.ts.map +1 -0
  851. package/dist/lib/signing/agent-resolver/select-agent.js +94 -0
  852. package/dist/lib/signing/agent-resolver/select-agent.js.map +1 -0
  853. package/dist/lib/signing/agent-resolver/strict-json.d.ts +44 -0
  854. package/dist/lib/signing/agent-resolver/strict-json.d.ts.map +1 -0
  855. package/dist/lib/signing/agent-resolver/strict-json.js +219 -0
  856. package/dist/lib/signing/agent-resolver/strict-json.js.map +1 -0
  857. package/dist/lib/signing/capability-priming.d.ts.map +1 -1
  858. package/dist/lib/signing/capability-priming.js +2 -55
  859. package/dist/lib/signing/capability-priming.js.map +1 -1
  860. package/dist/lib/signing/protocol-response.d.ts +18 -0
  861. package/dist/lib/signing/protocol-response.d.ts.map +1 -0
  862. package/dist/lib/signing/protocol-response.js +69 -0
  863. package/dist/lib/signing/protocol-response.js.map +1 -0
  864. package/dist/lib/signing/server.d.ts +1 -0
  865. package/dist/lib/signing/server.d.ts.map +1 -1
  866. package/dist/lib/signing/server.js +10 -1
  867. package/dist/lib/signing/server.js.map +1 -1
  868. package/dist/lib/signing/testing.d.ts +64 -0
  869. package/dist/lib/signing/testing.d.ts.map +1 -1
  870. package/dist/lib/signing/testing.js +100 -5
  871. package/dist/lib/signing/testing.js.map +1 -1
  872. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  873. package/dist/lib/testing/compliance/comply.js +2 -0
  874. package/dist/lib/testing/compliance/comply.js.map +1 -1
  875. package/dist/lib/testing/compliance/types.d.ts +8 -0
  876. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  877. package/dist/lib/testing/comply-controller.d.ts +23 -2
  878. package/dist/lib/testing/comply-controller.d.ts.map +1 -1
  879. package/dist/lib/testing/comply-controller.js +19 -2
  880. package/dist/lib/testing/comply-controller.js.map +1 -1
  881. package/dist/lib/testing/index.d.ts +1 -1
  882. package/dist/lib/testing/index.d.ts.map +1 -1
  883. package/dist/lib/testing/index.js.map +1 -1
  884. package/dist/lib/testing/storyboard/agent-routing.d.ts +92 -0
  885. package/dist/lib/testing/storyboard/agent-routing.d.ts.map +1 -0
  886. package/dist/lib/testing/storyboard/agent-routing.js +291 -0
  887. package/dist/lib/testing/storyboard/agent-routing.js.map +1 -0
  888. package/dist/lib/testing/storyboard/context.d.ts +22 -0
  889. package/dist/lib/testing/storyboard/context.d.ts.map +1 -1
  890. package/dist/lib/testing/storyboard/context.js +35 -8
  891. package/dist/lib/testing/storyboard/context.js.map +1 -1
  892. package/dist/lib/testing/storyboard/default-invariants.js +6 -35
  893. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  894. package/dist/lib/testing/storyboard/index.d.ts +1 -1
  895. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  896. package/dist/lib/testing/storyboard/index.js.map +1 -1
  897. package/dist/lib/testing/storyboard/loader.js +46 -12
  898. package/dist/lib/testing/storyboard/loader.js.map +1 -1
  899. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  900. package/dist/lib/testing/storyboard/request-builder.js +14 -1
  901. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  902. package/dist/lib/testing/storyboard/runner.d.ts +17 -0
  903. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  904. package/dist/lib/testing/storyboard/runner.js +800 -92
  905. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  906. package/dist/lib/testing/storyboard/types.d.ts +221 -12
  907. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  908. package/dist/lib/testing/storyboard/types.js.map +1 -1
  909. package/dist/lib/testing/storyboard/validations.d.ts +65 -0
  910. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  911. package/dist/lib/testing/storyboard/validations.js +511 -2
  912. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  913. package/dist/lib/testing/test-controller.d.ts +65 -1
  914. package/dist/lib/testing/test-controller.d.ts.map +1 -1
  915. package/dist/lib/testing/test-controller.js +36 -0
  916. package/dist/lib/testing/test-controller.js.map +1 -1
  917. package/dist/lib/testing/types.d.ts +14 -0
  918. package/dist/lib/testing/types.d.ts.map +1 -1
  919. package/dist/lib/types/core.generated.d.ts +299 -141
  920. package/dist/lib/types/core.generated.d.ts.map +1 -1
  921. package/dist/lib/types/core.generated.js +2 -2
  922. package/dist/lib/types/error-codes.d.ts +168 -108
  923. package/dist/lib/types/error-codes.d.ts.map +1 -1
  924. package/dist/lib/types/error-codes.js +23 -190
  925. package/dist/lib/types/error-codes.js.map +1 -1
  926. package/dist/lib/types/error-details.aliases.d.ts +48 -0
  927. package/dist/lib/types/error-details.aliases.d.ts.map +1 -0
  928. package/dist/lib/types/error-details.aliases.js +41 -0
  929. package/dist/lib/types/error-details.aliases.js.map +1 -0
  930. package/dist/lib/types/index.d.ts +15 -1
  931. package/dist/lib/types/index.d.ts.map +1 -1
  932. package/dist/lib/types/index.js +7 -0
  933. package/dist/lib/types/index.js.map +1 -1
  934. package/dist/lib/types/inline-enums.generated.d.ts +2 -4
  935. package/dist/lib/types/inline-enums.generated.d.ts.map +1 -1
  936. package/dist/lib/types/inline-enums.generated.js +10 -7
  937. package/dist/lib/types/inline-enums.generated.js.map +1 -1
  938. package/dist/lib/types/manifest.generated.d.ts +280 -0
  939. package/dist/lib/types/manifest.generated.d.ts.map +1 -0
  940. package/dist/lib/types/manifest.generated.js +339 -0
  941. package/dist/lib/types/manifest.generated.js.map +1 -0
  942. package/dist/lib/types/schemas.generated.d.ts +27229 -25160
  943. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  944. package/dist/lib/types/schemas.generated.js +584 -533
  945. package/dist/lib/types/schemas.generated.js.map +1 -1
  946. package/dist/lib/types/tools.generated.d.ts +146 -21
  947. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  948. package/dist/lib/types/v2-5/tools.generated.d.ts +48 -1
  949. package/dist/lib/types/v2-5/tools.generated.d.ts.map +1 -1
  950. package/dist/lib/upstream-recorder/index.d.ts +57 -0
  951. package/dist/lib/upstream-recorder/index.d.ts.map +1 -0
  952. package/dist/lib/upstream-recorder/index.js +62 -0
  953. package/dist/lib/upstream-recorder/index.js.map +1 -0
  954. package/dist/lib/upstream-recorder/recorder.d.ts +35 -0
  955. package/dist/lib/upstream-recorder/recorder.d.ts.map +1 -0
  956. package/dist/lib/upstream-recorder/recorder.js +507 -0
  957. package/dist/lib/upstream-recorder/recorder.js.map +1 -0
  958. package/dist/lib/upstream-recorder/types.d.ts +365 -0
  959. package/dist/lib/upstream-recorder/types.d.ts.map +1 -0
  960. package/dist/lib/upstream-recorder/types.js +30 -0
  961. package/dist/lib/upstream-recorder/types.js.map +1 -0
  962. package/dist/lib/utils/capabilities.d.ts +44 -3
  963. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  964. package/dist/lib/utils/capabilities.js +67 -3
  965. package/dist/lib/utils/capabilities.js.map +1 -1
  966. package/dist/lib/utils/error-extraction.d.ts +24 -0
  967. package/dist/lib/utils/error-extraction.d.ts.map +1 -1
  968. package/dist/lib/utils/error-extraction.js +0 -2
  969. package/dist/lib/utils/error-extraction.js.map +1 -1
  970. package/dist/lib/utils/format-render-builders.d.ts +2 -1
  971. package/dist/lib/utils/format-render-builders.d.ts.map +1 -1
  972. package/dist/lib/utils/format-render-builders.js +0 -23
  973. package/dist/lib/utils/format-render-builders.js.map +1 -1
  974. package/dist/lib/utils/glob.d.ts +30 -0
  975. package/dist/lib/utils/glob.d.ts.map +1 -0
  976. package/dist/lib/utils/glob.js +39 -0
  977. package/dist/lib/utils/glob.js.map +1 -0
  978. package/dist/lib/utils/redact-secrets.d.ts +37 -0
  979. package/dist/lib/utils/redact-secrets.d.ts.map +1 -0
  980. package/dist/lib/utils/redact-secrets.js +65 -0
  981. package/dist/lib/utils/redact-secrets.js.map +1 -0
  982. package/dist/lib/utils/tool-request-schemas.d.ts.map +1 -1
  983. package/dist/lib/utils/tool-request-schemas.js +1 -0
  984. package/dist/lib/utils/tool-request-schemas.js.map +1 -1
  985. package/dist/lib/validation/hints.d.ts +50 -0
  986. package/dist/lib/validation/hints.d.ts.map +1 -0
  987. package/dist/lib/validation/hints.js +194 -0
  988. package/dist/lib/validation/hints.js.map +1 -0
  989. package/dist/lib/validation/schema-errors.d.ts +2 -1
  990. package/dist/lib/validation/schema-errors.d.ts.map +1 -1
  991. package/dist/lib/validation/schema-errors.js +39 -4
  992. package/dist/lib/validation/schema-errors.js.map +1 -1
  993. package/dist/lib/validation/schema-loader.d.ts +13 -0
  994. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  995. package/dist/lib/validation/schema-loader.js +20 -0
  996. package/dist/lib/validation/schema-loader.js.map +1 -1
  997. package/dist/lib/validation/schema-validator.d.ts +107 -2
  998. package/dist/lib/validation/schema-validator.d.ts.map +1 -1
  999. package/dist/lib/validation/schema-validator.js +205 -12
  1000. package/dist/lib/validation/schema-validator.js.map +1 -1
  1001. package/dist/lib/validation/sync-creatives.d.ts +30 -0
  1002. package/dist/lib/validation/sync-creatives.d.ts.map +1 -1
  1003. package/dist/lib/version.d.ts +7 -7
  1004. package/dist/lib/version.d.ts.map +1 -1
  1005. package/dist/lib/version.js +9 -5
  1006. package/dist/lib/version.js.map +1 -1
  1007. package/docs/guides/BUILD-AN-AGENT.md +267 -137
  1008. package/docs/llms.txt +110 -55
  1009. package/examples/CONTRIBUTING.md +173 -0
  1010. package/examples/README.md +48 -0
  1011. package/examples/comply-controller-seller.ts +9 -17
  1012. package/examples/decisioning-platform-broadcast-tv.ts +3 -2
  1013. package/examples/decisioning-platform-implicit-accounts.ts +168 -0
  1014. package/examples/decisioning-platform-mock-seller.ts +3 -2
  1015. package/examples/decisioning-platform-multi-tenant-db.ts +317 -0
  1016. package/examples/decisioning-platform-programmatic.ts +3 -2
  1017. package/examples/hello-cluster.ts +460 -0
  1018. package/examples/hello_creative_adapter_ad_server.ts +790 -0
  1019. package/examples/hello_creative_adapter_template.ts +528 -0
  1020. package/examples/hello_seller_adapter_guaranteed.ts +1138 -0
  1021. package/examples/hello_seller_adapter_multi_tenant.ts +1046 -0
  1022. package/examples/hello_seller_adapter_non_guaranteed.ts +1020 -0
  1023. package/examples/hello_seller_adapter_social.ts +829 -0
  1024. package/examples/hello_si_adapter_brand.ts +572 -0
  1025. package/examples/hello_signals_adapter_marketplace.ts +532 -0
  1026. package/examples/seller-test-controller.ts +22 -28
  1027. package/package.json +32 -4
  1028. package/skills/SHAPE-GOTCHAS.md +233 -0
  1029. package/skills/build-brand-rights-agent/SKILL.md +121 -16
  1030. package/skills/build-creative-agent/SKILL.md +128 -184
  1031. package/skills/build-decisioning-platform/advanced/MULTI-TENANT.md +104 -28
  1032. package/skills/build-generative-seller-agent/SKILL.md +15 -9
  1033. package/skills/build-governance-agent/SKILL.md +20 -11
  1034. package/skills/build-holdco-agent/SKILL.md +250 -0
  1035. package/skills/build-retail-media-agent/SKILL.md +10 -8
  1036. package/skills/build-seller-agent/SKILL.md +315 -49
  1037. package/skills/build-seller-agent/specialisms/sales-broadcast-tv.md +2 -0
  1038. package/skills/build-seller-agent/specialisms/sales-guaranteed.md +18 -0
  1039. package/skills/build-seller-agent/specialisms/sales-non-guaranteed.md +9 -29
  1040. package/skills/build-seller-agent/specialisms/sales-social.md +63 -2
  1041. package/skills/build-si-agent/SKILL.md +251 -196
  1042. package/skills/build-signals-agent/SKILL.md +4 -0
  1043. package/skills/call-adcp-agent/SKILL.md +7 -1
  1044. package/skills/run-by-experts/SKILL.md +116 -0
  1045. package/skills/triage-storyboard-failure/SKILL.md +96 -0
  1046. package/skills/call-adcp-agent.previous/SKILL.md +0 -339
  1047. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/brand/index.yaml +0 -0
  1048. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/creative/index.yaml +0 -0
  1049. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/governance/index.yaml +0 -0
  1050. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/creative-reception.yaml +0 -0
  1051. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/index.yaml +0 -0
  1052. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1053. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -0
  1054. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1055. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  1056. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  1057. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  1058. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1059. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1060. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  1061. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  1062. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  1063. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  1064. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1065. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  1066. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/media-buy/state-machine.yaml +0 -0
  1067. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/signals/index.yaml +0 -0
  1068. /package/compliance/cache/{3.0.1 → 3.0.5}/domains/sponsored-intelligence/index.yaml +0 -0
  1069. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/brand/index.yaml +0 -0
  1070. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/creative/index.yaml +0 -0
  1071. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/governance/index.yaml +0 -0
  1072. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/creative-reception.yaml +0 -0
  1073. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/index.yaml +0 -0
  1074. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1075. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -0
  1076. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1077. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  1078. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  1079. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  1080. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1081. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1082. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  1083. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  1084. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  1085. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  1086. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1087. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  1088. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/media-buy/state-machine.yaml +0 -0
  1089. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/signals/index.yaml +0 -0
  1090. /package/compliance/cache/{3.0.1 → 3.0.5}/protocols/sponsored-intelligence/index.yaml +0 -0
  1091. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  1092. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/collection-lists/index.yaml +0 -0
  1093. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/content-standards/index.yaml +0 -0
  1094. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/creative-ad-server/index.yaml +0 -0
  1095. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/creative-generative/generative-seller.yaml +0 -0
  1096. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/creative-generative/index.yaml +0 -0
  1097. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/creative-template/index.yaml +0 -0
  1098. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/governance-aware-seller/index.yaml +0 -0
  1099. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1100. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1101. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/governance-spend-authority/index.yaml +0 -0
  1102. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/property-lists/index.yaml +0 -0
  1103. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/sales-broadcast-tv/index.yaml +0 -0
  1104. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1105. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/sales-guaranteed/index.yaml +0 -0
  1106. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1107. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/sales-proposal-mode/index.yaml +0 -0
  1108. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/signal-marketplace/index.yaml +0 -0
  1109. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1110. /package/compliance/cache/{3.0.1 → 3.0.5}/specialisms/signal-owned/index.yaml +0 -0
  1111. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/acme-outdoor.yaml +0 -0
  1112. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/bistro-oranje.yaml +0 -0
  1113. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/nova-motors.yaml +0 -0
  1114. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/osei-natural.yaml +0 -0
  1115. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/signed-requests-runner.yaml +0 -0
  1116. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/substitution-observer-runner.yaml +0 -0
  1117. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/summit-foods.yaml +0 -0
  1118. /package/compliance/cache/{3.0.1 → 3.0.5}/test-kits/webhook-receiver-runner.yaml +0 -0
  1119. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1120. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1121. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1122. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1123. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1124. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1125. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1126. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1127. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1128. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1129. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1130. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/README.md +0 -0
  1131. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/canonicalization.json +0 -0
  1132. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/keys.json +0 -0
  1133. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1134. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1135. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1136. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1137. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1138. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1139. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1140. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1141. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1142. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1143. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1144. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1145. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1146. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1147. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1148. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1149. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1150. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1151. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1152. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1153. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1154. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1155. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1156. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1157. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1158. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1159. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1160. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1161. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1162. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1163. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1164. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1165. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1166. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1167. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1168. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1169. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1170. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1171. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1172. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/README.md +0 -0
  1173. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/keys.json +0 -0
  1174. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1175. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1176. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1177. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1178. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1179. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1180. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1181. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1182. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1183. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1184. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1185. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1186. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1187. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1188. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1189. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1190. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1191. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1192. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1193. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1194. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1195. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1196. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1197. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1198. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1199. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1200. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1201. /package/compliance/cache/{3.0.1 → 3.0.5}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1202. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/capability-discovery.yaml +0 -0
  1203. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1204. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/content-standards-pagination-integrity.yaml +0 -0
  1205. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/deterministic-testing.yaml +0 -0
  1206. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/error-compliance.yaml +0 -0
  1207. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/fictional-entities.yaml +0 -0
  1208. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1209. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/get-signals-pagination-integrity.yaml +0 -0
  1210. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/idempotency.yaml +0 -0
  1211. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/pagination-integrity-creative-formats.yaml +0 -0
  1212. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1213. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/pagination-integrity.yaml +0 -0
  1214. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/property-lists-pagination-integrity.yaml +0 -0
  1215. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/schema-validation.yaml +0 -0
  1216. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/security.yaml +0 -0
  1217. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/signed-requests.yaml +0 -0
  1218. /package/compliance/cache/{3.0.1 → 3.0.5}/universal/webhook-emission.yaml +0 -0
@@ -0,0 +1,1020 @@
1
+ /**
2
+ * hello_seller_adapter_non_guaranteed — worked starting point for an
3
+ * AdCP non-guaranteed sales agent (specialism `sales-non-guaranteed`)
4
+ * that wraps an upstream programmatic-auction platform with sync
5
+ * confirmation over static Bearer.
6
+ *
7
+ * Closes #1458 (sub-issue of #1381 umbrella). Closest neighbor in the
8
+ * worked-reference family is `hello_seller_adapter_guaranteed.ts` —
9
+ * this adapter is the deletion-fork (rip out HITL approval, sync
10
+ * confirmation throughout). The auction shape applies to DSP-side
11
+ * sellers, retail-media remnant, header-bidding inventory, and any
12
+ * non-walled-garden seller.
13
+ *
14
+ * Headline behavior: `create_media_buy` returns `media_buy_id` synchronously
15
+ * on `success` — auction is immediate, no IO-review task. Floor-priced
16
+ * products (`pricing_options[].fixed_price = product.min_cpm`); pacing
17
+ * propagated to upstream order; spend-only forecast surfaced inline.
18
+ *
19
+ * Fork this. Replace `upstream` with calls to your real backend. The
20
+ * AdCP-facing platform methods stay the same.
21
+ *
22
+ * Auction mode is the deletion-fork of the guaranteed sibling: `createMediaBuy`
23
+ * returns sync, no `ctx.handoffToTask`, no IO poll loop, no task envelope.
24
+ * If your backend has HITL approval, fork the guaranteed example instead.
25
+ *
26
+ * FORK CHECKLIST
27
+ * 1. Replace every `// SWAP:` marker with calls to your backend.
28
+ * 2. Replace `KNOWN_PUBLISHERS` with your tenant directory.
29
+ * 3. Replace `projectProduct()` defaults — `publisher_properties` selector,
30
+ * `pricing_options[]`, `reporting_capabilities` — with values your
31
+ * seller actually commits to.
32
+ * 4. Replace `advertiserId = networkCode` collapse with a real lookup
33
+ * (production splits network and advertiser ids).
34
+ * 5. Validate: `node --test test/examples/hello-seller-adapter-non-guaranteed.test.js`
35
+ * 6. **DELETE the `// TEST-ONLY` blocks** before deploying:
36
+ * - sandbox-arm in `accounts.resolve` (resolves storyboard runner's
37
+ * synthetic `{brand, sandbox: true}` refs to a known network and
38
+ * stamps `mode: 'sandbox'` on the returned Account so the framework
39
+ * gate admits the comply controller)
40
+ * - `complyTest:` config block on `createAdcpServerFromPlatform`
41
+ * - in-memory `seededMediaBuys` / `simulatedDelivery` / `adapterStatusOverrides`
42
+ * These exist so the conformance harness can drive cascade scenarios
43
+ * deterministically. Production sellers ship without them.
44
+ *
45
+ * Demo:
46
+ * npx @adcp/sdk@latest mock-server sales-non-guaranteed --port 4451
47
+ * UPSTREAM_URL=http://127.0.0.1:4451 \
48
+ * npx tsx examples/hello_seller_adapter_non_guaranteed.ts
49
+ * adcp storyboard run http://127.0.0.1:3007/mcp sales_non_guaranteed \
50
+ * --auth sk_harness_do_not_use_in_prod
51
+ * curl http://127.0.0.1:4451/_debug/traffic
52
+ */
53
+
54
+ import {
55
+ createAdcpServerFromPlatform,
56
+ serve,
57
+ verifyApiKey,
58
+ createIdempotencyStore,
59
+ createUpstreamHttpClient,
60
+ memoryBackend,
61
+ AdcpError,
62
+ createMediaBuyStore,
63
+ InMemoryStateStore,
64
+ type DecisioningPlatform,
65
+ type SalesCorePlatform,
66
+ type SalesIngestionPlatform,
67
+ type AccountStore,
68
+ type Account,
69
+ type SyncCreativesRow,
70
+ type SyncAccountsResultRow,
71
+ } from '@adcp/sdk/server';
72
+ import type {
73
+ GetProductsRequest,
74
+ GetProductsResponse,
75
+ CreateMediaBuyRequest,
76
+ CreateMediaBuySuccess,
77
+ UpdateMediaBuyRequest,
78
+ UpdateMediaBuySuccess,
79
+ GetMediaBuysRequest,
80
+ GetMediaBuysResponse,
81
+ GetMediaBuyDeliveryRequest,
82
+ GetMediaBuyDeliveryResponse,
83
+ ListCreativeFormatsResponse,
84
+ } from '@adcp/sdk/types';
85
+
86
+ // `Product` isn't re-exported from `@adcp/sdk/types`; derive from response.
87
+ type Product = GetProductsResponse['products'][number];
88
+
89
+ const UPSTREAM_URL = process.env['UPSTREAM_URL'] ?? 'http://127.0.0.1:4451';
90
+ const UPSTREAM_API_KEY = process.env['UPSTREAM_API_KEY'] ?? 'mock_sales_non_guaranteed_key_do_not_use_in_prod';
91
+ const PORT = Number(process.env['PORT'] ?? 3007);
92
+ const ADCP_AUTH_TOKEN = process.env['ADCP_AUTH_TOKEN'] ?? 'sk_harness_do_not_use_in_prod';
93
+ const PUBLIC_AGENT_URL = process.env['PUBLIC_AGENT_URL'] ?? `http://127.0.0.1:${PORT}`;
94
+
95
+ const KNOWN_PUBLISHERS = ['remnant-network.example', 'acmeoutdoor.example', 'pinnacle-agency.example'];
96
+
97
+ // TEST-ONLY: id-prefix used by the sandbox arm in `accounts.resolve` so
98
+ // production sellers don't need this; remove the sandbox arm + this
99
+ // constant before deploying. See FORK CHECKLIST item 6.
100
+ const SANDBOX_ID_PREFIX = 'sandbox_';
101
+
102
+ // ---------------------------------------------------------------------------
103
+ // Upstream client — SWAP for production.
104
+ // ---------------------------------------------------------------------------
105
+
106
+ interface UpstreamNetwork {
107
+ network_code: string;
108
+ display_name: string;
109
+ adcp_publisher: string;
110
+ }
111
+
112
+ interface UpstreamProductPricing {
113
+ min_cpm: number;
114
+ target_cpm?: number;
115
+ currency: string;
116
+ min_spend?: number;
117
+ }
118
+
119
+ interface UpstreamForecastPoint {
120
+ budget?: number;
121
+ metrics: {
122
+ impressions?: { low: number; mid: number; high: number };
123
+ clicks?: { low: number; mid: number; high: number };
124
+ spend?: { low: number; mid: number; high: number };
125
+ };
126
+ }
127
+
128
+ interface UpstreamForecast {
129
+ product_id: string;
130
+ forecast_range_unit: 'spend';
131
+ method: 'modeled';
132
+ currency: string;
133
+ points: UpstreamForecastPoint[];
134
+ min_budget_warning?: { required: number; reason: string };
135
+ }
136
+
137
+ interface UpstreamProduct {
138
+ product_id: string;
139
+ name: string;
140
+ network_code: string;
141
+ delivery_type: 'non_guaranteed';
142
+ channel: 'video' | 'ctv' | 'display' | 'audio';
143
+ format_ids: string[];
144
+ ad_unit_ids: string[];
145
+ pricing: UpstreamProductPricing;
146
+ forecast?: UpstreamForecast;
147
+ }
148
+
149
+ interface UpstreamLineItem {
150
+ line_item_id: string;
151
+ order_id: string;
152
+ product_id: string;
153
+ status: 'ready' | 'paused' | 'delivering' | 'completed';
154
+ budget: number;
155
+ ad_unit_targeting: string[];
156
+ creative_ids: string[];
157
+ }
158
+
159
+ interface UpstreamOrder {
160
+ order_id: string;
161
+ network_code: string;
162
+ name: string;
163
+ status: 'confirmed' | 'delivering' | 'completed' | 'canceled' | 'rejected';
164
+ advertiser_id: string;
165
+ currency: string;
166
+ budget: number;
167
+ pacing: 'even' | 'asap' | 'front_loaded';
168
+ flight_start?: string;
169
+ flight_end?: string;
170
+ rejection_reason?: string;
171
+ line_items?: UpstreamLineItem[];
172
+ created_at?: string;
173
+ updated_at?: string;
174
+ replayed?: boolean;
175
+ }
176
+
177
+ interface UpstreamCreative {
178
+ creative_id: string;
179
+ network_code: string;
180
+ name: string;
181
+ format_id: string;
182
+ advertiser_id: string;
183
+ status: 'active' | 'paused' | 'archived';
184
+ }
185
+
186
+ interface UpstreamDelivery {
187
+ order_id: string;
188
+ currency: string;
189
+ pacing: 'even' | 'asap' | 'front_loaded';
190
+ reporting_period: { start?: string; end?: string };
191
+ totals: { impressions: number; clicks: number; spend: number; budget_remaining: number };
192
+ line_items: Array<{
193
+ line_item_id: string;
194
+ product_id: string;
195
+ impressions: number;
196
+ clicks: number;
197
+ spend: number;
198
+ currency: string;
199
+ effective_cpm: number;
200
+ pacing_pct: number;
201
+ }>;
202
+ }
203
+
204
+ const http = createUpstreamHttpClient({
205
+ baseUrl: UPSTREAM_URL,
206
+ auth: { kind: 'static_bearer', token: UPSTREAM_API_KEY },
207
+ });
208
+
209
+ const networkHeader = (networkCode: string): Record<string, string> => ({ 'X-Network-Code': networkCode });
210
+
211
+ const upstream = {
212
+ // SWAP: tenant lookup. Mock exposes /_lookup; production typically a
213
+ // network registry / service-account scope endpoint.
214
+ async lookupNetwork(publisherDomain: string): Promise<UpstreamNetwork | null> {
215
+ const { body } = await http.get<UpstreamNetwork>('/_lookup/network', { adcp_publisher: publisherDomain });
216
+ return body;
217
+ },
218
+
219
+ // SWAP: product catalog. Mock filters by network_code via header + optional
220
+ // ?channel. When `flight_start`/`flight_end`/`budget` are passed, the mock
221
+ // returns per-product `forecast` inline — single round-trip instead of N
222
+ // follow-up `/v1/forecast` calls.
223
+ async listProducts(
224
+ networkCode: string,
225
+ opts?: {
226
+ channel?: 'video' | 'ctv' | 'display' | 'audio';
227
+ flightStart?: string;
228
+ flightEnd?: string;
229
+ budget?: number;
230
+ }
231
+ ): Promise<UpstreamProduct[]> {
232
+ const params: Record<string, string> = {};
233
+ if (opts?.channel) params['channel'] = opts.channel;
234
+ if (opts?.flightStart) params['flight_start'] = opts.flightStart;
235
+ if (opts?.flightEnd) params['flight_end'] = opts.flightEnd;
236
+ if (opts?.budget !== undefined) params['budget'] = String(opts.budget);
237
+ const { body } = await http.get<{ products: UpstreamProduct[] }>(
238
+ '/v1/products',
239
+ params,
240
+ networkHeader(networkCode)
241
+ );
242
+ return body?.products ?? [];
243
+ },
244
+
245
+ // SWAP: per-product forecast. Use this when your backend separates the
246
+ // catalog and forecast surfaces. For the worked-mock case we fold forecast
247
+ // into `listProducts` above; this method shows the discrete shape.
248
+ async getForecast(
249
+ networkCode: string,
250
+ body: {
251
+ product_id: string;
252
+ targeting?: Record<string, unknown>;
253
+ flight_dates?: { start?: string; end?: string };
254
+ budget?: number;
255
+ }
256
+ ): Promise<UpstreamForecast | null> {
257
+ const r = await http.post<UpstreamForecast>('/v1/forecast', body, networkHeader(networkCode));
258
+ return r.body;
259
+ },
260
+
261
+ // SWAP: list orders. Returns { orders: [...] }.
262
+ async listOrders(networkCode: string): Promise<UpstreamOrder[]> {
263
+ const { body } = await http.get<{ orders: UpstreamOrder[] }>('/v1/orders', undefined, networkHeader(networkCode));
264
+ return body?.orders ?? [];
265
+ },
266
+
267
+ // SWAP: sync create. Mock returns 201 with status='confirmed'. No HITL
268
+ // task — auction-cleared programmatic. `client_request_id` round-trips
269
+ // to upstream for at-most-once execution; replay returns same order_id
270
+ // with `replayed: true`.
271
+ async createOrder(
272
+ networkCode: string,
273
+ body: {
274
+ name: string;
275
+ advertiser_id: string;
276
+ currency: string;
277
+ budget: number;
278
+ pacing?: 'even' | 'asap' | 'front_loaded';
279
+ flight_start?: string;
280
+ flight_end?: string;
281
+ line_items?: Array<{ product_id: string; budget: number }>;
282
+ client_request_id?: string;
283
+ }
284
+ ): Promise<UpstreamOrder> {
285
+ const r = await http.post<UpstreamOrder>('/v1/orders', body, networkHeader(networkCode));
286
+ if (r.body === null) {
287
+ throw new AdcpError('INVALID_REQUEST', { message: 'order creation rejected by upstream' });
288
+ }
289
+ return r.body;
290
+ },
291
+
292
+ async getOrder(networkCode: string, orderId: string): Promise<UpstreamOrder | null> {
293
+ const { body } = await http.get<UpstreamOrder>(
294
+ `/v1/orders/${encodeURIComponent(orderId)}`,
295
+ undefined,
296
+ networkHeader(networkCode)
297
+ );
298
+ return body;
299
+ },
300
+
301
+ async listLineItems(networkCode: string, orderId: string): Promise<UpstreamLineItem[]> {
302
+ const { body } = await http.get<{ line_items: UpstreamLineItem[] }>(
303
+ `/v1/orders/${encodeURIComponent(orderId)}/lineitems`,
304
+ undefined,
305
+ networkHeader(networkCode)
306
+ );
307
+ return body?.line_items ?? [];
308
+ },
309
+
310
+ async createLineItem(
311
+ networkCode: string,
312
+ orderId: string,
313
+ body: { product_id: string; budget: number; ad_unit_ids?: string[]; client_request_id?: string }
314
+ ): Promise<{ line_item_id: string }> {
315
+ const r = await http.post<{ line_item_id: string }>(
316
+ `/v1/orders/${encodeURIComponent(orderId)}/lineitems`,
317
+ body,
318
+ networkHeader(networkCode)
319
+ );
320
+ if (r.body === null) {
321
+ throw new AdcpError('INVALID_REQUEST', { message: 'line item creation rejected by upstream' });
322
+ }
323
+ return r.body;
324
+ },
325
+
326
+ async createCreative(
327
+ networkCode: string,
328
+ body: { name: string; format_id: string; advertiser_id: string; client_request_id?: string }
329
+ ): Promise<UpstreamCreative> {
330
+ const r = await http.post<UpstreamCreative>('/v1/creatives', body, networkHeader(networkCode));
331
+ if (r.body === null) {
332
+ throw new AdcpError('INVALID_REQUEST', { message: 'creative creation rejected by upstream' });
333
+ }
334
+ return r.body;
335
+ },
336
+
337
+ async getDelivery(networkCode: string, orderId: string): Promise<UpstreamDelivery | null> {
338
+ const { body } = await http.get<UpstreamDelivery>(
339
+ `/v1/orders/${encodeURIComponent(orderId)}/delivery`,
340
+ undefined,
341
+ networkHeader(networkCode)
342
+ );
343
+ return body;
344
+ },
345
+ };
346
+
347
+ // ---------------------------------------------------------------------------
348
+ // AdCP-side adapter — typed against SalesCorePlatform & SalesIngestionPlatform.
349
+ // ---------------------------------------------------------------------------
350
+
351
+ interface NetworkMeta {
352
+ network_code: string;
353
+ publisher_domain: string;
354
+ [key: string]: unknown;
355
+ }
356
+
357
+ const FORMAT_AGENT_URL = PUBLIC_AGENT_URL;
358
+
359
+ /** Project upstream product onto AdCP `Product`. Auction-cleared inventory
360
+ * surfaces `min_cpm` as the `pricing_options[].fixed_price` (floor); buyers
361
+ * bid at or above. Production sellers can layer `auction` pricing models or
362
+ * deal-id-keyed alternative pricing options on top. */
363
+ function projectProduct(p: UpstreamProduct, publisherDomain: string): Product {
364
+ return {
365
+ product_id: p.product_id,
366
+ name: p.name,
367
+ description: `${p.name} — programmatic remnant ${p.channel}`,
368
+ publisher_properties: [{ publisher_domain: publisherDomain, selection_type: 'all' }],
369
+ channels: [
370
+ p.channel === 'video'
371
+ ? 'olv'
372
+ : p.channel === 'ctv'
373
+ ? 'ctv'
374
+ : p.channel === 'audio'
375
+ ? 'streaming_audio'
376
+ : 'display',
377
+ ],
378
+ format_ids: p.format_ids.map(id => ({ agent_url: FORMAT_AGENT_URL, id })),
379
+ delivery_type: 'non_guaranteed',
380
+ pricing_options: [
381
+ {
382
+ pricing_option_id: 'cpm_floor',
383
+ pricing_model: 'cpm',
384
+ currency: p.pricing.currency,
385
+ // Floor pricing — sellers accept any bid ≥ this. Auction-cleared
386
+ // effective CPM lands somewhere between `min_cpm` and `target_cpm`
387
+ // depending on bid pressure; we surface the floor as the firm
388
+ // commitment.
389
+ fixed_price: p.pricing.min_cpm,
390
+ ...(p.pricing.min_spend !== undefined && { min_spend: p.pricing.min_spend }),
391
+ },
392
+ ],
393
+ reporting_capabilities: {
394
+ available_reporting_frequencies: ['daily'],
395
+ expected_delay_minutes: 60,
396
+ timezone: 'UTC',
397
+ supports_webhooks: false,
398
+ available_metrics: ['impressions', 'clicks', 'spend'],
399
+ date_range_support: 'date_range',
400
+ },
401
+ // Pass through per-query forecast verbatim — mock returns AdCP-shape
402
+ // already (`points`, `metrics.{impressions,clicks,spend}.{low,mid,high}`,
403
+ // `forecast_range_unit: 'spend'`, `method: 'modeled'`). Real auction-
404
+ // backed sellers (FreeWheel, Magnite SSP) need adapter-side translation.
405
+ ...(p.forecast && { forecast: p.forecast }),
406
+ };
407
+ }
408
+
409
+ function mapMediaBuyStatus(
410
+ orderStatus: UpstreamOrder['status']
411
+ ): 'pending_creatives' | 'pending_start' | 'active' | 'paused' | 'completed' | 'canceled' {
412
+ switch (orderStatus) {
413
+ case 'delivering':
414
+ return 'active';
415
+ case 'completed':
416
+ return 'completed';
417
+ case 'canceled':
418
+ case 'rejected':
419
+ return 'canceled';
420
+ case 'confirmed':
421
+ default:
422
+ // Auction-cleared but no creatives attached yet → pending_creatives.
423
+ // Buyer transitions to `active` after sync_creatives lands and the
424
+ // first impression delivers. Framework surfaces the status change
425
+ // via publishStatusChange on resource_type: 'media_buy'.
426
+ return 'pending_creatives';
427
+ }
428
+ }
429
+
430
+ // Status overrides persisted at the adapter level. Real backends mutate the
431
+ // upstream Order on creative-attach (the line-item status flips, the order
432
+ // status flips with it). The mock doesn't model that transition; we track
433
+ // the override here so `get_media_buys` returns the advanced status the
434
+ // storyboard validates. SWAP: drop this map and read upstream state — your
435
+ // backend already persists what we're tracking here.
436
+ //
437
+ // Keyed by `<network_code>::<order_id>` so a forking adopter who keeps the
438
+ // map for in-flight scenarios doesn't accidentally surface tenant A's
439
+ // override on tenant B's `media_buy_id` collision (mock IDs are 32 bits).
440
+ const adapterStatusOverrides = new Map<string, 'pending_start' | 'active'>();
441
+ const overrideKey = (networkCode: string, orderId: string): string => `${networkCode}::${orderId}`;
442
+
443
+ class SalesNonGuaranteedAdapter implements DecisioningPlatform<Record<string, never>, NetworkMeta> {
444
+ capabilities = {
445
+ specialisms: ['sales-non-guaranteed'] as const,
446
+ channels: ['olv', 'ctv', 'display', 'streaming_audio'] as const,
447
+ pricingModels: ['cpm'] as const,
448
+ config: {},
449
+ compliance_testing: {
450
+ scenarios: ['force_media_buy_status', 'simulate_delivery'] as const,
451
+ },
452
+ };
453
+
454
+ accounts: AccountStore<NetworkMeta> = {
455
+ resolve: async ref => {
456
+ if (!ref) return null;
457
+ // SWAP: persist `account_id → network_code` during sync_accounts and
458
+ // serve account_id lookups from there.
459
+ if ('account_id' in ref) return null;
460
+
461
+ // ─── TEST-ONLY: cascade-scenario sandbox-arm ─────────────────────
462
+ // DELETE THIS BLOCK BEFORE DEPLOYING. The compliance runner injects
463
+ // synthetic refs like `{brand: {domain: 'test.example'}, sandbox: true}`
464
+ // for `media_buy_seller/*` cascade scenarios. Routes those refs to a
465
+ // fixed seeded network so the rest of the adapter has something
466
+ // concrete to operate on. Production sellers either reject sandbox
467
+ // refs entirely or route them to a dedicated sandbox tenant.
468
+ //
469
+ // Gate is `ref.sandbox === true` from the wire `AccountReference`.
470
+ // Stamping `mode: 'sandbox'` on the returned `Account` is what admits
471
+ // the framework's `comply_test_controller` gate — see #1435 phase 2/3.
472
+ // No env var is consulted; production traffic that doesn't set
473
+ // `sandbox: true` on the wire never hits this branch.
474
+ if (ref.sandbox === true) {
475
+ const sandboxDomain = 'acmeoutdoor.example';
476
+ const network = await upstream.lookupNetwork(sandboxDomain);
477
+ if (!network) return null;
478
+ return {
479
+ id: `${SANDBOX_ID_PREFIX}${network.network_code}`,
480
+ name: `Sandbox: ${network.display_name}`,
481
+ status: 'active',
482
+ mode: 'sandbox',
483
+ ...(ref.operator !== undefined && { operator: ref.operator }),
484
+ brand: { domain: ref.brand.domain ?? sandboxDomain },
485
+ ctx_metadata: { network_code: network.network_code, publisher_domain: network.adcp_publisher },
486
+ };
487
+ }
488
+ // ─── /TEST-ONLY ──────────────────────────────────────────────────
489
+
490
+ const publisherDomain = ref.brand.domain;
491
+ if (!publisherDomain) return null;
492
+ const network = await upstream.lookupNetwork(publisherDomain);
493
+ if (!network) return null;
494
+ const operator = ref.operator;
495
+ return {
496
+ id: network.network_code,
497
+ name: network.display_name,
498
+ status: 'active',
499
+ ...(operator !== undefined && { operator }),
500
+ brand: { domain: network.adcp_publisher },
501
+ ctx_metadata: { network_code: network.network_code, publisher_domain: network.adcp_publisher },
502
+ };
503
+ },
504
+
505
+ upsert: async refs => {
506
+ const out: SyncAccountsResultRow[] = [];
507
+ for (const ref of refs) {
508
+ if ('account_id' in ref) {
509
+ out.push({
510
+ brand: { domain: '' },
511
+ operator: '',
512
+ action: 'failed',
513
+ status: 'rejected',
514
+ errors: [{ code: 'INVALID_REQUEST', message: 'sync_accounts requires brand+operator, not account_id' }],
515
+ });
516
+ continue;
517
+ }
518
+ const domain = ref.brand.domain;
519
+ const operator = ref.operator;
520
+ const network = domain ? await upstream.lookupNetwork(domain) : null;
521
+ if (!network) {
522
+ out.push({
523
+ brand: { domain },
524
+ operator,
525
+ action: 'failed',
526
+ status: 'rejected',
527
+ errors: [{ code: 'ACCOUNT_NOT_FOUND', message: `No publisher network registered for ${domain}` }],
528
+ });
529
+ continue;
530
+ }
531
+ out.push({
532
+ account_id: network.network_code,
533
+ name: network.display_name,
534
+ brand: { domain: network.adcp_publisher },
535
+ operator,
536
+ action: 'unchanged',
537
+ status: 'active',
538
+ });
539
+ }
540
+ return out;
541
+ },
542
+
543
+ list: async () => {
544
+ const items: Array<Account<NetworkMeta>> = [];
545
+ for (const domain of KNOWN_PUBLISHERS) {
546
+ const n = await upstream.lookupNetwork(domain);
547
+ if (!n) continue;
548
+ items.push({
549
+ id: n.network_code,
550
+ name: n.display_name,
551
+ status: 'active',
552
+ brand: { domain: n.adcp_publisher },
553
+ ctx_metadata: { network_code: n.network_code, publisher_domain: n.adcp_publisher },
554
+ });
555
+ }
556
+ return { items, has_more: false };
557
+ },
558
+ };
559
+
560
+ // Required: explicit `SalesCorePlatform<Meta> & SalesIngestionPlatform<Meta>`
561
+ // annotation per migration recipe #11 — `defineSalesPlatform` widens to
562
+ // all-optional and `RequiredPlatformsFor<'sales-non-guaranteed'>` requires
563
+ // the closed shape on the way out.
564
+ sales: SalesCorePlatform<NetworkMeta> & SalesIngestionPlatform<NetworkMeta> = {
565
+ getProducts: async (req: GetProductsRequest, ctx): Promise<GetProductsResponse> => {
566
+ const networkCode = ctx.account.ctx_metadata.network_code;
567
+ const publisherDomain = ctx.account.ctx_metadata.publisher_domain;
568
+ // When the buyer provides structured filters (flight dates, budget),
569
+ // forward them so each product comes back with a per-query forecast.
570
+ // Single upstream round-trip surfaces both the catalog and the
571
+ // forecast curve.
572
+ const briefBudget = (req.filters?.budget_range as { max?: number } | undefined)?.max;
573
+ const products = await upstream.listProducts(networkCode, {
574
+ ...(req.filters?.start_date && { flightStart: req.filters.start_date }),
575
+ ...(req.filters?.end_date && { flightEnd: req.filters.end_date }),
576
+ ...(briefBudget !== undefined && { budget: briefBudget }),
577
+ });
578
+ return { products: products.map(p => projectProduct(p, publisherDomain)) };
579
+ },
580
+
581
+ /**
582
+ * Sync `create_media_buy`. Returns `media_buy_id` on the sync-success
583
+ * arm immediately — auction-cleared inventory has no IO-review step.
584
+ * `idempotency_key` round-trips to upstream `client_request_id`.
585
+ */
586
+ createMediaBuy: async (req: CreateMediaBuyRequest, ctx) => {
587
+ const networkCode = ctx.account.ctx_metadata.network_code;
588
+ // SWAP: production splits network_code (publisher tenant) and
589
+ // advertiser_id (brand seat). Mock collapses both — real DSPs/SSPs
590
+ // resolve advertiser_id from `req.brand` against the publisher's
591
+ // advertiser directory.
592
+ const advertiserId = networkCode;
593
+
594
+ const totalBudget =
595
+ req.total_budget?.amount ??
596
+ (req.packages ?? []).reduce((s, p) => s + ((p as { budget?: number }).budget ?? 0), 0);
597
+ const currency = req.total_budget?.currency ?? 'USD';
598
+
599
+ // Budget-floor enforcement happens upstream — the mock returns
600
+ // budget_too_low if any line item is below product.min_spend.
601
+ // Adopters who want to enforce client-side (skip the upstream call
602
+ // for an obvious reject) can iterate `req.packages` and check
603
+ // against a cached product catalog before calling the upstream.
604
+
605
+ const packagesRequest = (req.packages ?? []) as Array<{
606
+ product_id?: string;
607
+ budget?: number;
608
+ }>;
609
+
610
+ // Build the line_items array up front so the upstream POST is one
611
+ // round-trip. Production splits this when line-item validation needs
612
+ // to happen per-LI server-side; the mock accepts the array inline.
613
+ const lineItemsBody: Array<{ product_id: string; budget: number }> = [];
614
+ for (let i = 0; i < packagesRequest.length; i++) {
615
+ const pkg = packagesRequest[i];
616
+ if (!pkg) continue;
617
+ if (!pkg.product_id) {
618
+ throw new AdcpError('INVALID_REQUEST', {
619
+ message: `package[${i}]: product_id required`,
620
+ field: `packages[${i}].product_id`,
621
+ });
622
+ }
623
+ lineItemsBody.push({ product_id: pkg.product_id, budget: pkg.budget ?? 0 });
624
+ }
625
+
626
+ // SWAP: pacing extraction — production reads from req.packages[i].pacing
627
+ // or req.delivery_settings, varying by your contract surface. AdCP 3.0.5
628
+ // doesn't carry an order-level `pacing` on the wire — the mock accepts
629
+ // it because real platforms (Meta, TTD, etc.) all expose pacing on
630
+ // their own non-guaranteed shape. Default 'even' if unspecified;
631
+ // reject typos rather than silently passing them through.
632
+ const PACING_VALUES = ['even', 'asap', 'front_loaded'] as const;
633
+ const rawPacing = (req as { pacing?: unknown }).pacing;
634
+ let pacing: (typeof PACING_VALUES)[number] = 'even';
635
+ if (typeof rawPacing === 'string') {
636
+ if (!(PACING_VALUES as readonly string[]).includes(rawPacing)) {
637
+ throw new AdcpError('INVALID_REQUEST', {
638
+ message: `pacing must be one of ${PACING_VALUES.join(', ')} (got: ${rawPacing})`,
639
+ field: 'pacing',
640
+ recovery: 'correctable',
641
+ });
642
+ }
643
+ pacing = rawPacing as (typeof PACING_VALUES)[number];
644
+ }
645
+
646
+ let order: UpstreamOrder;
647
+ try {
648
+ order = await upstream.createOrder(networkCode, {
649
+ name: `MediaBuy from ${req.brand?.domain ?? 'unknown'}`,
650
+ advertiser_id: advertiserId,
651
+ currency,
652
+ budget: totalBudget,
653
+ pacing,
654
+ ...(req.start_time && { flight_start: req.start_time }),
655
+ ...(req.end_time && { flight_end: req.end_time }),
656
+ line_items: lineItemsBody,
657
+ client_request_id: req.idempotency_key,
658
+ });
659
+ } catch (e) {
660
+ // Surface upstream-typed error bodies as AdcpError with the
661
+ // appropriate code. Mock returns `code: 'budget_too_low'` /
662
+ // `code: 'product_not_found'` / etc.; we map a few of these
663
+ // explicitly so adopters see typed errors at the buyer boundary.
664
+ if (e instanceof AdcpError) throw e;
665
+ throw new AdcpError('SERVICE_UNAVAILABLE', {
666
+ message: (e as Error).message ?? 'upstream order creation failed',
667
+ recovery: 'transient',
668
+ });
669
+ }
670
+
671
+ // Project the response. The upstream order carries `line_items[]`
672
+ // already (since we created them inline); each maps to a wire
673
+ // `package`.
674
+ const packagesOut: CreateMediaBuySuccess['packages'] = (order.line_items ?? []).map((li, i) => ({
675
+ package_id: li.line_item_id,
676
+ product_id: li.product_id,
677
+ budget: li.budget,
678
+ // Re-thread the buyer's package_id if supplied — adopters who
679
+ // care about preserving buyer-side ids should round-trip them
680
+ // here. SWAP: persist the mapping.
681
+ ...(packagesRequest[i] !== undefined &&
682
+ (packagesRequest[i] as { buyer_ref?: string }).buyer_ref !== undefined && {
683
+ buyer_ref: (packagesRequest[i] as { buyer_ref?: string }).buyer_ref,
684
+ }),
685
+ }));
686
+
687
+ return {
688
+ media_buy_id: order.order_id,
689
+ // pending_creatives — buy is auction-confirmed but no creatives
690
+ // attached yet. Buyer transitions to `active` after sync_creatives.
691
+ status: 'pending_creatives',
692
+ confirmed_at: order.created_at ?? new Date().toISOString(),
693
+ packages: packagesOut,
694
+ };
695
+ },
696
+
697
+ updateMediaBuy: async (id: string, patch: UpdateMediaBuyRequest, ctx): Promise<UpdateMediaBuySuccess> => {
698
+ const networkCode = ctx.account.ctx_metadata.network_code;
699
+ // Validate existence first — production sellers PATCH the upstream
700
+ // order to apply pacing / budget / status changes; the worked
701
+ // example echoes the current state for clarity. SWAP: wire your
702
+ // backend's order-mutation endpoint here.
703
+ const existing = await upstream.getOrder(networkCode, id);
704
+ if (!existing) {
705
+ throw new AdcpError('MEDIA_BUY_NOT_FOUND', {
706
+ message: `media_buy ${id} not found in this seller's network`,
707
+ recovery: 'terminal',
708
+ });
709
+ }
710
+ // Validate any patch.packages reference real line items. Storyboard
711
+ // exercises bogus package_id and asserts PACKAGE_NOT_FOUND on the wire.
712
+ const patchPackages = (
713
+ patch as {
714
+ packages?: Array<{ package_id?: string; creative_assignments?: unknown[] }>;
715
+ }
716
+ ).packages;
717
+ let hasCreativeAssignment = false;
718
+ if (patchPackages?.length) {
719
+ const lineItems = await upstream.listLineItems(networkCode, id);
720
+ const knownPackageIds = new Set(lineItems.map(li => li.line_item_id));
721
+ for (const p of patchPackages) {
722
+ if (p.package_id && !knownPackageIds.has(p.package_id)) {
723
+ throw new AdcpError('PACKAGE_NOT_FOUND', {
724
+ message: `Package ${p.package_id} not found in media buy ${id}`,
725
+ field: 'packages.package_id',
726
+ recovery: 'terminal',
727
+ });
728
+ }
729
+ if (Array.isArray(p.creative_assignments) && p.creative_assignments.length > 0) {
730
+ hasCreativeAssignment = true;
731
+ }
732
+ }
733
+ }
734
+ // Status advances when the buyer attaches creatives — pending_creatives
735
+ // → pending_start (or active if the flight already started). Production
736
+ // backends would also persist the assignment to the upstream line item;
737
+ // the worked example just advances the response state.
738
+ const baseStatus = mapMediaBuyStatus(existing.status);
739
+ let nextStatus: ReturnType<typeof mapMediaBuyStatus> =
740
+ adapterStatusOverrides.get(overrideKey(networkCode, id)) ?? baseStatus;
741
+ if (hasCreativeAssignment && nextStatus === 'pending_creatives') {
742
+ const flightStarted = existing.flight_start !== undefined && Date.parse(existing.flight_start) <= Date.now();
743
+ nextStatus = flightStarted ? 'active' : 'pending_start';
744
+ adapterStatusOverrides.set(overrideKey(networkCode, id), nextStatus);
745
+ }
746
+ return {
747
+ media_buy_id: existing.order_id,
748
+ status: nextStatus,
749
+ };
750
+ },
751
+
752
+ getMediaBuyDelivery: async (req: GetMediaBuyDeliveryRequest, ctx): Promise<GetMediaBuyDeliveryResponse> => {
753
+ const networkCode = ctx.account.ctx_metadata.network_code;
754
+ const requestedIds = req.media_buy_ids ?? [];
755
+ // Multi-id pass-through per #1342 contract — fan out per id; framework
756
+ // dev-mode warn (post-#1410) fires automatically if we accidentally
757
+ // truncate to ids[0]. Filter undefined results so an unknown id
758
+ // produces no row rather than an error (matches upstream semantics).
759
+ const deliveries = await Promise.all(
760
+ requestedIds.map(async id => {
761
+ const d = await upstream.getDelivery(networkCode, id);
762
+ if (!d) return null;
763
+ return {
764
+ media_buy_id: d.order_id,
765
+ currency: d.currency,
766
+ reporting_period: d.reporting_period,
767
+ totals: d.totals,
768
+ packages: d.line_items.map(li => ({
769
+ package_id: li.line_item_id,
770
+ product_id: li.product_id,
771
+ impressions: li.impressions,
772
+ clicks: li.clicks,
773
+ spend: li.spend,
774
+ currency: li.currency,
775
+ })),
776
+ };
777
+ })
778
+ );
779
+ const filtered = deliveries.filter((d): d is NonNullable<typeof d> => d !== null);
780
+ // Surface a debugging-friendly trace when buyers ask about ids the
781
+ // upstream doesn't know — silently dropping rows looks like delivery
782
+ // simply hasn't started yet, which buries the actual error.
783
+ const missing = requestedIds.filter((_, i) => deliveries[i] === null);
784
+ if (missing.length > 0) {
785
+ // eslint-disable-next-line no-console
786
+ console.warn(
787
+ `[sales-non-guaranteed] get_media_buy_delivery: ${missing.length} unknown media_buy_id(s) returned no delivery rows: ${missing.join(', ')}`
788
+ );
789
+ }
790
+ const response: GetMediaBuyDeliveryResponse = {
791
+ currency: filtered[0]?.currency ?? 'USD',
792
+ reporting_period: {
793
+ start: filtered[0]?.reporting_period.start ?? new Date().toISOString(),
794
+ end: filtered[0]?.reporting_period.end ?? new Date().toISOString(),
795
+ },
796
+ aggregated_totals: {
797
+ impressions: filtered.reduce((s, d) => s + d.totals.impressions, 0),
798
+ spend: filtered.reduce((s, d) => s + d.totals.spend, 0),
799
+ clicks: filtered.reduce((s, d) => s + d.totals.clicks, 0),
800
+ media_buy_count: filtered.length,
801
+ },
802
+ media_buy_deliveries: filtered.map(d => ({
803
+ media_buy_id: d.media_buy_id,
804
+ // Required field on media_buy_deliveries[i]. Auction inventory in
805
+ // active delivery defaults to 'active'; production sellers map
806
+ // upstream order state through `mapMediaBuyStatus` like elsewhere.
807
+ status: 'active' as const,
808
+ totals: d.totals,
809
+ by_package: d.packages.map(p => ({
810
+ package_id: p.package_id,
811
+ impressions: p.impressions,
812
+ spend: p.spend,
813
+ })),
814
+ })),
815
+ };
816
+ return response;
817
+ },
818
+
819
+ getMediaBuys: async (req: GetMediaBuysRequest, ctx): Promise<GetMediaBuysResponse> => {
820
+ const networkCode = ctx.account.ctx_metadata.network_code;
821
+ const requestedIds = req.media_buy_ids ?? [];
822
+ let orders: UpstreamOrder[];
823
+ if (requestedIds.length > 0) {
824
+ orders = (await Promise.all(requestedIds.map(id => upstream.getOrder(networkCode, id)))).filter(
825
+ (o): o is UpstreamOrder => o !== null
826
+ );
827
+ } else {
828
+ orders = await upstream.listOrders(networkCode);
829
+ }
830
+ // Fetch per-order line items. Mock's GET /v1/orders/{id} omits them;
831
+ // GAM-style backends similarly split Order vs LineItem services. SWAP:
832
+ // batch via `?include=lineitems` if your platform supports it.
833
+ const media_buys = await Promise.all(
834
+ orders.map(async o => {
835
+ const lineItems = await upstream.listLineItems(networkCode, o.order_id);
836
+ const baseStatus = mapMediaBuyStatus(o.status);
837
+ const status = adapterStatusOverrides.get(overrideKey(networkCode, o.order_id)) ?? baseStatus;
838
+ return {
839
+ media_buy_id: o.order_id,
840
+ status,
841
+ currency: o.currency,
842
+ ...(o.budget !== undefined && { total_budget: o.budget }),
843
+ ...(o.updated_at !== undefined && { confirmed_at: o.updated_at }),
844
+ ...(o.created_at !== undefined && { created_at: o.created_at }),
845
+ ...(o.updated_at !== undefined && { updated_at: o.updated_at }),
846
+ ...(o.flight_start && { start_time: o.flight_start }),
847
+ ...(o.flight_end && { end_time: o.flight_end }),
848
+ packages: lineItems.map(li => ({
849
+ package_id: li.line_item_id,
850
+ product_id: li.product_id,
851
+ budget: li.budget,
852
+ currency: o.currency,
853
+ })),
854
+ };
855
+ })
856
+ );
857
+ const response: GetMediaBuysResponse = { media_buys };
858
+ return response;
859
+ },
860
+
861
+ syncCreatives: async (creatives, ctx) => {
862
+ const networkCode = ctx.account.ctx_metadata.network_code;
863
+ const advertiserId = networkCode; // SWAP: same collapse caveat as createMediaBuy.
864
+ const out: SyncCreativesRow[] = [];
865
+ for (const c of creatives) {
866
+ const formatRef = (c as { format_id?: { id?: string } | string }).format_id;
867
+ const formatId = typeof formatRef === 'string' ? formatRef : formatRef?.id;
868
+ if (!formatId) {
869
+ out.push({
870
+ creative_id: (c as { creative_id?: string }).creative_id ?? 'unknown',
871
+ action: 'failed',
872
+ status: 'rejected',
873
+ errors: [{ code: 'CREATIVE_REJECTED', message: 'format_id is required' }],
874
+ });
875
+ continue;
876
+ }
877
+ try {
878
+ const creativeIdHint = (c as { creative_id?: string }).creative_id;
879
+ const created = await upstream.createCreative(networkCode, {
880
+ name: (c as { name?: string }).name ?? 'Untitled',
881
+ format_id: formatId,
882
+ advertiser_id: advertiserId,
883
+ ...(creativeIdHint !== undefined && { client_request_id: creativeIdHint }),
884
+ });
885
+ out.push({
886
+ creative_id: created.creative_id,
887
+ action: 'created',
888
+ status: 'approved',
889
+ });
890
+ } catch (e) {
891
+ out.push({
892
+ creative_id: (c as { creative_id?: string }).creative_id ?? 'unknown',
893
+ action: 'failed',
894
+ status: 'rejected',
895
+ errors: [
896
+ { code: 'CREATIVE_REJECTED', message: (e as Error).message ?? 'upstream creative creation failed' },
897
+ ],
898
+ });
899
+ }
900
+ }
901
+ return out;
902
+ },
903
+
904
+ listCreativeFormats: async (_req, _ctx): Promise<ListCreativeFormatsResponse> => {
905
+ // Publisher-owned format catalog. The mock doesn't have a discrete
906
+ // formats endpoint (formats live inline on Product); production sellers
907
+ // typically expose `/v1/formats` separately. SWAP: replace with your
908
+ // backend's format catalog.
909
+ return {
910
+ formats: [
911
+ {
912
+ format_id: { agent_url: FORMAT_AGENT_URL, id: 'display_300x250' },
913
+ name: 'Display 300x250 (medrec)',
914
+ renders: [{ role: 'main', dimensions: { width: 300, height: 250, unit: 'px' } }],
915
+ },
916
+ {
917
+ format_id: { agent_url: FORMAT_AGENT_URL, id: 'display_728x90' },
918
+ name: 'Display 728x90 (leaderboard)',
919
+ renders: [{ role: 'main', dimensions: { width: 728, height: 90, unit: 'px' } }],
920
+ },
921
+ {
922
+ format_id: { agent_url: FORMAT_AGENT_URL, id: 'video_30s' },
923
+ name: 'Video 30s outstream / instream',
924
+ renders: [{ role: 'main', dimensions: { width: 1920, height: 1080, unit: 'px' } }],
925
+ },
926
+ {
927
+ format_id: { agent_url: FORMAT_AGENT_URL, id: 'video_15s' },
928
+ name: 'Video 15s',
929
+ renders: [{ role: 'main', dimensions: { width: 1920, height: 1080, unit: 'px' } }],
930
+ },
931
+ ],
932
+ };
933
+ },
934
+ };
935
+ }
936
+
937
+ // ---------------------------------------------------------------------------
938
+ // Bootstrap.
939
+ // ---------------------------------------------------------------------------
940
+
941
+ const platform = new SalesNonGuaranteedAdapter();
942
+ const idempotencyStore = createIdempotencyStore({ backend: memoryBackend(), ttlSeconds: 86_400 });
943
+
944
+ // Persist `packages[].targeting_overlay` from create_media_buy and echo it
945
+ // on get_media_buys. Required for any seller claiming property-lists /
946
+ // collection-lists. SWAP `InMemoryStateStore` for `PostgresStateStore` in
947
+ // production — in-memory loss after restart silently strips the echo.
948
+ const stateStore = new InMemoryStateStore();
949
+ const mediaBuyStore = createMediaBuyStore({ store: stateStore });
950
+
951
+ // ─── TEST-ONLY: comply-controller in-memory state ───────────────────────
952
+ // DELETE BEFORE DEPLOYING. Module-scope maps shared across accounts; only
953
+ // the conformance harness reaches them via the gate below.
954
+ const seededMediaBuys = new Map<string, { status: string; revision: number }>();
955
+ const simulatedDelivery = new Map<
956
+ string,
957
+ { impressions: number; clicks: number; reported_spend: { amount: number; currency: string } }
958
+ >();
959
+ // ─── /TEST-ONLY ──────────────────────────────────────────────────────────
960
+
961
+ serve(
962
+ ({ taskStore }) =>
963
+ createAdcpServerFromPlatform(platform, {
964
+ name: 'hello-seller-adapter-non-guaranteed',
965
+ version: '1.0.0',
966
+ taskStore,
967
+ idempotency: idempotencyStore,
968
+ mediaBuyStore,
969
+ resolveSessionKey: ctx => {
970
+ const acct = ctx.account as Account<NetworkMeta> | undefined;
971
+ return acct?.id ?? 'anonymous';
972
+ },
973
+ // ─── TEST-ONLY: comply_test_controller wiring ──────────────────────
974
+ // DELETE BEFORE DEPLOYING. The framework auto-gates on the resolved
975
+ // account's `mode === 'sandbox'` (see `accounts.resolve` synthesis arm
976
+ // above) — adapters no longer carry their own gate callback. #1435 phase 3.
977
+ complyTest: {
978
+ seed: {
979
+ media_buy: ({ media_buy_id, fixture }) => {
980
+ const existing = seededMediaBuys.get(media_buy_id);
981
+ const status = typeof fixture['status'] === 'string' ? (fixture['status'] as string) : 'pending_creatives';
982
+ seededMediaBuys.set(media_buy_id, { status, revision: existing?.revision ?? 0 });
983
+ },
984
+ },
985
+ force: {
986
+ media_buy_status: ({ media_buy_id, status, rejection_reason }) => {
987
+ const buy = seededMediaBuys.get(media_buy_id);
988
+ const previous = buy?.status ?? 'pending_creatives';
989
+ seededMediaBuys.set(media_buy_id, { status, revision: (buy?.revision ?? 0) + 1 });
990
+ void rejection_reason;
991
+ return { success: true, previous_state: previous, current_state: status };
992
+ },
993
+ },
994
+ simulate: {
995
+ delivery: ({ media_buy_id, impressions, clicks, reported_spend }) => {
996
+ const prev = simulatedDelivery.get(media_buy_id) ?? {
997
+ impressions: 0,
998
+ clicks: 0,
999
+ reported_spend: { amount: 0, currency: 'USD' },
1000
+ };
1001
+ simulatedDelivery.set(media_buy_id, {
1002
+ impressions: prev.impressions + (impressions ?? 0),
1003
+ clicks: prev.clicks + (clicks ?? 0),
1004
+ reported_spend: reported_spend ?? prev.reported_spend,
1005
+ });
1006
+ return { success: true, simulated: { media_buy_id, impressions, clicks, reported_spend } };
1007
+ },
1008
+ },
1009
+ },
1010
+ // ─── /TEST-ONLY ──────────────────────────────────────────────────
1011
+ }),
1012
+ {
1013
+ port: PORT,
1014
+ authenticate: verifyApiKey({
1015
+ keys: { [ADCP_AUTH_TOKEN]: { principal: 'compliance-runner' } },
1016
+ }),
1017
+ }
1018
+ );
1019
+
1020
+ console.log(`sales-non-guaranteed adapter on http://127.0.0.1:${PORT}/mcp · upstream: ${UPSTREAM_URL}`);