@adcp/sdk 13.0.0-rc.7 → 13.0.0-rc.9

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 (1678) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/bin/adcp.js +29 -0
  3. package/compliance/cache/{3.1.10.previous/protocols → 3.1.11/domains}/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
  4. package/compliance/cache/{3.1.10 → 3.1.11}/index.json +3 -3
  5. package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
  6. package/compliance/cache/{3.1.10 → 3.1.11}/universal/storyboard-schema.yaml +19 -6
  7. package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
  8. package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/index.json +3 -3
  9. package/compliance/cache/{3.1.10/domains → 3.1.11.previous/protocols}/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
  10. package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/storyboard-schema.yaml +19 -6
  11. package/dist/lib/adapters/roster-account-store.d.mts +9 -8
  12. package/dist/lib/adapters/roster-account-store.d.ts +9 -8
  13. package/dist/lib/adapters/roster-account-store.d.ts.map +1 -1
  14. package/dist/lib/adapters/roster-account-store.js +2 -1
  15. package/dist/lib/adapters/roster-account-store.js.map +1 -1
  16. package/dist/lib/adapters/roster-account-store.mjs +2 -1
  17. package/dist/lib/adapters/roster-account-store.mjs.map +1 -1
  18. package/dist/lib/auth/oauth/ClientCredentialsFlow.d.mts +2 -0
  19. package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts +2 -0
  20. package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts.map +1 -1
  21. package/dist/lib/auth/oauth/ClientCredentialsFlow.js +69 -24
  22. package/dist/lib/auth/oauth/ClientCredentialsFlow.js.map +1 -1
  23. package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs +69 -24
  24. package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs.map +1 -1
  25. package/dist/lib/auth/oauth/authorization-required.d.mts +3 -0
  26. package/dist/lib/auth/oauth/authorization-required.d.ts +3 -0
  27. package/dist/lib/auth/oauth/authorization-required.d.ts.map +1 -1
  28. package/dist/lib/auth/oauth/authorization-required.js +37 -7
  29. package/dist/lib/auth/oauth/authorization-required.js.map +1 -1
  30. package/dist/lib/auth/oauth/authorization-required.mjs +37 -7
  31. package/dist/lib/auth/oauth/authorization-required.mjs.map +1 -1
  32. package/dist/lib/auth/oauth/discovery.d.mts +2 -0
  33. package/dist/lib/auth/oauth/discovery.d.ts +2 -0
  34. package/dist/lib/auth/oauth/discovery.d.ts.map +1 -1
  35. package/dist/lib/auth/oauth/discovery.js +7 -5
  36. package/dist/lib/auth/oauth/discovery.js.map +1 -1
  37. package/dist/lib/auth/oauth/discovery.mjs +7 -5
  38. package/dist/lib/auth/oauth/discovery.mjs.map +1 -1
  39. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  40. package/dist/lib/core/ConversationTypes.d.mts +6 -2
  41. package/dist/lib/core/ConversationTypes.d.ts +6 -2
  42. package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
  43. package/dist/lib/core/ConversationTypes.js.map +1 -1
  44. package/dist/lib/core/GovernanceMiddleware.d.mts +3 -3
  45. package/dist/lib/core/GovernanceMiddleware.d.ts +3 -3
  46. package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -1
  47. package/dist/lib/core/GovernanceMiddleware.js +8 -4
  48. package/dist/lib/core/GovernanceMiddleware.js.map +1 -1
  49. package/dist/lib/core/GovernanceMiddleware.mjs +8 -4
  50. package/dist/lib/core/GovernanceMiddleware.mjs.map +1 -1
  51. package/dist/lib/core/SingleAgentClient.d.mts +12 -1
  52. package/dist/lib/core/SingleAgentClient.d.ts +12 -1
  53. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  54. package/dist/lib/core/SingleAgentClient.js +89 -12
  55. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  56. package/dist/lib/core/SingleAgentClient.mjs +89 -12
  57. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  58. package/dist/lib/core/TaskExecutor.d.mts +2 -4
  59. package/dist/lib/core/TaskExecutor.d.ts +2 -4
  60. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  61. package/dist/lib/core/TaskExecutor.js +90 -14
  62. package/dist/lib/core/TaskExecutor.js.map +1 -1
  63. package/dist/lib/core/TaskExecutor.mjs +95 -14
  64. package/dist/lib/core/TaskExecutor.mjs.map +1 -1
  65. package/dist/lib/core/task-deadline.d.mts +20 -0
  66. package/dist/lib/core/task-deadline.d.ts +21 -0
  67. package/dist/lib/core/task-deadline.d.ts.map +1 -0
  68. package/dist/lib/core/task-deadline.js +74 -0
  69. package/dist/lib/core/task-deadline.js.map +1 -0
  70. package/dist/lib/core/task-deadline.mjs +47 -0
  71. package/dist/lib/core/task-deadline.mjs.map +1 -0
  72. package/dist/lib/errors/index.d.mts +11 -0
  73. package/dist/lib/errors/index.d.ts +11 -0
  74. package/dist/lib/errors/index.d.ts.map +1 -1
  75. package/dist/lib/errors/index.js +6 -0
  76. package/dist/lib/errors/index.js.map +1 -1
  77. package/dist/lib/errors/index.mjs +6 -0
  78. package/dist/lib/errors/index.mjs.map +1 -1
  79. package/dist/lib/net/address-guards.d.ts.map +1 -1
  80. package/dist/lib/net/address-guards.js +6 -0
  81. package/dist/lib/net/address-guards.js.map +1 -1
  82. package/dist/lib/net/address-guards.mjs +6 -0
  83. package/dist/lib/net/address-guards.mjs.map +1 -1
  84. package/dist/lib/net/ssrf-fetch.d.ts.map +1 -1
  85. package/dist/lib/net/ssrf-fetch.js +70 -46
  86. package/dist/lib/net/ssrf-fetch.js.map +1 -1
  87. package/dist/lib/net/ssrf-fetch.mjs +70 -46
  88. package/dist/lib/net/ssrf-fetch.mjs.map +1 -1
  89. package/dist/lib/protocols/abort.d.mts +3 -1
  90. package/dist/lib/protocols/abort.d.ts +3 -1
  91. package/dist/lib/protocols/abort.d.ts.map +1 -1
  92. package/dist/lib/protocols/abort.js +19 -17
  93. package/dist/lib/protocols/abort.js.map +1 -1
  94. package/dist/lib/protocols/abort.mjs +19 -17
  95. package/dist/lib/protocols/abort.mjs.map +1 -1
  96. package/dist/lib/protocols/index.d.ts.map +1 -1
  97. package/dist/lib/protocols/index.js +13 -10
  98. package/dist/lib/protocols/index.js.map +1 -1
  99. package/dist/lib/protocols/index.mjs +13 -10
  100. package/dist/lib/protocols/index.mjs.map +1 -1
  101. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  102. package/dist/lib/protocols/mcp.js +8 -7
  103. package/dist/lib/protocols/mcp.js.map +1 -1
  104. package/dist/lib/protocols/mcp.mjs +8 -7
  105. package/dist/lib/protocols/mcp.mjs.map +1 -1
  106. package/dist/lib/schemas-data/3.1/a2ui/bound-value.json +1 -1
  107. package/dist/lib/schemas-data/3.1/a2ui/component.json +1 -1
  108. package/dist/lib/schemas-data/3.1/a2ui/si-catalog.json +25 -25
  109. package/dist/lib/schemas-data/3.1/a2ui/surface.json +2 -2
  110. package/dist/lib/schemas-data/3.1/a2ui/user-action.json +1 -1
  111. package/dist/lib/schemas-data/3.1/aao/agent-publishers.json +1 -1
  112. package/dist/lib/schemas-data/3.1/account/get-account-financials-request.json +6 -6
  113. package/dist/lib/schemas-data/3.1/account/get-account-financials-response.json +12 -12
  114. package/dist/lib/schemas-data/3.1/account/list-accounts-request.json +6 -6
  115. package/dist/lib/schemas-data/3.1/account/list-accounts-response.json +8 -8
  116. package/dist/lib/schemas-data/3.1/account/report-usage-request.json +6 -6
  117. package/dist/lib/schemas-data/3.1/account/report-usage-response.json +6 -6
  118. package/dist/lib/schemas-data/3.1/account/sync-accounts-request.json +12 -12
  119. package/dist/lib/schemas-data/3.1/account/sync-accounts-response.json +16 -16
  120. package/dist/lib/schemas-data/3.1/account/sync-governance-request.json +6 -6
  121. package/dist/lib/schemas-data/3.1/account/sync-governance-response.json +10 -10
  122. package/dist/lib/schemas-data/3.1/adagents.json +29 -29
  123. package/dist/lib/schemas-data/3.1/brand/acquire-rights-request.json +10 -10
  124. package/dist/lib/schemas-data/3.1/brand/acquire-rights-response.json +16 -16
  125. package/dist/lib/schemas-data/3.1/brand/creative-approval-request.json +5 -5
  126. package/dist/lib/schemas-data/3.1/brand/creative-approval-response.json +12 -12
  127. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-request.json +4 -4
  128. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-response.json +10 -10
  129. package/dist/lib/schemas-data/3.1/brand/get-rights-request.json +8 -8
  130. package/dist/lib/schemas-data/3.1/brand/get-rights-response.json +11 -11
  131. package/dist/lib/schemas-data/3.1/brand/revocation-notification.json +4 -4
  132. package/dist/lib/schemas-data/3.1/brand/rights-pricing-option.json +5 -5
  133. package/dist/lib/schemas-data/3.1/brand/rights-terms.json +3 -3
  134. package/dist/lib/schemas-data/3.1/brand/search-brands-request.json +6 -6
  135. package/dist/lib/schemas-data/3.1/brand/search-brands-response.json +11 -11
  136. package/dist/lib/schemas-data/3.1/brand/update-rights-request.json +6 -6
  137. package/dist/lib/schemas-data/3.1/brand/update-rights-response.json +11 -11
  138. package/dist/lib/schemas-data/3.1/brand/verification-status.json +1 -1
  139. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-request.json +2 -2
  140. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-response.json +13 -13
  141. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-request.json +2 -2
  142. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-response.json +13 -13
  143. package/dist/lib/schemas-data/3.1/brand.json +21 -21
  144. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-request.json +12 -12
  145. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-response.json +12 -12
  146. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-request.json +16 -16
  147. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-response.json +10 -10
  148. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-request.json +5 -5
  149. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-response.json +23 -23
  150. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-request.json +16 -16
  151. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-response.json +18 -18
  152. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-request.json +7 -7
  153. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-response.json +24 -24
  154. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-request.json +16 -16
  155. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-response.json +10 -10
  156. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-request.json +12 -12
  157. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-response.json +12 -12
  158. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-request.json +16 -16
  159. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-response.json +181 -181
  160. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-request.json +21 -21
  161. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-response.json +11 -11
  162. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-request.json +17 -17
  163. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-response.json +56 -56
  164. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-request.json +44 -44
  165. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-response.json +13 -13
  166. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-request.json +16 -16
  167. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-response.json +48 -48
  168. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-request.json +17 -17
  169. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-response.json +58 -58
  170. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-request.json +18 -18
  171. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-response.json +16 -16
  172. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-request.json +44 -44
  173. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-response.json +50 -50
  174. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-request.json +46 -46
  175. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-response.json +27 -27
  176. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-request.json +42 -42
  177. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-response.json +10 -10
  178. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-request.json +53 -53
  179. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-response.json +54 -54
  180. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-request.json +83 -83
  181. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-response.json +77 -77
  182. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-request.json +25 -25
  183. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-response.json +40 -40
  184. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-request.json +18 -18
  185. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-response.json +65 -65
  186. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-request.json +49 -49
  187. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-response.json +99 -99
  188. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-request.json +12 -12
  189. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-response.json +48 -48
  190. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-request.json +12 -12
  191. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-response.json +10 -10
  192. package/dist/lib/schemas-data/3.1/bundled/media-buy/package-request.json +79 -79
  193. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-request.json +8 -8
  194. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-response.json +10 -10
  195. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-request.json +18 -18
  196. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-response.json +12 -12
  197. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-request.json +26 -26
  198. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-response.json +12 -12
  199. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-request.json +19 -19
  200. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-response.json +16 -16
  201. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-request.json +79 -79
  202. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-response.json +71 -71
  203. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-request.json +18 -18
  204. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-response.json +26 -26
  205. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-request.json +16 -16
  206. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-response.json +10 -10
  207. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-request.json +16 -16
  208. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-response.json +27 -27
  209. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-request.json +17 -17
  210. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-response.json +27 -27
  211. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-request.json +18 -18
  212. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-response.json +26 -26
  213. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-request.json +19 -19
  214. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-response.json +15 -15
  215. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-request.json +5 -5
  216. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-response.json +35 -35
  217. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-request.json +16 -16
  218. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-response.json +181 -181
  219. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-request.json +21 -21
  220. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-response.json +11 -11
  221. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-request.json +17 -17
  222. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-response.json +12 -12
  223. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-request.json +24 -24
  224. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-response.json +53 -53
  225. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-request.json +5 -5
  226. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-response.json +23 -23
  227. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-request.json +18 -18
  228. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-response.json +25 -25
  229. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-request.json +16 -16
  230. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-response.json +26 -26
  231. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-request.json +5 -5
  232. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-response.json +11 -11
  233. package/dist/lib/schemas-data/3.1/collection/base-collection-source.json +3 -3
  234. package/dist/lib/schemas-data/3.1/collection/collection-list-changed-webhook.json +2 -2
  235. package/dist/lib/schemas-data/3.1/collection/collection-list-filters.json +7 -7
  236. package/dist/lib/schemas-data/3.1/collection/collection-list.json +5 -5
  237. package/dist/lib/schemas-data/3.1/collection/create-collection-list-request.json +8 -8
  238. package/dist/lib/schemas-data/3.1/collection/create-collection-list-response.json +6 -6
  239. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-request.json +5 -5
  240. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-response.json +5 -5
  241. package/dist/lib/schemas-data/3.1/collection/get-collection-list-request.json +5 -5
  242. package/dist/lib/schemas-data/3.1/collection/get-collection-list-response.json +12 -12
  243. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-request.json +6 -6
  244. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-response.json +7 -7
  245. package/dist/lib/schemas-data/3.1/collection/update-collection-list-request.json +8 -8
  246. package/dist/lib/schemas-data/3.1/collection/update-collection-list-response.json +6 -6
  247. package/dist/lib/schemas-data/3.1/content-standards/artifact-webhook-payload.json +3 -3
  248. package/dist/lib/schemas-data/3.1/content-standards/artifact.json +7 -7
  249. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-request.json +5 -5
  250. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-response.json +10 -10
  251. package/dist/lib/schemas-data/3.1/content-standards/content-standards.json +7 -7
  252. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-request.json +8 -8
  253. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-response.json +8 -8
  254. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-request.json +4 -4
  255. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-response.json +9 -9
  256. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-request.json +5 -5
  257. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-response.json +10 -10
  258. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-request.json +6 -6
  259. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-response.json +10 -10
  260. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-request.json +8 -8
  261. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-response.json +8 -8
  262. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-request.json +5 -5
  263. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-response.json +10 -10
  264. package/dist/lib/schemas-data/3.1/core/account-authorization.json +1 -1
  265. package/dist/lib/schemas-data/3.1/core/account-ref.json +2 -2
  266. package/dist/lib/schemas-data/3.1/core/account-with-authorization.json +3 -3
  267. package/dist/lib/schemas-data/3.1/core/account.json +10 -10
  268. package/dist/lib/schemas-data/3.1/core/activation-key.json +1 -1
  269. package/dist/lib/schemas-data/3.1/core/ad-inventory-config.json +1 -1
  270. package/dist/lib/schemas-data/3.1/core/agent-encryption-key.json +1 -1
  271. package/dist/lib/schemas-data/3.1/core/agent-signing-key.json +1 -1
  272. package/dist/lib/schemas-data/3.1/core/app-item.json +4 -4
  273. package/dist/lib/schemas-data/3.1/core/asset-group-vocabulary.json +1 -1
  274. package/dist/lib/schemas-data/3.1/core/assets/asset-union.json +21 -21
  275. package/dist/lib/schemas-data/3.1/core/assets/audio-asset.json +3 -3
  276. package/dist/lib/schemas-data/3.1/core/assets/brief-asset.json +2 -2
  277. package/dist/lib/schemas-data/3.1/core/assets/card-asset.json +6 -6
  278. package/dist/lib/schemas-data/3.1/core/assets/catalog-asset.json +2 -2
  279. package/dist/lib/schemas-data/3.1/core/assets/css-asset.json +2 -2
  280. package/dist/lib/schemas-data/3.1/core/assets/daast-asset.json +4 -4
  281. package/dist/lib/schemas-data/3.1/core/assets/daast-tracker-asset.json +3 -3
  282. package/dist/lib/schemas-data/3.1/core/assets/html-asset.json +2 -2
  283. package/dist/lib/schemas-data/3.1/core/assets/image-asset.json +2 -2
  284. package/dist/lib/schemas-data/3.1/core/assets/javascript-asset.json +3 -3
  285. package/dist/lib/schemas-data/3.1/core/assets/markdown-asset.json +2 -2
  286. package/dist/lib/schemas-data/3.1/core/assets/pixel-tracker-asset.json +2 -2
  287. package/dist/lib/schemas-data/3.1/core/assets/published-post-asset.json +2 -2
  288. package/dist/lib/schemas-data/3.1/core/assets/text-asset.json +2 -2
  289. package/dist/lib/schemas-data/3.1/core/assets/url-asset.json +3 -3
  290. package/dist/lib/schemas-data/3.1/core/assets/vast-asset.json +4 -4
  291. package/dist/lib/schemas-data/3.1/core/assets/vast-tracker-asset.json +3 -3
  292. package/dist/lib/schemas-data/3.1/core/assets/video-asset.json +7 -7
  293. package/dist/lib/schemas-data/3.1/core/assets/webhook-asset.json +7 -7
  294. package/dist/lib/schemas-data/3.1/core/assets/zip-asset.json +2 -2
  295. package/dist/lib/schemas-data/3.1/core/async-response-data.json +29 -29
  296. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
  297. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
  298. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
  299. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
  300. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
  301. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
  302. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
  303. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
  304. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
  305. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
  306. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
  307. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
  308. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  309. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  310. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
  311. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
  312. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
  313. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
  314. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
  315. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
  316. package/dist/lib/schemas-data/3.1/core/attribution-window.json +4 -4
  317. package/dist/lib/schemas-data/3.1/core/audience-member.json +3 -3
  318. package/dist/lib/schemas-data/3.1/core/audience-selector.json +7 -7
  319. package/dist/lib/schemas-data/3.1/core/authorized-agent-base.json +3 -3
  320. package/dist/lib/schemas-data/3.1/core/brand-id.json +1 -1
  321. package/dist/lib/schemas-data/3.1/core/brand-ref.json +3 -3
  322. package/dist/lib/schemas-data/3.1/core/business-entity.json +2 -2
  323. package/dist/lib/schemas-data/3.1/core/cancellation-policy.json +2 -2
  324. package/dist/lib/schemas-data/3.1/core/canonical-format-kind.json +1 -1
  325. package/dist/lib/schemas-data/3.1/core/canonical-projection-ref.json +3 -3
  326. package/dist/lib/schemas-data/3.1/core/canonical-projection-slot-override.json +1 -1
  327. package/dist/lib/schemas-data/3.1/core/catalog-field-mapping.json +2 -2
  328. package/dist/lib/schemas-data/3.1/core/catalog-item-delivery-metrics.json +3 -3
  329. package/dist/lib/schemas-data/3.1/core/catalog.json +7 -7
  330. package/dist/lib/schemas-data/3.1/core/catchment.json +5 -5
  331. package/dist/lib/schemas-data/3.1/core/collection-distribution.json +2 -2
  332. package/dist/lib/schemas-data/3.1/core/collection-list-ref.json +1 -1
  333. package/dist/lib/schemas-data/3.1/core/collection-selector.json +1 -1
  334. package/dist/lib/schemas-data/3.1/core/collection.json +13 -13
  335. package/dist/lib/schemas-data/3.1/core/committed-metric.json +9 -9
  336. package/dist/lib/schemas-data/3.1/core/content-rating.json +2 -2
  337. package/dist/lib/schemas-data/3.1/core/context.json +1 -1
  338. package/dist/lib/schemas-data/3.1/core/creative-asset.json +10 -10
  339. package/dist/lib/schemas-data/3.1/core/creative-assignment.json +2 -2
  340. package/dist/lib/schemas-data/3.1/core/creative-brief.json +4 -4
  341. package/dist/lib/schemas-data/3.1/core/creative-consumption.json +1 -1
  342. package/dist/lib/schemas-data/3.1/core/creative-delivery-metrics.json +2 -2
  343. package/dist/lib/schemas-data/3.1/core/creative-filters.json +5 -5
  344. package/dist/lib/schemas-data/3.1/core/creative-item.json +1 -1
  345. package/dist/lib/schemas-data/3.1/core/creative-manifest.json +11 -11
  346. package/dist/lib/schemas-data/3.1/core/creative-policy.json +3 -3
  347. package/dist/lib/schemas-data/3.1/core/creative-variable.json +1 -1
  348. package/dist/lib/schemas-data/3.1/core/creative-variant.json +5 -5
  349. package/dist/lib/schemas-data/3.1/core/data-provider-signal-selector.json +1 -1
  350. package/dist/lib/schemas-data/3.1/core/date-range.json +1 -1
  351. package/dist/lib/schemas-data/3.1/core/datetime-range.json +1 -1
  352. package/dist/lib/schemas-data/3.1/core/daypart-target.json +2 -2
  353. package/dist/lib/schemas-data/3.1/core/deadline-policy.json +1 -1
  354. package/dist/lib/schemas-data/3.1/core/delivery-forecast.json +7 -7
  355. package/dist/lib/schemas-data/3.1/core/delivery-metric-aggregate.json +9 -9
  356. package/dist/lib/schemas-data/3.1/core/delivery-metrics.json +8 -8
  357. package/dist/lib/schemas-data/3.1/core/deployment.json +3 -3
  358. package/dist/lib/schemas-data/3.1/core/destination-item.json +4 -4
  359. package/dist/lib/schemas-data/3.1/core/destination.json +1 -1
  360. package/dist/lib/schemas-data/3.1/core/diagnostic-issue.json +1 -1
  361. package/dist/lib/schemas-data/3.1/core/downstream-connection-requirement.json +1 -1
  362. package/dist/lib/schemas-data/3.1/core/duration.json +1 -1
  363. package/dist/lib/schemas-data/3.1/core/education-item.json +4 -4
  364. package/dist/lib/schemas-data/3.1/core/error.json +1 -1
  365. package/dist/lib/schemas-data/3.1/core/evaluator-spec.json +5 -5
  366. package/dist/lib/schemas-data/3.1/core/event-custom-data.json +2 -2
  367. package/dist/lib/schemas-data/3.1/core/event-source-health.json +3 -3
  368. package/dist/lib/schemas-data/3.1/core/event-surface.json +2 -2
  369. package/dist/lib/schemas-data/3.1/core/event.json +8 -8
  370. package/dist/lib/schemas-data/3.1/core/ext.json +1 -1
  371. package/dist/lib/schemas-data/3.1/core/feature-requirement.json +1 -1
  372. package/dist/lib/schemas-data/3.1/core/flight-item.json +4 -4
  373. package/dist/lib/schemas-data/3.1/core/forecast-dimension-audience.json +2 -2
  374. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-platform.json +2 -2
  375. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-type.json +2 -2
  376. package/dist/lib/schemas-data/3.1/core/forecast-dimension-geo.json +5 -5
  377. package/dist/lib/schemas-data/3.1/core/forecast-dimension-placement.json +2 -2
  378. package/dist/lib/schemas-data/3.1/core/forecast-dimension-signal.json +2 -2
  379. package/dist/lib/schemas-data/3.1/core/forecast-point-dimensions.json +7 -7
  380. package/dist/lib/schemas-data/3.1/core/forecast-point.json +27 -27
  381. package/dist/lib/schemas-data/3.1/core/forecast-range.json +1 -1
  382. package/dist/lib/schemas-data/3.1/core/forecast-vendor-metric-value.json +5 -5
  383. package/dist/lib/schemas-data/3.1/core/format-id.json +1 -1
  384. package/dist/lib/schemas-data/3.1/core/format-option-ref.json +1 -1
  385. package/dist/lib/schemas-data/3.1/core/format-shape-vocabulary.json +1 -1
  386. package/dist/lib/schemas-data/3.1/core/format.json +44 -44
  387. package/dist/lib/schemas-data/3.1/core/frequency-cap.json +4 -4
  388. package/dist/lib/schemas-data/3.1/core/generation-credential.json +3 -3
  389. package/dist/lib/schemas-data/3.1/core/geo-breakdown-support.json +3 -3
  390. package/dist/lib/schemas-data/3.1/core/geo-delivery-metrics.json +6 -6
  391. package/dist/lib/schemas-data/3.1/core/hotel-item.json +4 -4
  392. package/dist/lib/schemas-data/3.1/core/identifier.json +2 -2
  393. package/dist/lib/schemas-data/3.1/core/impairment.json +3 -3
  394. package/dist/lib/schemas-data/3.1/core/industry-identifier.json +2 -2
  395. package/dist/lib/schemas-data/3.1/core/insertion-order.json +1 -1
  396. package/dist/lib/schemas-data/3.1/core/installment-deadlines.json +2 -2
  397. package/dist/lib/schemas-data/3.1/core/installment.json +9 -9
  398. package/dist/lib/schemas-data/3.1/core/job-item.json +3 -3
  399. package/dist/lib/schemas-data/3.1/core/keyword-delivery-metrics.json +3 -3
  400. package/dist/lib/schemas-data/3.1/core/limited-series.json +1 -1
  401. package/dist/lib/schemas-data/3.1/core/material-deadline.json +1 -1
  402. package/dist/lib/schemas-data/3.1/core/mcp-webhook-payload.json +5 -5
  403. package/dist/lib/schemas-data/3.1/core/measurement-readiness.json +5 -5
  404. package/dist/lib/schemas-data/3.1/core/measurement-terms.json +3 -3
  405. package/dist/lib/schemas-data/3.1/core/measurement-window.json +1 -1
  406. package/dist/lib/schemas-data/3.1/core/media-buy-available-action.json +4 -4
  407. package/dist/lib/schemas-data/3.1/core/media-buy-features.json +1 -1
  408. package/dist/lib/schemas-data/3.1/core/media-buy.json +10 -10
  409. package/dist/lib/schemas-data/3.1/core/missing-metric.json +9 -9
  410. package/dist/lib/schemas-data/3.1/core/notification-config.json +4 -4
  411. package/dist/lib/schemas-data/3.1/core/offering-asset-group.json +16 -16
  412. package/dist/lib/schemas-data/3.1/core/offering.json +5 -5
  413. package/dist/lib/schemas-data/3.1/core/optimization-goal.json +7 -7
  414. package/dist/lib/schemas-data/3.1/core/outcome-measurement.json +2 -2
  415. package/dist/lib/schemas-data/3.1/core/overlay.json +1 -1
  416. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-group.json +2 -2
  417. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-groups.json +2 -2
  418. package/dist/lib/schemas-data/3.1/core/package-signal-targeting.json +3 -3
  419. package/dist/lib/schemas-data/3.1/core/package.json +17 -17
  420. package/dist/lib/schemas-data/3.1/core/pagination-request.json +1 -1
  421. package/dist/lib/schemas-data/3.1/core/pagination-response.json +1 -1
  422. package/dist/lib/schemas-data/3.1/core/performance-feedback.json +12 -12
  423. package/dist/lib/schemas-data/3.1/core/performance-standard.json +4 -4
  424. package/dist/lib/schemas-data/3.1/core/placement-definition.json +10 -10
  425. package/dist/lib/schemas-data/3.1/core/placement-ref.json +1 -1
  426. package/dist/lib/schemas-data/3.1/core/placement.json +7 -7
  427. package/dist/lib/schemas-data/3.1/core/planned-delivery.json +5 -5
  428. package/dist/lib/schemas-data/3.1/core/platform-extension-ref.json +1 -1
  429. package/dist/lib/schemas-data/3.1/core/postal-area-support.json +2 -2
  430. package/dist/lib/schemas-data/3.1/core/postal-area.json +4 -4
  431. package/dist/lib/schemas-data/3.1/core/postal-country-system.json +2 -2
  432. package/dist/lib/schemas-data/3.1/core/price.json +1 -1
  433. package/dist/lib/schemas-data/3.1/core/pricing-option.json +10 -10
  434. package/dist/lib/schemas-data/3.1/core/product-allocation.json +4 -4
  435. package/dist/lib/schemas-data/3.1/core/product-allowed-action.json +5 -5
  436. package/dist/lib/schemas-data/3.1/core/product-filters.json +27 -27
  437. package/dist/lib/schemas-data/3.1/core/product-format-declaration.json +16 -16
  438. package/dist/lib/schemas-data/3.1/core/product-signal-targeting-option.json +3 -3
  439. package/dist/lib/schemas-data/3.1/core/product.json +40 -40
  440. package/dist/lib/schemas-data/3.1/core/property-id.json +1 -1
  441. package/dist/lib/schemas-data/3.1/core/property-list-ref.json +1 -1
  442. package/dist/lib/schemas-data/3.1/core/property-tag.json +1 -1
  443. package/dist/lib/schemas-data/3.1/core/property.json +6 -6
  444. package/dist/lib/schemas-data/3.1/core/proposal.json +6 -6
  445. package/dist/lib/schemas-data/3.1/core/protocol-envelope.json +5 -5
  446. package/dist/lib/schemas-data/3.1/core/provenance.json +9 -9
  447. package/dist/lib/schemas-data/3.1/core/publisher-property-selector.json +3 -3
  448. package/dist/lib/schemas-data/3.1/core/push-notification-config.json +2 -2
  449. package/dist/lib/schemas-data/3.1/core/real-estate-item.json +4 -4
  450. package/dist/lib/schemas-data/3.1/core/reference-asset.json +1 -1
  451. package/dist/lib/schemas-data/3.1/core/registry-event.json +13 -13
  452. package/dist/lib/schemas-data/3.1/core/registry-feed-response.json +2 -2
  453. package/dist/lib/schemas-data/3.1/core/reporting-capabilities.json +8 -8
  454. package/dist/lib/schemas-data/3.1/core/reporting-webhook.json +3 -3
  455. package/dist/lib/schemas-data/3.1/core/requirements/asset-requirements.json +13 -13
  456. package/dist/lib/schemas-data/3.1/core/requirements/audio-asset-requirements.json +1 -1
  457. package/dist/lib/schemas-data/3.1/core/requirements/catalog-field-binding.json +4 -4
  458. package/dist/lib/schemas-data/3.1/core/requirements/catalog-requirements.json +5 -5
  459. package/dist/lib/schemas-data/3.1/core/requirements/css-asset-requirements.json +1 -1
  460. package/dist/lib/schemas-data/3.1/core/requirements/daast-asset-requirements.json +1 -1
  461. package/dist/lib/schemas-data/3.1/core/requirements/html-asset-requirements.json +1 -1
  462. package/dist/lib/schemas-data/3.1/core/requirements/image-asset-requirements.json +2 -2
  463. package/dist/lib/schemas-data/3.1/core/requirements/javascript-asset-requirements.json +1 -1
  464. package/dist/lib/schemas-data/3.1/core/requirements/markdown-asset-requirements.json +1 -1
  465. package/dist/lib/schemas-data/3.1/core/requirements/offering-asset-constraint.json +4 -4
  466. package/dist/lib/schemas-data/3.1/core/requirements/text-asset-requirements.json +1 -1
  467. package/dist/lib/schemas-data/3.1/core/requirements/url-asset-requirements.json +1 -1
  468. package/dist/lib/schemas-data/3.1/core/requirements/vast-asset-requirements.json +1 -1
  469. package/dist/lib/schemas-data/3.1/core/requirements/video-asset-requirements.json +6 -6
  470. package/dist/lib/schemas-data/3.1/core/requirements/webhook-asset-requirements.json +1 -1
  471. package/dist/lib/schemas-data/3.1/core/response-payload-jws-envelope.json +1 -1
  472. package/dist/lib/schemas-data/3.1/core/response.json +1 -1
  473. package/dist/lib/schemas-data/3.1/core/rights-constraint.json +4 -4
  474. package/dist/lib/schemas-data/3.1/core/seller-agent-ref.json +1 -1
  475. package/dist/lib/schemas-data/3.1/core/signal-coverage-forecast.json +5 -5
  476. package/dist/lib/schemas-data/3.1/core/signal-definition-enrichment.json +4 -4
  477. package/dist/lib/schemas-data/3.1/core/signal-definition.json +5 -5
  478. package/dist/lib/schemas-data/3.1/core/signal-filters.json +3 -3
  479. package/dist/lib/schemas-data/3.1/core/signal-id.json +1 -1
  480. package/dist/lib/schemas-data/3.1/core/signal-listing.json +4 -4
  481. package/dist/lib/schemas-data/3.1/core/signal-modeling-disclosure.json +1 -1
  482. package/dist/lib/schemas-data/3.1/core/signal-pricing-option.json +2 -2
  483. package/dist/lib/schemas-data/3.1/core/signal-pricing.json +6 -6
  484. package/dist/lib/schemas-data/3.1/core/signal-ref.json +1 -1
  485. package/dist/lib/schemas-data/3.1/core/signal-selection-group-rule.json +1 -1
  486. package/dist/lib/schemas-data/3.1/core/signal-targeting-expression.json +4 -4
  487. package/dist/lib/schemas-data/3.1/core/signal-targeting-rules.json +2 -2
  488. package/dist/lib/schemas-data/3.1/core/signal-targeting.json +7 -7
  489. package/dist/lib/schemas-data/3.1/core/sla-window.json +1 -1
  490. package/dist/lib/schemas-data/3.1/core/special.json +2 -2
  491. package/dist/lib/schemas-data/3.1/core/start-timing.json +1 -1
  492. package/dist/lib/schemas-data/3.1/core/store-item.json +3 -3
  493. package/dist/lib/schemas-data/3.1/core/talent.json +2 -2
  494. package/dist/lib/schemas-data/3.1/core/targeting.json +22 -22
  495. package/dist/lib/schemas-data/3.1/core/tasks-get-request.json +5 -5
  496. package/dist/lib/schemas-data/3.1/core/tasks-get-response.json +10 -10
  497. package/dist/lib/schemas-data/3.1/core/tasks-list-request.json +13 -13
  498. package/dist/lib/schemas-data/3.1/core/tasks-list-response.json +8 -8
  499. package/dist/lib/schemas-data/3.1/core/transformer-param.json +1 -1
  500. package/dist/lib/schemas-data/3.1/core/transformer.json +5 -5
  501. package/dist/lib/schemas-data/3.1/core/truncation-sentinel.json +1 -1
  502. package/dist/lib/schemas-data/3.1/core/user-match.json +3 -3
  503. package/dist/lib/schemas-data/3.1/core/vehicle-item.json +4 -4
  504. package/dist/lib/schemas-data/3.1/core/vendor-metric-id.json +1 -1
  505. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization-supported-metric.json +3 -3
  506. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization.json +2 -2
  507. package/dist/lib/schemas-data/3.1/core/vendor-metric-value.json +3 -3
  508. package/dist/lib/schemas-data/3.1/core/vendor-pricing-option.json +3 -3
  509. package/dist/lib/schemas-data/3.1/core/version-envelope.json +1 -1
  510. package/dist/lib/schemas-data/3.1/core/webhook-activity-record.json +3 -3
  511. package/dist/lib/schemas-data/3.1/core/webhook-challenge-response.json +1 -1
  512. package/dist/lib/schemas-data/3.1/core/webhook-challenge.json +2 -2
  513. package/dist/lib/schemas-data/3.1/core/wholesale-feed-event.json +17 -17
  514. package/dist/lib/schemas-data/3.1/core/wholesale-feed-webhook.json +3 -3
  515. package/dist/lib/schemas-data/3.1/core/x-entity-types.json +1 -1
  516. package/dist/lib/schemas-data/3.1/creative/asset-types/index.json +6 -6
  517. package/dist/lib/schemas-data/3.1/creative/audit-observation.json +2 -2
  518. package/dist/lib/schemas-data/3.1/creative/creative-feature-result.json +2 -2
  519. package/dist/lib/schemas-data/3.1/creative/creative-purged-webhook.json +3 -3
  520. package/dist/lib/schemas-data/3.1/creative/creative-status-changed-webhook.json +4 -4
  521. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-request.json +6 -6
  522. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-response.json +9 -9
  523. package/dist/lib/schemas-data/3.1/creative/get-creative-features-request.json +6 -6
  524. package/dist/lib/schemas-data/3.1/creative/get-creative-features-response.json +11 -11
  525. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-request.json +13 -13
  526. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-response.json +9 -9
  527. package/dist/lib/schemas-data/3.1/creative/list-creatives-request.json +9 -9
  528. package/dist/lib/schemas-data/3.1/creative/list-creatives-response.json +21 -21
  529. package/dist/lib/schemas-data/3.1/creative/list-transformers-request.json +8 -8
  530. package/dist/lib/schemas-data/3.1/creative/list-transformers-response.json +8 -8
  531. package/dist/lib/schemas-data/3.1/creative/preview-creative-request.json +12 -12
  532. package/dist/lib/schemas-data/3.1/creative/preview-creative-response.json +14 -14
  533. package/dist/lib/schemas-data/3.1/creative/preview-render.json +1 -1
  534. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-input-required.json +3 -3
  535. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-submitted.json +4 -4
  536. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-working.json +3 -3
  537. package/dist/lib/schemas-data/3.1/creative/sync-creatives-request.json +8 -8
  538. package/dist/lib/schemas-data/3.1/creative/sync-creatives-response.json +15 -15
  539. package/dist/lib/schemas-data/3.1/creative/validate-input-request.json +4 -4
  540. package/dist/lib/schemas-data/3.1/creative/validate-input-response.json +4 -4
  541. package/dist/lib/schemas-data/3.1/creative/validate-input-result.json +1 -1
  542. package/dist/lib/schemas-data/3.1/creative/video-brief.json +1 -1
  543. package/dist/lib/schemas-data/3.1/enums/account-scope.json +1 -1
  544. package/dist/lib/schemas-data/3.1/enums/account-status.json +1 -1
  545. package/dist/lib/schemas-data/3.1/enums/action-not-allowed-reason.json +1 -1
  546. package/dist/lib/schemas-data/3.1/enums/action-source.json +1 -1
  547. package/dist/lib/schemas-data/3.1/enums/adcp-protocol.json +1 -1
  548. package/dist/lib/schemas-data/3.1/enums/adjustment-kind.json +1 -1
  549. package/dist/lib/schemas-data/3.1/enums/advertiser-industry.json +1 -1
  550. package/dist/lib/schemas-data/3.1/enums/age-verification-method.json +1 -1
  551. package/dist/lib/schemas-data/3.1/enums/assessment-status.json +1 -1
  552. package/dist/lib/schemas-data/3.1/enums/asset-content-type.json +1 -1
  553. package/dist/lib/schemas-data/3.1/enums/attestation-claim.json +1 -1
  554. package/dist/lib/schemas-data/3.1/enums/attribution-methodology.json +1 -1
  555. package/dist/lib/schemas-data/3.1/enums/attribution-model.json +1 -1
  556. package/dist/lib/schemas-data/3.1/enums/audience-source.json +1 -1
  557. package/dist/lib/schemas-data/3.1/enums/audience-status.json +1 -1
  558. package/dist/lib/schemas-data/3.1/enums/audio-channel-layout.json +1 -1
  559. package/dist/lib/schemas-data/3.1/enums/audio-distribution-type.json +1 -1
  560. package/dist/lib/schemas-data/3.1/enums/auth-scheme.json +1 -1
  561. package/dist/lib/schemas-data/3.1/enums/available-metric.json +1 -1
  562. package/dist/lib/schemas-data/3.1/enums/billing-party.json +1 -1
  563. package/dist/lib/schemas-data/3.1/enums/binary-verdict.json +1 -1
  564. package/dist/lib/schemas-data/3.1/enums/brand-agent-type.json +1 -1
  565. package/dist/lib/schemas-data/3.1/enums/c2pa-watermark-action.json +1 -1
  566. package/dist/lib/schemas-data/3.1/enums/canceled-by.json +1 -1
  567. package/dist/lib/schemas-data/3.1/enums/catalog-action.json +1 -1
  568. package/dist/lib/schemas-data/3.1/enums/catalog-item-status.json +1 -1
  569. package/dist/lib/schemas-data/3.1/enums/catalog-type.json +1 -1
  570. package/dist/lib/schemas-data/3.1/enums/channels.json +1 -1
  571. package/dist/lib/schemas-data/3.1/enums/cloud-storage-protocol.json +1 -1
  572. package/dist/lib/schemas-data/3.1/enums/co-branding-requirement.json +1 -1
  573. package/dist/lib/schemas-data/3.1/enums/collection-cadence.json +1 -1
  574. package/dist/lib/schemas-data/3.1/enums/collection-kind.json +1 -1
  575. package/dist/lib/schemas-data/3.1/enums/collection-relationship.json +1 -1
  576. package/dist/lib/schemas-data/3.1/enums/collection-status.json +1 -1
  577. package/dist/lib/schemas-data/3.1/enums/completion-source.json +1 -1
  578. package/dist/lib/schemas-data/3.1/enums/consent-basis.json +1 -1
  579. package/dist/lib/schemas-data/3.1/enums/content-id-type.json +1 -1
  580. package/dist/lib/schemas-data/3.1/enums/content-rating-system.json +1 -1
  581. package/dist/lib/schemas-data/3.1/enums/creative-action.json +1 -1
  582. package/dist/lib/schemas-data/3.1/enums/creative-agent-capability.json +1 -1
  583. package/dist/lib/schemas-data/3.1/enums/creative-approval-status.json +1 -1
  584. package/dist/lib/schemas-data/3.1/enums/creative-event-reason-code.json +1 -1
  585. package/dist/lib/schemas-data/3.1/enums/creative-identifier-type.json +1 -1
  586. package/dist/lib/schemas-data/3.1/enums/creative-quality.json +1 -1
  587. package/dist/lib/schemas-data/3.1/enums/creative-selection-strategy.json +1 -1
  588. package/dist/lib/schemas-data/3.1/enums/creative-sort-field.json +1 -1
  589. package/dist/lib/schemas-data/3.1/enums/creative-status.json +1 -1
  590. package/dist/lib/schemas-data/3.1/enums/daast-tracking-event.json +1 -1
  591. package/dist/lib/schemas-data/3.1/enums/daast-version.json +1 -1
  592. package/dist/lib/schemas-data/3.1/enums/day-of-week.json +1 -1
  593. package/dist/lib/schemas-data/3.1/enums/delegation-authority.json +1 -1
  594. package/dist/lib/schemas-data/3.1/enums/delivery-type.json +1 -1
  595. package/dist/lib/schemas-data/3.1/enums/demographic-system.json +1 -1
  596. package/dist/lib/schemas-data/3.1/enums/derivative-type.json +1 -1
  597. package/dist/lib/schemas-data/3.1/enums/device-platform.json +1 -1
  598. package/dist/lib/schemas-data/3.1/enums/device-type.json +1 -1
  599. package/dist/lib/schemas-data/3.1/enums/digital-source-type.json +1 -1
  600. package/dist/lib/schemas-data/3.1/enums/dimension-unit.json +1 -1
  601. package/dist/lib/schemas-data/3.1/enums/disclosure-persistence.json +1 -1
  602. package/dist/lib/schemas-data/3.1/enums/disclosure-position.json +1 -1
  603. package/dist/lib/schemas-data/3.1/enums/distance-unit.json +1 -1
  604. package/dist/lib/schemas-data/3.1/enums/distribution-identifier-type.json +1 -1
  605. package/dist/lib/schemas-data/3.1/enums/embedded-provenance-method.json +1 -1
  606. package/dist/lib/schemas-data/3.1/enums/error-code.json +1 -1
  607. package/dist/lib/schemas-data/3.1/enums/error-scope.json +1 -1
  608. package/dist/lib/schemas-data/3.1/enums/escalation-severity.json +1 -1
  609. package/dist/lib/schemas-data/3.1/enums/event-type.json +1 -1
  610. package/dist/lib/schemas-data/3.1/enums/exclusivity.json +1 -1
  611. package/dist/lib/schemas-data/3.1/enums/feature-check-status.json +1 -1
  612. package/dist/lib/schemas-data/3.1/enums/feed-format.json +1 -1
  613. package/dist/lib/schemas-data/3.1/enums/feedback-source.json +1 -1
  614. package/dist/lib/schemas-data/3.1/enums/forecast-method.json +1 -1
  615. package/dist/lib/schemas-data/3.1/enums/forecast-range-unit.json +1 -1
  616. package/dist/lib/schemas-data/3.1/enums/forecastable-metric.json +1 -1
  617. package/dist/lib/schemas-data/3.1/enums/format-id-parameter.json +1 -1
  618. package/dist/lib/schemas-data/3.1/enums/frame-rate-type.json +1 -1
  619. package/dist/lib/schemas-data/3.1/enums/frequency-cap-scope.json +1 -1
  620. package/dist/lib/schemas-data/3.1/enums/genre-taxonomy.json +1 -1
  621. package/dist/lib/schemas-data/3.1/enums/geo-level.json +1 -1
  622. package/dist/lib/schemas-data/3.1/enums/gop-type.json +1 -1
  623. package/dist/lib/schemas-data/3.1/enums/governance-decision.json +1 -1
  624. package/dist/lib/schemas-data/3.1/enums/governance-domain.json +1 -1
  625. package/dist/lib/schemas-data/3.1/enums/governance-mode.json +1 -1
  626. package/dist/lib/schemas-data/3.1/enums/governance-phase.json +1 -1
  627. package/dist/lib/schemas-data/3.1/enums/history-entry-type.json +1 -1
  628. package/dist/lib/schemas-data/3.1/enums/http-method.json +1 -1
  629. package/dist/lib/schemas-data/3.1/enums/identifier-types.json +1 -1
  630. package/dist/lib/schemas-data/3.1/enums/impairment-offline-state.json +1 -1
  631. package/dist/lib/schemas-data/3.1/enums/impairment-reason-code.json +1 -1
  632. package/dist/lib/schemas-data/3.1/enums/installment-status.json +1 -1
  633. package/dist/lib/schemas-data/3.1/enums/javascript-module-type.json +1 -1
  634. package/dist/lib/schemas-data/3.1/enums/landing-page-requirement.json +1 -1
  635. package/dist/lib/schemas-data/3.1/enums/legacy-postal-system.json +1 -1
  636. package/dist/lib/schemas-data/3.1/enums/lift-dimension.json +1 -1
  637. package/dist/lib/schemas-data/3.1/enums/logo-slot.json +1 -1
  638. package/dist/lib/schemas-data/3.1/enums/makegood-remedy.json +1 -1
  639. package/dist/lib/schemas-data/3.1/enums/markdown-flavor.json +1 -1
  640. package/dist/lib/schemas-data/3.1/enums/match-id-type.json +1 -1
  641. package/dist/lib/schemas-data/3.1/enums/match-type.json +1 -1
  642. package/dist/lib/schemas-data/3.1/enums/media-buy-action-mode.json +1 -1
  643. package/dist/lib/schemas-data/3.1/enums/media-buy-health.json +1 -1
  644. package/dist/lib/schemas-data/3.1/enums/media-buy-status.json +1 -1
  645. package/dist/lib/schemas-data/3.1/enums/media-buy-valid-action.json +1 -1
  646. package/dist/lib/schemas-data/3.1/enums/metric-scope.json +1 -1
  647. package/dist/lib/schemas-data/3.1/enums/metric-type.json +1 -1
  648. package/dist/lib/schemas-data/3.1/enums/metro-system.json +1 -1
  649. package/dist/lib/schemas-data/3.1/enums/moov-atom-position.json +1 -1
  650. package/dist/lib/schemas-data/3.1/enums/notification-type.json +1 -1
  651. package/dist/lib/schemas-data/3.1/enums/offering-availability-status.json +1 -1
  652. package/dist/lib/schemas-data/3.1/enums/outcome-type.json +1 -1
  653. package/dist/lib/schemas-data/3.1/enums/pacing.json +1 -1
  654. package/dist/lib/schemas-data/3.1/enums/payment-terms.json +1 -1
  655. package/dist/lib/schemas-data/3.1/enums/performance-standard-metric.json +1 -1
  656. package/dist/lib/schemas-data/3.1/enums/policy-category.json +1 -1
  657. package/dist/lib/schemas-data/3.1/enums/policy-enforcement.json +1 -1
  658. package/dist/lib/schemas-data/3.1/enums/postal-system.json +1 -1
  659. package/dist/lib/schemas-data/3.1/enums/preview-output-format.json +1 -1
  660. package/dist/lib/schemas-data/3.1/enums/pricing-model.json +1 -1
  661. package/dist/lib/schemas-data/3.1/enums/production-quality.json +1 -1
  662. package/dist/lib/schemas-data/3.1/enums/property-type.json +1 -1
  663. package/dist/lib/schemas-data/3.1/enums/proposal-status.json +1 -1
  664. package/dist/lib/schemas-data/3.1/enums/publisher-identifier-types.json +1 -1
  665. package/dist/lib/schemas-data/3.1/enums/purchase-type.json +1 -1
  666. package/dist/lib/schemas-data/3.1/enums/reach-unit.json +1 -1
  667. package/dist/lib/schemas-data/3.1/enums/reporting-frequency.json +1 -1
  668. package/dist/lib/schemas-data/3.1/enums/response-type.json +1 -1
  669. package/dist/lib/schemas-data/3.1/enums/restricted-attribute.json +1 -1
  670. package/dist/lib/schemas-data/3.1/enums/right-type.json +1 -1
  671. package/dist/lib/schemas-data/3.1/enums/right-use.json +1 -1
  672. package/dist/lib/schemas-data/3.1/enums/rights-billing-period.json +1 -1
  673. package/dist/lib/schemas-data/3.1/enums/scan-type.json +1 -1
  674. package/dist/lib/schemas-data/3.1/enums/si-session-status.json +1 -1
  675. package/dist/lib/schemas-data/3.1/enums/signal-catalog-type.json +1 -1
  676. package/dist/lib/schemas-data/3.1/enums/signal-source.json +1 -1
  677. package/dist/lib/schemas-data/3.1/enums/signal-value-type.json +1 -1
  678. package/dist/lib/schemas-data/3.1/enums/snapshot-unavailable-reason.json +1 -1
  679. package/dist/lib/schemas-data/3.1/enums/social-placement-surface.json +1 -1
  680. package/dist/lib/schemas-data/3.1/enums/sort-direction.json +1 -1
  681. package/dist/lib/schemas-data/3.1/enums/sort-metric.json +1 -1
  682. package/dist/lib/schemas-data/3.1/enums/special-category.json +1 -1
  683. package/dist/lib/schemas-data/3.1/enums/specialism.json +1 -1
  684. package/dist/lib/schemas-data/3.1/enums/sponsored-placement-type.json +1 -1
  685. package/dist/lib/schemas-data/3.1/enums/talent-role.json +1 -1
  686. package/dist/lib/schemas-data/3.1/enums/task-status.json +1 -1
  687. package/dist/lib/schemas-data/3.1/enums/task-type.json +1 -1
  688. package/dist/lib/schemas-data/3.1/enums/transport-mode.json +1 -1
  689. package/dist/lib/schemas-data/3.1/enums/travel-time-unit.json +1 -1
  690. package/dist/lib/schemas-data/3.1/enums/uid-type.json +1 -1
  691. package/dist/lib/schemas-data/3.1/enums/universal-macro.json +1 -1
  692. package/dist/lib/schemas-data/3.1/enums/update-frequency.json +1 -1
  693. package/dist/lib/schemas-data/3.1/enums/url-asset-type.json +1 -1
  694. package/dist/lib/schemas-data/3.1/enums/validation-mode.json +1 -1
  695. package/dist/lib/schemas-data/3.1/enums/vast-tracking-event.json +1 -1
  696. package/dist/lib/schemas-data/3.1/enums/vast-version.json +1 -1
  697. package/dist/lib/schemas-data/3.1/enums/video-placement-type.json +1 -1
  698. package/dist/lib/schemas-data/3.1/enums/viewability-standard.json +1 -1
  699. package/dist/lib/schemas-data/3.1/enums/watermark-media-type.json +1 -1
  700. package/dist/lib/schemas-data/3.1/enums/wcag-level.json +1 -1
  701. package/dist/lib/schemas-data/3.1/enums/webhook-response-type.json +1 -1
  702. package/dist/lib/schemas-data/3.1/enums/webhook-security-method.json +1 -1
  703. package/dist/lib/schemas-data/3.1/error-details/account-setup-required.json +1 -1
  704. package/dist/lib/schemas-data/3.1/error-details/action-not-allowed.json +4 -4
  705. package/dist/lib/schemas-data/3.1/error-details/agent-permission-denied.json +1 -1
  706. package/dist/lib/schemas-data/3.1/error-details/audience-too-small.json +1 -1
  707. package/dist/lib/schemas-data/3.1/error-details/authorization-required.json +3 -3
  708. package/dist/lib/schemas-data/3.1/error-details/billing-not-permitted-for-agent.json +3 -3
  709. package/dist/lib/schemas-data/3.1/error-details/billing-not-supported.json +2 -2
  710. package/dist/lib/schemas-data/3.1/error-details/budget-too-low.json +1 -1
  711. package/dist/lib/schemas-data/3.1/error-details/conflict.json +1 -1
  712. package/dist/lib/schemas-data/3.1/error-details/creative-rejected.json +1 -1
  713. package/dist/lib/schemas-data/3.1/error-details/policy-violation.json +1 -1
  714. package/dist/lib/schemas-data/3.1/error-details/rate-limited.json +1 -1
  715. package/dist/lib/schemas-data/3.1/error-details/stale-response.json +1 -1
  716. package/dist/lib/schemas-data/3.1/error-details/vendor-error-codes.json +1 -1
  717. package/dist/lib/schemas-data/3.1/error-details/version-unsupported.json +2 -2
  718. package/dist/lib/schemas-data/3.1/extensions/extension-meta.json +1 -1
  719. package/dist/lib/schemas-data/3.1/extensions/index.json +2 -2
  720. package/dist/lib/schemas-data/3.1/formats/canonical/_base.json +5 -5
  721. package/dist/lib/schemas-data/3.1/formats/canonical/agent_placement.json +2 -2
  722. package/dist/lib/schemas-data/3.1/formats/canonical/audio_daast.json +2 -2
  723. package/dist/lib/schemas-data/3.1/formats/canonical/audio_hosted.json +2 -2
  724. package/dist/lib/schemas-data/3.1/formats/canonical/display_tag.json +2 -2
  725. package/dist/lib/schemas-data/3.1/formats/canonical/html5.json +2 -2
  726. package/dist/lib/schemas-data/3.1/formats/canonical/image.json +2 -2
  727. package/dist/lib/schemas-data/3.1/formats/canonical/image_carousel.json +2 -2
  728. package/dist/lib/schemas-data/3.1/formats/canonical/native_in_feed.json +2 -2
  729. package/dist/lib/schemas-data/3.1/formats/canonical/responsive_creative.json +2 -2
  730. package/dist/lib/schemas-data/3.1/formats/canonical/sponsored_placement.json +2 -2
  731. package/dist/lib/schemas-data/3.1/formats/canonical/video_hosted.json +2 -2
  732. package/dist/lib/schemas-data/3.1/formats/canonical/video_vast.json +2 -2
  733. package/dist/lib/schemas-data/3.1/governance/attribute-definition.json +1 -1
  734. package/dist/lib/schemas-data/3.1/governance/audience-constraints.json +3 -3
  735. package/dist/lib/schemas-data/3.1/governance/check-governance-request.json +8 -8
  736. package/dist/lib/schemas-data/3.1/governance/check-governance-response.json +7 -7
  737. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-request.json +5 -5
  738. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-response.json +11 -11
  739. package/dist/lib/schemas-data/3.1/governance/policy-category-definition.json +2 -2
  740. package/dist/lib/schemas-data/3.1/governance/policy-entry.json +6 -6
  741. package/dist/lib/schemas-data/3.1/governance/policy-ref.json +1 -1
  742. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-request.json +7 -7
  743. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-response.json +5 -5
  744. package/dist/lib/schemas-data/3.1/governance/sync-plans-request.json +14 -14
  745. package/dist/lib/schemas-data/3.1/governance/sync-plans-response.json +6 -6
  746. package/dist/lib/schemas-data/3.1/index.json +443 -443
  747. package/dist/lib/schemas-data/3.1/manifest.json +3 -3
  748. package/dist/lib/schemas-data/3.1/manifest.schema.json +1 -1
  749. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-input-required.json +4 -4
  750. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-submitted.json +4 -4
  751. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-working.json +3 -3
  752. package/dist/lib/schemas-data/3.1/media-buy/build-creative-request.json +16 -16
  753. package/dist/lib/schemas-data/3.1/media-buy/build-creative-response.json +35 -35
  754. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-input-required.json +4 -4
  755. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-submitted.json +4 -4
  756. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-working.json +3 -3
  757. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-request.json +13 -13
  758. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-response.json +19 -19
  759. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-request.json +23 -23
  760. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-response.json +27 -27
  761. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-request.json +8 -8
  762. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-response.json +30 -30
  763. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-input-required.json +4 -4
  764. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-submitted.json +4 -4
  765. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-working.json +3 -3
  766. package/dist/lib/schemas-data/3.1/media-buy/get-products-request.json +13 -13
  767. package/dist/lib/schemas-data/3.1/media-buy/get-products-response.json +10 -10
  768. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-request.json +13 -13
  769. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-response.json +9 -9
  770. package/dist/lib/schemas-data/3.1/media-buy/log-event-request.json +5 -5
  771. package/dist/lib/schemas-data/3.1/media-buy/log-event-response.json +8 -8
  772. package/dist/lib/schemas-data/3.1/media-buy/media-buy-delivery-webhook-result.json +9 -9
  773. package/dist/lib/schemas-data/3.1/media-buy/package-request.json +23 -23
  774. package/dist/lib/schemas-data/3.1/media-buy/package-update.json +13 -13
  775. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-request.json +7 -7
  776. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-response.json +8 -8
  777. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-request.json +8 -8
  778. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-response.json +14 -14
  779. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  780. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  781. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-working.json +3 -3
  782. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-request.json +8 -8
  783. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-response.json +14 -14
  784. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-request.json +8 -8
  785. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-response.json +14 -14
  786. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-input-required.json +3 -3
  787. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-submitted.json +4 -4
  788. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-working.json +3 -3
  789. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-request.json +11 -11
  790. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-response.json +17 -17
  791. package/dist/lib/schemas-data/3.1/pricing-options/cpa-option.json +4 -4
  792. package/dist/lib/schemas-data/3.1/pricing-options/cpc-option.json +4 -4
  793. package/dist/lib/schemas-data/3.1/pricing-options/cpcv-option.json +4 -4
  794. package/dist/lib/schemas-data/3.1/pricing-options/cpm-option.json +4 -4
  795. package/dist/lib/schemas-data/3.1/pricing-options/cpp-option.json +5 -5
  796. package/dist/lib/schemas-data/3.1/pricing-options/cpv-option.json +4 -4
  797. package/dist/lib/schemas-data/3.1/pricing-options/flat-rate-option.json +4 -4
  798. package/dist/lib/schemas-data/3.1/pricing-options/price-breakdown.json +2 -2
  799. package/dist/lib/schemas-data/3.1/pricing-options/price-guidance.json +1 -1
  800. package/dist/lib/schemas-data/3.1/pricing-options/time-option.json +4 -4
  801. package/dist/lib/schemas-data/3.1/pricing-options/vcpm-option.json +4 -4
  802. package/dist/lib/schemas-data/3.1/property/authorization-result.json +1 -1
  803. package/dist/lib/schemas-data/3.1/property/base-property-source.json +4 -4
  804. package/dist/lib/schemas-data/3.1/property/create-property-list-request.json +8 -8
  805. package/dist/lib/schemas-data/3.1/property/create-property-list-response.json +6 -6
  806. package/dist/lib/schemas-data/3.1/property/delete-property-list-request.json +5 -5
  807. package/dist/lib/schemas-data/3.1/property/delete-property-list-response.json +5 -5
  808. package/dist/lib/schemas-data/3.1/property/delivery-record.json +3 -3
  809. package/dist/lib/schemas-data/3.1/property/get-property-list-request.json +5 -5
  810. package/dist/lib/schemas-data/3.1/property/get-property-list-response.json +9 -9
  811. package/dist/lib/schemas-data/3.1/property/list-property-lists-request.json +6 -6
  812. package/dist/lib/schemas-data/3.1/property/list-property-lists-response.json +7 -7
  813. package/dist/lib/schemas-data/3.1/property/property-error.json +2 -2
  814. package/dist/lib/schemas-data/3.1/property/property-feature-definition.json +2 -2
  815. package/dist/lib/schemas-data/3.1/property/property-feature-result.json +4 -4
  816. package/dist/lib/schemas-data/3.1/property/property-feature-value.json +2 -2
  817. package/dist/lib/schemas-data/3.1/property/property-feature.json +1 -1
  818. package/dist/lib/schemas-data/3.1/property/property-list-changed-webhook.json +2 -2
  819. package/dist/lib/schemas-data/3.1/property/property-list-filters.json +5 -5
  820. package/dist/lib/schemas-data/3.1/property/property-list.json +6 -6
  821. package/dist/lib/schemas-data/3.1/property/update-property-list-request.json +8 -8
  822. package/dist/lib/schemas-data/3.1/property/update-property-list-response.json +6 -6
  823. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-request.json +6 -6
  824. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-response.json +6 -6
  825. package/dist/lib/schemas-data/3.1/property/validation-result.json +5 -5
  826. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-request.json +4 -4
  827. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-response.json +33 -33
  828. package/dist/lib/schemas-data/3.1/protocol/get-task-status-request.json +5 -5
  829. package/dist/lib/schemas-data/3.1/protocol/get-task-status-response.json +10 -10
  830. package/dist/lib/schemas-data/3.1/protocol/list-tasks-request.json +13 -13
  831. package/dist/lib/schemas-data/3.1/protocol/list-tasks-response.json +8 -8
  832. package/dist/lib/schemas-data/3.1/registries/v1-canonical-mapping.json +5 -5
  833. package/dist/lib/schemas-data/3.1/signals/activate-signal-request.json +6 -6
  834. package/dist/lib/schemas-data/3.1/signals/activate-signal-response.json +9 -9
  835. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-submitted.json +4 -4
  836. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-working.json +3 -3
  837. package/dist/lib/schemas-data/3.1/signals/get-signals-request.json +11 -11
  838. package/dist/lib/schemas-data/3.1/signals/get-signals-response.json +17 -17
  839. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-capabilities.json +1 -1
  840. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-context-use.json +1 -1
  841. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-request.json +4 -4
  842. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-response.json +9 -9
  843. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-identity.json +1 -1
  844. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-request.json +7 -7
  845. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-response.json +10 -10
  846. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-request.json +5 -5
  847. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-response.json +10 -10
  848. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
  849. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context.json +4 -4
  850. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-request.json +4 -4
  851. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-response.json +7 -7
  852. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-ui-element.json +1 -1
  853. package/dist/lib/schemas-data/3.1/trusted-match/available-package.json +4 -4
  854. package/dist/lib/schemas-data/3.1/trusted-match/context-match-request.json +5 -5
  855. package/dist/lib/schemas-data/3.1/trusted-match/context-match-response.json +4 -4
  856. package/dist/lib/schemas-data/3.1/trusted-match/error.json +1 -1
  857. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-request.json +4 -4
  858. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-response.json +4 -4
  859. package/dist/lib/schemas-data/3.1/trusted-match/offer-price.json +1 -1
  860. package/dist/lib/schemas-data/3.1/trusted-match/offer.json +5 -5
  861. package/dist/lib/schemas-data/3.1/trusted-match/provider-identity-match-response.json +4 -4
  862. package/dist/lib/schemas-data/3.1/trusted-match/provider-registration.json +2 -2
  863. package/dist/lib/schemas-data/3.1/trusted-match/publisher-tmpx-config.json +1 -1
  864. package/dist/lib/schemas-data/3.1/trusted-match/tmpx-chunk.json +1 -1
  865. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  866. package/dist/lib/server/account-mode.d.mts +2 -1
  867. package/dist/lib/server/account-mode.d.ts +2 -1
  868. package/dist/lib/server/account-mode.d.ts.map +1 -1
  869. package/dist/lib/server/account-mode.js +1 -0
  870. package/dist/lib/server/account-mode.js.map +1 -1
  871. package/dist/lib/server/account-mode.mjs +1 -0
  872. package/dist/lib/server/account-mode.mjs.map +1 -1
  873. package/dist/lib/server/create-adcp-server.d.mts +10 -6
  874. package/dist/lib/server/create-adcp-server.d.ts +10 -6
  875. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  876. package/dist/lib/server/create-adcp-server.js +2 -1
  877. package/dist/lib/server/create-adcp-server.js.map +1 -1
  878. package/dist/lib/server/create-adcp-server.mjs +2 -1
  879. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  880. package/dist/lib/server/decisioning/account.d.mts +16 -11
  881. package/dist/lib/server/decisioning/account.d.ts +16 -11
  882. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  883. package/dist/lib/server/decisioning/account.js.map +1 -1
  884. package/dist/lib/server/decisioning/account.mjs.map +1 -1
  885. package/dist/lib/server/decisioning/pagination.d.mts +2 -0
  886. package/dist/lib/server/decisioning/pagination.d.ts +2 -0
  887. package/dist/lib/server/decisioning/pagination.d.ts.map +1 -1
  888. package/dist/lib/server/decisioning/pagination.js.map +1 -1
  889. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js.map +1 -1
  890. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
  891. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +20 -14
  892. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +20 -14
  893. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  894. package/dist/lib/server/decisioning/runtime/from-platform.js +32 -6
  895. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  896. package/dist/lib/server/decisioning/runtime/from-platform.mjs +32 -6
  897. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  898. package/dist/lib/server/decisioning/specialisms/sales.d.mts +16 -4
  899. package/dist/lib/server/decisioning/specialisms/sales.d.ts +16 -4
  900. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  901. package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -1
  902. package/dist/lib/server/index.d.ts.map +1 -1
  903. package/dist/lib/server/index.js.map +1 -1
  904. package/dist/lib/server/index.mjs.map +1 -1
  905. package/dist/lib/server/legacy/v5/index.d.mts +2 -1
  906. package/dist/lib/server/legacy/v5/index.d.ts +2 -1
  907. package/dist/lib/server/legacy/v5/index.d.ts.map +1 -1
  908. package/dist/lib/server/legacy/v5/index.js.map +1 -1
  909. package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
  910. package/dist/lib/server/wire-spec-fields.generated.d.mts +29 -29
  911. package/dist/lib/server/wire-spec-fields.generated.d.ts +29 -29
  912. package/dist/lib/server/wire-spec-fields.generated.js +29 -29
  913. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -1
  914. package/dist/lib/server/wire-spec-fields.generated.mjs +29 -29
  915. package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
  916. package/dist/lib/testing/compliance/comply.d.mts +2 -0
  917. package/dist/lib/testing/compliance/comply.d.ts +2 -0
  918. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  919. package/dist/lib/testing/compliance/comply.js +45 -14
  920. package/dist/lib/testing/compliance/comply.js.map +1 -1
  921. package/dist/lib/testing/compliance/comply.mjs +45 -14
  922. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  923. package/dist/lib/testing/compliance/index.d.mts +1 -1
  924. package/dist/lib/testing/compliance/index.d.ts +1 -1
  925. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  926. package/dist/lib/testing/compliance/index.js.map +1 -1
  927. package/dist/lib/testing/compliance/index.mjs.map +1 -1
  928. package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -1
  929. package/dist/lib/testing/compliance/storyboard-tracks.js +9 -1
  930. package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -1
  931. package/dist/lib/testing/compliance/storyboard-tracks.mjs +9 -1
  932. package/dist/lib/testing/compliance/storyboard-tracks.mjs.map +1 -1
  933. package/dist/lib/testing/compliance/types.d.mts +26 -25
  934. package/dist/lib/testing/compliance/types.d.ts +26 -25
  935. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  936. package/dist/lib/testing/compliance/types.js.map +1 -1
  937. package/dist/lib/testing/index.d.mts +2 -2
  938. package/dist/lib/testing/index.d.ts +2 -2
  939. package/dist/lib/testing/index.d.ts.map +1 -1
  940. package/dist/lib/testing/index.js +28 -0
  941. package/dist/lib/testing/index.js.map +1 -1
  942. package/dist/lib/testing/index.mjs +28 -0
  943. package/dist/lib/testing/index.mjs.map +1 -1
  944. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  945. package/dist/lib/testing/scenarios/media-buy.js +20 -12
  946. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  947. package/dist/lib/testing/scenarios/media-buy.mjs +20 -12
  948. package/dist/lib/testing/scenarios/media-buy.mjs.map +1 -1
  949. package/dist/lib/testing/storyboard/canonical-format-satisfaction.d.mts +6 -0
  950. package/dist/lib/testing/storyboard/canonical-format-satisfaction.d.ts +6 -0
  951. package/dist/lib/testing/storyboard/canonical-format-satisfaction.d.ts.map +1 -1
  952. package/dist/lib/testing/storyboard/canonical-format-satisfaction.js +11 -0
  953. package/dist/lib/testing/storyboard/canonical-format-satisfaction.js.map +1 -1
  954. package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +10 -0
  955. package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs.map +1 -1
  956. package/dist/lib/testing/storyboard/creative-assets.d.mts +28 -0
  957. package/dist/lib/testing/storyboard/creative-assets.d.ts +29 -0
  958. package/dist/lib/testing/storyboard/creative-assets.d.ts.map +1 -0
  959. package/dist/lib/testing/storyboard/creative-assets.js +457 -0
  960. package/dist/lib/testing/storyboard/creative-assets.js.map +1 -0
  961. package/dist/lib/testing/storyboard/creative-assets.mjs +430 -0
  962. package/dist/lib/testing/storyboard/creative-assets.mjs.map +1 -0
  963. package/dist/lib/testing/storyboard/fixture-resolution.d.mts +37 -0
  964. package/dist/lib/testing/storyboard/fixture-resolution.d.ts +38 -0
  965. package/dist/lib/testing/storyboard/fixture-resolution.d.ts.map +1 -0
  966. package/dist/lib/testing/storyboard/fixture-resolution.js +424 -0
  967. package/dist/lib/testing/storyboard/fixture-resolution.js.map +1 -0
  968. package/dist/lib/testing/storyboard/fixture-resolution.mjs +395 -0
  969. package/dist/lib/testing/storyboard/fixture-resolution.mjs.map +1 -0
  970. package/dist/lib/testing/storyboard/index.d.mts +5 -1
  971. package/dist/lib/testing/storyboard/index.d.ts +5 -1
  972. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  973. package/dist/lib/testing/storyboard/index.js +33 -0
  974. package/dist/lib/testing/storyboard/index.js.map +1 -1
  975. package/dist/lib/testing/storyboard/index.mjs +33 -0
  976. package/dist/lib/testing/storyboard/index.mjs.map +1 -1
  977. package/dist/lib/testing/storyboard/junit.js +14 -1
  978. package/dist/lib/testing/storyboard/junit.js.map +1 -1
  979. package/dist/lib/testing/storyboard/junit.mjs +14 -1
  980. package/dist/lib/testing/storyboard/junit.mjs.map +1 -1
  981. package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
  982. package/dist/lib/testing/storyboard/loader.js +2 -0
  983. package/dist/lib/testing/storyboard/loader.js.map +1 -1
  984. package/dist/lib/testing/storyboard/loader.mjs +2 -0
  985. package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
  986. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.d.mts +21 -0
  987. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.d.ts +22 -0
  988. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.d.ts.map +1 -0
  989. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.js +668 -0
  990. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.js.map +1 -0
  991. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.mjs +638 -0
  992. package/dist/lib/testing/storyboard/oauth-metadata-graph/grader.mjs.map +1 -0
  993. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.d.mts +5 -0
  994. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.d.ts +6 -0
  995. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.d.ts.map +1 -0
  996. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.js +44 -0
  997. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.js.map +1 -0
  998. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.mjs +20 -0
  999. package/dist/lib/testing/storyboard/oauth-metadata-graph/index.mjs.map +1 -0
  1000. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.d.mts +38 -0
  1001. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.d.ts +39 -0
  1002. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.d.ts.map +1 -0
  1003. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.js +17 -0
  1004. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.js.map +1 -0
  1005. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.mjs +1 -0
  1006. package/dist/lib/testing/storyboard/oauth-metadata-graph/types.mjs.map +1 -0
  1007. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.d.mts +32 -0
  1008. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.d.ts +33 -0
  1009. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.d.ts.map +1 -0
  1010. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.js +105 -0
  1011. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.js.map +1 -0
  1012. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.mjs +80 -0
  1013. package/dist/lib/testing/storyboard/oauth-metadata-graph/vector-loader.mjs.map +1 -0
  1014. package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
  1015. package/dist/lib/testing/storyboard/probes.js +2 -1
  1016. package/dist/lib/testing/storyboard/probes.js.map +1 -1
  1017. package/dist/lib/testing/storyboard/probes.mjs +2 -1
  1018. package/dist/lib/testing/storyboard/probes.mjs.map +1 -1
  1019. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  1020. package/dist/lib/testing/storyboard/runner.js +546 -75
  1021. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  1022. package/dist/lib/testing/storyboard/runner.mjs +555 -76
  1023. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  1024. package/dist/lib/testing/storyboard/seeding.d.mts +10 -3
  1025. package/dist/lib/testing/storyboard/seeding.d.ts +10 -3
  1026. package/dist/lib/testing/storyboard/seeding.d.ts.map +1 -1
  1027. package/dist/lib/testing/storyboard/seeding.js +552 -2
  1028. package/dist/lib/testing/storyboard/seeding.js.map +1 -1
  1029. package/dist/lib/testing/storyboard/seeding.mjs +557 -2
  1030. package/dist/lib/testing/storyboard/seeding.mjs.map +1 -1
  1031. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
  1032. package/dist/lib/testing/storyboard/task-map.js +16 -2
  1033. package/dist/lib/testing/storyboard/task-map.js.map +1 -1
  1034. package/dist/lib/testing/storyboard/task-map.mjs +16 -2
  1035. package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
  1036. package/dist/lib/testing/storyboard/trusted-match-context-replay.d.mts +11 -0
  1037. package/dist/lib/testing/storyboard/trusted-match-context-replay.d.ts +12 -0
  1038. package/dist/lib/testing/storyboard/trusted-match-context-replay.d.ts.map +1 -0
  1039. package/dist/lib/testing/storyboard/trusted-match-context-replay.js +340 -0
  1040. package/dist/lib/testing/storyboard/trusted-match-context-replay.js.map +1 -0
  1041. package/dist/lib/testing/storyboard/trusted-match-context-replay.mjs +316 -0
  1042. package/dist/lib/testing/storyboard/trusted-match-context-replay.mjs.map +1 -0
  1043. package/dist/lib/testing/storyboard/types.d.mts +190 -15
  1044. package/dist/lib/testing/storyboard/types.d.ts +190 -15
  1045. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  1046. package/dist/lib/testing/storyboard/types.js +3 -0
  1047. package/dist/lib/testing/storyboard/types.js.map +1 -1
  1048. package/dist/lib/testing/storyboard/types.mjs +3 -0
  1049. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  1050. package/dist/lib/testing/storyboard/validations.d.mts +3 -0
  1051. package/dist/lib/testing/storyboard/validations.d.ts +3 -0
  1052. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  1053. package/dist/lib/testing/storyboard/validations.js +64 -24
  1054. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  1055. package/dist/lib/testing/storyboard/validations.mjs +64 -24
  1056. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  1057. package/dist/lib/testing/stubs/governance-agent-stub.d.ts.map +1 -1
  1058. package/dist/lib/testing/stubs/governance-agent-stub.js +4 -1
  1059. package/dist/lib/testing/stubs/governance-agent-stub.js.map +1 -1
  1060. package/dist/lib/testing/stubs/governance-agent-stub.mjs +4 -1
  1061. package/dist/lib/testing/stubs/governance-agent-stub.mjs.map +1 -1
  1062. package/dist/lib/types/core.generated.d.mts +3 -1
  1063. package/dist/lib/types/core.generated.d.ts +3 -1
  1064. package/dist/lib/types/core.generated.d.ts.map +1 -1
  1065. package/dist/lib/types/core.generated.js.map +1 -1
  1066. package/dist/lib/types/inline-enums.generated.d.mts +2 -0
  1067. package/dist/lib/types/inline-enums.generated.d.ts +2 -0
  1068. package/dist/lib/types/inline-enums.generated.d.ts.map +1 -1
  1069. package/dist/lib/types/inline-enums.generated.js +3 -0
  1070. package/dist/lib/types/inline-enums.generated.js.map +1 -1
  1071. package/dist/lib/types/inline-enums.generated.mjs +2 -0
  1072. package/dist/lib/types/inline-enums.generated.mjs.map +1 -1
  1073. package/dist/lib/types/manifest.generated.d.mts +3 -3
  1074. package/dist/lib/types/manifest.generated.d.ts +3 -3
  1075. package/dist/lib/types/manifest.generated.js.map +1 -1
  1076. package/dist/lib/types/manifest.generated.mjs.map +1 -1
  1077. package/dist/lib/types/per-tool-index.json +1 -1
  1078. package/dist/lib/types/server-payload-aliases.d.mts +8 -2
  1079. package/dist/lib/types/server-payload-aliases.d.ts +8 -2
  1080. package/dist/lib/types/server-payload-aliases.d.ts.map +1 -1
  1081. package/dist/lib/types/server-payload-aliases.js.map +1 -1
  1082. package/dist/lib/upstream-recorder/recorder.d.mts +7 -18
  1083. package/dist/lib/upstream-recorder/recorder.d.ts +7 -18
  1084. package/dist/lib/upstream-recorder/recorder.d.ts.map +1 -1
  1085. package/dist/lib/upstream-recorder/recorder.js +17 -10
  1086. package/dist/lib/upstream-recorder/recorder.js.map +1 -1
  1087. package/dist/lib/upstream-recorder/recorder.mjs +12 -5
  1088. package/dist/lib/upstream-recorder/recorder.mjs.map +1 -1
  1089. package/dist/lib/utils/redact-secrets.d.ts.map +1 -1
  1090. package/dist/lib/utils/redact-secrets.js +7 -1
  1091. package/dist/lib/utils/redact-secrets.js.map +1 -1
  1092. package/dist/lib/utils/redact-secrets.mjs +7 -1
  1093. package/dist/lib/utils/redact-secrets.mjs.map +1 -1
  1094. package/dist/lib/validation/schema-loader.d.mts +16 -0
  1095. package/dist/lib/validation/schema-loader.d.ts +16 -0
  1096. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  1097. package/dist/lib/validation/schema-loader.js +116 -0
  1098. package/dist/lib/validation/schema-loader.js.map +1 -1
  1099. package/dist/lib/validation/schema-loader.mjs +115 -0
  1100. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  1101. package/dist/lib/version.d.mts +7 -7
  1102. package/dist/lib/version.d.ts +7 -7
  1103. package/dist/lib/version.d.ts.map +1 -1
  1104. package/dist/lib/version.js +7 -6
  1105. package/dist/lib/version.js.map +1 -1
  1106. package/dist/lib/version.mjs +7 -6
  1107. package/dist/lib/version.mjs.map +1 -1
  1108. package/docs/guides/BUILD-AN-AGENT.md +4 -2
  1109. package/docs/llms.txt +4 -4
  1110. package/package.json +3 -3
  1111. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/brand/index.yaml +0 -0
  1112. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1113. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1114. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/index.yaml +0 -0
  1115. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  1116. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1117. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1118. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  1119. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  1120. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/governance/index.yaml +0 -0
  1121. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/index.yaml +0 -0
  1122. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1123. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  1124. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1125. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  1126. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1127. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1128. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1129. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  1130. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1131. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/dependency_impairment.yaml +0 -0
  1132. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1133. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
  1134. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1135. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1136. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  1137. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  1138. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  1139. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  1140. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1141. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1142. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1143. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  1144. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  1145. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1146. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  1147. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1148. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  1149. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1150. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1151. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1152. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1153. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1154. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1155. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1156. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1157. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1158. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1159. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1160. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1161. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1162. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  1163. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1164. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1165. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1166. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/state-machine.yaml +0 -0
  1167. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/signals/index.yaml +0 -0
  1168. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  1169. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/sponsored-intelligence/index.yaml +0 -0
  1170. /package/compliance/cache/{3.1.10 → 3.1.11}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1171. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/brand/index.yaml +0 -0
  1172. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1173. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1174. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/index.yaml +0 -0
  1175. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  1176. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1177. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1178. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  1179. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  1180. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/governance/index.yaml +0 -0
  1181. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/index.yaml +0 -0
  1182. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1183. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  1184. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1185. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  1186. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1187. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1188. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1189. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  1190. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1191. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -0
  1192. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1193. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
  1194. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1195. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1196. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  1197. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  1198. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  1199. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  1200. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1201. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1202. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1203. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  1204. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  1205. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1206. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  1207. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1208. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  1209. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1210. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1211. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1212. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1213. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1214. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1215. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1216. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1217. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1218. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1219. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1220. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1221. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1222. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  1223. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1224. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1225. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1226. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/state-machine.yaml +0 -0
  1227. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/signals/index.yaml +0 -0
  1228. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  1229. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/sponsored-intelligence/index.yaml +0 -0
  1230. /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1231. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/audience-sync/index.yaml +0 -0
  1232. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/brand-rights/index.yaml +0 -0
  1233. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  1234. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/collection-lists/index.yaml +0 -0
  1235. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/content-standards/index.yaml +0 -0
  1236. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-ad-server/index.yaml +0 -0
  1237. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-generative/generative-seller.yaml +0 -0
  1238. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-generative/index.yaml +0 -0
  1239. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-template/index.yaml +0 -0
  1240. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-transformers/index.yaml +0 -0
  1241. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-aware-seller/index.yaml +0 -0
  1242. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1243. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1244. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1245. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-spend-authority/index.yaml +0 -0
  1246. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/property-lists/index.yaml +0 -0
  1247. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-broadcast-tv/index.yaml +0 -0
  1248. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1249. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-guaranteed/index.yaml +0 -0
  1250. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1251. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-proposal-mode/index.yaml +0 -0
  1252. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-social/index.yaml +0 -0
  1253. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/signal-marketplace/index.yaml +0 -0
  1254. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1255. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/signal-owned/index.yaml +0 -0
  1256. /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1257. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/acme-outdoor-live.yaml +0 -0
  1258. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/acme-outdoor.yaml +0 -0
  1259. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/billing-gate-runner.yaml +0 -0
  1260. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/bistro-oranje.yaml +0 -0
  1261. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/distributed-brand-runner.yaml +0 -0
  1262. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/nova-motors.yaml +0 -0
  1263. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/osei-natural.yaml +0 -0
  1264. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1265. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1266. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/signed-requests-runner.yaml +0 -0
  1267. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/single-side-trust-runner.yaml +0 -0
  1268. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/substitution-observer-runner.yaml +0 -0
  1269. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/summit-foods.yaml +0 -0
  1270. /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/webhook-receiver-runner.yaml +0 -0
  1271. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/catalog-macro-substitution.json +0 -0
  1272. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1273. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1274. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1275. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1276. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1277. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1278. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1279. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1280. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1281. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1282. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1283. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/README.md +0 -0
  1284. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/canonicalization.json +0 -0
  1285. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/keys.json +0 -0
  1286. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1287. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1288. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1289. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1290. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1291. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1292. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1293. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1294. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1295. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1296. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1297. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1298. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1299. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1300. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1301. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1302. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1303. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1304. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1305. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1306. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1307. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1308. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1309. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1310. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1311. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1312. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1313. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1314. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1315. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1316. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1317. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1318. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1319. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1320. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1321. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1322. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1323. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1324. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1325. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1326. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-receiver-envelope.json +0 -0
  1327. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/README.md +0 -0
  1328. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/keys.json +0 -0
  1329. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1330. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1331. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1332. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1333. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1334. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1335. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1336. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1337. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1338. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1339. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1340. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1341. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1342. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1343. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1344. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1345. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1346. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1347. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1348. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1349. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1350. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1351. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1352. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1353. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1354. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1355. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1356. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1357. /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1358. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/billing-gate-dispatch.yaml +0 -0
  1359. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/canonical-format-validate-input.yaml +0 -0
  1360. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/capability-discovery.yaml +0 -0
  1361. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1362. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/comply-controller-mode-gate.yaml +0 -0
  1363. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/content-standards-pagination-integrity.yaml +0 -0
  1364. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/deterministic-testing.yaml +0 -0
  1365. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/error-compliance-signals.yaml +0 -0
  1366. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/error-compliance.yaml +0 -0
  1367. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/fictional-entities.yaml +0 -0
  1368. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1369. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/get-products-pagination-integrity.yaml +0 -0
  1370. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/get-signals-pagination-integrity.yaml +0 -0
  1371. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/idempotency.yaml +0 -0
  1372. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/notification-config-event-scope.yaml +0 -0
  1373. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/notification-config-lifecycle.yaml +0 -0
  1374. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/notification-config-rejections.yaml +0 -0
  1375. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/pagination-integrity-creative-formats.yaml +0 -0
  1376. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1377. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/pagination-integrity.yaml +0 -0
  1378. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/property-lists-pagination-integrity.yaml +0 -0
  1379. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/read-tool-idempotency.yaml +0 -0
  1380. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/runner-output-contract.yaml +0 -0
  1381. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/schema-validation-signals.yaml +0 -0
  1382. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/schema-validation.yaml +0 -0
  1383. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/security.yaml +0 -0
  1384. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/signed-requests.yaml +0 -0
  1385. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/stale-response-advisory.yaml +0 -0
  1386. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/v3-envelope-integrity.yaml +0 -0
  1387. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/version-negotiation.yaml +0 -0
  1388. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/webhook-emission.yaml +0 -0
  1389. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/webhook-receiver-envelope.yaml +0 -0
  1390. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1391. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1392. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-products.yaml +0 -0
  1393. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1394. /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-signals.yaml +0 -0
  1395. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/brand/index.yaml +0 -0
  1396. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1397. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1398. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/index.yaml +0 -0
  1399. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  1400. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1401. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1402. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  1403. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  1404. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/governance/index.yaml +0 -0
  1405. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/index.yaml +0 -0
  1406. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1407. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  1408. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1409. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  1410. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1411. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1412. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1413. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  1414. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1415. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/dependency_impairment.yaml +0 -0
  1416. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1417. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
  1418. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1419. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1420. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  1421. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  1422. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  1423. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  1424. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1425. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1426. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1427. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  1428. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  1429. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1430. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  1431. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1432. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  1433. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1434. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1435. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1436. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1437. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1438. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1439. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1440. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1441. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1442. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1443. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1444. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1445. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1446. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  1447. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1448. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1449. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1450. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/state-machine.yaml +0 -0
  1451. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/signals/index.yaml +0 -0
  1452. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  1453. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/sponsored-intelligence/index.yaml +0 -0
  1454. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1455. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/brand/index.yaml +0 -0
  1456. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1457. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1458. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/index.yaml +0 -0
  1459. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  1460. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1461. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1462. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  1463. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  1464. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/governance/index.yaml +0 -0
  1465. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/index.yaml +0 -0
  1466. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1467. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  1468. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1469. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  1470. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1471. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1472. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1473. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  1474. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1475. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -0
  1476. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1477. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
  1478. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1479. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1480. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  1481. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  1482. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  1483. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  1484. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1485. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1486. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1487. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  1488. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  1489. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1490. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  1491. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1492. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  1493. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1494. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1495. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1496. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1497. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1498. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1499. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1500. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1501. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1502. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1503. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1504. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1505. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1506. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  1507. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1508. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1509. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1510. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/state-machine.yaml +0 -0
  1511. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/signals/index.yaml +0 -0
  1512. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  1513. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/sponsored-intelligence/index.yaml +0 -0
  1514. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1515. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/audience-sync/index.yaml +0 -0
  1516. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/brand-rights/index.yaml +0 -0
  1517. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  1518. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/collection-lists/index.yaml +0 -0
  1519. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/content-standards/index.yaml +0 -0
  1520. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-ad-server/index.yaml +0 -0
  1521. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-generative/generative-seller.yaml +0 -0
  1522. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-generative/index.yaml +0 -0
  1523. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-template/index.yaml +0 -0
  1524. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-transformers/index.yaml +0 -0
  1525. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-aware-seller/index.yaml +0 -0
  1526. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1527. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1528. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1529. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-spend-authority/index.yaml +0 -0
  1530. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/property-lists/index.yaml +0 -0
  1531. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-broadcast-tv/index.yaml +0 -0
  1532. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1533. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-guaranteed/index.yaml +0 -0
  1534. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1535. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-proposal-mode/index.yaml +0 -0
  1536. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-social/index.yaml +0 -0
  1537. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/signal-marketplace/index.yaml +0 -0
  1538. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1539. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/signal-owned/index.yaml +0 -0
  1540. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1541. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/acme-outdoor-live.yaml +0 -0
  1542. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/acme-outdoor.yaml +0 -0
  1543. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/billing-gate-runner.yaml +0 -0
  1544. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/bistro-oranje.yaml +0 -0
  1545. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/distributed-brand-runner.yaml +0 -0
  1546. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/nova-motors.yaml +0 -0
  1547. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/osei-natural.yaml +0 -0
  1548. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1549. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1550. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/signed-requests-runner.yaml +0 -0
  1551. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/single-side-trust-runner.yaml +0 -0
  1552. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/substitution-observer-runner.yaml +0 -0
  1553. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/summit-foods.yaml +0 -0
  1554. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/webhook-receiver-runner.yaml +0 -0
  1555. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/catalog-macro-substitution.json +0 -0
  1556. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1557. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1558. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1559. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1560. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1561. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1562. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1563. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1564. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1565. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1566. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1567. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/README.md +0 -0
  1568. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/canonicalization.json +0 -0
  1569. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/keys.json +0 -0
  1570. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1571. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1572. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1573. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1574. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1575. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1576. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1577. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1578. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1579. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1580. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1581. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1582. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1583. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1584. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1585. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1586. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1587. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1588. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1589. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1590. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1591. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1592. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1593. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1594. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1595. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1596. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1597. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1598. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1599. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1600. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1601. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1602. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1603. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1604. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1605. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1606. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1607. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1608. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1609. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1610. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-receiver-envelope.json +0 -0
  1611. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/README.md +0 -0
  1612. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/keys.json +0 -0
  1613. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1614. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1615. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1616. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1617. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1618. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1619. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1620. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1621. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1622. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1623. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1624. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1625. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1626. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1627. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1628. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1629. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1630. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1631. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1632. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1633. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1634. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1635. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1636. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1637. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1638. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1639. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1640. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1641. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1642. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/billing-gate-dispatch.yaml +0 -0
  1643. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/canonical-format-validate-input.yaml +0 -0
  1644. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/capability-discovery.yaml +0 -0
  1645. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1646. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/comply-controller-mode-gate.yaml +0 -0
  1647. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/content-standards-pagination-integrity.yaml +0 -0
  1648. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/deterministic-testing.yaml +0 -0
  1649. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/error-compliance-signals.yaml +0 -0
  1650. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/error-compliance.yaml +0 -0
  1651. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/fictional-entities.yaml +0 -0
  1652. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1653. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/get-products-pagination-integrity.yaml +0 -0
  1654. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/get-signals-pagination-integrity.yaml +0 -0
  1655. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/idempotency.yaml +0 -0
  1656. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/notification-config-event-scope.yaml +0 -0
  1657. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/notification-config-lifecycle.yaml +0 -0
  1658. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/notification-config-rejections.yaml +0 -0
  1659. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/pagination-integrity-creative-formats.yaml +0 -0
  1660. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1661. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/pagination-integrity.yaml +0 -0
  1662. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/property-lists-pagination-integrity.yaml +0 -0
  1663. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/read-tool-idempotency.yaml +0 -0
  1664. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/runner-output-contract.yaml +0 -0
  1665. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/schema-validation-signals.yaml +0 -0
  1666. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/schema-validation.yaml +0 -0
  1667. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/security.yaml +0 -0
  1668. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/signed-requests.yaml +0 -0
  1669. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/stale-response-advisory.yaml +0 -0
  1670. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/v3-envelope-integrity.yaml +0 -0
  1671. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/version-negotiation.yaml +0 -0
  1672. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/webhook-emission.yaml +0 -0
  1673. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/webhook-receiver-envelope.yaml +0 -0
  1674. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1675. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1676. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-products.yaml +0 -0
  1677. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1678. /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-signals.yaml +0 -0
@@ -24,6 +24,7 @@ class SsrfRefusedError extends Error {
24
24
  }
25
25
  }
26
26
  async function ssrfSafeFetch(url, options = {}) {
27
+ throwIfSignalAborted(options.signal);
27
28
  const allowPrivateIp = options.allowPrivateIp === true;
28
29
  const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
29
30
  const maxBodyBytes = options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;
@@ -47,64 +48,69 @@ async function ssrfSafeFetch(url, options = {}) {
47
48
  hostname
48
49
  });
49
50
  }
50
- let addresses;
51
+ const ac = new AbortController();
52
+ const onExternalAbort = () => ac.abort(options.signal?.reason);
53
+ options.signal?.addEventListener("abort", onExternalAbort, { once: true });
54
+ if (options.signal?.aborted) onExternalAbort();
55
+ const timer = setTimeout(() => ac.abort(new Error("ssrf-fetch: timeout")), timeoutMs);
56
+ let dispatcher;
51
57
  try {
52
- addresses = await dnsLookupAsync(hostname, { all: true });
53
- } catch (err) {
54
- throw new SsrfRefusedError(
55
- "dns_lookup_failed",
56
- `DNS lookup failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`,
57
- { url, hostname }
58
- );
59
- }
60
- if (addresses.length === 0) {
61
- throw new SsrfRefusedError("dns_empty", `DNS returned no addresses for ${hostname}`, {
62
- url,
63
- hostname
64
- });
65
- }
66
- for (const a of addresses) {
67
- if (isAlwaysBlocked(a.address)) {
58
+ let addresses;
59
+ try {
60
+ addresses = await raceWithAbort(dnsLookupAsync(hostname, { all: true }), ac.signal);
61
+ } catch (err) {
62
+ throwIfSignalAborted(ac.signal);
68
63
  throw new SsrfRefusedError(
69
- "always_blocked_address",
70
- `Refusing to fetch: ${hostname} resolves to an always-blocked address (link-local or cloud metadata)`,
71
- { url, hostname, address: a.address }
64
+ "dns_lookup_failed",
65
+ `DNS lookup failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`,
66
+ { url, hostname }
72
67
  );
73
68
  }
74
- }
75
- if (!allowPrivateIp) {
69
+ throwIfSignalAborted(ac.signal);
70
+ if (addresses.length === 0) {
71
+ throw new SsrfRefusedError("dns_empty", `DNS returned no addresses for ${hostname}`, {
72
+ url,
73
+ hostname
74
+ });
75
+ }
76
76
  for (const a of addresses) {
77
- if (isPrivateIp(a.address)) {
77
+ if (isAlwaysBlocked(a.address)) {
78
78
  throw new SsrfRefusedError(
79
- "private_address",
80
- `Refusing to fetch: ${hostname} resolves to a private/loopback address`,
79
+ "always_blocked_address",
80
+ `Refusing to fetch: ${hostname} resolves to an always-blocked address (link-local or cloud metadata)`,
81
81
  { url, hostname, address: a.address }
82
82
  );
83
83
  }
84
84
  }
85
- }
86
- const pinned = addresses[0];
87
- const pinnedFamily = pinned.family === 6 ? 6 : 4;
88
- const dispatcher = new Agent({
89
- connect: {
90
- // All addresses were validated above; pin the connect to the first. The
91
- // custom lookup also means undici won't re-resolve and pick up a rebind.
92
- // undici's Agent may call lookup with `{ all: true }` (it does for HTTPS
93
- // targets under Node 22+), which expects the array form of the callback.
94
- lookup: (_h, opts, cb) => {
95
- if (opts?.all) {
96
- cb(null, [{ address: pinned.address, family: pinnedFamily }]);
97
- } else {
98
- cb(null, pinned.address, pinnedFamily);
85
+ if (!allowPrivateIp) {
86
+ for (const a of addresses) {
87
+ if (isPrivateIp(a.address)) {
88
+ throw new SsrfRefusedError(
89
+ "private_address",
90
+ `Refusing to fetch: ${hostname} resolves to a private/loopback address`,
91
+ { url, hostname, address: a.address }
92
+ );
99
93
  }
100
94
  }
101
95
  }
102
- });
103
- const ac = new AbortController();
104
- const onExternalAbort = () => ac.abort(options.signal?.reason);
105
- options.signal?.addEventListener("abort", onExternalAbort, { once: true });
106
- const timer = setTimeout(() => ac.abort(new Error("ssrf-fetch: timeout")), timeoutMs);
107
- try {
96
+ const pinned = addresses[0];
97
+ const pinnedFamily = pinned.family === 6 ? 6 : 4;
98
+ dispatcher = new Agent({
99
+ connect: {
100
+ timeout: Math.min(5e3, timeoutMs),
101
+ // All addresses were validated above; pin the connect to the first. The
102
+ // custom lookup also means undici won't re-resolve and pick up a rebind.
103
+ // undici's Agent may call lookup with `{ all: true }` (it does for HTTPS
104
+ // targets under Node 22+), which expects the array form of the callback.
105
+ lookup: (_h, opts, cb) => {
106
+ if (opts?.all) {
107
+ cb(null, [{ address: pinned.address, family: pinnedFamily }]);
108
+ } else {
109
+ cb(null, pinned.address, pinnedFamily);
110
+ }
111
+ }
112
+ }
113
+ });
108
114
  const res = options.trustedFetchFn ? await options.trustedFetchFn(url, {
109
115
  method: options.method ?? "GET",
110
116
  redirect: "manual",
@@ -169,10 +175,28 @@ async function ssrfSafeFetch(url, options = {}) {
169
175
  } finally {
170
176
  clearTimeout(timer);
171
177
  options.signal?.removeEventListener("abort", onExternalAbort);
172
- await dispatcher.close().catch(() => {
178
+ await dispatcher?.close().catch(() => {
173
179
  });
174
180
  }
175
181
  }
182
+ function raceWithAbort(operation, signal) {
183
+ throwIfSignalAborted(signal);
184
+ return new Promise((resolve, reject) => {
185
+ const onAbort = () => reject(signalAbortError(signal));
186
+ signal.addEventListener("abort", onAbort, { once: true });
187
+ operation.then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
188
+ });
189
+ }
190
+ function signalAbortError(signal) {
191
+ if (signal.reason instanceof Error) return signal.reason;
192
+ const error = new Error(signal.reason == null ? "The operation was aborted" : String(signal.reason));
193
+ error.name = "AbortError";
194
+ return error;
195
+ }
196
+ function throwIfSignalAborted(signal) {
197
+ if (!signal?.aborted) return;
198
+ throw signalAbortError(signal);
199
+ }
176
200
  function decodeBodyAsJsonOrText(body, contentType) {
177
201
  if (body.byteLength === 0) return null;
178
202
  const text = Buffer.from(body.buffer, body.byteOffset, body.byteLength).toString("utf8");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/net/ssrf-fetch.ts"],"sourcesContent":["/**\n * SSRF-safe HTTP fetch primitive.\n *\n * Used by compliance probes, storyboard runners, and (future) JWKS /\n * revocation-list resolvers — anywhere the library dispatches a request to a\n * URL that came from counterparty-controlled data and therefore might point at\n * the host's private network or a cloud metadata endpoint.\n *\n * Guarantees:\n * - Scheme: only `https:` by default; `http:` allowed under the dev-opt-in\n * `allowPrivateIp` flag. `file:`, `ftp:`, `data:`, etc. are always refused.\n * - DNS: resolves every A/AAAA record once, validates the full set, then\n * pins the outbound connection to the first validated address via an\n * undici `Agent` whose `connect.lookup` returns the pinned tuple.\n * Defeats DNS rebinding (attacker returns a public address to the guard\n * lookup and a private address to the connect-time lookup) and any other\n * TOCTOU gap between validation and connect.\n * - IMDS (`169.254.169.254`, `fe80::`) stays refused even under\n * `allowPrivateIp` — cloud metadata exfiltration is never a legitimate\n * dev-loop use case.\n * - Redirects are not followed (`redirect: 'manual'`). The 3xx response is\n * returned with `Location` populated so callers can inspect it, but they\n * MUST NOT re-dispatch to the `Location` URL themselves — that bypasses\n * every guard above. To follow a redirect safely, re-invoke\n * `ssrfSafeFetch` with the new URL so it runs through validation again.\n * - Response body is buffered up to `maxBodyBytes` (default 64 KiB) and\n * returned as raw bytes; the dispatcher is torn down after reading so\n * connection-reuse can't carry an attacker-controlled keepalive.\n *\n * Returns a fully-buffered result. Callers that need streaming or large bodies\n * should extend this primitive rather than bypass it.\n */\nimport { type LookupAddress, type LookupOptions } from 'dns';\nimport { lookup as dnsLookupAsync } from 'dns/promises';\nimport { Agent, fetch as undiciFetch } from 'undici';\nimport { isAlwaysBlocked, isPrivateIp } from './address-guards';\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst DEFAULT_MAX_BODY_BYTES = 64 * 1024;\nconst ALLOWED_SCHEMES = new Set(['https:', 'http:']);\n\nexport type SsrfRefusedCode =\n | 'invalid_url'\n | 'scheme_not_allowed'\n | 'non_https_without_opt_in'\n | 'dns_lookup_failed'\n | 'dns_empty'\n | 'always_blocked_address'\n | 'private_address'\n | 'body_exceeds_limit';\n\n/**\n * SSRF refusal codes that indicate runtime/network conditions rather than\n * policy refusal. Callers that want to fall back to a \"host unreachable\" or\n * \"treat as unknown\" path on these codes — rather than surfacing the\n * SsrfRefusedError to their own caller — can intersect against this set:\n *\n * ```ts\n * if (err instanceof SsrfRefusedError && SSRF_TRANSIENT_CODES.has(err.code)) {\n * // network condition, not a policy attack — treat as unreachable\n * } else if (err instanceof SsrfRefusedError) {\n * // policy refusal — must propagate; silently downgrading to \"unreachable\"\n * // reintroduces the catch-swallow class flagged in adcp-client#1618 review\n * throw err;\n * }\n * ```\n *\n * - `dns_lookup_failed`, `dns_empty`: name does not resolve. CLI fixtures\n * use `*.example.invalid` to provoke these — preserving the runtime-error\n * path matches pre-`ssrfSafeFetch` native-fetch behavior.\n * - `body_exceeds_limit`: response started OK (validated address, scheme,\n * etc.) but exceeded the caller's defensive cap. The host is real and\n * knows the URL; classifying as \"policy attack\" would be a misread.\n *\n * NOT in this set: `always_blocked_address`, `private_address`,\n * `scheme_not_allowed`, `non_https_without_opt_in`, `invalid_url`. Those\n * are policy refusals — silently downgrading them to \"unreachable\" or\n * \"suspect\" reintroduces the SSRF gap the gate was added to close.\n *\n * Added in adcp-client#1633.\n */\nexport const SSRF_TRANSIENT_CODES: ReadonlySet<SsrfRefusedCode> = new Set([\n 'dns_lookup_failed',\n 'dns_empty',\n 'body_exceeds_limit',\n]);\n\n/**\n * Thrown when the SSRF guard refuses a request before (or during) the fetch.\n * Network failures after the guard passes are not wrapped in this type —\n * callers that want to distinguish \"we refused this\" from \"the remote broke\"\n * can `instanceof SsrfRefusedError` the catch.\n */\nexport class SsrfRefusedError extends Error {\n readonly code: SsrfRefusedCode;\n readonly url: string;\n readonly hostname?: string;\n readonly address?: string;\n\n constructor(code: SsrfRefusedCode, message: string, meta: { url: string; hostname?: string; address?: string }) {\n super(message);\n this.name = 'SsrfRefusedError';\n this.code = code;\n this.url = meta.url;\n this.hostname = meta.hostname;\n this.address = meta.address;\n }\n}\n\nexport interface SsrfFetchOptions {\n method?: string;\n /** Lowercased keys preferred; values preserved verbatim. */\n headers?: Record<string, string>;\n body?: string | Uint8Array;\n /** Allow `http://` and private/loopback targets. Default false. */\n allowPrivateIp?: boolean;\n /** Overall timeout including DNS + connect + body read. Default 10_000 ms. */\n timeoutMs?: number;\n /** Hard cap on response body bytes. Default 64 KiB. */\n maxBodyBytes?: number;\n /** Caller-provided abort signal, composed with the internal timeout. */\n signal?: AbortSignal;\n /**\n * Trusted scoped fetch implementation. URL validation and address\n * classification still run before invocation, but DNS pinning is delegated\n * to this implementation because custom fetchers do not accept undici\n * dispatchers. The caller MUST enforce DNS-rebinding protection itself.\n *\n * This deliberately explicit name prevents callers from mistaking a custom\n * transport for the internally DNS-pinned path.\n */\n trustedFetchFn?: typeof fetch;\n}\n\nexport interface SsrfFetchResult {\n url: string;\n status: number;\n /** Response headers, lowercased. */\n headers: Record<string, string>;\n /** Raw response body bytes (empty Uint8Array if no body). */\n body: Uint8Array;\n /** The validated IP address. The connection used it only when `connectionPinned` is true. */\n pinnedAddress: string;\n pinnedFamily: 4 | 6;\n /** Whether the internal undici dispatcher pinned the connection to `pinnedAddress`. */\n connectionPinned: boolean;\n}\n\n/**\n * GET/POST/etc. a URL with SSRF guarding + DNS pinning. Throws\n * {@link SsrfRefusedError} when the guard refuses; other errors (network\n * timeouts, remote resets) propagate as the native fetch error.\n */\nexport async function ssrfSafeFetch(url: string, options: SsrfFetchOptions = {}): Promise<SsrfFetchResult> {\n const allowPrivateIp = options.allowPrivateIp === true;\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const maxBodyBytes = options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;\n\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new SsrfRefusedError('invalid_url', `Invalid URL: ${url}`, { url });\n }\n\n // `URL.hostname` wraps IPv6 literals in brackets (`https://[::1]/` →\n // `[::1]`). `dns.lookup` and the address classifier both want the bare\n // form; strip brackets here so IPv6 localhost URLs work under\n // `allowPrivateIp` and so bracketed literals can't slip past classification\n // on a future Node release that tolerates them.\n const hostname = parsed.hostname.replace(/^\\[|\\]$/g, '');\n\n if (!ALLOWED_SCHEMES.has(parsed.protocol)) {\n throw new SsrfRefusedError(\n 'scheme_not_allowed',\n `Refusing to fetch URL with unsupported scheme: ${parsed.protocol}`,\n { url, hostname }\n );\n }\n if (parsed.protocol !== 'https:' && !allowPrivateIp) {\n throw new SsrfRefusedError('non_https_without_opt_in', `Refusing to fetch non-HTTPS URL: ${url}`, {\n url,\n hostname,\n });\n }\n\n let addresses: { address: string; family: number }[];\n try {\n addresses = await dnsLookupAsync(hostname, { all: true });\n } catch (err) {\n throw new SsrfRefusedError(\n 'dns_lookup_failed',\n `DNS lookup failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`,\n { url, hostname }\n );\n }\n if (addresses.length === 0) {\n throw new SsrfRefusedError('dns_empty', `DNS returned no addresses for ${hostname}`, {\n url,\n hostname,\n });\n }\n // Error messages intentionally do NOT include the resolved IP — a\n // counterparty-supplied hostname that resolves into the caller's internal\n // address space would otherwise leak network topology into compliance\n // reports and log aggregators. The address is still available on the\n // thrown error's `.address` field for programmatic debugging.\n for (const a of addresses) {\n if (isAlwaysBlocked(a.address)) {\n throw new SsrfRefusedError(\n 'always_blocked_address',\n `Refusing to fetch: ${hostname} resolves to an always-blocked address (link-local or cloud metadata)`,\n { url, hostname, address: a.address }\n );\n }\n }\n if (!allowPrivateIp) {\n for (const a of addresses) {\n if (isPrivateIp(a.address)) {\n throw new SsrfRefusedError(\n 'private_address',\n `Refusing to fetch: ${hostname} resolves to a private/loopback address`,\n { url, hostname, address: a.address }\n );\n }\n }\n }\n\n const pinned = addresses[0]!;\n const pinnedFamily = pinned.family === 6 ? 6 : 4;\n const dispatcher = new Agent({\n connect: {\n // All addresses were validated above; pin the connect to the first. The\n // custom lookup also means undici won't re-resolve and pick up a rebind.\n // undici's Agent may call lookup with `{ all: true }` (it does for HTTPS\n // targets under Node 22+), which expects the array form of the callback.\n lookup: (\n _h: string,\n opts: LookupOptions | undefined,\n cb: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family?: number) => void\n ) => {\n if (opts?.all) {\n cb(null, [{ address: pinned.address, family: pinnedFamily }]);\n } else {\n cb(null, pinned.address, pinnedFamily);\n }\n },\n },\n });\n\n const ac = new AbortController();\n const onExternalAbort = () => ac.abort(options.signal?.reason);\n options.signal?.addEventListener('abort', onExternalAbort, { once: true });\n const timer = setTimeout(() => ac.abort(new Error('ssrf-fetch: timeout')), timeoutMs);\n\n try {\n const res = options.trustedFetchFn\n ? await options.trustedFetchFn(url, {\n method: options.method ?? 'GET',\n redirect: 'manual',\n signal: ac.signal,\n headers: options.headers,\n ...(options.body !== undefined && { body: options.body as BodyInit }),\n })\n : await undiciFetch(url, {\n method: options.method ?? 'GET',\n redirect: 'manual',\n signal: ac.signal,\n headers: options.headers,\n dispatcher,\n ...(options.body !== undefined && { body: options.body }),\n });\n\n const headers: Record<string, string> = {};\n res.headers.forEach((v, k) => {\n headers[k.toLowerCase()] = v;\n });\n\n const reader = res.body?.getReader();\n if (!reader) {\n return {\n url,\n status: res.status,\n headers,\n body: new Uint8Array(),\n pinnedAddress: pinned.address,\n pinnedFamily,\n connectionPinned: !options.trustedFetchFn,\n };\n }\n\n const chunks: Uint8Array[] = [];\n let bytes = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n bytes += value.byteLength;\n if (bytes > maxBodyBytes) {\n await reader.cancel();\n throw new SsrfRefusedError('body_exceeds_limit', `Response body exceeded ${maxBodyBytes} bytes`, {\n url,\n hostname: parsed.hostname,\n address: pinned.address,\n });\n }\n chunks.push(value);\n }\n\n const buf = new Uint8Array(bytes);\n let offset = 0;\n for (const c of chunks) {\n buf.set(c, offset);\n offset += c.byteLength;\n }\n\n return {\n url,\n status: res.status,\n headers,\n body: buf,\n pinnedAddress: pinned.address,\n pinnedFamily,\n connectionPinned: !options.trustedFetchFn,\n };\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener('abort', onExternalAbort);\n await dispatcher.close().catch(() => {});\n }\n}\n\n/**\n * Decode a UTF-8 byte buffer as JSON when the content-type declares JSON, or\n * fall back to a UTF-8 string. Handy shared helper for probe-style call sites\n * that don't care about binary bodies.\n */\nexport function decodeBodyAsJsonOrText(body: Uint8Array, contentType: string | undefined): unknown {\n if (body.byteLength === 0) return null;\n const text = Buffer.from(body.buffer, body.byteOffset, body.byteLength).toString('utf8');\n if (contentType?.toLowerCase().includes('application/json')) {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n }\n return text;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/net/ssrf-fetch.ts"],"sourcesContent":["/**\n * SSRF-safe HTTP fetch primitive.\n *\n * Used by compliance probes, storyboard runners, and (future) JWKS /\n * revocation-list resolvers — anywhere the library dispatches a request to a\n * URL that came from counterparty-controlled data and therefore might point at\n * the host's private network or a cloud metadata endpoint.\n *\n * Guarantees:\n * - Scheme: only `https:` by default; `http:` allowed under the dev-opt-in\n * `allowPrivateIp` flag. `file:`, `ftp:`, `data:`, etc. are always refused.\n * - DNS: resolves every A/AAAA record once, validates the full set, then\n * pins the outbound connection to the first validated address via an\n * undici `Agent` whose `connect.lookup` returns the pinned tuple.\n * Defeats DNS rebinding (attacker returns a public address to the guard\n * lookup and a private address to the connect-time lookup) and any other\n * TOCTOU gap between validation and connect.\n * - IMDS (`169.254.169.254`, `fe80::`) stays refused even under\n * `allowPrivateIp` — cloud metadata exfiltration is never a legitimate\n * dev-loop use case.\n * - Redirects are not followed (`redirect: 'manual'`). The 3xx response is\n * returned with `Location` populated so callers can inspect it, but they\n * MUST NOT re-dispatch to the `Location` URL themselves — that bypasses\n * every guard above. To follow a redirect safely, re-invoke\n * `ssrfSafeFetch` with the new URL so it runs through validation again.\n * - Response body is buffered up to `maxBodyBytes` (default 64 KiB) and\n * returned as raw bytes; the dispatcher is torn down after reading so\n * connection-reuse can't carry an attacker-controlled keepalive.\n *\n * Returns a fully-buffered result. Callers that need streaming or large bodies\n * should extend this primitive rather than bypass it.\n */\nimport { type LookupAddress, type LookupOptions } from 'dns';\nimport { lookup as dnsLookupAsync } from 'dns/promises';\nimport { Agent, fetch as undiciFetch } from 'undici';\nimport { isAlwaysBlocked, isPrivateIp } from './address-guards';\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst DEFAULT_MAX_BODY_BYTES = 64 * 1024;\nconst ALLOWED_SCHEMES = new Set(['https:', 'http:']);\n\nexport type SsrfRefusedCode =\n | 'invalid_url'\n | 'scheme_not_allowed'\n | 'non_https_without_opt_in'\n | 'dns_lookup_failed'\n | 'dns_empty'\n | 'always_blocked_address'\n | 'private_address'\n | 'body_exceeds_limit';\n\n/**\n * SSRF refusal codes that indicate runtime/network conditions rather than\n * policy refusal. Callers that want to fall back to a \"host unreachable\" or\n * \"treat as unknown\" path on these codes — rather than surfacing the\n * SsrfRefusedError to their own caller — can intersect against this set:\n *\n * ```ts\n * if (err instanceof SsrfRefusedError && SSRF_TRANSIENT_CODES.has(err.code)) {\n * // network condition, not a policy attack — treat as unreachable\n * } else if (err instanceof SsrfRefusedError) {\n * // policy refusal — must propagate; silently downgrading to \"unreachable\"\n * // reintroduces the catch-swallow class flagged in adcp-client#1618 review\n * throw err;\n * }\n * ```\n *\n * - `dns_lookup_failed`, `dns_empty`: name does not resolve. CLI fixtures\n * use `*.example.invalid` to provoke these — preserving the runtime-error\n * path matches pre-`ssrfSafeFetch` native-fetch behavior.\n * - `body_exceeds_limit`: response started OK (validated address, scheme,\n * etc.) but exceeded the caller's defensive cap. The host is real and\n * knows the URL; classifying as \"policy attack\" would be a misread.\n *\n * NOT in this set: `always_blocked_address`, `private_address`,\n * `scheme_not_allowed`, `non_https_without_opt_in`, `invalid_url`. Those\n * are policy refusals — silently downgrading them to \"unreachable\" or\n * \"suspect\" reintroduces the SSRF gap the gate was added to close.\n *\n * Added in adcp-client#1633.\n */\nexport const SSRF_TRANSIENT_CODES: ReadonlySet<SsrfRefusedCode> = new Set([\n 'dns_lookup_failed',\n 'dns_empty',\n 'body_exceeds_limit',\n]);\n\n/**\n * Thrown when the SSRF guard refuses a request before (or during) the fetch.\n * Network failures after the guard passes are not wrapped in this type —\n * callers that want to distinguish \"we refused this\" from \"the remote broke\"\n * can `instanceof SsrfRefusedError` the catch.\n */\nexport class SsrfRefusedError extends Error {\n readonly code: SsrfRefusedCode;\n readonly url: string;\n readonly hostname?: string;\n readonly address?: string;\n\n constructor(code: SsrfRefusedCode, message: string, meta: { url: string; hostname?: string; address?: string }) {\n super(message);\n this.name = 'SsrfRefusedError';\n this.code = code;\n this.url = meta.url;\n this.hostname = meta.hostname;\n this.address = meta.address;\n }\n}\n\nexport interface SsrfFetchOptions {\n method?: string;\n /** Lowercased keys preferred; values preserved verbatim. */\n headers?: Record<string, string>;\n body?: string | Uint8Array;\n /** Allow `http://` and private/loopback targets. Default false. */\n allowPrivateIp?: boolean;\n /** Overall timeout including DNS + connect + body read. Default 10_000 ms. */\n timeoutMs?: number;\n /** Hard cap on response body bytes. Default 64 KiB. */\n maxBodyBytes?: number;\n /** Caller-provided abort signal, composed with the internal timeout. */\n signal?: AbortSignal;\n /**\n * Trusted scoped fetch implementation. URL validation and address\n * classification still run before invocation, but DNS pinning is delegated\n * to this implementation because custom fetchers do not accept undici\n * dispatchers. The caller MUST enforce DNS-rebinding protection itself.\n *\n * This deliberately explicit name prevents callers from mistaking a custom\n * transport for the internally DNS-pinned path.\n */\n trustedFetchFn?: typeof fetch;\n}\n\nexport interface SsrfFetchResult {\n url: string;\n status: number;\n /** Response headers, lowercased. */\n headers: Record<string, string>;\n /** Raw response body bytes (empty Uint8Array if no body). */\n body: Uint8Array;\n /** The validated IP address. The connection used it only when `connectionPinned` is true. */\n pinnedAddress: string;\n pinnedFamily: 4 | 6;\n /** Whether the internal undici dispatcher pinned the connection to `pinnedAddress`. */\n connectionPinned: boolean;\n}\n\n/**\n * GET/POST/etc. a URL with SSRF guarding + DNS pinning. Throws\n * {@link SsrfRefusedError} when the guard refuses; other errors (network\n * timeouts, remote resets) propagate as the native fetch error.\n */\nexport async function ssrfSafeFetch(url: string, options: SsrfFetchOptions = {}): Promise<SsrfFetchResult> {\n throwIfSignalAborted(options.signal);\n const allowPrivateIp = options.allowPrivateIp === true;\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const maxBodyBytes = options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;\n\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new SsrfRefusedError('invalid_url', `Invalid URL: ${url}`, { url });\n }\n\n // `URL.hostname` wraps IPv6 literals in brackets (`https://[::1]/` →\n // `[::1]`). `dns.lookup` and the address classifier both want the bare\n // form; strip brackets here so IPv6 localhost URLs work under\n // `allowPrivateIp` and so bracketed literals can't slip past classification\n // on a future Node release that tolerates them.\n const hostname = parsed.hostname.replace(/^\\[|\\]$/g, '');\n\n if (!ALLOWED_SCHEMES.has(parsed.protocol)) {\n throw new SsrfRefusedError(\n 'scheme_not_allowed',\n `Refusing to fetch URL with unsupported scheme: ${parsed.protocol}`,\n { url, hostname }\n );\n }\n if (parsed.protocol !== 'https:' && !allowPrivateIp) {\n throw new SsrfRefusedError('non_https_without_opt_in', `Refusing to fetch non-HTTPS URL: ${url}`, {\n url,\n hostname,\n });\n }\n\n // Start the request deadline before DNS. `dns.lookup()` does not accept an\n // AbortSignal, so race it against the same controller used for connect and\n // body reads. The lookup may continue inside libuv after an abort, but its\n // eventual settlement is observed by `raceWithAbort` and cannot keep this\n // caller pending or produce an unhandled rejection.\n const ac = new AbortController();\n const onExternalAbort = () => ac.abort(options.signal?.reason);\n options.signal?.addEventListener('abort', onExternalAbort, { once: true });\n if (options.signal?.aborted) onExternalAbort();\n const timer = setTimeout(() => ac.abort(new Error('ssrf-fetch: timeout')), timeoutMs);\n let dispatcher: Agent | undefined;\n\n try {\n let addresses: { address: string; family: number }[];\n try {\n addresses = await raceWithAbort(dnsLookupAsync(hostname, { all: true }), ac.signal);\n } catch (err) {\n throwIfSignalAborted(ac.signal);\n throw new SsrfRefusedError(\n 'dns_lookup_failed',\n `DNS lookup failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`,\n { url, hostname }\n );\n }\n throwIfSignalAborted(ac.signal);\n if (addresses.length === 0) {\n throw new SsrfRefusedError('dns_empty', `DNS returned no addresses for ${hostname}`, {\n url,\n hostname,\n });\n }\n // Error messages intentionally do NOT include the resolved IP — a\n // counterparty-supplied hostname that resolves into the caller's internal\n // address space would otherwise leak network topology into compliance\n // reports and log aggregators. The address is still available on the\n // thrown error's `.address` field for programmatic debugging.\n for (const a of addresses) {\n if (isAlwaysBlocked(a.address)) {\n throw new SsrfRefusedError(\n 'always_blocked_address',\n `Refusing to fetch: ${hostname} resolves to an always-blocked address (link-local or cloud metadata)`,\n { url, hostname, address: a.address }\n );\n }\n }\n if (!allowPrivateIp) {\n for (const a of addresses) {\n if (isPrivateIp(a.address)) {\n throw new SsrfRefusedError(\n 'private_address',\n `Refusing to fetch: ${hostname} resolves to a private/loopback address`,\n { url, hostname, address: a.address }\n );\n }\n }\n }\n\n const pinned = addresses[0]!;\n const pinnedFamily = pinned.family === 6 ? 6 : 4;\n dispatcher = new Agent({\n connect: {\n timeout: Math.min(5_000, timeoutMs),\n // All addresses were validated above; pin the connect to the first. The\n // custom lookup also means undici won't re-resolve and pick up a rebind.\n // undici's Agent may call lookup with `{ all: true }` (it does for HTTPS\n // targets under Node 22+), which expects the array form of the callback.\n lookup: (\n _h: string,\n opts: LookupOptions | undefined,\n cb: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family?: number) => void\n ) => {\n if (opts?.all) {\n cb(null, [{ address: pinned.address, family: pinnedFamily }]);\n } else {\n cb(null, pinned.address, pinnedFamily);\n }\n },\n },\n });\n\n const res = options.trustedFetchFn\n ? await options.trustedFetchFn(url, {\n method: options.method ?? 'GET',\n redirect: 'manual',\n signal: ac.signal,\n headers: options.headers,\n ...(options.body !== undefined && { body: options.body as BodyInit }),\n })\n : await undiciFetch(url, {\n method: options.method ?? 'GET',\n redirect: 'manual',\n signal: ac.signal,\n headers: options.headers,\n dispatcher,\n ...(options.body !== undefined && { body: options.body }),\n });\n\n const headers: Record<string, string> = {};\n res.headers.forEach((v, k) => {\n headers[k.toLowerCase()] = v;\n });\n\n const reader = res.body?.getReader();\n if (!reader) {\n return {\n url,\n status: res.status,\n headers,\n body: new Uint8Array(),\n pinnedAddress: pinned.address,\n pinnedFamily,\n connectionPinned: !options.trustedFetchFn,\n };\n }\n\n const chunks: Uint8Array[] = [];\n let bytes = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n bytes += value.byteLength;\n if (bytes > maxBodyBytes) {\n await reader.cancel();\n throw new SsrfRefusedError('body_exceeds_limit', `Response body exceeded ${maxBodyBytes} bytes`, {\n url,\n hostname: parsed.hostname,\n address: pinned.address,\n });\n }\n chunks.push(value);\n }\n\n const buf = new Uint8Array(bytes);\n let offset = 0;\n for (const c of chunks) {\n buf.set(c, offset);\n offset += c.byteLength;\n }\n\n return {\n url,\n status: res.status,\n headers,\n body: buf,\n pinnedAddress: pinned.address,\n pinnedFamily,\n connectionPinned: !options.trustedFetchFn,\n };\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener('abort', onExternalAbort);\n await dispatcher?.close().catch(() => {});\n }\n}\n\n/**\n * Await an operation that has no native AbortSignal support without allowing\n * it to retain the caller after cancellation. Attaching both fulfillment and\n * rejection handlers also observes a late operation failure after the abort\n * branch has already won the race.\n */\nfunction raceWithAbort<T>(operation: Promise<T>, signal: AbortSignal): Promise<T> {\n throwIfSignalAborted(signal);\n return new Promise<T>((resolve, reject) => {\n const onAbort = () => reject(signalAbortError(signal));\n signal.addEventListener('abort', onAbort, { once: true });\n operation.then(resolve, reject).finally(() => signal.removeEventListener('abort', onAbort));\n });\n}\n\nfunction signalAbortError(signal: AbortSignal): Error {\n if (signal.reason instanceof Error) return signal.reason;\n const error = new Error(signal.reason == null ? 'The operation was aborted' : String(signal.reason));\n error.name = 'AbortError';\n return error;\n}\n\nfunction throwIfSignalAborted(signal?: AbortSignal): void {\n if (!signal?.aborted) return;\n throw signalAbortError(signal);\n}\n\n/**\n * Decode a UTF-8 byte buffer as JSON when the content-type declares JSON, or\n * fall back to a UTF-8 string. Handy shared helper for probe-style call sites\n * that don't care about binary bodies.\n */\nexport function decodeBodyAsJsonOrText(body: Uint8Array, contentType: string | undefined): unknown {\n if (body.byteLength === 0) return null;\n const text = Buffer.from(body.buffer, body.byteOffset, body.byteLength).toString('utf8');\n if (contentType?.toLowerCase().includes('application/json')) {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n }\n return text;\n}\n"],"mappings":"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","names":[]}
@@ -6,4 +6,6 @@ export declare function createAbortError(reason?: unknown): Error;
6
6
  export declare function createTimeoutError(timeoutMs: number): Error;
7
7
  export declare function isAbortOrTimeoutError(error: unknown): boolean;
8
8
  export declare function throwIfAborted(signal?: AbortSignal): void;
9
- export declare function withAbortSignal<T>(signals: Array<AbortSignal | null | undefined>, timeoutMs: number | undefined, fn: (signal?: AbortSignal) => Promise<T>): Promise<T>;
9
+ export declare function withAbortSignal<T>(signals: Array<AbortSignal | null | undefined>, timeoutMs: number | undefined, fn: (signal?: AbortSignal) => Promise<T>, options?: {
10
+ timeoutError?: Error;
11
+ }): Promise<T>;
@@ -6,5 +6,7 @@ export declare function createAbortError(reason?: unknown): Error;
6
6
  export declare function createTimeoutError(timeoutMs: number): Error;
7
7
  export declare function isAbortOrTimeoutError(error: unknown): boolean;
8
8
  export declare function throwIfAborted(signal?: AbortSignal): void;
9
- export declare function withAbortSignal<T>(signals: Array<AbortSignal | null | undefined>, timeoutMs: number | undefined, fn: (signal?: AbortSignal) => Promise<T>): Promise<T>;
9
+ export declare function withAbortSignal<T>(signals: Array<AbortSignal | null | undefined>, timeoutMs: number | undefined, fn: (signal?: AbortSignal) => Promise<T>, options?: {
10
+ timeoutError?: Error;
11
+ }): Promise<T>;
10
12
  //# sourceMappingURL=abort.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/abort.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,kBAAkB,aAAgB,CAAC;AAEhD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQpH;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CASxD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAI3D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ7D;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAIzD;AAED,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,EAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC,CAiDZ"}
1
+ {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/abort.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,kBAAkB,aAAgB,CAAC;AAEhD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQpH;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAcxD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAI3D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ7D;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAIzD;AAED,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,EAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACxC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,KAAK,CAAA;CAAO,GACrC,OAAO,CAAC,CAAC,CAAC,CAoDZ"}
@@ -45,7 +45,9 @@ function resolveClientRequestTimeoutMs(timeoutMs) {
45
45
  return resolveRequestTimeoutMs(timeoutMs);
46
46
  }
47
47
  function createAbortError(reason) {
48
- if (reason instanceof Error && (reason.name === "AbortError" || reason.name === "TimeoutError")) return reason;
48
+ if (reason instanceof Error && (reason.name === "AbortError" || reason.name === "TimeoutError" || reason.name === "TaskTimeoutError")) {
49
+ return reason;
50
+ }
49
51
  const error = new Error(reason == null ? "The operation was aborted" : String(reason));
50
52
  error.name = "AbortError";
51
53
  if (reason instanceof Error) {
@@ -62,15 +64,15 @@ function createTimeoutError(timeoutMs) {
62
64
  function isAbortOrTimeoutError(error) {
63
65
  if (error == null || typeof error !== "object") return false;
64
66
  const value = error;
65
- if (value.name === "AbortError" || value.name === "TimeoutError") return true;
66
- return value.code === -32001 || value.code === "REQUEST_TIMEOUT";
67
+ if (value.name === "AbortError" || value.name === "TimeoutError" || value.name === "TaskTimeoutError") return true;
68
+ return value.code === -32001 || value.code === "REQUEST_TIMEOUT" || value.code === "TASK_TIMEOUT";
67
69
  }
68
70
  function throwIfAborted(signal) {
69
71
  if (signal?.aborted) {
70
72
  throw createAbortError(signal.reason);
71
73
  }
72
74
  }
73
- async function withAbortSignal(signals, timeoutMs, fn) {
75
+ async function withAbortSignal(signals, timeoutMs, fn, options = {}) {
74
76
  const activeSignals = signals.filter((signal) => signal != null);
75
77
  for (const signal of activeSignals) {
76
78
  throwIfAborted(signal);
@@ -78,17 +80,6 @@ async function withAbortSignal(signals, timeoutMs, fn) {
78
80
  if (timeoutMs == null && activeSignals.length === 0) {
79
81
  return fn(void 0);
80
82
  }
81
- if (timeoutMs == null && activeSignals.length === 1) {
82
- const signal = activeSignals[0];
83
- try {
84
- return await fn(signal);
85
- } catch (error) {
86
- if (signal.aborted) {
87
- throw createAbortError(signal.reason);
88
- }
89
- throw error;
90
- }
91
- }
92
83
  const controller = new AbortController();
93
84
  const abort = (reason) => {
94
85
  if (!controller.signal.aborted) {
@@ -101,12 +92,23 @@ async function withAbortSignal(signals, timeoutMs, fn) {
101
92
  return { signal, listener };
102
93
  });
103
94
  const timer = timeoutMs == null ? void 0 : setTimeout(() => {
104
- abort(createTimeoutError(timeoutMs));
95
+ abort(options.timeoutError ?? createTimeoutError(timeoutMs));
105
96
  }, timeoutMs);
97
+ let rejectOnAbort;
98
+ const aborted = new Promise((_resolve, reject) => {
99
+ rejectOnAbort = () => reject(controller.signal.reason ?? createAbortError());
100
+ controller.signal.addEventListener("abort", rejectOnAbort, { once: true });
101
+ });
106
102
  try {
107
- return await fn(controller.signal);
103
+ return await Promise.race([fn(controller.signal), aborted]);
104
+ } catch (error) {
105
+ if (controller.signal.aborted) {
106
+ throw controller.signal.reason ?? createAbortError();
107
+ }
108
+ throw error;
108
109
  } finally {
109
110
  if (timer) clearTimeout(timer);
111
+ if (rejectOnAbort) controller.signal.removeEventListener("abort", rejectOnAbort);
110
112
  for (const { signal, listener } of listeners) {
111
113
  signal.removeEventListener("abort", listener);
112
114
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/protocols/abort.ts"],"sourcesContent":["export const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;\nexport const MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nexport function resolveRequestTimeoutMs(timeoutMs: number | undefined, defaultTimeoutMs?: number): number | undefined {\n const resolved = timeoutMs ?? defaultTimeoutMs;\n if (resolved == null) return undefined;\n if (resolved === 0) return undefined;\n if (!Number.isFinite(resolved) || resolved < 0 || resolved > MAX_TIMER_DELAY_MS) {\n throw new RangeError(`requestTimeoutMs must be a finite non-negative number <= ${MAX_TIMER_DELAY_MS}`);\n }\n return resolved;\n}\n\nexport function resolveClientRequestTimeoutMs(timeoutMs: number | undefined): number | undefined {\n if (timeoutMs === 0) return MAX_TIMER_DELAY_MS;\n return resolveRequestTimeoutMs(timeoutMs);\n}\n\nexport function createAbortError(reason?: unknown): Error {\n if (reason instanceof Error && (reason.name === 'AbortError' || reason.name === 'TimeoutError')) return reason;\n const error = new Error(reason == null ? 'The operation was aborted' : String(reason));\n error.name = 'AbortError';\n if (reason instanceof Error) {\n (error as Error & { cause?: unknown }).cause = reason;\n error.message = reason.message;\n }\n return error;\n}\n\nexport function createTimeoutError(timeoutMs: number): Error {\n const error = new Error(`Request timed out after ${timeoutMs} ms`);\n error.name = 'TimeoutError';\n return error;\n}\n\nexport function isAbortOrTimeoutError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') return false;\n const value = error as { name?: unknown; code?: unknown };\n if (value.name === 'AbortError' || value.name === 'TimeoutError') return true;\n // MCP SDK v1 raises JSON-RPC RequestTimeout (-32001); the v2 packages use\n // the typed SDK error code REQUEST_TIMEOUT. Both represent the same\n // timeout/cancellation boundary and must bypass endpoint fallback.\n return value.code === -32001 || value.code === 'REQUEST_TIMEOUT';\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw createAbortError(signal.reason);\n }\n}\n\nexport async function withAbortSignal<T>(\n signals: Array<AbortSignal | null | undefined>,\n timeoutMs: number | undefined,\n fn: (signal?: AbortSignal) => Promise<T>\n): Promise<T> {\n const activeSignals = signals.filter((signal): signal is AbortSignal => signal != null);\n for (const signal of activeSignals) {\n throwIfAborted(signal);\n }\n\n if (timeoutMs == null && activeSignals.length === 0) {\n return fn(undefined);\n }\n\n if (timeoutMs == null && activeSignals.length === 1) {\n const signal = activeSignals[0]!;\n try {\n return await fn(signal);\n } catch (error) {\n if (signal.aborted) {\n throw createAbortError(signal.reason);\n }\n throw error;\n }\n }\n\n const controller = new AbortController();\n const abort = (reason?: unknown) => {\n if (!controller.signal.aborted) {\n controller.abort(reason);\n }\n };\n\n const listeners = activeSignals.map(signal => {\n const listener = () => abort(createAbortError(signal.reason));\n signal.addEventListener('abort', listener, { once: true });\n return { signal, listener };\n });\n const timer =\n timeoutMs == null\n ? undefined\n : setTimeout(() => {\n abort(createTimeoutError(timeoutMs));\n }, timeoutMs);\n\n try {\n return await fn(controller.signal);\n } finally {\n if (timer) clearTimeout(timer);\n for (const { signal, listener } of listeners) {\n signal.removeEventListener('abort', listener);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAE3B,SAAS,wBAAwB,WAA+B,kBAA+C;AACpH,QAAM,WAAW,aAAa;AAC9B,MAAI,YAAY,KAAM,QAAO;AAC7B,MAAI,aAAa,EAAG,QAAO;AAC3B,MAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,WAAW,KAAK,WAAW,oBAAoB;AAC/E,UAAM,IAAI,WAAW,4DAA4D,kBAAkB,EAAE;AAAA,EACvG;AACA,SAAO;AACT;AAEO,SAAS,8BAA8B,WAAmD;AAC/F,MAAI,cAAc,EAAG,QAAO;AAC5B,SAAO,wBAAwB,SAAS;AAC1C;AAEO,SAAS,iBAAiB,QAAyB;AACxD,MAAI,kBAAkB,UAAU,OAAO,SAAS,gBAAgB,OAAO,SAAS,gBAAiB,QAAO;AACxG,QAAM,QAAQ,IAAI,MAAM,UAAU,OAAO,8BAA8B,OAAO,MAAM,CAAC;AACrF,QAAM,OAAO;AACb,MAAI,kBAAkB,OAAO;AAC3B,IAAC,MAAsC,QAAQ;AAC/C,UAAM,UAAU,OAAO;AAAA,EACzB;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,WAA0B;AAC3D,QAAM,QAAQ,IAAI,MAAM,2BAA2B,SAAS,KAAK;AACjE,QAAM,OAAO;AACb,SAAO;AACT;AAEO,SAAS,sBAAsB,OAAyB;AAC7D,MAAI,SAAS,QAAQ,OAAO,UAAU,SAAU,QAAO;AACvD,QAAM,QAAQ;AACd,MAAI,MAAM,SAAS,gBAAgB,MAAM,SAAS,eAAgB,QAAO;AAIzE,SAAO,MAAM,SAAS,UAAU,MAAM,SAAS;AACjD;AAEO,SAAS,eAAe,QAA4B;AACzD,MAAI,QAAQ,SAAS;AACnB,UAAM,iBAAiB,OAAO,MAAM;AAAA,EACtC;AACF;AAEA,eAAsB,gBACpB,SACA,WACA,IACY;AACZ,QAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAkC,UAAU,IAAI;AACtF,aAAW,UAAU,eAAe;AAClC,mBAAe,MAAM;AAAA,EACvB;AAEA,MAAI,aAAa,QAAQ,cAAc,WAAW,GAAG;AACnD,WAAO,GAAG,MAAS;AAAA,EACrB;AAEA,MAAI,aAAa,QAAQ,cAAc,WAAW,GAAG;AACnD,UAAM,SAAS,cAAc,CAAC;AAC9B,QAAI;AACF,aAAO,MAAM,GAAG,MAAM;AAAA,IACxB,SAAS,OAAO;AACd,UAAI,OAAO,SAAS;AAClB,cAAM,iBAAiB,OAAO,MAAM;AAAA,MACtC;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,QAAQ,CAAC,WAAqB;AAClC,QAAI,CAAC,WAAW,OAAO,SAAS;AAC9B,iBAAW,MAAM,MAAM;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,YAAY,cAAc,IAAI,YAAU;AAC5C,UAAM,WAAW,MAAM,MAAM,iBAAiB,OAAO,MAAM,CAAC;AAC5D,WAAO,iBAAiB,SAAS,UAAU,EAAE,MAAM,KAAK,CAAC;AACzD,WAAO,EAAE,QAAQ,SAAS;AAAA,EAC5B,CAAC;AACD,QAAM,QACJ,aAAa,OACT,SACA,WAAW,MAAM;AACf,UAAM,mBAAmB,SAAS,CAAC;AAAA,EACrC,GAAG,SAAS;AAElB,MAAI;AACF,WAAO,MAAM,GAAG,WAAW,MAAM;AAAA,EACnC,UAAE;AACA,QAAI,MAAO,cAAa,KAAK;AAC7B,eAAW,EAAE,QAAQ,SAAS,KAAK,WAAW;AAC5C,aAAO,oBAAoB,SAAS,QAAQ;AAAA,IAC9C;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/protocols/abort.ts"],"sourcesContent":["export const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;\nexport const MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nexport function resolveRequestTimeoutMs(timeoutMs: number | undefined, defaultTimeoutMs?: number): number | undefined {\n const resolved = timeoutMs ?? defaultTimeoutMs;\n if (resolved == null) return undefined;\n if (resolved === 0) return undefined;\n if (!Number.isFinite(resolved) || resolved < 0 || resolved > MAX_TIMER_DELAY_MS) {\n throw new RangeError(`requestTimeoutMs must be a finite non-negative number <= ${MAX_TIMER_DELAY_MS}`);\n }\n return resolved;\n}\n\nexport function resolveClientRequestTimeoutMs(timeoutMs: number | undefined): number | undefined {\n if (timeoutMs === 0) return MAX_TIMER_DELAY_MS;\n return resolveRequestTimeoutMs(timeoutMs);\n}\n\nexport function createAbortError(reason?: unknown): Error {\n if (\n reason instanceof Error &&\n (reason.name === 'AbortError' || reason.name === 'TimeoutError' || reason.name === 'TaskTimeoutError')\n ) {\n return reason;\n }\n const error = new Error(reason == null ? 'The operation was aborted' : String(reason));\n error.name = 'AbortError';\n if (reason instanceof Error) {\n (error as Error & { cause?: unknown }).cause = reason;\n error.message = reason.message;\n }\n return error;\n}\n\nexport function createTimeoutError(timeoutMs: number): Error {\n const error = new Error(`Request timed out after ${timeoutMs} ms`);\n error.name = 'TimeoutError';\n return error;\n}\n\nexport function isAbortOrTimeoutError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') return false;\n const value = error as { name?: unknown; code?: unknown };\n if (value.name === 'AbortError' || value.name === 'TimeoutError' || value.name === 'TaskTimeoutError') return true;\n // MCP SDK v1 raises JSON-RPC RequestTimeout (-32001); the v2 packages use\n // the typed SDK error code REQUEST_TIMEOUT. Both represent the same\n // timeout/cancellation boundary and must bypass endpoint fallback.\n return value.code === -32001 || value.code === 'REQUEST_TIMEOUT' || value.code === 'TASK_TIMEOUT';\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw createAbortError(signal.reason);\n }\n}\n\nexport async function withAbortSignal<T>(\n signals: Array<AbortSignal | null | undefined>,\n timeoutMs: number | undefined,\n fn: (signal?: AbortSignal) => Promise<T>,\n options: { timeoutError?: Error } = {}\n): Promise<T> {\n const activeSignals = signals.filter((signal): signal is AbortSignal => signal != null);\n for (const signal of activeSignals) {\n throwIfAborted(signal);\n }\n\n if (timeoutMs == null && activeSignals.length === 0) {\n return fn(undefined);\n }\n\n const controller = new AbortController();\n const abort = (reason?: unknown) => {\n if (!controller.signal.aborted) {\n controller.abort(reason);\n }\n };\n\n const listeners = activeSignals.map(signal => {\n const listener = () => abort(createAbortError(signal.reason));\n signal.addEventListener('abort', listener, { once: true });\n return { signal, listener };\n });\n const timer =\n timeoutMs == null\n ? undefined\n : setTimeout(() => {\n abort(options.timeoutError ?? createTimeoutError(timeoutMs));\n }, timeoutMs);\n\n let rejectOnAbort: ((reason: unknown) => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n rejectOnAbort = () => reject(controller.signal.reason ?? createAbortError());\n controller.signal.addEventListener('abort', rejectOnAbort, { once: true });\n });\n\n try {\n // The signal reclaims transports that honor cancellation. The race also\n // guarantees the caller-facing deadline when an intermediate callback or\n // protocol implementation is slow to observe that signal.\n return await Promise.race([fn(controller.signal), aborted]);\n } catch (error) {\n if (controller.signal.aborted) {\n throw controller.signal.reason ?? createAbortError();\n }\n throw error;\n } finally {\n if (timer) clearTimeout(timer);\n if (rejectOnAbort) controller.signal.removeEventListener('abort', rejectOnAbort);\n for (const { signal, listener } of listeners) {\n signal.removeEventListener('abort', listener);\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -19,7 +19,9 @@ function resolveClientRequestTimeoutMs(timeoutMs) {
19
19
  return resolveRequestTimeoutMs(timeoutMs);
20
20
  }
21
21
  function createAbortError(reason) {
22
- if (reason instanceof Error && (reason.name === "AbortError" || reason.name === "TimeoutError")) return reason;
22
+ if (reason instanceof Error && (reason.name === "AbortError" || reason.name === "TimeoutError" || reason.name === "TaskTimeoutError")) {
23
+ return reason;
24
+ }
23
25
  const error = new Error(reason == null ? "The operation was aborted" : String(reason));
24
26
  error.name = "AbortError";
25
27
  if (reason instanceof Error) {
@@ -36,15 +38,15 @@ function createTimeoutError(timeoutMs) {
36
38
  function isAbortOrTimeoutError(error) {
37
39
  if (error == null || typeof error !== "object") return false;
38
40
  const value = error;
39
- if (value.name === "AbortError" || value.name === "TimeoutError") return true;
40
- return value.code === -32001 || value.code === "REQUEST_TIMEOUT";
41
+ if (value.name === "AbortError" || value.name === "TimeoutError" || value.name === "TaskTimeoutError") return true;
42
+ return value.code === -32001 || value.code === "REQUEST_TIMEOUT" || value.code === "TASK_TIMEOUT";
41
43
  }
42
44
  function throwIfAborted(signal) {
43
45
  if (signal?.aborted) {
44
46
  throw createAbortError(signal.reason);
45
47
  }
46
48
  }
47
- async function withAbortSignal(signals, timeoutMs, fn) {
49
+ async function withAbortSignal(signals, timeoutMs, fn, options = {}) {
48
50
  const activeSignals = signals.filter((signal) => signal != null);
49
51
  for (const signal of activeSignals) {
50
52
  throwIfAborted(signal);
@@ -52,17 +54,6 @@ async function withAbortSignal(signals, timeoutMs, fn) {
52
54
  if (timeoutMs == null && activeSignals.length === 0) {
53
55
  return fn(void 0);
54
56
  }
55
- if (timeoutMs == null && activeSignals.length === 1) {
56
- const signal = activeSignals[0];
57
- try {
58
- return await fn(signal);
59
- } catch (error) {
60
- if (signal.aborted) {
61
- throw createAbortError(signal.reason);
62
- }
63
- throw error;
64
- }
65
- }
66
57
  const controller = new AbortController();
67
58
  const abort = (reason) => {
68
59
  if (!controller.signal.aborted) {
@@ -75,12 +66,23 @@ async function withAbortSignal(signals, timeoutMs, fn) {
75
66
  return { signal, listener };
76
67
  });
77
68
  const timer = timeoutMs == null ? void 0 : setTimeout(() => {
78
- abort(createTimeoutError(timeoutMs));
69
+ abort(options.timeoutError ?? createTimeoutError(timeoutMs));
79
70
  }, timeoutMs);
71
+ let rejectOnAbort;
72
+ const aborted = new Promise((_resolve, reject) => {
73
+ rejectOnAbort = () => reject(controller.signal.reason ?? createAbortError());
74
+ controller.signal.addEventListener("abort", rejectOnAbort, { once: true });
75
+ });
80
76
  try {
81
- return await fn(controller.signal);
77
+ return await Promise.race([fn(controller.signal), aborted]);
78
+ } catch (error) {
79
+ if (controller.signal.aborted) {
80
+ throw controller.signal.reason ?? createAbortError();
81
+ }
82
+ throw error;
82
83
  } finally {
83
84
  if (timer) clearTimeout(timer);
85
+ if (rejectOnAbort) controller.signal.removeEventListener("abort", rejectOnAbort);
84
86
  for (const { signal, listener } of listeners) {
85
87
  signal.removeEventListener("abort", listener);
86
88
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/protocols/abort.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);\nexport const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;\nexport const MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nexport function resolveRequestTimeoutMs(timeoutMs: number | undefined, defaultTimeoutMs?: number): number | undefined {\n const resolved = timeoutMs ?? defaultTimeoutMs;\n if (resolved == null) return undefined;\n if (resolved === 0) return undefined;\n if (!Number.isFinite(resolved) || resolved < 0 || resolved > MAX_TIMER_DELAY_MS) {\n throw new RangeError(`requestTimeoutMs must be a finite non-negative number <= ${MAX_TIMER_DELAY_MS}`);\n }\n return resolved;\n}\n\nexport function resolveClientRequestTimeoutMs(timeoutMs: number | undefined): number | undefined {\n if (timeoutMs === 0) return MAX_TIMER_DELAY_MS;\n return resolveRequestTimeoutMs(timeoutMs);\n}\n\nexport function createAbortError(reason?: unknown): Error {\n if (reason instanceof Error && (reason.name === 'AbortError' || reason.name === 'TimeoutError')) return reason;\n const error = new Error(reason == null ? 'The operation was aborted' : String(reason));\n error.name = 'AbortError';\n if (reason instanceof Error) {\n (error as Error & { cause?: unknown }).cause = reason;\n error.message = reason.message;\n }\n return error;\n}\n\nexport function createTimeoutError(timeoutMs: number): Error {\n const error = new Error(`Request timed out after ${timeoutMs} ms`);\n error.name = 'TimeoutError';\n return error;\n}\n\nexport function isAbortOrTimeoutError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') return false;\n const value = error as { name?: unknown; code?: unknown };\n if (value.name === 'AbortError' || value.name === 'TimeoutError') return true;\n // MCP SDK v1 raises JSON-RPC RequestTimeout (-32001); the v2 packages use\n // the typed SDK error code REQUEST_TIMEOUT. Both represent the same\n // timeout/cancellation boundary and must bypass endpoint fallback.\n return value.code === -32001 || value.code === 'REQUEST_TIMEOUT';\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw createAbortError(signal.reason);\n }\n}\n\nexport async function withAbortSignal<T>(\n signals: Array<AbortSignal | null | undefined>,\n timeoutMs: number | undefined,\n fn: (signal?: AbortSignal) => Promise<T>\n): Promise<T> {\n const activeSignals = signals.filter((signal): signal is AbortSignal => signal != null);\n for (const signal of activeSignals) {\n throwIfAborted(signal);\n }\n\n if (timeoutMs == null && activeSignals.length === 0) {\n return fn(undefined);\n }\n\n if (timeoutMs == null && activeSignals.length === 1) {\n const signal = activeSignals[0]!;\n try {\n return await fn(signal);\n } catch (error) {\n if (signal.aborted) {\n throw createAbortError(signal.reason);\n }\n throw error;\n }\n }\n\n const controller = new AbortController();\n const abort = (reason?: unknown) => {\n if (!controller.signal.aborted) {\n controller.abort(reason);\n }\n };\n\n const listeners = activeSignals.map(signal => {\n const listener = () => abort(createAbortError(signal.reason));\n signal.addEventListener('abort', listener, { once: true });\n return { signal, listener };\n });\n const timer =\n timeoutMs == null\n ? undefined\n : setTimeout(() => {\n abort(createTimeoutError(timeoutMs));\n }, timeoutMs);\n\n try {\n return await fn(controller.signal);\n } finally {\n if (timer) clearTimeout(timer);\n for (const { signal, listener } of listeners) {\n signal.removeEventListener('abort', listener);\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB,2BAA2B;AACrD,SAAS,WAAW,qBAAqB;AACzC,SAAS,iBAAiB,2BAA2B;AACrD,MAAM,YAAY,cAAc,oBAAoB,YAAY,GAAG,CAAC;AACpE,MAAMA,WAAU,oBAAoB,YAAY,GAAG;AAC5C,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAE3B,SAAS,wBAAwB,WAA+B,kBAA+C;AACpH,QAAM,WAAW,aAAa;AAC9B,MAAI,YAAY,KAAM,QAAO;AAC7B,MAAI,aAAa,EAAG,QAAO;AAC3B,MAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,WAAW,KAAK,WAAW,oBAAoB;AAC/E,UAAM,IAAI,WAAW,4DAA4D,kBAAkB,EAAE;AAAA,EACvG;AACA,SAAO;AACT;AAEO,SAAS,8BAA8B,WAAmD;AAC/F,MAAI,cAAc,EAAG,QAAO;AAC5B,SAAO,wBAAwB,SAAS;AAC1C;AAEO,SAAS,iBAAiB,QAAyB;AACxD,MAAI,kBAAkB,UAAU,OAAO,SAAS,gBAAgB,OAAO,SAAS,gBAAiB,QAAO;AACxG,QAAM,QAAQ,IAAI,MAAM,UAAU,OAAO,8BAA8B,OAAO,MAAM,CAAC;AACrF,QAAM,OAAO;AACb,MAAI,kBAAkB,OAAO;AAC3B,IAAC,MAAsC,QAAQ;AAC/C,UAAM,UAAU,OAAO;AAAA,EACzB;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,WAA0B;AAC3D,QAAM,QAAQ,IAAI,MAAM,2BAA2B,SAAS,KAAK;AACjE,QAAM,OAAO;AACb,SAAO;AACT;AAEO,SAAS,sBAAsB,OAAyB;AAC7D,MAAI,SAAS,QAAQ,OAAO,UAAU,SAAU,QAAO;AACvD,QAAM,QAAQ;AACd,MAAI,MAAM,SAAS,gBAAgB,MAAM,SAAS,eAAgB,QAAO;AAIzE,SAAO,MAAM,SAAS,UAAU,MAAM,SAAS;AACjD;AAEO,SAAS,eAAe,QAA4B;AACzD,MAAI,QAAQ,SAAS;AACnB,UAAM,iBAAiB,OAAO,MAAM;AAAA,EACtC;AACF;AAEA,eAAsB,gBACpB,SACA,WACA,IACY;AACZ,QAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAkC,UAAU,IAAI;AACtF,aAAW,UAAU,eAAe;AAClC,mBAAe,MAAM;AAAA,EACvB;AAEA,MAAI,aAAa,QAAQ,cAAc,WAAW,GAAG;AACnD,WAAO,GAAG,MAAS;AAAA,EACrB;AAEA,MAAI,aAAa,QAAQ,cAAc,WAAW,GAAG;AACnD,UAAM,SAAS,cAAc,CAAC;AAC9B,QAAI;AACF,aAAO,MAAM,GAAG,MAAM;AAAA,IACxB,SAAS,OAAO;AACd,UAAI,OAAO,SAAS;AAClB,cAAM,iBAAiB,OAAO,MAAM;AAAA,MACtC;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,QAAQ,CAAC,WAAqB;AAClC,QAAI,CAAC,WAAW,OAAO,SAAS;AAC9B,iBAAW,MAAM,MAAM;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,YAAY,cAAc,IAAI,YAAU;AAC5C,UAAM,WAAW,MAAM,MAAM,iBAAiB,OAAO,MAAM,CAAC;AAC5D,WAAO,iBAAiB,SAAS,UAAU,EAAE,MAAM,KAAK,CAAC;AACzD,WAAO,EAAE,QAAQ,SAAS;AAAA,EAC5B,CAAC;AACD,QAAM,QACJ,aAAa,OACT,SACA,WAAW,MAAM;AACf,UAAM,mBAAmB,SAAS,CAAC;AAAA,EACrC,GAAG,SAAS;AAElB,MAAI;AACF,WAAO,MAAM,GAAG,WAAW,MAAM;AAAA,EACnC,UAAE;AACA,QAAI,MAAO,cAAa,KAAK;AAC7B,eAAW,EAAE,QAAQ,SAAS,KAAK,WAAW;AAC5C,aAAO,oBAAoB,SAAS,QAAQ;AAAA,IAC9C;AAAA,EACF;AACF;","names":["require"]}
1
+ {"version":3,"sources":["../../../src/lib/protocols/abort.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);\nexport const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;\nexport const MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nexport function resolveRequestTimeoutMs(timeoutMs: number | undefined, defaultTimeoutMs?: number): number | undefined {\n const resolved = timeoutMs ?? defaultTimeoutMs;\n if (resolved == null) return undefined;\n if (resolved === 0) return undefined;\n if (!Number.isFinite(resolved) || resolved < 0 || resolved > MAX_TIMER_DELAY_MS) {\n throw new RangeError(`requestTimeoutMs must be a finite non-negative number <= ${MAX_TIMER_DELAY_MS}`);\n }\n return resolved;\n}\n\nexport function resolveClientRequestTimeoutMs(timeoutMs: number | undefined): number | undefined {\n if (timeoutMs === 0) return MAX_TIMER_DELAY_MS;\n return resolveRequestTimeoutMs(timeoutMs);\n}\n\nexport function createAbortError(reason?: unknown): Error {\n if (\n reason instanceof Error &&\n (reason.name === 'AbortError' || reason.name === 'TimeoutError' || reason.name === 'TaskTimeoutError')\n ) {\n return reason;\n }\n const error = new Error(reason == null ? 'The operation was aborted' : String(reason));\n error.name = 'AbortError';\n if (reason instanceof Error) {\n (error as Error & { cause?: unknown }).cause = reason;\n error.message = reason.message;\n }\n return error;\n}\n\nexport function createTimeoutError(timeoutMs: number): Error {\n const error = new Error(`Request timed out after ${timeoutMs} ms`);\n error.name = 'TimeoutError';\n return error;\n}\n\nexport function isAbortOrTimeoutError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') return false;\n const value = error as { name?: unknown; code?: unknown };\n if (value.name === 'AbortError' || value.name === 'TimeoutError' || value.name === 'TaskTimeoutError') return true;\n // MCP SDK v1 raises JSON-RPC RequestTimeout (-32001); the v2 packages use\n // the typed SDK error code REQUEST_TIMEOUT. Both represent the same\n // timeout/cancellation boundary and must bypass endpoint fallback.\n return value.code === -32001 || value.code === 'REQUEST_TIMEOUT' || value.code === 'TASK_TIMEOUT';\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) {\n throw createAbortError(signal.reason);\n }\n}\n\nexport async function withAbortSignal<T>(\n signals: Array<AbortSignal | null | undefined>,\n timeoutMs: number | undefined,\n fn: (signal?: AbortSignal) => Promise<T>,\n options: { timeoutError?: Error } = {}\n): Promise<T> {\n const activeSignals = signals.filter((signal): signal is AbortSignal => signal != null);\n for (const signal of activeSignals) {\n throwIfAborted(signal);\n }\n\n if (timeoutMs == null && activeSignals.length === 0) {\n return fn(undefined);\n }\n\n const controller = new AbortController();\n const abort = (reason?: unknown) => {\n if (!controller.signal.aborted) {\n controller.abort(reason);\n }\n };\n\n const listeners = activeSignals.map(signal => {\n const listener = () => abort(createAbortError(signal.reason));\n signal.addEventListener('abort', listener, { once: true });\n return { signal, listener };\n });\n const timer =\n timeoutMs == null\n ? undefined\n : setTimeout(() => {\n abort(options.timeoutError ?? createTimeoutError(timeoutMs));\n }, timeoutMs);\n\n let rejectOnAbort: ((reason: unknown) => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n rejectOnAbort = () => reject(controller.signal.reason ?? createAbortError());\n controller.signal.addEventListener('abort', rejectOnAbort, { once: true });\n });\n\n try {\n // The signal reclaims transports that honor cancellation. The race also\n // guarantees the caller-facing deadline when an intermediate callback or\n // protocol implementation is slow to observe that signal.\n return await Promise.race([fn(controller.signal), aborted]);\n } catch (error) {\n if (controller.signal.aborted) {\n throw controller.signal.reason ?? createAbortError();\n }\n throw error;\n } finally {\n if (timer) clearTimeout(timer);\n if (rejectOnAbort) controller.signal.removeEventListener('abort', rejectOnAbort);\n for (const { signal, listener } of listeners) {\n signal.removeEventListener('abort', listener);\n }\n }\n}\n"],"mappings":"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","names":["require"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/protocols/index.ts"],"names":[],"mappings":"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"}
@@ -186,7 +186,8 @@ class ProtocolClient {
186
186
  await (0, import_oauth.ensureClientCredentialsTokens)(agent, {
187
187
  storage: ccStorage,
188
188
  allowPrivateIp,
189
- fetch: transport?.fetchFn
189
+ fetch: transport?.fetchFn,
190
+ signal
190
191
  });
191
192
  }
192
193
  const authToken = (0, import_auth.getAuthToken)(agent);
@@ -252,7 +253,7 @@ class ProtocolClient {
252
253
  fetchFn: transport?.fetchFn
253
254
  });
254
255
  } catch (err) {
255
- await rethrowAsNeedsAuthorization(err, agent.agent_uri, transport?.fetchFn);
256
+ await rethrowAsNeedsAuthorization(err, agent.agent_uri, transport?.fetchFn, signal);
256
257
  throw err;
257
258
  }
258
259
  }
@@ -281,7 +282,8 @@ class ProtocolClient {
281
282
  storage: ccStorage,
282
283
  force: true,
283
284
  allowPrivateIp,
284
- fetch: transport?.fetchFn
285
+ fetch: transport?.fetchFn,
286
+ signal
285
287
  });
286
288
  const retryAuthToken = agent.oauth_tokens?.access_token ?? authToken;
287
289
  try {
@@ -302,11 +304,11 @@ class ProtocolClient {
302
304
  }
303
305
  );
304
306
  } catch (retryErr) {
305
- await rethrowAsNeedsAuthorization(retryErr, agent.agent_uri, transport?.fetchFn);
307
+ await rethrowAsNeedsAuthorization(retryErr, agent.agent_uri, transport?.fetchFn, signal);
306
308
  throw retryErr;
307
309
  }
308
310
  }
309
- await rethrowAsNeedsAuthorization(err, agent.agent_uri, transport?.fetchFn);
311
+ await rethrowAsNeedsAuthorization(err, agent.agent_uri, transport?.fetchFn, signal);
310
312
  throw err;
311
313
  }
312
314
  } else if (agent.protocol === "a2a") {
@@ -333,7 +335,8 @@ class ProtocolClient {
333
335
  storage: ccStorage,
334
336
  force: true,
335
337
  allowPrivateIp,
336
- fetch: transport?.fetchFn
338
+ fetch: transport?.fetchFn,
339
+ signal
337
340
  });
338
341
  const retryAuthToken = agent.oauth_tokens?.access_token ?? authToken;
339
342
  try {
@@ -352,11 +355,11 @@ class ProtocolClient {
352
355
  transport?.fetchFn
353
356
  );
354
357
  } catch (retryErr) {
355
- await rethrowAsNeedsAuthorization(retryErr, agent.agent_uri, transport?.fetchFn);
358
+ await rethrowAsNeedsAuthorization(retryErr, agent.agent_uri, transport?.fetchFn, signal);
356
359
  throw retryErr;
357
360
  }
358
361
  }
359
- await rethrowAsNeedsAuthorization(err, agent.agent_uri, transport?.fetchFn);
362
+ await rethrowAsNeedsAuthorization(err, agent.agent_uri, transport?.fetchFn, signal);
360
363
  throw err;
361
364
  }
362
365
  } else {
@@ -368,11 +371,11 @@ class ProtocolClient {
368
371
  );
369
372
  }
370
373
  }
371
- async function rethrowAsNeedsAuthorization(err, agentUrl, fetchFn) {
374
+ async function rethrowAsNeedsAuthorization(err, agentUrl, fetchFn, signal) {
372
375
  if (err instanceof import_oauth.NeedsAuthorizationError) throw err;
373
376
  if (!(0, import_errors.is401Error)(err)) return;
374
377
  const allowPrivateIp = (0, import_net.isLikelyPrivateUrl)(agentUrl);
375
- const requirements = await (0, import_oauth.discoverAuthorizationRequirements)(agentUrl, { allowPrivateIp, fetchFn });
378
+ const requirements = await (0, import_oauth.discoverAuthorizationRequirements)(agentUrl, { allowPrivateIp, fetchFn, signal });
376
379
  if (requirements) {
377
380
  throw new import_oauth.NeedsAuthorizationError(requirements);
378
381
  }