@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,474 @@
1
+ id: error_compliance
2
+ version: "1.0.0"
3
+ title: "Error handling and compliance"
4
+ category: error_compliance
5
+ summary: "Validates that agents return properly structured AdCP errors with correct codes, recovery hints, and transport bindings."
6
+ track: error_handling
7
+ required_tools:
8
+ - get_products
9
+
10
+ narrative: |
11
+ Every AdCP agent must handle invalid input gracefully. When a buyer sends a negative budget,
12
+ a nonexistent product ID, or a malformed request, the agent should return a structured error
13
+ response — not a stack trace or a generic 500.
14
+
15
+ AdCP defines three compliance levels for error responses:
16
+ - L1: isError flag set on the MCP response
17
+ - L2: JSON text fallback with adcp_error object in content
18
+ - L3: structuredContent.adcp_error binding (full compliance)
19
+
20
+ This storyboard sends intentionally bad input and validates that the agent rejects it with
21
+ the correct error code, recovery classification, and transport binding. Agents that use the
22
+ adcpError() helper from @adcp/client get L3 compliance automatically.
23
+
24
+ Context echo is required on error responses — the correlation ID is even more important for
25
+ error diagnosis than for success cases. Every error response must include the caller's context
26
+ object unchanged. This contract applies to application-level errors (your tool handler returns
27
+ an error). MCP transport errors (unknown tool, malformed request) are outside the agent's
28
+ control and do not carry AdCP context.
29
+
30
+ agent:
31
+ interaction_model: media_buy_seller
32
+ capabilities:
33
+ - sells_media
34
+ examples:
35
+ - "Any AdCP seller agent"
36
+
37
+ caller:
38
+ role: buyer_agent
39
+ example: "Compliance test harness"
40
+
41
+ prerequisites:
42
+ description: |
43
+ No special prerequisites. The storyboard sends intentionally invalid requests
44
+ to test error handling.
45
+ test_kit: "test-kits/acme-outdoor.yaml"
46
+
47
+ phases:
48
+ - id: capability_discovery
49
+ title: "Capability discovery"
50
+ narrative: |
51
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before testing error handling.
52
+
53
+ steps:
54
+ - id: get_capabilities
55
+ title: "Check agent capabilities"
56
+ narrative: |
57
+ Verify that the agent declares the expected protocol support before
58
+ proceeding with domain-specific operations.
59
+ task: get_adcp_capabilities
60
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
61
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
62
+ doc_ref: "/protocol/get_adcp_capabilities"
63
+ comply_scenario: capability_discovery
64
+ stateful: false
65
+ expected: |
66
+ Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
67
+ sample_request:
68
+ context:
69
+ correlation_id: "error_compliance--get_capabilities"
70
+ validations:
71
+ - check: response_schema
72
+ description: "Response matches get-adcp-capabilities-response.json schema"
73
+ - check: field_present
74
+ path: "supported_protocols"
75
+ description: "Agent declares supported protocols"
76
+
77
+ - check: field_present
78
+ path: "context"
79
+ description: "Response echoes back the context object"
80
+ - check: field_value
81
+ path: "context.correlation_id"
82
+ value: "error_compliance--get_capabilities"
83
+ description: "Context correlation_id returned unchanged"
84
+ - id: error_responses
85
+ title: "Error responses for invalid input"
86
+ narrative: |
87
+ The buyer sends requests with intentionally invalid data — negative budgets, missing
88
+ required fields, nonexistent product IDs. Each request should be rejected with a
89
+ structured error containing an appropriate AdCP error code.
90
+
91
+ steps:
92
+ - id: negative_budget
93
+ title: "Reject negative budget"
94
+ narrative: |
95
+ A negative budget is never valid. The agent must reject this with a structured
96
+ AdCP error — VALIDATION_ERROR is the canonical code for business-rule violations
97
+ that pass schema validation (a number is present, it just can't be negative).
98
+ INVALID_REQUEST is accepted as a reasonable alternative.
99
+ task: create_media_buy
100
+ schema_ref: "media-buy/create-media-buy-request.json"
101
+ response_schema_ref: "media-buy/create-media-buy-response.json"
102
+ doc_ref: "/media-buy/task-reference/create_media_buy"
103
+ comply_scenario: error_handling
104
+ expect_error: true
105
+ negative_path: schema_invalid
106
+ stateful: false
107
+ expected: |
108
+ Reject the request with an error containing:
109
+ - code: VALIDATION_ERROR or INVALID_REQUEST
110
+ - recovery: correctable
111
+ - field: packages[0].budget (optional but recommended)
112
+
113
+ sample_request:
114
+ brand:
115
+ domain: "acmeoutdoor.example"
116
+ account:
117
+ brand:
118
+ domain: "acmeoutdoor.example"
119
+ operator: "pinnacle-agency.example"
120
+ idempotency_key: "error-test-negative-budget"
121
+ start_time: "2026-05-01T00:00:00Z"
122
+ end_time: "2026-05-31T23:59:59Z"
123
+ packages:
124
+ - product_id: "test-product"
125
+ budget: -500
126
+ pricing_option_id: "test-pricing"
127
+
128
+ context:
129
+ correlation_id: "error_compliance--negative_budget"
130
+ validations:
131
+ - check: error_code
132
+ allowed_values: ["VALIDATION_ERROR", "INVALID_REQUEST", "BUDGET_TOO_LOW"]
133
+ description: "Error code is VALIDATION_ERROR, INVALID_REQUEST, or BUDGET_TOO_LOW"
134
+
135
+ - check: field_present
136
+ path: "context"
137
+ description: "Response echoes back the context object"
138
+ - check: field_value
139
+ path: "context.correlation_id"
140
+ value: "error_compliance--negative_budget"
141
+ description: "Context correlation_id returned unchanged"
142
+ - id: nonexistent_product
143
+ title: "Reject nonexistent product ID"
144
+ narrative: |
145
+ The buyer references a product ID that does not exist on this platform.
146
+ The agent should return PRODUCT_NOT_FOUND, PRODUCT_UNAVAILABLE, or INVALID_REQUEST
147
+ — any of these signals "this product is not sellable."
148
+ task: create_media_buy
149
+ expect_error: true
150
+ negative_path: payload_well_formed
151
+ schema_ref: "media-buy/create-media-buy-request.json"
152
+ response_schema_ref: "media-buy/create-media-buy-response.json"
153
+ doc_ref: "/media-buy/task-reference/create_media_buy"
154
+ comply_scenario: error_handling
155
+ stateful: false
156
+ expected: |
157
+ Reject the request with:
158
+ - code: PRODUCT_NOT_FOUND, PRODUCT_UNAVAILABLE, or INVALID_REQUEST
159
+ - recovery: correctable
160
+
161
+ sample_request:
162
+ brand:
163
+ domain: "acmeoutdoor.example"
164
+ account:
165
+ brand:
166
+ domain: "acmeoutdoor.example"
167
+ operator: "pinnacle-agency.example"
168
+ idempotency_key: "error-test-nonexistent-product"
169
+ start_time: "2026-05-01T00:00:00Z"
170
+ end_time: "2026-05-31T23:59:59Z"
171
+ packages:
172
+ - product_id: "nonexistent-product-id-xyz"
173
+ budget: 10000
174
+ pricing_option_id: "test-pricing"
175
+
176
+ context:
177
+ correlation_id: "error_compliance--nonexistent_product"
178
+ validations:
179
+ - check: error_code
180
+ allowed_values: ["PRODUCT_NOT_FOUND", "PRODUCT_UNAVAILABLE", "INVALID_REQUEST"]
181
+ description: "Error code identifies the missing/unavailable product"
182
+
183
+ - check: field_present
184
+ path: "context"
185
+ description: "Response echoes back the context object"
186
+ - check: field_value
187
+ path: "context.correlation_id"
188
+ value: "error_compliance--nonexistent_product"
189
+ description: "Context correlation_id returned unchanged"
190
+ - id: missing_fields
191
+ title: "Reject empty get_products request"
192
+ narrative: |
193
+ Send a get_products request with no brief and no buying_mode. The agent should
194
+ either return products (treating it as a catalog browse) or return an error
195
+ requesting the missing brief.
196
+ task: get_products
197
+ schema_ref: "media-buy/get-products-request.json"
198
+ response_schema_ref: "media-buy/get-products-response.json"
199
+ doc_ref: "/media-buy/task-reference/get_products"
200
+ comply_scenario: error_handling
201
+ stateful: false
202
+ # The test value of this step is that buying_mode is missing — do not
203
+ # schema-validate the sample_request, or the lint would reject the
204
+ # very shape the step exists to exercise.
205
+ sample_request_skip_schema: true
206
+ expected: |
207
+ Either return products (treating empty request as browse) or return a
208
+ structured error requesting the missing brief. Both are valid.
209
+
210
+ sample_request:
211
+ account:
212
+ brand:
213
+ domain: "acmeoutdoor.example"
214
+ operator: "pinnacle-agency.example"
215
+
216
+ context:
217
+ correlation_id: "error_compliance--missing_fields"
218
+ validations:
219
+ - check: response_schema
220
+ description: "Response is either valid products or a structured error"
221
+
222
+ - check: field_present
223
+ path: "context"
224
+ description: "Response echoes back the context object"
225
+ - check: field_value
226
+ path: "context.correlation_id"
227
+ value: "error_compliance--missing_fields"
228
+ description: "Context correlation_id returned unchanged"
229
+ - id: reversed_dates_error
230
+ title: "Reject reversed dates with error code"
231
+ narrative: |
232
+ Send a create_media_buy with end_time before start_time. This is a business-rule
233
+ violation — both fields are valid ISO timestamps, but their relationship is not
234
+ coherent. The canonical code is VALIDATION_ERROR; INVALID_REQUEST is accepted.
235
+ task: create_media_buy
236
+ expect_error: true
237
+ negative_path: payload_well_formed
238
+ schema_ref: "media-buy/create-media-buy-request.json"
239
+ response_schema_ref: "media-buy/create-media-buy-response.json"
240
+ doc_ref: "/media-buy/task-reference/create_media_buy"
241
+ comply_scenario: error_handling
242
+ stateful: false
243
+ expected: |
244
+ Reject with:
245
+ - code: VALIDATION_ERROR or INVALID_REQUEST
246
+ - recovery: correctable
247
+
248
+ sample_request:
249
+ brand:
250
+ domain: "acmeoutdoor.example"
251
+ account:
252
+ brand:
253
+ domain: "acmeoutdoor.example"
254
+ operator: "pinnacle-agency.example"
255
+ idempotency_key: "error-test-reversed-dates"
256
+ start_time: "2026-12-31T00:00:00Z"
257
+ end_time: "2026-01-01T00:00:00Z"
258
+ packages:
259
+ - product_id: "test-product"
260
+ budget: 10000
261
+ pricing_option_id: "test-pricing"
262
+
263
+ context:
264
+ correlation_id: "error_compliance--reversed_dates_error"
265
+ validations:
266
+ - check: error_code
267
+ allowed_values: ["VALIDATION_ERROR", "INVALID_REQUEST"]
268
+ description: "Error code is VALIDATION_ERROR or INVALID_REQUEST"
269
+
270
+ - check: field_present
271
+ path: "context"
272
+ description: "Response echoes back the context object"
273
+ - check: field_value
274
+ path: "context.correlation_id"
275
+ value: "error_compliance--reversed_dates_error"
276
+ description: "Context correlation_id returned unchanged"
277
+ - id: error_structure
278
+ title: "Error structure compliance"
279
+ narrative: |
280
+ Validates that error responses follow the AdCP error structure with required
281
+ and optional fields.
282
+
283
+ steps:
284
+ - id: validate_error_shape
285
+ title: "Validate error response structure"
286
+ narrative: |
287
+ Trigger an error and inspect the response structure. The adcp_error object
288
+ must have code and message. Optional fields include recovery, retry_after,
289
+ field, and suggestion.
290
+ task: create_media_buy
291
+ schema_ref: "media-buy/create-media-buy-request.json"
292
+ response_schema_ref: "media-buy/create-media-buy-response.json"
293
+ doc_ref: "/media-buy/task-reference/create_media_buy"
294
+ comply_scenario: error_codes
295
+ expect_error: true
296
+ negative_path: schema_invalid
297
+ stateful: false
298
+ expected: |
299
+ Error response with:
300
+ - code: a recognized AdCP error code
301
+ - message: human-readable description
302
+ - recovery: correctable, transient, or fatal (optional)
303
+
304
+ sample_request:
305
+ brand:
306
+ domain: "acmeoutdoor.example"
307
+ account:
308
+ brand:
309
+ domain: "acmeoutdoor.example"
310
+ operator: "pinnacle-agency.example"
311
+ idempotency_key: "error-structure-test"
312
+ start_time: "2026-12-31T00:00:00Z"
313
+ end_time: "2026-01-01T00:00:00Z"
314
+ packages:
315
+ - product_id: "test-product"
316
+ budget: -1
317
+ pricing_option_id: "test-pricing"
318
+
319
+ context:
320
+ correlation_id: "error_compliance--validate_error_shape"
321
+ validations:
322
+ - check: error_code
323
+ description: "Response surfaces a typed error code via either adcp_error (envelope) or errors[] (payload)"
324
+ - check: field_present
325
+ path: "context"
326
+ description: "Response echoes back the context object even on errors"
327
+ - check: field_value
328
+ path: "context.correlation_id"
329
+ value: "error_compliance--validate_error_shape"
330
+ description: "Context correlation_id returned unchanged"
331
+
332
+ - id: version_negotiation
333
+ title: "Protocol version validation"
334
+ narrative: |
335
+ Every AdCP request may carry adcp_major_version. Sellers validate against their
336
+ declared supported_major_versions (from get_adcp_capabilities) and return
337
+ VERSION_UNSUPPORTED when the buyer asks for a version the seller does not speak.
338
+ When omitted, the seller assumes its highest supported version — so version
339
+ validation only fires when the buyer explicitly declares an unsupported number.
340
+
341
+ steps:
342
+ - id: unsupported_major_version
343
+ title: "Reject unsupported adcp_major_version"
344
+ narrative: |
345
+ Send a get_products request asserting a future major version the seller cannot
346
+ support. The seller must reject with VERSION_UNSUPPORTED and indicate which
347
+ versions are supported so the buyer can retry.
348
+ task: get_products
349
+ schema_ref: "media-buy/get-products-request.json"
350
+ response_schema_ref: "media-buy/get-products-response.json"
351
+ doc_ref: "/media-buy/task-reference/get_products"
352
+ comply_scenario: error_handling
353
+ expect_error: true
354
+ negative_path: payload_well_formed
355
+ stateful: false
356
+ expected: |
357
+ Reject with:
358
+ - code: VERSION_UNSUPPORTED
359
+ - recovery: fatal
360
+ - message referencing the buyer's requested version and the seller's supported set
361
+
362
+ sample_request:
363
+ adcp_major_version: 99
364
+ buying_mode: "brief"
365
+ brief: "Version negotiation probe"
366
+ account:
367
+ brand:
368
+ domain: "acmeoutdoor.example"
369
+ operator: "pinnacle-agency.example"
370
+
371
+ context:
372
+ correlation_id: "error_compliance--unsupported_major_version"
373
+ validations:
374
+ - check: error_code
375
+ value: "VERSION_UNSUPPORTED"
376
+ description: "Error code is VERSION_UNSUPPORTED"
377
+ - check: field_present
378
+ path: "context"
379
+ description: "Response echoes back the context object even on errors"
380
+ - check: field_value
381
+ path: "context.correlation_id"
382
+ value: "error_compliance--unsupported_major_version"
383
+ description: "Context correlation_id returned unchanged"
384
+
385
+ - id: supported_major_version
386
+ title: "Accept supported adcp_major_version"
387
+ narrative: |
388
+ Send a get_products request with the current major version (3). The seller
389
+ must accept the request normally — version negotiation only rejects mismatched
390
+ versions, not explicit declarations of a supported one.
391
+ task: get_products
392
+ schema_ref: "media-buy/get-products-request.json"
393
+ response_schema_ref: "media-buy/get-products-response.json"
394
+ doc_ref: "/media-buy/task-reference/get_products"
395
+ comply_scenario: full_sales_flow
396
+ stateful: false
397
+ expected: |
398
+ Return products normally — adcp_major_version: 3 is a supported version.
399
+
400
+ sample_request:
401
+ adcp_major_version: 3
402
+ buying_mode: "brief"
403
+ brief: "Display advertising for outdoor lifestyle campaign"
404
+ account:
405
+ brand:
406
+ domain: "acmeoutdoor.example"
407
+ operator: "pinnacle-agency.example"
408
+
409
+ context:
410
+ correlation_id: "error_compliance--supported_major_version"
411
+ validations:
412
+ - check: response_schema
413
+ description: "Response matches get-products-response.json schema"
414
+ - check: field_present
415
+ path: "context"
416
+ description: "Response echoes back the context object"
417
+ - check: field_value
418
+ path: "context.correlation_id"
419
+ value: "error_compliance--supported_major_version"
420
+ description: "Context correlation_id returned unchanged"
421
+
422
+ - id: error_transport
423
+ title: "Error transport bindings"
424
+ narrative: |
425
+ Validates that errors are transported correctly via MCP. The isError flag must
426
+ be set, and the error should be available in both JSON text content (L2) and
427
+ structuredContent (L3) bindings.
428
+
429
+ steps:
430
+ - id: validate_transport_binding
431
+ title: "Validate error transport binding"
432
+ narrative: |
433
+ Trigger an error and verify the MCP transport binding: isError flag must be
434
+ set to true, and the error content should include the adcp_error object.
435
+ task: create_media_buy
436
+ schema_ref: "media-buy/create-media-buy-request.json"
437
+ response_schema_ref: "media-buy/create-media-buy-response.json"
438
+ doc_ref: "/media-buy/task-reference/create_media_buy"
439
+ comply_scenario: error_transport
440
+ expect_error: true
441
+ negative_path: schema_invalid
442
+ stateful: false
443
+ expected: |
444
+ MCP response with:
445
+ - isError: true
446
+ - content containing adcp_error (L2: JSON text, L3: structuredContent)
447
+
448
+ sample_request:
449
+ brand:
450
+ domain: "acmeoutdoor.example"
451
+ account:
452
+ brand:
453
+ domain: "acmeoutdoor.example"
454
+ operator: "pinnacle-agency.example"
455
+ idempotency_key: "error-transport-test"
456
+ start_time: "2026-12-31T00:00:00Z"
457
+ end_time: "2026-01-01T00:00:00Z"
458
+ packages:
459
+ - product_id: "nonexistent"
460
+ budget: -1
461
+ pricing_option_id: "bad-pricing"
462
+
463
+ context:
464
+ correlation_id: "error_compliance--validate_transport_binding"
465
+ validations:
466
+ - check: error_code
467
+ description: "Transport binding surfaces a typed error code via either adcp_error (envelope) or errors[] (payload)"
468
+ - check: field_present
469
+ path: "context"
470
+ description: "Response echoes back the context object even on errors"
471
+ - check: field_value
472
+ path: "context.correlation_id"
473
+ value: "error_compliance--validate_transport_binding"
474
+ description: "Context correlation_id returned unchanged"