@adcp/sdk 6.9.0 → 6.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/bin/adcp.js +285 -5
  2. package/compliance/cache/3.0.6.previous/domains/brand/index.yaml +163 -0
  3. package/compliance/cache/3.0.6.previous/domains/creative/index.yaml +412 -0
  4. package/compliance/cache/3.0.6.previous/domains/governance/index.yaml +683 -0
  5. package/compliance/cache/3.0.6.previous/domains/media-buy/creative-reception.yaml +247 -0
  6. package/compliance/cache/3.0.6.previous/domains/media-buy/index.yaml +769 -0
  7. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  8. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  9. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  10. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  11. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  12. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  13. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  14. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  15. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  16. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  17. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  18. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  19. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  20. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
  21. package/compliance/cache/3.0.6.previous/domains/media-buy/state-machine.yaml +442 -0
  22. package/compliance/cache/3.0.6.previous/domains/signals/index.yaml +266 -0
  23. package/compliance/cache/3.0.6.previous/domains/sponsored-intelligence/index.yaml +256 -0
  24. package/compliance/cache/3.0.6.previous/index.json +324 -0
  25. package/compliance/cache/3.0.6.previous/protocols/brand/index.yaml +163 -0
  26. package/compliance/cache/3.0.6.previous/protocols/creative/index.yaml +412 -0
  27. package/compliance/cache/3.0.6.previous/protocols/governance/index.yaml +683 -0
  28. package/compliance/cache/3.0.6.previous/protocols/media-buy/creative-reception.yaml +247 -0
  29. package/compliance/cache/3.0.6.previous/protocols/media-buy/index.yaml +769 -0
  30. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  31. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  32. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  33. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  34. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  35. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  36. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  37. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  38. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  39. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  40. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  41. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  42. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  43. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  44. package/compliance/cache/3.0.6.previous/protocols/media-buy/state-machine.yaml +442 -0
  45. package/compliance/cache/3.0.6.previous/protocols/signals/index.yaml +266 -0
  46. package/compliance/cache/3.0.6.previous/protocols/sponsored-intelligence/index.yaml +256 -0
  47. package/compliance/cache/3.0.6.previous/specialisms/audience-sync/index.yaml +280 -0
  48. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/index.yaml +350 -0
  49. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  50. package/compliance/cache/3.0.6.previous/specialisms/collection-lists/index.yaml +359 -0
  51. package/compliance/cache/3.0.6.previous/specialisms/content-standards/index.yaml +572 -0
  52. package/compliance/cache/3.0.6.previous/specialisms/creative-ad-server/index.yaml +383 -0
  53. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
  54. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/index.yaml +746 -0
  55. package/compliance/cache/3.0.6.previous/specialisms/creative-template/index.yaml +413 -0
  56. package/compliance/cache/3.0.6.previous/specialisms/governance-aware-seller/index.yaml +136 -0
  57. package/compliance/cache/3.0.6.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
  58. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
  59. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/index.yaml +330 -0
  60. package/compliance/cache/3.0.6.previous/specialisms/property-lists/index.yaml +482 -0
  61. package/compliance/cache/3.0.6.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
  62. package/compliance/cache/3.0.6.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
  63. package/compliance/cache/3.0.6.previous/specialisms/sales-guaranteed/index.yaml +504 -0
  64. package/compliance/cache/3.0.6.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
  65. package/compliance/cache/3.0.6.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
  66. package/compliance/cache/3.0.6.previous/specialisms/sales-social/index.yaml +584 -0
  67. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/index.yaml +415 -0
  68. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  69. package/compliance/cache/3.0.6.previous/specialisms/signal-owned/index.yaml +316 -0
  70. package/compliance/cache/3.0.6.previous/test-kits/acme-outdoor.yaml +210 -0
  71. package/compliance/cache/3.0.6.previous/test-kits/bistro-oranje.yaml +126 -0
  72. package/compliance/cache/3.0.6.previous/test-kits/nova-motors.yaml +262 -0
  73. package/compliance/cache/3.0.6.previous/test-kits/osei-natural.yaml +126 -0
  74. package/compliance/cache/3.0.6.previous/test-kits/signed-requests-runner.yaml +155 -0
  75. package/compliance/cache/3.0.6.previous/test-kits/substitution-observer-runner.yaml +690 -0
  76. package/compliance/cache/3.0.6.previous/test-kits/summit-foods.yaml +125 -0
  77. package/compliance/cache/3.0.6.previous/test-kits/webhook-receiver-runner.yaml +265 -0
  78. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  79. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
  80. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  81. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  82. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  83. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  84. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  85. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  86. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  87. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  88. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  89. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/README.md +219 -0
  90. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/canonicalization.json +241 -0
  91. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/keys.json +60 -0
  92. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  93. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  94. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  95. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  96. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  97. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  98. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  99. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  100. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  101. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  102. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  103. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  104. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  105. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  106. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  107. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  108. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  109. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  110. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  111. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  112. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  113. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  114. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  115. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  116. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  117. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  118. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  119. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  120. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  121. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  122. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  123. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  124. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  125. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  126. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  127. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  128. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  129. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  130. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  131. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/README.md +211 -0
  132. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/keys.json +61 -0
  133. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  134. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  135. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  136. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  137. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  138. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  139. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  140. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  141. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  142. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  143. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  144. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  145. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  146. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  147. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  148. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  149. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  150. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  151. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  152. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  153. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  154. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  155. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  156. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  157. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  158. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  159. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  160. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  161. package/compliance/cache/3.0.6.previous/universal/capability-discovery.yaml +125 -0
  162. package/compliance/cache/3.0.6.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
  163. package/compliance/cache/3.0.6.previous/universal/content-standards-pagination-integrity.yaml +326 -0
  164. package/compliance/cache/3.0.6.previous/universal/deterministic-testing.yaml +1343 -0
  165. package/compliance/cache/3.0.6.previous/universal/error-compliance.yaml +474 -0
  166. package/compliance/cache/3.0.6.previous/universal/fictional-entities.yaml +307 -0
  167. package/compliance/cache/3.0.6.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
  168. package/compliance/cache/3.0.6.previous/universal/get-signals-pagination-integrity.yaml +211 -0
  169. package/compliance/cache/3.0.6.previous/universal/idempotency.yaml +593 -0
  170. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
  171. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
  172. package/compliance/cache/3.0.6.previous/universal/pagination-integrity.yaml +263 -0
  173. package/compliance/cache/3.0.6.previous/universal/property-lists-pagination-integrity.yaml +307 -0
  174. package/compliance/cache/3.0.6.previous/universal/runner-output-contract.yaml +358 -0
  175. package/compliance/cache/3.0.6.previous/universal/schema-validation.yaml +526 -0
  176. package/compliance/cache/3.0.6.previous/universal/security.yaml +431 -0
  177. package/compliance/cache/3.0.6.previous/universal/signed-requests.yaml +205 -0
  178. package/compliance/cache/3.0.6.previous/universal/storyboard-schema.yaml +1176 -0
  179. package/compliance/cache/3.0.6.previous/universal/v3-envelope-integrity.yaml +106 -0
  180. package/compliance/cache/3.0.6.previous/universal/webhook-emission.yaml +337 -0
  181. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  182. package/dist/lib/server/create-adcp-server.d.ts +33 -0
  183. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  184. package/dist/lib/server/create-adcp-server.js +127 -1
  185. package/dist/lib/server/create-adcp-server.js.map +1 -1
  186. package/dist/lib/server/credential-policy.d.ts +221 -0
  187. package/dist/lib/server/credential-policy.d.ts.map +1 -0
  188. package/dist/lib/server/credential-policy.js +260 -0
  189. package/dist/lib/server/credential-policy.js.map +1 -0
  190. package/dist/lib/server/dynamic-registry.d.ts +219 -0
  191. package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
  192. package/dist/lib/server/dynamic-registry.js +245 -0
  193. package/dist/lib/server/dynamic-registry.js.map +1 -0
  194. package/dist/lib/server/index.d.ts +8 -0
  195. package/dist/lib/server/index.d.ts.map +1 -1
  196. package/dist/lib/server/index.js +15 -4
  197. package/dist/lib/server/index.js.map +1 -1
  198. package/dist/lib/server/operational-platform.d.ts +239 -0
  199. package/dist/lib/server/operational-platform.d.ts.map +1 -0
  200. package/dist/lib/server/operational-platform.js +94 -0
  201. package/dist/lib/server/operational-platform.js.map +1 -0
  202. package/dist/lib/server/wire-safe.d.ts +211 -0
  203. package/dist/lib/server/wire-safe.d.ts.map +1 -0
  204. package/dist/lib/server/wire-safe.js +231 -0
  205. package/dist/lib/server/wire-safe.js.map +1 -0
  206. package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
  207. package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
  208. package/dist/lib/server/wire-spec-fields.generated.js +172 -0
  209. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
  210. package/dist/lib/testing/compliance/index.d.ts +2 -0
  211. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  212. package/dist/lib/testing/compliance/index.js +6 -1
  213. package/dist/lib/testing/compliance/index.js.map +1 -1
  214. package/dist/lib/testing/compliance/summary.d.ts +77 -0
  215. package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
  216. package/dist/lib/testing/compliance/summary.js +176 -0
  217. package/dist/lib/testing/compliance/summary.js.map +1 -0
  218. package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
  219. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  220. package/dist/lib/testing/storyboard/compliance.js +51 -0
  221. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  222. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  223. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  224. package/dist/lib/testing/storyboard/index.js +4 -2
  225. package/dist/lib/testing/storyboard/index.js.map +1 -1
  226. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  227. package/dist/lib/testing/storyboard/runner.js +58 -5
  228. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  229. package/dist/lib/version.d.ts +3 -3
  230. package/dist/lib/version.d.ts.map +1 -1
  231. package/dist/lib/version.js +3 -3
  232. package/dist/lib/version.js.map +1 -1
  233. package/package.json +2 -2
@@ -0,0 +1,358 @@
1
+ # Runner Output Contract
2
+ #
3
+ # Defines the failure-result shape that any AdCP compliance runner MUST emit
4
+ # when it reports storyboard results to a user or coding agent. Applies to
5
+ # evaluate_agent_quality, `@adcp/client storyboard run`, and any other harness
6
+ # that executes the storyboards published under /compliance/{version}/.
7
+ #
8
+ # Rationale
9
+ # ---------
10
+ # A failing validation is only actionable if the implementor can see:
11
+ # 1. The exact request the runner sent.
12
+ # 2. The exact response the agent returned.
13
+ # 3. Which field failed (as an RFC 6901 JSON Pointer).
14
+ # 4. What the runner expected vs. what it observed.
15
+ # 5. The identity of the schema applied (so the implementor can re-validate
16
+ # locally against the same artifact).
17
+ #
18
+ # Without these, a buyer building an agent cannot diagnose failures even when
19
+ # their own local validation passes — a mismatch between the schema they tested
20
+ # against and the schema the runner used is indistinguishable from a genuine
21
+ # agent bug.
22
+ #
23
+ # Storyboard AUTHORING is covered in storyboard-schema.yaml. This contract
24
+ # covers runner OUTPUT.
25
+ #
26
+ # --- Schema definition ---
27
+
28
+ id: runner_output_contract
29
+ version: "1.1.0"
30
+ title: "Runner output contract"
31
+ summary: "Required failure-detail shape that AdCP storyboard runners MUST emit so implementors can self-diagnose validation failures."
32
+
33
+ # Conforming implementation: adcp-client PR #611
34
+ # (src/lib/testing/storyboard/types.ts — RunnerRequestRecord,
35
+ # RunnerResponseRecord, ValidationResult, RunnerSkipResult, etc.).
36
+ # The concrete shapes, redaction pattern, and header allowlist below are
37
+ # taken from that implementation.
38
+
39
+ # A storyboard step result is produced per step the runner executes. Each
40
+ # step result carries zero or more validation results — one per `check` in
41
+ # the storyboard's step.validations array, plus any transport-level check
42
+ # the runner performs (e.g., extraction path).
43
+
44
+ step_result:
45
+ description: |
46
+ Runners MUST emit one step result per executed step. Skipped steps MUST
47
+ include a skip result block. Failed steps MUST include at least one
48
+ validation result with passed: false.
49
+ required_fields:
50
+ - storyboard_id # e.g. "capability_discovery"
51
+ - phase_id # e.g. "protocol_discovery"
52
+ - step_id # e.g. "get_capabilities"
53
+ - task # AdCP task name invoked, e.g. "get_adcp_capabilities"
54
+ - passed # boolean — all required validations passed
55
+ - duration_ms # wall-clock time for this step
56
+ - validations # array of validation_result objects (see below)
57
+ - extraction # transport extraction record (see below)
58
+ optional_fields:
59
+ - skip # skip_result block when the step was not run
60
+ - error # transport-level error (no validations attempted)
61
+ - request # exact request the runner sent (see request block)
62
+ - response # exact response observed (see response block)
63
+
64
+ validation_result:
65
+ description: |
66
+ Every validation result — whether passed or failed — MUST carry the fields
67
+ below. Failed validations MUST include request, response, json_pointer,
68
+ expected, and actual unless the failure is transport-level (in which case
69
+ json_pointer, expected, and actual MAY be null and the step-level error
70
+ field carries the transport failure).
71
+ required_fields:
72
+ - check # Validation kind from storyboard-schema.yaml:
73
+ # response_schema | field_present |
74
+ # envelope_field_present | field_value |
75
+ # field_value_or_absent | status_code | http_status |
76
+ # http_status_in | error_code | on_401_require_header |
77
+ # resource_equals_agent_url | any_of | refs_resolve
78
+ - passed # boolean
79
+ - description # human-readable description copied from the
80
+ # storyboard validation entry (so the implementor
81
+ # sees the same text the author wrote)
82
+ required_on_failure:
83
+ - request # exact request the runner sent (see request block)
84
+ - response # exact response observed (see response block)
85
+ - json_pointer # RFC 6901 pointer to the failing field in the
86
+ # response, or the request for input-level
87
+ # failures. Null only when the failure is
88
+ # transport-level and no payload was returned.
89
+ - expected # machine-readable expected value:
90
+ # response_schema → schema $id that was applied
91
+ # field_value → expected value (any JSON type)
92
+ # field_value_or_absent → value or allowed_values array
93
+ # from the storyboard validation
94
+ # field_present → the path that should resolve
95
+ # envelope_field_present → the path that should resolve
96
+ # in the protocol envelope
97
+ # status_code → expected status
98
+ # error_code → expected error code
99
+ # any_of → array of acceptable forms
100
+ - actual # machine-readable actual value observed:
101
+ # response_schema → array of schema errors
102
+ # (each { instance_path,
103
+ # schema_path, keyword,
104
+ # message })
105
+ # field_value → actual value (any JSON type)
106
+ # field_value_or_absent → actual value (any JSON type);
107
+ # null when the field was absent
108
+ # field_present → null (the field was missing)
109
+ # or the observed non-object
110
+ # value
111
+ # envelope_field_present → null (the field was missing)
112
+ # or the observed non-object
113
+ # value (scoped to envelope)
114
+ - schema_id # $id of the response schema applied. Required
115
+ # when check == response_schema, null otherwise.
116
+ - schema_url # Resolvable URL the implementor can fetch to
117
+ # validate locally. Required when
118
+ # check == response_schema, null otherwise.
119
+ optional_fields:
120
+ - remediation # runner-suggested fix when the failure maps to
121
+ # a well-known cause (e.g., "agent did not echo
122
+ # context.correlation_id — see
123
+ # docs/building/implementation/task-lifecycle")
124
+
125
+ request:
126
+ description: |
127
+ Exact request the runner sent, per transport. Runners MUST redact secrets
128
+ before emission — see the `security` block below.
129
+ required_fields:
130
+ - transport # "mcp" | "a2a" | "http"
131
+ - operation # task/tool/skill name actually invoked (matches
132
+ # step.task after any test-kit interpolation)
133
+ - payload # fully-resolved JSON payload after test-kit
134
+ # substitution and context injection, with
135
+ # secret-bearing fields replaced per the
136
+ # redaction policy in the security block.
137
+ optional_fields:
138
+ - headers # Runners SHOULD NOT populate this field by
139
+ # default — see security.request_headers. The
140
+ # field exists for future auth-override captures
141
+ # that carry a fully-redacted form.
142
+ - url # full URL for http/a2a; omit for stdio MCP
143
+
144
+ response:
145
+ description: |
146
+ Exact response observed from the agent, per transport.
147
+ required_fields:
148
+ - transport # "mcp" | "a2a" | "http"
149
+ - payload # MCP: { isError, structuredContent, content }
150
+ # A2A: the Task object — record task.status.state
151
+ # alongside payload. Extract from
152
+ # task.artifacts[0].parts[] DataPart for final
153
+ # states and task.status.message.parts[] for
154
+ # interim states (per
155
+ # docs/building/implementation/a2a-response-extraction.mdx).
156
+ # http: parsed body
157
+ optional_fields:
158
+ - status # HTTP status where applicable
159
+ - headers # observed response headers, filtered through
160
+ # the allowlist in security.response_headers
161
+ - duration_ms # wall-clock time for this request
162
+
163
+ extraction:
164
+ description: |
165
+ Runners MUST follow the MCP response-extraction algorithm at
166
+ docs/building/implementation/mcp-response-extraction.mdx and the A2A
167
+ equivalent. When both structuredContent and content[].text are present,
168
+ structuredContent wins. Recording the path that was actually used lets
169
+ the implementor distinguish a runner extraction bug from an agent bug.
170
+ required_fields:
171
+ - path # "structured_content" | "text_fallback" |
172
+ # "error" | "none"
173
+ optional_fields:
174
+ - note # e.g. "structuredContent contained only
175
+ # adcp_error — treated as error"
176
+
177
+ security:
178
+ description: |
179
+ Runner output is consumed in compliance reports, chat transcripts, and
180
+ shared dashboards where credentials or breadcrumbs a hostile agent plants
181
+ in a response must not surface. A runner claiming contract conformance
182
+ without the rules below could leak tokens through a compliant-looking
183
+ report — defeating the contract's purpose. These rules are normative.
184
+
185
+ payload_redaction:
186
+ description: |
187
+ Runners MUST recursively redact key-value pairs from request.payload
188
+ and response.payload before emitting the step result. Values at keys
189
+ matching the pattern below are replaced with the literal string
190
+ "[redacted]". Matching is case-insensitive and applies at any depth.
191
+ pattern: |
192
+ ^(authorization|credentials?|token|api[_-]?key|password|secret|
193
+ client[_-]secret|refresh[_-]token|access[_-]token|bearer|
194
+ session[_-]token|offering[_-]token|cookie|set[_-]cookie)$
195
+ notes: |
196
+ The pattern above is the MINIMUM floor taken from the adcp-client#611
197
+ conforming implementation. Runners MAY extend it for operator-
198
+ specific key names (e.g., internal vendor headers) but MUST NOT
199
+ narrow it. Redaction happens after the payload is serialized for
200
+ the report, not at transport time — the wire request carries real
201
+ credentials; the emitted record does not.
202
+
203
+ response_headers:
204
+ description: |
205
+ Response headers MUST pass through an allowlist before emission. Any
206
+ header not in the allowlist MUST be dropped (not redacted — absent).
207
+ Dropping rather than redacting avoids publishing the set of header
208
+ names a hostile agent added, which itself can be a breadcrumb.
209
+ allowlist:
210
+ - content-type
211
+ - content-length
212
+ - content-encoding
213
+ - www-authenticate
214
+ - location
215
+ - retry-after
216
+ - x-request-id
217
+ - x-correlation-id
218
+ notes: |
219
+ www-authenticate is retained because it's load-bearing for auth-probe
220
+ validations (on_401_require_header). Matching is case-insensitive.
221
+
222
+ request_headers:
223
+ description: |
224
+ Runners SHOULD NOT populate request.headers. A runner that builds
225
+ `Authorization: Bearer <token>` headers in-flight would leak the token
226
+ by echoing the observed request into a shared report. When a runner
227
+ does populate request.headers (e.g., for auth-override probes that
228
+ intentionally send bogus credentials), values at keys matching the
229
+ payload_redaction pattern MUST be replaced with "[redacted]" and all
230
+ other headers MUST pass through the response_headers allowlist.
231
+
232
+ rendered_output_fencing:
233
+ description: |
234
+ Validation `error` and `actual` fields can carry strings the agent
235
+ under test controlled. When a runner renders these into a shared
236
+ surface (chat transcript, markdown report, summary fed to another
237
+ LLM), those strings MUST be fenced with a nonce or otherwise isolated
238
+ so a hostile error message cannot inject instructions into a
239
+ downstream summarizer. This applies to rendered output, not to the
240
+ machine-readable step_result — the raw string stays in the JSON for
241
+ programmatic consumers.
242
+
243
+ skip_result:
244
+ description: |
245
+ When a track, storyboard, phase, or step is skipped, runners MUST
246
+ distinguish between the reasons below so an implementor knows whether
247
+ the skip is informative (the agent did not claim the protocol) or
248
+ masking (the runner could not apply the storyboard even though the
249
+ agent claimed the protocol).
250
+ required_fields:
251
+ - reason # not_applicable | no_phases |
252
+ # prerequisite_failed | missing_tool |
253
+ # missing_test_controller |
254
+ # unsatisfied_contract | peer_branch_taken |
255
+ # peer_substituted
256
+ - detail # human-readable explanation citing the
257
+ # declared supported_protocols / specialisms
258
+ # and, if relevant, the missing tool,
259
+ # prerequisite step id, or contract key.
260
+ reasons:
261
+ not_applicable: |
262
+ The agent did not declare the protocol or specialism this storyboard
263
+ targets. detail MUST cite the agent's declared supported_protocols
264
+ and specialisms.
265
+
266
+ Branch-set grading uses `peer_branch_taken` (see below), not this
267
+ reason — keeping the two distinct lets dashboards filter coverage
268
+ gaps (not_applicable) separately from runtime branch routing
269
+ (peer_branch_taken).
270
+ no_phases: |
271
+ The storyboard is a placeholder with no phases to run (e.g., a
272
+ protocol baseline that has not been populated yet). detail MUST cite
273
+ the storyboard id and version.
274
+ prerequisite_failed: |
275
+ A prior step this one depends on did not pass. detail MUST cite the
276
+ prerequisite step id.
277
+ missing_tool: |
278
+ The agent declared the protocol or specialism but does not expose a
279
+ required tool. detail MUST cite the tool name declared in the
280
+ storyboard's required_tools and the agent's advertised tool list.
281
+ missing_test_controller: |
282
+ The storyboard requires comply_test_controller and the agent did not
283
+ advertise it. Applies only to deterministic_testing phases.
284
+ unsatisfied_contract: |
285
+ A test-kit harness contract (e.g., signed-requests-runner) is not in
286
+ scope for this grading run. detail MUST cite the contract key. Per
287
+ the signed-requests-runner contract, unsatisfied contracts grade as
288
+ FAIL, not SKIP, for the storyboards that declare them — this reason
289
+ applies only where the contract explicitly permits SKIP.
290
+ peer_branch_taken: |
291
+ The step is part of an `any_of` branch set (see storyboard-schema.yaml
292
+ > "Branch sets") whose `branch_set.id` was already contributed by a
293
+ peer optional phase, making this non-chosen branch moot. detail MUST
294
+ follow the shape
295
+ "<branch_set.id> contributed by <peer_phase_id>.<peer_step_id> —
296
+ <this_phase_id> is moot" so downstream tooling can parse which peer
297
+ carried the contribution. Kept distinct from not_applicable: coverage
298
+ gaps (agent doesn't support a protocol) and runtime branch routing
299
+ (agent took the other path) are different signals and must not be
300
+ conflated in dashboards or summaries.
301
+ peer_substituted: |
302
+ The step would otherwise grade `missing_tool` or
303
+ `missing_test_controller`, but a same-phase peer step declared
304
+ `provides_state_for: <this_step_id>` (see storyboard-schema.yaml >
305
+ `provides_state_for`) and passed — the substitute established
306
+ equivalent state for downstream stateful steps, so the cascade is
307
+ waived. detail MUST follow the shape
308
+ "<this_step_id> state provided by <peer_phase_id>.<peer_step_id>"
309
+ so downstream tooling can parse which substitute carried the state.
310
+ Kept distinct from peer_branch_taken (branch-set routing for
311
+ mutually exclusive behaviors) and not_applicable (coverage gap):
312
+ this signal indicates the agent did declare the specialism but
313
+ offers an interchangeable tool that the storyboard accepts as an
314
+ equivalent state contract.
315
+ description: |
316
+ Runners MAY internally track narrower skip reasons (e.g., a grader
317
+ distinguishing `rate_abuse_opt_out` from `live_side_effect_opt_in_required`).
318
+ Such runners MUST still populate `reason` with one of the canonical
319
+ values above and encode the narrower cause in `detail`. Machine-
320
+ readable consumers can then switch on a stable enum; human-readable
321
+ consumers still see the specific cause. See
322
+ DETAILED_SKIP_TO_CANONICAL in the conforming implementation for a
323
+ concrete mapping.
324
+
325
+ run_summary:
326
+ description: |
327
+ Runners MUST expose a top-level summary for every run. UI surfaces
328
+ (Addie, CLI, web) may present a condensed form, but the full summary
329
+ MUST be available in the machine-readable (--json / structuredContent)
330
+ output.
331
+ required_fields:
332
+ - total_steps
333
+ - steps_passed
334
+ - steps_failed
335
+ - steps_skipped
336
+ - tracks # per-track status with the skip distinctions above
337
+ - schemas_used # array of { schema_id, schema_url } so an
338
+ # implementor can re-validate locally against
339
+ # the exact artifacts the runner applied
340
+
341
+ # --- Non-goals ---
342
+ #
343
+ # This contract does NOT specify:
344
+ # - Output formatting (markdown, JSON shape in the outer envelope, colors).
345
+ # - Storage or retention of run artifacts.
346
+ # - Scoring weights or pass/fail thresholds for a "compliant" verdict.
347
+ # - How to render results in conversational interfaces.
348
+ # Runners remain free to add fields, nest them under implementation-specific
349
+ # keys, and render them however best fits the surface. The contract is about
350
+ # minimum actionability.
351
+
352
+ references:
353
+ storyboard_schema: static/compliance/source/universal/storyboard-schema.yaml
354
+ mcp_extraction: docs/building/implementation/mcp-response-extraction.mdx
355
+ a2a_extraction: docs/building/implementation/a2a-response-extraction.mdx
356
+ transport_errors: docs/building/implementation/transport-errors.mdx
357
+ signed_requests_runner: static/compliance/source/test-kits/signed-requests-runner.yaml
358
+ conforming_implementation: https://github.com/adcontextprotocol/adcp-client/pull/611