@adcp/sdk 6.9.0 → 6.10.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 (233) hide show
  1. package/bin/adcp.js +285 -5
  2. package/compliance/cache/3.0.6.previous/domains/brand/index.yaml +163 -0
  3. package/compliance/cache/3.0.6.previous/domains/creative/index.yaml +412 -0
  4. package/compliance/cache/3.0.6.previous/domains/governance/index.yaml +683 -0
  5. package/compliance/cache/3.0.6.previous/domains/media-buy/creative-reception.yaml +247 -0
  6. package/compliance/cache/3.0.6.previous/domains/media-buy/index.yaml +769 -0
  7. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  8. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  9. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  10. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  11. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  12. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  13. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  14. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  15. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  16. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  17. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  18. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  19. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  20. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
  21. package/compliance/cache/3.0.6.previous/domains/media-buy/state-machine.yaml +442 -0
  22. package/compliance/cache/3.0.6.previous/domains/signals/index.yaml +266 -0
  23. package/compliance/cache/3.0.6.previous/domains/sponsored-intelligence/index.yaml +256 -0
  24. package/compliance/cache/3.0.6.previous/index.json +324 -0
  25. package/compliance/cache/3.0.6.previous/protocols/brand/index.yaml +163 -0
  26. package/compliance/cache/3.0.6.previous/protocols/creative/index.yaml +412 -0
  27. package/compliance/cache/3.0.6.previous/protocols/governance/index.yaml +683 -0
  28. package/compliance/cache/3.0.6.previous/protocols/media-buy/creative-reception.yaml +247 -0
  29. package/compliance/cache/3.0.6.previous/protocols/media-buy/index.yaml +769 -0
  30. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  31. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  32. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  33. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  34. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  35. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  36. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  37. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  38. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  39. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  40. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  41. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  42. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  43. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  44. package/compliance/cache/3.0.6.previous/protocols/media-buy/state-machine.yaml +442 -0
  45. package/compliance/cache/3.0.6.previous/protocols/signals/index.yaml +266 -0
  46. package/compliance/cache/3.0.6.previous/protocols/sponsored-intelligence/index.yaml +256 -0
  47. package/compliance/cache/3.0.6.previous/specialisms/audience-sync/index.yaml +280 -0
  48. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/index.yaml +350 -0
  49. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  50. package/compliance/cache/3.0.6.previous/specialisms/collection-lists/index.yaml +359 -0
  51. package/compliance/cache/3.0.6.previous/specialisms/content-standards/index.yaml +572 -0
  52. package/compliance/cache/3.0.6.previous/specialisms/creative-ad-server/index.yaml +383 -0
  53. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
  54. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/index.yaml +746 -0
  55. package/compliance/cache/3.0.6.previous/specialisms/creative-template/index.yaml +413 -0
  56. package/compliance/cache/3.0.6.previous/specialisms/governance-aware-seller/index.yaml +136 -0
  57. package/compliance/cache/3.0.6.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
  58. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
  59. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/index.yaml +330 -0
  60. package/compliance/cache/3.0.6.previous/specialisms/property-lists/index.yaml +482 -0
  61. package/compliance/cache/3.0.6.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
  62. package/compliance/cache/3.0.6.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
  63. package/compliance/cache/3.0.6.previous/specialisms/sales-guaranteed/index.yaml +504 -0
  64. package/compliance/cache/3.0.6.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
  65. package/compliance/cache/3.0.6.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
  66. package/compliance/cache/3.0.6.previous/specialisms/sales-social/index.yaml +584 -0
  67. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/index.yaml +415 -0
  68. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  69. package/compliance/cache/3.0.6.previous/specialisms/signal-owned/index.yaml +316 -0
  70. package/compliance/cache/3.0.6.previous/test-kits/acme-outdoor.yaml +210 -0
  71. package/compliance/cache/3.0.6.previous/test-kits/bistro-oranje.yaml +126 -0
  72. package/compliance/cache/3.0.6.previous/test-kits/nova-motors.yaml +262 -0
  73. package/compliance/cache/3.0.6.previous/test-kits/osei-natural.yaml +126 -0
  74. package/compliance/cache/3.0.6.previous/test-kits/signed-requests-runner.yaml +155 -0
  75. package/compliance/cache/3.0.6.previous/test-kits/substitution-observer-runner.yaml +690 -0
  76. package/compliance/cache/3.0.6.previous/test-kits/summit-foods.yaml +125 -0
  77. package/compliance/cache/3.0.6.previous/test-kits/webhook-receiver-runner.yaml +265 -0
  78. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  79. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
  80. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  81. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  82. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  83. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  84. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  85. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  86. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  87. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  88. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  89. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/README.md +219 -0
  90. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/canonicalization.json +241 -0
  91. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/keys.json +60 -0
  92. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  93. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  94. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  95. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  96. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  97. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  98. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  99. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  100. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  101. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  102. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  103. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  104. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  105. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  106. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  107. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  108. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  109. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  110. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  111. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  112. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  113. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  114. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  115. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  116. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  117. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  118. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  119. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  120. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  121. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  122. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  123. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  124. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  125. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  126. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  127. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  128. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  129. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  130. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  131. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/README.md +211 -0
  132. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/keys.json +61 -0
  133. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  134. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  135. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  136. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  137. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  138. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  139. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  140. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  141. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  142. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  143. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  144. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  145. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  146. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  147. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  148. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  149. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  150. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  151. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  152. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  153. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  154. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  155. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  156. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  157. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  158. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  159. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  160. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  161. package/compliance/cache/3.0.6.previous/universal/capability-discovery.yaml +125 -0
  162. package/compliance/cache/3.0.6.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
  163. package/compliance/cache/3.0.6.previous/universal/content-standards-pagination-integrity.yaml +326 -0
  164. package/compliance/cache/3.0.6.previous/universal/deterministic-testing.yaml +1343 -0
  165. package/compliance/cache/3.0.6.previous/universal/error-compliance.yaml +474 -0
  166. package/compliance/cache/3.0.6.previous/universal/fictional-entities.yaml +307 -0
  167. package/compliance/cache/3.0.6.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
  168. package/compliance/cache/3.0.6.previous/universal/get-signals-pagination-integrity.yaml +211 -0
  169. package/compliance/cache/3.0.6.previous/universal/idempotency.yaml +593 -0
  170. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
  171. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
  172. package/compliance/cache/3.0.6.previous/universal/pagination-integrity.yaml +263 -0
  173. package/compliance/cache/3.0.6.previous/universal/property-lists-pagination-integrity.yaml +307 -0
  174. package/compliance/cache/3.0.6.previous/universal/runner-output-contract.yaml +358 -0
  175. package/compliance/cache/3.0.6.previous/universal/schema-validation.yaml +526 -0
  176. package/compliance/cache/3.0.6.previous/universal/security.yaml +431 -0
  177. package/compliance/cache/3.0.6.previous/universal/signed-requests.yaml +205 -0
  178. package/compliance/cache/3.0.6.previous/universal/storyboard-schema.yaml +1176 -0
  179. package/compliance/cache/3.0.6.previous/universal/v3-envelope-integrity.yaml +106 -0
  180. package/compliance/cache/3.0.6.previous/universal/webhook-emission.yaml +337 -0
  181. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  182. package/dist/lib/server/create-adcp-server.d.ts +33 -0
  183. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  184. package/dist/lib/server/create-adcp-server.js +127 -1
  185. package/dist/lib/server/create-adcp-server.js.map +1 -1
  186. package/dist/lib/server/credential-policy.d.ts +221 -0
  187. package/dist/lib/server/credential-policy.d.ts.map +1 -0
  188. package/dist/lib/server/credential-policy.js +260 -0
  189. package/dist/lib/server/credential-policy.js.map +1 -0
  190. package/dist/lib/server/dynamic-registry.d.ts +219 -0
  191. package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
  192. package/dist/lib/server/dynamic-registry.js +245 -0
  193. package/dist/lib/server/dynamic-registry.js.map +1 -0
  194. package/dist/lib/server/index.d.ts +8 -0
  195. package/dist/lib/server/index.d.ts.map +1 -1
  196. package/dist/lib/server/index.js +15 -4
  197. package/dist/lib/server/index.js.map +1 -1
  198. package/dist/lib/server/operational-platform.d.ts +239 -0
  199. package/dist/lib/server/operational-platform.d.ts.map +1 -0
  200. package/dist/lib/server/operational-platform.js +94 -0
  201. package/dist/lib/server/operational-platform.js.map +1 -0
  202. package/dist/lib/server/wire-safe.d.ts +211 -0
  203. package/dist/lib/server/wire-safe.d.ts.map +1 -0
  204. package/dist/lib/server/wire-safe.js +231 -0
  205. package/dist/lib/server/wire-safe.js.map +1 -0
  206. package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
  207. package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
  208. package/dist/lib/server/wire-spec-fields.generated.js +172 -0
  209. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
  210. package/dist/lib/testing/compliance/index.d.ts +2 -0
  211. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  212. package/dist/lib/testing/compliance/index.js +6 -1
  213. package/dist/lib/testing/compliance/index.js.map +1 -1
  214. package/dist/lib/testing/compliance/summary.d.ts +77 -0
  215. package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
  216. package/dist/lib/testing/compliance/summary.js +176 -0
  217. package/dist/lib/testing/compliance/summary.js.map +1 -0
  218. package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
  219. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  220. package/dist/lib/testing/storyboard/compliance.js +51 -0
  221. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  222. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  223. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  224. package/dist/lib/testing/storyboard/index.js +4 -2
  225. package/dist/lib/testing/storyboard/index.js.map +1 -1
  226. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  227. package/dist/lib/testing/storyboard/runner.js +58 -5
  228. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  229. package/dist/lib/version.d.ts +3 -3
  230. package/dist/lib/version.d.ts.map +1 -1
  231. package/dist/lib/version.js +3 -3
  232. package/dist/lib/version.js.map +1 -1
  233. package/package.json +2 -2
@@ -0,0 +1,413 @@
1
+ id: creative_template
2
+ version: "1.0.0"
3
+ title: "Creative template and transformation agent"
4
+ protocol: creative
5
+ category: creative_template
6
+ summary: "Stateless creative agent that takes assets in, applies templates, and produces tags or rendered output."
7
+ track: creative
8
+ required_tools:
9
+ - build_creative
10
+
11
+ # Cross-step assertion (adcp#2664). status.monotonic rejects resource
12
+ # status transitions observed across steps that aren't on the spec
13
+ # lifecycle graph — e.g. approved → processing on a creative asset.
14
+ invariants:
15
+ - status.monotonic
16
+
17
+ narrative: |
18
+ You build a creative management or rich media platform — think Celtra, a format
19
+ conversion service, or any tool that defines ad templates and transforms input assets
20
+ into finished creatives. Your agent is stateless: every call is self-contained. The
21
+ caller passes assets inline with each request, and you return the result. There is no
22
+ creative library to sync to and no persistent state between calls.
23
+
24
+ A buyer agent connects to discover your templates, preview them with real brand assets,
25
+ and request fully built creatives for trafficking. This storyboard walks through that
26
+ flow step by step.
27
+
28
+ agent:
29
+ interaction_model: stateless_transform
30
+ capabilities:
31
+ - supports_transformation
32
+ examples:
33
+ - "Celtra"
34
+ - "Format conversion services"
35
+ - "Rich media template platforms"
36
+
37
+ caller:
38
+ role: buyer_agent
39
+ example: "Scope3 (DSP)"
40
+
41
+ prerequisites:
42
+ description: |
43
+ The caller needs a brand identity (brand.json with colors, fonts, logos) and creative
44
+ assets that match the format's requirements (images at the right dimensions, text at
45
+ the right lengths). The test kit provides these ingredients so you can test without
46
+ assembling them yourself.
47
+ test_kit: "test-kits/acme-outdoor.yaml"
48
+
49
+ phases:
50
+ - id: capability_discovery
51
+ title: "Capability discovery"
52
+ narrative: |
53
+ The buyer calls get_adcp_capabilities to confirm the agent supports creative operations before browsing or building creatives.
54
+
55
+ steps:
56
+ - id: get_capabilities
57
+ title: "Check agent capabilities"
58
+ narrative: |
59
+ Verify that the agent declares the expected protocol support before
60
+ proceeding with domain-specific operations.
61
+ task: get_adcp_capabilities
62
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
63
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
64
+ doc_ref: "/protocol/get_adcp_capabilities"
65
+ comply_scenario: capability_discovery
66
+ stateful: false
67
+ expected: |
68
+ Return capabilities declaring creative in supported_protocols, confirming the agent handles creative operations.
69
+ sample_request:
70
+ context:
71
+ correlation_id: "creative_template--get_capabilities"
72
+ validations:
73
+ - check: response_schema
74
+ description: "Response matches get-adcp-capabilities-response.json schema"
75
+ - check: field_present
76
+ path: "supported_protocols"
77
+ description: "Agent declares supported protocols"
78
+
79
+ - check: field_present
80
+ path: "context"
81
+ description: "Response echoes back the context object"
82
+ - check: field_value
83
+ path: "context.correlation_id"
84
+ value: "creative_template--get_capabilities"
85
+ description: "Context correlation_id returned unchanged"
86
+ - id: format_exposure
87
+ title: "Format discovery"
88
+ narrative: |
89
+ The buyer's first question is: what can your platform do? They call
90
+ list_creative_formats to discover your templates — the available ad formats,
91
+ what assets each one requires, what dimensions they render at, and what
92
+ variables (dynamic fields) they support.
93
+
94
+ For a Celtra-like platform, this is where your publisher templates (Yahoo
95
+ Lighthouse, custom slider units) and standard templates (300x250 banners,
96
+ responsive display) get exposed as AdCP-compliant format definitions.
97
+
98
+ steps:
99
+ - id: discover_formats
100
+ title: "Discover available formats"
101
+ narrative: |
102
+ A buyer agent asks: "What creative formats do you support?" This is
103
+ the entry point for any interaction with your agent. The response tells
104
+ the buyer what templates are available, what assets each one needs, and
105
+ what the output dimensions will be.
106
+ task: list_creative_formats
107
+ schema_ref: "creative/list-creative-formats-request.json"
108
+ response_schema_ref: "creative/list-creative-formats-response.json"
109
+ doc_ref: "/creative/task-reference/list_creative_formats"
110
+ comply_scenario: creative_sync
111
+ stateful: false
112
+ expected: |
113
+ Return your supported formats. Each format must include:
114
+ - format_id with your agent_url and a unique id
115
+ - Human-readable name and description
116
+ - Asset slots with types, roles, and requirements (dimensions, file sizes, mime types)
117
+ - Render dimensions (width/height per render)
118
+ - Variables array if the format supports dynamic fields (text, colors, images)
119
+
120
+ sample_request:
121
+ context:
122
+ correlation_id: "creative_template--discover_formats"
123
+
124
+ validations:
125
+ - check: response_schema
126
+ description: "Response matches list-creative-formats-response.json schema"
127
+ - check: field_present
128
+ path: "formats"
129
+ description: "Response contains a formats array"
130
+ - check: field_present
131
+ path: "formats[0].format_id.agent_url"
132
+ description: "Each format has a format_id with agent_url"
133
+ - check: field_present
134
+ path: "formats[0].assets"
135
+ description: "Each format defines its asset requirements"
136
+ - check: field_present
137
+ path: "formats[0].renders"
138
+ description: "Each format defines its render dimensions"
139
+
140
+ - check: field_present
141
+ path: "context"
142
+ description: "Response echoes back the context object"
143
+ - check: field_value
144
+ path: "context.correlation_id"
145
+ value: "creative_template--discover_formats"
146
+ description: "Context correlation_id returned unchanged"
147
+ - id: filter_by_type
148
+ title: "Filter formats by type"
149
+ narrative: |
150
+ The buyer narrows the search. Maybe they only want display formats, or
151
+ they need formats that accept image assets at specific dimensions. This
152
+ tests that your agent handles filter parameters correctly.
153
+ task: list_creative_formats
154
+ schema_ref: "creative/list-creative-formats-request.json"
155
+ response_schema_ref: "creative/list-creative-formats-response.json"
156
+ doc_ref: "/creative/task-reference/list_creative_formats"
157
+ comply_scenario: creative_sync
158
+ stateful: false
159
+ expected: |
160
+ Return only formats matching the filter criteria. If no formats match,
161
+ return an empty formats array — not an error.
162
+
163
+ sample_request:
164
+ type: "display"
165
+ max_width: 728
166
+ max_height: 90
167
+
168
+ context:
169
+ correlation_id: "creative_template--filter_by_type"
170
+ validations:
171
+ - check: response_schema
172
+ description: "Response matches schema"
173
+
174
+ - check: field_present
175
+ path: "context"
176
+ description: "Response echoes back the context object"
177
+ - check: field_value
178
+ path: "context.correlation_id"
179
+ value: "creative_template--filter_by_type"
180
+ description: "Context correlation_id returned unchanged"
181
+ - check: field_present
182
+ path: "formats[0].format_id.agent_url"
183
+ description: "Format IDs include agent_url"
184
+ - check: field_present
185
+ path: "formats[0].format_id.id"
186
+ description: "Format IDs include id — must match those in get_products"
187
+ - id: preview
188
+ title: "Preview with real assets"
189
+ narrative: |
190
+ The buyer wants to see what the template looks like with actual content.
191
+ They pass a complete creative manifest inline — brand identity, assets,
192
+ and format reference — and your agent renders a preview.
193
+
194
+ This is where the stateless nature matters: the buyer doesn't sync assets
195
+ to your library first. Everything needed is in the request.
196
+
197
+ To test this, you need compatible "ingredients" — a brand.json and assets
198
+ that match your format's requirements. The test kit provides these.
199
+
200
+ steps:
201
+ - id: preview_creative
202
+ title: "Preview a creative"
203
+ narrative: |
204
+ The buyer has chosen a format from Phase 1 and assembled a manifest with
205
+ brand assets. They call preview_creative with the full manifest inline to
206
+ see how the template renders with real content.
207
+
208
+ For a Celtra-like platform, this is where the template gets populated with
209
+ the advertiser's images, copy, and brand colors, and a preview URL or HTML
210
+ snippet is returned.
211
+ task: preview_creative
212
+ schema_ref: "creative/preview-creative-request.json"
213
+ response_schema_ref: "creative/preview-creative-response.json"
214
+ doc_ref: "/creative/task-reference/preview_creative"
215
+ comply_scenario: creative_flow
216
+ stateful: false
217
+ expected: |
218
+ Return a preview render. The response should include:
219
+ - A preview URL (iframe-embeddable) and/or inline HTML
220
+ - Render dimensions matching the format spec
221
+ - An expiration timestamp (previews are ephemeral)
222
+
223
+ The preview should show the template populated with the provided assets —
224
+ not a placeholder or empty template.
225
+
226
+ sample_request:
227
+ account:
228
+ brand:
229
+ domain: "acmeoutdoor.example"
230
+ operator: "pinnacle-agency.example"
231
+ request_type: "single"
232
+ creative_manifest:
233
+ format_id:
234
+ agent_url: "https://your-agent.example.com"
235
+ id: "display_300x250"
236
+ assets:
237
+ image:
238
+ asset_type: "image"
239
+ url: "https://test-assets.adcontextprotocol.org/acme-outdoor/hero-300x250.jpg"
240
+ width: 300
241
+ height: 250
242
+ click_url:
243
+ asset_type: "url"
244
+ url: "https://acmeoutdoor.example/summer-sale"
245
+ headline:
246
+ asset_type: "text"
247
+ content: "Summer Sale — 40% Off All Gear"
248
+ output_format: "url"
249
+ quality: "draft"
250
+
251
+ context:
252
+ correlation_id: "creative_template--preview_creative"
253
+ validations:
254
+ - check: response_schema
255
+ description: "Response matches preview-creative-response.json schema"
256
+ - check: field_present
257
+ path: "previews[0].renders[0].preview_url"
258
+ description: "Preview includes a renderable URL"
259
+
260
+ - check: field_present
261
+ path: "context"
262
+ description: "Response echoes back the context object"
263
+ - check: field_value
264
+ path: "context.correlation_id"
265
+ value: "creative_template--preview_creative"
266
+ description: "Context correlation_id returned unchanged"
267
+ - id: build
268
+ title: "Full build (transformation)"
269
+ narrative: |
270
+ Now the buyer needs a finished creative — a serving tag or rendered output they
271
+ can traffic in a media buy. They call build_creative with the same inline manifest
272
+ and a target format. Your agent applies the template and returns the output.
273
+
274
+ This is where the three tag generation models come in:
275
+ - Universal tags: a single tag that adapts to any environment
276
+ - Single-placement tags: scoped to specific dimensions
277
+ - Multi-placement tags: covering multiple sizes in one tag
278
+
279
+ The output is a creative manifest with the serving code in an HTML, JavaScript,
280
+ or VAST asset — ready for the buyer to traffic.
281
+
282
+ steps:
283
+ - id: build_creative
284
+ title: "Build a creative from assets"
285
+ narrative: |
286
+ The buyer passes assets inline along with a target format and asks your agent
287
+ to produce a finished creative. This is the core transformation: raw assets in,
288
+ serving tag out.
289
+
290
+ For a Celtra-like platform, this means applying the template, assembling the
291
+ rich media unit, and returning an ad tag the buyer can traffic.
292
+ task: build_creative
293
+ schema_ref: "media-buy/build-creative-request.json"
294
+ response_schema_ref: "media-buy/build-creative-response.json"
295
+ doc_ref: "/creative/task-reference/build_creative"
296
+ comply_scenario: creative_flow
297
+ stateful: false
298
+ expected: |
299
+ Return a creative manifest with the output creative. The response should include:
300
+ - A creative manifest with serving code (html, javascript, or vast asset)
301
+ - The format_id matching the target format
302
+ - Assets array with the generated output
303
+
304
+ The output should be a valid, traffickable creative — not a preview or placeholder.
305
+
306
+ sample_request:
307
+ creative_manifest:
308
+ format_id:
309
+ agent_url: "https://your-agent.example.com"
310
+ id: "display_300x250"
311
+ assets:
312
+ image:
313
+ asset_type: "image"
314
+ url: "https://test-assets.adcontextprotocol.org/acme-outdoor/hero-300x250.jpg"
315
+ width: 300
316
+ height: 250
317
+ click_url:
318
+ asset_type: "url"
319
+ url: "https://acmeoutdoor.example/summer-sale"
320
+ headline:
321
+ asset_type: "text"
322
+ content: "Summer Sale — 40% Off All Gear"
323
+ target_format_id:
324
+ agent_url: "https://your-agent.example.com"
325
+ id: "display_300x250"
326
+ account:
327
+ brand:
328
+ domain: "acmeoutdoor.example"
329
+ operator: "pinnacle-agency.example"
330
+
331
+ idempotency_key: "$generate:uuid_v4#creative_template_build_build_creative"
332
+ context:
333
+ correlation_id: "creative_template--build_creative"
334
+ validations:
335
+ - check: response_schema
336
+ description: "Response matches build-creative-response.json schema"
337
+ - check: field_present
338
+ path: "creative_manifest.assets"
339
+ description: "Output manifest includes assets"
340
+ - check: field_present
341
+ path: "creative_manifest.format_id"
342
+ description: "Output manifest includes format_id"
343
+
344
+ - check: field_present
345
+ path: "context"
346
+ description: "Response echoes back the context object"
347
+ - check: field_value
348
+ path: "context.correlation_id"
349
+ value: "creative_template--build_creative"
350
+ description: "Context correlation_id returned unchanged"
351
+ - id: build_multi_format
352
+ title: "Build for multiple formats"
353
+ narrative: |
354
+ The buyer needs the same creative adapted to several sizes — 300x250, 728x90,
355
+ and 320x50. Instead of making three separate calls, they pass target_format_ids
356
+ (plural) and your agent returns manifests for each.
357
+
358
+ This tests the multi-format generation capability that makes template agents
359
+ valuable — build once, get all sizes.
360
+ task: build_creative
361
+ schema_ref: "media-buy/build-creative-request.json"
362
+ response_schema_ref: "media-buy/build-creative-response.json"
363
+ doc_ref: "/creative/task-reference/build_creative"
364
+ comply_scenario: creative_flow
365
+ stateful: false
366
+ expected: |
367
+ Return creative manifests for each requested format. If a format cannot be
368
+ produced, include it in the response with an error — don't fail the entire
369
+ request.
370
+
371
+ sample_request:
372
+ creative_manifest:
373
+ format_id:
374
+ agent_url: "https://your-agent.example.com"
375
+ id: "source_master"
376
+ assets:
377
+ image:
378
+ asset_type: "image"
379
+ url: "https://test-assets.adcontextprotocol.org/acme-outdoor/hero-master.jpg"
380
+ width: 1200
381
+ height: 628
382
+ click_url:
383
+ asset_type: "url"
384
+ url: "https://acmeoutdoor.example/summer-sale"
385
+ headline:
386
+ asset_type: "text"
387
+ content: "Summer Sale — 40% Off All Gear"
388
+ target_format_ids:
389
+ - agent_url: "https://your-agent.example.com"
390
+ id: "display_300x250"
391
+ - agent_url: "https://your-agent.example.com"
392
+ id: "display_728x90"
393
+ - agent_url: "https://your-agent.example.com"
394
+ id: "display_320x50"
395
+ account:
396
+ brand:
397
+ domain: "acmeoutdoor.example"
398
+ operator: "pinnacle-agency.example"
399
+
400
+ idempotency_key: "$generate:uuid_v4#creative_template_build_build_multi_format"
401
+ context:
402
+ correlation_id: "creative_template--build_multi_format"
403
+ validations:
404
+ - check: response_schema
405
+ description: "Response matches schema"
406
+
407
+ - check: field_present
408
+ path: "context"
409
+ description: "Response echoes back the context object"
410
+ - check: field_value
411
+ path: "context.correlation_id"
412
+ value: "creative_template--build_multi_format"
413
+ description: "Context correlation_id returned unchanged"
@@ -0,0 +1,136 @@
1
+ id: governance_aware_seller
2
+ version: "1.0.0"
3
+ title: "Governance-aware seller"
4
+ protocol: media-buy
5
+ category: governance_aware_seller
6
+ summary: "Seller agent that composes with a campaign-governance agent on the buyer side — accepts sync_governance, calls check_governance before confirming spend, and propagates governance approvals, conditions, and denials unchanged. Optional claim; pure sellers without governance composition do not claim this specialism and skip the governance scenarios as not_applicable."
7
+ track: media_buy
8
+ required_tools:
9
+ - sync_governance
10
+ - create_media_buy
11
+
12
+ # Cross-step assertion (adcp#2639): governance-aware sellers are exactly
13
+ # the surface this assertion protects. If a seller propagates a denial
14
+ # response from its governance agent but then creates the media buy
15
+ # anyway, no per-step validation notices — this assertion does.
16
+ # Cross-step assertion (adcp#2664): status.monotonic rejects media_buy
17
+ # status transitions observed across steps that aren't on the spec
18
+ # lifecycle graph — catches an approved-with-conditions buy jumping
19
+ # from pending_creatives back to pending_start, or active → pending_creatives.
20
+ invariants:
21
+ - governance.denial_blocks_mutation
22
+ - status.monotonic
23
+ requires_scenarios:
24
+ - media_buy_seller/governance_approved
25
+ - media_buy_seller/governance_conditions
26
+ - media_buy_seller/governance_denied
27
+ - media_buy_seller/governance_denied_recovery
28
+
29
+ narrative: |
30
+ Governance composition is an optional seller capability. A seller agent can be
31
+ fully spec-compliant without integrating with a buyer-side governance agent —
32
+ it accepts `create_media_buy`, validates the request against its own rules
33
+ (budget, inventory, creative), and returns success or a seller-scoped error
34
+ (`VALIDATION_ERROR`, `INVENTORY_UNAVAILABLE`, `TERMS_REJECTED`, etc.). The
35
+ governance handshake — `sync_governance` registration, `check_governance`
36
+ consultation before confirming spend, and `GOVERNANCE_DENIED` / governance
37
+ condition propagation — is only exercisable by a seller that has opted into
38
+ composing with the buyer's governance agent.
39
+
40
+ Sellers that want to advertise "I honor the buyer's governance plan" claim
41
+ this specialism. The grading exercises the four scenarios that require the
42
+ governance handshake:
43
+ - `governance_approved` — seller accepts a buy that governance approved and
44
+ echoes the `governance_context` token back,
45
+ - `governance_conditions` — seller accepts a buy with conditions attached by
46
+ governance and propagates them through to the response,
47
+ - `governance_denied` — seller refuses a buy that governance denied and
48
+ returns `GOVERNANCE_DENIED` with the governance findings,
49
+ - `governance_denied_recovery` — seller accepts the corrected retry that
50
+ falls within the plan limits after the buyer reads the denial findings.
51
+
52
+ Sellers that do not claim this specialism are graded `not_applicable` on
53
+ these scenarios rather than failed. This mirrors the pattern used by the
54
+ other governance-* specialisms (`governance-spend-authority`,
55
+ `governance-delivery-monitor`) and by `measurement-verification` —
56
+ cross-cutting capabilities that involve campaign behavior are gated behind
57
+ explicit specialism claims instead of being force-included under every
58
+ sales-* specialism. (`signed-requests` was previously listed here; it was
59
+ reclassified in 3.1 to a universal capability-gated storyboard.)
60
+
61
+ Composition means the seller:
62
+ - accepts `sync_governance` to register the buyer's governance agent URL and
63
+ authority categories,
64
+ - calls `check_governance` on the registered agent before confirming a
65
+ spend-committing request,
66
+ - returns `GOVERNANCE_DENIED` with the governance findings propagated
67
+ unchanged when the check denies,
68
+ - echoes the `governance_context` token from approvals and surfaces
69
+ governance conditions to the buyer,
70
+ - does not silently downgrade the denial to a seller-scoped error
71
+ (`VALIDATION_ERROR` etc.) — the buyer needs to know the denial came from
72
+ its own governance agent to correct and retry.
73
+
74
+ agent:
75
+ interaction_model: media_buy_seller
76
+ capabilities:
77
+ - sells_media
78
+ - governance_aware
79
+ examples:
80
+ - "Publisher seller that integrates sync_governance and check_governance"
81
+ - "SSP that honors buyer-side governance plans before confirming bids"
82
+ - "Retail media network that refuses buys when the buyer's governance denies"
83
+
84
+ caller:
85
+ role: buyer_agent
86
+ example: "Pinnacle Agency (buyer) with a registered governance agent"
87
+
88
+ prerequisites:
89
+ description: |
90
+ A governance agent that supports `sync_plans` and `check_governance`, and
91
+ a seller agent that supports `sync_governance` and propagates governance
92
+ approvals, conditions, and denials unchanged.
93
+
94
+ By default, the grading runner uses the training governance agent at
95
+ `test-agent.adcontextprotocol.org`. Override with `--governance-agent-url`
96
+ to use a custom governance agent that satisfies the campaign-governance
97
+ protocol.
98
+ test_kit: "test-kits/acme-outdoor.yaml"
99
+
100
+ phases:
101
+ - id: capability_discovery
102
+ title: "Capability discovery"
103
+ narrative: |
104
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before sending briefs or creating buys.
105
+
106
+ steps:
107
+ - id: get_capabilities
108
+ title: "Check agent capabilities"
109
+ narrative: |
110
+ Verify that the agent declares the expected protocol support before
111
+ proceeding with domain-specific operations.
112
+ task: get_adcp_capabilities
113
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
114
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
115
+ doc_ref: "/protocol/get_adcp_capabilities"
116
+ comply_scenario: capability_discovery
117
+ stateful: false
118
+ expected: |
119
+ Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
120
+ sample_request:
121
+ context:
122
+ correlation_id: "governance_aware_seller--get_capabilities"
123
+ validations:
124
+ - check: response_schema
125
+ description: "Response matches get-adcp-capabilities-response.json schema"
126
+ - check: field_present
127
+ path: "supported_protocols"
128
+ description: "Agent declares supported protocols"
129
+
130
+ - check: field_present
131
+ path: "context"
132
+ description: "Response echoes back the context object"
133
+ - check: field_value
134
+ path: "context.correlation_id"
135
+ value: "governance_aware_seller--get_capabilities"
136
+ description: "Context correlation_id returned unchanged"