@adcp/sdk 5.23.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 (2426) hide show
  1. package/.claude-plugin/marketplace.json +17 -0
  2. package/.claude-plugin/plugin.json +25 -0
  3. package/ADCP_VERSION +1 -0
  4. package/AGENTS.md +282 -0
  5. package/LICENSE +191 -0
  6. package/README.md +816 -0
  7. package/bin/adcp-async-handler.js +275 -0
  8. package/bin/adcp-config.js +240 -0
  9. package/bin/adcp-fuzz.js +391 -0
  10. package/bin/adcp-grade.js +505 -0
  11. package/bin/adcp-json-stdout.js +36 -0
  12. package/bin/adcp-registry.js +745 -0
  13. package/bin/adcp-signing.js +233 -0
  14. package/bin/adcp-step-hints.js +246 -0
  15. package/bin/adcp-version-check.js +150 -0
  16. package/bin/adcp.js +4821 -0
  17. package/compliance/cache/3.0.0/domains/brand/index.yaml +167 -0
  18. package/compliance/cache/3.0.0/domains/creative/index.yaml +412 -0
  19. package/compliance/cache/3.0.0/domains/governance/index.yaml +683 -0
  20. package/compliance/cache/3.0.0/domains/media-buy/creative-reception.yaml +247 -0
  21. package/compliance/cache/3.0.0/domains/media-buy/index.yaml +742 -0
  22. package/compliance/cache/3.0.0/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  23. package/compliance/cache/3.0.0/domains/media-buy/scenarios/delivery_reporting.yaml +180 -0
  24. package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_approved.yaml +186 -0
  25. package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_conditions.yaml +195 -0
  26. package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_denied.yaml +189 -0
  27. package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
  28. package/compliance/cache/3.0.0/domains/media-buy/scenarios/invalid_transitions.yaml +279 -0
  29. package/compliance/cache/3.0.0/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  30. package/compliance/cache/3.0.0/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  31. package/compliance/cache/3.0.0/domains/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
  32. package/compliance/cache/3.0.0/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  33. package/compliance/cache/3.0.0/domains/media-buy/scenarios/proposal_finalize.yaml +242 -0
  34. package/compliance/cache/3.0.0/domains/media-buy/scenarios/refine_products.yaml +148 -0
  35. package/compliance/cache/3.0.0/domains/media-buy/state-machine.yaml +437 -0
  36. package/compliance/cache/3.0.0/domains/signals/index.yaml +266 -0
  37. package/compliance/cache/3.0.0/domains/sponsored-intelligence/index.yaml +256 -0
  38. package/compliance/cache/3.0.0/index.json +324 -0
  39. package/compliance/cache/3.0.0/protocols/brand/index.yaml +167 -0
  40. package/compliance/cache/3.0.0/protocols/creative/index.yaml +412 -0
  41. package/compliance/cache/3.0.0/protocols/governance/index.yaml +683 -0
  42. package/compliance/cache/3.0.0/protocols/media-buy/creative-reception.yaml +247 -0
  43. package/compliance/cache/3.0.0/protocols/media-buy/index.yaml +742 -0
  44. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  45. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/delivery_reporting.yaml +180 -0
  46. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_approved.yaml +186 -0
  47. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_conditions.yaml +195 -0
  48. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_denied.yaml +189 -0
  49. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
  50. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/invalid_transitions.yaml +279 -0
  51. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  52. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  53. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
  54. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  55. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/proposal_finalize.yaml +242 -0
  56. package/compliance/cache/3.0.0/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  57. package/compliance/cache/3.0.0/protocols/media-buy/state-machine.yaml +437 -0
  58. package/compliance/cache/3.0.0/protocols/signals/index.yaml +266 -0
  59. package/compliance/cache/3.0.0/protocols/sponsored-intelligence/index.yaml +256 -0
  60. package/compliance/cache/3.0.0/specialisms/audience-sync/index.yaml +280 -0
  61. package/compliance/cache/3.0.0/specialisms/brand-rights/index.yaml +346 -0
  62. package/compliance/cache/3.0.0/specialisms/brand-rights/scenarios/governance_denied.yaml +203 -0
  63. package/compliance/cache/3.0.0/specialisms/collection-lists/index.yaml +359 -0
  64. package/compliance/cache/3.0.0/specialisms/content-standards/index.yaml +572 -0
  65. package/compliance/cache/3.0.0/specialisms/creative-ad-server/index.yaml +383 -0
  66. package/compliance/cache/3.0.0/specialisms/creative-generative/generative-seller.yaml +733 -0
  67. package/compliance/cache/3.0.0/specialisms/creative-generative/index.yaml +746 -0
  68. package/compliance/cache/3.0.0/specialisms/creative-template/index.yaml +413 -0
  69. package/compliance/cache/3.0.0/specialisms/governance-aware-seller/index.yaml +99 -0
  70. package/compliance/cache/3.0.0/specialisms/governance-delivery-monitor/index.yaml +419 -0
  71. package/compliance/cache/3.0.0/specialisms/governance-spend-authority/denied.yaml +221 -0
  72. package/compliance/cache/3.0.0/specialisms/governance-spend-authority/index.yaml +330 -0
  73. package/compliance/cache/3.0.0/specialisms/property-lists/index.yaml +482 -0
  74. package/compliance/cache/3.0.0/specialisms/sales-broadcast-tv/index.yaml +664 -0
  75. package/compliance/cache/3.0.0/specialisms/sales-catalog-driven/index.yaml +779 -0
  76. package/compliance/cache/3.0.0/specialisms/sales-guaranteed/index.yaml +479 -0
  77. package/compliance/cache/3.0.0/specialisms/sales-non-guaranteed/index.yaml +428 -0
  78. package/compliance/cache/3.0.0/specialisms/sales-proposal-mode/index.yaml +520 -0
  79. package/compliance/cache/3.0.0/specialisms/sales-social/index.yaml +521 -0
  80. package/compliance/cache/3.0.0/specialisms/signal-marketplace/index.yaml +415 -0
  81. package/compliance/cache/3.0.0/specialisms/signal-marketplace/scenarios/governance_denied.yaml +195 -0
  82. package/compliance/cache/3.0.0/specialisms/signal-owned/index.yaml +316 -0
  83. package/compliance/cache/3.0.0/specialisms/signed-requests/index.yaml +192 -0
  84. package/compliance/cache/3.0.0/test-kits/acme-outdoor.yaml +210 -0
  85. package/compliance/cache/3.0.0/test-kits/bistro-oranje.yaml +126 -0
  86. package/compliance/cache/3.0.0/test-kits/nova-motors.yaml +262 -0
  87. package/compliance/cache/3.0.0/test-kits/osei-natural.yaml +126 -0
  88. package/compliance/cache/3.0.0/test-kits/signed-requests-runner.yaml +153 -0
  89. package/compliance/cache/3.0.0/test-kits/substitution-observer-runner.yaml +690 -0
  90. package/compliance/cache/3.0.0/test-kits/summit-foods.yaml +125 -0
  91. package/compliance/cache/3.0.0/test-kits/webhook-receiver-runner.yaml +265 -0
  92. package/compliance/cache/3.0.0/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  93. package/compliance/cache/3.0.0/test-vectors/plan-hash/002-full-plan.json +217 -0
  94. package/compliance/cache/3.0.0/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  95. package/compliance/cache/3.0.0/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  96. package/compliance/cache/3.0.0/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  97. package/compliance/cache/3.0.0/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  98. package/compliance/cache/3.0.0/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  99. package/compliance/cache/3.0.0/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  100. package/compliance/cache/3.0.0/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  101. package/compliance/cache/3.0.0/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  102. package/compliance/cache/3.0.0/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  103. package/compliance/cache/3.0.0/test-vectors/request-signing/README.md +219 -0
  104. package/compliance/cache/3.0.0/test-vectors/request-signing/canonicalization.json +241 -0
  105. package/compliance/cache/3.0.0/test-vectors/request-signing/keys.json +60 -0
  106. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  107. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  108. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  109. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  110. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  111. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  112. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  113. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  114. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  115. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  116. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  117. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  118. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  119. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  120. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  121. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  122. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  123. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  124. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  125. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  126. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  127. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  128. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  129. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  130. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  131. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  132. package/compliance/cache/3.0.0/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  133. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  134. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  135. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  136. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  137. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  138. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  139. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  140. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  141. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  142. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  143. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  144. package/compliance/cache/3.0.0/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  145. package/compliance/cache/3.0.0/test-vectors/webhook-signing/README.md +211 -0
  146. package/compliance/cache/3.0.0/test-vectors/webhook-signing/keys.json +61 -0
  147. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  148. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  149. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  150. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  151. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  152. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  153. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  154. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  155. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  156. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  157. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  158. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  159. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  160. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  161. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  162. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  163. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  164. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  165. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  166. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  167. package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  168. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  169. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  170. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  171. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  172. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  173. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  174. package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  175. package/compliance/cache/3.0.0/universal/capability-discovery.yaml +125 -0
  176. package/compliance/cache/3.0.0/universal/deterministic-testing.yaml +1318 -0
  177. package/compliance/cache/3.0.0/universal/error-compliance.yaml +468 -0
  178. package/compliance/cache/3.0.0/universal/fictional-entities.yaml +307 -0
  179. package/compliance/cache/3.0.0/universal/idempotency.yaml +577 -0
  180. package/compliance/cache/3.0.0/universal/runner-output-contract.yaml +335 -0
  181. package/compliance/cache/3.0.0/universal/schema-validation.yaml +514 -0
  182. package/compliance/cache/3.0.0/universal/security.yaml +428 -0
  183. package/compliance/cache/3.0.0/universal/storyboard-schema.yaml +1010 -0
  184. package/compliance/cache/3.0.0/universal/webhook-emission.yaml +337 -0
  185. package/compliance/cache/3.0.0.previous/domains/brand/index.yaml +167 -0
  186. package/compliance/cache/3.0.0.previous/domains/creative/index.yaml +412 -0
  187. package/compliance/cache/3.0.0.previous/domains/governance/index.yaml +683 -0
  188. package/compliance/cache/3.0.0.previous/domains/media-buy/creative-reception.yaml +247 -0
  189. package/compliance/cache/3.0.0.previous/domains/media-buy/index.yaml +742 -0
  190. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  191. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/delivery_reporting.yaml +180 -0
  192. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_approved.yaml +186 -0
  193. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_conditions.yaml +195 -0
  194. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_denied.yaml +189 -0
  195. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
  196. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/invalid_transitions.yaml +279 -0
  197. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  198. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  199. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
  200. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  201. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/proposal_finalize.yaml +242 -0
  202. package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
  203. package/compliance/cache/3.0.0.previous/domains/media-buy/state-machine.yaml +437 -0
  204. package/compliance/cache/3.0.0.previous/domains/signals/index.yaml +266 -0
  205. package/compliance/cache/3.0.0.previous/domains/sponsored-intelligence/index.yaml +256 -0
  206. package/compliance/cache/3.0.0.previous/index.json +324 -0
  207. package/compliance/cache/3.0.0.previous/protocols/brand/index.yaml +167 -0
  208. package/compliance/cache/3.0.0.previous/protocols/creative/index.yaml +412 -0
  209. package/compliance/cache/3.0.0.previous/protocols/governance/index.yaml +683 -0
  210. package/compliance/cache/3.0.0.previous/protocols/media-buy/creative-reception.yaml +247 -0
  211. package/compliance/cache/3.0.0.previous/protocols/media-buy/index.yaml +742 -0
  212. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  213. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +180 -0
  214. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_approved.yaml +186 -0
  215. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_conditions.yaml +195 -0
  216. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_denied.yaml +189 -0
  217. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
  218. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +279 -0
  219. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  220. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  221. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
  222. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  223. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +242 -0
  224. package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  225. package/compliance/cache/3.0.0.previous/protocols/media-buy/state-machine.yaml +437 -0
  226. package/compliance/cache/3.0.0.previous/protocols/signals/index.yaml +266 -0
  227. package/compliance/cache/3.0.0.previous/protocols/sponsored-intelligence/index.yaml +256 -0
  228. package/compliance/cache/3.0.0.previous/specialisms/audience-sync/index.yaml +280 -0
  229. package/compliance/cache/3.0.0.previous/specialisms/brand-rights/index.yaml +346 -0
  230. package/compliance/cache/3.0.0.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +203 -0
  231. package/compliance/cache/3.0.0.previous/specialisms/collection-lists/index.yaml +359 -0
  232. package/compliance/cache/3.0.0.previous/specialisms/content-standards/index.yaml +572 -0
  233. package/compliance/cache/3.0.0.previous/specialisms/creative-ad-server/index.yaml +383 -0
  234. package/compliance/cache/3.0.0.previous/specialisms/creative-generative/generative-seller.yaml +733 -0
  235. package/compliance/cache/3.0.0.previous/specialisms/creative-generative/index.yaml +746 -0
  236. package/compliance/cache/3.0.0.previous/specialisms/creative-template/index.yaml +413 -0
  237. package/compliance/cache/3.0.0.previous/specialisms/governance-aware-seller/index.yaml +99 -0
  238. package/compliance/cache/3.0.0.previous/specialisms/governance-delivery-monitor/index.yaml +419 -0
  239. package/compliance/cache/3.0.0.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
  240. package/compliance/cache/3.0.0.previous/specialisms/governance-spend-authority/index.yaml +330 -0
  241. package/compliance/cache/3.0.0.previous/specialisms/property-lists/index.yaml +482 -0
  242. package/compliance/cache/3.0.0.previous/specialisms/sales-broadcast-tv/index.yaml +664 -0
  243. package/compliance/cache/3.0.0.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
  244. package/compliance/cache/3.0.0.previous/specialisms/sales-guaranteed/index.yaml +479 -0
  245. package/compliance/cache/3.0.0.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
  246. package/compliance/cache/3.0.0.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
  247. package/compliance/cache/3.0.0.previous/specialisms/sales-social/index.yaml +521 -0
  248. package/compliance/cache/3.0.0.previous/specialisms/signal-marketplace/index.yaml +415 -0
  249. package/compliance/cache/3.0.0.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +195 -0
  250. package/compliance/cache/3.0.0.previous/specialisms/signal-owned/index.yaml +316 -0
  251. package/compliance/cache/3.0.0.previous/specialisms/signed-requests/index.yaml +192 -0
  252. package/compliance/cache/3.0.0.previous/test-kits/acme-outdoor.yaml +210 -0
  253. package/compliance/cache/3.0.0.previous/test-kits/bistro-oranje.yaml +126 -0
  254. package/compliance/cache/3.0.0.previous/test-kits/nova-motors.yaml +262 -0
  255. package/compliance/cache/3.0.0.previous/test-kits/osei-natural.yaml +126 -0
  256. package/compliance/cache/3.0.0.previous/test-kits/signed-requests-runner.yaml +153 -0
  257. package/compliance/cache/3.0.0.previous/test-kits/substitution-observer-runner.yaml +690 -0
  258. package/compliance/cache/3.0.0.previous/test-kits/summit-foods.yaml +125 -0
  259. package/compliance/cache/3.0.0.previous/test-kits/webhook-receiver-runner.yaml +265 -0
  260. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  261. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
  262. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  263. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  264. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  265. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  266. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  267. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  268. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  269. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  270. package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  271. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/README.md +219 -0
  272. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/canonicalization.json +241 -0
  273. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/keys.json +60 -0
  274. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  275. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  276. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  277. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  278. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  279. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  280. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  281. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  282. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  283. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  284. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  285. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  286. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  287. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  288. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  289. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  290. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  291. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  292. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  293. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  294. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  295. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  296. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  297. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  298. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  299. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  300. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  301. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  302. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  303. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  304. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  305. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  306. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  307. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  308. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  309. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  310. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  311. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  312. package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  313. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/README.md +211 -0
  314. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/keys.json +61 -0
  315. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  316. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  317. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  318. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  319. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  320. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  321. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  322. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  323. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  324. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  325. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  326. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  327. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  328. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  329. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  330. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  331. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  332. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  333. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  334. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  335. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  336. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  337. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  338. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  339. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  340. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  341. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  342. package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  343. package/compliance/cache/3.0.0.previous/universal/capability-discovery.yaml +125 -0
  344. package/compliance/cache/3.0.0.previous/universal/deterministic-testing.yaml +1318 -0
  345. package/compliance/cache/3.0.0.previous/universal/error-compliance.yaml +468 -0
  346. package/compliance/cache/3.0.0.previous/universal/fictional-entities.yaml +307 -0
  347. package/compliance/cache/3.0.0.previous/universal/idempotency.yaml +577 -0
  348. package/compliance/cache/3.0.0.previous/universal/runner-output-contract.yaml +335 -0
  349. package/compliance/cache/3.0.0.previous/universal/schema-validation.yaml +514 -0
  350. package/compliance/cache/3.0.0.previous/universal/security.yaml +428 -0
  351. package/compliance/cache/3.0.0.previous/universal/storyboard-schema.yaml +1010 -0
  352. package/compliance/cache/3.0.0.previous/universal/webhook-emission.yaml +337 -0
  353. package/compliance/cache/3.0.1/domains/brand/index.yaml +163 -0
  354. package/compliance/cache/3.0.1/domains/creative/index.yaml +412 -0
  355. package/compliance/cache/3.0.1/domains/governance/index.yaml +683 -0
  356. package/compliance/cache/3.0.1/domains/media-buy/creative-reception.yaml +247 -0
  357. package/compliance/cache/3.0.1/domains/media-buy/index.yaml +769 -0
  358. package/compliance/cache/3.0.1/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  359. package/compliance/cache/3.0.1/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  360. package/compliance/cache/3.0.1/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  361. package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  362. package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  363. package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  364. package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  365. package/compliance/cache/3.0.1/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  366. package/compliance/cache/3.0.1/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  367. package/compliance/cache/3.0.1/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  368. package/compliance/cache/3.0.1/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  369. package/compliance/cache/3.0.1/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  370. package/compliance/cache/3.0.1/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  371. package/compliance/cache/3.0.1/domains/media-buy/scenarios/refine_products.yaml +148 -0
  372. package/compliance/cache/3.0.1/domains/media-buy/state-machine.yaml +442 -0
  373. package/compliance/cache/3.0.1/domains/signals/index.yaml +266 -0
  374. package/compliance/cache/3.0.1/domains/sponsored-intelligence/index.yaml +256 -0
  375. package/compliance/cache/3.0.1/index.json +324 -0
  376. package/compliance/cache/3.0.1/protocols/brand/index.yaml +163 -0
  377. package/compliance/cache/3.0.1/protocols/creative/index.yaml +412 -0
  378. package/compliance/cache/3.0.1/protocols/governance/index.yaml +683 -0
  379. package/compliance/cache/3.0.1/protocols/media-buy/creative-reception.yaml +247 -0
  380. package/compliance/cache/3.0.1/protocols/media-buy/index.yaml +769 -0
  381. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  382. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  383. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  384. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  385. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  386. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  387. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  388. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  389. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  390. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  391. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  392. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  393. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  394. package/compliance/cache/3.0.1/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  395. package/compliance/cache/3.0.1/protocols/media-buy/state-machine.yaml +442 -0
  396. package/compliance/cache/3.0.1/protocols/signals/index.yaml +266 -0
  397. package/compliance/cache/3.0.1/protocols/sponsored-intelligence/index.yaml +256 -0
  398. package/compliance/cache/3.0.1/specialisms/audience-sync/index.yaml +280 -0
  399. package/compliance/cache/3.0.1/specialisms/brand-rights/index.yaml +350 -0
  400. package/compliance/cache/3.0.1/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  401. package/compliance/cache/3.0.1/specialisms/collection-lists/index.yaml +359 -0
  402. package/compliance/cache/3.0.1/specialisms/content-standards/index.yaml +572 -0
  403. package/compliance/cache/3.0.1/specialisms/creative-ad-server/index.yaml +383 -0
  404. package/compliance/cache/3.0.1/specialisms/creative-generative/generative-seller.yaml +758 -0
  405. package/compliance/cache/3.0.1/specialisms/creative-generative/index.yaml +746 -0
  406. package/compliance/cache/3.0.1/specialisms/creative-template/index.yaml +413 -0
  407. package/compliance/cache/3.0.1/specialisms/governance-aware-seller/index.yaml +136 -0
  408. package/compliance/cache/3.0.1/specialisms/governance-delivery-monitor/index.yaml +441 -0
  409. package/compliance/cache/3.0.1/specialisms/governance-spend-authority/denied.yaml +221 -0
  410. package/compliance/cache/3.0.1/specialisms/governance-spend-authority/index.yaml +330 -0
  411. package/compliance/cache/3.0.1/specialisms/property-lists/index.yaml +482 -0
  412. package/compliance/cache/3.0.1/specialisms/sales-broadcast-tv/index.yaml +689 -0
  413. package/compliance/cache/3.0.1/specialisms/sales-catalog-driven/index.yaml +779 -0
  414. package/compliance/cache/3.0.1/specialisms/sales-guaranteed/index.yaml +504 -0
  415. package/compliance/cache/3.0.1/specialisms/sales-non-guaranteed/index.yaml +428 -0
  416. package/compliance/cache/3.0.1/specialisms/sales-proposal-mode/index.yaml +520 -0
  417. package/compliance/cache/3.0.1/specialisms/sales-social/index.yaml +577 -0
  418. package/compliance/cache/3.0.1/specialisms/signal-marketplace/index.yaml +415 -0
  419. package/compliance/cache/3.0.1/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  420. package/compliance/cache/3.0.1/specialisms/signal-owned/index.yaml +316 -0
  421. package/compliance/cache/3.0.1/test-kits/acme-outdoor.yaml +210 -0
  422. package/compliance/cache/3.0.1/test-kits/bistro-oranje.yaml +126 -0
  423. package/compliance/cache/3.0.1/test-kits/nova-motors.yaml +262 -0
  424. package/compliance/cache/3.0.1/test-kits/osei-natural.yaml +126 -0
  425. package/compliance/cache/3.0.1/test-kits/signed-requests-runner.yaml +155 -0
  426. package/compliance/cache/3.0.1/test-kits/substitution-observer-runner.yaml +690 -0
  427. package/compliance/cache/3.0.1/test-kits/summit-foods.yaml +125 -0
  428. package/compliance/cache/3.0.1/test-kits/webhook-receiver-runner.yaml +265 -0
  429. package/compliance/cache/3.0.1/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  430. package/compliance/cache/3.0.1/test-vectors/plan-hash/002-full-plan.json +217 -0
  431. package/compliance/cache/3.0.1/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  432. package/compliance/cache/3.0.1/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  433. package/compliance/cache/3.0.1/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  434. package/compliance/cache/3.0.1/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  435. package/compliance/cache/3.0.1/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  436. package/compliance/cache/3.0.1/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  437. package/compliance/cache/3.0.1/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  438. package/compliance/cache/3.0.1/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  439. package/compliance/cache/3.0.1/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  440. package/compliance/cache/3.0.1/test-vectors/request-signing/README.md +219 -0
  441. package/compliance/cache/3.0.1/test-vectors/request-signing/canonicalization.json +241 -0
  442. package/compliance/cache/3.0.1/test-vectors/request-signing/keys.json +60 -0
  443. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  444. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  445. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  446. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  447. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  448. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  449. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  450. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  451. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  452. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  453. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  454. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  455. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  456. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  457. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  458. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  459. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  460. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  461. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  462. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  463. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  464. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  465. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  466. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  467. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  468. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  469. package/compliance/cache/3.0.1/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  470. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  471. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  472. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  473. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  474. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  475. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  476. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  477. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  478. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  479. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  480. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  481. package/compliance/cache/3.0.1/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  482. package/compliance/cache/3.0.1/test-vectors/webhook-signing/README.md +211 -0
  483. package/compliance/cache/3.0.1/test-vectors/webhook-signing/keys.json +61 -0
  484. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  485. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  486. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  487. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  488. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  489. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  490. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  491. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  492. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  493. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  494. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  495. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  496. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  497. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  498. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  499. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  500. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  501. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  502. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  503. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  504. package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  505. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  506. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  507. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  508. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  509. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  510. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  511. package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  512. package/compliance/cache/3.0.1/universal/capability-discovery.yaml +125 -0
  513. package/compliance/cache/3.0.1/universal/collection-lists-pagination-integrity.yaml +306 -0
  514. package/compliance/cache/3.0.1/universal/content-standards-pagination-integrity.yaml +326 -0
  515. package/compliance/cache/3.0.1/universal/deterministic-testing.yaml +1343 -0
  516. package/compliance/cache/3.0.1/universal/error-compliance.yaml +474 -0
  517. package/compliance/cache/3.0.1/universal/fictional-entities.yaml +307 -0
  518. package/compliance/cache/3.0.1/universal/get-media-buys-pagination-integrity.yaml +160 -0
  519. package/compliance/cache/3.0.1/universal/get-signals-pagination-integrity.yaml +211 -0
  520. package/compliance/cache/3.0.1/universal/idempotency.yaml +593 -0
  521. package/compliance/cache/3.0.1/universal/pagination-integrity-creative-formats.yaml +258 -0
  522. package/compliance/cache/3.0.1/universal/pagination-integrity-list-accounts.yaml +262 -0
  523. package/compliance/cache/3.0.1/universal/pagination-integrity.yaml +263 -0
  524. package/compliance/cache/3.0.1/universal/property-lists-pagination-integrity.yaml +307 -0
  525. package/compliance/cache/3.0.1/universal/runner-output-contract.yaml +339 -0
  526. package/compliance/cache/3.0.1/universal/schema-validation.yaml +526 -0
  527. package/compliance/cache/3.0.1/universal/security.yaml +431 -0
  528. package/compliance/cache/3.0.1/universal/signed-requests.yaml +205 -0
  529. package/compliance/cache/3.0.1/universal/storyboard-schema.yaml +1056 -0
  530. package/compliance/cache/3.0.1/universal/v3-envelope-integrity.yaml +104 -0
  531. package/compliance/cache/3.0.1/universal/webhook-emission.yaml +337 -0
  532. package/compliance/cache/3.0.1.previous/domains/brand/index.yaml +163 -0
  533. package/compliance/cache/3.0.1.previous/domains/creative/index.yaml +412 -0
  534. package/compliance/cache/3.0.1.previous/domains/governance/index.yaml +683 -0
  535. package/compliance/cache/3.0.1.previous/domains/media-buy/creative-reception.yaml +247 -0
  536. package/compliance/cache/3.0.1.previous/domains/media-buy/index.yaml +769 -0
  537. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  538. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  539. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  540. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  541. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  542. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  543. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  544. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  545. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  546. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  547. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  548. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  549. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  550. package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
  551. package/compliance/cache/3.0.1.previous/domains/media-buy/state-machine.yaml +442 -0
  552. package/compliance/cache/3.0.1.previous/domains/signals/index.yaml +266 -0
  553. package/compliance/cache/3.0.1.previous/domains/sponsored-intelligence/index.yaml +256 -0
  554. package/compliance/cache/3.0.1.previous/index.json +324 -0
  555. package/compliance/cache/3.0.1.previous/protocols/brand/index.yaml +163 -0
  556. package/compliance/cache/3.0.1.previous/protocols/creative/index.yaml +412 -0
  557. package/compliance/cache/3.0.1.previous/protocols/governance/index.yaml +683 -0
  558. package/compliance/cache/3.0.1.previous/protocols/media-buy/creative-reception.yaml +247 -0
  559. package/compliance/cache/3.0.1.previous/protocols/media-buy/index.yaml +769 -0
  560. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  561. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  562. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  563. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  564. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  565. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  566. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  567. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  568. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  569. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
  570. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  571. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  572. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  573. package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  574. package/compliance/cache/3.0.1.previous/protocols/media-buy/state-machine.yaml +442 -0
  575. package/compliance/cache/3.0.1.previous/protocols/signals/index.yaml +266 -0
  576. package/compliance/cache/3.0.1.previous/protocols/sponsored-intelligence/index.yaml +256 -0
  577. package/compliance/cache/3.0.1.previous/specialisms/audience-sync/index.yaml +280 -0
  578. package/compliance/cache/3.0.1.previous/specialisms/brand-rights/index.yaml +350 -0
  579. package/compliance/cache/3.0.1.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  580. package/compliance/cache/3.0.1.previous/specialisms/collection-lists/index.yaml +359 -0
  581. package/compliance/cache/3.0.1.previous/specialisms/content-standards/index.yaml +572 -0
  582. package/compliance/cache/3.0.1.previous/specialisms/creative-ad-server/index.yaml +383 -0
  583. package/compliance/cache/3.0.1.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
  584. package/compliance/cache/3.0.1.previous/specialisms/creative-generative/index.yaml +746 -0
  585. package/compliance/cache/3.0.1.previous/specialisms/creative-template/index.yaml +413 -0
  586. package/compliance/cache/3.0.1.previous/specialisms/governance-aware-seller/index.yaml +136 -0
  587. package/compliance/cache/3.0.1.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
  588. package/compliance/cache/3.0.1.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
  589. package/compliance/cache/3.0.1.previous/specialisms/governance-spend-authority/index.yaml +330 -0
  590. package/compliance/cache/3.0.1.previous/specialisms/property-lists/index.yaml +482 -0
  591. package/compliance/cache/3.0.1.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
  592. package/compliance/cache/3.0.1.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
  593. package/compliance/cache/3.0.1.previous/specialisms/sales-guaranteed/index.yaml +504 -0
  594. package/compliance/cache/3.0.1.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
  595. package/compliance/cache/3.0.1.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
  596. package/compliance/cache/3.0.1.previous/specialisms/sales-social/index.yaml +577 -0
  597. package/compliance/cache/3.0.1.previous/specialisms/signal-marketplace/index.yaml +415 -0
  598. package/compliance/cache/3.0.1.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  599. package/compliance/cache/3.0.1.previous/specialisms/signal-owned/index.yaml +316 -0
  600. package/compliance/cache/3.0.1.previous/test-kits/acme-outdoor.yaml +210 -0
  601. package/compliance/cache/3.0.1.previous/test-kits/bistro-oranje.yaml +126 -0
  602. package/compliance/cache/3.0.1.previous/test-kits/nova-motors.yaml +262 -0
  603. package/compliance/cache/3.0.1.previous/test-kits/osei-natural.yaml +126 -0
  604. package/compliance/cache/3.0.1.previous/test-kits/signed-requests-runner.yaml +155 -0
  605. package/compliance/cache/3.0.1.previous/test-kits/substitution-observer-runner.yaml +690 -0
  606. package/compliance/cache/3.0.1.previous/test-kits/summit-foods.yaml +125 -0
  607. package/compliance/cache/3.0.1.previous/test-kits/webhook-receiver-runner.yaml +265 -0
  608. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  609. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
  610. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  611. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  612. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  613. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  614. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  615. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  616. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  617. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  618. package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  619. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/README.md +219 -0
  620. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/canonicalization.json +241 -0
  621. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/keys.json +60 -0
  622. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  623. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  624. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  625. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  626. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  627. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  628. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  629. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  630. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  631. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  632. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  633. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  634. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  635. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  636. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  637. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  638. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  639. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  640. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  641. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  642. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  643. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  644. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  645. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  646. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  647. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  648. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  649. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  650. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  651. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  652. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  653. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  654. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  655. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  656. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  657. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  658. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  659. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  660. package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  661. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/README.md +211 -0
  662. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/keys.json +61 -0
  663. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  664. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  665. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  666. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  667. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  668. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  669. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  670. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  671. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  672. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  673. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  674. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  675. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  676. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  677. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  678. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  679. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  680. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  681. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  682. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  683. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  684. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  685. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  686. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  687. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  688. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  689. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  690. package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  691. package/compliance/cache/3.0.1.previous/universal/capability-discovery.yaml +125 -0
  692. package/compliance/cache/3.0.1.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
  693. package/compliance/cache/3.0.1.previous/universal/content-standards-pagination-integrity.yaml +326 -0
  694. package/compliance/cache/3.0.1.previous/universal/deterministic-testing.yaml +1343 -0
  695. package/compliance/cache/3.0.1.previous/universal/error-compliance.yaml +474 -0
  696. package/compliance/cache/3.0.1.previous/universal/fictional-entities.yaml +307 -0
  697. package/compliance/cache/3.0.1.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
  698. package/compliance/cache/3.0.1.previous/universal/get-signals-pagination-integrity.yaml +211 -0
  699. package/compliance/cache/3.0.1.previous/universal/idempotency.yaml +593 -0
  700. package/compliance/cache/3.0.1.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
  701. package/compliance/cache/3.0.1.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
  702. package/compliance/cache/3.0.1.previous/universal/pagination-integrity.yaml +263 -0
  703. package/compliance/cache/3.0.1.previous/universal/property-lists-pagination-integrity.yaml +307 -0
  704. package/compliance/cache/3.0.1.previous/universal/runner-output-contract.yaml +339 -0
  705. package/compliance/cache/3.0.1.previous/universal/schema-validation.yaml +526 -0
  706. package/compliance/cache/3.0.1.previous/universal/security.yaml +431 -0
  707. package/compliance/cache/3.0.1.previous/universal/signed-requests.yaml +205 -0
  708. package/compliance/cache/3.0.1.previous/universal/storyboard-schema.yaml +1056 -0
  709. package/compliance/cache/3.0.1.previous/universal/v3-envelope-integrity.yaml +104 -0
  710. package/compliance/cache/3.0.1.previous/universal/webhook-emission.yaml +337 -0
  711. package/dist/lib/adapters/content-standards-adapter.d.ts +106 -0
  712. package/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -0
  713. package/dist/lib/adapters/content-standards-adapter.js +201 -0
  714. package/dist/lib/adapters/content-standards-adapter.js.map +1 -0
  715. package/dist/lib/adapters/governance-adapter.d.ts +88 -0
  716. package/dist/lib/adapters/governance-adapter.d.ts.map +1 -0
  717. package/dist/lib/adapters/governance-adapter.js +93 -0
  718. package/dist/lib/adapters/governance-adapter.js.map +1 -0
  719. package/dist/lib/adapters/index.d.ts +19 -0
  720. package/dist/lib/adapters/index.d.ts.map +1 -0
  721. package/dist/lib/adapters/index.js +47 -0
  722. package/dist/lib/adapters/index.js.map +1 -0
  723. package/dist/lib/adapters/property-list-adapter.d.ts +123 -0
  724. package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -0
  725. package/dist/lib/adapters/property-list-adapter.js +231 -0
  726. package/dist/lib/adapters/property-list-adapter.js.map +1 -0
  727. package/dist/lib/adapters/proposal-manager.d.ts +142 -0
  728. package/dist/lib/adapters/proposal-manager.d.ts.map +1 -0
  729. package/dist/lib/adapters/proposal-manager.js +184 -0
  730. package/dist/lib/adapters/proposal-manager.js.map +1 -0
  731. package/dist/lib/adapters/si-session-manager.d.ts +164 -0
  732. package/dist/lib/adapters/si-session-manager.d.ts.map +1 -0
  733. package/dist/lib/adapters/si-session-manager.js +330 -0
  734. package/dist/lib/adapters/si-session-manager.js.map +1 -0
  735. package/dist/lib/advanced.d.ts +41 -0
  736. package/dist/lib/advanced.d.ts.map +1 -0
  737. package/dist/lib/advanced.js +49 -0
  738. package/dist/lib/advanced.js.map +1 -0
  739. package/dist/lib/agents/index.generated.d.ts +397 -0
  740. package/dist/lib/agents/index.generated.d.ts.map +1 -0
  741. package/dist/lib/agents/index.generated.js +624 -0
  742. package/dist/lib/agents/index.generated.js.map +1 -0
  743. package/dist/lib/auth/index.d.ts +39 -0
  744. package/dist/lib/auth/index.d.ts.map +1 -0
  745. package/dist/lib/auth/index.js +100 -0
  746. package/dist/lib/auth/index.js.map +1 -0
  747. package/dist/lib/auth/oauth/CLIFlowHandler.d.ts +61 -0
  748. package/dist/lib/auth/oauth/CLIFlowHandler.d.ts.map +1 -0
  749. package/dist/lib/auth/oauth/CLIFlowHandler.js +287 -0
  750. package/dist/lib/auth/oauth/CLIFlowHandler.js.map +1 -0
  751. package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts +134 -0
  752. package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts.map +1 -0
  753. package/dist/lib/auth/oauth/ClientCredentialsFlow.js +325 -0
  754. package/dist/lib/auth/oauth/ClientCredentialsFlow.js.map +1 -0
  755. package/dist/lib/auth/oauth/MCPOAuthProvider.d.ts +136 -0
  756. package/dist/lib/auth/oauth/MCPOAuthProvider.d.ts.map +1 -0
  757. package/dist/lib/auth/oauth/MCPOAuthProvider.js +255 -0
  758. package/dist/lib/auth/oauth/MCPOAuthProvider.js.map +1 -0
  759. package/dist/lib/auth/oauth/NonInteractiveFlowHandler.d.ts +37 -0
  760. package/dist/lib/auth/oauth/NonInteractiveFlowHandler.d.ts.map +1 -0
  761. package/dist/lib/auth/oauth/NonInteractiveFlowHandler.js +30 -0
  762. package/dist/lib/auth/oauth/NonInteractiveFlowHandler.js.map +1 -0
  763. package/dist/lib/auth/oauth/authorization-required.d.ts +112 -0
  764. package/dist/lib/auth/oauth/authorization-required.d.ts.map +1 -0
  765. package/dist/lib/auth/oauth/authorization-required.js +363 -0
  766. package/dist/lib/auth/oauth/authorization-required.js.map +1 -0
  767. package/dist/lib/auth/oauth/diagnose.d.ts +101 -0
  768. package/dist/lib/auth/oauth/diagnose.d.ts.map +1 -0
  769. package/dist/lib/auth/oauth/diagnose.js +630 -0
  770. package/dist/lib/auth/oauth/diagnose.js.map +1 -0
  771. package/dist/lib/auth/oauth/diagnostics.d.ts +129 -0
  772. package/dist/lib/auth/oauth/diagnostics.d.ts.map +1 -0
  773. package/dist/lib/auth/oauth/diagnostics.js +207 -0
  774. package/dist/lib/auth/oauth/diagnostics.js.map +1 -0
  775. package/dist/lib/auth/oauth/discovery.d.ts +96 -0
  776. package/dist/lib/auth/oauth/discovery.d.ts.map +1 -0
  777. package/dist/lib/auth/oauth/discovery.js +119 -0
  778. package/dist/lib/auth/oauth/discovery.js.map +1 -0
  779. package/dist/lib/auth/oauth/file-storage.d.ts +40 -0
  780. package/dist/lib/auth/oauth/file-storage.d.ts.map +1 -0
  781. package/dist/lib/auth/oauth/file-storage.js +112 -0
  782. package/dist/lib/auth/oauth/file-storage.js.map +1 -0
  783. package/dist/lib/auth/oauth/index.d.ts +133 -0
  784. package/dist/lib/auth/oauth/index.d.ts.map +1 -0
  785. package/dist/lib/auth/oauth/index.js +246 -0
  786. package/dist/lib/auth/oauth/index.js.map +1 -0
  787. package/dist/lib/auth/oauth/secret-resolver.d.ts +54 -0
  788. package/dist/lib/auth/oauth/secret-resolver.d.ts.map +1 -0
  789. package/dist/lib/auth/oauth/secret-resolver.js +96 -0
  790. package/dist/lib/auth/oauth/secret-resolver.js.map +1 -0
  791. package/dist/lib/auth/oauth/storage-registry.d.ts +44 -0
  792. package/dist/lib/auth/oauth/storage-registry.d.ts.map +1 -0
  793. package/dist/lib/auth/oauth/storage-registry.js +33 -0
  794. package/dist/lib/auth/oauth/storage-registry.js.map +1 -0
  795. package/dist/lib/auth/oauth/types.d.ts +114 -0
  796. package/dist/lib/auth/oauth/types.d.ts.map +1 -0
  797. package/dist/lib/auth/oauth/types.js +104 -0
  798. package/dist/lib/auth/oauth/types.js.map +1 -0
  799. package/dist/lib/client/index.d.ts +2 -0
  800. package/dist/lib/client/index.d.ts.map +1 -0
  801. package/dist/lib/client/index.js +26 -0
  802. package/dist/lib/client/index.js.map +1 -0
  803. package/dist/lib/compliance/index.d.ts +5 -0
  804. package/dist/lib/compliance/index.d.ts.map +1 -0
  805. package/dist/lib/compliance/index.js +52 -0
  806. package/dist/lib/compliance/index.js.map +1 -0
  807. package/dist/lib/compliance-fixtures/index.d.ts +167 -0
  808. package/dist/lib/compliance-fixtures/index.d.ts.map +1 -0
  809. package/dist/lib/compliance-fixtures/index.js +218 -0
  810. package/dist/lib/compliance-fixtures/index.js.map +1 -0
  811. package/dist/lib/compliance-fixtures/test-authorization-server.d.ts +88 -0
  812. package/dist/lib/compliance-fixtures/test-authorization-server.d.ts.map +1 -0
  813. package/dist/lib/compliance-fixtures/test-authorization-server.js +252 -0
  814. package/dist/lib/compliance-fixtures/test-authorization-server.js.map +1 -0
  815. package/dist/lib/conformance/index.d.ts +26 -0
  816. package/dist/lib/conformance/index.d.ts.map +1 -0
  817. package/dist/lib/conformance/index.js +34 -0
  818. package/dist/lib/conformance/index.js.map +1 -0
  819. package/dist/lib/conformance/invariants/uniformError.d.ts +45 -0
  820. package/dist/lib/conformance/invariants/uniformError.d.ts.map +1 -0
  821. package/dist/lib/conformance/invariants/uniformError.js +179 -0
  822. package/dist/lib/conformance/invariants/uniformError.js.map +1 -0
  823. package/dist/lib/conformance/invariants/uniformErrorComparator.d.ts +8 -0
  824. package/dist/lib/conformance/invariants/uniformErrorComparator.d.ts.map +1 -0
  825. package/dist/lib/conformance/invariants/uniformErrorComparator.js +488 -0
  826. package/dist/lib/conformance/invariants/uniformErrorComparator.js.map +1 -0
  827. package/dist/lib/conformance/oracle.d.ts +36 -0
  828. package/dist/lib/conformance/oracle.d.ts.map +1 -0
  829. package/dist/lib/conformance/oracle.js +267 -0
  830. package/dist/lib/conformance/oracle.js.map +1 -0
  831. package/dist/lib/conformance/runConformance.d.ts +17 -0
  832. package/dist/lib/conformance/runConformance.d.ts.map +1 -0
  833. package/dist/lib/conformance/runConformance.js +174 -0
  834. package/dist/lib/conformance/runConformance.js.map +1 -0
  835. package/dist/lib/conformance/runners.d.ts +27 -0
  836. package/dist/lib/conformance/runners.d.ts.map +1 -0
  837. package/dist/lib/conformance/runners.js +159 -0
  838. package/dist/lib/conformance/runners.js.map +1 -0
  839. package/dist/lib/conformance/schemaArbitrary.d.ts +39 -0
  840. package/dist/lib/conformance/schemaArbitrary.d.ts.map +1 -0
  841. package/dist/lib/conformance/schemaArbitrary.js +382 -0
  842. package/dist/lib/conformance/schemaArbitrary.js.map +1 -0
  843. package/dist/lib/conformance/schemaLoader.d.ts +12 -0
  844. package/dist/lib/conformance/schemaLoader.d.ts.map +1 -0
  845. package/dist/lib/conformance/schemaLoader.js +122 -0
  846. package/dist/lib/conformance/schemaLoader.js.map +1 -0
  847. package/dist/lib/conformance/seeder.d.ts +51 -0
  848. package/dist/lib/conformance/seeder.d.ts.map +1 -0
  849. package/dist/lib/conformance/seeder.js +341 -0
  850. package/dist/lib/conformance/seeder.js.map +1 -0
  851. package/dist/lib/conformance/types.d.ts +201 -0
  852. package/dist/lib/conformance/types.d.ts.map +1 -0
  853. package/dist/lib/conformance/types.js +56 -0
  854. package/dist/lib/conformance/types.js.map +1 -0
  855. package/dist/lib/core/ADCPMultiAgentClient.d.ts +624 -0
  856. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -0
  857. package/dist/lib/core/ADCPMultiAgentClient.js +908 -0
  858. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -0
  859. package/dist/lib/core/AgentClient.d.ts +517 -0
  860. package/dist/lib/core/AgentClient.d.ts.map +1 -0
  861. package/dist/lib/core/AgentClient.js +784 -0
  862. package/dist/lib/core/AgentClient.js.map +1 -0
  863. package/dist/lib/core/AsyncHandler.d.ts +210 -0
  864. package/dist/lib/core/AsyncHandler.d.ts.map +1 -0
  865. package/dist/lib/core/AsyncHandler.js +182 -0
  866. package/dist/lib/core/AsyncHandler.js.map +1 -0
  867. package/dist/lib/core/ConfigurationManager.d.ts +79 -0
  868. package/dist/lib/core/ConfigurationManager.d.ts.map +1 -0
  869. package/dist/lib/core/ConfigurationManager.js +249 -0
  870. package/dist/lib/core/ConfigurationManager.js.map +1 -0
  871. package/dist/lib/core/ConversationTypes.d.ts +422 -0
  872. package/dist/lib/core/ConversationTypes.d.ts.map +1 -0
  873. package/dist/lib/core/ConversationTypes.js +5 -0
  874. package/dist/lib/core/ConversationTypes.js.map +1 -0
  875. package/dist/lib/core/CreativeAgentClient.d.ts +144 -0
  876. package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -0
  877. package/dist/lib/core/CreativeAgentClient.js +169 -0
  878. package/dist/lib/core/CreativeAgentClient.js.map +1 -0
  879. package/dist/lib/core/GovernanceMiddleware.d.ts +93 -0
  880. package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -0
  881. package/dist/lib/core/GovernanceMiddleware.js +306 -0
  882. package/dist/lib/core/GovernanceMiddleware.js.map +1 -0
  883. package/dist/lib/core/GovernanceTypes.d.ts +116 -0
  884. package/dist/lib/core/GovernanceTypes.d.ts.map +1 -0
  885. package/dist/lib/core/GovernanceTypes.js +60 -0
  886. package/dist/lib/core/GovernanceTypes.js.map +1 -0
  887. package/dist/lib/core/ProtocolResponseParser.d.ts +80 -0
  888. package/dist/lib/core/ProtocolResponseParser.d.ts.map +1 -0
  889. package/dist/lib/core/ProtocolResponseParser.js +367 -0
  890. package/dist/lib/core/ProtocolResponseParser.js.map +1 -0
  891. package/dist/lib/core/ResponseValidator.d.ts +68 -0
  892. package/dist/lib/core/ResponseValidator.d.ts.map +1 -0
  893. package/dist/lib/core/ResponseValidator.js +283 -0
  894. package/dist/lib/core/ResponseValidator.js.map +1 -0
  895. package/dist/lib/core/SingleAgentClient.d.ts +1065 -0
  896. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -0
  897. package/dist/lib/core/SingleAgentClient.js +2134 -0
  898. package/dist/lib/core/SingleAgentClient.js.map +1 -0
  899. package/dist/lib/core/TaskEventTypes.d.ts +220 -0
  900. package/dist/lib/core/TaskEventTypes.d.ts.map +1 -0
  901. package/dist/lib/core/TaskEventTypes.js +80 -0
  902. package/dist/lib/core/TaskEventTypes.js.map +1 -0
  903. package/dist/lib/core/TaskExecutor.d.ts +245 -0
  904. package/dist/lib/core/TaskExecutor.d.ts.map +1 -0
  905. package/dist/lib/core/TaskExecutor.js +1452 -0
  906. package/dist/lib/core/TaskExecutor.js.map +1 -0
  907. package/dist/lib/core/match.d.ts +84 -0
  908. package/dist/lib/core/match.d.ts.map +1 -0
  909. package/dist/lib/core/match.js +47 -0
  910. package/dist/lib/core/match.js.map +1 -0
  911. package/dist/lib/discovery/network-consistency-checker.d.ts +111 -0
  912. package/dist/lib/discovery/network-consistency-checker.d.ts.map +1 -0
  913. package/dist/lib/discovery/network-consistency-checker.js +541 -0
  914. package/dist/lib/discovery/network-consistency-checker.js.map +1 -0
  915. package/dist/lib/discovery/property-crawler.d.ts +91 -0
  916. package/dist/lib/discovery/property-crawler.d.ts.map +1 -0
  917. package/dist/lib/discovery/property-crawler.js +290 -0
  918. package/dist/lib/discovery/property-crawler.js.map +1 -0
  919. package/dist/lib/discovery/property-index.d.ts +68 -0
  920. package/dist/lib/discovery/property-index.d.ts.map +1 -0
  921. package/dist/lib/discovery/property-index.js +163 -0
  922. package/dist/lib/discovery/property-index.js.map +1 -0
  923. package/dist/lib/discovery/types.d.ts +42 -0
  924. package/dist/lib/discovery/types.d.ts.map +1 -0
  925. package/dist/lib/discovery/types.js +7 -0
  926. package/dist/lib/discovery/types.js.map +1 -0
  927. package/dist/lib/errors/index.d.ts +284 -0
  928. package/dist/lib/errors/index.d.ts.map +1 -0
  929. package/dist/lib/errors/index.js +446 -0
  930. package/dist/lib/errors/index.js.map +1 -0
  931. package/dist/lib/express-mcp/index.d.ts +62 -0
  932. package/dist/lib/express-mcp/index.d.ts.map +1 -0
  933. package/dist/lib/express-mcp/index.js +118 -0
  934. package/dist/lib/express-mcp/index.js.map +1 -0
  935. package/dist/lib/governance/index.d.ts +149 -0
  936. package/dist/lib/governance/index.d.ts.map +1 -0
  937. package/dist/lib/governance/index.js +171 -0
  938. package/dist/lib/governance/index.js.map +1 -0
  939. package/dist/lib/handlers/types.d.ts +119 -0
  940. package/dist/lib/handlers/types.d.ts.map +1 -0
  941. package/dist/lib/handlers/types.js +239 -0
  942. package/dist/lib/handlers/types.js.map +1 -0
  943. package/dist/lib/index.d.ts +118 -0
  944. package/dist/lib/index.d.ts.map +1 -0
  945. package/dist/lib/index.js +689 -0
  946. package/dist/lib/index.js.map +1 -0
  947. package/dist/lib/net/address-guards.d.ts +34 -0
  948. package/dist/lib/net/address-guards.d.ts.map +1 -0
  949. package/dist/lib/net/address-guards.js +132 -0
  950. package/dist/lib/net/address-guards.js.map +1 -0
  951. package/dist/lib/net/index.d.ts +8 -0
  952. package/dist/lib/net/index.d.ts.map +1 -0
  953. package/dist/lib/net/index.js +17 -0
  954. package/dist/lib/net/index.js.map +1 -0
  955. package/dist/lib/net/ssrf-fetch.d.ts +56 -0
  956. package/dist/lib/net/ssrf-fetch.d.ts.map +1 -0
  957. package/dist/lib/net/ssrf-fetch.js +199 -0
  958. package/dist/lib/net/ssrf-fetch.js.map +1 -0
  959. package/dist/lib/observability/index.d.ts +8 -0
  960. package/dist/lib/observability/index.d.ts.map +1 -0
  961. package/dist/lib/observability/index.js +17 -0
  962. package/dist/lib/observability/index.js.map +1 -0
  963. package/dist/lib/observability/tracing.d.ts +42 -0
  964. package/dist/lib/observability/tracing.d.ts.map +1 -0
  965. package/dist/lib/observability/tracing.js +126 -0
  966. package/dist/lib/observability/tracing.js.map +1 -0
  967. package/dist/lib/protocols/a2a.d.ts +23 -0
  968. package/dist/lib/protocols/a2a.d.ts.map +1 -0
  969. package/dist/lib/protocols/a2a.js +268 -0
  970. package/dist/lib/protocols/a2a.js.map +1 -0
  971. package/dist/lib/protocols/index.d.ts +43 -0
  972. package/dist/lib/protocols/index.d.ts.map +1 -0
  973. package/dist/lib/protocols/index.js +264 -0
  974. package/dist/lib/protocols/index.js.map +1 -0
  975. package/dist/lib/protocols/mcp-tasks.d.ts +79 -0
  976. package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -0
  977. package/dist/lib/protocols/mcp-tasks.js +407 -0
  978. package/dist/lib/protocols/mcp-tasks.js.map +1 -0
  979. package/dist/lib/protocols/mcp.d.ts +124 -0
  980. package/dist/lib/protocols/mcp.d.ts.map +1 -0
  981. package/dist/lib/protocols/mcp.js +564 -0
  982. package/dist/lib/protocols/mcp.js.map +1 -0
  983. package/dist/lib/protocols/rawResponseCapture.d.ts +44 -0
  984. package/dist/lib/protocols/rawResponseCapture.d.ts.map +1 -0
  985. package/dist/lib/protocols/rawResponseCapture.js +147 -0
  986. package/dist/lib/protocols/rawResponseCapture.js.map +1 -0
  987. package/dist/lib/registry/cursor-store.d.ts +19 -0
  988. package/dist/lib/registry/cursor-store.d.ts.map +1 -0
  989. package/dist/lib/registry/cursor-store.js +44 -0
  990. package/dist/lib/registry/cursor-store.js.map +1 -0
  991. package/dist/lib/registry/index.d.ts +278 -0
  992. package/dist/lib/registry/index.d.ts.map +1 -0
  993. package/dist/lib/registry/index.js +652 -0
  994. package/dist/lib/registry/index.js.map +1 -0
  995. package/dist/lib/registry/property-registry.d.ts +57 -0
  996. package/dist/lib/registry/property-registry.d.ts.map +1 -0
  997. package/dist/lib/registry/property-registry.js +92 -0
  998. package/dist/lib/registry/property-registry.js.map +1 -0
  999. package/dist/lib/registry/sync.d.ts +139 -0
  1000. package/dist/lib/registry/sync.d.ts.map +1 -0
  1001. package/dist/lib/registry/sync.js +390 -0
  1002. package/dist/lib/registry/sync.js.map +1 -0
  1003. package/dist/lib/registry/types.d.ts +112 -0
  1004. package/dist/lib/registry/types.d.ts.map +1 -0
  1005. package/dist/lib/registry/types.generated.d.ts +5680 -0
  1006. package/dist/lib/registry/types.generated.d.ts.map +1 -0
  1007. package/dist/lib/registry/types.generated.js +8 -0
  1008. package/dist/lib/registry/types.generated.js.map +1 -0
  1009. package/dist/lib/registry/types.js +9 -0
  1010. package/dist/lib/registry/types.js.map +1 -0
  1011. package/dist/lib/schemas/index.d.ts +76 -0
  1012. package/dist/lib/schemas/index.d.ts.map +1 -0
  1013. package/dist/lib/schemas/index.js +133 -0
  1014. package/dist/lib/schemas/index.js.map +1 -0
  1015. package/dist/lib/schemas-data/3.0.1/a2ui/bound-value.json +81 -0
  1016. package/dist/lib/schemas-data/3.0.1/a2ui/component.json +32 -0
  1017. package/dist/lib/schemas-data/3.0.1/a2ui/si-catalog.json +427 -0
  1018. package/dist/lib/schemas-data/3.0.1/a2ui/surface.json +39 -0
  1019. package/dist/lib/schemas-data/3.0.1/a2ui/user-action.json +47 -0
  1020. package/dist/lib/schemas-data/3.0.1/account/get-account-financials-request.json +70 -0
  1021. package/dist/lib/schemas-data/3.0.1/account/get-account-financials-response.json +320 -0
  1022. package/dist/lib/schemas-data/3.0.1/account/list-accounts-request.json +42 -0
  1023. package/dist/lib/schemas-data/3.0.1/account/list-accounts-response.json +108 -0
  1024. package/dist/lib/schemas-data/3.0.1/account/report-usage-request.json +168 -0
  1025. package/dist/lib/schemas-data/3.0.1/account/report-usage-response.json +56 -0
  1026. package/dist/lib/schemas-data/3.0.1/account/sync-accounts-request.json +201 -0
  1027. package/dist/lib/schemas-data/3.0.1/account/sync-accounts-response.json +346 -0
  1028. package/dist/lib/schemas-data/3.0.1/account/sync-governance-request.json +170 -0
  1029. package/dist/lib/schemas-data/3.0.1/account/sync-governance-response.json +193 -0
  1030. package/dist/lib/schemas-data/3.0.1/adagents.json +1225 -0
  1031. package/dist/lib/schemas-data/3.0.1/brand/acquire-rights-request.json +114 -0
  1032. package/dist/lib/schemas-data/3.0.1/brand/acquire-rights-response.json +220 -0
  1033. package/dist/lib/schemas-data/3.0.1/brand/creative-approval-request.json +63 -0
  1034. package/dist/lib/schemas-data/3.0.1/brand/creative-approval-response.json +189 -0
  1035. package/dist/lib/schemas-data/3.0.1/brand/get-brand-identity-request.json +56 -0
  1036. package/dist/lib/schemas-data/3.0.1/brand/get-brand-identity-response.json +585 -0
  1037. package/dist/lib/schemas-data/3.0.1/brand/get-rights-request.json +70 -0
  1038. package/dist/lib/schemas-data/3.0.1/brand/get-rights-response.json +220 -0
  1039. package/dist/lib/schemas-data/3.0.1/brand/revocation-notification.json +57 -0
  1040. package/dist/lib/schemas-data/3.0.1/brand/rights-pricing-option.json +65 -0
  1041. package/dist/lib/schemas-data/3.0.1/brand/rights-terms.json +70 -0
  1042. package/dist/lib/schemas-data/3.0.1/brand/update-rights-request.json +63 -0
  1043. package/dist/lib/schemas-data/3.0.1/brand/update-rights-response.json +99 -0
  1044. package/dist/lib/schemas-data/3.0.1/brand.json +2582 -0
  1045. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/calibrate-content-request.json +1712 -0
  1046. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/calibrate-content-response.json +180 -0
  1047. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/create-content-standards-request.json +3622 -0
  1048. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/create-content-standards-response.json +116 -0
  1049. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-content-standards-request.json +38 -0
  1050. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-content-standards-response.json +3851 -0
  1051. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-media-buy-artifacts-request.json +234 -0
  1052. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-media-buy-artifacts-response.json +1880 -0
  1053. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/list-content-standards-request.json +121 -0
  1054. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/list-content-standards-response.json +3880 -0
  1055. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/update-content-standards-request.json +3611 -0
  1056. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/update-content-standards-response.json +131 -0
  1057. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/validate-content-delivery-request.json +1766 -0
  1058. package/dist/lib/schemas-data/3.0.1/bundled/content-standards/validate-content-delivery-response.json +208 -0
  1059. package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-get-request.json +60 -0
  1060. package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-get-response.json +264 -0
  1061. package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-list-request.json +318 -0
  1062. package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-list-response.json +258 -0
  1063. package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-delivery-request.json +245 -0
  1064. package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-delivery-response.json +5967 -0
  1065. package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-features-request.json +5091 -0
  1066. package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-features-response.json +230 -0
  1067. package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creative-formats-request.json +485 -0
  1068. package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creative-formats-response.json +4076 -0
  1069. package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creatives-request.json +687 -0
  1070. package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creatives-response.json +5977 -0
  1071. package/dist/lib/schemas-data/3.0.1/bundled/creative/preview-creative-request.json +9624 -0
  1072. package/dist/lib/schemas-data/3.0.1/bundled/creative/preview-creative-response.json +5931 -0
  1073. package/dist/lib/schemas-data/3.0.1/bundled/creative/sync-creatives-request.json +5268 -0
  1074. package/dist/lib/schemas-data/3.0.1/bundled/creative/sync-creatives-response.json +1146 -0
  1075. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/build-creative-request.json +5369 -0
  1076. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/build-creative-response.json +10286 -0
  1077. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/create-media-buy-request.json +7893 -0
  1078. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/create-media-buy-response.json +4170 -0
  1079. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buy-delivery-request.json +494 -0
  1080. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buy-delivery-response.json +4256 -0
  1081. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buys-request.json +261 -0
  1082. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buys-response.json +2357 -0
  1083. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-products-request.json +2046 -0
  1084. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-products-response.json +6809 -0
  1085. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/list-creative-formats-request.json +311 -0
  1086. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/list-creative-formats-response.json +4080 -0
  1087. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/log-event-request.json +394 -0
  1088. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/log-event-response.json +193 -0
  1089. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/package-request.json +6923 -0
  1090. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/provide-performance-feedback-request.json +119 -0
  1091. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/provide-performance-feedback-response.json +142 -0
  1092. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-audiences-request.json +454 -0
  1093. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-audiences-response.json +335 -0
  1094. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-catalogs-request.json +836 -0
  1095. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-catalogs-response.json +344 -0
  1096. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-event-sources-request.json +299 -0
  1097. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-event-sources-response.json +461 -0
  1098. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/update-media-buy-request.json +13548 -0
  1099. package/dist/lib/schemas-data/3.0.1/bundled/media-buy/update-media-buy-response.json +2799 -0
  1100. package/dist/lib/schemas-data/3.0.1/bundled/property/create-property-list-request.json +661 -0
  1101. package/dist/lib/schemas-data/3.0.1/bundled/property/create-property-list-response.json +928 -0
  1102. package/dist/lib/schemas-data/3.0.1/bundled/property/delete-property-list-request.json +198 -0
  1103. package/dist/lib/schemas-data/3.0.1/bundled/property/delete-property-list-response.json +44 -0
  1104. package/dist/lib/schemas-data/3.0.1/bundled/property/get-property-list-request.json +212 -0
  1105. package/dist/lib/schemas-data/3.0.1/bundled/property/get-property-list-response.json +1001 -0
  1106. package/dist/lib/schemas-data/3.0.1/bundled/property/list-property-lists-request.json +204 -0
  1107. package/dist/lib/schemas-data/3.0.1/bundled/property/list-property-lists-response.json +946 -0
  1108. package/dist/lib/schemas-data/3.0.1/bundled/property/update-property-list-request.json +670 -0
  1109. package/dist/lib/schemas-data/3.0.1/bundled/property/update-property-list-response.json +923 -0
  1110. package/dist/lib/schemas-data/3.0.1/bundled/property/validate-property-delivery-request.json +308 -0
  1111. package/dist/lib/schemas-data/3.0.1/bundled/property/validate-property-delivery-response.json +418 -0
  1112. package/dist/lib/schemas-data/3.0.1/bundled/protocol/get-adcp-capabilities-request.json +47 -0
  1113. package/dist/lib/schemas-data/3.0.1/bundled/protocol/get-adcp-capabilities-response.json +1729 -0
  1114. package/dist/lib/schemas-data/3.0.1/bundled/signals/activate-signal-request.json +269 -0
  1115. package/dist/lib/schemas-data/3.0.1/bundled/signals/activate-signal-response.json +320 -0
  1116. package/dist/lib/schemas-data/3.0.1/bundled/signals/get-signals-request.json +409 -0
  1117. package/dist/lib/schemas-data/3.0.1/bundled/signals/get-signals-response.json +689 -0
  1118. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-get-offering-request.json +57 -0
  1119. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-get-offering-response.json +207 -0
  1120. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-initiate-session-request.json +322 -0
  1121. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-initiate-session-response.json +618 -0
  1122. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-send-message-request.json +81 -0
  1123. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-send-message-response.json +589 -0
  1124. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-terminate-session-request.json +87 -0
  1125. package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-terminate-session-response.json +156 -0
  1126. package/dist/lib/schemas-data/3.0.1/collection/base-collection-source.json +118 -0
  1127. package/dist/lib/schemas-data/3.0.1/collection/collection-list-changed-webhook.json +74 -0
  1128. package/dist/lib/schemas-data/3.0.1/collection/collection-list-filters.json +85 -0
  1129. package/dist/lib/schemas-data/3.0.1/collection/collection-list.json +71 -0
  1130. package/dist/lib/schemas-data/3.0.1/collection/create-collection-list-request.json +62 -0
  1131. package/dist/lib/schemas-data/3.0.1/collection/create-collection-list-response.json +33 -0
  1132. package/dist/lib/schemas-data/3.0.1/collection/delete-collection-list-request.json +43 -0
  1133. package/dist/lib/schemas-data/3.0.1/collection/delete-collection-list-response.json +34 -0
  1134. package/dist/lib/schemas-data/3.0.1/collection/get-collection-list-request.json +57 -0
  1135. package/dist/lib/schemas-data/3.0.1/collection/get-collection-list-response.json +122 -0
  1136. package/dist/lib/schemas-data/3.0.1/collection/list-collection-lists-request.json +33 -0
  1137. package/dist/lib/schemas-data/3.0.1/collection/list-collection-lists-response.json +29 -0
  1138. package/dist/lib/schemas-data/3.0.1/collection/update-collection-list-request.json +71 -0
  1139. package/dist/lib/schemas-data/3.0.1/collection/update-collection-list-response.json +28 -0
  1140. package/dist/lib/schemas-data/3.0.1/content-standards/artifact-webhook-payload.json +88 -0
  1141. package/dist/lib/schemas-data/3.0.1/content-standards/artifact.json +407 -0
  1142. package/dist/lib/schemas-data/3.0.1/content-standards/calibrate-content-request.json +42 -0
  1143. package/dist/lib/schemas-data/3.0.1/content-standards/calibrate-content-response.json +93 -0
  1144. package/dist/lib/schemas-data/3.0.1/content-standards/content-standards.json +83 -0
  1145. package/dist/lib/schemas-data/3.0.1/content-standards/create-content-standards-request.json +177 -0
  1146. package/dist/lib/schemas-data/3.0.1/content-standards/create-content-standards-response.json +53 -0
  1147. package/dist/lib/schemas-data/3.0.1/content-standards/get-content-standards-request.json +28 -0
  1148. package/dist/lib/schemas-data/3.0.1/content-standards/get-content-standards-response.json +47 -0
  1149. package/dist/lib/schemas-data/3.0.1/content-standards/get-media-buy-artifacts-request.json +79 -0
  1150. package/dist/lib/schemas-data/3.0.1/content-standards/get-media-buy-artifacts-response.json +136 -0
  1151. package/dist/lib/schemas-data/3.0.1/content-standards/list-content-standards-request.json +49 -0
  1152. package/dist/lib/schemas-data/3.0.1/content-standards/list-content-standards-response.json +55 -0
  1153. package/dist/lib/schemas-data/3.0.1/content-standards/update-content-standards-request.json +166 -0
  1154. package/dist/lib/schemas-data/3.0.1/content-standards/update-content-standards-response.json +68 -0
  1155. package/dist/lib/schemas-data/3.0.1/content-standards/validate-content-delivery-request.json +96 -0
  1156. package/dist/lib/schemas-data/3.0.1/content-standards/validate-content-delivery-response.json +121 -0
  1157. package/dist/lib/schemas-data/3.0.1/core/account-ref.json +71 -0
  1158. package/dist/lib/schemas-data/3.0.1/core/account.json +344 -0
  1159. package/dist/lib/schemas-data/3.0.1/core/activation-key.json +50 -0
  1160. package/dist/lib/schemas-data/3.0.1/core/ad-inventory-config.json +39 -0
  1161. package/dist/lib/schemas-data/3.0.1/core/agent-encryption-key.json +41 -0
  1162. package/dist/lib/schemas-data/3.0.1/core/agent-signing-key.json +55 -0
  1163. package/dist/lib/schemas-data/3.0.1/core/app-item.json +170 -0
  1164. package/dist/lib/schemas-data/3.0.1/core/assets/audio-asset.json +82 -0
  1165. package/dist/lib/schemas-data/3.0.1/core/assets/brief-asset.json +22 -0
  1166. package/dist/lib/schemas-data/3.0.1/core/assets/catalog-asset.json +22 -0
  1167. package/dist/lib/schemas-data/3.0.1/core/assets/css-asset.json +31 -0
  1168. package/dist/lib/schemas-data/3.0.1/core/assets/daast-asset.json +88 -0
  1169. package/dist/lib/schemas-data/3.0.1/core/assets/html-asset.json +54 -0
  1170. package/dist/lib/schemas-data/3.0.1/core/assets/image-asset.json +49 -0
  1171. package/dist/lib/schemas-data/3.0.1/core/assets/javascript-asset.json +54 -0
  1172. package/dist/lib/schemas-data/3.0.1/core/assets/markdown-asset.json +37 -0
  1173. package/dist/lib/schemas-data/3.0.1/core/assets/text-asset.json +31 -0
  1174. package/dist/lib/schemas-data/3.0.1/core/assets/url-asset.json +36 -0
  1175. package/dist/lib/schemas-data/3.0.1/core/assets/vast-asset.json +94 -0
  1176. package/dist/lib/schemas-data/3.0.1/core/assets/video-asset.json +179 -0
  1177. package/dist/lib/schemas-data/3.0.1/core/assets/webhook-asset.json +97 -0
  1178. package/dist/lib/schemas-data/3.0.1/core/async-response-data.json +128 -0
  1179. package/dist/lib/schemas-data/3.0.1/core/attribution-window.json +33 -0
  1180. package/dist/lib/schemas-data/3.0.1/core/audience-member.json +70 -0
  1181. package/dist/lib/schemas-data/3.0.1/core/audience-selector.json +134 -0
  1182. package/dist/lib/schemas-data/3.0.1/core/brand-id.json +16 -0
  1183. package/dist/lib/schemas-data/3.0.1/core/brand-ref.json +76 -0
  1184. package/dist/lib/schemas-data/3.0.1/core/business-entity.json +207 -0
  1185. package/dist/lib/schemas-data/3.0.1/core/cancellation-policy.json +49 -0
  1186. package/dist/lib/schemas-data/3.0.1/core/catalog-field-mapping.json +144 -0
  1187. package/dist/lib/schemas-data/3.0.1/core/catalog.json +222 -0
  1188. package/dist/lib/schemas-data/3.0.1/core/catchment.json +221 -0
  1189. package/dist/lib/schemas-data/3.0.1/core/collection-distribution.json +41 -0
  1190. package/dist/lib/schemas-data/3.0.1/core/collection-list-ref.json +29 -0
  1191. package/dist/lib/schemas-data/3.0.1/core/collection-selector.json +27 -0
  1192. package/dist/lib/schemas-data/3.0.1/core/collection.json +116 -0
  1193. package/dist/lib/schemas-data/3.0.1/core/content-rating.json +22 -0
  1194. package/dist/lib/schemas-data/3.0.1/core/context.json +8 -0
  1195. package/dist/lib/schemas-data/3.0.1/core/creative-asset.json +150 -0
  1196. package/dist/lib/schemas-data/3.0.1/core/creative-assignment.json +32 -0
  1197. package/dist/lib/schemas-data/3.0.1/core/creative-brief.json +136 -0
  1198. package/dist/lib/schemas-data/3.0.1/core/creative-consumption.json +30 -0
  1199. package/dist/lib/schemas-data/3.0.1/core/creative-filters.json +119 -0
  1200. package/dist/lib/schemas-data/3.0.1/core/creative-item.json +79 -0
  1201. package/dist/lib/schemas-data/3.0.1/core/creative-manifest.json +96 -0
  1202. package/dist/lib/schemas-data/3.0.1/core/creative-policy.json +31 -0
  1203. package/dist/lib/schemas-data/3.0.1/core/creative-variable.json +47 -0
  1204. package/dist/lib/schemas-data/3.0.1/core/creative-variant.json +60 -0
  1205. package/dist/lib/schemas-data/3.0.1/core/data-provider-signal-selector.json +94 -0
  1206. package/dist/lib/schemas-data/3.0.1/core/date-range.json +24 -0
  1207. package/dist/lib/schemas-data/3.0.1/core/datetime-range.json +24 -0
  1208. package/dist/lib/schemas-data/3.0.1/core/daypart-target.json +39 -0
  1209. package/dist/lib/schemas-data/3.0.1/core/deadline-policy.json +58 -0
  1210. package/dist/lib/schemas-data/3.0.1/core/delivery-forecast.json +86 -0
  1211. package/dist/lib/schemas-data/3.0.1/core/delivery-metrics.json +327 -0
  1212. package/dist/lib/schemas-data/3.0.1/core/deployment.json +93 -0
  1213. package/dist/lib/schemas-data/3.0.1/core/destination-item.json +168 -0
  1214. package/dist/lib/schemas-data/3.0.1/core/destination.json +53 -0
  1215. package/dist/lib/schemas-data/3.0.1/core/diagnostic-issue.json +27 -0
  1216. package/dist/lib/schemas-data/3.0.1/core/duration.json +30 -0
  1217. package/dist/lib/schemas-data/3.0.1/core/education-item.json +168 -0
  1218. package/dist/lib/schemas-data/3.0.1/core/error.json +52 -0
  1219. package/dist/lib/schemas-data/3.0.1/core/event-custom-data.json +86 -0
  1220. package/dist/lib/schemas-data/3.0.1/core/event-source-health.json +70 -0
  1221. package/dist/lib/schemas-data/3.0.1/core/event.json +54 -0
  1222. package/dist/lib/schemas-data/3.0.1/core/ext.json +8 -0
  1223. package/dist/lib/schemas-data/3.0.1/core/feature-requirement.json +45 -0
  1224. package/dist/lib/schemas-data/3.0.1/core/flight-item.json +159 -0
  1225. package/dist/lib/schemas-data/3.0.1/core/forecast-point.json +85 -0
  1226. package/dist/lib/schemas-data/3.0.1/core/forecast-range.json +38 -0
  1227. package/dist/lib/schemas-data/3.0.1/core/format-id.json +48 -0
  1228. package/dist/lib/schemas-data/3.0.1/core/format.json +904 -0
  1229. package/dist/lib/schemas-data/3.0.1/core/frequency-cap.json +73 -0
  1230. package/dist/lib/schemas-data/3.0.1/core/generation-credential.json +44 -0
  1231. package/dist/lib/schemas-data/3.0.1/core/geo-breakdown-support.json +38 -0
  1232. package/dist/lib/schemas-data/3.0.1/core/hotel-item.json +214 -0
  1233. package/dist/lib/schemas-data/3.0.1/core/identifier.json +22 -0
  1234. package/dist/lib/schemas-data/3.0.1/core/industry-identifier.json +22 -0
  1235. package/dist/lib/schemas-data/3.0.1/core/insertion-order.json +91 -0
  1236. package/dist/lib/schemas-data/3.0.1/core/installment-deadlines.json +29 -0
  1237. package/dist/lib/schemas-data/3.0.1/core/installment.json +108 -0
  1238. package/dist/lib/schemas-data/3.0.1/core/job-item.json +199 -0
  1239. package/dist/lib/schemas-data/3.0.1/core/limited-series.json +28 -0
  1240. package/dist/lib/schemas-data/3.0.1/core/material-deadline.json +31 -0
  1241. package/dist/lib/schemas-data/3.0.1/core/mcp-webhook-payload.json +163 -0
  1242. package/dist/lib/schemas-data/3.0.1/core/measurement-readiness.json +43 -0
  1243. package/dist/lib/schemas-data/3.0.1/core/measurement-terms.json +63 -0
  1244. package/dist/lib/schemas-data/3.0.1/core/measurement-window.json +54 -0
  1245. package/dist/lib/schemas-data/3.0.1/core/media-buy-features.json +24 -0
  1246. package/dist/lib/schemas-data/3.0.1/core/media-buy.json +101 -0
  1247. package/dist/lib/schemas-data/3.0.1/core/offering-asset-group.json +118 -0
  1248. package/dist/lib/schemas-data/3.0.1/core/offering.json +267 -0
  1249. package/dist/lib/schemas-data/3.0.1/core/optimization-goal.json +285 -0
  1250. package/dist/lib/schemas-data/3.0.1/core/outcome-measurement.json +48 -0
  1251. package/dist/lib/schemas-data/3.0.1/core/overlay.json +89 -0
  1252. package/dist/lib/schemas-data/3.0.1/core/package.json +170 -0
  1253. package/dist/lib/schemas-data/3.0.1/core/pagination-request.json +21 -0
  1254. package/dist/lib/schemas-data/3.0.1/core/pagination-response.json +26 -0
  1255. package/dist/lib/schemas-data/3.0.1/core/performance-feedback.json +90 -0
  1256. package/dist/lib/schemas-data/3.0.1/core/performance-standard.json +33 -0
  1257. package/dist/lib/schemas-data/3.0.1/core/placement-definition.json +81 -0
  1258. package/dist/lib/schemas-data/3.0.1/core/placement.json +42 -0
  1259. package/dist/lib/schemas-data/3.0.1/core/planned-delivery.json +84 -0
  1260. package/dist/lib/schemas-data/3.0.1/core/price.json +59 -0
  1261. package/dist/lib/schemas-data/3.0.1/core/pricing-option.json +35 -0
  1262. package/dist/lib/schemas-data/3.0.1/core/product-allocation.json +69 -0
  1263. package/dist/lib/schemas-data/3.0.1/core/product-filters.json +435 -0
  1264. package/dist/lib/schemas-data/3.0.1/core/product.json +493 -0
  1265. package/dist/lib/schemas-data/3.0.1/core/property-id.json +15 -0
  1266. package/dist/lib/schemas-data/3.0.1/core/property-list-ref.json +29 -0
  1267. package/dist/lib/schemas-data/3.0.1/core/property-tag.json +16 -0
  1268. package/dist/lib/schemas-data/3.0.1/core/property.json +70 -0
  1269. package/dist/lib/schemas-data/3.0.1/core/proposal.json +89 -0
  1270. package/dist/lib/schemas-data/3.0.1/core/protocol-envelope.json +186 -0
  1271. package/dist/lib/schemas-data/3.0.1/core/provenance.json +234 -0
  1272. package/dist/lib/schemas-data/3.0.1/core/publisher-property-selector.json +92 -0
  1273. package/dist/lib/schemas-data/3.0.1/core/push-notification-config.json +47 -0
  1274. package/dist/lib/schemas-data/3.0.1/core/real-estate-item.json +241 -0
  1275. package/dist/lib/schemas-data/3.0.1/core/reference-asset.json +36 -0
  1276. package/dist/lib/schemas-data/3.0.1/core/reporting-capabilities.json +118 -0
  1277. package/dist/lib/schemas-data/3.0.1/core/reporting-webhook.json +67 -0
  1278. package/dist/lib/schemas-data/3.0.1/core/requirements/asset-requirements.json +44 -0
  1279. package/dist/lib/schemas-data/3.0.1/core/requirements/audio-asset-requirements.json +68 -0
  1280. package/dist/lib/schemas-data/3.0.1/core/requirements/catalog-field-binding.json +172 -0
  1281. package/dist/lib/schemas-data/3.0.1/core/requirements/catalog-requirements.json +68 -0
  1282. package/dist/lib/schemas-data/3.0.1/core/requirements/css-asset-requirements.json +15 -0
  1283. package/dist/lib/schemas-data/3.0.1/core/requirements/daast-asset-requirements.json +17 -0
  1284. package/dist/lib/schemas-data/3.0.1/core/requirements/html-asset-requirements.json +38 -0
  1285. package/dist/lib/schemas-data/3.0.1/core/requirements/image-asset-requirements.json +151 -0
  1286. package/dist/lib/schemas-data/3.0.1/core/requirements/javascript-asset-requirements.json +40 -0
  1287. package/dist/lib/schemas-data/3.0.1/core/requirements/markdown-asset-requirements.json +15 -0
  1288. package/dist/lib/schemas-data/3.0.1/core/requirements/offering-asset-constraint.json +66 -0
  1289. package/dist/lib/schemas-data/3.0.1/core/requirements/text-asset-requirements.json +41 -0
  1290. package/dist/lib/schemas-data/3.0.1/core/requirements/url-asset-requirements.json +50 -0
  1291. package/dist/lib/schemas-data/3.0.1/core/requirements/vast-asset-requirements.json +21 -0
  1292. package/dist/lib/schemas-data/3.0.1/core/requirements/video-asset-requirements.json +172 -0
  1293. package/dist/lib/schemas-data/3.0.1/core/requirements/webhook-asset-requirements.json +21 -0
  1294. package/dist/lib/schemas-data/3.0.1/core/response.json +24 -0
  1295. package/dist/lib/schemas-data/3.0.1/core/rights-constraint.json +98 -0
  1296. package/dist/lib/schemas-data/3.0.1/core/seller-agent-ref.json +30 -0
  1297. package/dist/lib/schemas-data/3.0.1/core/signal-definition.json +89 -0
  1298. package/dist/lib/schemas-data/3.0.1/core/signal-filters.json +43 -0
  1299. package/dist/lib/schemas-data/3.0.1/core/signal-id.json +66 -0
  1300. package/dist/lib/schemas-data/3.0.1/core/signal-pricing-option.json +7 -0
  1301. package/dist/lib/schemas-data/3.0.1/core/signal-pricing.json +194 -0
  1302. package/dist/lib/schemas-data/3.0.1/core/signal-targeting.json +93 -0
  1303. package/dist/lib/schemas-data/3.0.1/core/special.json +31 -0
  1304. package/dist/lib/schemas-data/3.0.1/core/start-timing.json +18 -0
  1305. package/dist/lib/schemas-data/3.0.1/core/store-item.json +259 -0
  1306. package/dist/lib/schemas-data/3.0.1/core/talent.json +27 -0
  1307. package/dist/lib/schemas-data/3.0.1/core/targeting.json +510 -0
  1308. package/dist/lib/schemas-data/3.0.1/core/tasks-get-request.json +50 -0
  1309. package/dist/lib/schemas-data/3.0.1/core/tasks-get-response.json +159 -0
  1310. package/dist/lib/schemas-data/3.0.1/core/tasks-list-request.json +185 -0
  1311. package/dist/lib/schemas-data/3.0.1/core/tasks-list-response.json +153 -0
  1312. package/dist/lib/schemas-data/3.0.1/core/user-match.json +90 -0
  1313. package/dist/lib/schemas-data/3.0.1/core/vehicle-item.json +231 -0
  1314. package/dist/lib/schemas-data/3.0.1/core/vendor-pricing-option.json +24 -0
  1315. package/dist/lib/schemas-data/3.0.1/core/x-entity-types.json +69 -0
  1316. package/dist/lib/schemas-data/3.0.1/creative/asset-types/index.json +118 -0
  1317. package/dist/lib/schemas-data/3.0.1/creative/creative-feature-result.json +69 -0
  1318. package/dist/lib/schemas-data/3.0.1/creative/get-creative-delivery-request.json +75 -0
  1319. package/dist/lib/schemas-data/3.0.1/creative/get-creative-delivery-response.json +143 -0
  1320. package/dist/lib/schemas-data/3.0.1/creative/get-creative-features-request.json +41 -0
  1321. package/dist/lib/schemas-data/3.0.1/creative/get-creative-features-response.json +76 -0
  1322. package/dist/lib/schemas-data/3.0.1/creative/list-creative-formats-request.json +150 -0
  1323. package/dist/lib/schemas-data/3.0.1/creative/list-creative-formats-response.json +64 -0
  1324. package/dist/lib/schemas-data/3.0.1/creative/list-creatives-request.json +184 -0
  1325. package/dist/lib/schemas-data/3.0.1/creative/list-creatives-response.json +445 -0
  1326. package/dist/lib/schemas-data/3.0.1/creative/preview-creative-request.json +212 -0
  1327. package/dist/lib/schemas-data/3.0.1/creative/preview-creative-response.json +307 -0
  1328. package/dist/lib/schemas-data/3.0.1/creative/preview-render.json +225 -0
  1329. package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-async-response-input-required.json +25 -0
  1330. package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-async-response-submitted.json +16 -0
  1331. package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-async-response-working.json +46 -0
  1332. package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-request.json +242 -0
  1333. package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-response.json +270 -0
  1334. package/dist/lib/schemas-data/3.0.1/enums/account-scope.json +19 -0
  1335. package/dist/lib/schemas-data/3.0.1/enums/account-status.json +23 -0
  1336. package/dist/lib/schemas-data/3.0.1/enums/action-source.json +29 -0
  1337. package/dist/lib/schemas-data/3.0.1/enums/adcp-protocol.json +23 -0
  1338. package/dist/lib/schemas-data/3.0.1/enums/adjustment-kind.json +19 -0
  1339. package/dist/lib/schemas-data/3.0.1/enums/advertiser-industry.json +175 -0
  1340. package/dist/lib/schemas-data/3.0.1/enums/age-verification-method.json +14 -0
  1341. package/dist/lib/schemas-data/3.0.1/enums/assessment-status.json +19 -0
  1342. package/dist/lib/schemas-data/3.0.1/enums/asset-content-type.json +23 -0
  1343. package/dist/lib/schemas-data/3.0.1/enums/attribution-model.json +14 -0
  1344. package/dist/lib/schemas-data/3.0.1/enums/audience-source.json +15 -0
  1345. package/dist/lib/schemas-data/3.0.1/enums/audience-status.json +17 -0
  1346. package/dist/lib/schemas-data/3.0.1/enums/audio-channel-layout.json +13 -0
  1347. package/dist/lib/schemas-data/3.0.1/enums/auth-scheme.json +11 -0
  1348. package/dist/lib/schemas-data/3.0.1/enums/available-metric.json +31 -0
  1349. package/dist/lib/schemas-data/3.0.1/enums/billing-party.json +17 -0
  1350. package/dist/lib/schemas-data/3.0.1/enums/binary-verdict.json +15 -0
  1351. package/dist/lib/schemas-data/3.0.1/enums/brand-agent-type.json +27 -0
  1352. package/dist/lib/schemas-data/3.0.1/enums/canceled-by.json +15 -0
  1353. package/dist/lib/schemas-data/3.0.1/enums/catalog-action.json +14 -0
  1354. package/dist/lib/schemas-data/3.0.1/enums/catalog-item-status.json +19 -0
  1355. package/dist/lib/schemas-data/3.0.1/enums/catalog-type.json +22 -0
  1356. package/dist/lib/schemas-data/3.0.1/enums/channels.json +51 -0
  1357. package/dist/lib/schemas-data/3.0.1/enums/cloud-storage-protocol.json +12 -0
  1358. package/dist/lib/schemas-data/3.0.1/enums/co-branding-requirement.json +12 -0
  1359. package/dist/lib/schemas-data/3.0.1/enums/collection-cadence.json +23 -0
  1360. package/dist/lib/schemas-data/3.0.1/enums/collection-kind.json +19 -0
  1361. package/dist/lib/schemas-data/3.0.1/enums/collection-relationship.json +21 -0
  1362. package/dist/lib/schemas-data/3.0.1/enums/collection-status.json +19 -0
  1363. package/dist/lib/schemas-data/3.0.1/enums/consent-basis.json +13 -0
  1364. package/dist/lib/schemas-data/3.0.1/enums/content-id-type.json +21 -0
  1365. package/dist/lib/schemas-data/3.0.1/enums/content-rating-system.json +33 -0
  1366. package/dist/lib/schemas-data/3.0.1/enums/creative-action.json +14 -0
  1367. package/dist/lib/schemas-data/3.0.1/enums/creative-agent-capability.json +14 -0
  1368. package/dist/lib/schemas-data/3.0.1/enums/creative-approval-status.json +17 -0
  1369. package/dist/lib/schemas-data/3.0.1/enums/creative-identifier-type.json +22 -0
  1370. package/dist/lib/schemas-data/3.0.1/enums/creative-quality.json +15 -0
  1371. package/dist/lib/schemas-data/3.0.1/enums/creative-sort-field.json +14 -0
  1372. package/dist/lib/schemas-data/3.0.1/enums/creative-status.json +21 -0
  1373. package/dist/lib/schemas-data/3.0.1/enums/daast-tracking-event.json +32 -0
  1374. package/dist/lib/schemas-data/3.0.1/enums/daast-version.json +11 -0
  1375. package/dist/lib/schemas-data/3.0.1/enums/day-of-week.json +16 -0
  1376. package/dist/lib/schemas-data/3.0.1/enums/delegation-authority.json +17 -0
  1377. package/dist/lib/schemas-data/3.0.1/enums/delivery-type.json +15 -0
  1378. package/dist/lib/schemas-data/3.0.1/enums/demographic-system.json +23 -0
  1379. package/dist/lib/schemas-data/3.0.1/enums/derivative-type.json +21 -0
  1380. package/dist/lib/schemas-data/3.0.1/enums/device-platform.json +21 -0
  1381. package/dist/lib/schemas-data/3.0.1/enums/device-type.json +15 -0
  1382. package/dist/lib/schemas-data/3.0.1/enums/digital-source-type.json +29 -0
  1383. package/dist/lib/schemas-data/3.0.1/enums/dimension-unit.json +15 -0
  1384. package/dist/lib/schemas-data/3.0.1/enums/disclosure-persistence.json +17 -0
  1385. package/dist/lib/schemas-data/3.0.1/enums/disclosure-position.json +17 -0
  1386. package/dist/lib/schemas-data/3.0.1/enums/distance-unit.json +17 -0
  1387. package/dist/lib/schemas-data/3.0.1/enums/distribution-identifier-type.json +53 -0
  1388. package/dist/lib/schemas-data/3.0.1/enums/error-code.json +101 -0
  1389. package/dist/lib/schemas-data/3.0.1/enums/escalation-severity.json +17 -0
  1390. package/dist/lib/schemas-data/3.0.1/enums/event-type.json +67 -0
  1391. package/dist/lib/schemas-data/3.0.1/enums/exclusivity.json +17 -0
  1392. package/dist/lib/schemas-data/3.0.1/enums/feature-check-status.json +19 -0
  1393. package/dist/lib/schemas-data/3.0.1/enums/feed-format.json +14 -0
  1394. package/dist/lib/schemas-data/3.0.1/enums/feedback-source.json +13 -0
  1395. package/dist/lib/schemas-data/3.0.1/enums/forecast-method.json +17 -0
  1396. package/dist/lib/schemas-data/3.0.1/enums/forecast-range-unit.json +27 -0
  1397. package/dist/lib/schemas-data/3.0.1/enums/forecastable-metric.json +43 -0
  1398. package/dist/lib/schemas-data/3.0.1/enums/format-id-parameter.json +11 -0
  1399. package/dist/lib/schemas-data/3.0.1/enums/frame-rate-type.json +15 -0
  1400. package/dist/lib/schemas-data/3.0.1/enums/frequency-cap-scope.json +13 -0
  1401. package/dist/lib/schemas-data/3.0.1/enums/genre-taxonomy.json +29 -0
  1402. package/dist/lib/schemas-data/3.0.1/enums/geo-level.json +13 -0
  1403. package/dist/lib/schemas-data/3.0.1/enums/gop-type.json +15 -0
  1404. package/dist/lib/schemas-data/3.0.1/enums/governance-decision.json +18 -0
  1405. package/dist/lib/schemas-data/3.0.1/enums/governance-domain.json +13 -0
  1406. package/dist/lib/schemas-data/3.0.1/enums/governance-mode.json +18 -0
  1407. package/dist/lib/schemas-data/3.0.1/enums/governance-phase.json +12 -0
  1408. package/dist/lib/schemas-data/3.0.1/enums/history-entry-type.json +11 -0
  1409. package/dist/lib/schemas-data/3.0.1/enums/http-method.json +11 -0
  1410. package/dist/lib/schemas-data/3.0.1/enums/identifier-types.json +61 -0
  1411. package/dist/lib/schemas-data/3.0.1/enums/installment-status.json +25 -0
  1412. package/dist/lib/schemas-data/3.0.1/enums/javascript-module-type.json +12 -0
  1413. package/dist/lib/schemas-data/3.0.1/enums/landing-page-requirement.json +12 -0
  1414. package/dist/lib/schemas-data/3.0.1/enums/makegood-remedy.json +17 -0
  1415. package/dist/lib/schemas-data/3.0.1/enums/markdown-flavor.json +11 -0
  1416. package/dist/lib/schemas-data/3.0.1/enums/match-id-type.json +29 -0
  1417. package/dist/lib/schemas-data/3.0.1/enums/match-type.json +17 -0
  1418. package/dist/lib/schemas-data/3.0.1/enums/media-buy-status.json +25 -0
  1419. package/dist/lib/schemas-data/3.0.1/enums/media-buy-valid-action.json +17 -0
  1420. package/dist/lib/schemas-data/3.0.1/enums/metric-type.json +17 -0
  1421. package/dist/lib/schemas-data/3.0.1/enums/metro-system.json +14 -0
  1422. package/dist/lib/schemas-data/3.0.1/enums/moov-atom-position.json +15 -0
  1423. package/dist/lib/schemas-data/3.0.1/enums/notification-type.json +13 -0
  1424. package/dist/lib/schemas-data/3.0.1/enums/outcome-type.json +17 -0
  1425. package/dist/lib/schemas-data/3.0.1/enums/pacing.json +17 -0
  1426. package/dist/lib/schemas-data/3.0.1/enums/payment-terms.json +23 -0
  1427. package/dist/lib/schemas-data/3.0.1/enums/performance-standard-metric.json +21 -0
  1428. package/dist/lib/schemas-data/3.0.1/enums/policy-category.json +15 -0
  1429. package/dist/lib/schemas-data/3.0.1/enums/policy-enforcement.json +17 -0
  1430. package/dist/lib/schemas-data/3.0.1/enums/postal-system.json +20 -0
  1431. package/dist/lib/schemas-data/3.0.1/enums/preview-output-format.json +11 -0
  1432. package/dist/lib/schemas-data/3.0.1/enums/pricing-model.json +29 -0
  1433. package/dist/lib/schemas-data/3.0.1/enums/production-quality.json +17 -0
  1434. package/dist/lib/schemas-data/3.0.1/enums/property-type.json +31 -0
  1435. package/dist/lib/schemas-data/3.0.1/enums/proposal-status.json +15 -0
  1436. package/dist/lib/schemas-data/3.0.1/enums/publisher-identifier-types.json +19 -0
  1437. package/dist/lib/schemas-data/3.0.1/enums/purchase-type.json +13 -0
  1438. package/dist/lib/schemas-data/3.0.1/enums/reach-unit.json +23 -0
  1439. package/dist/lib/schemas-data/3.0.1/enums/reporting-frequency.json +12 -0
  1440. package/dist/lib/schemas-data/3.0.1/enums/response-type.json +19 -0
  1441. package/dist/lib/schemas-data/3.0.1/enums/restricted-attribute.json +31 -0
  1442. package/dist/lib/schemas-data/3.0.1/enums/right-type.json +22 -0
  1443. package/dist/lib/schemas-data/3.0.1/enums/right-use.json +36 -0
  1444. package/dist/lib/schemas-data/3.0.1/enums/rights-billing-period.json +15 -0
  1445. package/dist/lib/schemas-data/3.0.1/enums/scan-type.json +15 -0
  1446. package/dist/lib/schemas-data/3.0.1/enums/si-session-status.json +19 -0
  1447. package/dist/lib/schemas-data/3.0.1/enums/signal-catalog-type.json +17 -0
  1448. package/dist/lib/schemas-data/3.0.1/enums/signal-source.json +15 -0
  1449. package/dist/lib/schemas-data/3.0.1/enums/signal-value-type.json +17 -0
  1450. package/dist/lib/schemas-data/3.0.1/enums/snapshot-unavailable-reason.json +17 -0
  1451. package/dist/lib/schemas-data/3.0.1/enums/sort-direction.json +11 -0
  1452. package/dist/lib/schemas-data/3.0.1/enums/sort-metric.json +31 -0
  1453. package/dist/lib/schemas-data/3.0.1/enums/special-category.json +35 -0
  1454. package/dist/lib/schemas-data/3.0.1/enums/specialism.json +55 -0
  1455. package/dist/lib/schemas-data/3.0.1/enums/talent-role.json +29 -0
  1456. package/dist/lib/schemas-data/3.0.1/enums/task-status.json +29 -0
  1457. package/dist/lib/schemas-data/3.0.1/enums/task-type.json +57 -0
  1458. package/dist/lib/schemas-data/3.0.1/enums/transport-mode.json +19 -0
  1459. package/dist/lib/schemas-data/3.0.1/enums/travel-time-unit.json +15 -0
  1460. package/dist/lib/schemas-data/3.0.1/enums/uid-type.json +31 -0
  1461. package/dist/lib/schemas-data/3.0.1/enums/universal-macro.json +149 -0
  1462. package/dist/lib/schemas-data/3.0.1/enums/update-frequency.json +13 -0
  1463. package/dist/lib/schemas-data/3.0.1/enums/url-asset-type.json +12 -0
  1464. package/dist/lib/schemas-data/3.0.1/enums/validation-mode.json +11 -0
  1465. package/dist/lib/schemas-data/3.0.1/enums/vast-tracking-event.json +41 -0
  1466. package/dist/lib/schemas-data/3.0.1/enums/vast-version.json +14 -0
  1467. package/dist/lib/schemas-data/3.0.1/enums/viewability-standard.json +15 -0
  1468. package/dist/lib/schemas-data/3.0.1/enums/wcag-level.json +17 -0
  1469. package/dist/lib/schemas-data/3.0.1/enums/webhook-response-type.json +13 -0
  1470. package/dist/lib/schemas-data/3.0.1/enums/webhook-security-method.json +12 -0
  1471. package/dist/lib/schemas-data/3.0.1/error-details/account-setup-required.json +22 -0
  1472. package/dist/lib/schemas-data/3.0.1/error-details/audience-too-small.json +18 -0
  1473. package/dist/lib/schemas-data/3.0.1/error-details/budget-too-low.json +18 -0
  1474. package/dist/lib/schemas-data/3.0.1/error-details/conflict.json +28 -0
  1475. package/dist/lib/schemas-data/3.0.1/error-details/creative-rejected.json +27 -0
  1476. package/dist/lib/schemas-data/3.0.1/error-details/policy-violation.json +27 -0
  1477. package/dist/lib/schemas-data/3.0.1/error-details/rate-limited.json +31 -0
  1478. package/dist/lib/schemas-data/3.0.1/error-details/vendor-error-codes.json +55 -0
  1479. package/dist/lib/schemas-data/3.0.1/extensions/extension-meta.json +69 -0
  1480. package/dist/lib/schemas-data/3.0.1/extensions/index.json +9 -0
  1481. package/dist/lib/schemas-data/3.0.1/governance/attribute-definition.json +82 -0
  1482. package/dist/lib/schemas-data/3.0.1/governance/audience-constraints.json +27 -0
  1483. package/dist/lib/schemas-data/3.0.1/governance/check-governance-request.json +198 -0
  1484. package/dist/lib/schemas-data/3.0.1/governance/check-governance-response.json +217 -0
  1485. package/dist/lib/schemas-data/3.0.1/governance/get-plan-audit-logs-request.json +79 -0
  1486. package/dist/lib/schemas-data/3.0.1/governance/get-plan-audit-logs-response.json +423 -0
  1487. package/dist/lib/schemas-data/3.0.1/governance/policy-category-definition.json +95 -0
  1488. package/dist/lib/schemas-data/3.0.1/governance/policy-entry.json +165 -0
  1489. package/dist/lib/schemas-data/3.0.1/governance/policy-ref.json +27 -0
  1490. package/dist/lib/schemas-data/3.0.1/governance/report-plan-outcome-request.json +165 -0
  1491. package/dist/lib/schemas-data/3.0.1/governance/report-plan-outcome-response.json +89 -0
  1492. package/dist/lib/schemas-data/3.0.1/governance/sync-plans-request.json +449 -0
  1493. package/dist/lib/schemas-data/3.0.1/governance/sync-plans-response.json +119 -0
  1494. package/dist/lib/schemas-data/3.0.1/index.json +1678 -0
  1495. package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-async-response-input-required.json +32 -0
  1496. package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-async-response-submitted.json +16 -0
  1497. package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-async-response-working.json +36 -0
  1498. package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-request.json +138 -0
  1499. package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-response.json +293 -0
  1500. package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-async-response-input-required.json +31 -0
  1501. package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-async-response-submitted.json +16 -0
  1502. package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-async-response-working.json +36 -0
  1503. package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-request.json +221 -0
  1504. package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-response.json +194 -0
  1505. package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buy-delivery-request.json +205 -0
  1506. package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buy-delivery-response.json +704 -0
  1507. package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buys-request.json +66 -0
  1508. package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buys-response.json +394 -0
  1509. package/dist/lib/schemas-data/3.0.1/media-buy/get-products-async-response-input-required.json +38 -0
  1510. package/dist/lib/schemas-data/3.0.1/media-buy/get-products-async-response-submitted.json +21 -0
  1511. package/dist/lib/schemas-data/3.0.1/media-buy/get-products-async-response-working.json +34 -0
  1512. package/dist/lib/schemas-data/3.0.1/media-buy/get-products-request.json +229 -0
  1513. package/dist/lib/schemas-data/3.0.1/media-buy/get-products-response.json +195 -0
  1514. package/dist/lib/schemas-data/3.0.1/media-buy/list-creative-formats-request.json +103 -0
  1515. package/dist/lib/schemas-data/3.0.1/media-buy/list-creative-formats-response.json +68 -0
  1516. package/dist/lib/schemas-data/3.0.1/media-buy/log-event-request.json +53 -0
  1517. package/dist/lib/schemas-data/3.0.1/media-buy/log-event-response.json +130 -0
  1518. package/dist/lib/schemas-data/3.0.1/media-buy/package-request.json +133 -0
  1519. package/dist/lib/schemas-data/3.0.1/media-buy/package-update.json +202 -0
  1520. package/dist/lib/schemas-data/3.0.1/media-buy/provide-performance-feedback-request.json +73 -0
  1521. package/dist/lib/schemas-data/3.0.1/media-buy/provide-performance-feedback-response.json +79 -0
  1522. package/dist/lib/schemas-data/3.0.1/media-buy/sync-audiences-request.json +127 -0
  1523. package/dist/lib/schemas-data/3.0.1/media-buy/sync-audiences-response.json +191 -0
  1524. package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-async-response-input-required.json +26 -0
  1525. package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-async-response-submitted.json +16 -0
  1526. package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-async-response-working.json +56 -0
  1527. package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-request.json +162 -0
  1528. package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-response.json +213 -0
  1529. package/dist/lib/schemas-data/3.0.1/media-buy/sync-event-sources-request.json +82 -0
  1530. package/dist/lib/schemas-data/3.0.1/media-buy/sync-event-sources-response.json +167 -0
  1531. package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-async-response-input-required.json +24 -0
  1532. package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-async-response-submitted.json +16 -0
  1533. package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-async-response-working.json +36 -0
  1534. package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-request.json +99 -0
  1535. package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-response.json +119 -0
  1536. package/dist/lib/schemas-data/3.0.1/pricing-options/cpa-option.json +75 -0
  1537. package/dist/lib/schemas-data/3.0.1/pricing-options/cpc-option.json +71 -0
  1538. package/dist/lib/schemas-data/3.0.1/pricing-options/cpcv-option.json +71 -0
  1539. package/dist/lib/schemas-data/3.0.1/pricing-options/cpm-option.json +71 -0
  1540. package/dist/lib/schemas-data/3.0.1/pricing-options/cpp-option.json +90 -0
  1541. package/dist/lib/schemas-data/3.0.1/pricing-options/cpv-option.json +107 -0
  1542. package/dist/lib/schemas-data/3.0.1/pricing-options/flat-rate-option.json +116 -0
  1543. package/dist/lib/schemas-data/3.0.1/pricing-options/price-breakdown.json +88 -0
  1544. package/dist/lib/schemas-data/3.0.1/pricing-options/price-guidance.json +30 -0
  1545. package/dist/lib/schemas-data/3.0.1/pricing-options/time-option.json +97 -0
  1546. package/dist/lib/schemas-data/3.0.1/pricing-options/vcpm-option.json +71 -0
  1547. package/dist/lib/schemas-data/3.0.1/property/authorization-result.json +50 -0
  1548. package/dist/lib/schemas-data/3.0.1/property/base-property-source.json +98 -0
  1549. package/dist/lib/schemas-data/3.0.1/property/create-property-list-request.json +62 -0
  1550. package/dist/lib/schemas-data/3.0.1/property/create-property-list-response.json +33 -0
  1551. package/dist/lib/schemas-data/3.0.1/property/delete-property-list-request.json +43 -0
  1552. package/dist/lib/schemas-data/3.0.1/property/delete-property-list-response.json +34 -0
  1553. package/dist/lib/schemas-data/3.0.1/property/delivery-record.json +35 -0
  1554. package/dist/lib/schemas-data/3.0.1/property/get-property-list-request.json +57 -0
  1555. package/dist/lib/schemas-data/3.0.1/property/get-property-list-response.json +53 -0
  1556. package/dist/lib/schemas-data/3.0.1/property/list-property-lists-request.json +33 -0
  1557. package/dist/lib/schemas-data/3.0.1/property/list-property-lists-response.json +29 -0
  1558. package/dist/lib/schemas-data/3.0.1/property/property-error.json +34 -0
  1559. package/dist/lib/schemas-data/3.0.1/property/property-feature-definition.json +96 -0
  1560. package/dist/lib/schemas-data/3.0.1/property/property-feature-result.json +50 -0
  1561. package/dist/lib/schemas-data/3.0.1/property/property-feature-value.json +59 -0
  1562. package/dist/lib/schemas-data/3.0.1/property/property-feature.json +26 -0
  1563. package/dist/lib/schemas-data/3.0.1/property/property-list-changed-webhook.json +74 -0
  1564. package/dist/lib/schemas-data/3.0.1/property/property-list-filters.json +51 -0
  1565. package/dist/lib/schemas-data/3.0.1/property/property-list.json +79 -0
  1566. package/dist/lib/schemas-data/3.0.1/property/update-property-list-request.json +71 -0
  1567. package/dist/lib/schemas-data/3.0.1/property/update-property-list-response.json +28 -0
  1568. package/dist/lib/schemas-data/3.0.1/property/validate-property-delivery-request.json +49 -0
  1569. package/dist/lib/schemas-data/3.0.1/property/validate-property-delivery-response.json +180 -0
  1570. package/dist/lib/schemas-data/3.0.1/property/validation-result.json +101 -0
  1571. package/dist/lib/schemas-data/3.0.1/protocol/get-adcp-capabilities-request.json +37 -0
  1572. package/dist/lib/schemas-data/3.0.1/protocol/get-adcp-capabilities-response.json +1108 -0
  1573. package/dist/lib/schemas-data/3.0.1/signals/activate-signal-request.json +66 -0
  1574. package/dist/lib/schemas-data/3.0.1/signals/activate-signal-response.json +81 -0
  1575. package/dist/lib/schemas-data/3.0.1/signals/get-signals-request.json +80 -0
  1576. package/dist/lib/schemas-data/3.0.1/signals/get-signals-response.json +130 -0
  1577. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-capabilities.json +154 -0
  1578. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-get-offering-request.json +47 -0
  1579. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-get-offering-response.json +150 -0
  1580. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-identity.json +104 -0
  1581. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-initiate-session-request.json +65 -0
  1582. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-initiate-session-response.json +64 -0
  1583. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-send-message-request.json +71 -0
  1584. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-send-message-response.json +123 -0
  1585. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-terminate-session-request.json +77 -0
  1586. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-terminate-session-response.json +86 -0
  1587. package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-ui-element.json +341 -0
  1588. package/dist/lib/server/a2a-adapter.d.ts +234 -0
  1589. package/dist/lib/server/a2a-adapter.d.ts.map +1 -0
  1590. package/dist/lib/server/a2a-adapter.js +503 -0
  1591. package/dist/lib/server/a2a-adapter.js.map +1 -0
  1592. package/dist/lib/server/adcp-server.d.ts +265 -0
  1593. package/dist/lib/server/adcp-server.d.ts.map +1 -0
  1594. package/dist/lib/server/adcp-server.js +187 -0
  1595. package/dist/lib/server/adcp-server.js.map +1 -0
  1596. package/dist/lib/server/auth-introspection.d.ts +83 -0
  1597. package/dist/lib/server/auth-introspection.d.ts.map +1 -0
  1598. package/dist/lib/server/auth-introspection.js +297 -0
  1599. package/dist/lib/server/auth-introspection.js.map +1 -0
  1600. package/dist/lib/server/auth-signature.d.ts +322 -0
  1601. package/dist/lib/server/auth-signature.d.ts.map +1 -0
  1602. package/dist/lib/server/auth-signature.js +310 -0
  1603. package/dist/lib/server/auth-signature.js.map +1 -0
  1604. package/dist/lib/server/auth.d.ts +303 -0
  1605. package/dist/lib/server/auth.d.ts.map +1 -0
  1606. package/dist/lib/server/auth.js +387 -0
  1607. package/dist/lib/server/auth.js.map +1 -0
  1608. package/dist/lib/server/create-adcp-server.d.ts +968 -0
  1609. package/dist/lib/server/create-adcp-server.d.ts.map +1 -0
  1610. package/dist/lib/server/create-adcp-server.js +1831 -0
  1611. package/dist/lib/server/create-adcp-server.js.map +1 -0
  1612. package/dist/lib/server/envelope-allowlist.d.ts +109 -0
  1613. package/dist/lib/server/envelope-allowlist.d.ts.map +1 -0
  1614. package/dist/lib/server/envelope-allowlist.js +155 -0
  1615. package/dist/lib/server/envelope-allowlist.js.map +1 -0
  1616. package/dist/lib/server/errors.d.ts +129 -0
  1617. package/dist/lib/server/errors.d.ts.map +1 -0
  1618. package/dist/lib/server/errors.js +85 -0
  1619. package/dist/lib/server/errors.js.map +1 -0
  1620. package/dist/lib/server/express-adapter.d.ts +169 -0
  1621. package/dist/lib/server/express-adapter.d.ts.map +1 -0
  1622. package/dist/lib/server/express-adapter.js +271 -0
  1623. package/dist/lib/server/express-adapter.js.map +1 -0
  1624. package/dist/lib/server/governance.d.ts +122 -0
  1625. package/dist/lib/server/governance.d.ts.map +1 -0
  1626. package/dist/lib/server/governance.js +189 -0
  1627. package/dist/lib/server/governance.js.map +1 -0
  1628. package/dist/lib/server/idempotency/backends/memory.d.ts +22 -0
  1629. package/dist/lib/server/idempotency/backends/memory.d.ts.map +1 -0
  1630. package/dist/lib/server/idempotency/backends/memory.js +78 -0
  1631. package/dist/lib/server/idempotency/backends/memory.js.map +1 -0
  1632. package/dist/lib/server/idempotency/backends/pg.d.ts +76 -0
  1633. package/dist/lib/server/idempotency/backends/pg.d.ts.map +1 -0
  1634. package/dist/lib/server/idempotency/backends/pg.js +163 -0
  1635. package/dist/lib/server/idempotency/backends/pg.js.map +1 -0
  1636. package/dist/lib/server/idempotency/index.d.ts +7 -0
  1637. package/dist/lib/server/idempotency/index.d.ts.map +1 -0
  1638. package/dist/lib/server/idempotency/index.js +15 -0
  1639. package/dist/lib/server/idempotency/index.js.map +1 -0
  1640. package/dist/lib/server/idempotency/store.d.ts +302 -0
  1641. package/dist/lib/server/idempotency/store.d.ts.map +1 -0
  1642. package/dist/lib/server/idempotency/store.js +272 -0
  1643. package/dist/lib/server/idempotency/store.js.map +1 -0
  1644. package/dist/lib/server/index.d.ts +50 -0
  1645. package/dist/lib/server/index.d.ts.map +1 -0
  1646. package/dist/lib/server/index.js +164 -0
  1647. package/dist/lib/server/index.js.map +1 -0
  1648. package/dist/lib/server/media-buy-helpers.d.ts +47 -0
  1649. package/dist/lib/server/media-buy-helpers.d.ts.map +1 -0
  1650. package/dist/lib/server/media-buy-helpers.js +43 -0
  1651. package/dist/lib/server/media-buy-helpers.js.map +1 -0
  1652. package/dist/lib/server/pin-and-bind-fetch.d.ts +115 -0
  1653. package/dist/lib/server/pin-and-bind-fetch.d.ts.map +1 -0
  1654. package/dist/lib/server/pin-and-bind-fetch.js +244 -0
  1655. package/dist/lib/server/pin-and-bind-fetch.js.map +1 -0
  1656. package/dist/lib/server/postgres-state-store.d.ts +76 -0
  1657. package/dist/lib/server/postgres-state-store.d.ts.map +1 -0
  1658. package/dist/lib/server/postgres-state-store.js +218 -0
  1659. package/dist/lib/server/postgres-state-store.js.map +1 -0
  1660. package/dist/lib/server/postgres-task-store.d.ts +121 -0
  1661. package/dist/lib/server/postgres-task-store.d.ts.map +1 -0
  1662. package/dist/lib/server/postgres-task-store.js +298 -0
  1663. package/dist/lib/server/postgres-task-store.js.map +1 -0
  1664. package/dist/lib/server/product-defaults.d.ts +16 -0
  1665. package/dist/lib/server/product-defaults.d.ts.map +1 -0
  1666. package/dist/lib/server/product-defaults.js +25 -0
  1667. package/dist/lib/server/product-defaults.js.map +1 -0
  1668. package/dist/lib/server/responses.d.ts +257 -0
  1669. package/dist/lib/server/responses.d.ts.map +1 -0
  1670. package/dist/lib/server/responses.js +542 -0
  1671. package/dist/lib/server/responses.js.map +1 -0
  1672. package/dist/lib/server/serve.d.ts +308 -0
  1673. package/dist/lib/server/serve.d.ts.map +1 -0
  1674. package/dist/lib/server/serve.js +663 -0
  1675. package/dist/lib/server/serve.js.map +1 -0
  1676. package/dist/lib/server/state-store.d.ts +296 -0
  1677. package/dist/lib/server/state-store.d.ts.map +1 -0
  1678. package/dist/lib/server/state-store.js +459 -0
  1679. package/dist/lib/server/state-store.js.map +1 -0
  1680. package/dist/lib/server/structured-serialize.d.ts +30 -0
  1681. package/dist/lib/server/structured-serialize.d.ts.map +1 -0
  1682. package/dist/lib/server/structured-serialize.js +109 -0
  1683. package/dist/lib/server/structured-serialize.js.map +1 -0
  1684. package/dist/lib/server/targeting-helpers.d.ts +90 -0
  1685. package/dist/lib/server/targeting-helpers.d.ts.map +1 -0
  1686. package/dist/lib/server/targeting-helpers.js +144 -0
  1687. package/dist/lib/server/targeting-helpers.js.map +1 -0
  1688. package/dist/lib/server/tasks.d.ts +91 -0
  1689. package/dist/lib/server/tasks.d.ts.map +1 -0
  1690. package/dist/lib/server/tasks.js +116 -0
  1691. package/dist/lib/server/tasks.js.map +1 -0
  1692. package/dist/lib/server/test-controller-bridge.d.ts +192 -0
  1693. package/dist/lib/server/test-controller-bridge.d.ts.map +1 -0
  1694. package/dist/lib/server/test-controller-bridge.js +207 -0
  1695. package/dist/lib/server/test-controller-bridge.js.map +1 -0
  1696. package/dist/lib/server/test-controller.d.ts +388 -0
  1697. package/dist/lib/server/test-controller.d.ts.map +1 -0
  1698. package/dist/lib/server/test-controller.js +735 -0
  1699. package/dist/lib/server/test-controller.js.map +1 -0
  1700. package/dist/lib/server/webhook-emitter.d.ts +192 -0
  1701. package/dist/lib/server/webhook-emitter.d.ts.map +1 -0
  1702. package/dist/lib/server/webhook-emitter.js +316 -0
  1703. package/dist/lib/server/webhook-emitter.js.map +1 -0
  1704. package/dist/lib/server/wrap-envelope.d.ts +162 -0
  1705. package/dist/lib/server/wrap-envelope.d.ts.map +1 -0
  1706. package/dist/lib/server/wrap-envelope.js +145 -0
  1707. package/dist/lib/server/wrap-envelope.js.map +1 -0
  1708. package/dist/lib/signing/agent-context.d.ts +73 -0
  1709. package/dist/lib/signing/agent-context.d.ts.map +1 -0
  1710. package/dist/lib/signing/agent-context.js +104 -0
  1711. package/dist/lib/signing/agent-context.js.map +1 -0
  1712. package/dist/lib/signing/agent-fetch.d.ts +177 -0
  1713. package/dist/lib/signing/agent-fetch.d.ts.map +1 -0
  1714. package/dist/lib/signing/agent-fetch.js +271 -0
  1715. package/dist/lib/signing/agent-fetch.js.map +1 -0
  1716. package/dist/lib/signing/brand-jwks.d.ts +102 -0
  1717. package/dist/lib/signing/brand-jwks.d.ts.map +1 -0
  1718. package/dist/lib/signing/brand-jwks.js +433 -0
  1719. package/dist/lib/signing/brand-jwks.js.map +1 -0
  1720. package/dist/lib/signing/canonicalize.d.ts +39 -0
  1721. package/dist/lib/signing/canonicalize.d.ts.map +1 -0
  1722. package/dist/lib/signing/canonicalize.js +149 -0
  1723. package/dist/lib/signing/canonicalize.js.map +1 -0
  1724. package/dist/lib/signing/capability-cache.d.ts +70 -0
  1725. package/dist/lib/signing/capability-cache.d.ts.map +1 -0
  1726. package/dist/lib/signing/capability-cache.js +90 -0
  1727. package/dist/lib/signing/capability-cache.js.map +1 -0
  1728. package/dist/lib/signing/capability-priming.d.ts +30 -0
  1729. package/dist/lib/signing/capability-priming.d.ts.map +1 -0
  1730. package/dist/lib/signing/capability-priming.js +145 -0
  1731. package/dist/lib/signing/capability-priming.js.map +1 -0
  1732. package/dist/lib/signing/client.d.ts +25 -0
  1733. package/dist/lib/signing/client.d.ts.map +1 -0
  1734. package/dist/lib/signing/client.js +70 -0
  1735. package/dist/lib/signing/client.js.map +1 -0
  1736. package/dist/lib/signing/content-digest.d.ts +9 -0
  1737. package/dist/lib/signing/content-digest.d.ts.map +1 -0
  1738. package/dist/lib/signing/content-digest.js +48 -0
  1739. package/dist/lib/signing/content-digest.js.map +1 -0
  1740. package/dist/lib/signing/crypto.d.ts +5 -0
  1741. package/dist/lib/signing/crypto.d.ts.map +1 -0
  1742. package/dist/lib/signing/crypto.js +35 -0
  1743. package/dist/lib/signing/crypto.js.map +1 -0
  1744. package/dist/lib/signing/ecdsa-encoding.d.ts +20 -0
  1745. package/dist/lib/signing/ecdsa-encoding.d.ts.map +1 -0
  1746. package/dist/lib/signing/ecdsa-encoding.js +91 -0
  1747. package/dist/lib/signing/ecdsa-encoding.js.map +1 -0
  1748. package/dist/lib/signing/errors.d.ts +49 -0
  1749. package/dist/lib/signing/errors.d.ts.map +1 -0
  1750. package/dist/lib/signing/errors.js +48 -0
  1751. package/dist/lib/signing/errors.js.map +1 -0
  1752. package/dist/lib/signing/fetch-async.d.ts +23 -0
  1753. package/dist/lib/signing/fetch-async.d.ts.map +1 -0
  1754. package/dist/lib/signing/fetch-async.js +96 -0
  1755. package/dist/lib/signing/fetch-async.js.map +1 -0
  1756. package/dist/lib/signing/fetch.d.ts +17 -0
  1757. package/dist/lib/signing/fetch.d.ts.map +1 -0
  1758. package/dist/lib/signing/fetch.js +89 -0
  1759. package/dist/lib/signing/fetch.js.map +1 -0
  1760. package/dist/lib/signing/index.d.ts +16 -0
  1761. package/dist/lib/signing/index.d.ts.map +1 -0
  1762. package/dist/lib/signing/index.js +32 -0
  1763. package/dist/lib/signing/index.js.map +1 -0
  1764. package/dist/lib/signing/jwks-helpers.d.ts +48 -0
  1765. package/dist/lib/signing/jwks-helpers.d.ts.map +1 -0
  1766. package/dist/lib/signing/jwks-helpers.js +87 -0
  1767. package/dist/lib/signing/jwks-helpers.js.map +1 -0
  1768. package/dist/lib/signing/jwks-https.d.ts +61 -0
  1769. package/dist/lib/signing/jwks-https.d.ts.map +1 -0
  1770. package/dist/lib/signing/jwks-https.js +165 -0
  1771. package/dist/lib/signing/jwks-https.js.map +1 -0
  1772. package/dist/lib/signing/jwks.d.ts +10 -0
  1773. package/dist/lib/signing/jwks.d.ts.map +1 -0
  1774. package/dist/lib/signing/jwks.js +15 -0
  1775. package/dist/lib/signing/jwks.js.map +1 -0
  1776. package/dist/lib/signing/middleware.d.ts +77 -0
  1777. package/dist/lib/signing/middleware.d.ts.map +1 -0
  1778. package/dist/lib/signing/middleware.js +77 -0
  1779. package/dist/lib/signing/middleware.js.map +1 -0
  1780. package/dist/lib/signing/parser.d.ts +35 -0
  1781. package/dist/lib/signing/parser.d.ts.map +1 -0
  1782. package/dist/lib/signing/parser.js +244 -0
  1783. package/dist/lib/signing/parser.js.map +1 -0
  1784. package/dist/lib/signing/postgres-replay-store.d.ts +138 -0
  1785. package/dist/lib/signing/postgres-replay-store.d.ts.map +1 -0
  1786. package/dist/lib/signing/postgres-replay-store.js +236 -0
  1787. package/dist/lib/signing/postgres-replay-store.js.map +1 -0
  1788. package/dist/lib/signing/provider.d.ts +81 -0
  1789. package/dist/lib/signing/provider.d.ts.map +1 -0
  1790. package/dist/lib/signing/provider.js +3 -0
  1791. package/dist/lib/signing/provider.js.map +1 -0
  1792. package/dist/lib/signing/replay.d.ts +62 -0
  1793. package/dist/lib/signing/replay.d.ts.map +1 -0
  1794. package/dist/lib/signing/replay.js +106 -0
  1795. package/dist/lib/signing/replay.js.map +1 -0
  1796. package/dist/lib/signing/revocation-https.d.ts +79 -0
  1797. package/dist/lib/signing/revocation-https.d.ts.map +1 -0
  1798. package/dist/lib/signing/revocation-https.js +144 -0
  1799. package/dist/lib/signing/revocation-https.js.map +1 -0
  1800. package/dist/lib/signing/revocation.d.ts +11 -0
  1801. package/dist/lib/signing/revocation.d.ts.map +1 -0
  1802. package/dist/lib/signing/revocation.js +18 -0
  1803. package/dist/lib/signing/revocation.js.map +1 -0
  1804. package/dist/lib/signing/server.d.ts +27 -0
  1805. package/dist/lib/signing/server.d.ts.map +1 -0
  1806. package/dist/lib/signing/server.js +67 -0
  1807. package/dist/lib/signing/server.js.map +1 -0
  1808. package/dist/lib/signing/signer-async.d.ts +24 -0
  1809. package/dist/lib/signing/signer-async.d.ts.map +1 -0
  1810. package/dist/lib/signing/signer-async.js +34 -0
  1811. package/dist/lib/signing/signer-async.js.map +1 -0
  1812. package/dist/lib/signing/signer.d.ts +94 -0
  1813. package/dist/lib/signing/signer.d.ts.map +1 -0
  1814. package/dist/lib/signing/signer.js +131 -0
  1815. package/dist/lib/signing/signer.js.map +1 -0
  1816. package/dist/lib/signing/testing.d.ts +45 -0
  1817. package/dist/lib/signing/testing.d.ts.map +1 -0
  1818. package/dist/lib/signing/testing.js +81 -0
  1819. package/dist/lib/signing/testing.js.map +1 -0
  1820. package/dist/lib/signing/types.d.ts +90 -0
  1821. package/dist/lib/signing/types.d.ts.map +1 -0
  1822. package/dist/lib/signing/types.js +9 -0
  1823. package/dist/lib/signing/types.js.map +1 -0
  1824. package/dist/lib/signing/verifier.d.ts +23 -0
  1825. package/dist/lib/signing/verifier.d.ts.map +1 -0
  1826. package/dist/lib/signing/verifier.js +386 -0
  1827. package/dist/lib/signing/verifier.js.map +1 -0
  1828. package/dist/lib/signing/webhook-verifier.d.ts +119 -0
  1829. package/dist/lib/signing/webhook-verifier.d.ts.map +1 -0
  1830. package/dist/lib/signing/webhook-verifier.js +292 -0
  1831. package/dist/lib/signing/webhook-verifier.js.map +1 -0
  1832. package/dist/lib/storage/MemoryStorage.d.ts +93 -0
  1833. package/dist/lib/storage/MemoryStorage.d.ts.map +1 -0
  1834. package/dist/lib/storage/MemoryStorage.js +219 -0
  1835. package/dist/lib/storage/MemoryStorage.js.map +1 -0
  1836. package/dist/lib/storage/interfaces.d.ts +195 -0
  1837. package/dist/lib/storage/interfaces.d.ts.map +1 -0
  1838. package/dist/lib/storage/interfaces.js +5 -0
  1839. package/dist/lib/storage/interfaces.js.map +1 -0
  1840. package/dist/lib/substitution/encoder/SubstitutionEncoder.d.ts +45 -0
  1841. package/dist/lib/substitution/encoder/SubstitutionEncoder.d.ts.map +1 -0
  1842. package/dist/lib/substitution/encoder/SubstitutionEncoder.js +73 -0
  1843. package/dist/lib/substitution/encoder/SubstitutionEncoder.js.map +1 -0
  1844. package/dist/lib/substitution/encoder/index.d.ts +2 -0
  1845. package/dist/lib/substitution/encoder/index.d.ts.map +1 -0
  1846. package/dist/lib/substitution/encoder/index.js +7 -0
  1847. package/dist/lib/substitution/encoder/index.js.map +1 -0
  1848. package/dist/lib/substitution/index.d.ts +36 -0
  1849. package/dist/lib/substitution/index.d.ts.map +1 -0
  1850. package/dist/lib/substitution/index.js +56 -0
  1851. package/dist/lib/substitution/index.js.map +1 -0
  1852. package/dist/lib/substitution/observer/SubstitutionObserver.d.ts +91 -0
  1853. package/dist/lib/substitution/observer/SubstitutionObserver.d.ts.map +1 -0
  1854. package/dist/lib/substitution/observer/SubstitutionObserver.js +248 -0
  1855. package/dist/lib/substitution/observer/SubstitutionObserver.js.map +1 -0
  1856. package/dist/lib/substitution/observer/alignment.d.ts +24 -0
  1857. package/dist/lib/substitution/observer/alignment.d.ts.map +1 -0
  1858. package/dist/lib/substitution/observer/alignment.js +279 -0
  1859. package/dist/lib/substitution/observer/alignment.js.map +1 -0
  1860. package/dist/lib/substitution/observer/assertions.d.ts +48 -0
  1861. package/dist/lib/substitution/observer/assertions.d.ts.map +1 -0
  1862. package/dist/lib/substitution/observer/assertions.js +145 -0
  1863. package/dist/lib/substitution/observer/assertions.js.map +1 -0
  1864. package/dist/lib/substitution/observer/html-parser.d.ts +29 -0
  1865. package/dist/lib/substitution/observer/html-parser.d.ts.map +1 -0
  1866. package/dist/lib/substitution/observer/html-parser.js +308 -0
  1867. package/dist/lib/substitution/observer/html-parser.js.map +1 -0
  1868. package/dist/lib/substitution/observer/index.d.ts +7 -0
  1869. package/dist/lib/substitution/observer/index.d.ts.map +1 -0
  1870. package/dist/lib/substitution/observer/index.js +21 -0
  1871. package/dist/lib/substitution/observer/index.js.map +1 -0
  1872. package/dist/lib/substitution/observer/ssrf.d.ts +29 -0
  1873. package/dist/lib/substitution/observer/ssrf.d.ts.map +1 -0
  1874. package/dist/lib/substitution/observer/ssrf.js +226 -0
  1875. package/dist/lib/substitution/observer/ssrf.js.map +1 -0
  1876. package/dist/lib/substitution/rfc3986.d.ts +51 -0
  1877. package/dist/lib/substitution/rfc3986.d.ts.map +1 -0
  1878. package/dist/lib/substitution/rfc3986.js +139 -0
  1879. package/dist/lib/substitution/rfc3986.js.map +1 -0
  1880. package/dist/lib/substitution/types.d.ts +147 -0
  1881. package/dist/lib/substitution/types.d.ts.map +1 -0
  1882. package/dist/lib/substitution/types.js +8 -0
  1883. package/dist/lib/substitution/types.js.map +1 -0
  1884. package/dist/lib/substitution/vectors.d.ts +18 -0
  1885. package/dist/lib/substitution/vectors.d.ts.map +1 -0
  1886. package/dist/lib/substitution/vectors.js +79 -0
  1887. package/dist/lib/substitution/vectors.js.map +1 -0
  1888. package/dist/lib/testing/agent-tester.d.ts +34 -0
  1889. package/dist/lib/testing/agent-tester.d.ts.map +1 -0
  1890. package/dist/lib/testing/agent-tester.js +421 -0
  1891. package/dist/lib/testing/agent-tester.js.map +1 -0
  1892. package/dist/lib/testing/client.d.ts +104 -0
  1893. package/dist/lib/testing/client.d.ts.map +1 -0
  1894. package/dist/lib/testing/client.js +487 -0
  1895. package/dist/lib/testing/client.js.map +1 -0
  1896. package/dist/lib/testing/compliance/briefs.d.ts +11 -0
  1897. package/dist/lib/testing/compliance/briefs.d.ts.map +1 -0
  1898. package/dist/lib/testing/compliance/briefs.js +156 -0
  1899. package/dist/lib/testing/compliance/briefs.js.map +1 -0
  1900. package/dist/lib/testing/compliance/comply.d.ts +83 -0
  1901. package/dist/lib/testing/compliance/comply.d.ts.map +1 -0
  1902. package/dist/lib/testing/compliance/comply.js +1275 -0
  1903. package/dist/lib/testing/compliance/comply.js.map +1 -0
  1904. package/dist/lib/testing/compliance/index.d.ts +10 -0
  1905. package/dist/lib/testing/compliance/index.d.ts.map +1 -0
  1906. package/dist/lib/testing/compliance/index.js +18 -0
  1907. package/dist/lib/testing/compliance/index.js.map +1 -0
  1908. package/dist/lib/testing/compliance/storyboard-tracks.d.ts +17 -0
  1909. package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -0
  1910. package/dist/lib/testing/compliance/storyboard-tracks.js +147 -0
  1911. package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -0
  1912. package/dist/lib/testing/compliance/types.d.ts +145 -0
  1913. package/dist/lib/testing/compliance/types.d.ts.map +1 -0
  1914. package/dist/lib/testing/compliance/types.js +6 -0
  1915. package/dist/lib/testing/compliance/types.js.map +1 -0
  1916. package/dist/lib/testing/comply-controller.d.ts +193 -0
  1917. package/dist/lib/testing/comply-controller.d.ts.map +1 -0
  1918. package/dist/lib/testing/comply-controller.js +199 -0
  1919. package/dist/lib/testing/comply-controller.js.map +1 -0
  1920. package/dist/lib/testing/controller-assertions.d.ts +67 -0
  1921. package/dist/lib/testing/controller-assertions.d.ts.map +1 -0
  1922. package/dist/lib/testing/controller-assertions.js +60 -0
  1923. package/dist/lib/testing/controller-assertions.js.map +1 -0
  1924. package/dist/lib/testing/formatter.d.ts +17 -0
  1925. package/dist/lib/testing/formatter.d.ts.map +1 -0
  1926. package/dist/lib/testing/formatter.js +92 -0
  1927. package/dist/lib/testing/formatter.js.map +1 -0
  1928. package/dist/lib/testing/index.d.ts +19 -0
  1929. package/dist/lib/testing/index.d.ts.map +1 -0
  1930. package/dist/lib/testing/index.js +185 -0
  1931. package/dist/lib/testing/index.js.map +1 -0
  1932. package/dist/lib/testing/local-agent-runner.d.ts +189 -0
  1933. package/dist/lib/testing/local-agent-runner.d.ts.map +1 -0
  1934. package/dist/lib/testing/local-agent-runner.js +290 -0
  1935. package/dist/lib/testing/local-agent-runner.js.map +1 -0
  1936. package/dist/lib/testing/orchestrator.d.ts +70 -0
  1937. package/dist/lib/testing/orchestrator.d.ts.map +1 -0
  1938. package/dist/lib/testing/orchestrator.js +278 -0
  1939. package/dist/lib/testing/orchestrator.js.map +1 -0
  1940. package/dist/lib/testing/scenarios/brand-rights.d.ts +41 -0
  1941. package/dist/lib/testing/scenarios/brand-rights.d.ts.map +1 -0
  1942. package/dist/lib/testing/scenarios/brand-rights.js +278 -0
  1943. package/dist/lib/testing/scenarios/brand-rights.js.map +1 -0
  1944. package/dist/lib/testing/scenarios/capabilities.d.ts +27 -0
  1945. package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -0
  1946. package/dist/lib/testing/scenarios/capabilities.js +332 -0
  1947. package/dist/lib/testing/scenarios/capabilities.js.map +1 -0
  1948. package/dist/lib/testing/scenarios/creative.d.ts +38 -0
  1949. package/dist/lib/testing/scenarios/creative.d.ts.map +1 -0
  1950. package/dist/lib/testing/scenarios/creative.js +429 -0
  1951. package/dist/lib/testing/scenarios/creative.js.map +1 -0
  1952. package/dist/lib/testing/scenarios/deterministic.d.ts +37 -0
  1953. package/dist/lib/testing/scenarios/deterministic.d.ts.map +1 -0
  1954. package/dist/lib/testing/scenarios/deterministic.js +705 -0
  1955. package/dist/lib/testing/scenarios/deterministic.js.map +1 -0
  1956. package/dist/lib/testing/scenarios/discovery.d.ts +15 -0
  1957. package/dist/lib/testing/scenarios/discovery.d.ts.map +1 -0
  1958. package/dist/lib/testing/scenarios/discovery.js +68 -0
  1959. package/dist/lib/testing/scenarios/discovery.js.map +1 -0
  1960. package/dist/lib/testing/scenarios/edge-cases.d.ts +64 -0
  1961. package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -0
  1962. package/dist/lib/testing/scenarios/edge-cases.js +569 -0
  1963. package/dist/lib/testing/scenarios/edge-cases.js.map +1 -0
  1964. package/dist/lib/testing/scenarios/error-compliance.d.ts +30 -0
  1965. package/dist/lib/testing/scenarios/error-compliance.d.ts.map +1 -0
  1966. package/dist/lib/testing/scenarios/error-compliance.js +372 -0
  1967. package/dist/lib/testing/scenarios/error-compliance.js.map +1 -0
  1968. package/dist/lib/testing/scenarios/governance.d.ts +114 -0
  1969. package/dist/lib/testing/scenarios/governance.d.ts.map +1 -0
  1970. package/dist/lib/testing/scenarios/governance.js +1619 -0
  1971. package/dist/lib/testing/scenarios/governance.js.map +1 -0
  1972. package/dist/lib/testing/scenarios/health.d.ts +12 -0
  1973. package/dist/lib/testing/scenarios/health.d.ts.map +1 -0
  1974. package/dist/lib/testing/scenarios/health.js +21 -0
  1975. package/dist/lib/testing/scenarios/health.js.map +1 -0
  1976. package/dist/lib/testing/scenarios/index.d.ts +20 -0
  1977. package/dist/lib/testing/scenarios/index.d.ts.map +1 -0
  1978. package/dist/lib/testing/scenarios/index.js +96 -0
  1979. package/dist/lib/testing/scenarios/index.js.map +1 -0
  1980. package/dist/lib/testing/scenarios/media-buy.d.ts +128 -0
  1981. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -0
  1982. package/dist/lib/testing/scenarios/media-buy.js +1655 -0
  1983. package/dist/lib/testing/scenarios/media-buy.js.map +1 -0
  1984. package/dist/lib/testing/scenarios/schema-compliance.d.ts +17 -0
  1985. package/dist/lib/testing/scenarios/schema-compliance.d.ts.map +1 -0
  1986. package/dist/lib/testing/scenarios/schema-compliance.js +194 -0
  1987. package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -0
  1988. package/dist/lib/testing/scenarios/signals.d.ts +22 -0
  1989. package/dist/lib/testing/scenarios/signals.d.ts.map +1 -0
  1990. package/dist/lib/testing/scenarios/signals.js +221 -0
  1991. package/dist/lib/testing/scenarios/signals.js.map +1 -0
  1992. package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts +45 -0
  1993. package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts.map +1 -0
  1994. package/dist/lib/testing/scenarios/sponsored-intelligence.js +554 -0
  1995. package/dist/lib/testing/scenarios/sponsored-intelligence.js.map +1 -0
  1996. package/dist/lib/testing/scenarios/trusted-match.d.ts +22 -0
  1997. package/dist/lib/testing/scenarios/trusted-match.d.ts.map +1 -0
  1998. package/dist/lib/testing/scenarios/trusted-match.js +128 -0
  1999. package/dist/lib/testing/scenarios/trusted-match.js.map +1 -0
  2000. package/dist/lib/testing/seed-merge.d.ts +150 -0
  2001. package/dist/lib/testing/seed-merge.d.ts.map +1 -0
  2002. package/dist/lib/testing/seed-merge.js +315 -0
  2003. package/dist/lib/testing/seed-merge.js.map +1 -0
  2004. package/dist/lib/testing/storyboard/assertions.d.ts +148 -0
  2005. package/dist/lib/testing/storyboard/assertions.d.ts.map +1 -0
  2006. package/dist/lib/testing/storyboard/assertions.js +270 -0
  2007. package/dist/lib/testing/storyboard/assertions.js.map +1 -0
  2008. package/dist/lib/testing/storyboard/compliance.d.ts +166 -0
  2009. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -0
  2010. package/dist/lib/testing/storyboard/compliance.js +434 -0
  2011. package/dist/lib/testing/storyboard/compliance.js.map +1 -0
  2012. package/dist/lib/testing/storyboard/context.d.ts +124 -0
  2013. package/dist/lib/testing/storyboard/context.d.ts.map +1 -0
  2014. package/dist/lib/testing/storyboard/context.js +560 -0
  2015. package/dist/lib/testing/storyboard/context.js.map +1 -0
  2016. package/dist/lib/testing/storyboard/default-invariants.d.ts +36 -0
  2017. package/dist/lib/testing/storyboard/default-invariants.d.ts.map +1 -0
  2018. package/dist/lib/testing/storyboard/default-invariants.js +882 -0
  2019. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -0
  2020. package/dist/lib/testing/storyboard/index.d.ts +34 -0
  2021. package/dist/lib/testing/storyboard/index.d.ts.map +1 -0
  2022. package/dist/lib/testing/storyboard/index.js +110 -0
  2023. package/dist/lib/testing/storyboard/index.js.map +1 -0
  2024. package/dist/lib/testing/storyboard/junit.d.ts +2 -0
  2025. package/dist/lib/testing/storyboard/junit.d.ts.map +1 -0
  2026. package/dist/lib/testing/storyboard/junit.js +104 -0
  2027. package/dist/lib/testing/storyboard/junit.js.map +1 -0
  2028. package/dist/lib/testing/storyboard/loader.d.ts +28 -0
  2029. package/dist/lib/testing/storyboard/loader.d.ts.map +1 -0
  2030. package/dist/lib/testing/storyboard/loader.js +194 -0
  2031. package/dist/lib/testing/storyboard/loader.js.map +1 -0
  2032. package/dist/lib/testing/storyboard/path.d.ts +76 -0
  2033. package/dist/lib/testing/storyboard/path.d.ts.map +1 -0
  2034. package/dist/lib/testing/storyboard/path.js +258 -0
  2035. package/dist/lib/testing/storyboard/path.js.map +1 -0
  2036. package/dist/lib/testing/storyboard/probes.d.ts +148 -0
  2037. package/dist/lib/testing/storyboard/probes.d.ts.map +1 -0
  2038. package/dist/lib/testing/storyboard/probes.js +402 -0
  2039. package/dist/lib/testing/storyboard/probes.js.map +1 -0
  2040. package/dist/lib/testing/storyboard/rejection-hints.d.ts +41 -0
  2041. package/dist/lib/testing/storyboard/rejection-hints.d.ts.map +1 -0
  2042. package/dist/lib/testing/storyboard/rejection-hints.js +344 -0
  2043. package/dist/lib/testing/storyboard/rejection-hints.js.map +1 -0
  2044. package/dist/lib/testing/storyboard/request-builder.d.ts +35 -0
  2045. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -0
  2046. package/dist/lib/testing/storyboard/request-builder.js +845 -0
  2047. package/dist/lib/testing/storyboard/request-builder.js.map +1 -0
  2048. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +60 -0
  2049. package/dist/lib/testing/storyboard/request-signing/builder.d.ts.map +1 -0
  2050. package/dist/lib/testing/storyboard/request-signing/builder.js +462 -0
  2051. package/dist/lib/testing/storyboard/request-signing/builder.js.map +1 -0
  2052. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +166 -0
  2053. package/dist/lib/testing/storyboard/request-signing/grader.d.ts.map +1 -0
  2054. package/dist/lib/testing/storyboard/request-signing/grader.js +517 -0
  2055. package/dist/lib/testing/storyboard/request-signing/grader.js.map +1 -0
  2056. package/dist/lib/testing/storyboard/request-signing/index.d.ts +38 -0
  2057. package/dist/lib/testing/storyboard/request-signing/index.d.ts.map +1 -0
  2058. package/dist/lib/testing/storyboard/request-signing/index.js +62 -0
  2059. package/dist/lib/testing/storyboard/request-signing/index.js.map +1 -0
  2060. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +10 -0
  2061. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts.map +1 -0
  2062. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +81 -0
  2063. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js.map +1 -0
  2064. package/dist/lib/testing/storyboard/request-signing/probe.d.ts +41 -0
  2065. package/dist/lib/testing/storyboard/request-signing/probe.d.ts.map +1 -0
  2066. package/dist/lib/testing/storyboard/request-signing/probe.js +220 -0
  2067. package/dist/lib/testing/storyboard/request-signing/probe.js.map +1 -0
  2068. package/dist/lib/testing/storyboard/request-signing/synthesize.d.ts +28 -0
  2069. package/dist/lib/testing/storyboard/request-signing/synthesize.d.ts.map +1 -0
  2070. package/dist/lib/testing/storyboard/request-signing/synthesize.js +79 -0
  2071. package/dist/lib/testing/storyboard/request-signing/synthesize.js.map +1 -0
  2072. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts +42 -0
  2073. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts.map +1 -0
  2074. package/dist/lib/testing/storyboard/request-signing/test-kit.js +101 -0
  2075. package/dist/lib/testing/storyboard/request-signing/test-kit.js.map +1 -0
  2076. package/dist/lib/testing/storyboard/request-signing/types.d.ts +72 -0
  2077. package/dist/lib/testing/storyboard/request-signing/types.d.ts.map +1 -0
  2078. package/dist/lib/testing/storyboard/request-signing/types.js +6 -0
  2079. package/dist/lib/testing/storyboard/request-signing/types.js.map +1 -0
  2080. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +16 -0
  2081. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -0
  2082. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +242 -0
  2083. package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -0
  2084. package/dist/lib/testing/storyboard/runner.d.ts +141 -0
  2085. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -0
  2086. package/dist/lib/testing/storyboard/runner.js +2349 -0
  2087. package/dist/lib/testing/storyboard/runner.js.map +1 -0
  2088. package/dist/lib/testing/storyboard/sandbox-entities.d.ts +56 -0
  2089. package/dist/lib/testing/storyboard/sandbox-entities.d.ts.map +1 -0
  2090. package/dist/lib/testing/storyboard/sandbox-entities.js +222 -0
  2091. package/dist/lib/testing/storyboard/sandbox-entities.js.map +1 -0
  2092. package/dist/lib/testing/storyboard/seeding.d.ts +72 -0
  2093. package/dist/lib/testing/storyboard/seeding.d.ts.map +1 -0
  2094. package/dist/lib/testing/storyboard/seeding.js +282 -0
  2095. package/dist/lib/testing/storyboard/seeding.js.map +1 -0
  2096. package/dist/lib/testing/storyboard/shape-drift-hints.d.ts +54 -0
  2097. package/dist/lib/testing/storyboard/shape-drift-hints.d.ts.map +1 -0
  2098. package/dist/lib/testing/storyboard/shape-drift-hints.js +200 -0
  2099. package/dist/lib/testing/storyboard/shape-drift-hints.js.map +1 -0
  2100. package/dist/lib/testing/storyboard/signer-grader/grader.d.ts +56 -0
  2101. package/dist/lib/testing/storyboard/signer-grader/grader.d.ts.map +1 -0
  2102. package/dist/lib/testing/storyboard/signer-grader/grader.js +270 -0
  2103. package/dist/lib/testing/storyboard/signer-grader/grader.js.map +1 -0
  2104. package/dist/lib/testing/storyboard/signer-grader/index.d.ts +3 -0
  2105. package/dist/lib/testing/storyboard/signer-grader/index.d.ts.map +1 -0
  2106. package/dist/lib/testing/storyboard/signer-grader/index.js +6 -0
  2107. package/dist/lib/testing/storyboard/signer-grader/index.js.map +1 -0
  2108. package/dist/lib/testing/storyboard/signer-grader/types.d.ts +62 -0
  2109. package/dist/lib/testing/storyboard/signer-grader/types.d.ts.map +1 -0
  2110. package/dist/lib/testing/storyboard/signer-grader/types.js +3 -0
  2111. package/dist/lib/testing/storyboard/signer-grader/types.js.map +1 -0
  2112. package/dist/lib/testing/storyboard/strict-validation-hints.d.ts +28 -0
  2113. package/dist/lib/testing/storyboard/strict-validation-hints.d.ts.map +1 -0
  2114. package/dist/lib/testing/storyboard/strict-validation-hints.js +128 -0
  2115. package/dist/lib/testing/storyboard/strict-validation-hints.js.map +1 -0
  2116. package/dist/lib/testing/storyboard/task-map.d.ts +25 -0
  2117. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -0
  2118. package/dist/lib/testing/storyboard/task-map.js +130 -0
  2119. package/dist/lib/testing/storyboard/task-map.js.map +1 -0
  2120. package/dist/lib/testing/storyboard/test-kit.d.ts +52 -0
  2121. package/dist/lib/testing/storyboard/test-kit.d.ts.map +1 -0
  2122. package/dist/lib/testing/storyboard/test-kit.js +93 -0
  2123. package/dist/lib/testing/storyboard/test-kit.js.map +1 -0
  2124. package/dist/lib/testing/storyboard/types.d.ts +1404 -0
  2125. package/dist/lib/testing/storyboard/types.d.ts.map +1 -0
  2126. package/dist/lib/testing/storyboard/types.js +35 -0
  2127. package/dist/lib/testing/storyboard/types.js.map +1 -0
  2128. package/dist/lib/testing/storyboard/validations.d.ts +103 -0
  2129. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -0
  2130. package/dist/lib/testing/storyboard/validations.js +1729 -0
  2131. package/dist/lib/testing/storyboard/validations.js.map +1 -0
  2132. package/dist/lib/testing/storyboard/webhook-assertions.d.ts +62 -0
  2133. package/dist/lib/testing/storyboard/webhook-assertions.d.ts.map +1 -0
  2134. package/dist/lib/testing/storyboard/webhook-assertions.js +538 -0
  2135. package/dist/lib/testing/storyboard/webhook-assertions.js.map +1 -0
  2136. package/dist/lib/testing/storyboard/webhook-receiver.d.ts +104 -0
  2137. package/dist/lib/testing/storyboard/webhook-receiver.d.ts.map +1 -0
  2138. package/dist/lib/testing/storyboard/webhook-receiver.js +402 -0
  2139. package/dist/lib/testing/storyboard/webhook-receiver.js.map +1 -0
  2140. package/dist/lib/testing/stubs/governance-agent-stub.d.ts +72 -0
  2141. package/dist/lib/testing/stubs/governance-agent-stub.d.ts.map +1 -0
  2142. package/dist/lib/testing/stubs/governance-agent-stub.js +297 -0
  2143. package/dist/lib/testing/stubs/governance-agent-stub.js.map +1 -0
  2144. package/dist/lib/testing/stubs/index.d.ts +3 -0
  2145. package/dist/lib/testing/stubs/index.d.ts.map +1 -0
  2146. package/dist/lib/testing/stubs/index.js +6 -0
  2147. package/dist/lib/testing/stubs/index.js.map +1 -0
  2148. package/dist/lib/testing/test-controller.d.ts +46 -0
  2149. package/dist/lib/testing/test-controller.d.ts.map +1 -0
  2150. package/dist/lib/testing/test-controller.js +143 -0
  2151. package/dist/lib/testing/test-controller.js.map +1 -0
  2152. package/dist/lib/testing/test-helpers.d.ts +213 -0
  2153. package/dist/lib/testing/test-helpers.d.ts.map +1 -0
  2154. package/dist/lib/testing/test-helpers.js +250 -0
  2155. package/dist/lib/testing/test-helpers.js.map +1 -0
  2156. package/dist/lib/testing/types.d.ts +222 -0
  2157. package/dist/lib/testing/types.d.ts.map +1 -0
  2158. package/dist/lib/testing/types.js +6 -0
  2159. package/dist/lib/testing/types.js.map +1 -0
  2160. package/dist/lib/types/adcp.d.ts +625 -0
  2161. package/dist/lib/types/adcp.d.ts.map +1 -0
  2162. package/dist/lib/types/adcp.js +20 -0
  2163. package/dist/lib/types/adcp.js.map +1 -0
  2164. package/dist/lib/types/asset-instances.d.ts +32 -0
  2165. package/dist/lib/types/asset-instances.d.ts.map +1 -0
  2166. package/dist/lib/types/asset-instances.js +24 -0
  2167. package/dist/lib/types/asset-instances.js.map +1 -0
  2168. package/dist/lib/types/compat.d.ts +105 -0
  2169. package/dist/lib/types/compat.d.ts.map +1 -0
  2170. package/dist/lib/types/compat.js +52 -0
  2171. package/dist/lib/types/compat.js.map +1 -0
  2172. package/dist/lib/types/core.generated.d.ts +15973 -0
  2173. package/dist/lib/types/core.generated.d.ts.map +1 -0
  2174. package/dist/lib/types/core.generated.js +5 -0
  2175. package/dist/lib/types/core.generated.js.map +1 -0
  2176. package/dist/lib/types/enums.generated.d.ts +139 -0
  2177. package/dist/lib/types/enums.generated.d.ts.map +1 -0
  2178. package/dist/lib/types/enums.generated.js +158 -0
  2179. package/dist/lib/types/enums.generated.js.map +1 -0
  2180. package/dist/lib/types/error-codes.d.ts +32 -0
  2181. package/dist/lib/types/error-codes.d.ts.map +1 -0
  2182. package/dist/lib/types/error-codes.js +146 -0
  2183. package/dist/lib/types/error-codes.js.map +1 -0
  2184. package/dist/lib/types/format-asset-slots.d.ts +117 -0
  2185. package/dist/lib/types/format-asset-slots.d.ts.map +1 -0
  2186. package/dist/lib/types/format-asset-slots.js +20 -0
  2187. package/dist/lib/types/format-asset-slots.js.map +1 -0
  2188. package/dist/lib/types/index.d.ts +20 -0
  2189. package/dist/lib/types/index.d.ts.map +1 -0
  2190. package/dist/lib/types/index.js +48 -0
  2191. package/dist/lib/types/index.js.map +1 -0
  2192. package/dist/lib/types/inline-enums.aliases.d.ts +53 -0
  2193. package/dist/lib/types/inline-enums.aliases.d.ts.map +1 -0
  2194. package/dist/lib/types/inline-enums.aliases.js +73 -0
  2195. package/dist/lib/types/inline-enums.aliases.js.map +1 -0
  2196. package/dist/lib/types/inline-enums.generated.d.ts +157 -0
  2197. package/dist/lib/types/inline-enums.generated.d.ts.map +1 -0
  2198. package/dist/lib/types/inline-enums.generated.js +239 -0
  2199. package/dist/lib/types/inline-enums.generated.js.map +1 -0
  2200. package/dist/lib/types/schemas.generated.d.ts +46531 -0
  2201. package/dist/lib/types/schemas.generated.d.ts.map +1 -0
  2202. package/dist/lib/types/schemas.generated.js +5867 -0
  2203. package/dist/lib/types/schemas.generated.js.map +1 -0
  2204. package/dist/lib/types/sync-rows.d.ts +37 -0
  2205. package/dist/lib/types/sync-rows.d.ts.map +1 -0
  2206. package/dist/lib/types/sync-rows.js +21 -0
  2207. package/dist/lib/types/sync-rows.js.map +1 -0
  2208. package/dist/lib/types/tools.generated.d.ts +13423 -0
  2209. package/dist/lib/types/tools.generated.d.ts.map +1 -0
  2210. package/dist/lib/types/tools.generated.js +5 -0
  2211. package/dist/lib/types/tools.generated.js.map +1 -0
  2212. package/dist/lib/types/wellknown-schemas.generated.d.ts +1363 -0
  2213. package/dist/lib/types/wellknown-schemas.generated.d.ts.map +1 -0
  2214. package/dist/lib/types/wellknown-schemas.generated.js +14 -0
  2215. package/dist/lib/types/wellknown-schemas.generated.js.map +1 -0
  2216. package/dist/lib/utils/a2a-discovery.d.ts +42 -0
  2217. package/dist/lib/utils/a2a-discovery.d.ts.map +1 -0
  2218. package/dist/lib/utils/a2a-discovery.js +68 -0
  2219. package/dist/lib/utils/a2a-discovery.js.map +1 -0
  2220. package/dist/lib/utils/adcp-version-config.d.ts +11 -0
  2221. package/dist/lib/utils/adcp-version-config.d.ts.map +1 -0
  2222. package/dist/lib/utils/adcp-version-config.js +44 -0
  2223. package/dist/lib/utils/adcp-version-config.js.map +1 -0
  2224. package/dist/lib/utils/asset-builders.d.ts +44 -0
  2225. package/dist/lib/utils/asset-builders.d.ts.map +1 -0
  2226. package/dist/lib/utils/asset-builders.js +84 -0
  2227. package/dist/lib/utils/asset-builders.js.map +1 -0
  2228. package/dist/lib/utils/capabilities.d.ts +259 -0
  2229. package/dist/lib/utils/capabilities.d.ts.map +1 -0
  2230. package/dist/lib/utils/capabilities.js +463 -0
  2231. package/dist/lib/utils/capabilities.js.map +1 -0
  2232. package/dist/lib/utils/creative-adapter.d.ts +91 -0
  2233. package/dist/lib/utils/creative-adapter.d.ts.map +1 -0
  2234. package/dist/lib/utils/creative-adapter.js +156 -0
  2235. package/dist/lib/utils/creative-adapter.js.map +1 -0
  2236. package/dist/lib/utils/deprecation.d.ts +11 -0
  2237. package/dist/lib/utils/deprecation.d.ts.map +1 -0
  2238. package/dist/lib/utils/deprecation.js +23 -0
  2239. package/dist/lib/utils/deprecation.js.map +1 -0
  2240. package/dist/lib/utils/error-extraction.d.ts +43 -0
  2241. package/dist/lib/utils/error-extraction.d.ts.map +1 -0
  2242. package/dist/lib/utils/error-extraction.js +225 -0
  2243. package/dist/lib/utils/error-extraction.js.map +1 -0
  2244. package/dist/lib/utils/extract-result.d.ts +45 -0
  2245. package/dist/lib/utils/extract-result.d.ts.map +1 -0
  2246. package/dist/lib/utils/extract-result.js +27 -0
  2247. package/dist/lib/utils/extract-result.js.map +1 -0
  2248. package/dist/lib/utils/format-asset-slot-builders.d.ts +76 -0
  2249. package/dist/lib/utils/format-asset-slot-builders.d.ts.map +1 -0
  2250. package/dist/lib/utils/format-asset-slot-builders.js +174 -0
  2251. package/dist/lib/utils/format-asset-slot-builders.js.map +1 -0
  2252. package/dist/lib/utils/format-assets.d.ts +100 -0
  2253. package/dist/lib/utils/format-assets.d.ts.map +1 -0
  2254. package/dist/lib/utils/format-assets.js +147 -0
  2255. package/dist/lib/utils/format-assets.js.map +1 -0
  2256. package/dist/lib/utils/format-render-builders.d.ts +76 -0
  2257. package/dist/lib/utils/format-render-builders.d.ts.map +1 -0
  2258. package/dist/lib/utils/format-render-builders.js +76 -0
  2259. package/dist/lib/utils/format-render-builders.js.map +1 -0
  2260. package/dist/lib/utils/format-renders.d.ts +96 -0
  2261. package/dist/lib/utils/format-renders.d.ts.map +1 -0
  2262. package/dist/lib/utils/format-renders.js +141 -0
  2263. package/dist/lib/utils/format-renders.js.map +1 -0
  2264. package/dist/lib/utils/idempotency.d.ts +96 -0
  2265. package/dist/lib/utils/idempotency.d.ts.map +1 -0
  2266. package/dist/lib/utils/idempotency.js +156 -0
  2267. package/dist/lib/utils/idempotency.js.map +1 -0
  2268. package/dist/lib/utils/index.d.ts +39 -0
  2269. package/dist/lib/utils/index.d.ts.map +1 -0
  2270. package/dist/lib/utils/index.js +196 -0
  2271. package/dist/lib/utils/index.js.map +1 -0
  2272. package/dist/lib/utils/jcs.d.ts +30 -0
  2273. package/dist/lib/utils/jcs.d.ts.map +1 -0
  2274. package/dist/lib/utils/jcs.js +167 -0
  2275. package/dist/lib/utils/jcs.js.map +1 -0
  2276. package/dist/lib/utils/logger.d.ts +55 -0
  2277. package/dist/lib/utils/logger.d.ts.map +1 -0
  2278. package/dist/lib/utils/logger.js +100 -0
  2279. package/dist/lib/utils/logger.js.map +1 -0
  2280. package/dist/lib/utils/pagination.d.ts +31 -0
  2281. package/dist/lib/utils/pagination.d.ts.map +1 -0
  2282. package/dist/lib/utils/pagination.js +51 -0
  2283. package/dist/lib/utils/pagination.js.map +1 -0
  2284. package/dist/lib/utils/preview-normalizer.d.ts +109 -0
  2285. package/dist/lib/utils/preview-normalizer.d.ts.map +1 -0
  2286. package/dist/lib/utils/preview-normalizer.js +122 -0
  2287. package/dist/lib/utils/preview-normalizer.js.map +1 -0
  2288. package/dist/lib/utils/preview-utils.d.ts +87 -0
  2289. package/dist/lib/utils/preview-utils.d.ts.map +1 -0
  2290. package/dist/lib/utils/preview-utils.js +340 -0
  2291. package/dist/lib/utils/preview-utils.js.map +1 -0
  2292. package/dist/lib/utils/pricing-adapter.d.ts +144 -0
  2293. package/dist/lib/utils/pricing-adapter.d.ts.map +1 -0
  2294. package/dist/lib/utils/pricing-adapter.js +322 -0
  2295. package/dist/lib/utils/pricing-adapter.js.map +1 -0
  2296. package/dist/lib/utils/protocol-detection.d.ts +26 -0
  2297. package/dist/lib/utils/protocol-detection.d.ts.map +1 -0
  2298. package/dist/lib/utils/protocol-detection.js +62 -0
  2299. package/dist/lib/utils/protocol-detection.js.map +1 -0
  2300. package/dist/lib/utils/render-builders.d.ts +41 -0
  2301. package/dist/lib/utils/render-builders.d.ts.map +1 -0
  2302. package/dist/lib/utils/render-builders.js +52 -0
  2303. package/dist/lib/utils/render-builders.js.map +1 -0
  2304. package/dist/lib/utils/request-normalizer.d.ts +26 -0
  2305. package/dist/lib/utils/request-normalizer.d.ts.map +1 -0
  2306. package/dist/lib/utils/request-normalizer.js +175 -0
  2307. package/dist/lib/utils/request-normalizer.js.map +1 -0
  2308. package/dist/lib/utils/response-schemas.d.ts +9 -0
  2309. package/dist/lib/utils/response-schemas.d.ts.map +1 -0
  2310. package/dist/lib/utils/response-schemas.js +129 -0
  2311. package/dist/lib/utils/response-schemas.js.map +1 -0
  2312. package/dist/lib/utils/response-unwrapper.d.ts +54 -0
  2313. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -0
  2314. package/dist/lib/utils/response-unwrapper.js +406 -0
  2315. package/dist/lib/utils/response-unwrapper.js.map +1 -0
  2316. package/dist/lib/utils/retry.d.ts +15 -0
  2317. package/dist/lib/utils/retry.d.ts.map +1 -0
  2318. package/dist/lib/utils/retry.js +22 -0
  2319. package/dist/lib/utils/retry.js.map +1 -0
  2320. package/dist/lib/utils/sync-creatives-adapter.d.ts +18 -0
  2321. package/dist/lib/utils/sync-creatives-adapter.d.ts.map +1 -0
  2322. package/dist/lib/utils/sync-creatives-adapter.js +46 -0
  2323. package/dist/lib/utils/sync-creatives-adapter.js.map +1 -0
  2324. package/dist/lib/utils/tool-request-schemas.d.ts +15 -0
  2325. package/dist/lib/utils/tool-request-schemas.d.ts.map +1 -0
  2326. package/dist/lib/utils/tool-request-schemas.js +129 -0
  2327. package/dist/lib/utils/tool-request-schemas.js.map +1 -0
  2328. package/dist/lib/utils/typeGuards.d.ts +147 -0
  2329. package/dist/lib/utils/typeGuards.d.ts.map +1 -0
  2330. package/dist/lib/utils/typeGuards.js +240 -0
  2331. package/dist/lib/utils/typeGuards.js.map +1 -0
  2332. package/dist/lib/utils/union-errors.d.ts +20 -0
  2333. package/dist/lib/utils/union-errors.d.ts.map +1 -0
  2334. package/dist/lib/utils/union-errors.js +38 -0
  2335. package/dist/lib/utils/union-errors.js.map +1 -0
  2336. package/dist/lib/utils/validate-user-agent.d.ts +8 -0
  2337. package/dist/lib/utils/validate-user-agent.d.ts.map +1 -0
  2338. package/dist/lib/utils/validate-user-agent.js +15 -0
  2339. package/dist/lib/utils/validate-user-agent.js.map +1 -0
  2340. package/dist/lib/validation/client-hooks.d.ts +49 -0
  2341. package/dist/lib/validation/client-hooks.d.ts.map +1 -0
  2342. package/dist/lib/validation/client-hooks.js +82 -0
  2343. package/dist/lib/validation/client-hooks.js.map +1 -0
  2344. package/dist/lib/validation/index.d.ts +37 -0
  2345. package/dist/lib/validation/index.d.ts.map +1 -0
  2346. package/dist/lib/validation/index.js +202 -0
  2347. package/dist/lib/validation/index.js.map +1 -0
  2348. package/dist/lib/validation/schema-errors.d.ts +67 -0
  2349. package/dist/lib/validation/schema-errors.d.ts.map +1 -0
  2350. package/dist/lib/validation/schema-errors.js +75 -0
  2351. package/dist/lib/validation/schema-errors.js.map +1 -0
  2352. package/dist/lib/validation/schema-loader.d.ts +24 -0
  2353. package/dist/lib/validation/schema-loader.d.ts.map +1 -0
  2354. package/dist/lib/validation/schema-loader.js +315 -0
  2355. package/dist/lib/validation/schema-loader.js.map +1 -0
  2356. package/dist/lib/validation/schema-validator.d.ts +83 -0
  2357. package/dist/lib/validation/schema-validator.d.ts.map +1 -0
  2358. package/dist/lib/validation/schema-validator.js +142 -0
  2359. package/dist/lib/validation/schema-validator.js.map +1 -0
  2360. package/dist/lib/validation/sync-creatives.d.ts +327 -0
  2361. package/dist/lib/validation/sync-creatives.d.ts.map +1 -0
  2362. package/dist/lib/validation/sync-creatives.js +72 -0
  2363. package/dist/lib/validation/sync-creatives.js.map +1 -0
  2364. package/dist/lib/version.d.ts +63 -0
  2365. package/dist/lib/version.d.ts.map +1 -0
  2366. package/dist/lib/version.js +85 -0
  2367. package/dist/lib/version.js.map +1 -0
  2368. package/docs/README.md +42 -0
  2369. package/docs/guides/BUILD-AN-AGENT.md +632 -0
  2370. package/docs/llms.txt +1197 -0
  2371. package/examples/README.md +117 -0
  2372. package/examples/adcp.config.json +30 -0
  2373. package/examples/basic-a2a.ts +76 -0
  2374. package/examples/basic-mcp.ts +50 -0
  2375. package/examples/batch-preview-test.ts +266 -0
  2376. package/examples/comply-controller-seller.ts +146 -0
  2377. package/examples/conversation-client.ts +291 -0
  2378. package/examples/debug-preview-response.ts +73 -0
  2379. package/examples/debug-preview-with-logging.ts +50 -0
  2380. package/examples/easy-config-demo.ts +242 -0
  2381. package/examples/env-config.ts +51 -0
  2382. package/examples/error-compliant-server.ts +241 -0
  2383. package/examples/gcp-kms-signing-provider.ts +281 -0
  2384. package/examples/generative-creative-demo.ts +196 -0
  2385. package/examples/inspect-card-formats.ts +161 -0
  2386. package/examples/logger-usage.ts +165 -0
  2387. package/examples/oauth-cli-example.ts +154 -0
  2388. package/examples/pr78-async-patterns-demo.ts +247 -0
  2389. package/examples/seller-test-controller.ts +320 -0
  2390. package/examples/signals-agent.ts +201 -0
  2391. package/examples/simple-getting-started.ts +225 -0
  2392. package/examples/simple-protocol-demo.ts +75 -0
  2393. package/examples/test-helpers-demo.ts +239 -0
  2394. package/examples/zod-validation-example.ts +126 -0
  2395. package/package.json +313 -0
  2396. package/skills/adcp/SKILL.md +326 -0
  2397. package/skills/adcp-brand/SKILL.md +202 -0
  2398. package/skills/adcp-brand.previous/SKILL.md +202 -0
  2399. package/skills/adcp-creative/SKILL.md +301 -0
  2400. package/skills/adcp-creative.previous/SKILL.md +301 -0
  2401. package/skills/adcp-governance/SKILL.md +566 -0
  2402. package/skills/adcp-governance.previous/SKILL.md +566 -0
  2403. package/skills/adcp-media-buy/SKILL.md +446 -0
  2404. package/skills/adcp-media-buy.previous/SKILL.md +446 -0
  2405. package/skills/adcp-si/SKILL.md +206 -0
  2406. package/skills/adcp-si.previous/SKILL.md +206 -0
  2407. package/skills/adcp-signals/SKILL.md +204 -0
  2408. package/skills/adcp-signals.previous/SKILL.md +204 -0
  2409. package/skills/build-brand-rights-agent/SKILL.md +528 -0
  2410. package/skills/build-creative-agent/SKILL.md +824 -0
  2411. package/skills/build-generative-seller-agent/SKILL.md +579 -0
  2412. package/skills/build-governance-agent/SKILL.md +966 -0
  2413. package/skills/build-retail-media-agent/SKILL.md +488 -0
  2414. package/skills/build-seller-agent/SKILL.md +1407 -0
  2415. package/skills/build-seller-agent/deployment.md +407 -0
  2416. package/skills/build-seller-agent/specialisms/audience-sync.md +63 -0
  2417. package/skills/build-seller-agent/specialisms/sales-broadcast-tv.md +71 -0
  2418. package/skills/build-seller-agent/specialisms/sales-guaranteed.md +67 -0
  2419. package/skills/build-seller-agent/specialisms/sales-non-guaranteed.md +39 -0
  2420. package/skills/build-seller-agent/specialisms/sales-proposal-mode.md +51 -0
  2421. package/skills/build-seller-agent/specialisms/sales-social.md +30 -0
  2422. package/skills/build-seller-agent/specialisms/signed-requests.md +89 -0
  2423. package/skills/build-si-agent/SKILL.md +347 -0
  2424. package/skills/build-signals-agent/SKILL.md +527 -0
  2425. package/skills/call-adcp-agent/SKILL.md +255 -0
  2426. package/skills/call-adcp-agent.previous/SKILL.md +255 -0
@@ -0,0 +1,2349 @@
1
+ "use strict";
2
+ /**
3
+ * Storyboard execution engine.
4
+ *
5
+ * Two entry points:
6
+ * - runStoryboard(): run all phases/steps sequentially
7
+ * - runStoryboardStep(): run a single step (stateless, LLM-friendly)
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.resolveCapabilityPath = resolveCapabilityPath;
11
+ exports.__redactSecretsForTest = __redactSecretsForTest;
12
+ exports.__filterResponseHeadersForTest = __filterResponseHeadersForTest;
13
+ exports.__defaultAuthHeadersForRawProbeForTest = __defaultAuthHeadersForRawProbeForTest;
14
+ exports.runStoryboard = runStoryboard;
15
+ exports.listStrictOnlyFailures = listStrictOnlyFailures;
16
+ exports.summarizeStrictValidation = summarizeStrictValidation;
17
+ exports.runStoryboardStep = runStoryboardStep;
18
+ exports.applyBrandInvariant = applyBrandInvariant;
19
+ exports.applyIdempotencyInvariant = applyIdempotencyInvariant;
20
+ exports.getFirstStepPreview = getFirstStepPreview;
21
+ const client_1 = require("../client");
22
+ const protocols_1 = require("../../protocols");
23
+ const rawResponseCapture_1 = require("../../protocols/rawResponseCapture");
24
+ const task_map_1 = require("./task-map");
25
+ const context_1 = require("./context");
26
+ const rejection_hints_1 = require("./rejection-hints");
27
+ const shape_drift_hints_1 = require("./shape-drift-hints");
28
+ const strict_validation_hints_1 = require("./strict-validation-hints");
29
+ const validations_1 = require("./validations");
30
+ const request_builder_1 = require("./request-builder");
31
+ const client_2 = require("../client");
32
+ const idempotency_1 = require("../../utils/idempotency");
33
+ const schema_loader_1 = require("../../validation/schema-loader");
34
+ const probes_1 = require("./probes");
35
+ const test_kit_1 = require("./test-kit");
36
+ const loader_1 = require("./loader");
37
+ const probe_dispatch_1 = require("./request-signing/probe-dispatch");
38
+ const webhook_receiver_1 = require("./webhook-receiver");
39
+ const webhook_assertions_1 = require("./webhook-assertions");
40
+ const seeding_1 = require("./seeding");
41
+ const types_1 = require("./types");
42
+ const assertions_1 = require("./assertions");
43
+ // ────────────────────────────────────────────────────────────
44
+ // Runner-output contract helpers
45
+ // ────────────────────────────────────────────────────────────
46
+ const SKIP_DETAILS = {
47
+ not_applicable: 'Not applicable: agent did not declare the protocol or specialism this storyboard targets.',
48
+ no_phases: 'Storyboard has no executable phases (placeholder).',
49
+ prerequisite_failed: 'Skipped: a prerequisite step or contract did not pass.',
50
+ missing_tool: 'Skipped: agent did not advertise the required tool.',
51
+ missing_test_controller: 'Skipped: deterministic_testing phase requires comply_test_controller, which the agent did not advertise.',
52
+ unsatisfied_contract: 'Skipped: test-kit contract is out of scope for this grading run.',
53
+ peer_branch_taken: 'Skipped: a peer branch in the same any_of branch set already contributed the aggregation flag.',
54
+ };
55
+ const CONTROLLER_SEEDING_FAILED_DETAIL = 'Skipped: pre-flight comply_test_controller seeding failed; the agent was not populated with the storyboard fixtures the remaining phases depend on.';
56
+ const OAUTH_NOT_ADVERTISED_DETAIL = 'Skipped: agent does not advertise OAuth — /.well-known/oauth-protected-resource returned 404 (RFC 9728 §3). API-key path must carry auth_mechanism_verified for this storyboard to pass.';
57
+ /**
58
+ * Per-reason override strings for detailed skip reasons that want a more
59
+ * specific message than the canonical fallback. Used only when the probe
60
+ * itself didn't emit an error-style detail.
61
+ */
62
+ const DETAILED_SKIP_DETAILS = {
63
+ oauth_not_advertised: OAUTH_NOT_ADVERTISED_DETAIL,
64
+ controller_seeding_failed: CONTROLLER_SEEDING_FAILED_DETAIL,
65
+ };
66
+ /**
67
+ * Walk a dotted key path (e.g. `"adcp.idempotency.supported"`) through a
68
+ * nested object. Returns `undefined` when any segment is missing or the
69
+ * intermediate value is not an object — the caller treats `undefined` as
70
+ * "path absent" and does NOT skip the storyboard (absence means the agent
71
+ * hasn't explicitly opted out, so failing the storyboard surfaces the gap).
72
+ *
73
+ * Exported for direct testing. Inline copies of this logic in test code
74
+ * silently drift from the runtime when edge cases (null prototypes,
75
+ * Symbol keys, prototype-chain access) get tightened — testing the real
76
+ * implementation forecloses that class of bug.
77
+ */
78
+ function resolveCapabilityPath(raw, dottedPath) {
79
+ const keys = dottedPath.split('.');
80
+ let current = raw;
81
+ for (const key of keys) {
82
+ if (current === null || typeof current !== 'object')
83
+ return undefined;
84
+ current = current[key];
85
+ }
86
+ return current;
87
+ }
88
+ function buildSkip(reason, detail) {
89
+ return { reason, detail: detail ?? SKIP_DETAILS[reason] };
90
+ }
91
+ /**
92
+ * Resolve each phase's branch-set membership, combining explicit
93
+ * `branch_set: { id, semantics }` declarations with the implicit detection
94
+ * fallback the schema + adcp#2646 mandate: an `optional: true` phase with a
95
+ * step declaring `contributes_to: <flag>` that matches a later
96
+ * `assert_contribution check: any_of, allowed_values: [<flag>]` target is a
97
+ * branch-set member even when the author hasn't migrated to the explicit
98
+ * keyword. Explicit declarations take precedence. Returned map is keyed by
99
+ * phase id; phases outside any branch set are absent from the map.
100
+ *
101
+ * First-match wins: if an optional phase has steps contributing to more
102
+ * than one any_of flag, the earliest matching step (by storyboard
103
+ * declaration order) decides the phase's branch-set membership. Authors
104
+ * wanting a phase in multiple branch sets should declare `branch_set:`
105
+ * explicitly — the implicit path does not synthesize multi-set membership.
106
+ */
107
+ function resolveBranchSets(storyboard) {
108
+ const resolved = new Map();
109
+ for (const phase of storyboard.phases) {
110
+ if (phase.branch_set)
111
+ resolved.set(phase.id, phase.branch_set);
112
+ }
113
+ const anyOfFlags = new Set();
114
+ for (const phase of storyboard.phases) {
115
+ for (const step of phase.steps) {
116
+ if (step.task !== 'assert_contribution')
117
+ continue;
118
+ for (const v of step.validations ?? []) {
119
+ if (v.check !== 'any_of')
120
+ continue;
121
+ for (const flag of v.allowed_values ?? []) {
122
+ if (typeof flag === 'string')
123
+ anyOfFlags.add(flag);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ for (const phase of storyboard.phases) {
129
+ if (resolved.has(phase.id))
130
+ continue;
131
+ if (!phase.optional)
132
+ continue;
133
+ for (const step of phase.steps) {
134
+ if (!step.contributes_to)
135
+ continue;
136
+ if (!anyOfFlags.has(step.contributes_to))
137
+ continue;
138
+ resolved.set(phase.id, { id: step.contributes_to, semantics: 'any_of' });
139
+ break;
140
+ }
141
+ }
142
+ return resolved;
143
+ }
144
+ /**
145
+ * Re-grade non-contributing branch-set peers per the `any_of` semantics in
146
+ * storyboard-schema.yaml ("Per-step grading in any_of branch patterns").
147
+ *
148
+ * Runs after the main phase loop because peer contribution status isn't
149
+ * knowable until all peer phases have executed. For every phase in a
150
+ * branch set (explicit `branch_set:` declaration or implicit detection via
151
+ * `resolveBranchSets`) whose flag was contributed by a different phase,
152
+ * this phase's raw step failures are moot — the agent took the other
153
+ * branch. Each such failed step is rewritten to a skipped result with
154
+ * `skip_reason: 'peer_branch_taken'` and the detail string the
155
+ * runner-output-contract mandates:
156
+ *
157
+ * "<flag> contributed by <peer_phase_id>.<peer_step_id> — <this_phase_id> is moot"
158
+ *
159
+ * The `<this_branch_id>` contract placeholder resolves to the non-chosen
160
+ * peer's phase id — `branch_set.id` is shared across peers and could not
161
+ * disambiguate. Only `any_of` semantics drives re-grading today; other
162
+ * (reserved) values are rejected at parse in `validateBranchSet`.
163
+ *
164
+ * `countedAsFailed` names step results the main loop added to `failedCount`
165
+ * as hard failures — either non-optional phases or the `presenceDetected`
166
+ * PRM 2xx path (adcp-client#677: "an agent that serves PRM MUST serve it
167
+ * correctly"). These stand: re-grading them would paper over the exact
168
+ * invariants the hard-failure paths exist to enforce. The post-pass only
169
+ * relabels swallowed optional-phase failures, which by construction are not
170
+ * in `countedAsFailed`.
171
+ */
172
+ function applyBranchSetGrading(phases, phaseResults, branchSetByPhaseId, contributions, contributionSources, countedAsFailed) {
173
+ let skippedDelta = 0;
174
+ for (let i = 0; i < phases.length; i++) {
175
+ const phaseDef = phases[i];
176
+ const phaseResult = phaseResults[i];
177
+ if (!phaseDef || !phaseResult)
178
+ continue;
179
+ const branchSet = branchSetByPhaseId.get(phaseDef.id);
180
+ if (!branchSet)
181
+ continue;
182
+ if (branchSet.semantics !== 'any_of')
183
+ continue;
184
+ const flag = branchSet.id;
185
+ if (!contributions.has(flag))
186
+ continue;
187
+ const source = contributionSources.get(flag);
188
+ if (!source || source.phaseId === phaseDef.id)
189
+ continue;
190
+ const detail = `${flag} contributed by ${source.phaseId}.${source.stepId} — ${phaseDef.id} is moot`;
191
+ let regraded = false;
192
+ for (const step of phaseResult.steps) {
193
+ if (step.passed || step.skipped)
194
+ continue;
195
+ if (countedAsFailed.has(step))
196
+ continue;
197
+ step.passed = true;
198
+ step.skipped = true;
199
+ step.skip_reason = 'peer_branch_taken';
200
+ step.skip = { reason: 'peer_branch_taken', detail };
201
+ delete step.error;
202
+ skippedDelta++;
203
+ regraded = true;
204
+ }
205
+ if (regraded) {
206
+ phaseResult.passed = phaseResult.steps.every(s => s.passed || s.skipped);
207
+ }
208
+ }
209
+ return { skippedDelta };
210
+ }
211
+ function extractionFromTaskResult(taskResult) {
212
+ if (!taskResult)
213
+ return { path: 'none' };
214
+ // Prefer the explicit provenance stamped by the response unwrapper / raw
215
+ // MCP probe. Fall back to inference only when the tag is missing (e.g.,
216
+ // synthetic TaskResults built by validation harnesses).
217
+ if (taskResult._extraction_path !== undefined)
218
+ return { path: taskResult._extraction_path };
219
+ if (!taskResult.success && taskResult.error)
220
+ return { path: 'error' };
221
+ return taskResult.data !== undefined && taskResult.data !== null ? { path: 'structured_content' } : { path: 'none' };
222
+ }
223
+ /**
224
+ * Keys whose values must never appear verbatim in a compliance report.
225
+ * Matching is case-insensitive and structural: any property whose final
226
+ * path segment matches is replaced with `'[redacted]'` before the payload
227
+ * is persisted on a step result. The contract spec calls for exactly this:
228
+ * "Secrets SHOULD be redacted with the literal string '[redacted]'".
229
+ */
230
+ const SECRET_KEY_PATTERN = /^(authorization|credentials?|token|api[_-]?key|password|secret|client[_-]secret|refresh[_-]token|access[_-]token|bearer|session[_-]token|session[_-]id|offering[_-]token|cookie|set[_-]cookie)$/i;
231
+ function __redactSecretsForTest(value) {
232
+ return redactSecrets(value);
233
+ }
234
+ function __filterResponseHeadersForTest(headers) {
235
+ return filterResponseHeaders(headers);
236
+ }
237
+ function __defaultAuthHeadersForRawProbeForTest(options) {
238
+ return defaultAuthHeadersForRawProbe(options);
239
+ }
240
+ function redactSecrets(value, depth = 0) {
241
+ if (depth > 32)
242
+ return value; // cheap cycle guard
243
+ if (Array.isArray(value))
244
+ return value.map(v => redactSecrets(v, depth + 1));
245
+ if (value && typeof value === 'object') {
246
+ const out = {};
247
+ for (const [k, v] of Object.entries(value)) {
248
+ out[k] =
249
+ SECRET_KEY_PATTERN.test(k) && (typeof v === 'string' || typeof v === 'number')
250
+ ? '[redacted]'
251
+ : redactSecrets(v, depth + 1);
252
+ }
253
+ return out;
254
+ }
255
+ return value;
256
+ }
257
+ /**
258
+ * Response headers to echo on a RunnerResponseRecord. Everything else is
259
+ * dropped — agents can (and do) include `set-cookie`, echoed `authorization`,
260
+ * reverse-proxy breadcrumbs (`x-amz-*`, `x-azure-*`, `x-internal-*`) that a
261
+ * hostile agent could use to bait us into publishing internal state in a
262
+ * shared compliance report.
263
+ */
264
+ const RESPONSE_HEADER_ALLOWLIST = new Set([
265
+ 'content-type',
266
+ 'content-length',
267
+ 'content-encoding',
268
+ 'www-authenticate',
269
+ 'location',
270
+ 'retry-after',
271
+ 'x-request-id',
272
+ 'x-correlation-id',
273
+ ]);
274
+ function filterResponseHeaders(headers) {
275
+ if (!headers)
276
+ return undefined;
277
+ const out = {};
278
+ for (const [k, v] of Object.entries(headers)) {
279
+ if (RESPONSE_HEADER_ALLOWLIST.has(k.toLowerCase()))
280
+ out[k] = v;
281
+ }
282
+ return Object.keys(out).length > 0 ? out : undefined;
283
+ }
284
+ // ────────────────────────────────────────────────────────────
285
+ // runStoryboard: execute all phases/steps
286
+ // ────────────────────────────────────────────────────────────
287
+ /**
288
+ * Run an entire storyboard against an agent.
289
+ *
290
+ * Pass a single URL for the standard single-instance run. Pass an array of
291
+ * URLs to engage multi-instance mode: the runner round-robins each step
292
+ * across the provided URLs so that (brand, account)-scoped state created on
293
+ * one instance must be visible on the next. Sellers whose state lives only
294
+ * in-process will fail this mode — the failure signature is a prior write
295
+ * succeeding on instance A while a subsequent read returns NOT_FOUND or
296
+ * empty on instance B.
297
+ */
298
+ async function runStoryboard(agentUrlOrUrls, storyboard, options = {}) {
299
+ (0, test_kit_1.validateTestKit)(options.test_kit);
300
+ // Enforce authoring-time branch_set invariants regardless of how the
301
+ // storyboard reached us. YAML callers already ran these rules in
302
+ // parseStoryboard; programmatic callers (hand-built Storyboard objects or
303
+ // alternative YAML loaders) reach this point without the loader having
304
+ // fired, and the runtime's grading depends on the invariants holding.
305
+ // `validateStoryboardShape` is idempotent so the double-pass is safe.
306
+ (0, loader_1.validateStoryboardShape)(storyboard);
307
+ const agentUrls = Array.isArray(agentUrlOrUrls) ? agentUrlOrUrls : [agentUrlOrUrls];
308
+ if (agentUrls.length === 0) {
309
+ throw new Error('runStoryboard: at least one agent URL required');
310
+ }
311
+ const isMultiInstance = agentUrls.length > 1;
312
+ if (isMultiInstance && options._client) {
313
+ throw new Error('runStoryboard: _client override is incompatible with multi-instance mode. ' +
314
+ 'Remove _client (or pass a single agent URL) to use round-robin dispatch.');
315
+ }
316
+ const requestedStrategy = options.multi_instance_strategy ?? 'round-robin';
317
+ if (requestedStrategy === 'multi-pass' && isMultiInstance) {
318
+ // Webhook receivers bind a fresh ephemeral port per pass. Each pass would
319
+ // advertise a different URL via `{{runner.webhook_base}}`; agents caching
320
+ // the pass-1 URL would deliver into a dead port in pass 2. Reject rather
321
+ // than silently mis-route. The spec-correct test for webhook retry /
322
+ // idempotency is one pass.
323
+ if (options.webhook_receiver) {
324
+ throw new Error('runStoryboard: webhook_receiver is incompatible with multi_instance_strategy: "multi-pass". ' +
325
+ 'Each pass would bind a fresh receiver URL, so agents caching the pass-1 URL would deliver ' +
326
+ 'to a dead port in pass 2. Use round-robin when the storyboard needs a webhook receiver, ' +
327
+ 'or run multi-pass on a storyboard without webhook observation.');
328
+ }
329
+ return runMultiPass(agentUrls, storyboard, options);
330
+ }
331
+ return executeStoryboardPass(agentUrls, storyboard, options, 0);
332
+ }
333
+ /**
334
+ * Build a minimal StoryboardResult for a storyboard skipped by a
335
+ * `requires_capability` predicate. The single synthetic step carries
336
+ * `skip_reason: 'capability_unsupported'` so CLI reports and JUnit
337
+ * consumers render it as a skip rather than a pass or failure.
338
+ */
339
+ function buildCapabilityUnsupportedResult(agentUrls, storyboard, detail) {
340
+ const syntheticStep = {
341
+ storyboard_id: storyboard.id,
342
+ step_id: 'capability_unsupported',
343
+ phase_id: 'capability_unsupported',
344
+ title: 'Storyboard skipped: capability not supported by this agent',
345
+ task: '',
346
+ passed: true,
347
+ skipped: true,
348
+ skip_reason: 'capability_unsupported',
349
+ skip: { reason: 'unsatisfied_contract', detail },
350
+ duration_ms: 0,
351
+ validations: [],
352
+ context: {},
353
+ error: detail,
354
+ extraction: { path: 'none' },
355
+ };
356
+ return {
357
+ storyboard_id: storyboard.id,
358
+ storyboard_title: storyboard.title,
359
+ agent_url: agentUrls[0],
360
+ overall_passed: true,
361
+ phases: [
362
+ {
363
+ phase_id: 'capability_unsupported',
364
+ phase_title: 'Capability unsupported',
365
+ passed: true,
366
+ steps: [syntheticStep],
367
+ duration_ms: 0,
368
+ },
369
+ ],
370
+ context: {},
371
+ total_duration_ms: 0,
372
+ passed_count: 0,
373
+ failed_count: 0,
374
+ skipped_count: 1,
375
+ tested_at: new Date().toISOString(),
376
+ strict_validation_summary: {
377
+ observable: false,
378
+ checked: 0,
379
+ passed: 0,
380
+ failed: 0,
381
+ strict_only_failures: 0,
382
+ lenient_also_failed: 0,
383
+ },
384
+ };
385
+ }
386
+ /**
387
+ * Execute a single pass of the storyboard against the supplied replica URLs
388
+ * using round-robin dispatch starting at `dispatchOffset`. Called directly
389
+ * by `runStoryboard` (offset 0) and repeatedly by `runMultiPass` (offsets
390
+ * 0..N-1). Taking the offset as an explicit parameter keeps the dispatcher
391
+ * primitive out of the public `StoryboardRunOptions` type.
392
+ */
393
+ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOffset, preSeeded) {
394
+ const start = Date.now();
395
+ const isMultiInstance = agentUrls.length > 1;
396
+ // Build one client per URL. In single-URL mode `_client` (from comply()) is
397
+ // honored so the shared MCP transport is reused across storyboards.
398
+ const clients = agentUrls.map(url => (0, client_1.getOrCreateClient)(url, options));
399
+ // Discover agent profile against the first instance; all instances are
400
+ // expected to run the same code behind a shared state store, so one probe
401
+ // is sufficient. For multi-instance runs, skipping N-1 redundant
402
+ // get_agent_info calls also keeps CI output clean.
403
+ let profile;
404
+ if (!options._client) {
405
+ const discovered = await (0, client_1.getOrDiscoverProfile)(clients[0], options);
406
+ profile = discovered.profile;
407
+ // Populate agentTools from discovered profile if not already set
408
+ if (!options.agentTools && profile?.tools) {
409
+ options = { ...options, agentTools: profile.tools };
410
+ }
411
+ }
412
+ else {
413
+ profile = options._profile;
414
+ }
415
+ // Evaluate requires_capability predicate before any phase setup.
416
+ // When the agent explicitly declared it doesn't support what this storyboard
417
+ // tests (e.g. `adcp.idempotency.supported: false`), skip the whole storyboard
418
+ // rather than producing a cascade of misleading per-phase failures.
419
+ if (storyboard.requires_capability) {
420
+ const rawCaps = profile?.raw_capabilities;
421
+ if (rawCaps !== undefined) {
422
+ const { path, equals } = storyboard.requires_capability;
423
+ const actual = resolveCapabilityPath(rawCaps, path);
424
+ // Absence semantics — load-bearing. `actual === undefined` means
425
+ // the agent didn't declare the capability at all (field missing
426
+ // from `get_adcp_capabilities` response). We deliberately RUN the
427
+ // storyboard in that case rather than skip it: an agent that
428
+ // pre-dates the capability field hasn't explicitly opted out, so
429
+ // the storyboard's failures surface a real spec-coverage gap
430
+ // (under-declared agent) rather than a behavior the agent
431
+ // affirmatively refused. Skip ONLY when the agent declared a
432
+ // value AND that value disagrees with the predicate.
433
+ if (actual !== undefined && actual !== equals) {
434
+ const detail = `Capability predicate \`${path} === ${JSON.stringify(equals)}\` not satisfied: ` +
435
+ `agent declared ${JSON.stringify(actual)}.`;
436
+ if (!options._client)
437
+ await (0, protocols_1.closeConnections)(options.protocol);
438
+ return buildCapabilityUnsupportedResult(agentUrls, storyboard, detail);
439
+ }
440
+ }
441
+ }
442
+ let context = { ...options.context };
443
+ if (options.context)
444
+ (0, context_1.forwardAliasCache)(options.context, context);
445
+ const contributions = new Set();
446
+ // First phase/step that contributed each flag. Branch-set post-pass reads
447
+ // this to emit the contract-mandated peer_branch_taken detail string
448
+ // ("<flag> contributed by <peer_phase_id>.<peer_step_id> — …"). Only the
449
+ // first contributor is recorded — downstream peers observing the same flag
450
+ // are redundant and the contract calls out a single peer.
451
+ const contributionSources = new Map();
452
+ const priorStepResults = new Map();
453
+ const priorProbes = new Map();
454
+ const contextProvenance = new Map();
455
+ const priorA2aEnvelopes = new Map();
456
+ const phaseResults = [];
457
+ let passedCount = 0;
458
+ let failedCount = 0;
459
+ let skippedCount = 0;
460
+ // Step results whose failures the main loop added to failedCount. The
461
+ // branch-set post-pass decrements only for entries that were actually
462
+ // counted, so an optional phase that hit `presenceDetected` (a PRM 2xx
463
+ // inside an otherwise-optional phase) has its leak correctly reversed.
464
+ const countedAsFailed = new Set();
465
+ // Start an ephemeral webhook receiver when the run opts in. The base URL
466
+ // is exposed via `{{runner.webhook_base}}` / `{{runner.webhook_url:<id>}}`
467
+ // substitutions so storyboards can inject per-step URLs into
468
+ // `push_notification_config.url`. See adcontextprotocol/adcp#2431.
469
+ const webhookReceiver = options.webhook_receiver
470
+ ? await (0, webhook_receiver_1.createWebhookReceiver)({
471
+ ...(options.webhook_receiver.mode && { mode: options.webhook_receiver.mode }),
472
+ ...(options.webhook_receiver.host !== undefined && { host: options.webhook_receiver.host }),
473
+ ...(options.webhook_receiver.port !== undefined && { port: options.webhook_receiver.port }),
474
+ ...(options.webhook_receiver.public_url !== undefined && { public_url: options.webhook_receiver.public_url }),
475
+ })
476
+ : undefined;
477
+ const runnerVars = (0, context_1.createRunnerVariables)({
478
+ ...(webhookReceiver && { webhookBase: webhookReceiver.base_url }),
479
+ });
480
+ // Pre-arm retry-replay policies for any expect_webhook_retry_keys_stable
481
+ // steps. Ordering matters: the receiver must be rejecting deliveries
482
+ // before the triggering step fires its webhook, otherwise the first
483
+ // delivery succeeds and the sender never retries.
484
+ if (webhookReceiver)
485
+ (0, webhook_assertions_1.armWebhookAssertions)(storyboard, runnerVars, webhookReceiver);
486
+ // Flatten all steps for next-step preview lookups
487
+ const allSteps = flattenSteps(storyboard);
488
+ // Inner passes always dispatch round-robin; only the outer runMultiPass
489
+ // caller knows about the multi-pass strategy. This keeps createDispatcher's
490
+ // strategy parameter narrow.
491
+ const dispatch = createDispatcher(agentUrls, clients, 'round-robin', dispatchOffset);
492
+ // Resolve cross-step assertions declared on `storyboard.invariants`.
493
+ // `resolveAssertions` throws on unknown ids — fail fast here rather than
494
+ // silently skip, since a missing assertion means unknown conformance gaps.
495
+ const assertions = (0, assertions_1.resolveAssertions)(storyboard.invariants);
496
+ // Step-level `invariants.disable` uses the resolved set as its universe:
497
+ // an id is only a valid step-level opt-out if it actually runs on this
498
+ // storyboard. Typos and dead-code references (already disabled run-wide)
499
+ // fail fast here for the same reason.
500
+ (0, assertions_1.validateStepInvariants)(storyboard, assertions);
501
+ const assertionContexts = new Map();
502
+ for (const spec of assertions) {
503
+ assertionContexts.set(spec.id, {
504
+ storyboard,
505
+ agentUrl: agentUrls[0],
506
+ options,
507
+ state: {},
508
+ });
509
+ }
510
+ const assertionResults = [];
511
+ let assertionsFailed = false;
512
+ for (const spec of assertions) {
513
+ if (spec.onStart)
514
+ await spec.onStart(assertionContexts.get(spec.id));
515
+ }
516
+ // Placeholder storyboards with no executable phases get a distinct skip
517
+ // reason per the runner-output contract. Without this, the overall result
518
+ // would pass vacuously — `passed_count === 0 && failed_count === 0` — and
519
+ // an implementor reading the report can't tell "nothing tested" from
520
+ // "everything passed".
521
+ const hasExecutableSteps = storyboard.phases.some(p => p.steps.length > 0);
522
+ if (!hasExecutableSteps) {
523
+ const isScenarioComposed = (storyboard.requires_scenarios?.length ?? 0) > 0;
524
+ const detail = isScenarioComposed
525
+ ? `Storyboard "${storyboard.id}" has no local phases — its test surface is fully composed from the scenarios listed in \`requires_scenarios\`.`
526
+ : `Storyboard "${storyboard.id}" has no executable phases — populate \`phases[].steps\` or remove the storyboard.`;
527
+ const syntheticStep = {
528
+ storyboard_id: storyboard.id,
529
+ // Synthetic sentinel. Functionally non-colliding because downstream
530
+ // consumers (CLI report, storyboard-tracks) key on `skip_reason`,
531
+ // not `phase_id`/`step_id`. Matches the documented `RunnerSkipReason`
532
+ // vocabulary in storyboard/types.ts.
533
+ step_id: 'no_phases',
534
+ phase_id: 'no_phases',
535
+ title: 'Storyboard has no executable phases',
536
+ task: '',
537
+ passed: true,
538
+ skipped: true,
539
+ skip_reason: 'no_phases',
540
+ skip: buildSkip('no_phases', detail),
541
+ duration_ms: 0,
542
+ validations: [],
543
+ context,
544
+ error: detail,
545
+ extraction: { path: 'none' },
546
+ };
547
+ phaseResults.push({
548
+ phase_id: 'no_phases',
549
+ phase_title: 'No phases',
550
+ passed: true, // skipped step is neutral — phase must not fail
551
+ steps: [syntheticStep],
552
+ duration_ms: 0,
553
+ });
554
+ skippedCount++;
555
+ }
556
+ // Pre-flight controller seeding (adcp-client#778). When the storyboard
557
+ // declares `prerequisites.controller_seeding: true` and carries a
558
+ // `fixtures:` block, fire the corresponding `seed_*` scenarios on
559
+ // `comply_test_controller` so the seller's catalog / ledger holds every
560
+ // fixture id the downstream phases reference. On any seed failure we
561
+ // cascade-skip the remaining phases with `controller_seeding_failed` so
562
+ // the report shows "setup broke" instead of a thicket of per-step
563
+ // PRODUCT_NOT_FOUND / VALIDATION_ERROR failures. Runs against the first
564
+ // client only: in multi-instance mode the seller is expected to share
565
+ // state across replicas (that is what multi-instance tests exist to
566
+ // verify). Sellers that hold per-replica state must opt out via
567
+ // `skip_controller_seeding`.
568
+ //
569
+ // The seeding phase is held in a sidecar rather than pushed into
570
+ // `phaseResults` up-front so every downstream consumer that indexes
571
+ // `phaseResults[i]` against `storyboard.phases[i]` (branch-set grading,
572
+ // `requiredPhasesPassed`) keeps working. It is spliced to the front of
573
+ // `phaseResults` at the end so the report reads top-to-bottom in the
574
+ // order the runner actually executed things.
575
+ //
576
+ // Multi-pass mode populates `preSeeded` so seeding fires exactly once
577
+ // across all passes — see `runMultiPass`. Without the sidecar, every
578
+ // pass would re-seed and the aggregator's cross-pass sum would inflate
579
+ // `failed_count`/`skipped_count` by N when a single fixture broke.
580
+ let seedingPhaseResult = null;
581
+ let seedingFailed = false;
582
+ let seedingMissingController = false;
583
+ {
584
+ const seeding = preSeeded !== undefined
585
+ ? preSeeded.result
586
+ : await (0, seeding_1.runControllerSeeding)(clients[0], storyboard, options, context);
587
+ if (seeding) {
588
+ const attach = preSeeded === undefined || preSeeded.attach;
589
+ if (attach) {
590
+ seedingPhaseResult = seeding.phase;
591
+ passedCount += seeding.passedCount;
592
+ failedCount += seeding.failedCount;
593
+ if (seeding.missingController)
594
+ skippedCount += seeding.phase.steps.length;
595
+ }
596
+ if (seeding.missingController) {
597
+ seedingMissingController = true;
598
+ }
599
+ else if (!seeding.allPassed) {
600
+ seedingFailed = true;
601
+ }
602
+ }
603
+ }
604
+ for (const phase of storyboard.phases) {
605
+ const phaseStart = Date.now();
606
+ const stepResults = [];
607
+ let phasePassed = true;
608
+ let statefulFailed = false;
609
+ // PRM presence-probe state (adcp-client#677). `phaseAbsent` flips when
610
+ // /.well-known/oauth-protected-resource returns 404 — subsequent steps
611
+ // in this phase cascade-skip instead of failing their http_status:200
612
+ // validations. `presenceDetected` flips when PRM returns a 2xx: the
613
+ // agent IS advertising OAuth, so validation failures in this phase
614
+ // become hard failures regardless of `optional: true`, closing the
615
+ // spoofing path where a broken PRM + valid API key could silently pass.
616
+ let phaseAbsent = false;
617
+ let presenceDetected = false;
618
+ if (shouldSkipPhase(phase, options)) {
619
+ phaseResults.push({
620
+ phase_id: phase.id,
621
+ phase_title: phase.title,
622
+ passed: true, // optional phase skipped — neutral
623
+ steps: [],
624
+ duration_ms: 0,
625
+ });
626
+ continue;
627
+ }
628
+ // Seeding-cascade skip: either the pre-flight seed phase failed (setup
629
+ // break) or the agent doesn't advertise `comply_test_controller`
630
+ // (coverage gap). Both paths emit skipped steps; the reasons differ so
631
+ // compliance reports distinguish "agent misconfigured" from "agent not
632
+ // graded against this storyboard". `controller_seeding_failed` is a
633
+ // detailed reason mapped to canonical `prerequisite_failed`;
634
+ // `missing_test_controller` is canonical on its own. Emits full step
635
+ // rows (not an empty phase) so implementors see exactly which
636
+ // buyer-side operations were elided.
637
+ if (seedingMissingController || seedingFailed) {
638
+ const cascadeSkip = seedingMissingController
639
+ ? {
640
+ skip_reason: 'missing_test_controller',
641
+ skip: { reason: 'missing_test_controller', detail: SKIP_DETAILS.missing_test_controller },
642
+ }
643
+ : {
644
+ skip_reason: 'controller_seeding_failed',
645
+ skip: { reason: 'prerequisite_failed', detail: CONTROLLER_SEEDING_FAILED_DETAIL },
646
+ };
647
+ const cascadeSteps = phase.steps.map(step => ({
648
+ storyboard_id: storyboard.id,
649
+ step_id: step.id,
650
+ phase_id: phase.id,
651
+ title: step.title,
652
+ task: step.task,
653
+ passed: true,
654
+ skipped: true,
655
+ ...cascadeSkip,
656
+ duration_ms: 0,
657
+ validations: [],
658
+ context,
659
+ extraction: { path: 'none' },
660
+ }));
661
+ phaseResults.push({
662
+ phase_id: phase.id,
663
+ phase_title: phase.title,
664
+ passed: true,
665
+ steps: cascadeSteps,
666
+ duration_ms: 0,
667
+ });
668
+ skippedCount += cascadeSteps.length;
669
+ continue;
670
+ }
671
+ for (const step of phase.steps) {
672
+ // Cascade-skip when the PRM presence probe declared the phase absent.
673
+ if (phaseAbsent) {
674
+ const cascadeResult = {
675
+ storyboard_id: storyboard.id,
676
+ step_id: step.id,
677
+ phase_id: phase.id,
678
+ title: step.title,
679
+ task: step.task,
680
+ passed: true,
681
+ skipped: true,
682
+ skip_reason: 'oauth_not_advertised',
683
+ skip: { reason: 'not_applicable', detail: OAUTH_NOT_ADVERTISED_DETAIL },
684
+ duration_ms: 0,
685
+ validations: [],
686
+ context,
687
+ extraction: { path: 'none' },
688
+ };
689
+ stepResults.push(cascadeResult);
690
+ priorStepResults.set(step.id, cascadeResult);
691
+ skippedCount++;
692
+ continue;
693
+ }
694
+ // Skip remaining steps if a stateful dependency failed
695
+ if (statefulFailed && step.stateful) {
696
+ const detail = 'Skipped: prior stateful step failed.';
697
+ stepResults.push({
698
+ storyboard_id: storyboard.id,
699
+ step_id: step.id,
700
+ phase_id: phase.id,
701
+ title: step.title,
702
+ task: step.task,
703
+ passed: false,
704
+ skipped: true,
705
+ skip_reason: 'prerequisite_failed',
706
+ skip: buildSkip('prerequisite_failed', detail),
707
+ duration_ms: 0,
708
+ validations: [],
709
+ context,
710
+ error: detail,
711
+ extraction: { path: 'none' },
712
+ });
713
+ skippedCount++;
714
+ phasePassed = false;
715
+ continue;
716
+ }
717
+ const assignment = dispatch.nextFor(step);
718
+ const rawResult = await executeStep(assignment.client, step, phase.id, context, allSteps, options, {
719
+ contributions,
720
+ priorStepResults,
721
+ priorProbes,
722
+ agentUrl: assignment.agentUrl,
723
+ webhookReceiver,
724
+ runnerVars,
725
+ contextProvenance,
726
+ priorA2aEnvelopes,
727
+ agentLibraryVersion: profile?.library_version,
728
+ });
729
+ const result = { ...rawResult, storyboard_id: storyboard.id };
730
+ if (isMultiInstance) {
731
+ result.agent_url = assignment.agentUrl;
732
+ result.agent_index = assignment.instanceIndex + 1;
733
+ }
734
+ stepResults.push(result);
735
+ priorStepResults.set(step.id, result);
736
+ // Fire per-step assertions. Each result is appended to the step's
737
+ // `validations[]` under `check: "assertion"` so existing UI renders
738
+ // them alongside inline checks, and mirrored into `assertionResults`
739
+ // for the storyboard-level `assertions[]` surface. Any failure flips
740
+ // `result.passed` so the counting below treats it like a validation
741
+ // failure — that's what makes assertions gating, not advisory.
742
+ for (const spec of assertions) {
743
+ if (!spec.onStep)
744
+ continue;
745
+ // Per-step opt-out: authors use `step.invariants.disable: [id]` to
746
+ // suppress a default invariant on a step that deliberately models
747
+ // behavior the invariant would flag (validated at runner start).
748
+ if ((0, assertions_1.stepDisablesAssertion)(step.invariants, spec.id))
749
+ continue;
750
+ const raw = await spec.onStep(assertionContexts.get(spec.id), result);
751
+ for (const r of raw) {
752
+ const full = { ...r, assertion_id: spec.id, scope: 'step', step_id: step.id };
753
+ assertionResults.push(full);
754
+ result.validations.push({
755
+ check: 'assertion',
756
+ passed: r.passed,
757
+ description: `${spec.id}: ${r.description}`,
758
+ ...(r.error !== undefined && { error: r.error }),
759
+ });
760
+ // Issue #935: assertions can attach a structured hint that the
761
+ // runner mirrors into the owning step's `hints[]`. Today only
762
+ // `status.monotonic` populates `hint`; the merge here keeps the
763
+ // taxonomy unified so a single CLI/JUnit/Addie renderer can drive
764
+ // off `step.hints[]` regardless of which subsystem produced it.
765
+ if (r.hint) {
766
+ const existing = result.hints ?? [];
767
+ result.hints = [...existing, r.hint];
768
+ }
769
+ if (!r.passed) {
770
+ result.passed = false;
771
+ assertionsFailed = true;
772
+ }
773
+ }
774
+ }
775
+ // PRM presence accounting — must happen after the step result lands so
776
+ // both the skipped-404 and 2xx paths are visible.
777
+ if (step.task === 'protected_resource_metadata') {
778
+ if (result.skipped && result.skip_reason === 'oauth_not_advertised') {
779
+ phaseAbsent = true;
780
+ }
781
+ else {
782
+ const status = result.response?.status;
783
+ if (typeof status === 'number' && status >= 200 && status < 300) {
784
+ presenceDetected = true;
785
+ }
786
+ }
787
+ }
788
+ // Record contribution on success, honoring optional contributes_if predicate.
789
+ if (!result.skipped && result.passed && step.contributes_to) {
790
+ if (evalContributesIf(step.contributes_if, priorStepResults)) {
791
+ const flag = step.contributes_to;
792
+ if (!contributions.has(flag)) {
793
+ contributionSources.set(flag, { phaseId: phase.id, stepId: step.id });
794
+ }
795
+ contributions.add(flag);
796
+ }
797
+ }
798
+ if (result.skipped) {
799
+ skippedCount++;
800
+ context = result.context;
801
+ }
802
+ else if (result.passed) {
803
+ context = result.context;
804
+ passedCount++;
805
+ }
806
+ else {
807
+ phasePassed = false;
808
+ // Optional phases normally swallow step failures — the storyboard's
809
+ // final assert_contribution gate decides pass/fail via the "API key
810
+ // OR OAuth" logic. Exception: once a PRM presence probe has
811
+ // detected the agent IS advertising OAuth, subsequent validation
812
+ // failures in this phase are hard failures (adcp-client#677). An
813
+ // agent that serves PRM MUST serve it correctly.
814
+ if (!phase.optional || presenceDetected) {
815
+ failedCount++;
816
+ countedAsFailed.add(result);
817
+ }
818
+ if (step.stateful)
819
+ statefulFailed = true;
820
+ // In multi-instance mode, annotate the failure with the cross-instance
821
+ // attribution block so CI readers pattern-match it as a deployment bug.
822
+ if (isMultiInstance) {
823
+ annotateMultiInstanceFailure(result, storyboard, stepResults);
824
+ }
825
+ }
826
+ }
827
+ phaseResults.push({
828
+ phase_id: phase.id,
829
+ phase_title: phase.title,
830
+ passed: phasePassed,
831
+ steps: stepResults,
832
+ duration_ms: Date.now() - phaseStart,
833
+ });
834
+ }
835
+ // Branch-set post-pass: phases in a branch set (explicit `branch_set:`
836
+ // declaration or implicit detection via shared `contributes_to` + a later
837
+ // any_of `assert_contribution`) whose flag was contributed by a peer have
838
+ // their failed steps re-graded as skipped with `peer_branch_taken`. See
839
+ // storyboard-schema.yaml (lines 205-223) and runner-output-contract.yaml
840
+ // (reasons.peer_branch_taken). Done after all phases run — peer
841
+ // contribution status isn't knowable inside the per-phase loop. Runs
842
+ // before storyboard-scoped assertions so `onEnd` hooks see the finalized
843
+ // per-step grades (a moot peer's "failure" should not trip a cross-step
844
+ // invariant).
845
+ const branchSetsByPhaseId = resolveBranchSets(storyboard);
846
+ const branchSetDelta = applyBranchSetGrading(storyboard.phases, phaseResults, branchSetsByPhaseId, contributions, contributionSources, countedAsFailed);
847
+ skippedCount += branchSetDelta.skippedDelta;
848
+ // Fire storyboard-scoped assertions. These observe the full run and can
849
+ // emit `scope: "storyboard"` findings that flip `overall_passed` without
850
+ // being attributable to a single step (e.g. "saw >1 acquire for the same
851
+ // replayed idempotency_key across the run").
852
+ for (const spec of assertions) {
853
+ if (!spec.onEnd)
854
+ continue;
855
+ const raw = await spec.onEnd(assertionContexts.get(spec.id));
856
+ for (const r of raw) {
857
+ assertionResults.push({ ...r, assertion_id: spec.id, scope: 'storyboard' });
858
+ if (!r.passed)
859
+ assertionsFailed = true;
860
+ }
861
+ }
862
+ // Overall pass requires (a) no required-phase failures AND (b) at least one
863
+ // required phase actually passed with at least one non-skipped step AND
864
+ // (c) no assertion failures. Without (b) a storyboard where every phase is
865
+ // marked optional and every required phase's steps are skipped (e.g.
866
+ // required_tools filtered out everything) would pass vacuously. (c) makes
867
+ // assertions gating — a run with all validations green but a cross-step
868
+ // invariant broken is not conformant.
869
+ // When no phases had executable steps the storyboard result is a skip, not a
870
+ // failure. The index-aligned guard below would hit storyboard.phases[0] ===
871
+ // undefined for an empty-phases storyboard and force requiredPhasesPassed to
872
+ // false, flipping overall_passed to false. Short-circuit to true so the
873
+ // no-phases sentinel produces overall_passed: true (consistent with how
874
+ // buildNotApplicableStoryboardResult shapes its result in comply.ts).
875
+ const requiredPhasesPassed = !hasExecutableSteps ||
876
+ phaseResults.some((p, idx) => {
877
+ const phaseDef = storyboard.phases[idx];
878
+ if (!phaseDef || phaseDef.optional || !p.passed)
879
+ return false;
880
+ return p.steps.some(s => !s.skipped && s.passed);
881
+ });
882
+ // Prepend the pre-flight seeding phase now that every consumer that
883
+ // index-aligns `phaseResults` with `storyboard.phases` has run. Reader
884
+ // order matches execution order.
885
+ if (seedingPhaseResult)
886
+ phaseResults.unshift(seedingPhaseResult);
887
+ const schemasUsed = collectSchemasUsed(phaseResults);
888
+ const strictSummary = summarizeStrictValidation(phaseResults);
889
+ const result = {
890
+ storyboard_id: storyboard.id,
891
+ storyboard_title: storyboard.title,
892
+ agent_url: agentUrls[0],
893
+ ...(isMultiInstance && { agent_urls: [...agentUrls] }),
894
+ // Inner multi-pass passes surface as `round-robin` (that's what they are
895
+ // individually); the aggregating wrapper relabels the top-level result
896
+ // `multi-pass`.
897
+ ...(isMultiInstance && { multi_instance_strategy: 'round-robin' }),
898
+ overall_passed: failedCount === 0 && requiredPhasesPassed && !assertionsFailed,
899
+ phases: phaseResults,
900
+ context,
901
+ total_duration_ms: Date.now() - start,
902
+ passed_count: passedCount,
903
+ failed_count: failedCount,
904
+ skipped_count: skippedCount,
905
+ tested_at: new Date().toISOString(),
906
+ ...(schemasUsed.length > 0 ? { schemas_used: schemasUsed } : {}),
907
+ ...(assertionResults.length > 0 ? { assertions: assertionResults } : {}),
908
+ strict_validation_summary: strictSummary,
909
+ };
910
+ // Close protocol connections when the runner created its own client. The
911
+ // connection pool is keyed by URL+auth, so a single closeConnections() call
912
+ // evicts every instance's transport regardless of how many URLs we used.
913
+ if (!options._client) {
914
+ await (0, protocols_1.closeConnections)(options.protocol);
915
+ }
916
+ if (webhookReceiver)
917
+ await webhookReceiver.close();
918
+ return result;
919
+ }
920
+ /**
921
+ * Run the storyboard N times — once per replica — with the round-robin
922
+ * dispatcher starting at a different replica each pass. Lets each step hit
923
+ * a different replica across passes, so a bug isolated to one replica
924
+ * (stale config, divergent version, local cache miss) surfaces on the pass
925
+ * that sends the relevant step there.
926
+ *
927
+ * Known limitation (follow-up adcontextprotocol/adcp-client#607 option 2):
928
+ * for N=2, offset-shift preserves pair parity — a write→read pair whose
929
+ * dispatch indices differ by an even amount lands same-replica in every
930
+ * pass (the canonical property_lists case: write at step 0, read at step
931
+ * 2). Cross-replica state-persistence testing at N=2 is primarily the job
932
+ * of single-pass round-robin (which catches adjacent write→read pairs);
933
+ * dependency-aware dispatch that reads `context_inputs` and assigns a
934
+ * replica different from the writer of the specific state key being read
935
+ * is the spec-aligned fix for non-adjacent pairs and should be preferred
936
+ * over multi-pass for that purpose.
937
+ *
938
+ * The aggregated result AND-combines `overall_passed` across passes, sums
939
+ * the pass/fail/skip counts, and exposes the per-pass detail via `passes[]`.
940
+ * The top-level `phases` is the first pass's phases so single-pass consumers
941
+ * keep working; richer consumers read `passes[]`.
942
+ */
943
+ async function runMultiPass(agentUrls, storyboard, options) {
944
+ const start = Date.now();
945
+ // Run pre-flight controller seeding ONCE at the run level (adcp-client#778)
946
+ // so the aggregator doesn't sum N redundant seed batches into
947
+ // `failed_count` / `skipped_count`. Every pass inherits the same outcome;
948
+ // only the first pass attaches the synthetic `__controller_seeding__`
949
+ // phase to its `phaseResults`, so the aggregated top-level counts reflect
950
+ // a single seeding pass across the whole run.
951
+ const preSeedClients = agentUrls.map(url => (0, client_1.getOrCreateClient)(url, options));
952
+ const preSeedContext = { ...options.context };
953
+ const preSeededResult = await (0, seeding_1.runControllerSeeding)(preSeedClients[0], storyboard, options, preSeedContext);
954
+ const passes = [];
955
+ const passResults = [];
956
+ for (let passIdx = 0; passIdx < agentUrls.length; passIdx++) {
957
+ const passSeeded = { result: preSeededResult, attach: passIdx === 0 };
958
+ const result = await executeStoryboardPass(agentUrls, storyboard, options, passIdx, passSeeded);
959
+ passResults.push(result);
960
+ passes.push({
961
+ pass_index: passIdx + 1,
962
+ dispatch_offset: passIdx,
963
+ overall_passed: result.overall_passed,
964
+ phases: result.phases,
965
+ passed_count: result.passed_count,
966
+ failed_count: result.failed_count,
967
+ skipped_count: result.skipped_count,
968
+ duration_ms: result.total_duration_ms,
969
+ });
970
+ }
971
+ const first = passResults[0];
972
+ const overallPassed = passes.every(p => p.overall_passed);
973
+ const passed = passes.reduce((sum, p) => sum + p.passed_count, 0);
974
+ const failed = passes.reduce((sum, p) => sum + p.failed_count, 0);
975
+ const skipped = passes.reduce((sum, p) => sum + p.skipped_count, 0);
976
+ const schemasUsed = passResults.flatMap(r => r.schemas_used ?? []);
977
+ const schemasDedup = [...new Map(schemasUsed.map(s => [s.schema_id, s])).values()];
978
+ // Assertions are scoped per-pass — each pass's runner resolved them
979
+ // independently and reported `assertion_id` identically. Concatenate so
980
+ // readers see a per-pass timeline; de-duplicating would hide a real
981
+ // "passed on pass 1, failed on pass 2" divergence.
982
+ const assertionsAgg = passResults.flatMap(r => r.assertions ?? []);
983
+ return {
984
+ storyboard_id: storyboard.id,
985
+ storyboard_title: storyboard.title,
986
+ agent_url: agentUrls[0],
987
+ agent_urls: [...agentUrls],
988
+ multi_instance_strategy: 'multi-pass',
989
+ overall_passed: overallPassed,
990
+ phases: first.phases,
991
+ passes,
992
+ context: first.context,
993
+ total_duration_ms: Date.now() - start,
994
+ passed_count: passed,
995
+ failed_count: failed,
996
+ skipped_count: skipped,
997
+ tested_at: new Date().toISOString(),
998
+ ...(schemasDedup.length > 0 ? { schemas_used: schemasDedup } : {}),
999
+ ...(assertionsAgg.length > 0 ? { assertions: assertionsAgg } : {}),
1000
+ };
1001
+ }
1002
+ /**
1003
+ * Collect a deduplicated list of schemas applied during this run. Drawn
1004
+ * from every validation result with a schema_id; dropping empties keeps
1005
+ * the list proportional to what actually ran.
1006
+ */
1007
+ function collectSchemasUsed(phases) {
1008
+ const seen = new Set();
1009
+ const out = [];
1010
+ for (const phase of phases) {
1011
+ for (const step of phase.steps) {
1012
+ for (const v of step.validations) {
1013
+ if (v.schema_id && v.schema_url && !seen.has(v.schema_id)) {
1014
+ seen.add(v.schema_id);
1015
+ out.push({ schema_id: v.schema_id, schema_url: v.schema_url });
1016
+ }
1017
+ }
1018
+ }
1019
+ }
1020
+ return out;
1021
+ }
1022
+ /**
1023
+ * Walk every response_schema validation and aggregate the strict/lenient
1024
+ * delta. Always returns a summary; `observable: false` signals "run had
1025
+ * no strict-eligible checks" (distinct from strict-clean with zero
1026
+ * findings). See issue #820 follow-up.
1027
+ *
1028
+ * `checked` counts validations with a `strict` verdict attached.
1029
+ * `passed` / `failed` partition `checked` by `strict.valid`.
1030
+ * `strict_only_failures` = #(lenient-pass ∧ strict-fail) — the agent's
1031
+ * production-readiness gap.
1032
+ * `lenient_also_failed` = #(lenient-fail ∧ strict-fail) — step already
1033
+ * broken, strict-rejection isn't new signal.
1034
+ *
1035
+ * Exported so callers post-processing a `StoryboardResult` (dashboards,
1036
+ * CI formatters) can compute the same summary over a subset of phases
1037
+ * without re-running validation.
1038
+ */
1039
+ /**
1040
+ * Flatten every `strict_only_failure` (lenient-pass ∧ strict-fail) into a
1041
+ * dashboard-friendly row list. Each row carries the step/phase context
1042
+ * needed for triage without re-walking the nested result tree:
1043
+ *
1044
+ * { phase_id, step_id, task, variant, issues }
1045
+ *
1046
+ * Exported because the ValidationResult tree is four levels deep
1047
+ * (`phases[].steps[].validations[].strict.issues[]`) and a consumer
1048
+ * seeing `strict_only_failures: 7` in the summary needs a direct path
1049
+ * to the seven offending responses. This is that path.
1050
+ *
1051
+ * Returns `[]` on runs with no strict-only failures OR no AJV coverage
1052
+ * (both cases produce zero rows). Inspect `strict_validation_summary`
1053
+ * for the total counts.
1054
+ */
1055
+ function listStrictOnlyFailures(phases) {
1056
+ const rows = [];
1057
+ for (const phase of phases) {
1058
+ for (const step of phase.steps) {
1059
+ for (const v of step.validations) {
1060
+ if (v.check !== 'response_schema')
1061
+ continue;
1062
+ if (v.strict === undefined)
1063
+ continue;
1064
+ if (v.strict.valid)
1065
+ continue;
1066
+ if (!v.passed)
1067
+ continue; // already counted by lenient path
1068
+ rows.push({
1069
+ phase_id: phase.phase_id,
1070
+ step_id: step.step_id,
1071
+ task: step.task,
1072
+ variant: v.strict.variant,
1073
+ issues: v.strict.issues ?? [],
1074
+ });
1075
+ }
1076
+ }
1077
+ }
1078
+ return rows;
1079
+ }
1080
+ function summarizeStrictValidation(phases) {
1081
+ let checked = 0;
1082
+ let passed = 0;
1083
+ let strictOnlyFailures = 0;
1084
+ for (const phase of phases) {
1085
+ for (const step of phase.steps) {
1086
+ for (const v of step.validations) {
1087
+ if (v.check !== 'response_schema' || v.strict === undefined)
1088
+ continue;
1089
+ checked++;
1090
+ if (v.strict.valid) {
1091
+ passed++;
1092
+ }
1093
+ else if (v.passed) {
1094
+ // Lenient Zod accepted this response; strict AJV rejected it.
1095
+ // That's the agent's strictness gap — the signal #820 wants.
1096
+ strictOnlyFailures++;
1097
+ }
1098
+ }
1099
+ }
1100
+ }
1101
+ const failed = checked - passed;
1102
+ return {
1103
+ observable: checked > 0,
1104
+ checked,
1105
+ passed,
1106
+ failed,
1107
+ strict_only_failures: strictOnlyFailures,
1108
+ lenient_also_failed: failed - strictOnlyFailures,
1109
+ };
1110
+ }
1111
+ // ────────────────────────────────────────────────────────────
1112
+ // runStoryboardStep: execute a single step (stateless)
1113
+ // ────────────────────────────────────────────────────────────
1114
+ /**
1115
+ * Run a single storyboard step.
1116
+ *
1117
+ * This is the core primitive for stateless, LLM-friendly execution.
1118
+ * Context is passed in and returned, enabling step-by-step orchestration.
1119
+ */
1120
+ async function runStoryboardStep(agentUrl, storyboard, stepId, options = {}) {
1121
+ (0, test_kit_1.validateTestKit)(options.test_kit);
1122
+ const client = (0, client_1.getOrCreateClient)(agentUrl, options);
1123
+ // Discover agent profile for standalone step execution. Captured so the
1124
+ // executeStep call below can thread `library_version` through to
1125
+ // shape-drift hint detection (issue #850).
1126
+ let profile;
1127
+ if (!options._client) {
1128
+ const discovered = await (0, client_1.getOrDiscoverProfile)(client, options);
1129
+ profile = discovered.profile;
1130
+ }
1131
+ else {
1132
+ profile = options._profile;
1133
+ }
1134
+ const context = { ...options.context };
1135
+ if (options.context)
1136
+ (0, context_1.forwardAliasCache)(options.context, context);
1137
+ const webhookReceiver = options.webhook_receiver
1138
+ ? await (0, webhook_receiver_1.createWebhookReceiver)({
1139
+ ...(options.webhook_receiver.mode && { mode: options.webhook_receiver.mode }),
1140
+ ...(options.webhook_receiver.host !== undefined && { host: options.webhook_receiver.host }),
1141
+ ...(options.webhook_receiver.port !== undefined && { port: options.webhook_receiver.port }),
1142
+ ...(options.webhook_receiver.public_url !== undefined && { public_url: options.webhook_receiver.public_url }),
1143
+ })
1144
+ : undefined;
1145
+ const runnerVars = (0, context_1.createRunnerVariables)({
1146
+ ...(webhookReceiver && { webhookBase: webhookReceiver.base_url }),
1147
+ });
1148
+ if (webhookReceiver)
1149
+ (0, webhook_assertions_1.armWebhookAssertions)(storyboard, runnerVars, webhookReceiver);
1150
+ // Find the step
1151
+ const allSteps = flattenSteps(storyboard);
1152
+ const found = allSteps.find(s => s.step.id === stepId);
1153
+ if (!found) {
1154
+ if (webhookReceiver)
1155
+ await webhookReceiver.close();
1156
+ throw new Error(`Step "${stepId}" not found in storyboard "${storyboard.id}". ` +
1157
+ `Available steps: ${allSteps.map(s => s.step.id).join(', ')}`);
1158
+ }
1159
+ // Seed provenance from the caller-supplied map (threaded through from a
1160
+ // previous step's result). Storyboard-level runs build this internally;
1161
+ // here the caller owns accumulation across stateless invocations.
1162
+ const contextProvenance = new Map(Object.entries(options.context_provenance ?? {}));
1163
+ const result = await executeStep(client, found.step, found.phaseId, context, allSteps, options, {
1164
+ contributions: new Set(),
1165
+ priorStepResults: new Map(),
1166
+ priorProbes: new Map(),
1167
+ agentUrl,
1168
+ webhookReceiver,
1169
+ runnerVars,
1170
+ contextProvenance,
1171
+ priorA2aEnvelopes: new Map(),
1172
+ agentLibraryVersion: profile?.library_version,
1173
+ });
1174
+ if (!options._client) {
1175
+ await (0, protocols_1.closeConnections)(options.protocol);
1176
+ }
1177
+ if (webhookReceiver)
1178
+ await webhookReceiver.close();
1179
+ return result;
1180
+ }
1181
+ async function executeStep(
1182
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- client type varies (TestClient)
1183
+ client, step, phaseId, context, allSteps, options, state) {
1184
+ // Default empty state when this function is called standalone (runStoryboardStep).
1185
+ const runState = state ?? {
1186
+ contributions: new Set(),
1187
+ priorStepResults: new Map(),
1188
+ priorProbes: new Map(),
1189
+ agentUrl: '',
1190
+ contextProvenance: new Map(),
1191
+ };
1192
+ // HTTP probe tasks bypass the MCP client entirely.
1193
+ if (probes_1.PROBE_TASKS.has(step.task)) {
1194
+ return executeProbeStep(step, phaseId, context, allSteps, options, runState);
1195
+ }
1196
+ // Webhook-assertion pseudo-tasks observe the shared receiver instead of
1197
+ // driving the agent. They never reach the MCP/A2A transport.
1198
+ if (webhook_assertions_1.WEBHOOK_ASSERTION_TASKS.has(step.task)) {
1199
+ return (0, webhook_assertions_1.executeWebhookAssertionStep)(step, phaseId, context, allSteps, options, runState);
1200
+ }
1201
+ // Resolve $test_kit.* task references before any downstream dispatch / skip checks.
1202
+ // When the reference resolves to nothing, fall back to `task_default`.
1203
+ const resolvedTask = resolveTaskName(step, options);
1204
+ if (!resolvedTask) {
1205
+ return {
1206
+ step_id: step.id,
1207
+ phase_id: phaseId,
1208
+ title: step.title,
1209
+ task: step.task,
1210
+ passed: false,
1211
+ duration_ms: 0,
1212
+ validations: [],
1213
+ context,
1214
+ error: `Step task "${step.task}" references a test-kit field that resolved to nothing and no task_default is set.`,
1215
+ extraction: { path: 'none' },
1216
+ };
1217
+ }
1218
+ const effectiveStep = resolvedTask === step.task ? step : { ...step, task: resolvedTask };
1219
+ // Check requires_tool — skip if agent doesn't have it
1220
+ if (step.requires_tool && options.agentTools && !options.agentTools.includes(step.requires_tool)) {
1221
+ const next = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
1222
+ const reason = step.requires_tool === 'comply_test_controller' ? 'missing_test_controller' : 'missing_tool';
1223
+ const detail = reason === 'missing_test_controller'
1224
+ ? `Deterministic-testing phase requires comply_test_controller; agent tools: [${(options.agentTools ?? []).join(', ')}].`
1225
+ : `Required tool "${step.requires_tool}" not advertised; agent tools: [${(options.agentTools ?? []).join(', ')}].`;
1226
+ return {
1227
+ step_id: step.id,
1228
+ phase_id: phaseId,
1229
+ title: step.title,
1230
+ task: step.task,
1231
+ passed: true,
1232
+ skipped: true,
1233
+ skip_reason: reason,
1234
+ skip: buildSkip(reason, detail),
1235
+ duration_ms: 0,
1236
+ validations: [],
1237
+ context,
1238
+ next,
1239
+ extraction: { path: 'none' },
1240
+ };
1241
+ }
1242
+ // Skip if agent doesn't implement the tool this step calls.
1243
+ if (options.agentTools && !options.agentTools.includes(effectiveStep.task)) {
1244
+ const next = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
1245
+ const detail = `Agent did not advertise tool "${effectiveStep.task}"; agent tools: [${(options.agentTools ?? []).join(', ')}].`;
1246
+ return {
1247
+ step_id: step.id,
1248
+ phase_id: phaseId,
1249
+ title: step.title,
1250
+ task: effectiveStep.task,
1251
+ passed: true,
1252
+ skipped: true,
1253
+ skip_reason: 'missing_tool',
1254
+ skip: buildSkip('missing_tool', detail),
1255
+ duration_ms: 0,
1256
+ validations: [],
1257
+ context,
1258
+ next,
1259
+ extraction: { path: 'none' },
1260
+ };
1261
+ }
1262
+ // Build request — priority (issue #820, fixture-authoritative):
1263
+ // 1. User-provided --request override
1264
+ // 2. For expect_error steps: sample_request directly (preserves intentionally invalid input)
1265
+ // 3. enrichRequest — fixture is the base, enricher fills gaps (fixture wins conflicts)
1266
+ // 4. sample_request with context injection when no enricher is registered
1267
+ // 5. Empty object (only reachable for non-mutating tasks with neither fixture nor enricher)
1268
+ let request;
1269
+ if (options.request) {
1270
+ request = { ...options.request };
1271
+ }
1272
+ else if (step.expect_error && step.sample_request) {
1273
+ request = (0, context_1.injectContext)({ ...step.sample_request }, context, runState.runnerVars);
1274
+ }
1275
+ else if ((0, request_builder_1.hasRequestEnricher)(effectiveStep.task)) {
1276
+ request = (0, request_builder_1.enrichRequest)(effectiveStep, context, options, runState.runnerVars);
1277
+ }
1278
+ else if (step.sample_request) {
1279
+ request = (0, context_1.injectContext)({ ...step.sample_request }, context, runState.runnerVars);
1280
+ }
1281
+ else {
1282
+ request = {};
1283
+ }
1284
+ // Apply explicit context_inputs on top of whatever request source was used
1285
+ if (step.context_inputs?.length) {
1286
+ request = (0, context_1.applyContextInputs)(request, step.context_inputs, context);
1287
+ }
1288
+ // Brand/account is a storyboard-run-scoped invariant: every step in a run
1289
+ // targets the same brand, so every outgoing request's brand context must
1290
+ // match the options. Enforcing this here (after builder + sample_request)
1291
+ // prevents session-key divergence across create/get/update/delete steps
1292
+ // when individual builders or sample_request YAML omit brand.
1293
+ request = applyBrandInvariant(request, options, effectiveStep.task);
1294
+ // Mutating AdCP requests require idempotency_key per spec. Storyboard
1295
+ // yamls generally omit it so authors don't have to remember it on every
1296
+ // mutating step — mint one here on the runner's behalf, matching how a
1297
+ // real buyer would operate. Suppressed when the step expects a missing-key
1298
+ // error (see `testsMissingIdempotencyKey` below) so that compliance
1299
+ // surfaces can still exercise the server's required-field check.
1300
+ request = applyIdempotencyInvariant(request, effectiveStep.task, step);
1301
+ // Detect unresolved $context placeholders — a prior step likely failed
1302
+ // and didn't produce the expected output. Skip rather than sending garbage.
1303
+ const unresolvedVars = findUnresolvedContextVars(request);
1304
+ if (unresolvedVars.length > 0 && !step.expect_error) {
1305
+ const next = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
1306
+ const detail = `Skipped: unresolved context variables from prior steps: ${unresolvedVars.join(', ')}.`;
1307
+ return {
1308
+ step_id: step.id,
1309
+ phase_id: phaseId,
1310
+ title: step.title,
1311
+ task: step.task,
1312
+ passed: false,
1313
+ skipped: true,
1314
+ skip_reason: 'prerequisite_failed',
1315
+ skip: buildSkip('prerequisite_failed', detail),
1316
+ duration_ms: 0,
1317
+ validations: [],
1318
+ context,
1319
+ error: detail,
1320
+ next,
1321
+ extraction: { path: 'none' },
1322
+ };
1323
+ }
1324
+ // Execute the task. When the step overrides auth, dispatch via the raw MCP
1325
+ // probe so we can (a) strip credentials or send arbitrary Bearer values
1326
+ // (which the SDK transport doesn't expose), and (b) capture the HTTP status
1327
+ // + `WWW-Authenticate` header for http_* validations.
1328
+ //
1329
+ // Tests for envelope validation on mutating tasks (e.g., "missing
1330
+ // idempotency_key returns INVALID_REQUEST") set `step.omit_idempotency_key`
1331
+ // to suppress both the runner's `applyIdempotencyInvariant` (above) and the
1332
+ // AdCP client's auto-inject — otherwise the SDK helpfully generates a UUID
1333
+ // and the server never sees a missing-key request. Paired flags so the two
1334
+ // layers agree; see `applyIdempotencyInvariant` for the runner-level skip.
1335
+ const testsMissingIdempotencyKey = step.omit_idempotency_key === true && (0, idempotency_1.isMutatingTask)(effectiveStep.task);
1336
+ // Defense-in-depth for the missing-key vector: when a mutating step sets
1337
+ // `omit_idempotency_key: true` and `step.auth` is unset, route via
1338
+ // `rawMcpProbe` anyway so no SDK-layer normalization can slip a key onto the
1339
+ // wire. The SDK's `skipIdempotencyAutoInject` plumbing already honors this
1340
+ // flag, but the raw-HTTP path removes the escape hatch entirely. A2A and
1341
+ // oauth stay on the SDK path — their dispatch can't be replicated here
1342
+ // (A2A uses a different envelope; oauth needs refresh semantics).
1343
+ const rawProbeHeaders = step.auth !== undefined
1344
+ ? authHeadersForStep(step.auth, options)
1345
+ : testsMissingIdempotencyKey && options.protocol !== 'a2a'
1346
+ ? defaultAuthHeadersForRawProbe(options)
1347
+ : undefined;
1348
+ const useRawProbe = rawProbeHeaders !== undefined;
1349
+ let taskResult;
1350
+ let stepResult;
1351
+ let httpResult;
1352
+ let responseRecord;
1353
+ let a2aEnvelope;
1354
+ if (useRawProbe) {
1355
+ const started = Date.now();
1356
+ try {
1357
+ const probe = await (0, probes_1.rawMcpProbe)({
1358
+ agentUrl: runState.agentUrl,
1359
+ toolName: effectiveStep.task,
1360
+ args: request,
1361
+ headers: rawProbeHeaders,
1362
+ allowPrivateIp: options.allow_http === true,
1363
+ });
1364
+ httpResult = probe.httpResult;
1365
+ taskResult = probe.taskResult;
1366
+ const durationMs = Date.now() - started;
1367
+ stepResult = {
1368
+ duration_ms: durationMs,
1369
+ passed: !httpResult.error,
1370
+ error: httpResult.error,
1371
+ };
1372
+ const filteredHeaders = filterResponseHeaders(httpResult.headers);
1373
+ responseRecord = {
1374
+ transport: 'mcp',
1375
+ payload: redactSecrets(httpResult.body),
1376
+ ...(typeof httpResult.status === 'number' ? { status: httpResult.status } : {}),
1377
+ ...(filteredHeaders && { headers: filteredHeaders }),
1378
+ duration_ms: durationMs,
1379
+ };
1380
+ }
1381
+ catch (err) {
1382
+ stepResult = {
1383
+ duration_ms: Date.now() - started,
1384
+ passed: false,
1385
+ error: err instanceof Error ? err.message : String(err),
1386
+ };
1387
+ }
1388
+ }
1389
+ else {
1390
+ // For A2A runs, wrap the SDK dispatch in `withRawResponseCapture`
1391
+ // so storyboard validations can assert on the JSON-RPC `Task`
1392
+ // envelope the seller emitted (e.g. `a2a_submitted_artifact`
1393
+ // checks `Task.state` + `artifact.metadata.adcp_task_id` placement).
1394
+ // MCP path stays unwrapped — the SDK envelope is reconstructed from
1395
+ // `taskResult` already and capture would only add overhead.
1396
+ //
1397
+ // Selection note: gate on `options.protocol === 'a2a'` because
1398
+ // that's the only signal available at this point — discovery
1399
+ // hasn't run yet in `runStoryboardStep` (the runner branches off
1400
+ // `agentTools` later). If a future "auto-detect protocol" flow
1401
+ // lands, key the capture off the negotiated transport instead.
1402
+ const captureA2a = options.protocol === 'a2a';
1403
+ let a2aCaptures;
1404
+ const dispatch = () => (0, task_map_1.executeStoryboardTask)(client, effectiveStep.task, request, {
1405
+ skipIdempotencyAutoInject: testsMissingIdempotencyKey,
1406
+ });
1407
+ const run = await (0, client_1.runStep)(step.title, effectiveStep.task, async () => {
1408
+ if (!captureA2a)
1409
+ return dispatch();
1410
+ try {
1411
+ const { result: dispatchResult, captures } = await (0, rawResponseCapture_1.withRawResponseCapture)(dispatch);
1412
+ a2aCaptures = captures;
1413
+ return dispatchResult;
1414
+ }
1415
+ catch (err) {
1416
+ // `withRawResponseCapture` attaches partial captures to the
1417
+ // thrown error so we still get the wire-shape envelope when
1418
+ // the SDK threw mid-parse (e.g. agent emitted malformed JSON).
1419
+ // Bare-throw cases (network errors, no captures attached)
1420
+ // leave `a2aCaptures` undefined and the validator self-skips.
1421
+ const partial = (0, rawResponseCapture_1.getCapturesFromError)(err);
1422
+ if (partial)
1423
+ a2aCaptures = partial;
1424
+ throw err;
1425
+ }
1426
+ });
1427
+ taskResult = run.result;
1428
+ stepResult = run.step;
1429
+ if (captureA2a && a2aCaptures) {
1430
+ a2aEnvelope = parseLastA2aMessageSendCapture(a2aCaptures);
1431
+ }
1432
+ if (taskResult) {
1433
+ responseRecord = {
1434
+ transport: options.protocol === 'a2a' ? 'a2a' : 'mcp',
1435
+ payload: redactSecrets(taskResult.data ?? taskResult.error ?? null),
1436
+ duration_ms: stepResult.duration_ms,
1437
+ };
1438
+ }
1439
+ }
1440
+ const requestRecord = {
1441
+ transport: useRawProbe ? 'mcp' : options.protocol === 'a2a' ? 'a2a' : 'mcp',
1442
+ operation: effectiveStep.task,
1443
+ payload: redactSecrets(request),
1444
+ ...(runState.agentUrl ? { url: runState.agentUrl } : {}),
1445
+ };
1446
+ // Feature-unsupported or unknown-tool errors → treat as skip
1447
+ const isUnsupported = stepResult.error?.includes('does not support:');
1448
+ const isUnknownTool = stepResult.error && /Unknown tool[:\s]/i.test(stepResult.error);
1449
+ if (!taskResult && (isUnsupported || isUnknownTool)) {
1450
+ const next = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
1451
+ const reason = isUnknownTool ? 'missing_tool' : 'not_applicable';
1452
+ const detail = isUnknownTool
1453
+ ? `Agent rejected tool "${effectiveStep.task}" as unknown: ${stepResult.error}`
1454
+ : `Agent reported feature not supported: ${stepResult.error}`;
1455
+ return {
1456
+ step_id: step.id,
1457
+ phase_id: phaseId,
1458
+ title: step.title,
1459
+ task: step.task,
1460
+ passed: true,
1461
+ skipped: true,
1462
+ skip_reason: reason,
1463
+ skip: buildSkip(reason, detail),
1464
+ duration_ms: stepResult.duration_ms,
1465
+ validations: [],
1466
+ context,
1467
+ error: stepResult.error,
1468
+ next,
1469
+ extraction: { path: 'none' },
1470
+ };
1471
+ }
1472
+ // For expect_error steps where TaskResult has no data but has an error string,
1473
+ // wrap the error string so validations have something to check against.
1474
+ if (step.expect_error && !taskResult?.data && taskResult?.error) {
1475
+ taskResult = { ...taskResult, data: { error: taskResult.error } };
1476
+ }
1477
+ // Determine pass/fail — inverted when expect_error is set
1478
+ let passed;
1479
+ if (step.expect_error) {
1480
+ // Step passes when the task fails (returns an error)
1481
+ passed = !taskResult?.success || !!stepResult.error;
1482
+ }
1483
+ else {
1484
+ passed = stepResult.passed && (taskResult?.success ?? false);
1485
+ }
1486
+ // Run validations. Resolve `$context.<key>` placeholders in `value` and
1487
+ // `allowed_values` fields so expected values can reference prior steps
1488
+ // (e.g., replay tests assert `media_buy_id === $context.initial_media_buy_id`).
1489
+ let validations = [];
1490
+ if (step.validations?.length && (taskResult || httpResult)) {
1491
+ const resolvedValidations = step.validations.map(v => {
1492
+ const resolved = { ...v };
1493
+ if (resolved.value !== undefined) {
1494
+ resolved.value = (0, context_1.injectContext)({ __v: resolved.value }, context, runState.runnerVars).__v;
1495
+ }
1496
+ if (Array.isArray(resolved.allowed_values)) {
1497
+ resolved.allowed_values = resolved.allowed_values.map(av => (0, context_1.injectContext)({ __v: av }, context, runState.runnerVars).__v);
1498
+ }
1499
+ return resolved;
1500
+ });
1501
+ const vctx = {
1502
+ taskName: effectiveStep.task,
1503
+ ...(taskResult && { taskResult }),
1504
+ ...(httpResult && { httpResult }),
1505
+ agentUrl: runState.agentUrl,
1506
+ contributions: runState.contributions,
1507
+ ...(effectiveStep.response_schema_ref && { responseSchemaRef: effectiveStep.response_schema_ref }),
1508
+ request: requestRecord,
1509
+ ...(responseRecord && { response: responseRecord }),
1510
+ storyboardContext: context,
1511
+ ...(a2aEnvelope && { a2aEnvelope }),
1512
+ ...(() => {
1513
+ // Walk back through the run's captured A2A envelopes and use
1514
+ // the most recent prior step's envelope as the comparison
1515
+ // baseline. The map preserves insertion order, so the last
1516
+ // entry is the most recent prior step's capture.
1517
+ const map = runState.priorA2aEnvelopes;
1518
+ if (!map || map.size === 0)
1519
+ return {};
1520
+ let priorStepId;
1521
+ let priorEnv;
1522
+ for (const [stepId, env] of map) {
1523
+ priorStepId = stepId;
1524
+ priorEnv = env;
1525
+ }
1526
+ return {
1527
+ ...(priorEnv && { priorA2aEnvelope: priorEnv }),
1528
+ ...(priorStepId && { priorA2aStepId: priorStepId }),
1529
+ };
1530
+ })(),
1531
+ };
1532
+ validations = (0, validations_1.runValidations)(resolvedValidations, vctx);
1533
+ }
1534
+ const allValidationsPassed = validations.every(v => v.passed);
1535
+ // Persist the captured A2A envelope keyed by step id so cross-step
1536
+ // validators (`a2a_context_continuity`) on subsequent steps can
1537
+ // compare against it. Only fires when this step actually captured
1538
+ // an envelope — probe steps, MCP steps, and capture-bypass paths
1539
+ // don't insert, so cross-step comparisons walk back to the most
1540
+ // recent A2A step automatically via insertion-order iteration.
1541
+ if (a2aEnvelope && runState.priorA2aEnvelopes) {
1542
+ runState.priorA2aEnvelopes.set(step.id, a2aEnvelope);
1543
+ }
1544
+ // Extract context from responses. Forward the alias cache so
1545
+ // `$generate:uuid_v4#<alias>` placeholders in subsequent steps resolve
1546
+ // to the same UUID as prior steps with the same alias.
1547
+ const updatedContext = { ...context };
1548
+ (0, context_1.forwardAliasCache)(context, updatedContext);
1549
+ const hasData = taskResult?.data !== undefined && taskResult?.data !== null;
1550
+ // Convention-based extraction (for non-error steps, or when expect_error succeeded)
1551
+ if (passed && hasData && taskResult) {
1552
+ const extracted = (0, context_1.extractContextWithProvenance)(effectiveStep.task, taskResult.data, step.id);
1553
+ Object.assign(updatedContext, extracted.values);
1554
+ if (runState.contextProvenance) {
1555
+ for (const [key, entry] of Object.entries(extracted.provenance)) {
1556
+ runState.contextProvenance.set(key, entry);
1557
+ }
1558
+ }
1559
+ }
1560
+ // Explicit context_outputs. `generate:` entries fire unconditionally —
1561
+ // including on failed steps — because the generated ID was already
1562
+ // determined (and may already be inline-substituted via $generate:…#<key>)
1563
+ // before the request went out. Propagating it even on failure lets the
1564
+ // next step use the same ID for a forced-completion or tasks/get follow-up.
1565
+ // `path:` entries are gated on a non-null response and skip silently when
1566
+ // data is absent. Both paths write into updatedContext and receive
1567
+ // updatedContext for alias-cache coherence — forwardAliasCache above
1568
+ // ensures the minted value from any same-step $generate:…#<key> inline
1569
+ // substitution is visible here.
1570
+ if (step.context_outputs?.length) {
1571
+ const explicit = (0, context_1.applyContextOutputsWithProvenance)(hasData && taskResult ? taskResult.data : undefined, step.context_outputs, step.id, effectiveStep.task, updatedContext);
1572
+ Object.assign(updatedContext, explicit.values);
1573
+ if (runState.contextProvenance) {
1574
+ for (const [key, entry] of Object.entries(explicit.provenance)) {
1575
+ runState.contextProvenance.set(key, entry);
1576
+ }
1577
+ }
1578
+ }
1579
+ // Emit context-value-rejected hints when the seller's error lists the
1580
+ // values it would have accepted and the rejected request value traces
1581
+ // back to a prior-step $context.* write. Non-fatal: doesn't flip
1582
+ // pass/fail; collapses "SDK bug vs seller bug" triage to one line.
1583
+ //
1584
+ // Gate fires on any step-level failure — task-level failure OR a
1585
+ // validation failure on a 200-OK response. Some sellers return 200 with
1586
+ // an advisory `errors[]` + `available:` list (success envelope with
1587
+ // warnings), and the hint is most useful on exactly that shape. Before
1588
+ // adcp-client#883 the gate was task-level only and missed schema-
1589
+ // rejected-but-200 flows.
1590
+ //
1591
+ // - Normal steps: hints fire whenever the step failed.
1592
+ // - `expect_error` steps: `passed` is inverted (true when the task
1593
+ // failed), so a genuinely-failing `expect_error` step has
1594
+ // `passed && allValidationsPassed === true`, gate stays shut —
1595
+ // expected rejections don't chatter hints by design. When the
1596
+ // validations DO fail (the caller's assertion about the error
1597
+ // shape was wrong), hints fire and can point them at the source
1598
+ // step that supplied the rejected value.
1599
+ //
1600
+ // Hints trace to context that existed BEFORE this step's own writes,
1601
+ // since the rejected value can't have come from this step's own
1602
+ // extraction.
1603
+ const stepFailed = !(passed && allValidationsPassed);
1604
+ const contextRejectionHints = stepFailed && runState.contextProvenance
1605
+ ? (0, rejection_hints_1.detectContextRejectionHints)(taskResult, request, context, runState.contextProvenance, effectiveStep.task)
1606
+ : [];
1607
+ // Shape-drift and strict-AJV hints fire on any step that has a parsed
1608
+ // payload, regardless of pass/fail — issue #935 widened the gate so
1609
+ // these structured diagnostics surface alongside the runner's existing
1610
+ // `ValidationResult.warning` prose without depending on Zod rejection.
1611
+ // Pre-process identically to validateResponseSchema: bare-array payloads
1612
+ // pass through; object payloads have the SDK-internal `_message` field
1613
+ // stripped so the detector sees what AJV does.
1614
+ const driftPayload = (() => {
1615
+ if (!hasData || !taskResult)
1616
+ return undefined;
1617
+ const raw = taskResult.data;
1618
+ if (Array.isArray(raw))
1619
+ return raw;
1620
+ if (raw && typeof raw === 'object') {
1621
+ const { _message, ...rest } = raw;
1622
+ return rest;
1623
+ }
1624
+ return raw;
1625
+ })();
1626
+ const shapeDriftHints = driftPayload === undefined
1627
+ ? []
1628
+ : (0, shape_drift_hints_1.detectShapeDriftHints)(effectiveStep.task, driftPayload, runState.agentLibraryVersion);
1629
+ const strictHints = (0, strict_validation_hints_1.detectStrictValidationHints)(effectiveStep.task, validations);
1630
+ // Same root cause MAY produce both a `shape_drift` hint and a
1631
+ // `format_mismatch` (keyword: 'type') hint — e.g. `list_creatives`
1632
+ // returning a bare array. That's intentional co-emission, not a bug:
1633
+ // shape_drift carries the fix recipe ("use listCreativesResponse() to
1634
+ // wrap"); format_mismatch carries the structured RFC 6901 pointer +
1635
+ // AJV schema_path so renderers can deep-link into the schema.
1636
+ // Complementary fix lenses on the same fault.
1637
+ const hints = [...contextRejectionHints, ...shapeDriftHints, ...strictHints];
1638
+ // Build next step preview
1639
+ const next = getNextStepPreview(step.id, allSteps, updatedContext, runState.runnerVars);
1640
+ return {
1641
+ step_id: step.id,
1642
+ phase_id: phaseId,
1643
+ title: step.title,
1644
+ task: step.task,
1645
+ passed: passed && allValidationsPassed,
1646
+ expect_error: step.expect_error,
1647
+ duration_ms: stepResult.duration_ms,
1648
+ // Legacy `response` field (new code reads `response_record`).
1649
+ // Redact in case a downstream consumer still keys off it; the
1650
+ // modern `response_record.payload` path is already redacted.
1651
+ response: redactSecrets(taskResult?.data),
1652
+ validations,
1653
+ context: updatedContext,
1654
+ ...(runState.contextProvenance &&
1655
+ runState.contextProvenance.size > 0 && {
1656
+ context_provenance: Object.fromEntries(runState.contextProvenance),
1657
+ }),
1658
+ error: step.expect_error ? undefined : truncateError(stepResult.error || taskResult?.error),
1659
+ next,
1660
+ request: requestRecord,
1661
+ ...(responseRecord && { response_record: responseRecord }),
1662
+ extraction: extractionFromTaskResult(taskResult),
1663
+ ...(hints.length > 0 && { hints }),
1664
+ };
1665
+ }
1666
+ // ────────────────────────────────────────────────────────────
1667
+ // Probe dispatch (raw HTTP tasks)
1668
+ // ────────────────────────────────────────────────────────────
1669
+ async function executeProbeStep(step, phaseId, context, allSteps, options, runState) {
1670
+ const start = Date.now();
1671
+ let httpResult;
1672
+ const probeOpts = { allowPrivateIp: options.allow_http === true };
1673
+ if (step.task === 'protected_resource_metadata') {
1674
+ httpResult = await (0, probes_1.probeProtectedResourceMetadata)(runState.agentUrl, probeOpts);
1675
+ // RFC 9728 presence semantics (adcp-client#677): a 404 means the agent is
1676
+ // honestly not advertising OAuth. Convert to a clean step skip so the
1677
+ // phase loop can cascade-skip the rest of oauth_discovery instead of
1678
+ // failing the http_status:200 validation. Any other status (including
1679
+ // 200) runs validations unchanged — an agent that serves PRM MUST serve
1680
+ // it correctly, regardless of whether the test kit also declared an
1681
+ // API key. Fetch errors (status 0) fall through to the normal failure
1682
+ // path since we can't distinguish "agent down" from "misconfigured".
1683
+ if (!httpResult.error && httpResult.status === 404) {
1684
+ httpResult.skipped = true;
1685
+ httpResult.skip_reason = 'oauth_not_advertised';
1686
+ }
1687
+ }
1688
+ else if (step.task === 'oauth_auth_server_metadata') {
1689
+ const prior = runState.priorProbes.get('protected_resource_metadata') ?? findPriorProbe(runState.priorStepResults);
1690
+ httpResult = await (0, probes_1.probeOauthAuthServerMetadata)(prior, probeOpts);
1691
+ }
1692
+ else if (step.task === 'assert_contribution') {
1693
+ // Synthetic: evaluate only through validations (any_of). No network call.
1694
+ httpResult = undefined;
1695
+ }
1696
+ else if (step.task === 'request_signing_probe') {
1697
+ httpResult = await (0, probe_dispatch_1.probeRequestSigningVector)(step.id, runState.agentUrl, options);
1698
+ }
1699
+ if (httpResult)
1700
+ runState.priorProbes.set(step.task, httpResult);
1701
+ const duration = Date.now() - start;
1702
+ const requestRecord = {
1703
+ transport: 'http',
1704
+ operation: step.task,
1705
+ payload: null,
1706
+ ...(httpResult?.url ? { url: httpResult.url } : runState.agentUrl ? { url: runState.agentUrl } : {}),
1707
+ };
1708
+ const filteredProbeHeaders = filterResponseHeaders(httpResult?.headers);
1709
+ const responseRecord = httpResult
1710
+ ? {
1711
+ transport: 'http',
1712
+ payload: redactSecrets(httpResult.body),
1713
+ status: httpResult.status,
1714
+ ...(filteredProbeHeaders && { headers: filteredProbeHeaders }),
1715
+ duration_ms: duration,
1716
+ }
1717
+ : undefined;
1718
+ // Probe may self-skip (request_signing_probe uses this for operator opt-outs
1719
+ // and capability-profile mismatches). Surface as a skipped step without
1720
+ // running validations — skip ≠ fail. The detailed reason goes on
1721
+ // `skip_reason`; the canonical spec reason goes on `skip` so contract
1722
+ // consumers see a stable enum.
1723
+ if (httpResult?.skipped) {
1724
+ const detailedReason = (httpResult.skip_reason ?? 'probe_skipped');
1725
+ const canonicalReason = types_1.DETAILED_SKIP_TO_CANONICAL[detailedReason] ?? 'not_applicable';
1726
+ const detail = httpResult.error ?? DETAILED_SKIP_DETAILS[detailedReason] ?? SKIP_DETAILS[canonicalReason];
1727
+ return {
1728
+ step_id: step.id,
1729
+ phase_id: phaseId,
1730
+ title: step.title,
1731
+ task: step.task,
1732
+ passed: true,
1733
+ skipped: true,
1734
+ skip_reason: detailedReason,
1735
+ skip: { reason: canonicalReason, detail },
1736
+ duration_ms: duration,
1737
+ response: httpResult,
1738
+ validations: [],
1739
+ context,
1740
+ next: getNextStepPreview(step.id, allSteps, context, runState.runnerVars),
1741
+ request: requestRecord,
1742
+ ...(responseRecord && { response_record: responseRecord }),
1743
+ extraction: { path: 'none', note: 'probe self-skipped' },
1744
+ };
1745
+ }
1746
+ const vctx = {
1747
+ taskName: step.task,
1748
+ httpResult,
1749
+ agentUrl: runState.agentUrl,
1750
+ contributions: runState.contributions,
1751
+ request: requestRecord,
1752
+ ...(responseRecord && { response: responseRecord }),
1753
+ storyboardContext: context,
1754
+ };
1755
+ const validations = step.validations?.length ? (0, validations_1.runValidations)(step.validations, vctx) : [];
1756
+ const allValidationsPassed = validations.every(v => v.passed);
1757
+ // For probes, the "task passed" proxy is: fetch returned without error AND
1758
+ // all validations passed. For assert_contribution (no httpResult), we lean
1759
+ // on validations alone.
1760
+ const fetchOk = httpResult ? !httpResult.error : true;
1761
+ const passed = fetchOk && allValidationsPassed;
1762
+ const extraction = httpResult
1763
+ ? httpResult.error
1764
+ ? { path: 'error' }
1765
+ : { path: 'structured_content', note: 'http-probe body parsed as JSON' }
1766
+ : { path: 'none' };
1767
+ return {
1768
+ step_id: step.id,
1769
+ phase_id: phaseId,
1770
+ title: step.title,
1771
+ task: step.task,
1772
+ passed,
1773
+ duration_ms: duration,
1774
+ response: httpResult ?? undefined,
1775
+ validations,
1776
+ context,
1777
+ error: httpResult?.error ?? (passed ? undefined : 'Probe validations failed.'),
1778
+ next: getNextStepPreview(step.id, allSteps, context, runState.runnerVars),
1779
+ request: requestRecord,
1780
+ ...(responseRecord && { response_record: responseRecord }),
1781
+ extraction,
1782
+ };
1783
+ }
1784
+ function findPriorProbe(priorStepResults) {
1785
+ // Fallback for runStoryboardStep where priorProbes isn't populated — reach
1786
+ // into the step result's response, which we set to the HttpProbeResult above.
1787
+ for (const r of priorStepResults.values()) {
1788
+ const resp = r.response;
1789
+ if (resp && typeof resp === 'object' && 'url' in resp && 'status' in resp)
1790
+ return resp;
1791
+ }
1792
+ return undefined;
1793
+ }
1794
+ /**
1795
+ * Reduce the captured fetch traffic for an A2A step into the
1796
+ * `A2ATaskEnvelope` validations consume. The A2A SDK fires multiple
1797
+ * requests per call (`/.well-known/agent-card.json` discovery on
1798
+ * fresh clients, then a `message/send` POST), and a single dispatch
1799
+ * may also poll `tasks/get` afterwards. We pick the capture whose
1800
+ * REQUEST body declares `method: 'message/send'`; if no capture
1801
+ * declares the method we fall back to the last POST with a
1802
+ * JSON-RPC-shaped body. GET captures and non-JSON bodies are
1803
+ * skipped — `undefined` here surfaces as `not_applicable` in the
1804
+ * validator, which is more useful than a garbage envelope.
1805
+ *
1806
+ * Captured response bodies pass through `redactSecrets` before
1807
+ * landing in `ValidationContext.a2aEnvelope`. The bearer-token
1808
+ * regex in `wrapFetchWithCapture` only catches `Bearer <token>`
1809
+ * substrings; AdCP-style secret-shaped fields (`api_key`,
1810
+ * `client_secret`, `access_token`) inside a DataPart payload only
1811
+ * get redacted here. Failure paths thread the envelope into
1812
+ * `ValidationResult.actual.failures[].actual` which lands in
1813
+ * persisted compliance reports — redacting at capture parse time
1814
+ * keeps that surface consistent with `responseRecord.payload`,
1815
+ * which the runner already redacts on the success path.
1816
+ */
1817
+ function parseLastA2aMessageSendCapture(captures) {
1818
+ let messageSendIdx = -1;
1819
+ let lastPostIdx = -1;
1820
+ for (let i = captures.length - 1; i >= 0; i--) {
1821
+ const cap = captures[i];
1822
+ if (!cap || cap.method !== 'POST')
1823
+ continue;
1824
+ if (lastPostIdx === -1)
1825
+ lastPostIdx = i;
1826
+ // The fetch wrapper doesn't capture the request body, so disambiguate
1827
+ // by parsing the response and checking for an A2A `Task` shape on
1828
+ // the result. `tasks/get` and `message/send` both return tasks, but
1829
+ // only `message/send` is the immediate response we want to assert
1830
+ // on for submitted-arm shape checks. When the runner adds polling,
1831
+ // we'd need request-body capture to distinguish reliably; for v0
1832
+ // the last POST is `message/send` because the SDK doesn't poll
1833
+ // synchronously after a Task with terminal state.
1834
+ if (messageSendIdx === -1) {
1835
+ const env = tryParseJsonRpcEnvelope(cap.body);
1836
+ if (env && env.result !== undefined && isTaskShape(env.result)) {
1837
+ messageSendIdx = i;
1838
+ }
1839
+ }
1840
+ }
1841
+ const idx = messageSendIdx !== -1 ? messageSendIdx : lastPostIdx;
1842
+ if (idx === -1)
1843
+ return undefined;
1844
+ const cap = captures[idx];
1845
+ const envelope = tryParseJsonRpcEnvelope(cap.body);
1846
+ if (!envelope)
1847
+ return undefined;
1848
+ // `envelope.result` mirrors the JSON-RPC envelope as observed —
1849
+ // present when the response carried a `result`, absent when it
1850
+ // carried `error`. The convenience `result` field at the top level
1851
+ // coalesces undefined to `null` so validators reading the typed
1852
+ // `A2ATaskEnvelope.result` get a stable shape; the inner
1853
+ // `envelope.result` keeps presence-of-key fidelity for validators
1854
+ // that need to distinguish "result was null" from "result was
1855
+ // omitted". Both paths run through `redactSecrets`.
1856
+ const redactedResult = envelope.result !== undefined ? redactSecrets(envelope.result) : null;
1857
+ return {
1858
+ result: redactedResult,
1859
+ envelope: {
1860
+ ...(envelope.jsonrpc !== undefined && { jsonrpc: envelope.jsonrpc }),
1861
+ ...(envelope.id !== undefined && { id: envelope.id }),
1862
+ ...(envelope.result !== undefined && { result: redactedResult }),
1863
+ ...(envelope.error !== undefined && { error: redactSecrets(envelope.error) }),
1864
+ },
1865
+ http_status: cap.status,
1866
+ };
1867
+ }
1868
+ function tryParseJsonRpcEnvelope(body) {
1869
+ let parsed;
1870
+ try {
1871
+ parsed = JSON.parse(body);
1872
+ }
1873
+ catch {
1874
+ return undefined;
1875
+ }
1876
+ if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed))
1877
+ return undefined;
1878
+ const envelope = parsed;
1879
+ if (envelope.jsonrpc !== '2.0')
1880
+ return undefined;
1881
+ if (envelope.result === undefined && envelope.error === undefined)
1882
+ return undefined;
1883
+ return envelope;
1884
+ }
1885
+ function isTaskShape(result) {
1886
+ return (result != null &&
1887
+ typeof result === 'object' &&
1888
+ !Array.isArray(result) &&
1889
+ result.kind === 'task');
1890
+ }
1891
+ // ────────────────────────────────────────────────────────────
1892
+ // Phase / step skip predicates
1893
+ // ────────────────────────────────────────────────────────────
1894
+ /**
1895
+ * Evaluate a phase's `skip_if` expression against the runtime options. Only
1896
+ * a tiny grammar is supported today; unknown expressions fail closed (phase runs).
1897
+ */
1898
+ function shouldSkipPhase(phase, options) {
1899
+ const expr = phase.skip_if?.trim();
1900
+ if (!expr)
1901
+ return false;
1902
+ const match = /^(!?)test_kit\.([a-zA-Z0-9_.]+)$/.exec(expr);
1903
+ if (!match)
1904
+ return false; // unknown grammar → run the phase
1905
+ const negated = match[1] === '!';
1906
+ const path = match[2].split('.');
1907
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- dynamic test-kit shape
1908
+ let value = options.test_kit;
1909
+ for (const segment of path) {
1910
+ if (value == null || typeof value !== 'object') {
1911
+ value = undefined;
1912
+ break;
1913
+ }
1914
+ value = value[segment];
1915
+ }
1916
+ const truthy = Boolean(value);
1917
+ return negated ? !truthy : truthy;
1918
+ }
1919
+ /**
1920
+ * Resolve a `$test_kit.<path>` task reference against the runtime options.
1921
+ * Falls back to `step.task_default`. Returns undefined when neither yields a string.
1922
+ */
1923
+ function resolveTaskName(step, options) {
1924
+ if (!step.task.startsWith('$test_kit.'))
1925
+ return step.task;
1926
+ const path = step.task.slice('$test_kit.'.length).split('.');
1927
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- dynamic test-kit shape
1928
+ let value = options.test_kit;
1929
+ for (const segment of path) {
1930
+ if (value == null || typeof value !== 'object') {
1931
+ value = undefined;
1932
+ break;
1933
+ }
1934
+ value = value[segment];
1935
+ }
1936
+ if (typeof value === 'string' && value.length > 0)
1937
+ return value;
1938
+ return step.task_default;
1939
+ }
1940
+ /**
1941
+ * Build headers for the raw MCP probe when a step needs raw dispatch without
1942
+ * an explicit `auth` override (defense-in-depth for `omit_idempotency_key`).
1943
+ * Returns `undefined` for `oauth` so the caller falls back to the SDK path —
1944
+ * refreshable-token semantics can't be replicated here and the SDK honors
1945
+ * `skipIdempotencyAutoInject` on that path anyway.
1946
+ */
1947
+ function defaultAuthHeadersForRawProbe(options) {
1948
+ // Reject control chars and non-printable ASCII. Without this, undici's header
1949
+ // validator throws a message that includes the offending value — landing
1950
+ // secrets in logs. Validate raw inputs before encoding so the field name in
1951
+ // the error identifies which input to fix without echoing the value.
1952
+ const assertSafe = (value, field) => {
1953
+ if (/[\r\n]|[^\x20-\x7E]/.test(value)) {
1954
+ throw new Error(`${field} contains invalid characters (control chars or non-printable ASCII)`);
1955
+ }
1956
+ };
1957
+ const headers = {};
1958
+ if (options.auth) {
1959
+ if (options.auth.type === 'bearer') {
1960
+ if (!options.auth.token)
1961
+ throw new Error('options.auth.token is required for bearer auth');
1962
+ assertSafe(options.auth.token, 'options.auth.token');
1963
+ headers.authorization = `Bearer ${options.auth.token}`;
1964
+ }
1965
+ else if (options.auth.type === 'basic') {
1966
+ // RFC 7617 bans `:` in the userid — a colon would decode ambiguously on
1967
+ // the server. Fail loudly rather than silently producing a mangled header.
1968
+ if (options.auth.username.includes(':')) {
1969
+ throw new Error('options.auth.username must not contain colon (RFC 7617)');
1970
+ }
1971
+ assertSafe(options.auth.username, 'options.auth.username');
1972
+ assertSafe(options.auth.password, 'options.auth.password');
1973
+ const encoded = Buffer.from(`${options.auth.username}:${options.auth.password}`).toString('base64');
1974
+ headers.authorization = `Basic ${encoded}`;
1975
+ }
1976
+ else {
1977
+ return undefined;
1978
+ }
1979
+ }
1980
+ // Match SDK header casing so a raw-probe request is byte-indistinguishable
1981
+ // from an SDK-shaped one at the transport boundary. HTTP is case-insensitive;
1982
+ // this is purely for parity with capture/diff tooling.
1983
+ if (options.test_session_id) {
1984
+ assertSafe(options.test_session_id, 'options.test_session_id');
1985
+ headers['X-Test-Session-ID'] = options.test_session_id;
1986
+ }
1987
+ if (options.userAgent) {
1988
+ assertSafe(options.userAgent, 'options.userAgent');
1989
+ headers['User-Agent'] = options.userAgent;
1990
+ }
1991
+ return headers;
1992
+ }
1993
+ /**
1994
+ * Translate a `StepAuthDirective` into HTTP headers for the raw MCP probe.
1995
+ * - `'none'` returns an empty object and the probe sends no `Authorization`.
1996
+ * - `api_key` / `oauth_bearer` resolve the value from `value`, `from_test_kit`,
1997
+ * or `value_strategy` — in that order — and produce `Authorization: Bearer <value>`.
1998
+ */
1999
+ function authHeadersForStep(directive, options) {
2000
+ if (directive === 'none')
2001
+ return {};
2002
+ let value;
2003
+ if ('value' in directive && directive.value) {
2004
+ value = directive.value;
2005
+ }
2006
+ else if ('from_test_kit' in directive && directive.from_test_kit) {
2007
+ value = options.test_kit?.auth?.api_key;
2008
+ }
2009
+ else if ('value_strategy' in directive && directive.value_strategy) {
2010
+ if (directive.value_strategy === 'random_invalid')
2011
+ value = (0, probes_1.generateRandomInvalidApiKey)();
2012
+ else if (directive.value_strategy === 'random_invalid_jwt')
2013
+ value = (0, probes_1.generateRandomInvalidJwt)();
2014
+ }
2015
+ if (!value)
2016
+ return {};
2017
+ // Reject CR/LF/NUL and non-printable ASCII — a test-kit key with stray
2018
+ // whitespace would otherwise crash undici's header validator and the raw
2019
+ // exception (containing the secret) lands in the serialized compliance
2020
+ // report. Fail loudly with a non-echoing error instead.
2021
+ if (/[\r\n\x00]|[^\x20-\x7E]/.test(value)) {
2022
+ throw new Error('test_kit.auth.api_key contains invalid characters (control chars or non-printable ASCII)');
2023
+ }
2024
+ return { authorization: `Bearer ${value}` };
2025
+ }
2026
+ /**
2027
+ * Evaluate a step's `contributes_if` expression. Grammar:
2028
+ * - `"prior_step.<step_id>.passed"` — prior step passed
2029
+ * Unknown expressions → false (contribution does NOT fire).
2030
+ */
2031
+ function evalContributesIf(expr, priorStepResults) {
2032
+ if (!expr)
2033
+ return true;
2034
+ const match = /^prior_step\.([A-Za-z0-9_]+)\.passed$/.exec(expr.trim());
2035
+ if (!match)
2036
+ return false;
2037
+ const stepId = match[1];
2038
+ const prior = priorStepResults.get(stepId);
2039
+ return !!prior?.passed && !prior.skipped;
2040
+ }
2041
+ // ────────────────────────────────────────────────────────────
2042
+ // Brand/account invariant
2043
+ // ────────────────────────────────────────────────────────────
2044
+ /**
2045
+ * Force every outgoing request onto the storyboard's brand context.
2046
+ *
2047
+ * Sellers that scope session state by brand (spec-required for multi-tenant
2048
+ * isolation) derive a session key from `brand.domain` — or, when brand is
2049
+ * absent, from `account.brand.domain`. If any step in a run targets a
2050
+ * different brand, it lands in a different session and can't see state
2051
+ * created by earlier steps.
2052
+ *
2053
+ * This helper runs after builder / sample_request resolution and writes the
2054
+ * run-scoped brand into the addressing forms the tool's schema allows:
2055
+ *
2056
+ * - Top-level `brand` — only when the tool's request schema declares it
2057
+ * (e.g. `get_products`, `create_media_buy`, signal tools). Governance
2058
+ * tools like `sync_plans` do not declare `brand` at the request root
2059
+ * (brand belongs inside each `Plan` object) — injecting it would fail
2060
+ * the framework's strict AJV validation (#940).
2061
+ * - `account.brand` — merged into an existing `account` object only when
2062
+ * it uses the natural-key variant (`{brand, operator, sandbox?}`). The
2063
+ * `{account_id}` variant is closed (`additionalProperties: false`); merging
2064
+ * `brand` into it produces a payload that matches neither `oneOf` branch
2065
+ * and is rejected by AJV strict request validation. Detect the natural-key
2066
+ * variant by looking for an existing `brand` or `operator` key.
2067
+ * - Synthetic `account` — constructed only when the request has no
2068
+ * `account` AND the tool's schema declares `account` (e.g. `get_media_buys`,
2069
+ * `list_creatives`). Tools like `sync_plans` that declare neither
2070
+ * `brand` nor `account` at the root are left unchanged.
2071
+ *
2072
+ * When `taskName` is omitted or the schema is unavailable (not synced yet),
2073
+ * the function fails open and injects as before. Schema checks use raw JSON
2074
+ * reads, not AJV internals.
2075
+ */
2076
+ function applyBrandInvariant(request, options, taskName) {
2077
+ // Only force the invariant when the caller has actually supplied a brand.
2078
+ // Storyboards that don't exercise brand-scoped tools (e.g. security
2079
+ // probes) legitimately run without one and should pass through unchanged.
2080
+ if (!options.brand && !options.brand_manifest)
2081
+ return request;
2082
+ const brand = (0, client_2.resolveBrand)(options);
2083
+ // Gate brand/account injection on the tool's request schema. Tools that
2084
+ // declare `additionalProperties: false` without listing the field will fail
2085
+ // the framework's strict AJV validator if we inject it (#940). Fails open
2086
+ // when taskName is absent or the schema isn't available.
2087
+ const topBrandOk = !taskName || (0, schema_loader_1.schemaAllowsTopLevelField)(taskName, 'brand');
2088
+ const topAccountOk = !taskName || (0, schema_loader_1.schemaAllowsTopLevelField)(taskName, 'account');
2089
+ const result = { ...request };
2090
+ if (topBrandOk)
2091
+ result.brand = brand;
2092
+ if ('account' in request) {
2093
+ // Caller sent an account — merge brand in only when it's a plain object
2094
+ // using AccountReference's natural-key variant (`{brand, operator, sandbox?}`).
2095
+ // The `{account_id}` variant is a closed object; merging `brand` would
2096
+ // produce a payload that matches neither `oneOf` branch under strict AJV.
2097
+ // Leave non-object values (null, array) and `{account_id}`-only payloads
2098
+ // alone so intentionally narrow or malformed requests aren't silently
2099
+ // "corrected."
2100
+ const existingAccount = request.account;
2101
+ if (existingAccount && typeof existingAccount === 'object' && !Array.isArray(existingAccount)) {
2102
+ const acct = existingAccount;
2103
+ const isNaturalKeyVariant = 'brand' in acct || 'operator' in acct;
2104
+ if (isNaturalKeyVariant) {
2105
+ result.account = { ...acct, brand };
2106
+ }
2107
+ }
2108
+ }
2109
+ else if (topAccountOk) {
2110
+ // No account on the request — construct one so tools whose schema
2111
+ // declares `account` but not top-level `brand` (e.g. get_media_buys,
2112
+ // list_creatives) still carry the run-scoped brand on the wire.
2113
+ result.account = (0, client_2.resolveAccount)(options);
2114
+ }
2115
+ return result;
2116
+ }
2117
+ /**
2118
+ * Mint an `idempotency_key` for mutating storyboard requests when one wasn't
2119
+ * supplied. Storyboard `sample_request` blocks generally omit it; the runner
2120
+ * fills it in so the server's required-field check doesn't short-circuit the
2121
+ * handler under test, including on `expect_error` steps that name specific
2122
+ * failure modes (GOVERNANCE_DENIED, UNAUTHORIZED, brand_mismatch, etc.).
2123
+ *
2124
+ * Skipped when:
2125
+ * - `step.omit_idempotency_key === true` — the scenario is explicitly
2126
+ * exercising the server's missing-key rejection path.
2127
+ * - the task isn't mutating per {@link MUTATING_TASKS}.
2128
+ * - the request already carries a key — typically a
2129
+ * `$generate:uuid_v4#alias` the context injector has resolved to a
2130
+ * concrete UUID for replay scenarios, or a BYOK key supplied inline.
2131
+ */
2132
+ function applyIdempotencyInvariant(request, taskName, step) {
2133
+ if (step.omit_idempotency_key === true)
2134
+ return request;
2135
+ if (!(0, idempotency_1.isMutatingTask)(taskName))
2136
+ return request;
2137
+ if (typeof request.idempotency_key === 'string' && request.idempotency_key.length > 0)
2138
+ return request;
2139
+ return { ...request, idempotency_key: (0, idempotency_1.generateIdempotencyKey)() };
2140
+ }
2141
+ // ────────────────────────────────────────────────────────────
2142
+ // Helpers
2143
+ // ────────────────────────────────────────────────────────────
2144
+ const MAX_ERROR_LENGTH = 2000;
2145
+ function truncateError(error) {
2146
+ if (!error)
2147
+ return undefined;
2148
+ return error.length > MAX_ERROR_LENGTH ? error.slice(0, MAX_ERROR_LENGTH) + '...[truncated]' : error;
2149
+ }
2150
+ /**
2151
+ * Find any "$context.xxx" strings that weren't resolved during injection.
2152
+ */
2153
+ function findUnresolvedContextVars(obj) {
2154
+ const vars = [];
2155
+ const walk = (val) => {
2156
+ if (typeof val === 'string') {
2157
+ const match = val.match(/^\$context\.(\w+)$/);
2158
+ if (match?.[1])
2159
+ vars.push(match[1]);
2160
+ }
2161
+ else if (Array.isArray(val)) {
2162
+ val.forEach(walk);
2163
+ }
2164
+ else if (val !== null && typeof val === 'object') {
2165
+ Object.values(val).forEach(walk);
2166
+ }
2167
+ };
2168
+ walk(obj);
2169
+ return vars;
2170
+ }
2171
+ function flattenSteps(storyboard) {
2172
+ const result = [];
2173
+ let index = 0;
2174
+ for (const phase of storyboard.phases) {
2175
+ for (const step of phase.steps) {
2176
+ result.push({ step, phaseId: phase.id, globalIndex: index++ });
2177
+ }
2178
+ }
2179
+ return result;
2180
+ }
2181
+ function getNextStepPreview(currentStepId, allSteps, context, runnerVars) {
2182
+ const currentIdx = allSteps.findIndex(s => s.step.id === currentStepId);
2183
+ if (currentIdx === -1 || currentIdx >= allSteps.length - 1)
2184
+ return undefined;
2185
+ const nextFlat = allSteps[currentIdx + 1];
2186
+ if (!nextFlat)
2187
+ return undefined;
2188
+ const nextStep = nextFlat.step;
2189
+ // Inject context into the next step's sample_request for preview
2190
+ const previewRequest = nextStep.sample_request
2191
+ ? (0, context_1.injectContext)({ ...nextStep.sample_request }, context, runnerVars)
2192
+ : undefined;
2193
+ return {
2194
+ step_id: nextStep.id,
2195
+ phase_id: nextFlat.phaseId,
2196
+ title: nextStep.title,
2197
+ task: nextStep.task,
2198
+ narrative: nextStep.narrative,
2199
+ expected: nextStep.expected,
2200
+ sample_request: previewRequest,
2201
+ };
2202
+ }
2203
+ /**
2204
+ * Build a dispatcher that picks an (agent URL, client) pair per step.
2205
+ *
2206
+ * Single-URL runs always return the same assignment. Multi-URL runs use
2207
+ * round-robin — step N hits `clients[(N + startOffset) % N_urls]`.
2208
+ * Deterministic and reproducible for bug reports.
2209
+ *
2210
+ * `startOffset` lets the `multi-pass` strategy run the same storyboard with
2211
+ * the dispatcher starting at a different replica each pass so write→read
2212
+ * pairs separated by an even number of stateful steps get exercised
2213
+ * cross-replica on at least one pass.
2214
+ */
2215
+ function createDispatcher(agentUrls, clients, _strategy, startOffset = 0) {
2216
+ let counter = startOffset;
2217
+ return {
2218
+ nextFor(_step) {
2219
+ const idx = ((counter % agentUrls.length) + agentUrls.length) % agentUrls.length;
2220
+ counter++;
2221
+ return {
2222
+ client: clients[idx],
2223
+ agentUrl: agentUrls[idx],
2224
+ instanceIndex: idx,
2225
+ };
2226
+ },
2227
+ };
2228
+ }
2229
+ const HORIZONTAL_SCALING_DOCS_URL = 'https://adcontextprotocol.org/docs/building/validate-your-agent#verifying-cross-instance-state';
2230
+ const NOT_FOUND_PATTERN = /not[_ ]found|not-found|\b404\b/i;
2231
+ // Agent-controlled text (error messages, response payloads) lands in terminal
2232
+ // output. Strip C0/C1 control chars so a hostile agent returning
2233
+ // `\x1b[2J\x1b[H` (clear screen) or `\r` (overwrite prior line) can't mangle
2234
+ // CI logs or forge terminal state. Tabs and newlines are preserved.
2235
+ // The cap bounds JSON-stringification cost if an agent returns an enormous
2236
+ // or deeply-nested response body.
2237
+ const MAX_ATTRIBUTION_SNIPPET = 512;
2238
+ function sanitizeAgentText(text) {
2239
+ return text.replace(/[\x00-\x08\x0b-\x1f\x7f-\x9f]/g, '').slice(0, MAX_ATTRIBUTION_SNIPPET);
2240
+ }
2241
+ /**
2242
+ * Detect the canonical horizontal-scaling failure signature on a step result.
2243
+ *
2244
+ * Reads structured fields the runner commonly populates (error string,
2245
+ * nested response.error/code/message/status) rather than regex-matching the
2246
+ * full stringified response — structured lookup is cheaper, resistant to an
2247
+ * agent smuggling "NOT_FOUND" into an unrelated field to falsely trigger the
2248
+ * canonical wording, and doesn't blow up on circular or oversized payloads.
2249
+ */
2250
+ function isNotFoundSignature(result) {
2251
+ const candidates = [result.error];
2252
+ const resp = result.response;
2253
+ if (resp && typeof resp === 'object' && !Array.isArray(resp)) {
2254
+ candidates.push(resp.error, resp.code, resp.message, resp.status, resp.status_code);
2255
+ }
2256
+ for (const c of candidates) {
2257
+ if (typeof c === 'string' && NOT_FOUND_PATTERN.test(c))
2258
+ return true;
2259
+ if (typeof c === 'number' && c === 404)
2260
+ return true;
2261
+ }
2262
+ return false;
2263
+ }
2264
+ /**
2265
+ * Mutate a failed step result to include cross-instance attribution.
2266
+ *
2267
+ * In multi-instance mode any step failure is worth attributing because the
2268
+ * failure signature may not be NOT_FOUND — it can surface as 500, an empty
2269
+ * array, PERMISSION_DENIED, or stale status. Attribution always emits:
2270
+ * - which replica served this step and the immediate prior stateful write
2271
+ * - a replica→step map for pattern-matching in CI logs
2272
+ * - a single-replica repro command
2273
+ * When the signature matches the canonical horizontal-scaling case (prior
2274
+ * write on A, read fails on B with NOT_FOUND), the wording mirrors the
2275
+ * protocol docs verbatim so developers pattern-match the page they'll
2276
+ * eventually click through to.
2277
+ */
2278
+ function annotateMultiInstanceFailure(result, storyboard, priorResults) {
2279
+ const currentInstance = result.agent_index;
2280
+ const currentUrl = result.agent_url;
2281
+ if (!currentInstance || !currentUrl)
2282
+ return;
2283
+ // Lookup stateful flag on step defs — needed to identify "prior writes".
2284
+ const stepDefs = new Map();
2285
+ for (const phase of storyboard.phases) {
2286
+ for (const s of phase.steps)
2287
+ stepDefs.set(s.id, s);
2288
+ }
2289
+ const priorCrossInstanceWrite = [...priorResults].reverse().find(prior => {
2290
+ if (!prior.passed || prior.skipped)
2291
+ return false;
2292
+ if (!prior.agent_index || prior.agent_index === currentInstance)
2293
+ return false;
2294
+ return stepDefs.get(prior.step_id)?.stateful === true;
2295
+ });
2296
+ const replicaMap = priorResults
2297
+ .filter(r => !r.skipped && r.agent_index)
2298
+ .map(r => ` [#${r.agent_index}] ${r.step_id} — ${r.passed ? 'ok' : 'FAIL'}`)
2299
+ .join('\n');
2300
+ const lines = [];
2301
+ if (priorCrossInstanceWrite) {
2302
+ const writerIdx = priorCrossInstanceWrite.agent_index;
2303
+ const writerUrl = priorCrossInstanceWrite.agent_url;
2304
+ // Wording deliberately mirrors the failure example in the protocol docs
2305
+ // ("<write> on replica A returned …; <read> on replica B returned NOT_FOUND;
2306
+ // → Brand-scoped state is not shared across replicas.") so CI readers
2307
+ // pattern-match the page they'll click through to.
2308
+ lines.push(`${priorCrossInstanceWrite.step_id} on replica [#${writerIdx}] (${writerUrl}) succeeded.`);
2309
+ lines.push(`${result.step_id} on replica [#${currentInstance}] (${currentUrl}) failed${isNotFoundSignature(result) ? ' with NOT_FOUND' : ''}.`);
2310
+ lines.push('→ Brand-scoped state is not shared across replicas.');
2311
+ lines.push(`See: ${HORIZONTAL_SCALING_DOCS_URL}`);
2312
+ }
2313
+ else {
2314
+ lines.push(`Multi-instance failure on replica [#${currentInstance}] (${currentUrl}). ` +
2315
+ `No prior cross-replica stateful write found — the failure may be intrinsic to this replica.`);
2316
+ }
2317
+ if (replicaMap) {
2318
+ lines.push('Replica → step map:');
2319
+ lines.push(replicaMap);
2320
+ }
2321
+ lines.push(`Reproduce single-replica: adcp storyboard run ${currentUrl} ${storyboard.id}`);
2322
+ // Agent-controlled text goes in the base line; control chars are stripped
2323
+ // so a hostile agent can't forge terminal escape sequences in CI output.
2324
+ const base = sanitizeAgentText(result.error ?? 'Step failed');
2325
+ result.error = `${base}\n\n${lines.join('\n')}`;
2326
+ }
2327
+ /**
2328
+ * Get a preview of the first step in a storyboard (for showing what will happen).
2329
+ *
2330
+ * `{{runner.*}}` tokens are passed through unchanged since no receiver is
2331
+ * bound at preview time. They'll resolve when the step actually runs.
2332
+ */
2333
+ function getFirstStepPreview(storyboard, context = {}) {
2334
+ const firstPhase = storyboard.phases[0];
2335
+ if (!firstPhase?.steps[0])
2336
+ return undefined;
2337
+ const step = firstPhase.steps[0];
2338
+ const previewRequest = step.sample_request ? (0, context_1.injectContext)({ ...step.sample_request }, context) : undefined;
2339
+ return {
2340
+ step_id: step.id,
2341
+ phase_id: firstPhase.id,
2342
+ title: step.title,
2343
+ task: step.task,
2344
+ narrative: step.narrative,
2345
+ expected: step.expected,
2346
+ sample_request: previewRequest,
2347
+ };
2348
+ }
2349
+ //# sourceMappingURL=runner.js.map