@adcp/sdk 6.9.0 → 6.11.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 (261) 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/decisioning/async-outcome.d.ts +17 -0
  191. package/dist/lib/server/decisioning/async-outcome.d.ts.map +1 -1
  192. package/dist/lib/server/decisioning/async-outcome.js +23 -18
  193. package/dist/lib/server/decisioning/async-outcome.js.map +1 -1
  194. package/dist/lib/server/decisioning/context.d.ts +8 -2
  195. package/dist/lib/server/decisioning/context.d.ts.map +1 -1
  196. package/dist/lib/server/decisioning/index.d.ts +1 -0
  197. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  198. package/dist/lib/server/decisioning/index.js.map +1 -1
  199. package/dist/lib/server/decisioning/runtime/from-platform.js +6 -4
  200. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  201. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -1
  202. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +5 -2
  203. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -1
  204. package/dist/lib/server/decisioning/runtime/task-registry.d.ts +5 -0
  205. package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -1
  206. package/dist/lib/server/decisioning/runtime/task-registry.js +4 -1
  207. package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -1
  208. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  209. package/dist/lib/server/decisioning/runtime/to-context.js +10 -2
  210. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  211. package/dist/lib/server/dynamic-registry.d.ts +219 -0
  212. package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
  213. package/dist/lib/server/dynamic-registry.js +245 -0
  214. package/dist/lib/server/dynamic-registry.js.map +1 -0
  215. package/dist/lib/server/index.d.ts +8 -0
  216. package/dist/lib/server/index.d.ts.map +1 -1
  217. package/dist/lib/server/index.js +15 -4
  218. package/dist/lib/server/index.js.map +1 -1
  219. package/dist/lib/server/operational-platform.d.ts +239 -0
  220. package/dist/lib/server/operational-platform.d.ts.map +1 -0
  221. package/dist/lib/server/operational-platform.js +94 -0
  222. package/dist/lib/server/operational-platform.js.map +1 -0
  223. package/dist/lib/server/test-controller.d.ts +2 -0
  224. package/dist/lib/server/test-controller.d.ts.map +1 -1
  225. package/dist/lib/server/test-controller.js +6 -11
  226. package/dist/lib/server/test-controller.js.map +1 -1
  227. package/dist/lib/server/wire-safe.d.ts +211 -0
  228. package/dist/lib/server/wire-safe.d.ts.map +1 -0
  229. package/dist/lib/server/wire-safe.js +231 -0
  230. package/dist/lib/server/wire-safe.js.map +1 -0
  231. package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
  232. package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
  233. package/dist/lib/server/wire-spec-fields.generated.js +172 -0
  234. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
  235. package/dist/lib/testing/compliance/index.d.ts +2 -0
  236. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  237. package/dist/lib/testing/compliance/index.js +6 -1
  238. package/dist/lib/testing/compliance/index.js.map +1 -1
  239. package/dist/lib/testing/compliance/summary.d.ts +77 -0
  240. package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
  241. package/dist/lib/testing/compliance/summary.js +176 -0
  242. package/dist/lib/testing/compliance/summary.js.map +1 -0
  243. package/dist/lib/testing/comply-controller.d.ts +2 -0
  244. package/dist/lib/testing/comply-controller.d.ts.map +1 -1
  245. package/dist/lib/testing/comply-controller.js.map +1 -1
  246. package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
  247. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  248. package/dist/lib/testing/storyboard/compliance.js +51 -0
  249. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  250. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  251. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  252. package/dist/lib/testing/storyboard/index.js +4 -2
  253. package/dist/lib/testing/storyboard/index.js.map +1 -1
  254. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  255. package/dist/lib/testing/storyboard/runner.js +58 -5
  256. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  257. package/dist/lib/version.d.ts +3 -3
  258. package/dist/lib/version.d.ts.map +1 -1
  259. package/dist/lib/version.js +3 -3
  260. package/dist/lib/version.js.map +1 -1
  261. package/package.json +2 -2
@@ -0,0 +1,326 @@
1
+ id: pagination_integrity_content_standards
2
+ version: "1.0.0"
3
+ title: "Pagination cursor integrity — list_content_standards"
4
+ category: schema_validation
5
+ summary: "Validates the cursor↔has_more invariant by walking a paginated list_content_standards response from a continuation page to a terminal page."
6
+ track: core
7
+ required_tools:
8
+ - list_content_standards
9
+
10
+ narrative: |
11
+ Pagination is cursor-based across AdCP. Every response carrying a
12
+ `pagination` block satisfies a single invariant: when `has_more` is true the
13
+ `cursor` MUST be present (callers need it to fetch the next page); when
14
+ `has_more` is false the `cursor` MUST be absent (a stale token on a terminal
15
+ page invites callers to follow it into undefined behavior).
16
+
17
+ The invariant is documented in prose on
18
+ `static/schemas/source/core/pagination-response.json` but JSON Schema does
19
+ not gate the two fields against each other. This storyboard exercises both
20
+ sides of the invariant on `list_content_standards` in a single run.
21
+
22
+ The runner bootstraps three content standards configurations via
23
+ `create_content_standards`, then lists them back with `max_results=2`. The
24
+ first page MUST cap at two standards and signal continuation with
25
+ `has_more=true` plus a cursor. The runner then follows that cursor; the
26
+ second call MUST return the terminal page with `has_more=false` and no
27
+ cursor. An agent that hides the third standard by reporting `has_more=false`
28
+ on the first page fails the first-page assertion. An agent that carries a
29
+ stale cursor onto the terminal page fails the second-page assertion.
30
+
31
+ The `total_count` field is allowed to be absent (some backends cannot
32
+ compute it cheaply per the pagination-response schema) but when an agent
33
+ volunteers it, the value MUST match the seeded count of three.
34
+
35
+ agent:
36
+ interaction_model: stateful_preloaded
37
+ capabilities: []
38
+ examples:
39
+ - "Any AdCP agent that exposes a paginated list_content_standards"
40
+
41
+ caller:
42
+ role: buyer_agent
43
+ example: "Compliance test harness"
44
+
45
+ prerequisites:
46
+ description: |
47
+ The storyboard bootstraps three content standards configurations in the
48
+ setup phase via `create_content_standards`. The seed-DAG does not include
49
+ content standards, so this storyboard uses the create-then-list pattern to
50
+ keep itself self-contained without extending the seed taxonomy.
51
+ test_kit: "test-kits/acme-outdoor.yaml"
52
+ controller_seeding: false
53
+
54
+ phases:
55
+ - id: capability_discovery
56
+ title: "Capability discovery"
57
+ narrative: |
58
+ Confirm the agent responds to get_adcp_capabilities before
59
+ exercising list_content_standards.
60
+ steps:
61
+ - id: get_capabilities
62
+ title: "Check agent capabilities"
63
+ narrative: |
64
+ Verify that the agent declares supported protocols before
65
+ driving paginated list_content_standards.
66
+ task: get_adcp_capabilities
67
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
68
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
69
+ doc_ref: "/protocol/get_adcp_capabilities"
70
+ comply_scenario: pagination_integrity_content_standards
71
+ stateful: false
72
+ expected: |
73
+ Return capabilities declaring supported protocols.
74
+
75
+ sample_request:
76
+ context:
77
+ correlation_id: "pagination_integrity_content_standards--get_capabilities"
78
+ validations:
79
+ - check: response_schema
80
+ description: "Response matches get-adcp-capabilities-response.json schema"
81
+ - check: field_present
82
+ path: "supported_protocols"
83
+ description: "Agent declares supported protocols"
84
+ - check: field_present
85
+ path: "context"
86
+ description: "Response echoes back the context object"
87
+ - check: field_value
88
+ path: "context.correlation_id"
89
+ value: "pagination_integrity_content_standards--get_capabilities"
90
+ description: "Context correlation_id returned unchanged"
91
+
92
+ - id: setup
93
+ title: "Bootstrap three content standards configurations"
94
+ narrative: |
95
+ Create three content standards configurations so the pagination walk has
96
+ a deterministic set of three items to page through with max_results=2.
97
+ steps:
98
+ - id: create_standards_1
99
+ title: "Create first content standards configuration"
100
+ narrative: |
101
+ Create a content standards configuration scoped to English-language
102
+ display ads. The agent MUST accept this and return a standards_id.
103
+ task: create_content_standards
104
+ schema_ref: "content-standards/create-content-standards-request.json"
105
+ response_schema_ref: "content-standards/create-content-standards-response.json"
106
+ doc_ref: "/governance/task-reference/create_content_standards"
107
+ comply_scenario: pagination_integrity_content_standards
108
+ stateful: true
109
+ expected: |
110
+ Accept the configuration and return a standards_id.
111
+
112
+ sample_request:
113
+ account:
114
+ brand:
115
+ domain: "acmeoutdoor.example"
116
+ operator: "pinnacle-agency.example"
117
+ scope:
118
+ languages_any: ["en"]
119
+ channels_any: ["display"]
120
+ policies:
121
+ - policy_id: "content-standards-no-alcohol-gambling-tobacco"
122
+ enforcement: "must"
123
+ policy: "No alcohol, gambling, or tobacco content."
124
+ idempotency_key: "$generate:uuid_v4#pagination_integrity_content_standards_setup_create_standards_1"
125
+ context:
126
+ correlation_id: "pagination_integrity_content_standards--setup_1"
127
+ validations:
128
+ - check: response_schema
129
+ description: "Response matches create-content-standards-response.json schema"
130
+ - check: field_present
131
+ path: "standards_id"
132
+ description: "Response contains standards_id"
133
+
134
+ - id: create_standards_2
135
+ title: "Create second content standards configuration"
136
+ narrative: |
137
+ Create a second content standards configuration scoped to Spanish-
138
+ language video ads.
139
+ task: create_content_standards
140
+ schema_ref: "content-standards/create-content-standards-request.json"
141
+ response_schema_ref: "content-standards/create-content-standards-response.json"
142
+ doc_ref: "/governance/task-reference/create_content_standards"
143
+ comply_scenario: pagination_integrity_content_standards
144
+ stateful: true
145
+ expected: |
146
+ Accept the configuration and return a standards_id.
147
+
148
+ sample_request:
149
+ account:
150
+ brand:
151
+ domain: "acmeoutdoor.example"
152
+ operator: "pinnacle-agency.example"
153
+ scope:
154
+ languages_any: ["es"]
155
+ channels_any: ["olv"]
156
+ policies:
157
+ - policy_id: "content-standards-family-friendly"
158
+ enforcement: "must"
159
+ policy: "Family-friendly content only. No political advertising."
160
+ idempotency_key: "$generate:uuid_v4#pagination_integrity_content_standards_setup_create_standards_2"
161
+ context:
162
+ correlation_id: "pagination_integrity_content_standards--setup_2"
163
+ validations:
164
+ - check: response_schema
165
+ description: "Response matches create-content-standards-response.json schema"
166
+ - check: field_present
167
+ path: "standards_id"
168
+ description: "Response contains standards_id"
169
+
170
+ - id: create_standards_3
171
+ title: "Create third content standards configuration"
172
+ narrative: |
173
+ Create a third content standards configuration for French-language
174
+ connected-TV placements.
175
+ task: create_content_standards
176
+ schema_ref: "content-standards/create-content-standards-request.json"
177
+ response_schema_ref: "content-standards/create-content-standards-response.json"
178
+ doc_ref: "/governance/task-reference/create_content_standards"
179
+ comply_scenario: pagination_integrity_content_standards
180
+ stateful: true
181
+ expected: |
182
+ Accept the configuration and return a standards_id.
183
+
184
+ sample_request:
185
+ account:
186
+ brand:
187
+ domain: "acmeoutdoor.example"
188
+ operator: "pinnacle-agency.example"
189
+ scope:
190
+ languages_any: ["fr"]
191
+ channels_any: ["ctv"]
192
+ policies:
193
+ - policy_id: "content-standards-no-pharma-financial"
194
+ enforcement: "must"
195
+ policy: "No pharmaceutical or financial product advertising."
196
+ idempotency_key: "$generate:uuid_v4#pagination_integrity_content_standards_setup_create_standards_3"
197
+ context:
198
+ correlation_id: "pagination_integrity_content_standards--setup_3"
199
+ validations:
200
+ - check: response_schema
201
+ description: "Response matches create-content-standards-response.json schema"
202
+ - check: field_present
203
+ path: "standards_id"
204
+ description: "Response contains standards_id"
205
+
206
+ - id: pagination_walk
207
+ title: "Walk pages with a small max_results"
208
+ narrative: |
209
+ With three standards seeded and `max_results: 2`, the first call MUST
210
+ return a continuation page (has_more=true with a cursor). The runner
211
+ then follows the cursor; the second call MUST return the terminal
212
+ page (has_more=false with no cursor).
213
+
214
+ steps:
215
+ - id: first_page
216
+ title: "Request the first page with max_results=2"
217
+ narrative: |
218
+ The buyer asks for up to two content standards. The agent has three
219
+ matching configurations, so the request is non-terminal: callers
220
+ expect `has_more=true` and a `cursor` they can follow to retrieve
221
+ the remaining standard.
222
+
223
+ The runner captures `pagination.cursor` into `$context.next_cursor`
224
+ for the follow-up step. If the agent reports `has_more=false` on
225
+ this page (hiding the seeded third standard behind a dishonest
226
+ terminal signal), the field_value check on `pagination.has_more`
227
+ fails — surfacing exactly the bug class this storyboard exists to
228
+ catch.
229
+ task: list_content_standards
230
+ schema_ref: "content-standards/list-content-standards-request.json"
231
+ response_schema_ref: "content-standards/list-content-standards-response.json"
232
+ doc_ref: "/governance/task-reference/list_content_standards"
233
+ comply_scenario: pagination_integrity_content_standards
234
+ stateful: true
235
+ context_outputs:
236
+ - name: next_cursor
237
+ path: "pagination.cursor"
238
+ expected: |
239
+ Return up to two standards with:
240
+ - pagination.has_more = true
241
+ - pagination.cursor present (an opaque continuation token)
242
+
243
+ sample_request:
244
+ account:
245
+ brand:
246
+ domain: "acmeoutdoor.example"
247
+ operator: "pinnacle-agency.example"
248
+ pagination:
249
+ max_results: 2
250
+
251
+ context:
252
+ correlation_id: "pagination_integrity_content_standards--first_page"
253
+ validations:
254
+ - check: response_schema
255
+ description: "Response matches list-content-standards-response.json schema"
256
+ - check: field_value
257
+ path: "pagination.has_more"
258
+ value: true
259
+ description: "Three standards seeded with max_results=2 → first page is non-terminal"
260
+ - check: field_present
261
+ path: "pagination.cursor"
262
+ description: "has_more=true requires a cursor — without one the caller cannot continue"
263
+ - check: field_value_or_absent
264
+ path: "pagination.total_count"
265
+ allowed_values: [3]
266
+ description: "If volunteered, total_count MUST equal the seeded set size"
267
+ - check: field_present
268
+ path: "context"
269
+ description: "Response echoes back the context object"
270
+ - check: field_value
271
+ path: "context.correlation_id"
272
+ value: "pagination_integrity_content_standards--first_page"
273
+ description: "Context correlation_id returned unchanged"
274
+
275
+ - id: terminal_page
276
+ title: "Follow the cursor to the terminal page"
277
+ narrative: |
278
+ The buyer follows the captured cursor. With at most one remaining
279
+ standard the agent MUST return a terminal page: `has_more=false`
280
+ with no `cursor` field. A cursor on `has_more=false` is a stale
281
+ token that invites callers to follow it past the end of results.
282
+ task: list_content_standards
283
+ schema_ref: "content-standards/list-content-standards-request.json"
284
+ response_schema_ref: "content-standards/list-content-standards-response.json"
285
+ doc_ref: "/governance/task-reference/list_content_standards"
286
+ comply_scenario: pagination_integrity_content_standards
287
+ stateful: true
288
+ expected: |
289
+ Return the remaining standard(s) with:
290
+ - pagination.has_more = false
291
+ - pagination.cursor absent (a stale cursor on a terminal page is a
292
+ dishonest pagination signal)
293
+
294
+ sample_request:
295
+ account:
296
+ brand:
297
+ domain: "acmeoutdoor.example"
298
+ operator: "pinnacle-agency.example"
299
+ pagination:
300
+ cursor: "$context.next_cursor"
301
+ max_results: 2
302
+
303
+ context:
304
+ correlation_id: "pagination_integrity_content_standards--terminal_page"
305
+ validations:
306
+ - check: response_schema
307
+ description: "Response matches list-content-standards-response.json schema"
308
+ - check: field_value
309
+ path: "pagination.has_more"
310
+ value: false
311
+ description: "After two pages of two items the seeded set is exhausted"
312
+ - check: field_value_or_absent
313
+ path: "pagination.cursor"
314
+ allowed_values: [null]
315
+ description: "Terminal page MUST omit cursor (null also accepted for clients that explicitly clear the field)"
316
+ - check: field_value_or_absent
317
+ path: "pagination.total_count"
318
+ allowed_values: [3]
319
+ description: "total_count (when volunteered) MUST stay stable across pages and equal the seeded set size"
320
+ - check: field_present
321
+ path: "context"
322
+ description: "Response echoes back the context object"
323
+ - check: field_value
324
+ path: "context.correlation_id"
325
+ value: "pagination_integrity_content_standards--terminal_page"
326
+ description: "Context correlation_id returned unchanged"