@adcp/sdk 13.0.1 → 13.0.3

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 (1411) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/bin/adcp.js +37 -2
  3. package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/index.yaml +5 -1
  4. package/compliance/cache/{3.1.15.previous/protocols → 3.1.20/domains}/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  5. package/compliance/cache/{3.1.15/protocols → 3.1.20/domains}/media-buy/scenarios/dependency_impairment.yaml +14 -13
  6. package/compliance/cache/{3.1.15/protocols → 3.1.20/domains}/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  7. package/compliance/cache/3.1.20/domains/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  8. package/compliance/cache/{3.1.15.previous/protocols → 3.1.20/domains}/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  9. package/compliance/cache/{3.1.15/protocols → 3.1.20/domains}/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  10. package/compliance/cache/{3.1.15.previous → 3.1.20}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  11. package/compliance/cache/{3.1.15.previous → 3.1.20}/domains/media-buy/scenarios/refine_products.yaml +5 -1
  12. package/compliance/cache/{3.1.15 → 3.1.20}/index.json +3 -3
  13. package/compliance/cache/{3.1.15.previous/domains → 3.1.20/protocols}/media-buy/index.yaml +5 -1
  14. package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  15. package/compliance/cache/{3.1.15.previous/domains → 3.1.20/protocols}/media-buy/scenarios/dependency_impairment.yaml +14 -13
  16. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  17. package/compliance/cache/3.1.20/protocols/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  18. package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  19. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  20. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  21. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/refine_products.yaml +5 -1
  22. package/compliance/cache/{3.1.15.previous → 3.1.20}/specialisms/sales-broadcast-tv/index.yaml +6 -1
  23. package/compliance/cache/{3.1.15.previous → 3.1.20}/specialisms/sales-guaranteed/index.yaml +5 -1
  24. package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-proposal-mode/index.yaml +5 -1
  25. package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/acme-outdoor.yaml +10 -0
  26. package/compliance/cache/{3.1.15.previous → 3.1.20}/universal/pagination-integrity-creative-formats.yaml +2 -2
  27. package/compliance/cache/{3.1.15/protocols → 3.1.20.previous/domains}/media-buy/index.yaml +5 -1
  28. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  29. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/dependency_impairment.yaml +14 -13
  30. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  31. package/compliance/cache/3.1.20.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  32. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  33. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  34. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  35. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/refine_products.yaml +5 -1
  36. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/index.json +3 -3
  37. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/index.yaml +5 -1
  38. package/compliance/cache/{3.1.15/domains → 3.1.20.previous/protocols}/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  39. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/dependency_impairment.yaml +14 -13
  40. package/compliance/cache/{3.1.15.previous/domains → 3.1.20.previous/protocols}/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  41. package/compliance/cache/3.1.20.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  42. package/compliance/cache/{3.1.15.previous/domains → 3.1.20.previous/protocols}/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  43. package/compliance/cache/{3.1.15/domains → 3.1.20.previous/protocols}/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  44. package/compliance/cache/{3.1.15 → 3.1.20.previous}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  45. package/compliance/cache/{3.1.15 → 3.1.20.previous}/protocols/media-buy/scenarios/refine_products.yaml +5 -1
  46. package/compliance/cache/{3.1.15 → 3.1.20.previous}/specialisms/sales-broadcast-tv/index.yaml +6 -1
  47. package/compliance/cache/{3.1.15 → 3.1.20.previous}/specialisms/sales-guaranteed/index.yaml +5 -1
  48. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-proposal-mode/index.yaml +5 -1
  49. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/acme-outdoor.yaml +10 -0
  50. package/compliance/cache/{3.1.15 → 3.1.20.previous}/universal/pagination-integrity-creative-formats.yaml +2 -2
  51. package/dist/lib/schemas-data/3.1/a2ui/bound-value.json +1 -1
  52. package/dist/lib/schemas-data/3.1/a2ui/component.json +1 -1
  53. package/dist/lib/schemas-data/3.1/a2ui/si-catalog.json +25 -25
  54. package/dist/lib/schemas-data/3.1/a2ui/surface.json +2 -2
  55. package/dist/lib/schemas-data/3.1/a2ui/user-action.json +1 -1
  56. package/dist/lib/schemas-data/3.1/aao/agent-publishers.json +1 -1
  57. package/dist/lib/schemas-data/3.1/account/get-account-financials-request.json +6 -6
  58. package/dist/lib/schemas-data/3.1/account/get-account-financials-response.json +12 -12
  59. package/dist/lib/schemas-data/3.1/account/list-accounts-request.json +6 -6
  60. package/dist/lib/schemas-data/3.1/account/list-accounts-response.json +8 -8
  61. package/dist/lib/schemas-data/3.1/account/report-usage-request.json +6 -6
  62. package/dist/lib/schemas-data/3.1/account/report-usage-response.json +6 -6
  63. package/dist/lib/schemas-data/3.1/account/sync-accounts-request.json +12 -12
  64. package/dist/lib/schemas-data/3.1/account/sync-accounts-response.json +16 -16
  65. package/dist/lib/schemas-data/3.1/account/sync-governance-request.json +6 -6
  66. package/dist/lib/schemas-data/3.1/account/sync-governance-response.json +10 -10
  67. package/dist/lib/schemas-data/3.1/adagents.json +29 -29
  68. package/dist/lib/schemas-data/3.1/brand/acquire-rights-request.json +10 -10
  69. package/dist/lib/schemas-data/3.1/brand/acquire-rights-response.json +16 -16
  70. package/dist/lib/schemas-data/3.1/brand/creative-approval-request.json +5 -5
  71. package/dist/lib/schemas-data/3.1/brand/creative-approval-response.json +12 -12
  72. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-request.json +4 -4
  73. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-response.json +10 -10
  74. package/dist/lib/schemas-data/3.1/brand/get-rights-request.json +8 -8
  75. package/dist/lib/schemas-data/3.1/brand/get-rights-response.json +11 -11
  76. package/dist/lib/schemas-data/3.1/brand/revocation-notification.json +4 -4
  77. package/dist/lib/schemas-data/3.1/brand/rights-pricing-option.json +5 -5
  78. package/dist/lib/schemas-data/3.1/brand/rights-terms.json +3 -3
  79. package/dist/lib/schemas-data/3.1/brand/search-brands-request.json +6 -6
  80. package/dist/lib/schemas-data/3.1/brand/search-brands-response.json +11 -11
  81. package/dist/lib/schemas-data/3.1/brand/update-rights-request.json +6 -6
  82. package/dist/lib/schemas-data/3.1/brand/update-rights-response.json +11 -11
  83. package/dist/lib/schemas-data/3.1/brand/verification-status.json +1 -1
  84. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-request.json +2 -2
  85. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-response.json +13 -13
  86. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-request.json +2 -2
  87. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-response.json +13 -13
  88. package/dist/lib/schemas-data/3.1/brand.json +21 -21
  89. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-request.json +12 -12
  90. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-response.json +12 -12
  91. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-request.json +16 -16
  92. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-response.json +10 -10
  93. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-request.json +5 -5
  94. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-response.json +23 -23
  95. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-request.json +16 -16
  96. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-response.json +18 -18
  97. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-request.json +7 -7
  98. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-response.json +24 -24
  99. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-request.json +16 -16
  100. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-response.json +10 -10
  101. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-request.json +12 -12
  102. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-response.json +12 -12
  103. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-request.json +16 -16
  104. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-response.json +183 -183
  105. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-request.json +21 -21
  106. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-response.json +11 -11
  107. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-request.json +17 -17
  108. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-response.json +56 -56
  109. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-request.json +44 -44
  110. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-response.json +13 -13
  111. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-request.json +16 -16
  112. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-response.json +48 -48
  113. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-request.json +17 -17
  114. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-response.json +58 -58
  115. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-request.json +18 -18
  116. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-response.json +16 -16
  117. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-request.json +44 -44
  118. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-response.json +50 -50
  119. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-request.json +46 -46
  120. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-response.json +27 -27
  121. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-request.json +42 -42
  122. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-response.json +10 -10
  123. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-request.json +53 -53
  124. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-response.json +54 -54
  125. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-request.json +83 -83
  126. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-response.json +77 -77
  127. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-request.json +25 -25
  128. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-response.json +40 -40
  129. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-request.json +18 -18
  130. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-response.json +65 -65
  131. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-request.json +50 -50
  132. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-response.json +101 -101
  133. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-request.json +12 -12
  134. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-response.json +48 -48
  135. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-request.json +13 -13
  136. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-response.json +10 -10
  137. package/dist/lib/schemas-data/3.1/bundled/media-buy/package-request.json +79 -79
  138. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-request.json +8 -8
  139. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-response.json +10 -10
  140. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-request.json +19 -19
  141. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-response.json +13 -13
  142. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-request.json +26 -26
  143. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-response.json +12 -12
  144. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-request.json +19 -19
  145. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-response.json +16 -16
  146. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-request.json +79 -79
  147. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-response.json +71 -71
  148. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-request.json +18 -18
  149. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-response.json +26 -26
  150. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-request.json +16 -16
  151. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-response.json +10 -10
  152. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-request.json +16 -16
  153. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-response.json +27 -27
  154. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-request.json +17 -17
  155. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-response.json +27 -27
  156. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-request.json +18 -18
  157. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-response.json +26 -26
  158. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-request.json +19 -19
  159. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-response.json +15 -15
  160. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-request.json +5 -5
  161. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-response.json +40 -40
  162. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-request.json +16 -16
  163. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-response.json +183 -183
  164. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-request.json +21 -21
  165. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-response.json +11 -11
  166. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-request.json +17 -17
  167. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-response.json +12 -12
  168. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-request.json +24 -24
  169. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-response.json +53 -53
  170. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-request.json +5 -5
  171. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-response.json +23 -23
  172. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-request.json +18 -18
  173. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-response.json +25 -25
  174. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-request.json +16 -16
  175. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-response.json +26 -26
  176. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-request.json +5 -5
  177. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-response.json +11 -11
  178. package/dist/lib/schemas-data/3.1/collection/base-collection-source.json +3 -3
  179. package/dist/lib/schemas-data/3.1/collection/collection-list-changed-webhook.json +2 -2
  180. package/dist/lib/schemas-data/3.1/collection/collection-list-filters.json +7 -7
  181. package/dist/lib/schemas-data/3.1/collection/collection-list.json +5 -5
  182. package/dist/lib/schemas-data/3.1/collection/create-collection-list-request.json +8 -8
  183. package/dist/lib/schemas-data/3.1/collection/create-collection-list-response.json +6 -6
  184. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-request.json +5 -5
  185. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-response.json +5 -5
  186. package/dist/lib/schemas-data/3.1/collection/get-collection-list-request.json +5 -5
  187. package/dist/lib/schemas-data/3.1/collection/get-collection-list-response.json +12 -12
  188. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-request.json +6 -6
  189. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-response.json +7 -7
  190. package/dist/lib/schemas-data/3.1/collection/update-collection-list-request.json +8 -8
  191. package/dist/lib/schemas-data/3.1/collection/update-collection-list-response.json +6 -6
  192. package/dist/lib/schemas-data/3.1/content-standards/artifact-webhook-payload.json +3 -3
  193. package/dist/lib/schemas-data/3.1/content-standards/artifact.json +7 -7
  194. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-request.json +5 -5
  195. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-response.json +10 -10
  196. package/dist/lib/schemas-data/3.1/content-standards/content-standards.json +7 -7
  197. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-request.json +8 -8
  198. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-response.json +8 -8
  199. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-request.json +4 -4
  200. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-response.json +9 -9
  201. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-request.json +5 -5
  202. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-response.json +10 -10
  203. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-request.json +6 -6
  204. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-response.json +10 -10
  205. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-request.json +8 -8
  206. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-response.json +8 -8
  207. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-request.json +5 -5
  208. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-response.json +10 -10
  209. package/dist/lib/schemas-data/3.1/core/account-authorization.json +1 -1
  210. package/dist/lib/schemas-data/3.1/core/account-ref.json +2 -2
  211. package/dist/lib/schemas-data/3.1/core/account-with-authorization.json +3 -3
  212. package/dist/lib/schemas-data/3.1/core/account.json +10 -10
  213. package/dist/lib/schemas-data/3.1/core/activation-key.json +1 -1
  214. package/dist/lib/schemas-data/3.1/core/ad-inventory-config.json +1 -1
  215. package/dist/lib/schemas-data/3.1/core/agent-encryption-key.json +1 -1
  216. package/dist/lib/schemas-data/3.1/core/agent-signing-key.json +1 -1
  217. package/dist/lib/schemas-data/3.1/core/app-item.json +4 -4
  218. package/dist/lib/schemas-data/3.1/core/asset-group-vocabulary.json +1 -1
  219. package/dist/lib/schemas-data/3.1/core/assets/asset-union.json +21 -21
  220. package/dist/lib/schemas-data/3.1/core/assets/audio-asset.json +3 -3
  221. package/dist/lib/schemas-data/3.1/core/assets/brief-asset.json +2 -2
  222. package/dist/lib/schemas-data/3.1/core/assets/card-asset.json +6 -6
  223. package/dist/lib/schemas-data/3.1/core/assets/catalog-asset.json +2 -2
  224. package/dist/lib/schemas-data/3.1/core/assets/css-asset.json +2 -2
  225. package/dist/lib/schemas-data/3.1/core/assets/daast-asset.json +4 -4
  226. package/dist/lib/schemas-data/3.1/core/assets/daast-tracker-asset.json +3 -3
  227. package/dist/lib/schemas-data/3.1/core/assets/html-asset.json +2 -2
  228. package/dist/lib/schemas-data/3.1/core/assets/image-asset.json +2 -2
  229. package/dist/lib/schemas-data/3.1/core/assets/javascript-asset.json +3 -3
  230. package/dist/lib/schemas-data/3.1/core/assets/markdown-asset.json +2 -2
  231. package/dist/lib/schemas-data/3.1/core/assets/pixel-tracker-asset.json +2 -2
  232. package/dist/lib/schemas-data/3.1/core/assets/published-post-asset.json +2 -2
  233. package/dist/lib/schemas-data/3.1/core/assets/text-asset.json +2 -2
  234. package/dist/lib/schemas-data/3.1/core/assets/url-asset.json +3 -3
  235. package/dist/lib/schemas-data/3.1/core/assets/vast-asset.json +4 -4
  236. package/dist/lib/schemas-data/3.1/core/assets/vast-tracker-asset.json +3 -3
  237. package/dist/lib/schemas-data/3.1/core/assets/video-asset.json +7 -7
  238. package/dist/lib/schemas-data/3.1/core/assets/webhook-asset.json +7 -7
  239. package/dist/lib/schemas-data/3.1/core/assets/zip-asset.json +2 -2
  240. package/dist/lib/schemas-data/3.1/core/async-response-data.json +29 -29
  241. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
  242. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
  243. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
  244. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
  245. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
  246. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
  247. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
  248. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
  249. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
  250. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
  251. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
  252. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
  253. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  254. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  255. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
  256. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
  257. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
  258. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
  259. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
  260. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
  261. package/dist/lib/schemas-data/3.1/core/attribution-window.json +4 -4
  262. package/dist/lib/schemas-data/3.1/core/audience-member.json +3 -3
  263. package/dist/lib/schemas-data/3.1/core/audience-selector.json +7 -7
  264. package/dist/lib/schemas-data/3.1/core/authorized-agent-base.json +3 -3
  265. package/dist/lib/schemas-data/3.1/core/brand-id.json +1 -1
  266. package/dist/lib/schemas-data/3.1/core/brand-ref.json +3 -3
  267. package/dist/lib/schemas-data/3.1/core/business-entity.json +2 -2
  268. package/dist/lib/schemas-data/3.1/core/cancellation-policy.json +2 -2
  269. package/dist/lib/schemas-data/3.1/core/canonical-format-kind.json +1 -1
  270. package/dist/lib/schemas-data/3.1/core/canonical-projection-ref.json +3 -3
  271. package/dist/lib/schemas-data/3.1/core/canonical-projection-slot-override.json +1 -1
  272. package/dist/lib/schemas-data/3.1/core/catalog-field-mapping.json +2 -2
  273. package/dist/lib/schemas-data/3.1/core/catalog-item-delivery-metrics.json +3 -3
  274. package/dist/lib/schemas-data/3.1/core/catalog.json +7 -7
  275. package/dist/lib/schemas-data/3.1/core/catchment.json +5 -5
  276. package/dist/lib/schemas-data/3.1/core/collection-distribution.json +2 -2
  277. package/dist/lib/schemas-data/3.1/core/collection-list-ref.json +1 -1
  278. package/dist/lib/schemas-data/3.1/core/collection-selector.json +1 -1
  279. package/dist/lib/schemas-data/3.1/core/collection.json +13 -13
  280. package/dist/lib/schemas-data/3.1/core/committed-metric.json +9 -9
  281. package/dist/lib/schemas-data/3.1/core/content-rating.json +2 -2
  282. package/dist/lib/schemas-data/3.1/core/context.json +1 -1
  283. package/dist/lib/schemas-data/3.1/core/creative-asset.json +10 -10
  284. package/dist/lib/schemas-data/3.1/core/creative-assignment.json +2 -2
  285. package/dist/lib/schemas-data/3.1/core/creative-brief.json +4 -4
  286. package/dist/lib/schemas-data/3.1/core/creative-consumption.json +1 -1
  287. package/dist/lib/schemas-data/3.1/core/creative-delivery-metrics.json +2 -2
  288. package/dist/lib/schemas-data/3.1/core/creative-filters.json +5 -5
  289. package/dist/lib/schemas-data/3.1/core/creative-item.json +1 -1
  290. package/dist/lib/schemas-data/3.1/core/creative-manifest.json +11 -11
  291. package/dist/lib/schemas-data/3.1/core/creative-policy.json +3 -3
  292. package/dist/lib/schemas-data/3.1/core/creative-variable.json +1 -1
  293. package/dist/lib/schemas-data/3.1/core/creative-variant.json +5 -5
  294. package/dist/lib/schemas-data/3.1/core/data-provider-signal-selector.json +1 -1
  295. package/dist/lib/schemas-data/3.1/core/date-range.json +1 -1
  296. package/dist/lib/schemas-data/3.1/core/datetime-range.json +1 -1
  297. package/dist/lib/schemas-data/3.1/core/daypart-target.json +2 -2
  298. package/dist/lib/schemas-data/3.1/core/deadline-policy.json +1 -1
  299. package/dist/lib/schemas-data/3.1/core/delivery-forecast.json +7 -7
  300. package/dist/lib/schemas-data/3.1/core/delivery-metric-aggregate.json +9 -9
  301. package/dist/lib/schemas-data/3.1/core/delivery-metrics.json +8 -8
  302. package/dist/lib/schemas-data/3.1/core/deployment.json +3 -3
  303. package/dist/lib/schemas-data/3.1/core/destination-item.json +4 -4
  304. package/dist/lib/schemas-data/3.1/core/destination.json +1 -1
  305. package/dist/lib/schemas-data/3.1/core/diagnostic-issue.json +1 -1
  306. package/dist/lib/schemas-data/3.1/core/downstream-connection-requirement.json +1 -1
  307. package/dist/lib/schemas-data/3.1/core/duration.json +1 -1
  308. package/dist/lib/schemas-data/3.1/core/education-item.json +4 -4
  309. package/dist/lib/schemas-data/3.1/core/error.json +1 -1
  310. package/dist/lib/schemas-data/3.1/core/evaluator-spec.json +5 -5
  311. package/dist/lib/schemas-data/3.1/core/event-custom-data.json +2 -2
  312. package/dist/lib/schemas-data/3.1/core/event-source-health.json +3 -3
  313. package/dist/lib/schemas-data/3.1/core/event-surface.json +2 -2
  314. package/dist/lib/schemas-data/3.1/core/event.json +8 -8
  315. package/dist/lib/schemas-data/3.1/core/ext.json +1 -1
  316. package/dist/lib/schemas-data/3.1/core/feature-requirement.json +1 -1
  317. package/dist/lib/schemas-data/3.1/core/flight-item.json +4 -4
  318. package/dist/lib/schemas-data/3.1/core/forecast-dimension-audience.json +2 -2
  319. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-platform.json +2 -2
  320. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-type.json +2 -2
  321. package/dist/lib/schemas-data/3.1/core/forecast-dimension-geo.json +5 -5
  322. package/dist/lib/schemas-data/3.1/core/forecast-dimension-placement.json +2 -2
  323. package/dist/lib/schemas-data/3.1/core/forecast-dimension-signal.json +2 -2
  324. package/dist/lib/schemas-data/3.1/core/forecast-point-dimensions.json +7 -7
  325. package/dist/lib/schemas-data/3.1/core/forecast-point.json +27 -27
  326. package/dist/lib/schemas-data/3.1/core/forecast-range.json +1 -1
  327. package/dist/lib/schemas-data/3.1/core/forecast-vendor-metric-value.json +5 -5
  328. package/dist/lib/schemas-data/3.1/core/format-id.json +1 -1
  329. package/dist/lib/schemas-data/3.1/core/format-option-ref.json +1 -1
  330. package/dist/lib/schemas-data/3.1/core/format-shape-vocabulary.json +1 -1
  331. package/dist/lib/schemas-data/3.1/core/format.json +44 -44
  332. package/dist/lib/schemas-data/3.1/core/frequency-cap.json +4 -4
  333. package/dist/lib/schemas-data/3.1/core/generation-credential.json +3 -3
  334. package/dist/lib/schemas-data/3.1/core/geo-breakdown-support.json +3 -3
  335. package/dist/lib/schemas-data/3.1/core/geo-delivery-metrics.json +6 -6
  336. package/dist/lib/schemas-data/3.1/core/hotel-item.json +4 -4
  337. package/dist/lib/schemas-data/3.1/core/identifier.json +2 -2
  338. package/dist/lib/schemas-data/3.1/core/impairment.json +3 -3
  339. package/dist/lib/schemas-data/3.1/core/industry-identifier.json +2 -2
  340. package/dist/lib/schemas-data/3.1/core/insertion-order.json +1 -1
  341. package/dist/lib/schemas-data/3.1/core/installment-deadlines.json +2 -2
  342. package/dist/lib/schemas-data/3.1/core/installment.json +9 -9
  343. package/dist/lib/schemas-data/3.1/core/job-item.json +3 -3
  344. package/dist/lib/schemas-data/3.1/core/keyword-delivery-metrics.json +3 -3
  345. package/dist/lib/schemas-data/3.1/core/limited-series.json +1 -1
  346. package/dist/lib/schemas-data/3.1/core/material-deadline.json +1 -1
  347. package/dist/lib/schemas-data/3.1/core/mcp-webhook-payload.json +5 -5
  348. package/dist/lib/schemas-data/3.1/core/measurement-readiness.json +5 -5
  349. package/dist/lib/schemas-data/3.1/core/measurement-terms.json +3 -3
  350. package/dist/lib/schemas-data/3.1/core/measurement-window.json +1 -1
  351. package/dist/lib/schemas-data/3.1/core/media-buy-available-action.json +4 -4
  352. package/dist/lib/schemas-data/3.1/core/media-buy-features.json +2 -2
  353. package/dist/lib/schemas-data/3.1/core/media-buy.json +10 -10
  354. package/dist/lib/schemas-data/3.1/core/missing-metric.json +9 -9
  355. package/dist/lib/schemas-data/3.1/core/notification-config.json +4 -4
  356. package/dist/lib/schemas-data/3.1/core/offering-asset-group.json +16 -16
  357. package/dist/lib/schemas-data/3.1/core/offering.json +5 -5
  358. package/dist/lib/schemas-data/3.1/core/optimization-goal.json +7 -7
  359. package/dist/lib/schemas-data/3.1/core/outcome-measurement.json +2 -2
  360. package/dist/lib/schemas-data/3.1/core/overlay.json +1 -1
  361. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-group.json +2 -2
  362. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-groups.json +2 -2
  363. package/dist/lib/schemas-data/3.1/core/package-signal-targeting.json +3 -3
  364. package/dist/lib/schemas-data/3.1/core/package.json +17 -17
  365. package/dist/lib/schemas-data/3.1/core/pagination-request.json +1 -1
  366. package/dist/lib/schemas-data/3.1/core/pagination-response.json +1 -1
  367. package/dist/lib/schemas-data/3.1/core/performance-feedback.json +12 -12
  368. package/dist/lib/schemas-data/3.1/core/performance-standard.json +4 -4
  369. package/dist/lib/schemas-data/3.1/core/placement-definition.json +10 -10
  370. package/dist/lib/schemas-data/3.1/core/placement-ref.json +1 -1
  371. package/dist/lib/schemas-data/3.1/core/placement.json +7 -7
  372. package/dist/lib/schemas-data/3.1/core/planned-delivery.json +5 -5
  373. package/dist/lib/schemas-data/3.1/core/platform-extension-ref.json +1 -1
  374. package/dist/lib/schemas-data/3.1/core/postal-area-support.json +2 -2
  375. package/dist/lib/schemas-data/3.1/core/postal-area.json +4 -4
  376. package/dist/lib/schemas-data/3.1/core/postal-country-system.json +2 -2
  377. package/dist/lib/schemas-data/3.1/core/price.json +1 -1
  378. package/dist/lib/schemas-data/3.1/core/pricing-option.json +10 -10
  379. package/dist/lib/schemas-data/3.1/core/product-allocation.json +4 -4
  380. package/dist/lib/schemas-data/3.1/core/product-allowed-action.json +5 -5
  381. package/dist/lib/schemas-data/3.1/core/product-filters.json +27 -27
  382. package/dist/lib/schemas-data/3.1/core/product-format-declaration.json +16 -16
  383. package/dist/lib/schemas-data/3.1/core/product-signal-targeting-option.json +3 -3
  384. package/dist/lib/schemas-data/3.1/core/product.json +40 -40
  385. package/dist/lib/schemas-data/3.1/core/property-id.json +1 -1
  386. package/dist/lib/schemas-data/3.1/core/property-list-ref.json +1 -1
  387. package/dist/lib/schemas-data/3.1/core/property-tag.json +1 -1
  388. package/dist/lib/schemas-data/3.1/core/property.json +6 -6
  389. package/dist/lib/schemas-data/3.1/core/proposal.json +6 -6
  390. package/dist/lib/schemas-data/3.1/core/protocol-envelope.json +5 -5
  391. package/dist/lib/schemas-data/3.1/core/provenance.json +9 -9
  392. package/dist/lib/schemas-data/3.1/core/publisher-property-selector.json +3 -3
  393. package/dist/lib/schemas-data/3.1/core/push-notification-config.json +2 -2
  394. package/dist/lib/schemas-data/3.1/core/real-estate-item.json +4 -4
  395. package/dist/lib/schemas-data/3.1/core/reference-asset.json +1 -1
  396. package/dist/lib/schemas-data/3.1/core/registry-event.json +14 -14
  397. package/dist/lib/schemas-data/3.1/core/registry-feed-response.json +2 -2
  398. package/dist/lib/schemas-data/3.1/core/reporting-capabilities.json +8 -8
  399. package/dist/lib/schemas-data/3.1/core/reporting-webhook.json +3 -3
  400. package/dist/lib/schemas-data/3.1/core/requirements/asset-requirements.json +13 -13
  401. package/dist/lib/schemas-data/3.1/core/requirements/audio-asset-requirements.json +1 -1
  402. package/dist/lib/schemas-data/3.1/core/requirements/catalog-field-binding.json +4 -4
  403. package/dist/lib/schemas-data/3.1/core/requirements/catalog-requirements.json +5 -5
  404. package/dist/lib/schemas-data/3.1/core/requirements/css-asset-requirements.json +1 -1
  405. package/dist/lib/schemas-data/3.1/core/requirements/daast-asset-requirements.json +1 -1
  406. package/dist/lib/schemas-data/3.1/core/requirements/html-asset-requirements.json +1 -1
  407. package/dist/lib/schemas-data/3.1/core/requirements/image-asset-requirements.json +2 -2
  408. package/dist/lib/schemas-data/3.1/core/requirements/javascript-asset-requirements.json +1 -1
  409. package/dist/lib/schemas-data/3.1/core/requirements/markdown-asset-requirements.json +1 -1
  410. package/dist/lib/schemas-data/3.1/core/requirements/offering-asset-constraint.json +4 -4
  411. package/dist/lib/schemas-data/3.1/core/requirements/text-asset-requirements.json +1 -1
  412. package/dist/lib/schemas-data/3.1/core/requirements/url-asset-requirements.json +1 -1
  413. package/dist/lib/schemas-data/3.1/core/requirements/vast-asset-requirements.json +1 -1
  414. package/dist/lib/schemas-data/3.1/core/requirements/video-asset-requirements.json +6 -6
  415. package/dist/lib/schemas-data/3.1/core/requirements/webhook-asset-requirements.json +1 -1
  416. package/dist/lib/schemas-data/3.1/core/response-payload-jws-envelope.json +1 -1
  417. package/dist/lib/schemas-data/3.1/core/response.json +1 -1
  418. package/dist/lib/schemas-data/3.1/core/rights-constraint.json +4 -4
  419. package/dist/lib/schemas-data/3.1/core/seller-agent-ref.json +1 -1
  420. package/dist/lib/schemas-data/3.1/core/signal-coverage-forecast.json +5 -5
  421. package/dist/lib/schemas-data/3.1/core/signal-definition-enrichment.json +4 -4
  422. package/dist/lib/schemas-data/3.1/core/signal-definition.json +5 -5
  423. package/dist/lib/schemas-data/3.1/core/signal-filters.json +3 -3
  424. package/dist/lib/schemas-data/3.1/core/signal-id.json +1 -1
  425. package/dist/lib/schemas-data/3.1/core/signal-listing.json +4 -4
  426. package/dist/lib/schemas-data/3.1/core/signal-modeling-disclosure.json +1 -1
  427. package/dist/lib/schemas-data/3.1/core/signal-pricing-option.json +2 -2
  428. package/dist/lib/schemas-data/3.1/core/signal-pricing.json +6 -6
  429. package/dist/lib/schemas-data/3.1/core/signal-ref.json +1 -1
  430. package/dist/lib/schemas-data/3.1/core/signal-selection-group-rule.json +1 -1
  431. package/dist/lib/schemas-data/3.1/core/signal-targeting-expression.json +4 -4
  432. package/dist/lib/schemas-data/3.1/core/signal-targeting-rules.json +2 -2
  433. package/dist/lib/schemas-data/3.1/core/signal-targeting.json +7 -7
  434. package/dist/lib/schemas-data/3.1/core/sla-window.json +1 -1
  435. package/dist/lib/schemas-data/3.1/core/special.json +2 -2
  436. package/dist/lib/schemas-data/3.1/core/start-timing.json +1 -1
  437. package/dist/lib/schemas-data/3.1/core/store-item.json +3 -3
  438. package/dist/lib/schemas-data/3.1/core/talent.json +2 -2
  439. package/dist/lib/schemas-data/3.1/core/targeting.json +22 -22
  440. package/dist/lib/schemas-data/3.1/core/tasks-get-request.json +5 -5
  441. package/dist/lib/schemas-data/3.1/core/tasks-get-response.json +10 -10
  442. package/dist/lib/schemas-data/3.1/core/tasks-list-request.json +13 -13
  443. package/dist/lib/schemas-data/3.1/core/tasks-list-response.json +8 -8
  444. package/dist/lib/schemas-data/3.1/core/transformer-param.json +1 -1
  445. package/dist/lib/schemas-data/3.1/core/transformer.json +5 -5
  446. package/dist/lib/schemas-data/3.1/core/truncation-sentinel.json +1 -1
  447. package/dist/lib/schemas-data/3.1/core/user-match.json +3 -3
  448. package/dist/lib/schemas-data/3.1/core/vehicle-item.json +4 -4
  449. package/dist/lib/schemas-data/3.1/core/vendor-metric-id.json +1 -1
  450. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization-supported-metric.json +3 -3
  451. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization.json +2 -2
  452. package/dist/lib/schemas-data/3.1/core/vendor-metric-value.json +3 -3
  453. package/dist/lib/schemas-data/3.1/core/vendor-pricing-option.json +3 -3
  454. package/dist/lib/schemas-data/3.1/core/version-envelope.json +1 -1
  455. package/dist/lib/schemas-data/3.1/core/webhook-activity-record.json +3 -3
  456. package/dist/lib/schemas-data/3.1/core/webhook-challenge-response.json +1 -1
  457. package/dist/lib/schemas-data/3.1/core/webhook-challenge.json +2 -2
  458. package/dist/lib/schemas-data/3.1/core/wholesale-feed-event.json +17 -17
  459. package/dist/lib/schemas-data/3.1/core/wholesale-feed-webhook.json +3 -3
  460. package/dist/lib/schemas-data/3.1/core/x-entity-types.json +1 -1
  461. package/dist/lib/schemas-data/3.1/creative/asset-types/index.json +6 -6
  462. package/dist/lib/schemas-data/3.1/creative/audit-observation.json +2 -2
  463. package/dist/lib/schemas-data/3.1/creative/creative-feature-result.json +2 -2
  464. package/dist/lib/schemas-data/3.1/creative/creative-purged-webhook.json +3 -3
  465. package/dist/lib/schemas-data/3.1/creative/creative-status-changed-webhook.json +4 -4
  466. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-request.json +6 -6
  467. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-response.json +9 -9
  468. package/dist/lib/schemas-data/3.1/creative/get-creative-features-request.json +6 -6
  469. package/dist/lib/schemas-data/3.1/creative/get-creative-features-response.json +11 -11
  470. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-request.json +13 -13
  471. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-response.json +9 -9
  472. package/dist/lib/schemas-data/3.1/creative/list-creatives-request.json +9 -9
  473. package/dist/lib/schemas-data/3.1/creative/list-creatives-response.json +21 -21
  474. package/dist/lib/schemas-data/3.1/creative/list-transformers-request.json +8 -8
  475. package/dist/lib/schemas-data/3.1/creative/list-transformers-response.json +8 -8
  476. package/dist/lib/schemas-data/3.1/creative/preview-creative-request.json +12 -12
  477. package/dist/lib/schemas-data/3.1/creative/preview-creative-response.json +14 -14
  478. package/dist/lib/schemas-data/3.1/creative/preview-render.json +1 -1
  479. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-input-required.json +3 -3
  480. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-submitted.json +4 -4
  481. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-working.json +3 -3
  482. package/dist/lib/schemas-data/3.1/creative/sync-creatives-request.json +8 -8
  483. package/dist/lib/schemas-data/3.1/creative/sync-creatives-response.json +15 -15
  484. package/dist/lib/schemas-data/3.1/creative/validate-input-request.json +4 -4
  485. package/dist/lib/schemas-data/3.1/creative/validate-input-response.json +4 -4
  486. package/dist/lib/schemas-data/3.1/creative/validate-input-result.json +1 -1
  487. package/dist/lib/schemas-data/3.1/creative/video-brief.json +1 -1
  488. package/dist/lib/schemas-data/3.1/enums/account-scope.json +1 -1
  489. package/dist/lib/schemas-data/3.1/enums/account-status.json +1 -1
  490. package/dist/lib/schemas-data/3.1/enums/action-not-allowed-reason.json +1 -1
  491. package/dist/lib/schemas-data/3.1/enums/action-source.json +1 -1
  492. package/dist/lib/schemas-data/3.1/enums/adcp-protocol.json +1 -1
  493. package/dist/lib/schemas-data/3.1/enums/adjustment-kind.json +1 -1
  494. package/dist/lib/schemas-data/3.1/enums/advertiser-industry.json +1 -1
  495. package/dist/lib/schemas-data/3.1/enums/age-verification-method.json +1 -1
  496. package/dist/lib/schemas-data/3.1/enums/assessment-status.json +1 -1
  497. package/dist/lib/schemas-data/3.1/enums/asset-content-type.json +1 -1
  498. package/dist/lib/schemas-data/3.1/enums/attestation-claim.json +1 -1
  499. package/dist/lib/schemas-data/3.1/enums/attribution-methodology.json +1 -1
  500. package/dist/lib/schemas-data/3.1/enums/attribution-model.json +1 -1
  501. package/dist/lib/schemas-data/3.1/enums/audience-source.json +1 -1
  502. package/dist/lib/schemas-data/3.1/enums/audience-status.json +1 -1
  503. package/dist/lib/schemas-data/3.1/enums/audio-channel-layout.json +1 -1
  504. package/dist/lib/schemas-data/3.1/enums/audio-distribution-type.json +1 -1
  505. package/dist/lib/schemas-data/3.1/enums/auth-scheme.json +1 -1
  506. package/dist/lib/schemas-data/3.1/enums/available-metric.json +1 -1
  507. package/dist/lib/schemas-data/3.1/enums/billing-party.json +1 -1
  508. package/dist/lib/schemas-data/3.1/enums/binary-verdict.json +1 -1
  509. package/dist/lib/schemas-data/3.1/enums/brand-agent-type.json +1 -1
  510. package/dist/lib/schemas-data/3.1/enums/c2pa-watermark-action.json +1 -1
  511. package/dist/lib/schemas-data/3.1/enums/canceled-by.json +1 -1
  512. package/dist/lib/schemas-data/3.1/enums/catalog-action.json +1 -1
  513. package/dist/lib/schemas-data/3.1/enums/catalog-item-status.json +1 -1
  514. package/dist/lib/schemas-data/3.1/enums/catalog-type.json +1 -1
  515. package/dist/lib/schemas-data/3.1/enums/channels.json +1 -1
  516. package/dist/lib/schemas-data/3.1/enums/cloud-storage-protocol.json +1 -1
  517. package/dist/lib/schemas-data/3.1/enums/co-branding-requirement.json +1 -1
  518. package/dist/lib/schemas-data/3.1/enums/collection-cadence.json +1 -1
  519. package/dist/lib/schemas-data/3.1/enums/collection-kind.json +1 -1
  520. package/dist/lib/schemas-data/3.1/enums/collection-relationship.json +1 -1
  521. package/dist/lib/schemas-data/3.1/enums/collection-status.json +1 -1
  522. package/dist/lib/schemas-data/3.1/enums/completion-source.json +1 -1
  523. package/dist/lib/schemas-data/3.1/enums/consent-basis.json +1 -1
  524. package/dist/lib/schemas-data/3.1/enums/content-id-type.json +1 -1
  525. package/dist/lib/schemas-data/3.1/enums/content-rating-system.json +1 -1
  526. package/dist/lib/schemas-data/3.1/enums/creative-action.json +1 -1
  527. package/dist/lib/schemas-data/3.1/enums/creative-agent-capability.json +1 -1
  528. package/dist/lib/schemas-data/3.1/enums/creative-approval-status.json +1 -1
  529. package/dist/lib/schemas-data/3.1/enums/creative-event-reason-code.json +1 -1
  530. package/dist/lib/schemas-data/3.1/enums/creative-identifier-type.json +1 -1
  531. package/dist/lib/schemas-data/3.1/enums/creative-quality.json +1 -1
  532. package/dist/lib/schemas-data/3.1/enums/creative-selection-strategy.json +1 -1
  533. package/dist/lib/schemas-data/3.1/enums/creative-sort-field.json +1 -1
  534. package/dist/lib/schemas-data/3.1/enums/creative-status.json +1 -1
  535. package/dist/lib/schemas-data/3.1/enums/daast-tracking-event.json +1 -1
  536. package/dist/lib/schemas-data/3.1/enums/daast-version.json +1 -1
  537. package/dist/lib/schemas-data/3.1/enums/day-of-week.json +1 -1
  538. package/dist/lib/schemas-data/3.1/enums/delegation-authority.json +1 -1
  539. package/dist/lib/schemas-data/3.1/enums/delivery-type.json +1 -1
  540. package/dist/lib/schemas-data/3.1/enums/demographic-system.json +1 -1
  541. package/dist/lib/schemas-data/3.1/enums/derivative-type.json +1 -1
  542. package/dist/lib/schemas-data/3.1/enums/device-platform.json +1 -1
  543. package/dist/lib/schemas-data/3.1/enums/device-type.json +1 -1
  544. package/dist/lib/schemas-data/3.1/enums/digital-source-type.json +1 -1
  545. package/dist/lib/schemas-data/3.1/enums/dimension-unit.json +1 -1
  546. package/dist/lib/schemas-data/3.1/enums/disclosure-persistence.json +1 -1
  547. package/dist/lib/schemas-data/3.1/enums/disclosure-position.json +1 -1
  548. package/dist/lib/schemas-data/3.1/enums/distance-unit.json +1 -1
  549. package/dist/lib/schemas-data/3.1/enums/distribution-identifier-type.json +1 -1
  550. package/dist/lib/schemas-data/3.1/enums/embedded-provenance-method.json +1 -1
  551. package/dist/lib/schemas-data/3.1/enums/error-code.json +1 -1
  552. package/dist/lib/schemas-data/3.1/enums/error-scope.json +1 -1
  553. package/dist/lib/schemas-data/3.1/enums/escalation-severity.json +1 -1
  554. package/dist/lib/schemas-data/3.1/enums/event-type.json +1 -1
  555. package/dist/lib/schemas-data/3.1/enums/exclusivity.json +1 -1
  556. package/dist/lib/schemas-data/3.1/enums/feature-check-status.json +1 -1
  557. package/dist/lib/schemas-data/3.1/enums/feed-format.json +1 -1
  558. package/dist/lib/schemas-data/3.1/enums/feedback-source.json +1 -1
  559. package/dist/lib/schemas-data/3.1/enums/forecast-method.json +1 -1
  560. package/dist/lib/schemas-data/3.1/enums/forecast-range-unit.json +1 -1
  561. package/dist/lib/schemas-data/3.1/enums/forecastable-metric.json +1 -1
  562. package/dist/lib/schemas-data/3.1/enums/format-id-parameter.json +1 -1
  563. package/dist/lib/schemas-data/3.1/enums/frame-rate-type.json +1 -1
  564. package/dist/lib/schemas-data/3.1/enums/frequency-cap-scope.json +1 -1
  565. package/dist/lib/schemas-data/3.1/enums/genre-taxonomy.json +3 -3
  566. package/dist/lib/schemas-data/3.1/enums/geo-level.json +1 -1
  567. package/dist/lib/schemas-data/3.1/enums/gop-type.json +1 -1
  568. package/dist/lib/schemas-data/3.1/enums/governance-decision.json +1 -1
  569. package/dist/lib/schemas-data/3.1/enums/governance-domain.json +1 -1
  570. package/dist/lib/schemas-data/3.1/enums/governance-mode.json +1 -1
  571. package/dist/lib/schemas-data/3.1/enums/governance-phase.json +1 -1
  572. package/dist/lib/schemas-data/3.1/enums/history-entry-type.json +1 -1
  573. package/dist/lib/schemas-data/3.1/enums/http-method.json +1 -1
  574. package/dist/lib/schemas-data/3.1/enums/identifier-types.json +1 -1
  575. package/dist/lib/schemas-data/3.1/enums/impairment-offline-state.json +1 -1
  576. package/dist/lib/schemas-data/3.1/enums/impairment-reason-code.json +1 -1
  577. package/dist/lib/schemas-data/3.1/enums/installment-status.json +1 -1
  578. package/dist/lib/schemas-data/3.1/enums/javascript-module-type.json +1 -1
  579. package/dist/lib/schemas-data/3.1/enums/landing-page-requirement.json +1 -1
  580. package/dist/lib/schemas-data/3.1/enums/legacy-postal-system.json +1 -1
  581. package/dist/lib/schemas-data/3.1/enums/lift-dimension.json +1 -1
  582. package/dist/lib/schemas-data/3.1/enums/logo-slot.json +1 -1
  583. package/dist/lib/schemas-data/3.1/enums/makegood-remedy.json +1 -1
  584. package/dist/lib/schemas-data/3.1/enums/markdown-flavor.json +1 -1
  585. package/dist/lib/schemas-data/3.1/enums/match-id-type.json +3 -3
  586. package/dist/lib/schemas-data/3.1/enums/match-type.json +1 -1
  587. package/dist/lib/schemas-data/3.1/enums/media-buy-action-mode.json +1 -1
  588. package/dist/lib/schemas-data/3.1/enums/media-buy-health.json +1 -1
  589. package/dist/lib/schemas-data/3.1/enums/media-buy-status.json +1 -1
  590. package/dist/lib/schemas-data/3.1/enums/media-buy-valid-action.json +1 -1
  591. package/dist/lib/schemas-data/3.1/enums/metric-scope.json +1 -1
  592. package/dist/lib/schemas-data/3.1/enums/metric-type.json +1 -1
  593. package/dist/lib/schemas-data/3.1/enums/metro-system.json +1 -1
  594. package/dist/lib/schemas-data/3.1/enums/moov-atom-position.json +1 -1
  595. package/dist/lib/schemas-data/3.1/enums/notification-type.json +1 -1
  596. package/dist/lib/schemas-data/3.1/enums/offering-availability-status.json +1 -1
  597. package/dist/lib/schemas-data/3.1/enums/outcome-type.json +1 -1
  598. package/dist/lib/schemas-data/3.1/enums/pacing.json +1 -1
  599. package/dist/lib/schemas-data/3.1/enums/payment-terms.json +1 -1
  600. package/dist/lib/schemas-data/3.1/enums/performance-standard-metric.json +1 -1
  601. package/dist/lib/schemas-data/3.1/enums/policy-category.json +1 -1
  602. package/dist/lib/schemas-data/3.1/enums/policy-enforcement.json +1 -1
  603. package/dist/lib/schemas-data/3.1/enums/postal-system.json +1 -1
  604. package/dist/lib/schemas-data/3.1/enums/preview-output-format.json +1 -1
  605. package/dist/lib/schemas-data/3.1/enums/pricing-model.json +1 -1
  606. package/dist/lib/schemas-data/3.1/enums/production-quality.json +1 -1
  607. package/dist/lib/schemas-data/3.1/enums/property-type.json +1 -1
  608. package/dist/lib/schemas-data/3.1/enums/proposal-status.json +1 -1
  609. package/dist/lib/schemas-data/3.1/enums/publisher-identifier-types.json +1 -1
  610. package/dist/lib/schemas-data/3.1/enums/purchase-type.json +1 -1
  611. package/dist/lib/schemas-data/3.1/enums/reach-unit.json +1 -1
  612. package/dist/lib/schemas-data/3.1/enums/reporting-frequency.json +1 -1
  613. package/dist/lib/schemas-data/3.1/enums/response-type.json +1 -1
  614. package/dist/lib/schemas-data/3.1/enums/restricted-attribute.json +1 -1
  615. package/dist/lib/schemas-data/3.1/enums/right-type.json +1 -1
  616. package/dist/lib/schemas-data/3.1/enums/right-use.json +1 -1
  617. package/dist/lib/schemas-data/3.1/enums/rights-billing-period.json +1 -1
  618. package/dist/lib/schemas-data/3.1/enums/scan-type.json +1 -1
  619. package/dist/lib/schemas-data/3.1/enums/si-session-status.json +1 -1
  620. package/dist/lib/schemas-data/3.1/enums/signal-catalog-type.json +1 -1
  621. package/dist/lib/schemas-data/3.1/enums/signal-source.json +1 -1
  622. package/dist/lib/schemas-data/3.1/enums/signal-value-type.json +1 -1
  623. package/dist/lib/schemas-data/3.1/enums/snapshot-unavailable-reason.json +1 -1
  624. package/dist/lib/schemas-data/3.1/enums/social-placement-surface.json +1 -1
  625. package/dist/lib/schemas-data/3.1/enums/sort-direction.json +1 -1
  626. package/dist/lib/schemas-data/3.1/enums/sort-metric.json +1 -1
  627. package/dist/lib/schemas-data/3.1/enums/special-category.json +1 -1
  628. package/dist/lib/schemas-data/3.1/enums/specialism.json +1 -1
  629. package/dist/lib/schemas-data/3.1/enums/sponsored-placement-type.json +1 -1
  630. package/dist/lib/schemas-data/3.1/enums/talent-role.json +1 -1
  631. package/dist/lib/schemas-data/3.1/enums/task-status.json +1 -1
  632. package/dist/lib/schemas-data/3.1/enums/task-type.json +1 -1
  633. package/dist/lib/schemas-data/3.1/enums/transport-mode.json +1 -1
  634. package/dist/lib/schemas-data/3.1/enums/travel-time-unit.json +1 -1
  635. package/dist/lib/schemas-data/3.1/enums/uid-type.json +3 -3
  636. package/dist/lib/schemas-data/3.1/enums/universal-macro.json +1 -1
  637. package/dist/lib/schemas-data/3.1/enums/update-frequency.json +1 -1
  638. package/dist/lib/schemas-data/3.1/enums/url-asset-type.json +1 -1
  639. package/dist/lib/schemas-data/3.1/enums/validation-mode.json +1 -1
  640. package/dist/lib/schemas-data/3.1/enums/vast-tracking-event.json +1 -1
  641. package/dist/lib/schemas-data/3.1/enums/vast-version.json +1 -1
  642. package/dist/lib/schemas-data/3.1/enums/video-placement-type.json +1 -1
  643. package/dist/lib/schemas-data/3.1/enums/viewability-standard.json +1 -1
  644. package/dist/lib/schemas-data/3.1/enums/watermark-media-type.json +1 -1
  645. package/dist/lib/schemas-data/3.1/enums/wcag-level.json +1 -1
  646. package/dist/lib/schemas-data/3.1/enums/webhook-response-type.json +1 -1
  647. package/dist/lib/schemas-data/3.1/enums/webhook-security-method.json +1 -1
  648. package/dist/lib/schemas-data/3.1/error-details/account-setup-required.json +1 -1
  649. package/dist/lib/schemas-data/3.1/error-details/action-not-allowed.json +4 -4
  650. package/dist/lib/schemas-data/3.1/error-details/agent-permission-denied.json +1 -1
  651. package/dist/lib/schemas-data/3.1/error-details/audience-too-small.json +1 -1
  652. package/dist/lib/schemas-data/3.1/error-details/authorization-required.json +3 -3
  653. package/dist/lib/schemas-data/3.1/error-details/billing-not-permitted-for-agent.json +3 -3
  654. package/dist/lib/schemas-data/3.1/error-details/billing-not-supported.json +2 -2
  655. package/dist/lib/schemas-data/3.1/error-details/budget-too-low.json +1 -1
  656. package/dist/lib/schemas-data/3.1/error-details/conflict.json +1 -1
  657. package/dist/lib/schemas-data/3.1/error-details/creative-rejected.json +1 -1
  658. package/dist/lib/schemas-data/3.1/error-details/policy-violation.json +1 -1
  659. package/dist/lib/schemas-data/3.1/error-details/rate-limited.json +1 -1
  660. package/dist/lib/schemas-data/3.1/error-details/stale-response.json +1 -1
  661. package/dist/lib/schemas-data/3.1/error-details/vendor-error-codes.json +1 -1
  662. package/dist/lib/schemas-data/3.1/error-details/version-unsupported.json +2 -2
  663. package/dist/lib/schemas-data/3.1/extensions/extension-meta.json +1 -1
  664. package/dist/lib/schemas-data/3.1/extensions/index.json +2 -2
  665. package/dist/lib/schemas-data/3.1/formats/canonical/_base.json +5 -5
  666. package/dist/lib/schemas-data/3.1/formats/canonical/agent_placement.json +2 -2
  667. package/dist/lib/schemas-data/3.1/formats/canonical/audio_daast.json +2 -2
  668. package/dist/lib/schemas-data/3.1/formats/canonical/audio_hosted.json +2 -2
  669. package/dist/lib/schemas-data/3.1/formats/canonical/display_tag.json +2 -2
  670. package/dist/lib/schemas-data/3.1/formats/canonical/html5.json +2 -2
  671. package/dist/lib/schemas-data/3.1/formats/canonical/image.json +2 -2
  672. package/dist/lib/schemas-data/3.1/formats/canonical/image_carousel.json +2 -2
  673. package/dist/lib/schemas-data/3.1/formats/canonical/native_in_feed.json +2 -2
  674. package/dist/lib/schemas-data/3.1/formats/canonical/responsive_creative.json +2 -2
  675. package/dist/lib/schemas-data/3.1/formats/canonical/sponsored_placement.json +3 -3
  676. package/dist/lib/schemas-data/3.1/formats/canonical/video_hosted.json +2 -2
  677. package/dist/lib/schemas-data/3.1/formats/canonical/video_vast.json +2 -2
  678. package/dist/lib/schemas-data/3.1/governance/attribute-definition.json +1 -1
  679. package/dist/lib/schemas-data/3.1/governance/audience-constraints.json +3 -3
  680. package/dist/lib/schemas-data/3.1/governance/check-governance-request.json +8 -8
  681. package/dist/lib/schemas-data/3.1/governance/check-governance-response.json +7 -7
  682. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-request.json +5 -5
  683. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-response.json +11 -11
  684. package/dist/lib/schemas-data/3.1/governance/policy-category-definition.json +2 -2
  685. package/dist/lib/schemas-data/3.1/governance/policy-entry.json +6 -6
  686. package/dist/lib/schemas-data/3.1/governance/policy-ref.json +1 -1
  687. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-request.json +7 -7
  688. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-response.json +5 -5
  689. package/dist/lib/schemas-data/3.1/governance/sync-plans-request.json +14 -14
  690. package/dist/lib/schemas-data/3.1/governance/sync-plans-response.json +6 -6
  691. package/dist/lib/schemas-data/3.1/index.json +443 -443
  692. package/dist/lib/schemas-data/3.1/manifest.json +7 -3
  693. package/dist/lib/schemas-data/3.1/manifest.schema.json +1 -1
  694. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-input-required.json +4 -4
  695. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-submitted.json +4 -4
  696. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-working.json +3 -3
  697. package/dist/lib/schemas-data/3.1/media-buy/build-creative-request.json +16 -16
  698. package/dist/lib/schemas-data/3.1/media-buy/build-creative-response.json +35 -35
  699. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-input-required.json +4 -4
  700. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-submitted.json +4 -4
  701. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-working.json +3 -3
  702. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-request.json +13 -13
  703. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-response.json +19 -19
  704. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-request.json +23 -23
  705. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-response.json +27 -27
  706. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-request.json +8 -8
  707. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-response.json +30 -30
  708. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-input-required.json +4 -4
  709. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-submitted.json +4 -4
  710. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-working.json +3 -3
  711. package/dist/lib/schemas-data/3.1/media-buy/get-products-request.json +13 -13
  712. package/dist/lib/schemas-data/3.1/media-buy/get-products-response.json +10 -10
  713. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-request.json +13 -13
  714. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-response.json +9 -9
  715. package/dist/lib/schemas-data/3.1/media-buy/log-event-request.json +5 -5
  716. package/dist/lib/schemas-data/3.1/media-buy/log-event-response.json +8 -8
  717. package/dist/lib/schemas-data/3.1/media-buy/media-buy-delivery-webhook-result.json +9 -9
  718. package/dist/lib/schemas-data/3.1/media-buy/package-request.json +23 -23
  719. package/dist/lib/schemas-data/3.1/media-buy/package-update.json +13 -13
  720. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-request.json +7 -7
  721. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-response.json +8 -8
  722. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-request.json +8 -8
  723. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-response.json +14 -14
  724. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  725. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  726. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-working.json +3 -3
  727. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-request.json +8 -8
  728. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-response.json +14 -14
  729. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-request.json +8 -8
  730. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-response.json +14 -14
  731. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-input-required.json +3 -3
  732. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-submitted.json +4 -4
  733. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-working.json +3 -3
  734. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-request.json +11 -11
  735. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-response.json +17 -17
  736. package/dist/lib/schemas-data/3.1/pricing-options/cpa-option.json +4 -4
  737. package/dist/lib/schemas-data/3.1/pricing-options/cpc-option.json +4 -4
  738. package/dist/lib/schemas-data/3.1/pricing-options/cpcv-option.json +4 -4
  739. package/dist/lib/schemas-data/3.1/pricing-options/cpm-option.json +4 -4
  740. package/dist/lib/schemas-data/3.1/pricing-options/cpp-option.json +5 -5
  741. package/dist/lib/schemas-data/3.1/pricing-options/cpv-option.json +4 -4
  742. package/dist/lib/schemas-data/3.1/pricing-options/flat-rate-option.json +4 -4
  743. package/dist/lib/schemas-data/3.1/pricing-options/price-breakdown.json +2 -2
  744. package/dist/lib/schemas-data/3.1/pricing-options/price-guidance.json +1 -1
  745. package/dist/lib/schemas-data/3.1/pricing-options/time-option.json +4 -4
  746. package/dist/lib/schemas-data/3.1/pricing-options/vcpm-option.json +4 -4
  747. package/dist/lib/schemas-data/3.1/property/authorization-result.json +1 -1
  748. package/dist/lib/schemas-data/3.1/property/base-property-source.json +4 -4
  749. package/dist/lib/schemas-data/3.1/property/create-property-list-request.json +8 -8
  750. package/dist/lib/schemas-data/3.1/property/create-property-list-response.json +6 -6
  751. package/dist/lib/schemas-data/3.1/property/delete-property-list-request.json +5 -5
  752. package/dist/lib/schemas-data/3.1/property/delete-property-list-response.json +5 -5
  753. package/dist/lib/schemas-data/3.1/property/delivery-record.json +3 -3
  754. package/dist/lib/schemas-data/3.1/property/get-property-list-request.json +5 -5
  755. package/dist/lib/schemas-data/3.1/property/get-property-list-response.json +9 -9
  756. package/dist/lib/schemas-data/3.1/property/list-property-lists-request.json +6 -6
  757. package/dist/lib/schemas-data/3.1/property/list-property-lists-response.json +7 -7
  758. package/dist/lib/schemas-data/3.1/property/property-error.json +2 -2
  759. package/dist/lib/schemas-data/3.1/property/property-feature-definition.json +2 -2
  760. package/dist/lib/schemas-data/3.1/property/property-feature-result.json +4 -4
  761. package/dist/lib/schemas-data/3.1/property/property-feature-value.json +2 -2
  762. package/dist/lib/schemas-data/3.1/property/property-feature.json +1 -1
  763. package/dist/lib/schemas-data/3.1/property/property-list-changed-webhook.json +2 -2
  764. package/dist/lib/schemas-data/3.1/property/property-list-filters.json +5 -5
  765. package/dist/lib/schemas-data/3.1/property/property-list.json +6 -6
  766. package/dist/lib/schemas-data/3.1/property/update-property-list-request.json +8 -8
  767. package/dist/lib/schemas-data/3.1/property/update-property-list-response.json +6 -6
  768. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-request.json +6 -6
  769. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-response.json +6 -6
  770. package/dist/lib/schemas-data/3.1/property/validation-result.json +5 -5
  771. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-request.json +4 -4
  772. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-response.json +34 -34
  773. package/dist/lib/schemas-data/3.1/protocol/get-task-status-request.json +5 -5
  774. package/dist/lib/schemas-data/3.1/protocol/get-task-status-response.json +10 -10
  775. package/dist/lib/schemas-data/3.1/protocol/list-tasks-request.json +13 -13
  776. package/dist/lib/schemas-data/3.1/protocol/list-tasks-response.json +8 -8
  777. package/dist/lib/schemas-data/3.1/registries/v1-canonical-mapping.json +2 -2
  778. package/dist/lib/schemas-data/3.1/signals/activate-signal-request.json +6 -6
  779. package/dist/lib/schemas-data/3.1/signals/activate-signal-response.json +9 -9
  780. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-submitted.json +4 -4
  781. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-working.json +3 -3
  782. package/dist/lib/schemas-data/3.1/signals/get-signals-request.json +11 -11
  783. package/dist/lib/schemas-data/3.1/signals/get-signals-response.json +17 -17
  784. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-capabilities.json +1 -1
  785. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-context-use.json +1 -1
  786. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-request.json +4 -4
  787. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-response.json +9 -9
  788. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-identity.json +1 -1
  789. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-request.json +7 -7
  790. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-response.json +10 -10
  791. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-request.json +5 -5
  792. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-response.json +10 -10
  793. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
  794. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context.json +4 -4
  795. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-request.json +4 -4
  796. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-response.json +7 -7
  797. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-ui-element.json +1 -1
  798. package/dist/lib/schemas-data/3.1/trusted-match/available-package.json +4 -4
  799. package/dist/lib/schemas-data/3.1/trusted-match/context-match-request.json +5 -5
  800. package/dist/lib/schemas-data/3.1/trusted-match/context-match-response.json +4 -4
  801. package/dist/lib/schemas-data/3.1/trusted-match/error.json +1 -1
  802. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-request.json +4 -4
  803. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-response.json +4 -4
  804. package/dist/lib/schemas-data/3.1/trusted-match/offer-price.json +1 -1
  805. package/dist/lib/schemas-data/3.1/trusted-match/offer.json +5 -5
  806. package/dist/lib/schemas-data/3.1/trusted-match/provider-identity-match-response.json +4 -4
  807. package/dist/lib/schemas-data/3.1/trusted-match/provider-registration.json +2 -2
  808. package/dist/lib/schemas-data/3.1/trusted-match/publisher-tmpx-config.json +1 -1
  809. package/dist/lib/schemas-data/3.1/trusted-match/tmpx-chunk.json +1 -1
  810. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  811. package/dist/lib/server/decisioning/capabilities.d.mts +5 -5
  812. package/dist/lib/server/decisioning/capabilities.d.ts +5 -5
  813. package/dist/lib/server/decisioning/capabilities.js.map +1 -1
  814. package/dist/lib/server/decisioning/capabilities.mjs.map +1 -1
  815. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js.map +1 -1
  816. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
  817. package/dist/lib/server/wire-spec-fields.generated.d.mts +29 -29
  818. package/dist/lib/server/wire-spec-fields.generated.d.ts +29 -29
  819. package/dist/lib/server/wire-spec-fields.generated.js +29 -29
  820. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -1
  821. package/dist/lib/server/wire-spec-fields.generated.mjs +29 -29
  822. package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
  823. package/dist/lib/testing/client.d.ts.map +1 -1
  824. package/dist/lib/testing/client.js +6 -2
  825. package/dist/lib/testing/client.js.map +1 -1
  826. package/dist/lib/testing/client.mjs +6 -2
  827. package/dist/lib/testing/client.mjs.map +1 -1
  828. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  829. package/dist/lib/testing/storyboard/runner.js +18 -4
  830. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  831. package/dist/lib/testing/storyboard/runner.mjs +18 -4
  832. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  833. package/dist/lib/testing/storyboard/types.d.mts +83 -29
  834. package/dist/lib/testing/storyboard/types.d.ts +83 -29
  835. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  836. package/dist/lib/testing/storyboard/types.js.map +1 -1
  837. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  838. package/dist/lib/testing/storyboard/validations.d.mts +3 -1
  839. package/dist/lib/testing/storyboard/validations.d.ts +3 -1
  840. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  841. package/dist/lib/testing/storyboard/validations.js +86 -23
  842. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  843. package/dist/lib/testing/storyboard/validations.mjs +86 -24
  844. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  845. package/dist/lib/testing/types.d.mts +11 -0
  846. package/dist/lib/testing/types.d.ts +11 -0
  847. package/dist/lib/testing/types.d.ts.map +1 -1
  848. package/dist/lib/testing/types.js.map +1 -1
  849. package/dist/lib/types/comply-test-controller.d.ts +1 -1
  850. package/dist/lib/types/core.generated.d.mts +2 -2
  851. package/dist/lib/types/core.generated.d.ts +2 -2
  852. package/dist/lib/types/core.generated.js.map +1 -1
  853. package/dist/lib/types/get-adcp-capabilities.d.ts +2 -2
  854. package/dist/lib/types/get-products.d.ts +2 -2
  855. package/dist/lib/types/get-task-status.d.ts +1 -1
  856. package/dist/lib/types/log-event.d.ts +1 -1
  857. package/dist/lib/types/manifest.generated.d.mts +3 -3
  858. package/dist/lib/types/manifest.generated.d.ts +3 -3
  859. package/dist/lib/types/manifest.generated.js.map +1 -1
  860. package/dist/lib/types/manifest.generated.mjs.map +1 -1
  861. package/dist/lib/types/per-tool-index.json +1 -1
  862. package/dist/lib/types/sync-audiences.d.ts +1 -1
  863. package/dist/lib/types/tools.generated.d.mts +2 -2
  864. package/dist/lib/types/tools.generated.d.ts +2 -2
  865. package/dist/lib/types/tools.generated.js.map +1 -1
  866. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  867. package/dist/lib/validation/schema-loader.js +9 -0
  868. package/dist/lib/validation/schema-loader.js.map +1 -1
  869. package/dist/lib/validation/schema-loader.mjs +8 -0
  870. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  871. package/dist/lib/version.d.mts +7 -7
  872. package/dist/lib/version.d.ts +7 -7
  873. package/dist/lib/version.d.ts.map +1 -1
  874. package/dist/lib/version.js +11 -6
  875. package/dist/lib/version.js.map +1 -1
  876. package/dist/lib/version.mjs +11 -6
  877. package/dist/lib/version.mjs.map +1 -1
  878. package/docs/llms.txt +5 -5
  879. package/package.json +2 -2
  880. package/compliance/cache/3.1.15/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  881. package/compliance/cache/3.1.15/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  882. package/compliance/cache/3.1.15.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  883. package/compliance/cache/3.1.15.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  884. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/brand/index.yaml +0 -0
  885. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  886. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  887. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/index.yaml +0 -0
  888. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  889. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  890. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  891. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  892. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  893. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/governance/index.yaml +0 -0
  894. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  895. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  896. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  897. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  898. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  899. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  900. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  901. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  902. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  903. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  904. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  905. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  906. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  907. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  908. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  909. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  910. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  911. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  912. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  913. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  914. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  915. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  916. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  917. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  918. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  919. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  920. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  921. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  922. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  923. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  924. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  925. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  926. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  927. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  928. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  929. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  930. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  931. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/state-machine.yaml +0 -0
  932. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/signals/index.yaml +0 -0
  933. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  934. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/sponsored-intelligence/index.yaml +0 -0
  935. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  936. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/brand/index.yaml +0 -0
  937. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  938. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  939. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/index.yaml +0 -0
  940. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  941. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  942. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  943. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  944. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  945. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/governance/index.yaml +0 -0
  946. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  947. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  948. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  949. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  950. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  951. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  952. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  953. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  954. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  955. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  956. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  957. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  958. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  959. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  960. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  961. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  962. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  963. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  964. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  965. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  966. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  967. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  968. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  969. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  970. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  971. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  972. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  973. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  974. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  975. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  976. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  977. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  978. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  979. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  980. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  981. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  982. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  983. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/state-machine.yaml +0 -0
  984. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/signals/index.yaml +0 -0
  985. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  986. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/sponsored-intelligence/index.yaml +0 -0
  987. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  988. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/audience-sync/index.yaml +0 -0
  989. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/brand-rights/index.yaml +0 -0
  990. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  991. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/collection-lists/index.yaml +0 -0
  992. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/content-standards/index.yaml +0 -0
  993. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-ad-server/index.yaml +0 -0
  994. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-generative/generative-seller.yaml +0 -0
  995. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-generative/index.yaml +0 -0
  996. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-template/index.yaml +0 -0
  997. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-transformers/index.yaml +0 -0
  998. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-aware-seller/index.yaml +0 -0
  999. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1000. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1001. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1002. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-spend-authority/index.yaml +0 -0
  1003. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/property-lists/index.yaml +0 -0
  1004. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1005. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1006. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-social/index.yaml +0 -0
  1007. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/signal-marketplace/index.yaml +0 -0
  1008. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1009. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/signal-owned/index.yaml +0 -0
  1010. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1011. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/acme-outdoor-live.yaml +0 -0
  1012. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/billing-gate-runner.yaml +0 -0
  1013. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/bistro-oranje.yaml +0 -0
  1014. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/distributed-brand-runner.yaml +0 -0
  1015. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/nova-motors.yaml +0 -0
  1016. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/osei-natural.yaml +0 -0
  1017. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1018. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1019. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/signed-requests-runner.yaml +0 -0
  1020. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/single-side-trust-runner.yaml +0 -0
  1021. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/substitution-observer-runner.yaml +0 -0
  1022. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/summit-foods.yaml +0 -0
  1023. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/webhook-receiver-runner.yaml +0 -0
  1024. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/catalog-macro-substitution.json +0 -0
  1025. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1026. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1027. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1028. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1029. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1030. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1031. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1032. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1033. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1034. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1035. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1036. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/README.md +0 -0
  1037. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/canonicalization.json +0 -0
  1038. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/keys.json +0 -0
  1039. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1040. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1041. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1042. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1043. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1044. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1045. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1046. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1047. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1048. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1049. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1050. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1051. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1052. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1053. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1054. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1055. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1056. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1057. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1058. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1059. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1060. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1061. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1062. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1063. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1064. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1065. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1066. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1067. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1068. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1069. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1070. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1071. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1072. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1073. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1074. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1075. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1076. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1077. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1078. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1079. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-receiver-envelope.json +0 -0
  1080. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/README.md +0 -0
  1081. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/keys.json +0 -0
  1082. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1083. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1084. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1085. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1086. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1087. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1088. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1089. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1090. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1091. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1092. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1093. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1094. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1095. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1096. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1097. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1098. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1099. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1100. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1101. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1102. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1103. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1104. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1105. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1106. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1107. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1108. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1109. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1110. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1111. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/billing-gate-dispatch.yaml +0 -0
  1112. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/canonical-format-validate-input.yaml +0 -0
  1113. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/capability-discovery.yaml +0 -0
  1114. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1115. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/comply-controller-mode-gate.yaml +0 -0
  1116. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/content-standards-pagination-integrity.yaml +0 -0
  1117. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/deterministic-testing.yaml +0 -0
  1118. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/error-compliance-signals.yaml +0 -0
  1119. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/error-compliance.yaml +0 -0
  1120. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/fictional-entities.yaml +0 -0
  1121. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1122. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/get-products-pagination-integrity.yaml +0 -0
  1123. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/get-signals-pagination-integrity.yaml +0 -0
  1124. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/idempotency.yaml +0 -0
  1125. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/notification-config-event-scope.yaml +0 -0
  1126. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/notification-config-lifecycle.yaml +0 -0
  1127. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/notification-config-rejections.yaml +0 -0
  1128. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1129. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/pagination-integrity.yaml +0 -0
  1130. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/property-lists-pagination-integrity.yaml +0 -0
  1131. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/read-tool-idempotency.yaml +0 -0
  1132. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/runner-output-contract.yaml +0 -0
  1133. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/schema-validation-signals.yaml +0 -0
  1134. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/schema-validation.yaml +0 -0
  1135. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/security.yaml +0 -0
  1136. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/signed-requests.yaml +0 -0
  1137. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/stale-response-advisory.yaml +0 -0
  1138. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/storyboard-schema.yaml +0 -0
  1139. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/v3-envelope-integrity.yaml +0 -0
  1140. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/version-negotiation.yaml +0 -0
  1141. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/webhook-emission.yaml +0 -0
  1142. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/webhook-receiver-envelope.yaml +0 -0
  1143. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1144. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1145. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-products.yaml +0 -0
  1146. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1147. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-signals.yaml +0 -0
  1148. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/brand/index.yaml +0 -0
  1149. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1150. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1151. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/index.yaml +0 -0
  1152. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  1153. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1154. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1155. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  1156. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  1157. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/governance/index.yaml +0 -0
  1158. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1159. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  1160. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1161. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  1162. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1163. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1164. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1165. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  1166. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1167. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1168. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1169. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1170. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  1171. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  1172. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  1173. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  1174. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1175. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1176. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1177. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1178. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1179. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1180. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1181. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1182. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1183. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1184. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1185. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1186. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1187. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1188. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1189. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1190. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1191. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1192. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1193. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1194. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1195. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/state-machine.yaml +0 -0
  1196. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/signals/index.yaml +0 -0
  1197. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  1198. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/sponsored-intelligence/index.yaml +0 -0
  1199. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1200. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/brand/index.yaml +0 -0
  1201. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1202. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1203. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/index.yaml +0 -0
  1204. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  1205. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1206. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1207. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  1208. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  1209. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/governance/index.yaml +0 -0
  1210. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1211. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  1212. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1213. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  1214. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1215. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1216. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1217. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  1218. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1219. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1220. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1221. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1222. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  1223. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  1224. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  1225. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  1226. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1227. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1228. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1229. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1230. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1231. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1232. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1233. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1234. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1235. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1236. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1237. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1238. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1239. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1240. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1241. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1242. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1243. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1244. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1245. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1246. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1247. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/state-machine.yaml +0 -0
  1248. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/signals/index.yaml +0 -0
  1249. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  1250. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/sponsored-intelligence/index.yaml +0 -0
  1251. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1252. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/audience-sync/index.yaml +0 -0
  1253. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/brand-rights/index.yaml +0 -0
  1254. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  1255. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/collection-lists/index.yaml +0 -0
  1256. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/content-standards/index.yaml +0 -0
  1257. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-ad-server/index.yaml +0 -0
  1258. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-generative/generative-seller.yaml +0 -0
  1259. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-generative/index.yaml +0 -0
  1260. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-template/index.yaml +0 -0
  1261. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-transformers/index.yaml +0 -0
  1262. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-aware-seller/index.yaml +0 -0
  1263. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1264. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1265. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1266. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-spend-authority/index.yaml +0 -0
  1267. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/property-lists/index.yaml +0 -0
  1268. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1269. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1270. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-social/index.yaml +0 -0
  1271. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/signal-marketplace/index.yaml +0 -0
  1272. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1273. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/signal-owned/index.yaml +0 -0
  1274. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1275. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/acme-outdoor-live.yaml +0 -0
  1276. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/billing-gate-runner.yaml +0 -0
  1277. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/bistro-oranje.yaml +0 -0
  1278. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/distributed-brand-runner.yaml +0 -0
  1279. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/nova-motors.yaml +0 -0
  1280. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/osei-natural.yaml +0 -0
  1281. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1282. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1283. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/signed-requests-runner.yaml +0 -0
  1284. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/single-side-trust-runner.yaml +0 -0
  1285. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/substitution-observer-runner.yaml +0 -0
  1286. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/summit-foods.yaml +0 -0
  1287. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/webhook-receiver-runner.yaml +0 -0
  1288. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/catalog-macro-substitution.json +0 -0
  1289. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1290. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1291. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1292. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1293. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1294. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1295. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1296. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1297. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1298. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1299. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1300. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/README.md +0 -0
  1301. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/canonicalization.json +0 -0
  1302. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/keys.json +0 -0
  1303. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1304. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1305. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1306. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1307. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1308. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1309. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1310. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1311. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1312. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1313. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1314. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1315. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1316. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1317. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1318. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1319. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1320. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1321. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1322. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1323. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1324. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1325. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1326. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1327. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1328. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1329. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1330. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1331. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1332. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1333. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1334. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1335. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1336. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1337. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1338. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1339. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1340. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1341. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1342. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1343. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-receiver-envelope.json +0 -0
  1344. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/README.md +0 -0
  1345. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/keys.json +0 -0
  1346. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1347. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1348. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1349. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1350. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1351. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1352. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1353. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1354. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1355. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1356. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1357. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1358. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1359. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1360. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1361. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1362. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1363. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1364. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1365. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1366. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1367. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1368. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1369. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1370. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1371. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1372. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1373. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1374. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1375. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/billing-gate-dispatch.yaml +0 -0
  1376. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/canonical-format-validate-input.yaml +0 -0
  1377. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/capability-discovery.yaml +0 -0
  1378. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1379. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/comply-controller-mode-gate.yaml +0 -0
  1380. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/content-standards-pagination-integrity.yaml +0 -0
  1381. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/deterministic-testing.yaml +0 -0
  1382. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/error-compliance-signals.yaml +0 -0
  1383. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/error-compliance.yaml +0 -0
  1384. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/fictional-entities.yaml +0 -0
  1385. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1386. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/get-products-pagination-integrity.yaml +0 -0
  1387. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/get-signals-pagination-integrity.yaml +0 -0
  1388. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/idempotency.yaml +0 -0
  1389. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/notification-config-event-scope.yaml +0 -0
  1390. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/notification-config-lifecycle.yaml +0 -0
  1391. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/notification-config-rejections.yaml +0 -0
  1392. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1393. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/pagination-integrity.yaml +0 -0
  1394. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/property-lists-pagination-integrity.yaml +0 -0
  1395. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/read-tool-idempotency.yaml +0 -0
  1396. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/runner-output-contract.yaml +0 -0
  1397. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/schema-validation-signals.yaml +0 -0
  1398. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/schema-validation.yaml +0 -0
  1399. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/security.yaml +0 -0
  1400. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/signed-requests.yaml +0 -0
  1401. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/stale-response-advisory.yaml +0 -0
  1402. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/storyboard-schema.yaml +0 -0
  1403. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/v3-envelope-integrity.yaml +0 -0
  1404. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/version-negotiation.yaml +0 -0
  1405. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/webhook-emission.yaml +0 -0
  1406. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/webhook-receiver-envelope.yaml +0 -0
  1407. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1408. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1409. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-products.yaml +0 -0
  1410. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1411. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-signals.yaml +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/validation/schema-loader.ts"],"sourcesContent":["import { fileURLToPath as __adcpFileURLToPath } from 'node:url';\nimport { dirname as __adcpDirname } from 'node:path';\nimport { createRequire as __adcpCreateRequire } from 'node:module';\nconst __dirname = __adcpDirname(__adcpFileURLToPath(import.meta.url));\nconst require = __adcpCreateRequire(import.meta.url);\n/**\n * JSON Schema loader for AdCP tool request/response validation.\n *\n * Loads the bundled per-tool schemas shipped with the SDK plus the\n * `core/` schemas that async response variants `$ref`, then compiles\n * AJV validators lazily by `(toolName, direction)`.\n *\n * Stage 3: state is per-AdCP-version. The same SDK instance can hold\n * compiled validators for `3.0.0`, `3.0.1`, `3.1.0-beta.1`, etc. side by\n * side; callers pass the version they're validating against. Default is\n * the SDK-pinned `ADCP_VERSION` so callers that don't care about\n * cross-version selection (most internal call sites) keep working\n * unchanged.\n */\n\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport { readdirSync, readFileSync, existsSync } from 'fs';\nimport path from 'path';\nimport { ADCP_VERSION } from '../version';\nimport { ConfigurationError } from '../errors';\n\nexport type ResponseVariant = 'sync' | 'submitted' | 'working' | 'input-required';\nexport type Direction = 'request' | ResponseVariant;\n\ninterface LoadedSchema {\n $id?: string;\n [k: string]: unknown;\n}\n\nconst SCHEMA_FILENAME_SUFFIX: Record<Direction, string> = {\n request: 'request',\n sync: 'response',\n submitted: 'async-response-submitted',\n working: 'async-response-working',\n 'input-required': 'async-response-input-required',\n};\n\n/**\n * Map a consumer-provided version pin to the loader's bundle key.\n *\n * - Stable semver `'3.0.0'` / `'3.0.1'` → `'3.0'` (latest patch in minor)\n * - Bare minor `'3.0'` → `'3.0'` (already the bundle key)\n * - Release-precision prerelease `'3.1-beta'` / `'3.1-beta.0'` →\n * returned verbatim. {@link resolveSchemaRoot} fuzzy-resolves to the\n * highest cached prerelease directory whose own release-precision form\n * matches (e.g. `'3.1-beta'` matches `schemas/cache/3.1.0-beta.0/`).\n * Accepted because sellers advertise `supported_versions` in this\n * shape (`[\"3.1-beta\"]`), and a buyer reading that off the wire must\n * be able to pin to it.\n * - Full prerelease semver `'3.1.0-beta.1'` → `'3.1.0-beta.1'`\n * (exact-version, intentional pin)\n * - Legacy alias `'v3'` / `'v2.5'` / `'v2.6'` → returned verbatim (cache\n * historically keyed these directories by the alias name)\n *\n * Per the AdCP spec convention patches don't change wire shape, so collapsing\n * stable patches into the minor is functionally equivalent for any validator\n * consumer. Prereleases are kept exact because pinning a beta is intentional\n * and bit-fidelity matters for cross-version interop tests.\n *\n * Throws `ConfigurationError` for any input that doesn't match one of the\n * recognized shapes. Strings reach `path.join` via `resolveSchemaRoot`, and\n * pass-through of arbitrary garbage (`'../etc'`, `'3foo'`) lets a non-version\n * directory probe leak through `hasSchemaBundle`'s boolean. The throw is\n * caught by `hasSchemaBundle`'s try/catch (still returns false) and surfaces\n * with a useful field name from `resolveAdcpVersion`.\n */\nexport function resolveBundleKey(version: string): string {\n // Bare 'MAJOR.MINOR' (no patch).\n const minorOnly = version.match(/^(\\d+)\\.(\\d+)$/);\n if (minorOnly) return `${minorOnly[1]}.${minorOnly[2]}`;\n // Release-precision prerelease 'MAJOR.MINOR-PRE' (no patch). Same SemVer §9\n // prerelease constraint as the full-semver branch — `'3.1-/../etc'`-style\n // strings can't slip through. Returns verbatim; resolveSchemaRoot does the\n // fuzzy directory match.\n const releasePrecisionPre = version.match(/^(\\d+)\\.(\\d+)-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*$/);\n if (releasePrecisionPre) return version;\n // Full 'MAJOR.MINOR.PATCH' with optional prerelease. Prerelease group\n // restricted to SemVer §9 identifiers (alphanumerics + hyphen,\n // dot-separated) so `'3.0.0-/../etc'`-style strings can't slip through\n // and reach `path.join` as a directory component. The full version is\n // returned verbatim for prereleases, so this is the last line of defense\n // before that string becomes a path segment.\n const semver = version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$/);\n if (semver) {\n const [, major, minor, , prerelease] = semver;\n if (prerelease !== undefined) return version;\n return `${major}.${minor}`;\n }\n // Legacy alias: 'v' followed by a major and optional minor. Restricted to\n // this exact shape so non-version garbage can't reach the filesystem.\n const legacyAlias = version.match(/^v\\d+(\\.\\d+)?$/);\n if (legacyAlias) return version;\n throw new ConfigurationError(\n `AdCP version ${JSON.stringify(version)} is not a recognized version format. ` +\n `Expected semver (e.g. '3.0.1', '3.1.0-beta.1'), bare minor ('3.0'), ` +\n `release-precision ('3.1-beta'), or legacy alias ('v3', 'v2.5').`,\n 'adcpVersion'\n );\n}\n\n/**\n * Collapse a bundle key to the release-precision string the AdCP wire schema\n * accepts for the `adcp_version` envelope field (spec PR\n * `adcontextprotocol/adcp#3493`). The wire pattern is\n * `^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$` — release-precision (MAJOR.MINOR with\n * optional prerelease), never full MAJOR.MINOR.PATCH semver.\n *\n * - Stable bundle key `'3.0'` / `'3.1'` → returned verbatim.\n * - Prerelease bundle key `'3.1.0-beta.0'` → `'3.1-beta.0'` (PATCH segment\n * dropped; the prerelease tag is the wire-meaningful release identifier,\n * PATCH is implementation-internal).\n * - Full stable semver `'3.0.11'` → `'3.0'` (patches don't change wire\n * shape; surface them via `build_version` on capabilities instead).\n * - Legacy alias `'v3'` / `'v2.5'` — returned verbatim. The wire spec\n * predates the envelope field, so legacy-aliased clients won't emit\n * `adcp_version` anyway (gated by `bundleSupportsAdcpVersionField`).\n *\n * The normalization rule is declared in `core/version-envelope.json`:\n *\n * > SDKs that read full-semver values from bundle metadata (e.g.\n * > ComplianceIndex.published_version = \"3.1.0-beta.1\") MUST normalize to\n * > release-precision (\"3.1-beta.1\") before emitting on the wire —\n * > meta-field values are NOT valid wire values.\n *\n * **Idempotent.** Re-applying to an already-wire-shaped value is a no-op:\n * `toReleasePrecisionWire('3.1-beta.0') === '3.1-beta.0'`. Safe to call\n * defensively on values a caller read off the wire and is passing back.\n *\n * **Prerelease regex is stricter than the wire pattern by design.** The wire\n * pattern allows `[a-zA-Z0-9.-]+` (any mix of dots and hyphens), but this\n * function only accepts SemVer §9-shaped prerelease tags\n * (`[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*`) — disallowing leading dots, double\n * dots, or trailing dots. Mirrors the path-traversal hardening on\n * {@link resolveBundleKey} (`'3.0.0-/../etc'`-style strings can't reach the\n * filesystem there, and shouldn't be silently mirrored to the wire here).\n * A future reader who wants to \"fix\" this to match the wire regex\n * character-for-character should NOT — the strictness is intentional.\n *\n * Defense: rejecting unrecognized shapes here surfaces SDK-internal misuse\n * (someone calling this with raw garbage) loudly instead of silently\n * emitting a non-spec wire string.\n */\n/**\n * The exact pattern `core/version-envelope.json` applies to `adcp_version`\n * on the wire. Kept verbatim so {@link validateAdcpVersionWire} doesn't\n * drift from the spec — bump only when the spec itself bumps.\n */\nconst ADCP_VERSION_WIRE_PATTERN = /^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$/;\n\n/**\n * Validate a string against the AdCP 3.1 `adcp_version` wire pattern.\n * Throws `ConfigurationError` with a hint that points at\n * {@link toReleasePrecisionWire} when the value would be sent on the wire\n * but doesn't satisfy `core/version-envelope.json`'s pattern.\n *\n * Use this when you're constructing a request envelope by hand (storyboard\n * fixtures, conformance harnesses, custom transports) and want a clear\n * error rather than a downstream AJV pattern-mismatch from the seller —\n * by the time the seller rejects the request, the buyer's stack frame is\n * long gone and `core/version-envelope.json/properties/adcp_version/pattern`\n * is the only clue.\n *\n * The SDK's own `buildVersionEnvelope` calls this as a postcondition after\n * normalizing the bundle key — should never throw in well-formed SDK code,\n * but if a future refactor breaks the normalization the assertion fires\n * with a message that names the helper to call.\n *\n * Returns the value with the type narrowed to `string` via assertion.\n */\nexport function validateAdcpVersionWire(value: unknown): asserts value is string {\n if (typeof value !== 'string') {\n throw new ConfigurationError(\n `adcp_version must be a string. Got ${typeof value}. ` +\n `Use toReleasePrecisionWire() to convert a bundle key or full-semver pin to a wire-shaped string.`,\n 'adcp_version'\n );\n }\n if (!ADCP_VERSION_WIRE_PATTERN.test(value)) {\n throw new ConfigurationError(\n `adcp_version ${JSON.stringify(value)} doesn't match the AdCP 3.1 wire pattern ${ADCP_VERSION_WIRE_PATTERN}. ` +\n `Full-semver bundle keys (e.g. \"3.1.0-beta.0\") are NOT valid wire values — ` +\n `call toReleasePrecisionWire() to normalize (e.g. \"3.1.0-beta.0\" → \"3.1-beta.0\").`,\n 'adcp_version'\n );\n }\n}\n\nexport function toReleasePrecisionWire(bundleKeyOrVersion: string): string {\n // Bare release-precision (MAJOR.MINOR or MAJOR.MINOR-PRE) — already wire-shaped.\n const releasePrecision = bundleKeyOrVersion.match(/^(\\d+)\\.(\\d+)(-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/);\n if (releasePrecision) {\n const [, major, minor, prerelease = ''] = releasePrecision;\n return `${major}.${minor}${prerelease}`;\n }\n // Full semver — collapse PATCH segment. Prerelease (if any) is preserved.\n const fullSemver = bundleKeyOrVersion.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/);\n if (fullSemver) {\n const [, major, minor, prerelease = ''] = fullSemver;\n return `${major}.${minor}${prerelease}`;\n }\n // Legacy alias passthrough. Callers that reach here with a legacy alias\n // shouldn't be emitting `adcp_version` (no version-envelope support), but\n // returning the input verbatim is least-surprise.\n if (/^v\\d+(\\.\\d+)?$/.test(bundleKeyOrVersion)) return bundleKeyOrVersion;\n throw new ConfigurationError(\n `Cannot normalize ${JSON.stringify(bundleKeyOrVersion)} to release-precision wire format. ` +\n `Expected a bundle key or AdCP version string.`,\n 'adcpVersion'\n );\n}\n\n/**\n * Resolve the directory that holds the bundled + core schemas for a given\n * AdCP version. Source layout (dev):\n * schemas/cache/<exact-version>/{bundled,core}\n * Built layout (dist):\n * dist/lib/schemas-data/<bundle-key>/{bundled,core}\n *\n * Stable releases use minor-name keys (`3.0/`); prereleases use full-version\n * keys (`3.1.0-beta.1/`). See {@link resolveBundleKey}.\n *\n * Falls back to the source-tree cache when dist isn't built (dev workflow\n * before `npm run build:lib`). For stable pins, the cache fallback scans\n * for the highest-patch sibling in the requested minor — `'3.0.0'` resolves\n * to `schemas/cache/3.0.1/` when only `3.0.1` is cached, matching dist's\n * collapse behavior.\n *\n * Throws when no bundle exists. Callers pinning a specific prerelease\n * surface the error; the construction-time fence in `resolveAdcpVersion`\n * catches most cross-major mistakes before this point.\n */\nfunction resolveSchemaRoot(version: string): string {\n const key = resolveBundleKey(version);\n const scopedRoot = scopedExternalSchemaRoots.getStore()?.get(key);\n if (scopedRoot && existsSync(scopedRoot)) return scopedRoot;\n\n const externalRoot = externalSchemaRoots.get(key);\n if (externalRoot && existsSync(externalRoot)) return externalRoot;\n\n const distCandidate = path.join(__dirname, '..', 'schemas-data', key);\n if (existsSync(distCandidate)) return distCandidate;\n\n // Published builds carry exact prerelease bundle directories\n // (`3.1.0-rc.1/`), while callers may pin the release-precision family\n // alias (`3.1-rc`). Resolve that alias before falling back to source cache.\n const releasePrecisionMatch = /^\\d+\\.\\d+-/.test(key);\n if (releasePrecisionMatch) {\n const distPrereleaseCandidate = findPrereleaseBundle(path.join(__dirname, '..', 'schemas-data'), key);\n if (distPrereleaseCandidate) return distPrereleaseCandidate;\n }\n\n // Source-tree fallback: cache stays exact-version-named, so map the key\n // back to the highest-patch cache directory in the same minor for stable\n // pins. Prereleases need an exact match.\n const cacheRoot = path.join(__dirname, '..', '..', '..', 'schemas', 'cache');\n const exactCandidate = path.join(cacheRoot, version);\n if (existsSync(exactCandidate)) return exactCandidate;\n\n // For minor-only or stable-patch pins, find the highest stable patch in\n // the cache that matches the resolved minor. Skip `*.previous` snapshots\n // — `sync-schemas` writes those as transient backups during replaceTree;\n // a partially-written snapshot whose patch number happens to be highest\n // would otherwise win the sort.\n const minorMatch = key.match(/^(\\d+)\\.(\\d+)$/);\n if (minorMatch && existsSync(cacheRoot)) {\n const [, major, minor] = minorMatch;\n const prefix = `${major}.${minor}.`;\n const cached = readdirSync(cacheRoot, { withFileTypes: true })\n .filter(\n e =>\n e.isDirectory() &&\n e.name.startsWith(prefix) &&\n !e.name.endsWith('.previous') &&\n /^\\d+\\.\\d+\\.\\d+$/.test(e.name)\n )\n .map(e => ({\n name: e.name,\n patch: parseInt(e.name.slice(prefix.length), 10),\n }))\n .filter(c => Number.isFinite(c.patch))\n .sort((a, b) => b.patch - a.patch);\n if (cached.length > 0) return path.join(cacheRoot, cached[0]!.name);\n }\n\n // For release-precision prerelease pins (`'3.1-beta'`, `'3.1-beta.0'`),\n // find the highest cached prerelease directory whose own release-precision\n // form starts with the requested key. A pin of `'3.1-beta'` matches any\n // directory whose `toReleasePrecisionWire` form is `'3.1-beta'` or\n // `'3.1-beta.*'`. A pin of `'3.1-beta.0'` matches `'3.1-beta.0'` or\n // `'3.1-beta.0.*'`. Sort newest-first by directory name with numeric\n // collation so rc.10 wins over rc.9.\n if (releasePrecisionMatch) {\n const cachePrereleaseCandidate = findPrereleaseBundle(cacheRoot, key);\n if (cachePrereleaseCandidate) return cachePrereleaseCandidate;\n }\n\n throw new Error(\n `AdCP schema data for version \"${version}\" not found. ` +\n `Looked for bundle key \"${key}\" in ${distCandidate}, exact path ${exactCandidate}, ` +\n `and the latest-patch fallback in ${cacheRoot}. ` +\n `Run \\`npm run sync-schemas\\` and \\`npm run build:lib\\` to populate the bundle.`\n );\n}\n\nfunction findPrereleaseBundle(root: string, key: string): string | undefined {\n if (!existsSync(root)) return undefined;\n const cached = readdirSync(root, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.endsWith('.previous'))\n .map(e => {\n try {\n return { name: e.name, rp: toReleasePrecisionWire(e.name) };\n } catch {\n return null;\n }\n })\n .filter((c): c is { name: string; rp: string } => c !== null)\n .filter(c => c.rp === key || c.rp.startsWith(`${key}.`))\n .sort((a, b) => compareBundleNamesDesc(a.name, b.name));\n if (cached.length === 0) return undefined;\n return path.join(root, cached[0]!.name);\n}\n\nfunction compareBundleNamesDesc(a: string, b: string): number {\n return b.localeCompare(a, undefined, { numeric: true, sensitivity: 'base' });\n}\n\ninterface LoaderState {\n ajv: Ajv;\n fileIndex: Map<string, string>;\n validators: Map<string, ValidateFunction>;\n rawSchemas: Map<string, Record<string, unknown>>;\n entityPaths: Map<string, SchemaEntityPath[]>;\n schemaIdFiles?: Map<string, string>;\n root: string;\n coreLoaded: boolean;\n version: string;\n}\n\nconst states: Map<string, LoaderState> = new Map();\nconst externalSchemaRoots: Map<string, string> = new Map();\nconst scopedExternalSchemaRoots = new AsyncLocalStorage<Map<string, string>>();\n\nfunction stateCacheKey(bundleKey: string, root: string): string {\n return `${bundleKey}\\0${root}`;\n}\n\nfunction clearStatesForBundle(bundleKey: string): void {\n for (const [stateKey, state] of states) {\n if (state.version === bundleKey) states.delete(stateKey);\n }\n}\n\nfunction hasSchemaRootShape(root: string): boolean {\n if (!existsSync(root)) return false;\n const bundledRoot = path.join(root, 'bundled');\n const files = existsSync(bundledRoot) ? walkJsonFiles(bundledRoot) : walkJsonFiles(root);\n return files.some(file => {\n try {\n const schema = loadJson(file);\n return typeof schema.$id === 'string' || typeof schema.$schema === 'string';\n } catch {\n return false;\n }\n });\n}\n\nfunction schemaIdVersionHint(schemaId: string): string | undefined {\n return schemaId.match(/\\/schemas\\/([^/]+)\\//)?.[1];\n}\n\nfunction collectSchemaRootVersionAliases(root: string): Set<string> {\n const aliases = new Set<string>();\n for (const file of walkJsonFiles(root)) {\n let schema: LoadedSchema;\n try {\n schema = loadJson(file);\n } catch {\n continue;\n }\n if (typeof schema.$id !== 'string') continue;\n const hint = schemaIdVersionHint(schema.$id);\n if (!hint) continue;\n for (const alias of schemaRootVersionAliases(hint)) aliases.add(alias);\n }\n return aliases;\n}\n\nfunction schemaRootVersionAliases(version: string): Set<string> {\n const aliases = new Set<string>([version]);\n try {\n aliases.add(resolveBundleKey(version));\n } catch {\n // Keep the raw value only; callers that care will throw separately.\n }\n try {\n const releasePrecision = toReleasePrecisionWire(version);\n aliases.add(releasePrecision);\n const family = prereleaseFamilyAlias(releasePrecision);\n if (family) aliases.add(family);\n } catch {\n // Keep any aliases already collected.\n }\n return aliases;\n}\n\nfunction prereleaseFamilyAlias(releasePrecisionVersion: string): string | undefined {\n return releasePrecisionVersion.match(/^(\\d+\\.\\d+-[0-9A-Za-z-]+)\\.\\d+$/)?.[1];\n}\n\nfunction collectSchemaRootVersionAliasGroups(root: string): Array<{ hint: string; aliases: Set<string> }> {\n const groups: Array<{ hint: string; aliases: Set<string> }> = [];\n for (const file of walkJsonFiles(root)) {\n let schema: LoadedSchema;\n try {\n schema = loadJson(file);\n } catch {\n continue;\n }\n if (typeof schema.$id !== 'string') continue;\n const hint = schemaIdVersionHint(schema.$id);\n if (!hint) continue;\n groups.push({ hint, aliases: schemaRootVersionAliases(hint) });\n }\n return groups;\n}\n\nfunction assertSchemaRootMatchesVersion(version: string, root: string): Set<string> {\n const expectedAliases = schemaRootVersionAliases(version);\n const rootGroups = collectSchemaRootVersionAliasGroups(root);\n const rootAliases = collectSchemaRootVersionAliases(root);\n if (\n rootGroups.length > 0 &&\n rootGroups.every(group => [...group.aliases].some(alias => expectedAliases.has(alias)))\n ) {\n return new Set([...expectedAliases, ...rootAliases]);\n }\n const found =\n rootGroups.length === 0\n ? 'no AdCP schema ids'\n : rootGroups\n .map(group => `${group.hint} (${Array.from(group.aliases).sort().join(', ')})`)\n .sort()\n .join(', ');\n throw new Error(\n `External AdCP schema root for version \"${version}\" at ${root} does not match the requested version and ` +\n `must contain only schema ids matching ${Array.from(expectedAliases).sort().join(', ')}; found ${found}.`\n );\n}\n\nconst externalSchemaRootAliases: Map<string, Set<string>> = new Map();\n\n/**\n * Register a schema bundle supplied outside the installed SDK package.\n *\n * Compliance runners use this when `--compliance-dir` points at another\n * package/check-out whose storyboards and schema bundle should be used\n * together. The root must be the schema-data directory itself, e.g.\n * `.../dist/lib/schemas-data/3.0`.\n */\nexport function registerExternalSchemaRoot(version: string, root: string): void {\n const key = resolveBundleKey(version);\n if (!hasSchemaRootShape(root)) {\n throw new Error(`External AdCP schema root for version \"${version}\" not found or empty at ${root}`);\n }\n const aliases = assertSchemaRootMatchesVersion(version, root);\n externalSchemaRootAliases.set(key, aliases);\n for (const alias of aliases) {\n const previous = externalSchemaRoots.get(alias);\n externalSchemaRoots.set(alias, root);\n if (previous !== root) clearStatesForBundle(alias);\n }\n}\n\n/** Test/helper hook for unregistering an external schema bundle. */\nexport function unregisterExternalSchemaRoot(version: string): void {\n const key = resolveBundleKey(version);\n const aliases = new Set(schemaRootVersionAliases(version));\n for (const [registeredKey, registeredAliases] of externalSchemaRootAliases) {\n if (\n registeredKey === key ||\n registeredAliases.has(key) ||\n [...aliases].some(alias => registeredAliases.has(alias))\n ) {\n for (const alias of registeredAliases) aliases.add(alias);\n externalSchemaRootAliases.delete(registeredKey);\n }\n }\n for (const alias of aliases) {\n externalSchemaRoots.delete(alias);\n clearStatesForBundle(alias);\n }\n}\n\n/**\n * Run a callback with an external schema root scoped to the current async\n * execution chain. Unlike `registerExternalSchemaRoot`, this does not poison\n * process-global validation state for later hosted/compliance runs.\n */\nexport function withExternalSchemaRoot<T>(version: string, root: string | undefined, fn: () => T): T {\n if (root === undefined) return fn();\n if (!hasSchemaRootShape(root)) {\n throw new Error(`External AdCP schema root for version \"${version}\" not found or empty at ${root}`);\n }\n const aliases = assertSchemaRootMatchesVersion(version, root);\n const parent = scopedExternalSchemaRoots.getStore();\n const next = new Map(parent);\n for (const alias of aliases) {\n next.set(alias, root);\n clearStatesForBundle(alias);\n }\n return scopedExternalSchemaRoots.run(next, fn);\n}\n\nfunction walkJsonFiles(dir: string): string[] {\n if (!existsSync(dir)) return [];\n const out: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) out.push(...walkJsonFiles(full));\n else if (entry.isFile() && entry.name.endsWith('.json')) out.push(full);\n }\n return out;\n}\n\nfunction loadJson(file: string): LoadedSchema {\n return JSON.parse(readFileSync(file, 'utf-8')) as LoadedSchema;\n}\n\n/**\n * Clear `additionalProperties: false` at the response root so envelope\n * fields (`replayed`, `context`, `ext`, and future envelope additions)\n * can ride alongside the tool-specific body — per security.mdx the\n * envelope is always extensible. Upstream bundled schemas pin\n * `additionalProperties: false` at the root on a handful of mutating\n * tools (the property-list family), which rejects envelope fields like\n * `replayed` that aren't declared in the tool-specific body.\n *\n * Scope is deliberately narrow: only the top-level object, plus each\n * direct branch of a root-level `oneOf` / `anyOf` / `allOf`. Nested\n * bodies stay strict so response-side drift detection still catches\n * typos inside `Product`, `Package`, `MediaBuy` etc. Applied only to\n * response variants; request schemas stay strict so outgoing drift\n * fails at the edge.\n */\nfunction relaxResponseRoot(schema: LoadedSchema): LoadedSchema {\n const clone = { ...schema };\n if (clone.additionalProperties === false) {\n clone.additionalProperties = true;\n }\n for (const key of ['oneOf', 'anyOf', 'allOf'] as const) {\n const branches = clone[key];\n if (Array.isArray(branches)) {\n clone[key] = branches.map(branch => {\n if (!branch || typeof branch !== 'object') return branch;\n const branchClone = { ...(branch as Record<string, unknown>) };\n if (branchClone.additionalProperties === false) {\n branchClone.additionalProperties = true;\n }\n return branchClone;\n });\n }\n }\n return clone;\n}\n\nfunction getAjvRegisteredIds(ajv: Ajv): Set<string> {\n const internals = ajv as unknown as {\n schemas?: Record<string, unknown>;\n refs?: Record<string, unknown>;\n };\n return new Set([...Object.keys(internals.schemas ?? {}), ...Object.keys(internals.refs ?? {})]);\n}\n\n/**\n * Build the (toolName, direction) → file path index by scanning the schema\n * tree once. Runs eagerly at first validator lookup.\n */\nfunction buildFileIndex(root: string): Map<string, string> {\n const index = new Map<string, string>();\n const record = (toolName: string, direction: Direction, file: string): void => {\n index.set(`${toolName}::${direction}`, file);\n };\n\n // Sync request/response live in the pre-resolved bundled/ tree.\n const bundledRoot = path.join(root, 'bundled');\n for (const file of walkJsonFiles(bundledRoot)) {\n const base = path.basename(file, '.json');\n if (base.endsWith('-request')) {\n const tool = base.slice(0, -'-request'.length).replace(/-/g, '_');\n record(tool, 'request', file);\n } else if (base.endsWith('-response')) {\n const tool = base.slice(0, -'-response'.length).replace(/-/g, '_');\n record(tool, 'sync', file);\n }\n }\n\n // Async variants AND domain schemas that ship flat (not pre-bundled) both\n // live in the per-domain directories. Walk each for sync request/response\n // files and async variant files. Skip `bundled/` (already indexed above)\n // and `core/` (pure $ref targets, no tools).\n //\n // Flat-tree domains include `governance/`, `brand/`, `account/`,\n // `content-standards/`, `property/`, `collection/` — their schemas are\n // NOT pre-resolved into `bundled/`, so a bundled-only walk would miss\n // every `check_governance` / `acquire_rights` / `creative_approval` /\n // `sync_governance` / `*_property_list` request-response pair. That gap\n // (flagged by the ad-tech-protocol reviewer on PR #831) would leave\n // protocol-wide-requirement-bearing tasks (idempotency_key pattern,\n // `format: uri` on `caller`) invisible to the strict-validation signal.\n // Register flat-tree sync pairs only when `bundled/` didn't already\n // index them, so pre-resolved schemas (with $refs already inlined) win\n // for any domain that ships both.\n for (const entry of readdirSync(root, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === 'bundled' || entry.name === 'core') continue;\n const domainDir = path.join(root, entry.name);\n for (const file of walkJsonFiles(domainDir)) {\n const base = path.basename(file, '.json');\n if (base.endsWith('-async-response-submitted')) {\n const tool = base.slice(0, -'-async-response-submitted'.length).replace(/-/g, '_');\n record(tool, 'submitted', file);\n } else if (base.endsWith('-async-response-working')) {\n const tool = base.slice(0, -'-async-response-working'.length).replace(/-/g, '_');\n record(tool, 'working', file);\n } else if (base.endsWith('-async-response-input-required')) {\n const tool = base.slice(0, -'-async-response-input-required'.length).replace(/-/g, '_');\n record(tool, 'input-required', file);\n } else if (base.endsWith('-request')) {\n const tool = base.slice(0, -'-request'.length).replace(/-/g, '_');\n if (!index.has(`${tool}::request`)) record(tool, 'request', file);\n } else if (base.endsWith('-response')) {\n const tool = base.slice(0, -'-response'.length).replace(/-/g, '_');\n if (!index.has(`${tool}::sync`)) record(tool, 'sync', file);\n }\n }\n }\n\n return index;\n}\n\nfunction ensureInit(version: string): LoaderState {\n // States are keyed by bundle key, not by raw version string, so\n // `getValidator('foo', 'request', '3.0.0')` and the same call with\n // `'3.0.1'` share state — both resolve to bundle key `'3.0'` and the\n // same compiled AJV instance.\n const key = resolveBundleKey(version);\n const root = resolveSchemaRoot(version);\n const cacheKey = stateCacheKey(key, root);\n const cached = states.get(cacheKey);\n if (cached) return cached;\n const ajv = new Ajv({\n strict: false,\n allErrors: true,\n allowUnionTypes: true,\n });\n addFormats(ajv);\n\n const state: LoaderState = {\n ajv,\n fileIndex: buildFileIndex(root),\n validators: new Map(),\n rawSchemas: new Map(),\n entityPaths: new Map(),\n root,\n coreLoaded: false,\n version: key,\n };\n states.set(cacheKey, state);\n return state;\n}\n\n/**\n * Lazily pre-register every non-tool JSON schema shipped with the SDK so\n * cross-domain `$ref`s compile. Async response variants and flat-tree\n * domain schemas `$ref` out to three classes of building-block schemas:\n *\n * - `core/` + `enums/` — shared primitives referenced by every domain.\n * - `pricing-options/`, `error-details/`, `extensions/` — stand-alone\n * fragment trees.\n * - Sibling fragments inside each domain directory — e.g.\n * `governance/audience-constraints.json` referenced by\n * `governance/sync-plans-request.json`, or `signals/*` fragments\n * referenced by `signals/activate-signal-*.json`.\n *\n * Walk every directory except `bundled/` (pre-resolved schemas with refs\n * already inlined). Response files that `buildFileIndex` registered as tools\n * are registered with `relaxResponseRoot` applied, matching `getValidator`.\n * The fileIndex check is stricter than a filename-suffix match:\n * building-block fragments like `core/pagination-response.json` end in\n * `-response.json` but aren't tools, so suffix-matching would wrongly treat\n * them as relaxable response roots.\n */\nfunction ensureCoreLoaded(s: LoaderState): void {\n if (s.coreLoaded) return;\n // Tool response files are pre-registered with the same response-root\n // relaxation `getValidator` would apply. This matters for the async response\n // union: `core/async-response-data.json` can `$ref` both async variants and\n // sync responses, so callers must not have to prewarm response validators\n // before compiling a request that references the union.\n //\n // Why this matters: bundles whose source tree doesn't include a `bundled/`\n // pre-resolved subtree (e.g. v2.5, where the spec ships flat schemas with\n // unresolved `$ref`s) classify fragments like `media-buy/package-request.json`\n // as tool `package::request` via the filename-suffix heuristic in\n // `buildFileIndex`. Skipping all tool files would leave that fragment\n // unregistered, so a later compile of `create_media_buy` fails on\n // `MissingRefError: can't resolve /schemas/media-buy/package-request.json`.\n //\n const responseToolFiles = new Map<string, Direction>();\n for (const [key, file] of s.fileIndex) {\n if (key.endsWith('::request')) continue;\n const direction = key.slice(key.indexOf('::') + 2) as Direction;\n responseToolFiles.set(file, direction);\n }\n const registeredIds = getAjvRegisteredIds(s.ajv);\n for (const entry of readdirSync(s.root, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === 'bundled') continue;\n const abs = path.join(s.root, entry.name);\n for (const file of walkJsonFiles(abs)) {\n const responseDirection = responseToolFiles.get(file);\n const schema = loadJson(file);\n const schemaToRegister = responseDirection === undefined ? schema : relaxResponseRoot(schema);\n if (typeof schemaToRegister.$id === 'string' && !registeredIds.has(schemaToRegister.$id)) {\n s.ajv.addSchema(schemaToRegister);\n registeredIds.add(schemaToRegister.$id);\n }\n }\n }\n s.coreLoaded = true;\n}\n\n/**\n * Look up the compiled AJV validator for a given tool + direction in the\n * specified AdCP version's schema bundle. Returns `undefined` when no\n * schema exists for the pair — callers can skip validation cleanly (e.g.,\n * custom tools outside the AdCP spec).\n *\n * `version` defaults to the SDK-pinned `ADCP_VERSION`. Pass the per-instance\n * `getAdcpVersion()` value when the validator should track the client/server's\n * configured pin (Stage 3+).\n */\nexport function getValidator(\n toolName: string,\n direction: Direction,\n version: string = ADCP_VERSION\n): ValidateFunction | undefined {\n const s = ensureInit(version);\n const cacheKey = `${toolName}::${direction}`;\n const cached = s.validators.get(cacheKey);\n if (cached) return cached;\n\n const file = s.fileIndex.get(cacheKey);\n if (!file) return undefined;\n\n // Schemas that $ref into core/ and enums/ need those trees registered\n // before compile. Async response variants always do; flat-tree domain\n // schemas (anything outside `bundled/`) do too — their $refs weren't\n // pre-resolved at spec-publish time.\n const fromBundled = file.includes(`${path.sep}bundled${path.sep}`);\n if (direction === 'request' || !fromBundled) ensureCoreLoaded(s);\n\n const rawSchema = loadJson(file);\n // Bundled files inline every referenced subschema with the original\n // canonical `$id` (e.g. `core/version-envelope.json` appears nested\n // inside every bundled tool response). Bundled files carry NO\n // internal `$ref`s — the spec publishes them fully resolved, see\n // the `note: \"This is a bundled schema with all $ref resolved inline\"`\n // tag on every bundled file. Once `ensureCoreLoaded` has registered\n // any of those core schemas standalone (which it does for the flat-\n // tree governance / brand / property domains), Ajv's compile of a\n // bundled file trips the ambiguous-ref check on every nested $id.\n //\n // The fix: strip nested `$id` fields before compile on bundled\n // schemas. The root `$id` is kept (it's the validator's lookup key);\n // every other `$id` in the tree was just metadata anyway.\n const prepared = fromBundled ? stripNestedIds(rawSchema) : rawSchema;\n const schema = direction === 'request' ? prepared : relaxResponseRoot(prepared);\n const existing = typeof schema.$id === 'string' ? s.ajv.getSchema(schema.$id) : undefined;\n const compiled = existing ?? s.ajv.compile(schema);\n s.validators.set(cacheKey, compiled);\n return compiled;\n}\n\n/**\n * Compile an arbitrary schema from the cached bundle by path, e.g.\n * `core/mcp-webhook-payload.json`. Used by storyboard webhook assertions\n * whose payload schema is not tied to a tool request/response pair.\n */\nexport function getSchemaValidatorByRef(\n schemaRef: string,\n version: string = ADCP_VERSION\n): ValidateFunction | undefined {\n const s = ensureInit(version);\n const normalized = normalizeSchemaRef(schemaRef);\n if (!normalized) return undefined;\n\n const cacheKey = `schema-ref::${normalized}`;\n const cached = s.validators.get(cacheKey);\n if (cached) return cached;\n\n const file = path.join(s.root, normalized);\n if (!existsSync(file)) return undefined;\n\n // Use an isolated AJV instance for arbitrary schema refs. Tool response\n // validators deliberately relax some roots for SDK back-compat; webhook\n // payload schemas need strict raw JSON Schema behavior without polluting the\n // shared tool-validator registry with unrelaxed response schemas.\n const ajv = new Ajv({\n strict: false,\n allErrors: true,\n allowUnionTypes: true,\n });\n addFormats(ajv);\n const dependencySchemas: LoadedSchema[] = [];\n const registeredIds = new Set<string>();\n for (const schemaFile of walkJsonFiles(s.root)) {\n if (schemaFile.includes(`${path.sep}bundled${path.sep}`)) continue;\n if (schemaFile === file) continue;\n const schema = loadJson(schemaFile);\n if (typeof schema.$id === 'string' && !registeredIds.has(schema.$id)) {\n registeredIds.add(schema.$id);\n dependencySchemas.push(schema);\n }\n }\n if (dependencySchemas.length > 0) {\n ajv.addSchema(dependencySchemas);\n }\n const rawSchema = loadJson(file);\n const compiled = ajv.compile(rawSchema);\n s.validators.set(cacheKey, compiled);\n return compiled;\n}\n\nfunction normalizeSchemaRef(schemaRef: string): string | undefined {\n const trimmed = schemaRef.replace(/^\\/+/, '');\n if (trimmed.length === 0) return undefined;\n const normalized = path.normalize(trimmed);\n if (normalized.startsWith('..') || path.isAbsolute(normalized)) return undefined;\n return normalized;\n}\n\n/**\n * Strip `$id` from every subschema of a bundled response file, preserving\n * the root `$id`. Bundled files are fully inlined (no internal `$ref`s),\n * so the nested `$id`s are vestigial metadata — Ajv only cares about the\n * root `$id` for validator lookup. Without this strip, Ajv's\n * `checkAmbiguousRef` throws when an inlined nested `$id` matches one\n * already registered standalone via `ensureCoreLoaded`.\n *\n * Returns a deep-copied tree; the input is not mutated.\n */\nfunction stripNestedIds(schema: LoadedSchema): LoadedSchema {\n const root = JSON.parse(JSON.stringify(schema)) as LoadedSchema;\n const rootId = typeof root.$id === 'string' ? root.$id : undefined;\n const walk = (node: unknown): void => {\n if (Array.isArray(node)) {\n for (const item of node) walk(item);\n return;\n }\n if (!node || typeof node !== 'object') return;\n const obj = node as Record<string, unknown>;\n if (typeof obj.$id === 'string' && obj.$id !== rootId) {\n delete obj.$id;\n }\n for (const value of Object.values(obj)) walk(value);\n };\n walk(root);\n return root;\n}\n\n/** List of (toolName, direction) pairs that have schemas. Used by tests. */\nexport function listValidatorKeys(version: string = ADCP_VERSION): string[] {\n const s = ensureInit(version);\n return [...s.fileIndex.keys()].sort();\n}\n\n/**\n * `$id`s of every schema currently registered with the AdCP validator's AJV\n * instance for `version`. Used by the schema-validator to extract the\n * rejecting sub-schema's `$id` from an Ajv error's `schemaPath`: when a\n * `$ref` is followed, Ajv prefixes the schemaPath with the target schema's\n * `$id`, so the longest registered `$id` that prefixes a schemaPath is the\n * sub-schema responsible for the failure.\n *\n * The set grows as `getValidator` calls trigger `ensureCoreLoaded` and\n * compile new tool roots — callers should read it AFTER the validate call\n * they're projecting errors from.\n */\nexport function getRegisteredSchemaIds(version: string = ADCP_VERSION): readonly string[] {\n const s = ensureInit(version);\n // Ajv 8 keeps registered schemas at `ajv.schemas` (URI → SchemaEnv). Returning\n // the keys is enough for prefix matching; we don't expose the SchemaEnv values.\n const registry = (s.ajv as unknown as { schemas?: Record<string, unknown> }).schemas;\n return registry ? Object.keys(registry) : [];\n}\n\n/** Suffix used in the suffix table — exported for testing. */\nexport { SCHEMA_FILENAME_SUFFIX };\n\n/**\n * Returns true when the schema bundle for `version` is reachable from the\n * dist build or the source-tree fallback. Cheap synchronous check; safe\n * to call at construction time of clients/servers to fail fast on a pin\n * we don't have schemas for.\n */\nexport function hasSchemaBundle(version: string): boolean {\n try {\n resolveSchemaRoot(version);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Test hook: reset cached state. With no argument, clears every version's\n * loader state; with a version, clears only the bundle that version\n * resolves to (so passing `'3.0.0'` and `'3.0.1'` both clear the `'3.0'`\n * bundle).\n */\nexport function _resetValidationLoader(version?: string): void {\n if (version === undefined) {\n states.clear();\n } else {\n clearStatesForBundle(resolveBundleKey(version));\n }\n}\n\n/**\n * Returns true when `field` is **explicitly declared** as a top-level property\n * in the request schema for `toolName`, or when no schema is available\n * (fail-open). Used by the storyboard runner to decide whether to inject\n * envelope fields that aren't universally present across tools (e.g. `brand`,\n * `account`, `ext`).\n *\n * Reads the raw JSON schema file without compiling — avoids coupling to AJV\n * internals. Only inspects the top-level `properties` map; nested sub-schemas\n * are not traversed. Results are memoized in `LoaderState.rawSchemas` so\n * multi-step storyboard runs don't re-read the same file on each step.\n *\n * **Semantic note**: AdCP 3.1.0-beta.3 set `additionalProperties: true` on\n * mutating request schemas (vendor-extension friendly). Before that flip, the\n * helper used `additionalProperties: false` as the gate — \"if the schema is\n * strict, only `properties` keys are allowed.\" Now requests are universally\n * permissive at the schema level, so that gate would say `true` for any field\n * on any request — defeating the storyboard runner's intent (\"only inject\n * envelope fields the tool's schema declares it expects to see\"). The helper\n * now checks `field in properties` directly: the question we actually care\n * about is **\"does the schema declare this field at top level?\"**, not\n * \"does the schema permit this field at top level?\" (it permits everything).\n *\n * Fails open (returns `true`) when:\n * - No schema file is indexed for the tool (custom tool, schema not synced)\n * - The schema root is not reachable (schemas not built/synced yet)\n * - Any I/O / parse error during the read\n *\n * @internal — not part of the public API surface; may change without a major bump.\n */\nexport function schemaAllowsTopLevelField(toolName: string, field: string, version: string = ADCP_VERSION): boolean {\n try {\n const s = ensureInit(version);\n const cacheKey = `${toolName}::request`;\n const file = s.fileIndex.get(cacheKey);\n if (!file) return true;\n let schema = s.rawSchemas.get(cacheKey);\n if (!schema) {\n schema = loadJson(file) as Record<string, unknown>;\n s.rawSchemas.set(cacheKey, schema);\n }\n const props = schema.properties as Record<string, unknown> | undefined;\n return props !== undefined && field in props;\n } catch {\n return true;\n }\n}\n\nexport interface SchemaEntityPath {\n /** Property path from the tool request root. `*` addresses every array item. */\n path: string[];\n /** AdCP `x-entity` annotation found on the identity-bearing leaf. */\n xEntity: string;\n}\n\n/**\n * Return every request field carrying an `x-entity` annotation. Unlike the\n * server hydration map this walks nested arrays/objects, because storyboard\n * fixture handles commonly live at `packages[*].product_id` and\n * `packages[*].pricing_option_id`.\n *\n * Missing schemas fail closed with an empty list: handle substitution must\n * never guess from a field name alone.\n */\nexport function getRequestSchemaEntityPaths(\n toolName: string,\n version: string = ADCP_VERSION\n): readonly SchemaEntityPath[] {\n try {\n const s = ensureInit(version);\n const cacheKey = `${toolName}::request`;\n const cached = s.entityPaths.get(cacheKey);\n if (cached) return cached;\n const file = s.fileIndex.get(cacheKey);\n if (!file) return [];\n\n const root = loadJson(file) as Record<string, unknown>;\n const found = new Map<string, SchemaEntityPath>();\n const stack = new Set<string>();\n\n const resolvePointer = (document: unknown, fragment: string): unknown => {\n if (!fragment || fragment === '#') return document;\n if (!fragment.startsWith('#/')) return undefined;\n let current = document;\n for (const encoded of fragment.slice(2).split('/')) {\n if (!current || typeof current !== 'object') return undefined;\n const key = encoded.replace(/~1/g, '/').replace(/~0/g, '~');\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n };\n\n const resolveRef = (\n ref: string,\n currentFile: string,\n currentDocument: Record<string, unknown>\n ): { node: unknown; file: string; document: Record<string, unknown>; key: string } | undefined => {\n const hash = ref.indexOf('#');\n const refPath = hash >= 0 ? ref.slice(0, hash) : ref;\n const fragment = hash >= 0 ? ref.slice(hash) : '';\n if (!refPath) {\n return {\n node: resolvePointer(currentDocument, fragment),\n file: currentFile,\n document: currentDocument,\n key: `${currentFile}${fragment}`,\n };\n }\n\n const schemaRelative = refPath.match(/\\/schemas\\/[^/]+\\/(.+)$/)?.[1];\n const candidates = [\n schemaRelative ? path.join(s.root, schemaRelative) : undefined,\n path.resolve(path.dirname(currentFile), refPath),\n ].filter((candidate): candidate is string => candidate !== undefined);\n let targetFile = candidates.find(candidate => existsSync(candidate));\n // Standard AdCP refs encode their schema-root-relative file path, so\n // they resolve without parsing every JSON file in the bundle. Build the\n // expensive $id index only for an unusual ref that cannot be resolved\n // by path.\n if (!targetFile) {\n if (!s.schemaIdFiles) {\n const idToFile = new Map<string, string>();\n for (const schemaFile of walkJsonFiles(s.root)) {\n try {\n const schema = loadJson(schemaFile);\n if (typeof schema.$id === 'string') idToFile.set(schema.$id, schemaFile);\n } catch {\n // A malformed unrelated schema is not a usable ref target.\n }\n }\n s.schemaIdFiles = idToFile;\n }\n targetFile = s.schemaIdFiles.get(refPath);\n }\n if (!targetFile) return undefined;\n const document = loadJson(targetFile) as Record<string, unknown>;\n return {\n node: resolvePointer(document, fragment),\n file: targetFile,\n document,\n key: `${targetFile}${fragment}`,\n };\n };\n\n const walk = (\n node: unknown,\n propertyPath: string[],\n currentFile: string,\n currentDocument: Record<string, unknown>,\n depth: number\n ): void => {\n if (!node || typeof node !== 'object' || depth > 48) return;\n const obj = node as Record<string, unknown>;\n if (typeof obj['x-entity'] === 'string' && propertyPath.length > 0) {\n const entityPath = { path: [...propertyPath], xEntity: obj['x-entity'] as string };\n found.set(`${entityPath.path.join('.')}\\0${entityPath.xEntity}`, entityPath);\n }\n\n if (typeof obj.$ref === 'string') {\n const target = resolveRef(obj.$ref, currentFile, currentDocument);\n if (target && target.node !== undefined) {\n const guard = `${target.key}\\0${propertyPath.join('.')}`;\n if (!stack.has(guard)) {\n stack.add(guard);\n walk(target.node, propertyPath, target.file, target.document, depth + 1);\n stack.delete(guard);\n }\n }\n }\n\n const properties = obj.properties;\n if (properties && typeof properties === 'object' && !Array.isArray(properties)) {\n for (const [key, child] of Object.entries(properties as Record<string, unknown>)) {\n walk(child, [...propertyPath, key], currentFile, currentDocument, depth + 1);\n }\n }\n if (obj.items !== undefined) {\n walk(obj.items, [...propertyPath, '*'], currentFile, currentDocument, depth + 1);\n }\n for (const keyword of ['allOf', 'anyOf', 'oneOf'] as const) {\n const branches = obj[keyword];\n if (Array.isArray(branches)) {\n for (const branch of branches) walk(branch, propertyPath, currentFile, currentDocument, depth + 1);\n }\n }\n for (const keyword of ['if', 'then', 'else', 'not'] as const) {\n if (obj[keyword] !== undefined) {\n walk(obj[keyword], propertyPath, currentFile, currentDocument, depth + 1);\n }\n }\n };\n\n walk(root, [], file, root, 0);\n const result = [...found.values()].sort((a, b) => {\n const byPath = a.path.join('.').localeCompare(b.path.join('.'));\n return byPath || a.xEntity.localeCompare(b.xEntity);\n });\n s.entityPaths.set(cacheKey, result);\n return result;\n } catch {\n return [];\n }\n}\n\n/**\n * Resolve a JSON Schema `default` value by walking a dot-separated property\n * path through a schema's nested `properties` maps.\n *\n * This intentionally does not instantiate AJV's `useDefaults` mutation mode.\n * Callers decide when a schema default is semantically meaningful for their\n * runtime object; this helper only reports what the bundled schema declares.\n *\n * Fails closed (`undefined`) when the schema is unavailable, the path is not a\n * concrete properties path, or the target schema node has no `default`.\n *\n * @internal — not part of the public API surface; may change without a major bump.\n */\nexport function getSchemaDefaultByPath(schemaRef: string, dottedPath: string, version: string = ADCP_VERSION): unknown {\n try {\n const s = ensureInit(version);\n const normalized = normalizeSchemaRef(schemaRef);\n if (!normalized) return undefined;\n\n const cacheKey = `schema-ref::${normalized}`;\n const file = path.join(s.root, normalized);\n if (!existsSync(file)) return undefined;\n\n let schema = s.rawSchemas.get(cacheKey);\n if (!schema) {\n schema = loadJson(file) as Record<string, unknown>;\n s.rawSchemas.set(cacheKey, schema);\n }\n\n const node = resolveSchemaPropertyPath(schema, dottedPath);\n if (!node || !Object.prototype.hasOwnProperty.call(node, 'default')) return undefined;\n return cloneJsonValue((node as { default: unknown }).default);\n } catch {\n return undefined;\n }\n}\n\nfunction resolveSchemaPropertyPath(\n schema: Record<string, unknown>,\n dottedPath: string\n): Record<string, unknown> | undefined {\n let current: unknown = schema;\n for (const key of dottedPath.split('.')) {\n if (!current || typeof current !== 'object') return undefined;\n const props = (current as Record<string, unknown>).properties;\n if (!props || typeof props !== 'object') return undefined;\n if (!Object.prototype.hasOwnProperty.call(props, key)) return undefined;\n current = (props as Record<string, unknown>)[key];\n }\n return current && typeof current === 'object' ? (current as Record<string, unknown>) : undefined;\n}\n\nfunction cloneJsonValue(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n return JSON.parse(JSON.stringify(value)) as unknown;\n}\n"],"mappings":"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","names":["require"]}
1
+ {"version":3,"sources":["../../../src/lib/validation/schema-loader.ts"],"sourcesContent":["import { fileURLToPath as __adcpFileURLToPath } from 'node:url';\nimport { dirname as __adcpDirname } from 'node:path';\nimport { createRequire as __adcpCreateRequire } from 'node:module';\nconst __dirname = __adcpDirname(__adcpFileURLToPath(import.meta.url));\nconst require = __adcpCreateRequire(import.meta.url);\n/**\n * JSON Schema loader for AdCP tool request/response validation.\n *\n * Loads the bundled per-tool schemas shipped with the SDK plus the\n * `core/` schemas that async response variants `$ref`, then compiles\n * AJV validators lazily by `(toolName, direction)`.\n *\n * Stage 3: state is per-AdCP-version. The same SDK instance can hold\n * compiled validators for `3.0.0`, `3.0.1`, `3.1.0-beta.1`, etc. side by\n * side; callers pass the version they're validating against. Default is\n * the SDK-pinned `ADCP_VERSION` so callers that don't care about\n * cross-version selection (most internal call sites) keep working\n * unchanged.\n */\n\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport { readdirSync, readFileSync, existsSync } from 'fs';\nimport path from 'path';\nimport { ADCP_VERSION } from '../version';\nimport { ConfigurationError } from '../errors';\n\nexport type ResponseVariant = 'sync' | 'submitted' | 'working' | 'input-required';\nexport type Direction = 'request' | ResponseVariant;\n\ninterface LoadedSchema {\n $id?: string;\n [k: string]: unknown;\n}\n\nconst SCHEMA_FILENAME_SUFFIX: Record<Direction, string> = {\n request: 'request',\n sync: 'response',\n submitted: 'async-response-submitted',\n working: 'async-response-working',\n 'input-required': 'async-response-input-required',\n};\n\n/**\n * Map a consumer-provided version pin to the loader's bundle key.\n *\n * - Stable semver `'3.0.0'` / `'3.0.1'` → `'3.0'` (latest patch in minor)\n * - Bare minor `'3.0'` → `'3.0'` (already the bundle key)\n * - Release-precision prerelease `'3.1-beta'` / `'3.1-beta.0'` →\n * returned verbatim. {@link resolveSchemaRoot} fuzzy-resolves to the\n * highest cached prerelease directory whose own release-precision form\n * matches (e.g. `'3.1-beta'` matches `schemas/cache/3.1.0-beta.0/`).\n * Accepted because sellers advertise `supported_versions` in this\n * shape (`[\"3.1-beta\"]`), and a buyer reading that off the wire must\n * be able to pin to it.\n * - Full prerelease semver `'3.1.0-beta.1'` → `'3.1.0-beta.1'`\n * (exact-version, intentional pin)\n * - Legacy alias `'v3'` / `'v2.5'` / `'v2.6'` → returned verbatim (cache\n * historically keyed these directories by the alias name)\n *\n * Per the AdCP spec convention patches don't change wire shape, so collapsing\n * stable patches into the minor is functionally equivalent for any validator\n * consumer. Prereleases are kept exact because pinning a beta is intentional\n * and bit-fidelity matters for cross-version interop tests.\n *\n * Throws `ConfigurationError` for any input that doesn't match one of the\n * recognized shapes. Strings reach `path.join` via `resolveSchemaRoot`, and\n * pass-through of arbitrary garbage (`'../etc'`, `'3foo'`) lets a non-version\n * directory probe leak through `hasSchemaBundle`'s boolean. The throw is\n * caught by `hasSchemaBundle`'s try/catch (still returns false) and surfaces\n * with a useful field name from `resolveAdcpVersion`.\n */\nexport function resolveBundleKey(version: string): string {\n // Bare 'MAJOR.MINOR' (no patch).\n const minorOnly = version.match(/^(\\d+)\\.(\\d+)$/);\n if (minorOnly) return `${minorOnly[1]}.${minorOnly[2]}`;\n // Release-precision prerelease 'MAJOR.MINOR-PRE' (no patch). Same SemVer §9\n // prerelease constraint as the full-semver branch — `'3.1-/../etc'`-style\n // strings can't slip through. Returns verbatim; resolveSchemaRoot does the\n // fuzzy directory match.\n const releasePrecisionPre = version.match(/^(\\d+)\\.(\\d+)-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*$/);\n if (releasePrecisionPre) return version;\n // Full 'MAJOR.MINOR.PATCH' with optional prerelease. Prerelease group\n // restricted to SemVer §9 identifiers (alphanumerics + hyphen,\n // dot-separated) so `'3.0.0-/../etc'`-style strings can't slip through\n // and reach `path.join` as a directory component. The full version is\n // returned verbatim for prereleases, so this is the last line of defense\n // before that string becomes a path segment.\n const semver = version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$/);\n if (semver) {\n const [, major, minor, , prerelease] = semver;\n if (prerelease !== undefined) return version;\n return `${major}.${minor}`;\n }\n // Legacy alias: 'v' followed by a major and optional minor. Restricted to\n // this exact shape so non-version garbage can't reach the filesystem.\n const legacyAlias = version.match(/^v\\d+(\\.\\d+)?$/);\n if (legacyAlias) return version;\n throw new ConfigurationError(\n `AdCP version ${JSON.stringify(version)} is not a recognized version format. ` +\n `Expected semver (e.g. '3.0.1', '3.1.0-beta.1'), bare minor ('3.0'), ` +\n `release-precision ('3.1-beta'), or legacy alias ('v3', 'v2.5').`,\n 'adcpVersion'\n );\n}\n\n/**\n * Collapse a bundle key to the release-precision string the AdCP wire schema\n * accepts for the `adcp_version` envelope field (spec PR\n * `adcontextprotocol/adcp#3493`). The wire pattern is\n * `^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$` — release-precision (MAJOR.MINOR with\n * optional prerelease), never full MAJOR.MINOR.PATCH semver.\n *\n * - Stable bundle key `'3.0'` / `'3.1'` → returned verbatim.\n * - Prerelease bundle key `'3.1.0-beta.0'` → `'3.1-beta.0'` (PATCH segment\n * dropped; the prerelease tag is the wire-meaningful release identifier,\n * PATCH is implementation-internal).\n * - Full stable semver `'3.0.11'` → `'3.0'` (patches don't change wire\n * shape; surface them via `build_version` on capabilities instead).\n * - Legacy alias `'v3'` / `'v2.5'` — returned verbatim. The wire spec\n * predates the envelope field, so legacy-aliased clients won't emit\n * `adcp_version` anyway (gated by `bundleSupportsAdcpVersionField`).\n *\n * The normalization rule is declared in `core/version-envelope.json`:\n *\n * > SDKs that read full-semver values from bundle metadata (e.g.\n * > ComplianceIndex.published_version = \"3.1.0-beta.1\") MUST normalize to\n * > release-precision (\"3.1-beta.1\") before emitting on the wire —\n * > meta-field values are NOT valid wire values.\n *\n * **Idempotent.** Re-applying to an already-wire-shaped value is a no-op:\n * `toReleasePrecisionWire('3.1-beta.0') === '3.1-beta.0'`. Safe to call\n * defensively on values a caller read off the wire and is passing back.\n *\n * **Prerelease regex is stricter than the wire pattern by design.** The wire\n * pattern allows `[a-zA-Z0-9.-]+` (any mix of dots and hyphens), but this\n * function only accepts SemVer §9-shaped prerelease tags\n * (`[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*`) — disallowing leading dots, double\n * dots, or trailing dots. Mirrors the path-traversal hardening on\n * {@link resolveBundleKey} (`'3.0.0-/../etc'`-style strings can't reach the\n * filesystem there, and shouldn't be silently mirrored to the wire here).\n * A future reader who wants to \"fix\" this to match the wire regex\n * character-for-character should NOT — the strictness is intentional.\n *\n * Defense: rejecting unrecognized shapes here surfaces SDK-internal misuse\n * (someone calling this with raw garbage) loudly instead of silently\n * emitting a non-spec wire string.\n */\n/**\n * The exact pattern `core/version-envelope.json` applies to `adcp_version`\n * on the wire. Kept verbatim so {@link validateAdcpVersionWire} doesn't\n * drift from the spec — bump only when the spec itself bumps.\n */\nconst ADCP_VERSION_WIRE_PATTERN = /^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$/;\n\n/**\n * Validate a string against the AdCP 3.1 `adcp_version` wire pattern.\n * Throws `ConfigurationError` with a hint that points at\n * {@link toReleasePrecisionWire} when the value would be sent on the wire\n * but doesn't satisfy `core/version-envelope.json`'s pattern.\n *\n * Use this when you're constructing a request envelope by hand (storyboard\n * fixtures, conformance harnesses, custom transports) and want a clear\n * error rather than a downstream AJV pattern-mismatch from the seller —\n * by the time the seller rejects the request, the buyer's stack frame is\n * long gone and `core/version-envelope.json/properties/adcp_version/pattern`\n * is the only clue.\n *\n * The SDK's own `buildVersionEnvelope` calls this as a postcondition after\n * normalizing the bundle key — should never throw in well-formed SDK code,\n * but if a future refactor breaks the normalization the assertion fires\n * with a message that names the helper to call.\n *\n * Returns the value with the type narrowed to `string` via assertion.\n */\nexport function validateAdcpVersionWire(value: unknown): asserts value is string {\n if (typeof value !== 'string') {\n throw new ConfigurationError(\n `adcp_version must be a string. Got ${typeof value}. ` +\n `Use toReleasePrecisionWire() to convert a bundle key or full-semver pin to a wire-shaped string.`,\n 'adcp_version'\n );\n }\n if (!ADCP_VERSION_WIRE_PATTERN.test(value)) {\n throw new ConfigurationError(\n `adcp_version ${JSON.stringify(value)} doesn't match the AdCP 3.1 wire pattern ${ADCP_VERSION_WIRE_PATTERN}. ` +\n `Full-semver bundle keys (e.g. \"3.1.0-beta.0\") are NOT valid wire values — ` +\n `call toReleasePrecisionWire() to normalize (e.g. \"3.1.0-beta.0\" → \"3.1-beta.0\").`,\n 'adcp_version'\n );\n }\n}\n\nexport function toReleasePrecisionWire(bundleKeyOrVersion: string): string {\n // Bare release-precision (MAJOR.MINOR or MAJOR.MINOR-PRE) — already wire-shaped.\n const releasePrecision = bundleKeyOrVersion.match(/^(\\d+)\\.(\\d+)(-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/);\n if (releasePrecision) {\n const [, major, minor, prerelease = ''] = releasePrecision;\n return `${major}.${minor}${prerelease}`;\n }\n // Full semver — collapse PATCH segment. Prerelease (if any) is preserved.\n const fullSemver = bundleKeyOrVersion.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/);\n if (fullSemver) {\n const [, major, minor, prerelease = ''] = fullSemver;\n return `${major}.${minor}${prerelease}`;\n }\n // Legacy alias passthrough. Callers that reach here with a legacy alias\n // shouldn't be emitting `adcp_version` (no version-envelope support), but\n // returning the input verbatim is least-surprise.\n if (/^v\\d+(\\.\\d+)?$/.test(bundleKeyOrVersion)) return bundleKeyOrVersion;\n throw new ConfigurationError(\n `Cannot normalize ${JSON.stringify(bundleKeyOrVersion)} to release-precision wire format. ` +\n `Expected a bundle key or AdCP version string.`,\n 'adcpVersion'\n );\n}\n\n/**\n * Resolve the directory that holds the bundled + core schemas for a given\n * AdCP version. Source layout (dev):\n * schemas/cache/<exact-version>/{bundled,core}\n * Built layout (dist):\n * dist/lib/schemas-data/<bundle-key>/{bundled,core}\n *\n * Stable releases use minor-name keys (`3.0/`); prereleases use full-version\n * keys (`3.1.0-beta.1/`). See {@link resolveBundleKey}.\n *\n * Falls back to the source-tree cache when dist isn't built (dev workflow\n * before `npm run build:lib`). For stable pins, the cache fallback scans\n * for the highest-patch sibling in the requested minor — `'3.0.0'` resolves\n * to `schemas/cache/3.0.1/` when only `3.0.1` is cached, matching dist's\n * collapse behavior.\n *\n * Throws when no bundle exists. Callers pinning a specific prerelease\n * surface the error; the construction-time fence in `resolveAdcpVersion`\n * catches most cross-major mistakes before this point.\n */\nfunction resolveSchemaRoot(version: string): string {\n const key = resolveBundleKey(version);\n const scopedRoot = scopedExternalSchemaRoots.getStore()?.get(key);\n if (scopedRoot && existsSync(scopedRoot)) return scopedRoot;\n\n const externalRoot = externalSchemaRoots.get(key);\n if (externalRoot && existsSync(externalRoot)) return externalRoot;\n\n const distCandidate = path.join(__dirname, '..', 'schemas-data', key);\n if (existsSync(distCandidate)) return distCandidate;\n\n // Published builds carry exact prerelease bundle directories\n // (`3.1.0-rc.1/`), while callers may pin the release-precision family\n // alias (`3.1-rc`). Resolve that alias before falling back to source cache.\n const releasePrecisionMatch = /^\\d+\\.\\d+-/.test(key);\n if (releasePrecisionMatch) {\n const distPrereleaseCandidate = findPrereleaseBundle(path.join(__dirname, '..', 'schemas-data'), key);\n if (distPrereleaseCandidate) return distPrereleaseCandidate;\n }\n\n // Source-tree fallback: cache stays exact-version-named, so map the key\n // back to the highest-patch cache directory in the same minor for stable\n // pins. Prereleases need an exact match.\n const cacheRoot = path.join(__dirname, '..', '..', '..', 'schemas', 'cache');\n const exactCandidate = path.join(cacheRoot, version);\n if (existsSync(exactCandidate)) return exactCandidate;\n\n // For minor-only or stable-patch pins, find the highest stable patch in\n // the cache that matches the resolved minor. Skip `*.previous` snapshots\n // — `sync-schemas` writes those as transient backups during replaceTree;\n // a partially-written snapshot whose patch number happens to be highest\n // would otherwise win the sort.\n const minorMatch = key.match(/^(\\d+)\\.(\\d+)$/);\n if (minorMatch && existsSync(cacheRoot)) {\n const [, major, minor] = minorMatch;\n const prefix = `${major}.${minor}.`;\n const cached = readdirSync(cacheRoot, { withFileTypes: true })\n .filter(\n e =>\n e.isDirectory() &&\n e.name.startsWith(prefix) &&\n !e.name.endsWith('.previous') &&\n /^\\d+\\.\\d+\\.\\d+$/.test(e.name)\n )\n .map(e => ({\n name: e.name,\n patch: parseInt(e.name.slice(prefix.length), 10),\n }))\n .filter(c => Number.isFinite(c.patch))\n .sort((a, b) => b.patch - a.patch);\n if (cached.length > 0) return path.join(cacheRoot, cached[0]!.name);\n }\n\n // For release-precision prerelease pins (`'3.1-beta'`, `'3.1-beta.0'`),\n // find the highest cached prerelease directory whose own release-precision\n // form starts with the requested key. A pin of `'3.1-beta'` matches any\n // directory whose `toReleasePrecisionWire` form is `'3.1-beta'` or\n // `'3.1-beta.*'`. A pin of `'3.1-beta.0'` matches `'3.1-beta.0'` or\n // `'3.1-beta.0.*'`. Sort newest-first by directory name with numeric\n // collation so rc.10 wins over rc.9.\n if (releasePrecisionMatch) {\n const cachePrereleaseCandidate = findPrereleaseBundle(cacheRoot, key);\n if (cachePrereleaseCandidate) return cachePrereleaseCandidate;\n }\n\n throw new Error(\n `AdCP schema data for version \"${version}\" not found. ` +\n `Looked for bundle key \"${key}\" in ${distCandidate}, exact path ${exactCandidate}, ` +\n `and the latest-patch fallback in ${cacheRoot}. ` +\n `Run \\`npm run sync-schemas\\` and \\`npm run build:lib\\` to populate the bundle.`\n );\n}\n\nfunction findPrereleaseBundle(root: string, key: string): string | undefined {\n if (!existsSync(root)) return undefined;\n const cached = readdirSync(root, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.endsWith('.previous'))\n .map(e => {\n try {\n return { name: e.name, rp: toReleasePrecisionWire(e.name) };\n } catch {\n return null;\n }\n })\n .filter((c): c is { name: string; rp: string } => c !== null)\n .filter(c => c.rp === key || c.rp.startsWith(`${key}.`))\n .sort((a, b) => compareBundleNamesDesc(a.name, b.name));\n if (cached.length === 0) return undefined;\n return path.join(root, cached[0]!.name);\n}\n\nfunction compareBundleNamesDesc(a: string, b: string): number {\n return b.localeCompare(a, undefined, { numeric: true, sensitivity: 'base' });\n}\n\ninterface LoaderState {\n ajv: Ajv;\n fileIndex: Map<string, string>;\n validators: Map<string, ValidateFunction>;\n rawSchemas: Map<string, Record<string, unknown>>;\n entityPaths: Map<string, SchemaEntityPath[]>;\n schemaIdFiles?: Map<string, string>;\n root: string;\n coreLoaded: boolean;\n version: string;\n}\n\nconst states: Map<string, LoaderState> = new Map();\nconst externalSchemaRoots: Map<string, string> = new Map();\nconst scopedExternalSchemaRoots = new AsyncLocalStorage<Map<string, string>>();\n\nfunction stateCacheKey(bundleKey: string, root: string): string {\n return `${bundleKey}\\0${root}`;\n}\n\nfunction clearStatesForBundle(bundleKey: string): void {\n for (const [stateKey, state] of states) {\n if (state.version === bundleKey) states.delete(stateKey);\n }\n}\n\nfunction hasSchemaRootShape(root: string): boolean {\n if (!existsSync(root)) return false;\n const bundledRoot = path.join(root, 'bundled');\n const files = existsSync(bundledRoot) ? walkJsonFiles(bundledRoot) : walkJsonFiles(root);\n return files.some(file => {\n try {\n const schema = loadJson(file);\n return typeof schema.$id === 'string' || typeof schema.$schema === 'string';\n } catch {\n return false;\n }\n });\n}\n\nfunction schemaIdVersionHint(schemaId: string): string | undefined {\n return schemaId.match(/\\/schemas\\/([^/]+)\\//)?.[1];\n}\n\nfunction collectSchemaRootVersionAliases(root: string): Set<string> {\n const aliases = new Set<string>();\n for (const file of walkJsonFiles(root)) {\n let schema: LoadedSchema;\n try {\n schema = loadJson(file);\n } catch {\n continue;\n }\n if (typeof schema.$id !== 'string') continue;\n const hint = schemaIdVersionHint(schema.$id);\n if (!hint) continue;\n for (const alias of schemaRootVersionAliases(hint)) aliases.add(alias);\n }\n return aliases;\n}\n\nfunction schemaRootVersionAliases(version: string): Set<string> {\n const aliases = new Set<string>([version]);\n try {\n aliases.add(resolveBundleKey(version));\n } catch {\n // Keep the raw value only; callers that care will throw separately.\n }\n try {\n const releasePrecision = toReleasePrecisionWire(version);\n aliases.add(releasePrecision);\n const family = prereleaseFamilyAlias(releasePrecision);\n if (family) aliases.add(family);\n } catch {\n // Keep any aliases already collected.\n }\n return aliases;\n}\n\nfunction prereleaseFamilyAlias(releasePrecisionVersion: string): string | undefined {\n return releasePrecisionVersion.match(/^(\\d+\\.\\d+-[0-9A-Za-z-]+)\\.\\d+$/)?.[1];\n}\n\nfunction collectSchemaRootVersionAliasGroups(root: string): Array<{ hint: string; aliases: Set<string> }> {\n const groups: Array<{ hint: string; aliases: Set<string> }> = [];\n for (const file of walkJsonFiles(root)) {\n let schema: LoadedSchema;\n try {\n schema = loadJson(file);\n } catch {\n continue;\n }\n if (typeof schema.$id !== 'string') continue;\n const hint = schemaIdVersionHint(schema.$id);\n if (!hint) continue;\n groups.push({ hint, aliases: schemaRootVersionAliases(hint) });\n }\n return groups;\n}\n\nfunction assertSchemaRootMatchesVersion(version: string, root: string): Set<string> {\n const expectedAliases = schemaRootVersionAliases(version);\n const rootGroups = collectSchemaRootVersionAliasGroups(root);\n const rootAliases = collectSchemaRootVersionAliases(root);\n if (\n rootGroups.length > 0 &&\n rootGroups.every(group => [...group.aliases].some(alias => expectedAliases.has(alias)))\n ) {\n return new Set([...expectedAliases, ...rootAliases]);\n }\n const found =\n rootGroups.length === 0\n ? 'no AdCP schema ids'\n : rootGroups\n .map(group => `${group.hint} (${Array.from(group.aliases).sort().join(', ')})`)\n .sort()\n .join(', ');\n throw new Error(\n `External AdCP schema root for version \"${version}\" at ${root} does not match the requested version and ` +\n `must contain only schema ids matching ${Array.from(expectedAliases).sort().join(', ')}; found ${found}.`\n );\n}\n\nconst externalSchemaRootAliases: Map<string, Set<string>> = new Map();\n\n/**\n * Register a schema bundle supplied outside the installed SDK package.\n *\n * Compliance runners use this when `--compliance-dir` points at another\n * package/check-out whose storyboards and schema bundle should be used\n * together. The root must be the schema-data directory itself, e.g.\n * `.../dist/lib/schemas-data/3.0`.\n */\nexport function registerExternalSchemaRoot(version: string, root: string): void {\n const key = resolveBundleKey(version);\n if (!hasSchemaRootShape(root)) {\n throw new Error(`External AdCP schema root for version \"${version}\" not found or empty at ${root}`);\n }\n const aliases = assertSchemaRootMatchesVersion(version, root);\n externalSchemaRootAliases.set(key, aliases);\n for (const alias of aliases) {\n const previous = externalSchemaRoots.get(alias);\n externalSchemaRoots.set(alias, root);\n if (previous !== root) clearStatesForBundle(alias);\n }\n}\n\n/** Test/helper hook for unregistering an external schema bundle. */\nexport function unregisterExternalSchemaRoot(version: string): void {\n const key = resolveBundleKey(version);\n const aliases = new Set(schemaRootVersionAliases(version));\n for (const [registeredKey, registeredAliases] of externalSchemaRootAliases) {\n if (\n registeredKey === key ||\n registeredAliases.has(key) ||\n [...aliases].some(alias => registeredAliases.has(alias))\n ) {\n for (const alias of registeredAliases) aliases.add(alias);\n externalSchemaRootAliases.delete(registeredKey);\n }\n }\n for (const alias of aliases) {\n externalSchemaRoots.delete(alias);\n clearStatesForBundle(alias);\n }\n}\n\n/**\n * Run a callback with an external schema root scoped to the current async\n * execution chain. Unlike `registerExternalSchemaRoot`, this does not poison\n * process-global validation state for later hosted/compliance runs.\n */\nexport function withExternalSchemaRoot<T>(version: string, root: string | undefined, fn: () => T): T {\n if (root === undefined) return fn();\n if (!hasSchemaRootShape(root)) {\n throw new Error(`External AdCP schema root for version \"${version}\" not found or empty at ${root}`);\n }\n const aliases = assertSchemaRootMatchesVersion(version, root);\n const parent = scopedExternalSchemaRoots.getStore();\n const next = new Map(parent);\n for (const alias of aliases) {\n next.set(alias, root);\n clearStatesForBundle(alias);\n }\n return scopedExternalSchemaRoots.run(next, fn);\n}\n\n/**\n * Return whether validation for `version` currently resolves through a\n * caller-supplied schema bundle rather than the SDK's packaged snapshot.\n *\n * Storyboard validation uses this to make an explicit external JSON Schema\n * bundle authoritative.\n *\n * @internal — not part of the public API surface; may change without a major bump.\n */\nexport function isExternalSchemaRootActive(version: string): boolean {\n const key = resolveBundleKey(version);\n const scopedRoot = scopedExternalSchemaRoots.getStore()?.get(key);\n if (scopedRoot && existsSync(scopedRoot)) return true;\n const registeredRoot = externalSchemaRoots.get(key);\n return registeredRoot !== undefined && existsSync(registeredRoot);\n}\n\nfunction walkJsonFiles(dir: string): string[] {\n if (!existsSync(dir)) return [];\n const out: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) out.push(...walkJsonFiles(full));\n else if (entry.isFile() && entry.name.endsWith('.json')) out.push(full);\n }\n return out;\n}\n\nfunction loadJson(file: string): LoadedSchema {\n return JSON.parse(readFileSync(file, 'utf-8')) as LoadedSchema;\n}\n\n/**\n * Clear `additionalProperties: false` at the response root so envelope\n * fields (`replayed`, `context`, `ext`, and future envelope additions)\n * can ride alongside the tool-specific body — per security.mdx the\n * envelope is always extensible. Upstream bundled schemas pin\n * `additionalProperties: false` at the root on a handful of mutating\n * tools (the property-list family), which rejects envelope fields like\n * `replayed` that aren't declared in the tool-specific body.\n *\n * Scope is deliberately narrow: only the top-level object, plus each\n * direct branch of a root-level `oneOf` / `anyOf` / `allOf`. Nested\n * bodies stay strict so response-side drift detection still catches\n * typos inside `Product`, `Package`, `MediaBuy` etc. Applied only to\n * response variants; request schemas stay strict so outgoing drift\n * fails at the edge.\n */\nfunction relaxResponseRoot(schema: LoadedSchema): LoadedSchema {\n const clone = { ...schema };\n if (clone.additionalProperties === false) {\n clone.additionalProperties = true;\n }\n for (const key of ['oneOf', 'anyOf', 'allOf'] as const) {\n const branches = clone[key];\n if (Array.isArray(branches)) {\n clone[key] = branches.map(branch => {\n if (!branch || typeof branch !== 'object') return branch;\n const branchClone = { ...(branch as Record<string, unknown>) };\n if (branchClone.additionalProperties === false) {\n branchClone.additionalProperties = true;\n }\n return branchClone;\n });\n }\n }\n return clone;\n}\n\nfunction getAjvRegisteredIds(ajv: Ajv): Set<string> {\n const internals = ajv as unknown as {\n schemas?: Record<string, unknown>;\n refs?: Record<string, unknown>;\n };\n return new Set([...Object.keys(internals.schemas ?? {}), ...Object.keys(internals.refs ?? {})]);\n}\n\n/**\n * Build the (toolName, direction) → file path index by scanning the schema\n * tree once. Runs eagerly at first validator lookup.\n */\nfunction buildFileIndex(root: string): Map<string, string> {\n const index = new Map<string, string>();\n const record = (toolName: string, direction: Direction, file: string): void => {\n index.set(`${toolName}::${direction}`, file);\n };\n\n // Sync request/response live in the pre-resolved bundled/ tree.\n const bundledRoot = path.join(root, 'bundled');\n for (const file of walkJsonFiles(bundledRoot)) {\n const base = path.basename(file, '.json');\n if (base.endsWith('-request')) {\n const tool = base.slice(0, -'-request'.length).replace(/-/g, '_');\n record(tool, 'request', file);\n } else if (base.endsWith('-response')) {\n const tool = base.slice(0, -'-response'.length).replace(/-/g, '_');\n record(tool, 'sync', file);\n }\n }\n\n // Async variants AND domain schemas that ship flat (not pre-bundled) both\n // live in the per-domain directories. Walk each for sync request/response\n // files and async variant files. Skip `bundled/` (already indexed above)\n // and `core/` (pure $ref targets, no tools).\n //\n // Flat-tree domains include `governance/`, `brand/`, `account/`,\n // `content-standards/`, `property/`, `collection/` — their schemas are\n // NOT pre-resolved into `bundled/`, so a bundled-only walk would miss\n // every `check_governance` / `acquire_rights` / `creative_approval` /\n // `sync_governance` / `*_property_list` request-response pair. That gap\n // (flagged by the ad-tech-protocol reviewer on PR #831) would leave\n // protocol-wide-requirement-bearing tasks (idempotency_key pattern,\n // `format: uri` on `caller`) invisible to the strict-validation signal.\n // Register flat-tree sync pairs only when `bundled/` didn't already\n // index them, so pre-resolved schemas (with $refs already inlined) win\n // for any domain that ships both.\n for (const entry of readdirSync(root, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === 'bundled' || entry.name === 'core') continue;\n const domainDir = path.join(root, entry.name);\n for (const file of walkJsonFiles(domainDir)) {\n const base = path.basename(file, '.json');\n if (base.endsWith('-async-response-submitted')) {\n const tool = base.slice(0, -'-async-response-submitted'.length).replace(/-/g, '_');\n record(tool, 'submitted', file);\n } else if (base.endsWith('-async-response-working')) {\n const tool = base.slice(0, -'-async-response-working'.length).replace(/-/g, '_');\n record(tool, 'working', file);\n } else if (base.endsWith('-async-response-input-required')) {\n const tool = base.slice(0, -'-async-response-input-required'.length).replace(/-/g, '_');\n record(tool, 'input-required', file);\n } else if (base.endsWith('-request')) {\n const tool = base.slice(0, -'-request'.length).replace(/-/g, '_');\n if (!index.has(`${tool}::request`)) record(tool, 'request', file);\n } else if (base.endsWith('-response')) {\n const tool = base.slice(0, -'-response'.length).replace(/-/g, '_');\n if (!index.has(`${tool}::sync`)) record(tool, 'sync', file);\n }\n }\n }\n\n return index;\n}\n\nfunction ensureInit(version: string): LoaderState {\n // States are keyed by bundle key, not by raw version string, so\n // `getValidator('foo', 'request', '3.0.0')` and the same call with\n // `'3.0.1'` share state — both resolve to bundle key `'3.0'` and the\n // same compiled AJV instance.\n const key = resolveBundleKey(version);\n const root = resolveSchemaRoot(version);\n const cacheKey = stateCacheKey(key, root);\n const cached = states.get(cacheKey);\n if (cached) return cached;\n const ajv = new Ajv({\n strict: false,\n allErrors: true,\n allowUnionTypes: true,\n });\n addFormats(ajv);\n\n const state: LoaderState = {\n ajv,\n fileIndex: buildFileIndex(root),\n validators: new Map(),\n rawSchemas: new Map(),\n entityPaths: new Map(),\n root,\n coreLoaded: false,\n version: key,\n };\n states.set(cacheKey, state);\n return state;\n}\n\n/**\n * Lazily pre-register every non-tool JSON schema shipped with the SDK so\n * cross-domain `$ref`s compile. Async response variants and flat-tree\n * domain schemas `$ref` out to three classes of building-block schemas:\n *\n * - `core/` + `enums/` — shared primitives referenced by every domain.\n * - `pricing-options/`, `error-details/`, `extensions/` — stand-alone\n * fragment trees.\n * - Sibling fragments inside each domain directory — e.g.\n * `governance/audience-constraints.json` referenced by\n * `governance/sync-plans-request.json`, or `signals/*` fragments\n * referenced by `signals/activate-signal-*.json`.\n *\n * Walk every directory except `bundled/` (pre-resolved schemas with refs\n * already inlined). Response files that `buildFileIndex` registered as tools\n * are registered with `relaxResponseRoot` applied, matching `getValidator`.\n * The fileIndex check is stricter than a filename-suffix match:\n * building-block fragments like `core/pagination-response.json` end in\n * `-response.json` but aren't tools, so suffix-matching would wrongly treat\n * them as relaxable response roots.\n */\nfunction ensureCoreLoaded(s: LoaderState): void {\n if (s.coreLoaded) return;\n // Tool response files are pre-registered with the same response-root\n // relaxation `getValidator` would apply. This matters for the async response\n // union: `core/async-response-data.json` can `$ref` both async variants and\n // sync responses, so callers must not have to prewarm response validators\n // before compiling a request that references the union.\n //\n // Why this matters: bundles whose source tree doesn't include a `bundled/`\n // pre-resolved subtree (e.g. v2.5, where the spec ships flat schemas with\n // unresolved `$ref`s) classify fragments like `media-buy/package-request.json`\n // as tool `package::request` via the filename-suffix heuristic in\n // `buildFileIndex`. Skipping all tool files would leave that fragment\n // unregistered, so a later compile of `create_media_buy` fails on\n // `MissingRefError: can't resolve /schemas/media-buy/package-request.json`.\n //\n const responseToolFiles = new Map<string, Direction>();\n for (const [key, file] of s.fileIndex) {\n if (key.endsWith('::request')) continue;\n const direction = key.slice(key.indexOf('::') + 2) as Direction;\n responseToolFiles.set(file, direction);\n }\n const registeredIds = getAjvRegisteredIds(s.ajv);\n for (const entry of readdirSync(s.root, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === 'bundled') continue;\n const abs = path.join(s.root, entry.name);\n for (const file of walkJsonFiles(abs)) {\n const responseDirection = responseToolFiles.get(file);\n const schema = loadJson(file);\n const schemaToRegister = responseDirection === undefined ? schema : relaxResponseRoot(schema);\n if (typeof schemaToRegister.$id === 'string' && !registeredIds.has(schemaToRegister.$id)) {\n s.ajv.addSchema(schemaToRegister);\n registeredIds.add(schemaToRegister.$id);\n }\n }\n }\n s.coreLoaded = true;\n}\n\n/**\n * Look up the compiled AJV validator for a given tool + direction in the\n * specified AdCP version's schema bundle. Returns `undefined` when no\n * schema exists for the pair — callers can skip validation cleanly (e.g.,\n * custom tools outside the AdCP spec).\n *\n * `version` defaults to the SDK-pinned `ADCP_VERSION`. Pass the per-instance\n * `getAdcpVersion()` value when the validator should track the client/server's\n * configured pin (Stage 3+).\n */\nexport function getValidator(\n toolName: string,\n direction: Direction,\n version: string = ADCP_VERSION\n): ValidateFunction | undefined {\n const s = ensureInit(version);\n const cacheKey = `${toolName}::${direction}`;\n const cached = s.validators.get(cacheKey);\n if (cached) return cached;\n\n const file = s.fileIndex.get(cacheKey);\n if (!file) return undefined;\n\n // Schemas that $ref into core/ and enums/ need those trees registered\n // before compile. Async response variants always do; flat-tree domain\n // schemas (anything outside `bundled/`) do too — their $refs weren't\n // pre-resolved at spec-publish time.\n const fromBundled = file.includes(`${path.sep}bundled${path.sep}`);\n if (direction === 'request' || !fromBundled) ensureCoreLoaded(s);\n\n const rawSchema = loadJson(file);\n // Bundled files inline every referenced subschema with the original\n // canonical `$id` (e.g. `core/version-envelope.json` appears nested\n // inside every bundled tool response). Bundled files carry NO\n // internal `$ref`s — the spec publishes them fully resolved, see\n // the `note: \"This is a bundled schema with all $ref resolved inline\"`\n // tag on every bundled file. Once `ensureCoreLoaded` has registered\n // any of those core schemas standalone (which it does for the flat-\n // tree governance / brand / property domains), Ajv's compile of a\n // bundled file trips the ambiguous-ref check on every nested $id.\n //\n // The fix: strip nested `$id` fields before compile on bundled\n // schemas. The root `$id` is kept (it's the validator's lookup key);\n // every other `$id` in the tree was just metadata anyway.\n const prepared = fromBundled ? stripNestedIds(rawSchema) : rawSchema;\n const schema = direction === 'request' ? prepared : relaxResponseRoot(prepared);\n const existing = typeof schema.$id === 'string' ? s.ajv.getSchema(schema.$id) : undefined;\n const compiled = existing ?? s.ajv.compile(schema);\n s.validators.set(cacheKey, compiled);\n return compiled;\n}\n\n/**\n * Compile an arbitrary schema from the cached bundle by path, e.g.\n * `core/mcp-webhook-payload.json`. Used by storyboard webhook assertions\n * whose payload schema is not tied to a tool request/response pair.\n */\nexport function getSchemaValidatorByRef(\n schemaRef: string,\n version: string = ADCP_VERSION\n): ValidateFunction | undefined {\n const s = ensureInit(version);\n const normalized = normalizeSchemaRef(schemaRef);\n if (!normalized) return undefined;\n\n const cacheKey = `schema-ref::${normalized}`;\n const cached = s.validators.get(cacheKey);\n if (cached) return cached;\n\n const file = path.join(s.root, normalized);\n if (!existsSync(file)) return undefined;\n\n // Use an isolated AJV instance for arbitrary schema refs. Tool response\n // validators deliberately relax some roots for SDK back-compat; webhook\n // payload schemas need strict raw JSON Schema behavior without polluting the\n // shared tool-validator registry with unrelaxed response schemas.\n const ajv = new Ajv({\n strict: false,\n allErrors: true,\n allowUnionTypes: true,\n });\n addFormats(ajv);\n const dependencySchemas: LoadedSchema[] = [];\n const registeredIds = new Set<string>();\n for (const schemaFile of walkJsonFiles(s.root)) {\n if (schemaFile.includes(`${path.sep}bundled${path.sep}`)) continue;\n if (schemaFile === file) continue;\n const schema = loadJson(schemaFile);\n if (typeof schema.$id === 'string' && !registeredIds.has(schema.$id)) {\n registeredIds.add(schema.$id);\n dependencySchemas.push(schema);\n }\n }\n if (dependencySchemas.length > 0) {\n ajv.addSchema(dependencySchemas);\n }\n const rawSchema = loadJson(file);\n const compiled = ajv.compile(rawSchema);\n s.validators.set(cacheKey, compiled);\n return compiled;\n}\n\nfunction normalizeSchemaRef(schemaRef: string): string | undefined {\n const trimmed = schemaRef.replace(/^\\/+/, '');\n if (trimmed.length === 0) return undefined;\n const normalized = path.normalize(trimmed);\n if (normalized.startsWith('..') || path.isAbsolute(normalized)) return undefined;\n return normalized;\n}\n\n/**\n * Strip `$id` from every subschema of a bundled response file, preserving\n * the root `$id`. Bundled files are fully inlined (no internal `$ref`s),\n * so the nested `$id`s are vestigial metadata — Ajv only cares about the\n * root `$id` for validator lookup. Without this strip, Ajv's\n * `checkAmbiguousRef` throws when an inlined nested `$id` matches one\n * already registered standalone via `ensureCoreLoaded`.\n *\n * Returns a deep-copied tree; the input is not mutated.\n */\nfunction stripNestedIds(schema: LoadedSchema): LoadedSchema {\n const root = JSON.parse(JSON.stringify(schema)) as LoadedSchema;\n const rootId = typeof root.$id === 'string' ? root.$id : undefined;\n const walk = (node: unknown): void => {\n if (Array.isArray(node)) {\n for (const item of node) walk(item);\n return;\n }\n if (!node || typeof node !== 'object') return;\n const obj = node as Record<string, unknown>;\n if (typeof obj.$id === 'string' && obj.$id !== rootId) {\n delete obj.$id;\n }\n for (const value of Object.values(obj)) walk(value);\n };\n walk(root);\n return root;\n}\n\n/** List of (toolName, direction) pairs that have schemas. Used by tests. */\nexport function listValidatorKeys(version: string = ADCP_VERSION): string[] {\n const s = ensureInit(version);\n return [...s.fileIndex.keys()].sort();\n}\n\n/**\n * `$id`s of every schema currently registered with the AdCP validator's AJV\n * instance for `version`. Used by the schema-validator to extract the\n * rejecting sub-schema's `$id` from an Ajv error's `schemaPath`: when a\n * `$ref` is followed, Ajv prefixes the schemaPath with the target schema's\n * `$id`, so the longest registered `$id` that prefixes a schemaPath is the\n * sub-schema responsible for the failure.\n *\n * The set grows as `getValidator` calls trigger `ensureCoreLoaded` and\n * compile new tool roots — callers should read it AFTER the validate call\n * they're projecting errors from.\n */\nexport function getRegisteredSchemaIds(version: string = ADCP_VERSION): readonly string[] {\n const s = ensureInit(version);\n // Ajv 8 keeps registered schemas at `ajv.schemas` (URI → SchemaEnv). Returning\n // the keys is enough for prefix matching; we don't expose the SchemaEnv values.\n const registry = (s.ajv as unknown as { schemas?: Record<string, unknown> }).schemas;\n return registry ? Object.keys(registry) : [];\n}\n\n/** Suffix used in the suffix table — exported for testing. */\nexport { SCHEMA_FILENAME_SUFFIX };\n\n/**\n * Returns true when the schema bundle for `version` is reachable from the\n * dist build or the source-tree fallback. Cheap synchronous check; safe\n * to call at construction time of clients/servers to fail fast on a pin\n * we don't have schemas for.\n */\nexport function hasSchemaBundle(version: string): boolean {\n try {\n resolveSchemaRoot(version);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Test hook: reset cached state. With no argument, clears every version's\n * loader state; with a version, clears only the bundle that version\n * resolves to (so passing `'3.0.0'` and `'3.0.1'` both clear the `'3.0'`\n * bundle).\n */\nexport function _resetValidationLoader(version?: string): void {\n if (version === undefined) {\n states.clear();\n } else {\n clearStatesForBundle(resolveBundleKey(version));\n }\n}\n\n/**\n * Returns true when `field` is **explicitly declared** as a top-level property\n * in the request schema for `toolName`, or when no schema is available\n * (fail-open). Used by the storyboard runner to decide whether to inject\n * envelope fields that aren't universally present across tools (e.g. `brand`,\n * `account`, `ext`).\n *\n * Reads the raw JSON schema file without compiling — avoids coupling to AJV\n * internals. Only inspects the top-level `properties` map; nested sub-schemas\n * are not traversed. Results are memoized in `LoaderState.rawSchemas` so\n * multi-step storyboard runs don't re-read the same file on each step.\n *\n * **Semantic note**: AdCP 3.1.0-beta.3 set `additionalProperties: true` on\n * mutating request schemas (vendor-extension friendly). Before that flip, the\n * helper used `additionalProperties: false` as the gate — \"if the schema is\n * strict, only `properties` keys are allowed.\" Now requests are universally\n * permissive at the schema level, so that gate would say `true` for any field\n * on any request — defeating the storyboard runner's intent (\"only inject\n * envelope fields the tool's schema declares it expects to see\"). The helper\n * now checks `field in properties` directly: the question we actually care\n * about is **\"does the schema declare this field at top level?\"**, not\n * \"does the schema permit this field at top level?\" (it permits everything).\n *\n * Fails open (returns `true`) when:\n * - No schema file is indexed for the tool (custom tool, schema not synced)\n * - The schema root is not reachable (schemas not built/synced yet)\n * - Any I/O / parse error during the read\n *\n * @internal — not part of the public API surface; may change without a major bump.\n */\nexport function schemaAllowsTopLevelField(toolName: string, field: string, version: string = ADCP_VERSION): boolean {\n try {\n const s = ensureInit(version);\n const cacheKey = `${toolName}::request`;\n const file = s.fileIndex.get(cacheKey);\n if (!file) return true;\n let schema = s.rawSchemas.get(cacheKey);\n if (!schema) {\n schema = loadJson(file) as Record<string, unknown>;\n s.rawSchemas.set(cacheKey, schema);\n }\n const props = schema.properties as Record<string, unknown> | undefined;\n return props !== undefined && field in props;\n } catch {\n return true;\n }\n}\n\nexport interface SchemaEntityPath {\n /** Property path from the tool request root. `*` addresses every array item. */\n path: string[];\n /** AdCP `x-entity` annotation found on the identity-bearing leaf. */\n xEntity: string;\n}\n\n/**\n * Return every request field carrying an `x-entity` annotation. Unlike the\n * server hydration map this walks nested arrays/objects, because storyboard\n * fixture handles commonly live at `packages[*].product_id` and\n * `packages[*].pricing_option_id`.\n *\n * Missing schemas fail closed with an empty list: handle substitution must\n * never guess from a field name alone.\n */\nexport function getRequestSchemaEntityPaths(\n toolName: string,\n version: string = ADCP_VERSION\n): readonly SchemaEntityPath[] {\n try {\n const s = ensureInit(version);\n const cacheKey = `${toolName}::request`;\n const cached = s.entityPaths.get(cacheKey);\n if (cached) return cached;\n const file = s.fileIndex.get(cacheKey);\n if (!file) return [];\n\n const root = loadJson(file) as Record<string, unknown>;\n const found = new Map<string, SchemaEntityPath>();\n const stack = new Set<string>();\n\n const resolvePointer = (document: unknown, fragment: string): unknown => {\n if (!fragment || fragment === '#') return document;\n if (!fragment.startsWith('#/')) return undefined;\n let current = document;\n for (const encoded of fragment.slice(2).split('/')) {\n if (!current || typeof current !== 'object') return undefined;\n const key = encoded.replace(/~1/g, '/').replace(/~0/g, '~');\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n };\n\n const resolveRef = (\n ref: string,\n currentFile: string,\n currentDocument: Record<string, unknown>\n ): { node: unknown; file: string; document: Record<string, unknown>; key: string } | undefined => {\n const hash = ref.indexOf('#');\n const refPath = hash >= 0 ? ref.slice(0, hash) : ref;\n const fragment = hash >= 0 ? ref.slice(hash) : '';\n if (!refPath) {\n return {\n node: resolvePointer(currentDocument, fragment),\n file: currentFile,\n document: currentDocument,\n key: `${currentFile}${fragment}`,\n };\n }\n\n const schemaRelative = refPath.match(/\\/schemas\\/[^/]+\\/(.+)$/)?.[1];\n const candidates = [\n schemaRelative ? path.join(s.root, schemaRelative) : undefined,\n path.resolve(path.dirname(currentFile), refPath),\n ].filter((candidate): candidate is string => candidate !== undefined);\n let targetFile = candidates.find(candidate => existsSync(candidate));\n // Standard AdCP refs encode their schema-root-relative file path, so\n // they resolve without parsing every JSON file in the bundle. Build the\n // expensive $id index only for an unusual ref that cannot be resolved\n // by path.\n if (!targetFile) {\n if (!s.schemaIdFiles) {\n const idToFile = new Map<string, string>();\n for (const schemaFile of walkJsonFiles(s.root)) {\n try {\n const schema = loadJson(schemaFile);\n if (typeof schema.$id === 'string') idToFile.set(schema.$id, schemaFile);\n } catch {\n // A malformed unrelated schema is not a usable ref target.\n }\n }\n s.schemaIdFiles = idToFile;\n }\n targetFile = s.schemaIdFiles.get(refPath);\n }\n if (!targetFile) return undefined;\n const document = loadJson(targetFile) as Record<string, unknown>;\n return {\n node: resolvePointer(document, fragment),\n file: targetFile,\n document,\n key: `${targetFile}${fragment}`,\n };\n };\n\n const walk = (\n node: unknown,\n propertyPath: string[],\n currentFile: string,\n currentDocument: Record<string, unknown>,\n depth: number\n ): void => {\n if (!node || typeof node !== 'object' || depth > 48) return;\n const obj = node as Record<string, unknown>;\n if (typeof obj['x-entity'] === 'string' && propertyPath.length > 0) {\n const entityPath = { path: [...propertyPath], xEntity: obj['x-entity'] as string };\n found.set(`${entityPath.path.join('.')}\\0${entityPath.xEntity}`, entityPath);\n }\n\n if (typeof obj.$ref === 'string') {\n const target = resolveRef(obj.$ref, currentFile, currentDocument);\n if (target && target.node !== undefined) {\n const guard = `${target.key}\\0${propertyPath.join('.')}`;\n if (!stack.has(guard)) {\n stack.add(guard);\n walk(target.node, propertyPath, target.file, target.document, depth + 1);\n stack.delete(guard);\n }\n }\n }\n\n const properties = obj.properties;\n if (properties && typeof properties === 'object' && !Array.isArray(properties)) {\n for (const [key, child] of Object.entries(properties as Record<string, unknown>)) {\n walk(child, [...propertyPath, key], currentFile, currentDocument, depth + 1);\n }\n }\n if (obj.items !== undefined) {\n walk(obj.items, [...propertyPath, '*'], currentFile, currentDocument, depth + 1);\n }\n for (const keyword of ['allOf', 'anyOf', 'oneOf'] as const) {\n const branches = obj[keyword];\n if (Array.isArray(branches)) {\n for (const branch of branches) walk(branch, propertyPath, currentFile, currentDocument, depth + 1);\n }\n }\n for (const keyword of ['if', 'then', 'else', 'not'] as const) {\n if (obj[keyword] !== undefined) {\n walk(obj[keyword], propertyPath, currentFile, currentDocument, depth + 1);\n }\n }\n };\n\n walk(root, [], file, root, 0);\n const result = [...found.values()].sort((a, b) => {\n const byPath = a.path.join('.').localeCompare(b.path.join('.'));\n return byPath || a.xEntity.localeCompare(b.xEntity);\n });\n s.entityPaths.set(cacheKey, result);\n return result;\n } catch {\n return [];\n }\n}\n\n/**\n * Resolve a JSON Schema `default` value by walking a dot-separated property\n * path through a schema's nested `properties` maps.\n *\n * This intentionally does not instantiate AJV's `useDefaults` mutation mode.\n * Callers decide when a schema default is semantically meaningful for their\n * runtime object; this helper only reports what the bundled schema declares.\n *\n * Fails closed (`undefined`) when the schema is unavailable, the path is not a\n * concrete properties path, or the target schema node has no `default`.\n *\n * @internal — not part of the public API surface; may change without a major bump.\n */\nexport function getSchemaDefaultByPath(schemaRef: string, dottedPath: string, version: string = ADCP_VERSION): unknown {\n try {\n const s = ensureInit(version);\n const normalized = normalizeSchemaRef(schemaRef);\n if (!normalized) return undefined;\n\n const cacheKey = `schema-ref::${normalized}`;\n const file = path.join(s.root, normalized);\n if (!existsSync(file)) return undefined;\n\n let schema = s.rawSchemas.get(cacheKey);\n if (!schema) {\n schema = loadJson(file) as Record<string, unknown>;\n s.rawSchemas.set(cacheKey, schema);\n }\n\n const node = resolveSchemaPropertyPath(schema, dottedPath);\n if (!node || !Object.prototype.hasOwnProperty.call(node, 'default')) return undefined;\n return cloneJsonValue((node as { default: unknown }).default);\n } catch {\n return undefined;\n }\n}\n\nfunction resolveSchemaPropertyPath(\n schema: Record<string, unknown>,\n dottedPath: string\n): Record<string, unknown> | undefined {\n let current: unknown = schema;\n for (const key of dottedPath.split('.')) {\n if (!current || typeof current !== 'object') return undefined;\n const props = (current as Record<string, unknown>).properties;\n if (!props || typeof props !== 'object') return undefined;\n if (!Object.prototype.hasOwnProperty.call(props, key)) return undefined;\n current = (props as Record<string, unknown>)[key];\n }\n return current && typeof current === 'object' ? (current as Record<string, unknown>) : undefined;\n}\n\nfunction cloneJsonValue(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n return JSON.parse(JSON.stringify(value)) as unknown;\n}\n"],"mappings":"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","names":["require"]}
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "13.0.1";
4
+ export declare const LIBRARY_VERSION = "13.0.3";
5
5
  /**
6
6
  * AdCP specification version this library is built for
7
7
  */
8
- export declare const ADCP_VERSION = "3.1.15";
8
+ export declare const ADCP_VERSION = "3.1.20";
9
9
  /**
10
10
  * AdCP major version sent with every request (adcp_major_version field).
11
11
  * Sellers validate this against their supported versions and return
@@ -19,7 +19,7 @@ export declare const ADCP_MAJOR_VERSION = 3;
19
19
  * this list by hand; bumping the AdCP pin via `npm run sync-version`
20
20
  * extends it.
21
21
  */
22
- export declare const COMPATIBLE_ADCP_VERSIONS: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15"];
22
+ export declare const COMPATIBLE_ADCP_VERSIONS: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15", "3.1.16", "3.1.17", "3.1.18", "3.1.19", "3.1.20"];
23
23
  /**
24
24
  * String literal union of every AdCP version the SDK formally supports.
25
25
  *
@@ -33,10 +33,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];
33
33
  * Full version information
34
34
  */
35
35
  export declare const VERSION_INFO: {
36
- readonly library: "13.0.1";
37
- readonly adcp: "3.1.15";
38
- readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15"];
39
- readonly generatedAt: "2026-09-02T12:28:30.374Z";
36
+ readonly library: "13.0.3";
37
+ readonly adcp: "3.1.20";
38
+ readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15", "3.1.16", "3.1.17", "3.1.18", "3.1.19", "3.1.20"];
39
+ readonly generatedAt: "2026-09-09T01:25:31.664Z";
40
40
  };
41
41
  /**
42
42
  * Get the AdCP specification version this library is built for
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "13.0.1";
4
+ export declare const LIBRARY_VERSION = "13.0.3";
5
5
  /**
6
6
  * AdCP specification version this library is built for
7
7
  */
8
- export declare const ADCP_VERSION = "3.1.15";
8
+ export declare const ADCP_VERSION = "3.1.20";
9
9
  /**
10
10
  * AdCP major version sent with every request (adcp_major_version field).
11
11
  * Sellers validate this against their supported versions and return
@@ -19,7 +19,7 @@ export declare const ADCP_MAJOR_VERSION = 3;
19
19
  * this list by hand; bumping the AdCP pin via `npm run sync-version`
20
20
  * extends it.
21
21
  */
22
- export declare const COMPATIBLE_ADCP_VERSIONS: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15"];
22
+ export declare const COMPATIBLE_ADCP_VERSIONS: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15", "3.1.16", "3.1.17", "3.1.18", "3.1.19", "3.1.20"];
23
23
  /**
24
24
  * String literal union of every AdCP version the SDK formally supports.
25
25
  *
@@ -33,10 +33,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];
33
33
  * Full version information
34
34
  */
35
35
  export declare const VERSION_INFO: {
36
- readonly library: "13.0.1";
37
- readonly adcp: "3.1.15";
38
- readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15"];
39
- readonly generatedAt: "2026-09-02T12:28:30.374Z";
36
+ readonly library: "13.0.3";
37
+ readonly adcp: "3.1.20";
38
+ readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15", "3.1.16", "3.1.17", "3.1.18", "3.1.19", "3.1.20"];
39
+ readonly generatedAt: "2026-09-09T01:25:31.664Z";
40
40
  };
41
41
  /**
42
42
  * Get the AdCP specification version this library is built for
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,qYAwC3B,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,SAAS,MAAM,EAAE,CAEzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAajE"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,ubA6C3B,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,SAAS,MAAM,EAAE,CAEzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAajE"}
@@ -31,8 +31,8 @@ __export(version_exports, {
31
31
  toReleasePrecisionVersion: () => toReleasePrecisionVersion
32
32
  });
33
33
  module.exports = __toCommonJS(version_exports);
34
- const LIBRARY_VERSION = "13.0.1";
35
- const ADCP_VERSION = "3.1.15";
34
+ const LIBRARY_VERSION = "13.0.3";
35
+ const ADCP_VERSION = "3.1.20";
36
36
  const ADCP_MAJOR_VERSION = 3;
37
37
  const COMPATIBLE_ADCP_VERSIONS = [
38
38
  "v2.5",
@@ -73,13 +73,18 @@ const COMPATIBLE_ADCP_VERSIONS = [
73
73
  "3.1.12",
74
74
  "3.1.13",
75
75
  "3.1.14",
76
- "3.1.15"
76
+ "3.1.15",
77
+ "3.1.16",
78
+ "3.1.17",
79
+ "3.1.18",
80
+ "3.1.19",
81
+ "3.1.20"
77
82
  ];
78
83
  const VERSION_INFO = {
79
- library: "13.0.1",
80
- adcp: "3.1.15",
84
+ library: "13.0.3",
85
+ adcp: "3.1.20",
81
86
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
82
- generatedAt: "2026-09-02T12:28:30.374Z"
87
+ generatedAt: "2026-09-09T01:25:31.664Z"
83
88
  };
84
89
  function getAdcpVersion() {
85
90
  return ADCP_VERSION;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '13.0.1';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.1.15';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '13.0.1',\n adcp: '3.1.15',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-09-02T12:28:30.374Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '13.0.3';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.1.20';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n '3.1.16',\n '3.1.17',\n '3.1.18',\n '3.1.19',\n '3.1.20',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '13.0.3',\n adcp: '3.1.20',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-09-09T01:25:31.664Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
@@ -1,5 +1,5 @@
1
- const LIBRARY_VERSION = "13.0.1";
2
- const ADCP_VERSION = "3.1.15";
1
+ const LIBRARY_VERSION = "13.0.3";
2
+ const ADCP_VERSION = "3.1.20";
3
3
  const ADCP_MAJOR_VERSION = 3;
4
4
  const COMPATIBLE_ADCP_VERSIONS = [
5
5
  "v2.5",
@@ -40,13 +40,18 @@ const COMPATIBLE_ADCP_VERSIONS = [
40
40
  "3.1.12",
41
41
  "3.1.13",
42
42
  "3.1.14",
43
- "3.1.15"
43
+ "3.1.15",
44
+ "3.1.16",
45
+ "3.1.17",
46
+ "3.1.18",
47
+ "3.1.19",
48
+ "3.1.20"
44
49
  ];
45
50
  const VERSION_INFO = {
46
- library: "13.0.1",
47
- adcp: "3.1.15",
51
+ library: "13.0.3",
52
+ adcp: "3.1.20",
48
53
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
49
- generatedAt: "2026-09-02T12:28:30.374Z"
54
+ generatedAt: "2026-09-09T01:25:31.664Z"
50
55
  };
51
56
  function getAdcpVersion() {
52
57
  return ADCP_VERSION;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '13.0.1';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.1.15';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '13.0.1',\n adcp: '3.1.15',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-09-02T12:28:30.374Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":"AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '13.0.3';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.1.20';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n '3.1.16',\n '3.1.17',\n '3.1.18',\n '3.1.19',\n '3.1.20',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '13.0.3',\n adcp: '3.1.20',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-09-09T01:25:31.664Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":"AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}