@adcp/sdk 13.1.3 → 13.1.4

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 (1134) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/compliance/cache/{3.1.24 → 3.1.30}/domains/creative/scenarios/evaluator_auth.yaml +1 -1
  3. package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/billing_finality_delivery.yaml +6 -3
  4. package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/canonical_formats.yaml +16 -14
  5. package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +2 -4
  6. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/delivery_reporting.yaml +6 -4
  7. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/dependency_impairment.yaml +2 -4
  8. package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +2 -4
  9. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/governance_approved.yaml +10 -7
  10. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/governance_conditions.yaml +10 -7
  11. package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/governance_denied.yaml +10 -7
  12. package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/governance_denied_recovery.yaml +12 -9
  13. package/compliance/cache/3.1.30/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +1161 -0
  14. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/invalid_transitions.yaml +2 -4
  15. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/measurement_accountability.yaml +10 -2
  16. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/measurement_terms_rejected.yaml +6 -7
  17. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/provenance_audit_observation.yaml +52 -10
  18. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/provenance_enforcement.yaml +48 -11
  19. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/provenance_truth_of_claim.yaml +55 -19
  20. package/compliance/cache/{3.1.24/protocols → 3.1.30/domains}/media-buy/scenarios/vendor_metric_accountability.yaml +5 -2
  21. package/compliance/cache/{3.1.24 → 3.1.30}/index.json +3 -3
  22. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/creative/scenarios/evaluator_auth.yaml +1 -1
  23. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +6 -3
  24. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/canonical_formats.yaml +16 -14
  25. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +2 -4
  26. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/delivery_reporting.yaml +6 -4
  27. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/dependency_impairment.yaml +2 -4
  28. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +2 -4
  29. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/governance_approved.yaml +10 -7
  30. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/governance_conditions.yaml +10 -7
  31. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/governance_denied.yaml +10 -7
  32. package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +12 -9
  33. package/compliance/cache/3.1.30/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +1161 -0
  34. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/invalid_transitions.yaml +2 -4
  35. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/measurement_accountability.yaml +10 -2
  36. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/measurement_terms_rejected.yaml +6 -7
  37. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/provenance_audit_observation.yaml +52 -10
  38. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/provenance_enforcement.yaml +48 -11
  39. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/provenance_truth_of_claim.yaml +55 -19
  40. package/compliance/cache/{3.1.24/domains → 3.1.30/protocols}/media-buy/scenarios/vendor_metric_accountability.yaml +5 -2
  41. package/compliance/cache/3.1.30/test-kits/hosted-grader.yaml +56 -0
  42. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/001-no-signature-header.json +1 -1
  43. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/002-wrong-tag.json +1 -1
  44. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/003-expired-signature.json +1 -1
  45. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/004-window-too-long.json +1 -1
  46. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/005-alg-not-allowed.json +1 -1
  47. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/006-missing-covered-component.json +1 -1
  48. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/007-missing-content-digest.json +1 -1
  49. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/008-unknown-keyid.json +1 -1
  50. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +1 -1
  51. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +1 -1
  52. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/011-malformed-header.json +1 -1
  53. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/012-missing-expires-param.json +1 -1
  54. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/013-expires-le-created.json +1 -1
  55. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/014-missing-nonce-param.json +1 -1
  56. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/015-signature-invalid.json +1 -1
  57. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/016-replayed-nonce.json +1 -1
  58. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/017-key-revoked.json +1 -1
  59. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +9 -5
  60. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +1 -1
  61. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/020-rate-abuse.json +1 -1
  62. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +1 -1
  63. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +1 -1
  64. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +1 -1
  65. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/024-unquoted-string-param.json +1 -1
  66. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +1 -1
  67. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/026-non-ascii-host.json +1 -1
  68. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +1 -1
  69. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/001-basic-post.json +1 -1
  70. package/compliance/cache/3.1.30/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  71. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/003-es256-post.json +1 -1
  72. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +1 -1
  73. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/005-default-port-stripped.json +1 -1
  74. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/006-dot-segment-path.json +1 -1
  75. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +1 -1
  76. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +1 -1
  77. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/011-ipv6-authority.json +1 -1
  78. package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +1 -1
  79. package/compliance/cache/{3.1.24 → 3.1.30}/universal/read-tool-idempotency.yaml +0 -1
  80. package/compliance/cache/{3.1.24 → 3.1.30}/universal/stale-response-advisory.yaml +75 -67
  81. package/compliance/cache/{3.1.24 → 3.1.30}/universal/storyboard-schema.yaml +25 -1
  82. package/compliance/cache/{3.1.24 → 3.1.30}/universal/webhook-emission.yaml +131 -13
  83. package/dist/lib/schemas-data/3.1/a2ui/bound-value.json +1 -1
  84. package/dist/lib/schemas-data/3.1/a2ui/component.json +1 -1
  85. package/dist/lib/schemas-data/3.1/a2ui/si-catalog.json +25 -25
  86. package/dist/lib/schemas-data/3.1/a2ui/surface.json +2 -2
  87. package/dist/lib/schemas-data/3.1/a2ui/user-action.json +1 -1
  88. package/dist/lib/schemas-data/3.1/aao/agent-publishers.json +1 -1
  89. package/dist/lib/schemas-data/3.1/account/get-account-financials-request.json +6 -6
  90. package/dist/lib/schemas-data/3.1/account/get-account-financials-response.json +12 -12
  91. package/dist/lib/schemas-data/3.1/account/list-accounts-request.json +6 -6
  92. package/dist/lib/schemas-data/3.1/account/list-accounts-response.json +8 -8
  93. package/dist/lib/schemas-data/3.1/account/report-usage-request.json +6 -6
  94. package/dist/lib/schemas-data/3.1/account/report-usage-response.json +6 -6
  95. package/dist/lib/schemas-data/3.1/account/sync-accounts-request.json +12 -12
  96. package/dist/lib/schemas-data/3.1/account/sync-accounts-response.json +16 -16
  97. package/dist/lib/schemas-data/3.1/account/sync-governance-request.json +6 -6
  98. package/dist/lib/schemas-data/3.1/account/sync-governance-response.json +10 -10
  99. package/dist/lib/schemas-data/3.1/adagents.json +29 -29
  100. package/dist/lib/schemas-data/3.1/brand/acquire-rights-request.json +10 -10
  101. package/dist/lib/schemas-data/3.1/brand/acquire-rights-response.json +16 -16
  102. package/dist/lib/schemas-data/3.1/brand/creative-approval-request.json +5 -5
  103. package/dist/lib/schemas-data/3.1/brand/creative-approval-response.json +12 -12
  104. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-request.json +4 -4
  105. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-response.json +10 -10
  106. package/dist/lib/schemas-data/3.1/brand/get-rights-request.json +8 -8
  107. package/dist/lib/schemas-data/3.1/brand/get-rights-response.json +11 -11
  108. package/dist/lib/schemas-data/3.1/brand/revocation-notification.json +4 -4
  109. package/dist/lib/schemas-data/3.1/brand/rights-pricing-option.json +5 -5
  110. package/dist/lib/schemas-data/3.1/brand/rights-terms.json +3 -3
  111. package/dist/lib/schemas-data/3.1/brand/search-brands-request.json +6 -6
  112. package/dist/lib/schemas-data/3.1/brand/search-brands-response.json +11 -11
  113. package/dist/lib/schemas-data/3.1/brand/update-rights-request.json +6 -6
  114. package/dist/lib/schemas-data/3.1/brand/update-rights-response.json +11 -11
  115. package/dist/lib/schemas-data/3.1/brand/verification-status.json +1 -1
  116. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-request.json +2 -2
  117. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-response.json +13 -13
  118. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-request.json +2 -2
  119. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-response.json +13 -13
  120. package/dist/lib/schemas-data/3.1/brand.json +21 -21
  121. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-request.json +12 -12
  122. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-response.json +12 -12
  123. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-request.json +16 -16
  124. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-response.json +10 -10
  125. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-request.json +5 -5
  126. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-response.json +23 -23
  127. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-request.json +16 -16
  128. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-response.json +18 -18
  129. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-request.json +7 -7
  130. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-response.json +24 -24
  131. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-request.json +16 -16
  132. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-response.json +10 -10
  133. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-request.json +12 -12
  134. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-response.json +12 -12
  135. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-request.json +16 -16
  136. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-response.json +770 -265
  137. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-request.json +21 -21
  138. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-response.json +11 -11
  139. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-request.json +17 -17
  140. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-response.json +253 -84
  141. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-request.json +241 -72
  142. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-response.json +13 -13
  143. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-request.json +16 -16
  144. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-response.json +48 -48
  145. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-request.json +17 -17
  146. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-response.json +255 -86
  147. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-request.json +18 -18
  148. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-response.json +16 -16
  149. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-request.json +437 -100
  150. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-response.json +247 -78
  151. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-request.json +243 -74
  152. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-response.json +27 -27
  153. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-request.json +239 -70
  154. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-response.json +10 -10
  155. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-request.json +250 -81
  156. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-response.json +643 -138
  157. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-request.json +280 -111
  158. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-response.json +77 -77
  159. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-request.json +25 -25
  160. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-response.json +40 -40
  161. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-request.json +18 -18
  162. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-response.json +65 -65
  163. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-request.json +49 -49
  164. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-response.json +99 -99
  165. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-request.json +12 -12
  166. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-response.json +48 -48
  167. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-request.json +12 -12
  168. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-response.json +10 -10
  169. package/dist/lib/schemas-data/3.1/bundled/media-buy/package-request.json +276 -107
  170. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-request.json +8 -8
  171. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-response.json +10 -10
  172. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-request.json +18 -18
  173. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-response.json +12 -12
  174. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-request.json +26 -26
  175. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-response.json +12 -12
  176. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-request.json +19 -19
  177. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-response.json +16 -16
  178. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-request.json +472 -135
  179. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-response.json +71 -71
  180. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-request.json +18 -18
  181. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-response.json +26 -26
  182. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-request.json +16 -16
  183. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-response.json +10 -10
  184. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-request.json +16 -16
  185. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-response.json +27 -27
  186. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-request.json +17 -17
  187. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-response.json +27 -27
  188. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-request.json +18 -18
  189. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-response.json +26 -26
  190. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-request.json +19 -19
  191. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-response.json +15 -15
  192. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-request.json +5 -5
  193. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-response.json +37 -37
  194. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-request.json +16 -16
  195. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-response.json +770 -265
  196. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-request.json +21 -21
  197. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-response.json +11 -11
  198. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-request.json +17 -17
  199. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-response.json +12 -12
  200. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-request.json +24 -24
  201. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-response.json +53 -53
  202. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-request.json +5 -5
  203. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-response.json +23 -23
  204. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-request.json +18 -18
  205. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-response.json +25 -25
  206. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-request.json +16 -16
  207. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-response.json +26 -26
  208. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-request.json +5 -5
  209. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-response.json +11 -11
  210. package/dist/lib/schemas-data/3.1/collection/base-collection-source.json +3 -3
  211. package/dist/lib/schemas-data/3.1/collection/collection-list-changed-webhook.json +2 -2
  212. package/dist/lib/schemas-data/3.1/collection/collection-list-filters.json +7 -7
  213. package/dist/lib/schemas-data/3.1/collection/collection-list.json +5 -5
  214. package/dist/lib/schemas-data/3.1/collection/create-collection-list-request.json +8 -8
  215. package/dist/lib/schemas-data/3.1/collection/create-collection-list-response.json +6 -6
  216. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-request.json +5 -5
  217. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-response.json +5 -5
  218. package/dist/lib/schemas-data/3.1/collection/get-collection-list-request.json +5 -5
  219. package/dist/lib/schemas-data/3.1/collection/get-collection-list-response.json +12 -12
  220. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-request.json +6 -6
  221. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-response.json +7 -7
  222. package/dist/lib/schemas-data/3.1/collection/update-collection-list-request.json +8 -8
  223. package/dist/lib/schemas-data/3.1/collection/update-collection-list-response.json +6 -6
  224. package/dist/lib/schemas-data/3.1/content-standards/artifact-webhook-payload.json +3 -3
  225. package/dist/lib/schemas-data/3.1/content-standards/artifact.json +7 -7
  226. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-request.json +5 -5
  227. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-response.json +10 -10
  228. package/dist/lib/schemas-data/3.1/content-standards/content-standards.json +7 -7
  229. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-request.json +8 -8
  230. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-response.json +8 -8
  231. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-request.json +4 -4
  232. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-response.json +9 -9
  233. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-request.json +5 -5
  234. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-response.json +10 -10
  235. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-request.json +6 -6
  236. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-response.json +10 -10
  237. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-request.json +8 -8
  238. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-response.json +8 -8
  239. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-request.json +5 -5
  240. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-response.json +10 -10
  241. package/dist/lib/schemas-data/3.1/core/account-authorization.json +1 -1
  242. package/dist/lib/schemas-data/3.1/core/account-ref.json +2 -2
  243. package/dist/lib/schemas-data/3.1/core/account-with-authorization.json +3 -3
  244. package/dist/lib/schemas-data/3.1/core/account.json +10 -10
  245. package/dist/lib/schemas-data/3.1/core/activation-key.json +1 -1
  246. package/dist/lib/schemas-data/3.1/core/ad-inventory-config.json +1 -1
  247. package/dist/lib/schemas-data/3.1/core/agent-encryption-key.json +1 -1
  248. package/dist/lib/schemas-data/3.1/core/agent-signing-key.json +1 -1
  249. package/dist/lib/schemas-data/3.1/core/app-item.json +4 -4
  250. package/dist/lib/schemas-data/3.1/core/asset-group-vocabulary.json +1 -1
  251. package/dist/lib/schemas-data/3.1/core/assets/asset-union.json +21 -21
  252. package/dist/lib/schemas-data/3.1/core/assets/audio-asset.json +3 -3
  253. package/dist/lib/schemas-data/3.1/core/assets/brief-asset.json +2 -2
  254. package/dist/lib/schemas-data/3.1/core/assets/card-asset.json +6 -6
  255. package/dist/lib/schemas-data/3.1/core/assets/catalog-asset.json +2 -2
  256. package/dist/lib/schemas-data/3.1/core/assets/css-asset.json +2 -2
  257. package/dist/lib/schemas-data/3.1/core/assets/daast-asset.json +6 -7
  258. package/dist/lib/schemas-data/3.1/core/assets/daast-tracker-asset.json +4 -5
  259. package/dist/lib/schemas-data/3.1/core/assets/html-asset.json +2 -2
  260. package/dist/lib/schemas-data/3.1/core/assets/image-asset.json +2 -2
  261. package/dist/lib/schemas-data/3.1/core/assets/javascript-asset.json +3 -3
  262. package/dist/lib/schemas-data/3.1/core/assets/markdown-asset.json +2 -2
  263. package/dist/lib/schemas-data/3.1/core/assets/pixel-tracker-asset.json +3 -4
  264. package/dist/lib/schemas-data/3.1/core/assets/published-post-asset.json +2 -2
  265. package/dist/lib/schemas-data/3.1/core/assets/text-asset.json +2 -2
  266. package/dist/lib/schemas-data/3.1/core/assets/url-asset.json +4 -5
  267. package/dist/lib/schemas-data/3.1/core/assets/vast-asset.json +6 -7
  268. package/dist/lib/schemas-data/3.1/core/assets/vast-tracker-asset.json +4 -5
  269. package/dist/lib/schemas-data/3.1/core/assets/video-asset.json +7 -7
  270. package/dist/lib/schemas-data/3.1/core/assets/webhook-asset.json +7 -7
  271. package/dist/lib/schemas-data/3.1/core/assets/zip-asset.json +2 -2
  272. package/dist/lib/schemas-data/3.1/core/async-response-data.json +29 -29
  273. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
  274. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
  275. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
  276. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
  277. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
  278. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
  279. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
  280. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
  281. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
  282. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
  283. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
  284. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
  285. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  286. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  287. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
  288. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
  289. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
  290. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
  291. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
  292. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
  293. package/dist/lib/schemas-data/3.1/core/attribution-window.json +4 -4
  294. package/dist/lib/schemas-data/3.1/core/audience-member.json +3 -3
  295. package/dist/lib/schemas-data/3.1/core/audience-selector.json +7 -7
  296. package/dist/lib/schemas-data/3.1/core/authorized-agent-base.json +3 -3
  297. package/dist/lib/schemas-data/3.1/core/brand-id.json +1 -1
  298. package/dist/lib/schemas-data/3.1/core/brand-ref.json +3 -3
  299. package/dist/lib/schemas-data/3.1/core/business-entity.json +2 -2
  300. package/dist/lib/schemas-data/3.1/core/cancellation-policy.json +2 -2
  301. package/dist/lib/schemas-data/3.1/core/canonical-format-kind.json +1 -1
  302. package/dist/lib/schemas-data/3.1/core/canonical-projection-ref.json +3 -3
  303. package/dist/lib/schemas-data/3.1/core/canonical-projection-slot-override.json +1 -1
  304. package/dist/lib/schemas-data/3.1/core/catalog-field-mapping.json +2 -2
  305. package/dist/lib/schemas-data/3.1/core/catalog-item-delivery-metrics.json +3 -3
  306. package/dist/lib/schemas-data/3.1/core/catalog.json +7 -7
  307. package/dist/lib/schemas-data/3.1/core/catchment.json +5 -5
  308. package/dist/lib/schemas-data/3.1/core/collection-distribution.json +2 -2
  309. package/dist/lib/schemas-data/3.1/core/collection-list-ref.json +1 -1
  310. package/dist/lib/schemas-data/3.1/core/collection-selector.json +1 -1
  311. package/dist/lib/schemas-data/3.1/core/collection.json +13 -13
  312. package/dist/lib/schemas-data/3.1/core/committed-metric.json +9 -9
  313. package/dist/lib/schemas-data/3.1/core/content-rating.json +2 -2
  314. package/dist/lib/schemas-data/3.1/core/context.json +1 -1
  315. package/dist/lib/schemas-data/3.1/core/creative-asset.json +10 -10
  316. package/dist/lib/schemas-data/3.1/core/creative-assignment.json +2 -2
  317. package/dist/lib/schemas-data/3.1/core/creative-brief.json +4 -4
  318. package/dist/lib/schemas-data/3.1/core/creative-consumption.json +1 -1
  319. package/dist/lib/schemas-data/3.1/core/creative-delivery-metrics.json +2 -2
  320. package/dist/lib/schemas-data/3.1/core/creative-filters.json +5 -5
  321. package/dist/lib/schemas-data/3.1/core/creative-item.json +1 -1
  322. package/dist/lib/schemas-data/3.1/core/creative-manifest.json +11 -11
  323. package/dist/lib/schemas-data/3.1/core/creative-policy.json +3 -3
  324. package/dist/lib/schemas-data/3.1/core/creative-variable.json +1 -1
  325. package/dist/lib/schemas-data/3.1/core/creative-variant.json +5 -5
  326. package/dist/lib/schemas-data/3.1/core/data-provider-signal-selector.json +1 -1
  327. package/dist/lib/schemas-data/3.1/core/date-range.json +1 -1
  328. package/dist/lib/schemas-data/3.1/core/datetime-range.json +1 -1
  329. package/dist/lib/schemas-data/3.1/core/daypart-target.json +2 -2
  330. package/dist/lib/schemas-data/3.1/core/deadline-policy.json +1 -1
  331. package/dist/lib/schemas-data/3.1/core/delivery-forecast.json +7 -7
  332. package/dist/lib/schemas-data/3.1/core/delivery-metric-aggregate.json +9 -9
  333. package/dist/lib/schemas-data/3.1/core/delivery-metrics.json +8 -8
  334. package/dist/lib/schemas-data/3.1/core/deployment.json +3 -3
  335. package/dist/lib/schemas-data/3.1/core/destination-item.json +4 -4
  336. package/dist/lib/schemas-data/3.1/core/destination.json +1 -1
  337. package/dist/lib/schemas-data/3.1/core/diagnostic-issue.json +1 -1
  338. package/dist/lib/schemas-data/3.1/core/downstream-connection-requirement.json +1 -1
  339. package/dist/lib/schemas-data/3.1/core/duration.json +1 -1
  340. package/dist/lib/schemas-data/3.1/core/education-item.json +4 -4
  341. package/dist/lib/schemas-data/3.1/core/error.json +1 -1
  342. package/dist/lib/schemas-data/3.1/core/evaluator-spec.json +5 -5
  343. package/dist/lib/schemas-data/3.1/core/event-custom-data.json +2 -2
  344. package/dist/lib/schemas-data/3.1/core/event-source-health.json +3 -3
  345. package/dist/lib/schemas-data/3.1/core/event-surface.json +2 -2
  346. package/dist/lib/schemas-data/3.1/core/event.json +8 -8
  347. package/dist/lib/schemas-data/3.1/core/ext.json +1 -1
  348. package/dist/lib/schemas-data/3.1/core/feature-requirement.json +1 -1
  349. package/dist/lib/schemas-data/3.1/core/flight-item.json +4 -4
  350. package/dist/lib/schemas-data/3.1/core/forecast-dimension-audience.json +2 -2
  351. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-platform.json +2 -2
  352. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-type.json +2 -2
  353. package/dist/lib/schemas-data/3.1/core/forecast-dimension-geo.json +5 -5
  354. package/dist/lib/schemas-data/3.1/core/forecast-dimension-placement.json +2 -2
  355. package/dist/lib/schemas-data/3.1/core/forecast-dimension-signal.json +2 -2
  356. package/dist/lib/schemas-data/3.1/core/forecast-point-dimensions.json +7 -7
  357. package/dist/lib/schemas-data/3.1/core/forecast-point.json +27 -27
  358. package/dist/lib/schemas-data/3.1/core/forecast-range.json +1 -1
  359. package/dist/lib/schemas-data/3.1/core/forecast-vendor-metric-value.json +5 -5
  360. package/dist/lib/schemas-data/3.1/core/format-id.json +1 -1
  361. package/dist/lib/schemas-data/3.1/core/format-option-ref.json +1 -1
  362. package/dist/lib/schemas-data/3.1/core/format-shape-vocabulary.json +1 -1
  363. package/dist/lib/schemas-data/3.1/core/format.json +45 -45
  364. package/dist/lib/schemas-data/3.1/core/frequency-cap.json +4 -4
  365. package/dist/lib/schemas-data/3.1/core/generation-credential.json +3 -3
  366. package/dist/lib/schemas-data/3.1/core/geo-breakdown-support.json +3 -3
  367. package/dist/lib/schemas-data/3.1/core/geo-delivery-metrics.json +6 -6
  368. package/dist/lib/schemas-data/3.1/core/hotel-item.json +4 -4
  369. package/dist/lib/schemas-data/3.1/core/identifier.json +2 -2
  370. package/dist/lib/schemas-data/3.1/core/impairment.json +3 -3
  371. package/dist/lib/schemas-data/3.1/core/industry-identifier.json +2 -2
  372. package/dist/lib/schemas-data/3.1/core/insertion-order.json +1 -1
  373. package/dist/lib/schemas-data/3.1/core/installment-deadlines.json +2 -2
  374. package/dist/lib/schemas-data/3.1/core/installment.json +9 -9
  375. package/dist/lib/schemas-data/3.1/core/job-item.json +3 -3
  376. package/dist/lib/schemas-data/3.1/core/keyword-delivery-metrics.json +3 -3
  377. package/dist/lib/schemas-data/3.1/core/limited-series.json +1 -1
  378. package/dist/lib/schemas-data/3.1/core/macro-bearing-url.json +19 -0
  379. package/dist/lib/schemas-data/3.1/core/material-deadline.json +1 -1
  380. package/dist/lib/schemas-data/3.1/core/mcp-webhook-payload.json +5 -5
  381. package/dist/lib/schemas-data/3.1/core/measurement-readiness.json +5 -5
  382. package/dist/lib/schemas-data/3.1/core/measurement-terms.json +3 -3
  383. package/dist/lib/schemas-data/3.1/core/measurement-window.json +1 -1
  384. package/dist/lib/schemas-data/3.1/core/media-buy-available-action.json +4 -4
  385. package/dist/lib/schemas-data/3.1/core/media-buy-features.json +1 -1
  386. package/dist/lib/schemas-data/3.1/core/media-buy.json +10 -10
  387. package/dist/lib/schemas-data/3.1/core/missing-metric.json +9 -9
  388. package/dist/lib/schemas-data/3.1/core/notification-config.json +4 -4
  389. package/dist/lib/schemas-data/3.1/core/offering-asset-group.json +16 -16
  390. package/dist/lib/schemas-data/3.1/core/offering.json +5 -5
  391. package/dist/lib/schemas-data/3.1/core/optimization-goal.json +7 -7
  392. package/dist/lib/schemas-data/3.1/core/outcome-measurement.json +2 -2
  393. package/dist/lib/schemas-data/3.1/core/overlay.json +1 -1
  394. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-group.json +2 -2
  395. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-groups.json +2 -2
  396. package/dist/lib/schemas-data/3.1/core/package-signal-targeting.json +3 -3
  397. package/dist/lib/schemas-data/3.1/core/package.json +17 -17
  398. package/dist/lib/schemas-data/3.1/core/pagination-request.json +1 -1
  399. package/dist/lib/schemas-data/3.1/core/pagination-response.json +1 -1
  400. package/dist/lib/schemas-data/3.1/core/performance-feedback.json +12 -12
  401. package/dist/lib/schemas-data/3.1/core/performance-standard.json +4 -4
  402. package/dist/lib/schemas-data/3.1/core/placement-definition.json +10 -10
  403. package/dist/lib/schemas-data/3.1/core/placement-ref.json +1 -1
  404. package/dist/lib/schemas-data/3.1/core/placement.json +7 -7
  405. package/dist/lib/schemas-data/3.1/core/planned-delivery.json +5 -5
  406. package/dist/lib/schemas-data/3.1/core/platform-extension-ref.json +1 -1
  407. package/dist/lib/schemas-data/3.1/core/postal-area-support.json +2 -2
  408. package/dist/lib/schemas-data/3.1/core/postal-area.json +4 -4
  409. package/dist/lib/schemas-data/3.1/core/postal-country-system.json +2 -2
  410. package/dist/lib/schemas-data/3.1/core/price.json +1 -1
  411. package/dist/lib/schemas-data/3.1/core/pricing-option.json +10 -10
  412. package/dist/lib/schemas-data/3.1/core/product-allocation.json +4 -4
  413. package/dist/lib/schemas-data/3.1/core/product-allowed-action.json +5 -5
  414. package/dist/lib/schemas-data/3.1/core/product-filters.json +27 -27
  415. package/dist/lib/schemas-data/3.1/core/product-format-declaration.json +16 -16
  416. package/dist/lib/schemas-data/3.1/core/product-signal-targeting-option.json +3 -3
  417. package/dist/lib/schemas-data/3.1/core/product.json +40 -40
  418. package/dist/lib/schemas-data/3.1/core/property-id.json +1 -1
  419. package/dist/lib/schemas-data/3.1/core/property-list-ref.json +1 -1
  420. package/dist/lib/schemas-data/3.1/core/property-tag.json +1 -1
  421. package/dist/lib/schemas-data/3.1/core/property.json +6 -6
  422. package/dist/lib/schemas-data/3.1/core/proposal.json +6 -6
  423. package/dist/lib/schemas-data/3.1/core/protocol-envelope.json +5 -5
  424. package/dist/lib/schemas-data/3.1/core/provenance.json +9 -9
  425. package/dist/lib/schemas-data/3.1/core/publisher-property-selector.json +3 -3
  426. package/dist/lib/schemas-data/3.1/core/push-notification-config.json +2 -2
  427. package/dist/lib/schemas-data/3.1/core/real-estate-item.json +4 -4
  428. package/dist/lib/schemas-data/3.1/core/reference-asset.json +1 -1
  429. package/dist/lib/schemas-data/3.1/core/registry-event.json +14 -14
  430. package/dist/lib/schemas-data/3.1/core/registry-feed-response.json +2 -2
  431. package/dist/lib/schemas-data/3.1/core/reporting-capabilities.json +8 -8
  432. package/dist/lib/schemas-data/3.1/core/reporting-webhook.json +3 -3
  433. package/dist/lib/schemas-data/3.1/core/requirements/asset-requirements.json +13 -13
  434. package/dist/lib/schemas-data/3.1/core/requirements/audio-asset-requirements.json +1 -1
  435. package/dist/lib/schemas-data/3.1/core/requirements/catalog-field-binding.json +4 -4
  436. package/dist/lib/schemas-data/3.1/core/requirements/catalog-requirements.json +5 -5
  437. package/dist/lib/schemas-data/3.1/core/requirements/css-asset-requirements.json +1 -1
  438. package/dist/lib/schemas-data/3.1/core/requirements/daast-asset-requirements.json +1 -1
  439. package/dist/lib/schemas-data/3.1/core/requirements/html-asset-requirements.json +1 -1
  440. package/dist/lib/schemas-data/3.1/core/requirements/image-asset-requirements.json +2 -2
  441. package/dist/lib/schemas-data/3.1/core/requirements/javascript-asset-requirements.json +1 -1
  442. package/dist/lib/schemas-data/3.1/core/requirements/markdown-asset-requirements.json +1 -1
  443. package/dist/lib/schemas-data/3.1/core/requirements/offering-asset-constraint.json +4 -4
  444. package/dist/lib/schemas-data/3.1/core/requirements/text-asset-requirements.json +1 -1
  445. package/dist/lib/schemas-data/3.1/core/requirements/url-asset-requirements.json +1 -1
  446. package/dist/lib/schemas-data/3.1/core/requirements/vast-asset-requirements.json +1 -1
  447. package/dist/lib/schemas-data/3.1/core/requirements/video-asset-requirements.json +6 -6
  448. package/dist/lib/schemas-data/3.1/core/requirements/webhook-asset-requirements.json +1 -1
  449. package/dist/lib/schemas-data/3.1/core/response-payload-jws-envelope.json +1 -1
  450. package/dist/lib/schemas-data/3.1/core/response.json +1 -1
  451. package/dist/lib/schemas-data/3.1/core/rights-constraint.json +4 -4
  452. package/dist/lib/schemas-data/3.1/core/seller-agent-ref.json +1 -1
  453. package/dist/lib/schemas-data/3.1/core/signal-coverage-forecast.json +5 -5
  454. package/dist/lib/schemas-data/3.1/core/signal-definition-enrichment.json +4 -4
  455. package/dist/lib/schemas-data/3.1/core/signal-definition.json +5 -5
  456. package/dist/lib/schemas-data/3.1/core/signal-filters.json +3 -3
  457. package/dist/lib/schemas-data/3.1/core/signal-id.json +1 -1
  458. package/dist/lib/schemas-data/3.1/core/signal-listing.json +4 -4
  459. package/dist/lib/schemas-data/3.1/core/signal-modeling-disclosure.json +1 -1
  460. package/dist/lib/schemas-data/3.1/core/signal-pricing-option.json +2 -2
  461. package/dist/lib/schemas-data/3.1/core/signal-pricing.json +6 -6
  462. package/dist/lib/schemas-data/3.1/core/signal-ref.json +1 -1
  463. package/dist/lib/schemas-data/3.1/core/signal-selection-group-rule.json +1 -1
  464. package/dist/lib/schemas-data/3.1/core/signal-targeting-expression.json +4 -4
  465. package/dist/lib/schemas-data/3.1/core/signal-targeting-rules.json +2 -2
  466. package/dist/lib/schemas-data/3.1/core/signal-targeting.json +7 -7
  467. package/dist/lib/schemas-data/3.1/core/sla-window.json +1 -1
  468. package/dist/lib/schemas-data/3.1/core/special.json +2 -2
  469. package/dist/lib/schemas-data/3.1/core/start-timing.json +1 -1
  470. package/dist/lib/schemas-data/3.1/core/store-item.json +3 -3
  471. package/dist/lib/schemas-data/3.1/core/talent.json +2 -2
  472. package/dist/lib/schemas-data/3.1/core/targeting.json +22 -22
  473. package/dist/lib/schemas-data/3.1/core/tasks-get-request.json +5 -5
  474. package/dist/lib/schemas-data/3.1/core/tasks-get-response.json +10 -10
  475. package/dist/lib/schemas-data/3.1/core/tasks-list-request.json +13 -13
  476. package/dist/lib/schemas-data/3.1/core/tasks-list-response.json +8 -8
  477. package/dist/lib/schemas-data/3.1/core/transformer-param.json +1 -1
  478. package/dist/lib/schemas-data/3.1/core/transformer.json +5 -5
  479. package/dist/lib/schemas-data/3.1/core/truncation-sentinel.json +1 -1
  480. package/dist/lib/schemas-data/3.1/core/user-match.json +3 -3
  481. package/dist/lib/schemas-data/3.1/core/vehicle-item.json +4 -4
  482. package/dist/lib/schemas-data/3.1/core/vendor-metric-id.json +1 -1
  483. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization-supported-metric.json +3 -3
  484. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization.json +2 -2
  485. package/dist/lib/schemas-data/3.1/core/vendor-metric-value.json +3 -3
  486. package/dist/lib/schemas-data/3.1/core/vendor-pricing-option.json +3 -3
  487. package/dist/lib/schemas-data/3.1/core/version-envelope.json +1 -1
  488. package/dist/lib/schemas-data/3.1/core/webhook-activity-record.json +3 -3
  489. package/dist/lib/schemas-data/3.1/core/webhook-challenge-response.json +1 -1
  490. package/dist/lib/schemas-data/3.1/core/webhook-challenge.json +2 -2
  491. package/dist/lib/schemas-data/3.1/core/wholesale-feed-event.json +17 -17
  492. package/dist/lib/schemas-data/3.1/core/wholesale-feed-webhook.json +3 -3
  493. package/dist/lib/schemas-data/3.1/core/x-entity-types.json +1 -1
  494. package/dist/lib/schemas-data/3.1/creative/asset-types/index.json +6 -6
  495. package/dist/lib/schemas-data/3.1/creative/audit-observation.json +2 -2
  496. package/dist/lib/schemas-data/3.1/creative/creative-feature-result.json +2 -2
  497. package/dist/lib/schemas-data/3.1/creative/creative-purged-webhook.json +3 -3
  498. package/dist/lib/schemas-data/3.1/creative/creative-status-changed-webhook.json +4 -4
  499. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-request.json +6 -6
  500. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-response.json +9 -9
  501. package/dist/lib/schemas-data/3.1/creative/get-creative-features-request.json +6 -6
  502. package/dist/lib/schemas-data/3.1/creative/get-creative-features-response.json +11 -11
  503. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-request.json +13 -13
  504. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-response.json +9 -9
  505. package/dist/lib/schemas-data/3.1/creative/list-creatives-request.json +9 -9
  506. package/dist/lib/schemas-data/3.1/creative/list-creatives-response.json +21 -21
  507. package/dist/lib/schemas-data/3.1/creative/list-transformers-request.json +8 -8
  508. package/dist/lib/schemas-data/3.1/creative/list-transformers-response.json +8 -8
  509. package/dist/lib/schemas-data/3.1/creative/preview-creative-request.json +12 -12
  510. package/dist/lib/schemas-data/3.1/creative/preview-creative-response.json +14 -14
  511. package/dist/lib/schemas-data/3.1/creative/preview-render.json +1 -1
  512. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-input-required.json +3 -3
  513. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-submitted.json +4 -4
  514. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-working.json +3 -3
  515. package/dist/lib/schemas-data/3.1/creative/sync-creatives-request.json +8 -8
  516. package/dist/lib/schemas-data/3.1/creative/sync-creatives-response.json +15 -15
  517. package/dist/lib/schemas-data/3.1/creative/validate-input-request.json +4 -4
  518. package/dist/lib/schemas-data/3.1/creative/validate-input-response.json +4 -4
  519. package/dist/lib/schemas-data/3.1/creative/validate-input-result.json +1 -1
  520. package/dist/lib/schemas-data/3.1/creative/video-brief.json +1 -1
  521. package/dist/lib/schemas-data/3.1/enums/account-scope.json +1 -1
  522. package/dist/lib/schemas-data/3.1/enums/account-status.json +1 -1
  523. package/dist/lib/schemas-data/3.1/enums/action-not-allowed-reason.json +1 -1
  524. package/dist/lib/schemas-data/3.1/enums/action-source.json +1 -1
  525. package/dist/lib/schemas-data/3.1/enums/adcp-protocol.json +1 -1
  526. package/dist/lib/schemas-data/3.1/enums/adjustment-kind.json +1 -1
  527. package/dist/lib/schemas-data/3.1/enums/advertiser-industry.json +1 -1
  528. package/dist/lib/schemas-data/3.1/enums/age-verification-method.json +1 -1
  529. package/dist/lib/schemas-data/3.1/enums/assessment-status.json +1 -1
  530. package/dist/lib/schemas-data/3.1/enums/asset-content-type.json +1 -1
  531. package/dist/lib/schemas-data/3.1/enums/attestation-claim.json +1 -1
  532. package/dist/lib/schemas-data/3.1/enums/attribution-methodology.json +1 -1
  533. package/dist/lib/schemas-data/3.1/enums/attribution-model.json +1 -1
  534. package/dist/lib/schemas-data/3.1/enums/audience-source.json +1 -1
  535. package/dist/lib/schemas-data/3.1/enums/audience-status.json +1 -1
  536. package/dist/lib/schemas-data/3.1/enums/audio-channel-layout.json +1 -1
  537. package/dist/lib/schemas-data/3.1/enums/audio-distribution-type.json +1 -1
  538. package/dist/lib/schemas-data/3.1/enums/auth-scheme.json +1 -1
  539. package/dist/lib/schemas-data/3.1/enums/available-metric.json +1 -1
  540. package/dist/lib/schemas-data/3.1/enums/billing-party.json +1 -1
  541. package/dist/lib/schemas-data/3.1/enums/binary-verdict.json +1 -1
  542. package/dist/lib/schemas-data/3.1/enums/brand-agent-type.json +1 -1
  543. package/dist/lib/schemas-data/3.1/enums/c2pa-watermark-action.json +1 -1
  544. package/dist/lib/schemas-data/3.1/enums/canceled-by.json +1 -1
  545. package/dist/lib/schemas-data/3.1/enums/catalog-action.json +1 -1
  546. package/dist/lib/schemas-data/3.1/enums/catalog-item-status.json +1 -1
  547. package/dist/lib/schemas-data/3.1/enums/catalog-type.json +1 -1
  548. package/dist/lib/schemas-data/3.1/enums/channels.json +1 -1
  549. package/dist/lib/schemas-data/3.1/enums/cloud-storage-protocol.json +1 -1
  550. package/dist/lib/schemas-data/3.1/enums/co-branding-requirement.json +1 -1
  551. package/dist/lib/schemas-data/3.1/enums/collection-cadence.json +1 -1
  552. package/dist/lib/schemas-data/3.1/enums/collection-kind.json +1 -1
  553. package/dist/lib/schemas-data/3.1/enums/collection-relationship.json +1 -1
  554. package/dist/lib/schemas-data/3.1/enums/collection-status.json +1 -1
  555. package/dist/lib/schemas-data/3.1/enums/completion-source.json +1 -1
  556. package/dist/lib/schemas-data/3.1/enums/consent-basis.json +1 -1
  557. package/dist/lib/schemas-data/3.1/enums/content-id-type.json +1 -1
  558. package/dist/lib/schemas-data/3.1/enums/content-rating-system.json +1 -1
  559. package/dist/lib/schemas-data/3.1/enums/creative-action.json +1 -1
  560. package/dist/lib/schemas-data/3.1/enums/creative-agent-capability.json +1 -1
  561. package/dist/lib/schemas-data/3.1/enums/creative-approval-status.json +1 -1
  562. package/dist/lib/schemas-data/3.1/enums/creative-event-reason-code.json +1 -1
  563. package/dist/lib/schemas-data/3.1/enums/creative-identifier-type.json +1 -1
  564. package/dist/lib/schemas-data/3.1/enums/creative-quality.json +1 -1
  565. package/dist/lib/schemas-data/3.1/enums/creative-selection-strategy.json +1 -1
  566. package/dist/lib/schemas-data/3.1/enums/creative-sort-field.json +1 -1
  567. package/dist/lib/schemas-data/3.1/enums/creative-status.json +1 -1
  568. package/dist/lib/schemas-data/3.1/enums/daast-tracking-event.json +1 -1
  569. package/dist/lib/schemas-data/3.1/enums/daast-version.json +1 -1
  570. package/dist/lib/schemas-data/3.1/enums/day-of-week.json +1 -1
  571. package/dist/lib/schemas-data/3.1/enums/delegation-authority.json +1 -1
  572. package/dist/lib/schemas-data/3.1/enums/delivery-type.json +1 -1
  573. package/dist/lib/schemas-data/3.1/enums/demographic-system.json +1 -1
  574. package/dist/lib/schemas-data/3.1/enums/derivative-type.json +1 -1
  575. package/dist/lib/schemas-data/3.1/enums/device-platform.json +1 -1
  576. package/dist/lib/schemas-data/3.1/enums/device-type.json +1 -1
  577. package/dist/lib/schemas-data/3.1/enums/digital-source-type.json +1 -1
  578. package/dist/lib/schemas-data/3.1/enums/dimension-unit.json +1 -1
  579. package/dist/lib/schemas-data/3.1/enums/disclosure-persistence.json +1 -1
  580. package/dist/lib/schemas-data/3.1/enums/disclosure-position.json +1 -1
  581. package/dist/lib/schemas-data/3.1/enums/distance-unit.json +1 -1
  582. package/dist/lib/schemas-data/3.1/enums/distribution-identifier-type.json +1 -1
  583. package/dist/lib/schemas-data/3.1/enums/embedded-provenance-method.json +1 -1
  584. package/dist/lib/schemas-data/3.1/enums/error-code.json +1 -1
  585. package/dist/lib/schemas-data/3.1/enums/error-scope.json +1 -1
  586. package/dist/lib/schemas-data/3.1/enums/escalation-severity.json +1 -1
  587. package/dist/lib/schemas-data/3.1/enums/event-type.json +1 -1
  588. package/dist/lib/schemas-data/3.1/enums/exclusivity.json +1 -1
  589. package/dist/lib/schemas-data/3.1/enums/feature-check-status.json +1 -1
  590. package/dist/lib/schemas-data/3.1/enums/feed-format.json +1 -1
  591. package/dist/lib/schemas-data/3.1/enums/feedback-source.json +1 -1
  592. package/dist/lib/schemas-data/3.1/enums/forecast-method.json +1 -1
  593. package/dist/lib/schemas-data/3.1/enums/forecast-range-unit.json +1 -1
  594. package/dist/lib/schemas-data/3.1/enums/forecastable-metric.json +1 -1
  595. package/dist/lib/schemas-data/3.1/enums/format-id-parameter.json +1 -1
  596. package/dist/lib/schemas-data/3.1/enums/frame-rate-type.json +1 -1
  597. package/dist/lib/schemas-data/3.1/enums/frequency-cap-scope.json +1 -1
  598. package/dist/lib/schemas-data/3.1/enums/genre-taxonomy.json +1 -1
  599. package/dist/lib/schemas-data/3.1/enums/geo-level.json +1 -1
  600. package/dist/lib/schemas-data/3.1/enums/gop-type.json +1 -1
  601. package/dist/lib/schemas-data/3.1/enums/governance-decision.json +1 -1
  602. package/dist/lib/schemas-data/3.1/enums/governance-domain.json +1 -1
  603. package/dist/lib/schemas-data/3.1/enums/governance-mode.json +1 -1
  604. package/dist/lib/schemas-data/3.1/enums/governance-phase.json +1 -1
  605. package/dist/lib/schemas-data/3.1/enums/history-entry-type.json +1 -1
  606. package/dist/lib/schemas-data/3.1/enums/http-method.json +1 -1
  607. package/dist/lib/schemas-data/3.1/enums/identifier-types.json +1 -1
  608. package/dist/lib/schemas-data/3.1/enums/impairment-offline-state.json +1 -1
  609. package/dist/lib/schemas-data/3.1/enums/impairment-reason-code.json +1 -1
  610. package/dist/lib/schemas-data/3.1/enums/installment-status.json +1 -1
  611. package/dist/lib/schemas-data/3.1/enums/javascript-module-type.json +1 -1
  612. package/dist/lib/schemas-data/3.1/enums/landing-page-requirement.json +1 -1
  613. package/dist/lib/schemas-data/3.1/enums/legacy-postal-system.json +1 -1
  614. package/dist/lib/schemas-data/3.1/enums/lift-dimension.json +1 -1
  615. package/dist/lib/schemas-data/3.1/enums/logo-slot.json +1 -1
  616. package/dist/lib/schemas-data/3.1/enums/makegood-remedy.json +1 -1
  617. package/dist/lib/schemas-data/3.1/enums/markdown-flavor.json +1 -1
  618. package/dist/lib/schemas-data/3.1/enums/match-id-type.json +1 -1
  619. package/dist/lib/schemas-data/3.1/enums/match-type.json +1 -1
  620. package/dist/lib/schemas-data/3.1/enums/media-buy-action-mode.json +1 -1
  621. package/dist/lib/schemas-data/3.1/enums/media-buy-health.json +1 -1
  622. package/dist/lib/schemas-data/3.1/enums/media-buy-status.json +1 -1
  623. package/dist/lib/schemas-data/3.1/enums/media-buy-valid-action.json +1 -1
  624. package/dist/lib/schemas-data/3.1/enums/metric-scope.json +1 -1
  625. package/dist/lib/schemas-data/3.1/enums/metric-type.json +1 -1
  626. package/dist/lib/schemas-data/3.1/enums/metro-system.json +1 -1
  627. package/dist/lib/schemas-data/3.1/enums/moov-atom-position.json +1 -1
  628. package/dist/lib/schemas-data/3.1/enums/notification-type.json +1 -1
  629. package/dist/lib/schemas-data/3.1/enums/offering-availability-status.json +1 -1
  630. package/dist/lib/schemas-data/3.1/enums/outcome-type.json +1 -1
  631. package/dist/lib/schemas-data/3.1/enums/pacing.json +1 -1
  632. package/dist/lib/schemas-data/3.1/enums/payment-terms.json +1 -1
  633. package/dist/lib/schemas-data/3.1/enums/performance-standard-metric.json +1 -1
  634. package/dist/lib/schemas-data/3.1/enums/policy-category.json +1 -1
  635. package/dist/lib/schemas-data/3.1/enums/policy-enforcement.json +1 -1
  636. package/dist/lib/schemas-data/3.1/enums/postal-system.json +1 -1
  637. package/dist/lib/schemas-data/3.1/enums/preview-output-format.json +1 -1
  638. package/dist/lib/schemas-data/3.1/enums/pricing-model.json +1 -1
  639. package/dist/lib/schemas-data/3.1/enums/production-quality.json +1 -1
  640. package/dist/lib/schemas-data/3.1/enums/property-type.json +1 -1
  641. package/dist/lib/schemas-data/3.1/enums/proposal-status.json +1 -1
  642. package/dist/lib/schemas-data/3.1/enums/publisher-identifier-types.json +1 -1
  643. package/dist/lib/schemas-data/3.1/enums/purchase-type.json +1 -1
  644. package/dist/lib/schemas-data/3.1/enums/reach-unit.json +1 -1
  645. package/dist/lib/schemas-data/3.1/enums/reporting-frequency.json +1 -1
  646. package/dist/lib/schemas-data/3.1/enums/response-type.json +1 -1
  647. package/dist/lib/schemas-data/3.1/enums/restricted-attribute.json +1 -1
  648. package/dist/lib/schemas-data/3.1/enums/right-type.json +1 -1
  649. package/dist/lib/schemas-data/3.1/enums/right-use.json +1 -1
  650. package/dist/lib/schemas-data/3.1/enums/rights-billing-period.json +1 -1
  651. package/dist/lib/schemas-data/3.1/enums/scan-type.json +1 -1
  652. package/dist/lib/schemas-data/3.1/enums/si-session-status.json +1 -1
  653. package/dist/lib/schemas-data/3.1/enums/signal-catalog-type.json +1 -1
  654. package/dist/lib/schemas-data/3.1/enums/signal-source.json +1 -1
  655. package/dist/lib/schemas-data/3.1/enums/signal-value-type.json +1 -1
  656. package/dist/lib/schemas-data/3.1/enums/snapshot-unavailable-reason.json +1 -1
  657. package/dist/lib/schemas-data/3.1/enums/social-placement-surface.json +1 -1
  658. package/dist/lib/schemas-data/3.1/enums/sort-direction.json +1 -1
  659. package/dist/lib/schemas-data/3.1/enums/sort-metric.json +1 -1
  660. package/dist/lib/schemas-data/3.1/enums/special-category.json +1 -1
  661. package/dist/lib/schemas-data/3.1/enums/specialism.json +1 -1
  662. package/dist/lib/schemas-data/3.1/enums/sponsored-placement-type.json +1 -1
  663. package/dist/lib/schemas-data/3.1/enums/talent-role.json +1 -1
  664. package/dist/lib/schemas-data/3.1/enums/task-status.json +1 -1
  665. package/dist/lib/schemas-data/3.1/enums/task-type.json +1 -1
  666. package/dist/lib/schemas-data/3.1/enums/transport-mode.json +1 -1
  667. package/dist/lib/schemas-data/3.1/enums/travel-time-unit.json +1 -1
  668. package/dist/lib/schemas-data/3.1/enums/uid-type.json +1 -1
  669. package/dist/lib/schemas-data/3.1/enums/universal-macro.json +1 -1
  670. package/dist/lib/schemas-data/3.1/enums/update-frequency.json +1 -1
  671. package/dist/lib/schemas-data/3.1/enums/url-asset-type.json +1 -1
  672. package/dist/lib/schemas-data/3.1/enums/validation-mode.json +1 -1
  673. package/dist/lib/schemas-data/3.1/enums/vast-tracking-event.json +1 -1
  674. package/dist/lib/schemas-data/3.1/enums/vast-version.json +1 -1
  675. package/dist/lib/schemas-data/3.1/enums/video-placement-type.json +1 -1
  676. package/dist/lib/schemas-data/3.1/enums/viewability-standard.json +1 -1
  677. package/dist/lib/schemas-data/3.1/enums/watermark-media-type.json +1 -1
  678. package/dist/lib/schemas-data/3.1/enums/wcag-level.json +1 -1
  679. package/dist/lib/schemas-data/3.1/enums/webhook-response-type.json +1 -1
  680. package/dist/lib/schemas-data/3.1/enums/webhook-security-method.json +1 -1
  681. package/dist/lib/schemas-data/3.1/error-details/account-setup-required.json +1 -1
  682. package/dist/lib/schemas-data/3.1/error-details/action-not-allowed.json +4 -4
  683. package/dist/lib/schemas-data/3.1/error-details/agent-permission-denied.json +1 -1
  684. package/dist/lib/schemas-data/3.1/error-details/audience-too-small.json +1 -1
  685. package/dist/lib/schemas-data/3.1/error-details/authorization-required.json +3 -3
  686. package/dist/lib/schemas-data/3.1/error-details/billing-not-permitted-for-agent.json +3 -3
  687. package/dist/lib/schemas-data/3.1/error-details/billing-not-supported.json +2 -2
  688. package/dist/lib/schemas-data/3.1/error-details/budget-too-low.json +1 -1
  689. package/dist/lib/schemas-data/3.1/error-details/conflict.json +1 -1
  690. package/dist/lib/schemas-data/3.1/error-details/creative-rejected.json +1 -1
  691. package/dist/lib/schemas-data/3.1/error-details/policy-violation.json +1 -1
  692. package/dist/lib/schemas-data/3.1/error-details/rate-limited.json +1 -1
  693. package/dist/lib/schemas-data/3.1/error-details/stale-response.json +1 -1
  694. package/dist/lib/schemas-data/3.1/error-details/vendor-error-codes.json +1 -1
  695. package/dist/lib/schemas-data/3.1/error-details/version-unsupported.json +2 -2
  696. package/dist/lib/schemas-data/3.1/extensions/extension-meta.json +1 -1
  697. package/dist/lib/schemas-data/3.1/extensions/index.json +2 -2
  698. package/dist/lib/schemas-data/3.1/formats/canonical/_base.json +5 -5
  699. package/dist/lib/schemas-data/3.1/formats/canonical/agent_placement.json +2 -2
  700. package/dist/lib/schemas-data/3.1/formats/canonical/audio_daast.json +2 -2
  701. package/dist/lib/schemas-data/3.1/formats/canonical/audio_hosted.json +2 -2
  702. package/dist/lib/schemas-data/3.1/formats/canonical/display_tag.json +2 -2
  703. package/dist/lib/schemas-data/3.1/formats/canonical/html5.json +2 -2
  704. package/dist/lib/schemas-data/3.1/formats/canonical/image.json +2 -2
  705. package/dist/lib/schemas-data/3.1/formats/canonical/image_carousel.json +2 -2
  706. package/dist/lib/schemas-data/3.1/formats/canonical/native_in_feed.json +2 -2
  707. package/dist/lib/schemas-data/3.1/formats/canonical/responsive_creative.json +2 -2
  708. package/dist/lib/schemas-data/3.1/formats/canonical/sponsored_placement.json +3 -3
  709. package/dist/lib/schemas-data/3.1/formats/canonical/video_hosted.json +2 -2
  710. package/dist/lib/schemas-data/3.1/formats/canonical/video_vast.json +2 -2
  711. package/dist/lib/schemas-data/3.1/governance/attribute-definition.json +1 -1
  712. package/dist/lib/schemas-data/3.1/governance/audience-constraints.json +3 -3
  713. package/dist/lib/schemas-data/3.1/governance/check-governance-request.json +8 -8
  714. package/dist/lib/schemas-data/3.1/governance/check-governance-response.json +7 -7
  715. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-request.json +5 -5
  716. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-response.json +11 -11
  717. package/dist/lib/schemas-data/3.1/governance/policy-category-definition.json +2 -2
  718. package/dist/lib/schemas-data/3.1/governance/policy-entry.json +6 -6
  719. package/dist/lib/schemas-data/3.1/governance/policy-ref.json +1 -1
  720. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-request.json +7 -7
  721. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-response.json +5 -5
  722. package/dist/lib/schemas-data/3.1/governance/sync-plans-request.json +14 -14
  723. package/dist/lib/schemas-data/3.1/governance/sync-plans-response.json +6 -6
  724. package/dist/lib/schemas-data/3.1/index.json +443 -443
  725. package/dist/lib/schemas-data/3.1/manifest.json +3 -3
  726. package/dist/lib/schemas-data/3.1/manifest.schema.json +1 -1
  727. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-input-required.json +4 -4
  728. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-submitted.json +4 -4
  729. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-working.json +3 -3
  730. package/dist/lib/schemas-data/3.1/media-buy/build-creative-request.json +16 -16
  731. package/dist/lib/schemas-data/3.1/media-buy/build-creative-response.json +35 -35
  732. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-input-required.json +4 -4
  733. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-submitted.json +4 -4
  734. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-working.json +3 -3
  735. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-request.json +13 -13
  736. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-response.json +19 -19
  737. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-request.json +23 -23
  738. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-response.json +27 -27
  739. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-request.json +8 -8
  740. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-response.json +30 -30
  741. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-input-required.json +4 -4
  742. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-submitted.json +4 -4
  743. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-working.json +3 -3
  744. package/dist/lib/schemas-data/3.1/media-buy/get-products-request.json +13 -13
  745. package/dist/lib/schemas-data/3.1/media-buy/get-products-response.json +10 -10
  746. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-request.json +13 -13
  747. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-response.json +9 -9
  748. package/dist/lib/schemas-data/3.1/media-buy/log-event-request.json +5 -5
  749. package/dist/lib/schemas-data/3.1/media-buy/log-event-response.json +8 -8
  750. package/dist/lib/schemas-data/3.1/media-buy/media-buy-delivery-webhook-result.json +9 -9
  751. package/dist/lib/schemas-data/3.1/media-buy/package-request.json +23 -23
  752. package/dist/lib/schemas-data/3.1/media-buy/package-update.json +13 -13
  753. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-request.json +7 -7
  754. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-response.json +8 -8
  755. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-request.json +8 -8
  756. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-response.json +14 -14
  757. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  758. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  759. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-working.json +3 -3
  760. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-request.json +8 -8
  761. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-response.json +14 -14
  762. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-request.json +8 -8
  763. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-response.json +14 -14
  764. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-input-required.json +3 -3
  765. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-submitted.json +4 -4
  766. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-working.json +3 -3
  767. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-request.json +11 -11
  768. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-response.json +17 -17
  769. package/dist/lib/schemas-data/3.1/pricing-options/cpa-option.json +4 -4
  770. package/dist/lib/schemas-data/3.1/pricing-options/cpc-option.json +4 -4
  771. package/dist/lib/schemas-data/3.1/pricing-options/cpcv-option.json +4 -4
  772. package/dist/lib/schemas-data/3.1/pricing-options/cpm-option.json +4 -4
  773. package/dist/lib/schemas-data/3.1/pricing-options/cpp-option.json +5 -5
  774. package/dist/lib/schemas-data/3.1/pricing-options/cpv-option.json +4 -4
  775. package/dist/lib/schemas-data/3.1/pricing-options/flat-rate-option.json +4 -4
  776. package/dist/lib/schemas-data/3.1/pricing-options/price-breakdown.json +2 -2
  777. package/dist/lib/schemas-data/3.1/pricing-options/price-guidance.json +1 -1
  778. package/dist/lib/schemas-data/3.1/pricing-options/time-option.json +4 -4
  779. package/dist/lib/schemas-data/3.1/pricing-options/vcpm-option.json +4 -4
  780. package/dist/lib/schemas-data/3.1/property/authorization-result.json +1 -1
  781. package/dist/lib/schemas-data/3.1/property/base-property-source.json +4 -4
  782. package/dist/lib/schemas-data/3.1/property/create-property-list-request.json +8 -8
  783. package/dist/lib/schemas-data/3.1/property/create-property-list-response.json +6 -6
  784. package/dist/lib/schemas-data/3.1/property/delete-property-list-request.json +5 -5
  785. package/dist/lib/schemas-data/3.1/property/delete-property-list-response.json +5 -5
  786. package/dist/lib/schemas-data/3.1/property/delivery-record.json +3 -3
  787. package/dist/lib/schemas-data/3.1/property/get-property-list-request.json +5 -5
  788. package/dist/lib/schemas-data/3.1/property/get-property-list-response.json +9 -9
  789. package/dist/lib/schemas-data/3.1/property/list-property-lists-request.json +6 -6
  790. package/dist/lib/schemas-data/3.1/property/list-property-lists-response.json +7 -7
  791. package/dist/lib/schemas-data/3.1/property/property-error.json +2 -2
  792. package/dist/lib/schemas-data/3.1/property/property-feature-definition.json +2 -2
  793. package/dist/lib/schemas-data/3.1/property/property-feature-result.json +4 -4
  794. package/dist/lib/schemas-data/3.1/property/property-feature-value.json +2 -2
  795. package/dist/lib/schemas-data/3.1/property/property-feature.json +1 -1
  796. package/dist/lib/schemas-data/3.1/property/property-list-changed-webhook.json +2 -2
  797. package/dist/lib/schemas-data/3.1/property/property-list-filters.json +5 -5
  798. package/dist/lib/schemas-data/3.1/property/property-list.json +6 -6
  799. package/dist/lib/schemas-data/3.1/property/update-property-list-request.json +8 -8
  800. package/dist/lib/schemas-data/3.1/property/update-property-list-response.json +6 -6
  801. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-request.json +6 -6
  802. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-response.json +6 -6
  803. package/dist/lib/schemas-data/3.1/property/validation-result.json +5 -5
  804. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-request.json +4 -4
  805. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-response.json +34 -34
  806. package/dist/lib/schemas-data/3.1/protocol/get-task-status-request.json +5 -5
  807. package/dist/lib/schemas-data/3.1/protocol/get-task-status-response.json +10 -10
  808. package/dist/lib/schemas-data/3.1/protocol/list-tasks-request.json +13 -13
  809. package/dist/lib/schemas-data/3.1/protocol/list-tasks-response.json +8 -8
  810. package/dist/lib/schemas-data/3.1/registries/v1-canonical-mapping.json +2 -2
  811. package/dist/lib/schemas-data/3.1/signals/activate-signal-request.json +6 -6
  812. package/dist/lib/schemas-data/3.1/signals/activate-signal-response.json +9 -9
  813. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-submitted.json +4 -4
  814. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-working.json +3 -3
  815. package/dist/lib/schemas-data/3.1/signals/get-signals-request.json +11 -11
  816. package/dist/lib/schemas-data/3.1/signals/get-signals-response.json +17 -17
  817. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-capabilities.json +1 -1
  818. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-context-use.json +1 -1
  819. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-request.json +4 -4
  820. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-response.json +9 -9
  821. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-identity.json +1 -1
  822. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-request.json +7 -7
  823. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-response.json +10 -10
  824. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-request.json +5 -5
  825. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-response.json +10 -10
  826. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
  827. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context.json +4 -4
  828. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-request.json +4 -4
  829. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-response.json +7 -7
  830. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-ui-element.json +1 -1
  831. package/dist/lib/schemas-data/3.1/trusted-match/available-package.json +4 -4
  832. package/dist/lib/schemas-data/3.1/trusted-match/context-match-request.json +5 -5
  833. package/dist/lib/schemas-data/3.1/trusted-match/context-match-response.json +4 -4
  834. package/dist/lib/schemas-data/3.1/trusted-match/error.json +1 -1
  835. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-request.json +4 -4
  836. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-response.json +4 -4
  837. package/dist/lib/schemas-data/3.1/trusted-match/offer-price.json +1 -1
  838. package/dist/lib/schemas-data/3.1/trusted-match/offer.json +5 -5
  839. package/dist/lib/schemas-data/3.1/trusted-match/provider-identity-match-response.json +4 -4
  840. package/dist/lib/schemas-data/3.1/trusted-match/provider-registration.json +2 -2
  841. package/dist/lib/schemas-data/3.1/trusted-match/publisher-tmpx-config.json +1 -1
  842. package/dist/lib/schemas-data/3.1/trusted-match/tmpx-chunk.json +1 -1
  843. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  844. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js.map +1 -1
  845. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
  846. package/dist/lib/server/serve.d.ts.map +1 -1
  847. package/dist/lib/server/serve.js +2 -0
  848. package/dist/lib/server/serve.js.map +1 -1
  849. package/dist/lib/server/serve.mjs +2 -0
  850. package/dist/lib/server/serve.mjs.map +1 -1
  851. package/dist/lib/server/test-controller.d.mts +1 -0
  852. package/dist/lib/server/test-controller.d.ts +1 -0
  853. package/dist/lib/server/test-controller.d.ts.map +1 -1
  854. package/dist/lib/server/test-controller.js +5 -1
  855. package/dist/lib/server/test-controller.js.map +1 -1
  856. package/dist/lib/server/test-controller.mjs +5 -1
  857. package/dist/lib/server/test-controller.mjs.map +1 -1
  858. package/dist/lib/server/wire-spec-fields.generated.d.mts +29 -29
  859. package/dist/lib/server/wire-spec-fields.generated.d.ts +29 -29
  860. package/dist/lib/server/wire-spec-fields.generated.js +29 -29
  861. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -1
  862. package/dist/lib/server/wire-spec-fields.generated.mjs +29 -29
  863. package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
  864. package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
  865. package/dist/lib/testing/storyboard/loader.js +5 -0
  866. package/dist/lib/testing/storyboard/loader.js.map +1 -1
  867. package/dist/lib/testing/storyboard/loader.mjs +5 -0
  868. package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
  869. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  870. package/dist/lib/testing/storyboard/request-builder.js +27 -11
  871. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  872. package/dist/lib/testing/storyboard/request-builder.mjs +27 -11
  873. package/dist/lib/testing/storyboard/request-builder.mjs.map +1 -1
  874. package/dist/lib/testing/storyboard/runner.js +2 -2
  875. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  876. package/dist/lib/testing/storyboard/runner.mjs +2 -2
  877. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  878. package/dist/lib/testing/storyboard/types.d.mts +10 -0
  879. package/dist/lib/testing/storyboard/types.d.ts +10 -0
  880. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  881. package/dist/lib/testing/storyboard/types.js.map +1 -1
  882. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  883. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  884. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  885. package/dist/lib/types/build-creative.d.ts +11 -24
  886. package/dist/lib/types/comply-test-controller.d.ts +11 -24
  887. package/dist/lib/types/core.generated.d.mts +10 -24
  888. package/dist/lib/types/core.generated.d.ts +10 -24
  889. package/dist/lib/types/core.generated.d.ts.map +1 -1
  890. package/dist/lib/types/core.generated.js.map +1 -1
  891. package/dist/lib/types/create-media-buy.d.ts +11 -24
  892. package/dist/lib/types/get-creative-delivery.d.ts +11 -24
  893. package/dist/lib/types/get-creative-features.d.ts +11 -24
  894. package/dist/lib/types/get-task-status.d.ts +11 -24
  895. package/dist/lib/types/list-creatives.d.ts +11 -24
  896. package/dist/lib/types/manifest.generated.d.mts +3 -3
  897. package/dist/lib/types/manifest.generated.d.ts +3 -3
  898. package/dist/lib/types/manifest.generated.js.map +1 -1
  899. package/dist/lib/types/manifest.generated.mjs.map +1 -1
  900. package/dist/lib/types/per-tool-index.json +1 -1
  901. package/dist/lib/types/preview-creative.d.ts +11 -24
  902. package/dist/lib/types/schemas.generated.d.mts +69 -68
  903. package/dist/lib/types/schemas.generated.d.ts +69 -68
  904. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  905. package/dist/lib/types/schemas.generated.js +16 -13
  906. package/dist/lib/types/schemas.generated.js.map +1 -1
  907. package/dist/lib/types/schemas.generated.mjs +15 -13
  908. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  909. package/dist/lib/types/tools.generated.d.mts +10 -24
  910. package/dist/lib/types/tools.generated.d.ts +10 -24
  911. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  912. package/dist/lib/types/tools.generated.js.map +1 -1
  913. package/dist/lib/types/update-media-buy.d.ts +11 -24
  914. package/dist/lib/types/validate-input.d.ts +11 -24
  915. package/dist/lib/version.d.mts +7 -7
  916. package/dist/lib/version.d.ts +7 -7
  917. package/dist/lib/version.d.ts.map +1 -1
  918. package/dist/lib/version.js +12 -6
  919. package/dist/lib/version.js.map +1 -1
  920. package/dist/lib/version.mjs +12 -6
  921. package/dist/lib/version.mjs.map +1 -1
  922. package/docs/llms.txt +6 -6
  923. package/package.json +7 -7
  924. package/compliance/cache/3.1.24/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -556
  925. package/compliance/cache/3.1.24/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -556
  926. package/compliance/cache/3.1.24/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  927. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/brand/index.yaml +0 -0
  928. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  929. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  930. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/creative/index.yaml +0 -0
  931. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  932. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  933. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  934. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  935. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/governance/index.yaml +0 -0
  936. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/index.yaml +0 -0
  937. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  938. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  939. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  940. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  941. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  942. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  943. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  944. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  945. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  946. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  947. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  948. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  949. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  950. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  951. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  952. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  953. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  954. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  955. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  956. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  957. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  958. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  959. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  960. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  961. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  962. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  963. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  964. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/media-buy/state-machine.yaml +0 -0
  965. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/signals/index.yaml +0 -0
  966. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  967. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/sponsored-intelligence/index.yaml +0 -0
  968. /package/compliance/cache/{3.1.24 → 3.1.30}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  969. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/brand/index.yaml +0 -0
  970. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  971. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  972. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/creative/index.yaml +0 -0
  973. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  974. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  975. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  976. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  977. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/governance/index.yaml +0 -0
  978. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/index.yaml +0 -0
  979. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  980. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  981. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  982. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  983. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  984. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  985. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  986. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  987. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  988. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  989. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  990. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  991. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  992. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  993. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  994. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  995. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  996. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  997. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  998. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  999. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1000. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1001. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1002. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1003. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  1004. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1005. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1006. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/media-buy/state-machine.yaml +0 -0
  1007. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/signals/index.yaml +0 -0
  1008. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  1009. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/sponsored-intelligence/index.yaml +0 -0
  1010. /package/compliance/cache/{3.1.24 → 3.1.30}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1011. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/audience-sync/index.yaml +0 -0
  1012. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/brand-rights/index.yaml +0 -0
  1013. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  1014. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/collection-lists/index.yaml +0 -0
  1015. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/content-standards/index.yaml +0 -0
  1016. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/creative-ad-server/index.yaml +0 -0
  1017. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/creative-generative/generative-seller.yaml +0 -0
  1018. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/creative-generative/index.yaml +0 -0
  1019. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/creative-template/index.yaml +0 -0
  1020. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/creative-transformers/index.yaml +0 -0
  1021. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/governance-aware-seller/index.yaml +0 -0
  1022. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1023. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1024. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1025. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/governance-spend-authority/index.yaml +0 -0
  1026. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/property-lists/index.yaml +0 -0
  1027. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sales-broadcast-tv/index.yaml +0 -0
  1028. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1029. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sales-guaranteed/index.yaml +0 -0
  1030. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1031. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sales-proposal-mode/index.yaml +0 -0
  1032. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sales-social/index.yaml +0 -0
  1033. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/signal-marketplace/index.yaml +0 -0
  1034. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1035. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/signal-owned/index.yaml +0 -0
  1036. /package/compliance/cache/{3.1.24 → 3.1.30}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1037. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/acme-outdoor-live.yaml +0 -0
  1038. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/acme-outdoor.yaml +0 -0
  1039. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/billing-gate-runner.yaml +0 -0
  1040. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/bistro-oranje.yaml +0 -0
  1041. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/distributed-brand-runner.yaml +0 -0
  1042. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/nova-motors.yaml +0 -0
  1043. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/osei-natural.yaml +0 -0
  1044. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1045. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1046. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/signed-requests-runner.yaml +0 -0
  1047. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/single-side-trust-runner.yaml +0 -0
  1048. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/substitution-observer-runner.yaml +0 -0
  1049. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/summit-foods.yaml +0 -0
  1050. /package/compliance/cache/{3.1.24 → 3.1.30}/test-kits/webhook-receiver-runner.yaml +0 -0
  1051. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/catalog-macro-substitution.json +0 -0
  1052. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1053. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1054. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1055. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1056. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1057. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1058. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1059. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1060. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1061. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1062. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1063. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/README.md +0 -0
  1064. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/canonicalization.json +0 -0
  1065. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/keys.json +0 -0
  1066. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1067. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1068. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1069. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-receiver-envelope.json +0 -0
  1070. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/README.md +0 -0
  1071. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/keys.json +0 -0
  1072. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1073. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1074. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1075. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1076. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1077. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1078. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1079. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1080. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1081. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1082. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1083. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1084. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1085. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1086. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1087. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1088. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1089. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1090. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1091. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1092. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1093. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1094. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1095. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1096. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1097. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1098. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1099. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1100. /package/compliance/cache/{3.1.24 → 3.1.30}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1101. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/billing-gate-dispatch.yaml +0 -0
  1102. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/canonical-format-validate-input.yaml +0 -0
  1103. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/capability-discovery.yaml +0 -0
  1104. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1105. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/comply-controller-mode-gate.yaml +0 -0
  1106. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/content-standards-pagination-integrity.yaml +0 -0
  1107. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/deterministic-testing.yaml +0 -0
  1108. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/error-compliance-signals.yaml +0 -0
  1109. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/error-compliance.yaml +0 -0
  1110. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/fictional-entities.yaml +0 -0
  1111. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1112. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/get-products-pagination-integrity.yaml +0 -0
  1113. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/get-signals-pagination-integrity.yaml +0 -0
  1114. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/idempotency.yaml +0 -0
  1115. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/notification-config-event-scope.yaml +0 -0
  1116. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/notification-config-lifecycle.yaml +0 -0
  1117. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/notification-config-rejections.yaml +0 -0
  1118. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/pagination-integrity-creative-formats.yaml +0 -0
  1119. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1120. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/pagination-integrity.yaml +0 -0
  1121. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/property-lists-pagination-integrity.yaml +0 -0
  1122. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/runner-output-contract.yaml +0 -0
  1123. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/schema-validation-signals.yaml +0 -0
  1124. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/schema-validation.yaml +0 -0
  1125. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/security.yaml +0 -0
  1126. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/signed-requests.yaml +0 -0
  1127. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/v3-envelope-integrity.yaml +0 -0
  1128. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/version-negotiation.yaml +0 -0
  1129. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/webhook-receiver-envelope.yaml +0 -0
  1130. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1131. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1132. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/wholesale-feed-products.yaml +0 -0
  1133. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1134. /package/compliance/cache/{3.1.24 → 3.1.30}/universal/wholesale-feed-signals.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.24/trusted-match/offer-price.json",
3
+ "$id": "/schemas/3.1.30/trusted-match/offer-price.json",
4
4
  "title": "Offer Price",
5
5
  "description": "Lightweight price for a TMP offer. Used when the product supports variable pricing and the buyer specifies a price at match time.",
6
6
  "x-status": "experimental",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.24/trusted-match/offer.json",
3
+ "$id": "/schemas/3.1.30/trusted-match/offer.json",
4
4
  "title": "Offer",
5
5
  "description": "A buyer's response to a context match request. Generalizes package activation — a simple activation is an offer with just package_id. A rich response includes brand, price, summary, and optionally an inline creative manifest.",
6
6
  "x-status": "experimental",
@@ -11,15 +11,15 @@
11
11
  "description": "Package identifier from the media buy."
12
12
  },
13
13
  "seller_agent": {
14
- "$ref": "/schemas/3.1.24/core/seller-agent-ref.json",
14
+ "$ref": "/schemas/3.1.30/core/seller-agent-ref.json",
15
15
  "description": "Optional echo of the package's seller agent from sync-time metadata. Provided for publisher-side observability so log pipelines can attribute offers to sellers without round-tripping to the media-buy store. Non-authoritative: the binding on the cached AvailablePackage is source of truth. When omitted, the router MAY stamp this field from its cached package→seller map."
16
16
  },
17
17
  "brand": {
18
- "$ref": "/schemas/3.1.24/core/brand-ref.json",
18
+ "$ref": "/schemas/3.1.30/core/brand-ref.json",
19
19
  "description": "Brand for this offer. Required when the product allows dynamic brands (brand selected at match time rather than fixed on the package). For single-brand packages, the brand is already known from the media buy."
20
20
  },
21
21
  "price": {
22
- "$ref": "/schemas/3.1.24/trusted-match/offer-price.json",
22
+ "$ref": "/schemas/3.1.30/trusted-match/offer-price.json",
23
23
  "description": "Price for this offer. Only present when the product supports variable pricing. For fixed-price packages, price is already set on the media buy."
24
24
  },
25
25
  "summary": {
@@ -27,7 +27,7 @@
27
27
  "description": "Buyer-generated description of the offer, for the publisher to judge relevance. E.g., '50% off Goldenfield mayo — recipe integration'. The publisher (or their AI assistant) uses this to decide whether the offer fits the context."
28
28
  },
29
29
  "creative_manifest": {
30
- "$ref": "/schemas/3.1.24/core/creative-manifest.json",
30
+ "$ref": "/schemas/3.1.30/core/creative-manifest.json",
31
31
  "description": "Full creative details, inline. When present, the publisher has everything needed to render. Inline for small creatives (markdown, product card). For large creatives (VAST, video), the manifest references external assets via URLs."
32
32
  },
33
33
  "macros": {
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.24/trusted-match/provider-identity-match-response.json",
3
+ "$id": "/schemas/3.1.30/trusted-match/provider-identity-match-response.json",
4
4
  "title": "Identity Match Response (Provider → Router)",
5
5
  "description": "Provider-to-router shape of the Identity Match response. An identity agent returns eligibility, the per-package serve-window throttle, and — when it mints one — an ordered list of TMPX chunks. Each chunk pairs a provider-local `slot_id` (declared at registration in `tmpx_slots`) with an opaque URL-safe `value`. Publisher-local destination names (ad-server macros, GAM key-values, VAST URL macros, DOOH play-log fields) MUST NOT appear on this hop; the router keys chunks under the emitting `provider_id` and the publisher's deployment configuration resolves `(provider_id, slot_id)` to the local destination (see publisher-tmpx-config.json). Router-hop fields (`tmpx_providers`, `tmpx`) MUST NOT appear on this shape — a router receiving them from a provider MUST reject the response. Envelope extension fields (`context`, `ext`) are intentionally omitted to prevent data leakage across the identity privacy boundary; they are forbidden by this schema.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
9
- "$ref": "/schemas/3.1.24/core/version-envelope.json"
9
+ "$ref": "/schemas/3.1.30/core/version-envelope.json"
10
10
  },
11
11
  {
12
- "$ref": "/schemas/3.1.24/core/protocol-envelope.json"
12
+ "$ref": "/schemas/3.1.30/core/protocol-envelope.json"
13
13
  }
14
14
  ],
15
15
  "x-status": "experimental",
@@ -40,7 +40,7 @@
40
40
  "type": "array",
41
41
  "description": "Ordered TMPX chunk/value pairs this identity agent mints. Each entry names the provider-local `slot_id` the value fills (from the provider's registered `tmpx_slots` in provider-registration.json). Ordered-prefix invariant: a response that carries fewer chunks than the provider registered MUST emit an ordered prefix of the registered `tmpx_slots` — routers MUST NOT reorder or fill gaps. The router MUST validate this contract before forwarding: if the provider has no `tmpx_slots` registration, or if the chunk `slot_id` sequence is not an exact non-empty ordered prefix of the registered list (duplicate, reordered, sparse, or unregistered slot IDs), the router MUST drop that provider's chunks atomically and MUST NOT forward them into `tmpx_providers`. Cap of 2 chunks in v1 aligned with the GAM macro-slot budget; the cap MAY rise without a shape change. Omitted when this provider mints no TMPX (e.g. no eligible packages).",
42
42
  "items": {
43
- "$ref": "/schemas/3.1.24/trusted-match/tmpx-chunk.json"
43
+ "$ref": "/schemas/3.1.30/trusted-match/tmpx-chunk.json"
44
44
  },
45
45
  "minItems": 1,
46
46
  "maxItems": 2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.24/trusted-match/provider-registration.json",
3
+ "$id": "/schemas/3.1.30/trusted-match/provider-registration.json",
4
4
  "title": "TMP Provider Registration",
5
5
  "description": "Declares a TMP provider's endpoint, capabilities, and operational parameters. Used in router configuration (static YAML or dynamic API) and referenced by product-level provider entries. The publisher controls which providers participate in their ad decisioning. Endpoint URLs MUST be validated against SSRF, and dynamic registration endpoints MUST authenticate callers — see docs/trusted-match/specification#provider-registration-security.",
6
6
  "x-status": "experimental",
@@ -39,7 +39,7 @@
39
39
  "type": "array",
40
40
  "description": "Identity types this provider can resolve. The router selects Identity Match providers whose uid_types overlaps with any uid_type in the request's identities array. MUST be present and non-empty when identity_match is true.",
41
41
  "items": {
42
- "$ref": "/schemas/3.1.24/enums/uid-type.json"
42
+ "$ref": "/schemas/3.1.30/enums/uid-type.json"
43
43
  },
44
44
  "minItems": 1
45
45
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.24/trusted-match/publisher-tmpx-config.json",
3
+ "$id": "/schemas/3.1.30/trusted-match/publisher-tmpx-config.json",
4
4
  "title": "Publisher TMPX Macro Mapping",
5
5
  "description": "Publisher-owned deployment configuration that maps each identity provider's TMPX slots to the ad-server macro names (or targeting keys, VAST substitutions, DOOH play-log fields) the publisher wants those chunks fired into on this surface. Mapping is authored by the publisher — the same operator who trafficks the corresponding ad-server line items — and never travels on the wire between identity provider and router. This keeps macro naming a deployment concern rather than a protocol identifier: providers emit chunks as `{slot_id, value}` pairs (see provider-identity-match-response.json), the router preserves ordering and slot IDs under the emitting `provider_id` (see identity-match-response.json), and this configuration resolves each `(provider_id, slot_id)` to a local destination on the way to the ad server. A publisher may map the same provider to different destinations across surfaces (GAM key-values vs. VAST macros vs. DOOH play-log fields) by carrying one instance of this configuration per surface.",
6
6
  "x-status": "experimental",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.24/trusted-match/tmpx-chunk.json",
3
+ "$id": "/schemas/3.1.30/trusted-match/tmpx-chunk.json",
4
4
  "title": "TMPX Chunk",
5
5
  "description": "A single provider TMPX chunk — the provider-local `slot_id` (declared at registration in `tmpx_slots`) and its opaque URL-safe `value`. Same shape on both hops of the Identity Match response: providers emit `tmpx_chunks[]` on the provider→router shape, the router forwards them under `tmpx_providers[provider_id].chunks[]` on the router→publisher shape. Publisher-local destination names never appear here — the publisher's deployment configuration resolves `(provider_id, slot_id)` → local destination via publisher-tmpx-config.json.",
6
6
  "x-status": "experimental",
@@ -4,5 +4,5 @@
4
4
  "source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
5
5
  "source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
6
6
  "upstream_adcp_version": "2.5.3",
7
- "synced_at": "2026-09-30T05:52:07.530Z"
7
+ "synced_at": "2026-10-28T20:49:23.162Z"
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.24/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.30/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.24/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.30/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/lib/server/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/lib/server/serve.ts"],"names":[],"mappings":"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"}
@@ -354,6 +354,8 @@ function serve(createAgent, options) {
354
354
  res.end("Not found");
355
355
  }
356
356
  });
357
+ httpServer.keepAliveTimeout = 6e4;
358
+ httpServer.headersTimeout = 65e3;
357
359
  const doListen = () => {
358
360
  httpServer.listen(port, () => {
359
361
  const actualPort = httpServer.address().port;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/server/serve.ts"],"sourcesContent":["/**\n * One-liner HTTP server for AdCP MCP agents.\n *\n * Wraps the StreamableHTTPServerTransport + http.createServer boilerplate\n * so agent builders can focus on business logic.\n *\n * @example\n * ```typescript\n * import { createTaskCapableServer, serve } from '@adcp/sdk';\n *\n * function createAgent({ taskStore }) {\n * const server = createTaskCapableServer('My Agent', '1.0.0', { taskStore });\n * server.registerTool('get_signals', { description: 'Discover audiences.', inputSchema: schema }, handler);\n * return server;\n * }\n *\n * serve(createAgent); // listening on http://localhost:3001/mcp\n * ```\n */\n\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { PARSE_ERROR, isJsonContentType } from '@modelcontextprotocol/server';\nimport { hostHeaderValidation, originValidation } from '@modelcontextprotocol/node';\nimport { createServer, type IncomingMessage, type Server as HttpServer } from 'http';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { TaskStore } from '@modelcontextprotocol/sdk/experimental/tasks/interfaces.js';\nimport { InMemoryTaskStore } from '@modelcontextprotocol/sdk/experimental/tasks/stores/in-memory.js';\nimport type { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\nimport type { AuthPrincipal, Authenticator, ServeRequestContext } from './auth';\nimport {\n ADCP_SERVE_REQUEST_CONTEXT,\n AuthError,\n authenticatorNeedsRawBody,\n respondUnauthorized,\n signatureErrorCodeFromCause,\n} from './auth';\nimport { ADCP_PRE_TRANSPORT, ADCP_INSTRUCTIONS_FN, type AdcpPreTransport } from './create-adcp-server';\nimport { isAdcpServer, type AdcpServer } from './adcp-server';\nimport { createModernMcpServerAdapter } from './mcp-modern-server';\n\n/**\n * Context passed to the agent factory on each request.\n *\n * Contains shared resources that must survive across stateless HTTP requests,\n * such as the task store for MCP Tasks protocol support.\n *\n * For multi-tenant / multi-host deployments, provide a custom `TaskStore` via\n * `ServeOptions` that enforces tenant/session scoping, and branch on\n * {@link host} inside your factory to return host-specific handlers.\n */\nexport interface ServeContext {\n /** Shared task store — use this when creating your McpServer so tasks persist across requests. */\n taskStore: TaskStore;\n /**\n * Canonical host the request arrived on, lowercased with port preserved\n * (e.g. `snap.example.com`, `localhost:3001`). Resolved from\n * `X-Forwarded-Host` when `ServeOptions.trustForwardedHost` is true,\n * otherwise from the `Host` header. Empty string when neither header\n * is present (unusual — HTTP/1.1 requires `Host`).\n *\n * Use this in the factory to branch on hostname when a single process\n * fronts multiple agents. The same string is passed to\n * `publicUrl` / `protectedResource` resolver functions.\n */\n host: string;\n}\n\n/**\n * Thrown from an agent factory (or a `publicUrl` / `protectedResource`\n * resolver) when the incoming request's host isn't configured. `serve()`\n * catches it and responds 404 with a generic body — the adapter routing\n * table never crosses the wire. Any other thrown error still surfaces\n * as 500 so unrelated bugs stay loud.\n */\nexport class UnknownHostError extends Error {\n constructor(message = 'Unknown host') {\n super(message);\n this.name = 'UnknownHostError';\n }\n}\n\n/**\n * OAuth 2.0 Protected Resource Metadata (RFC 9728) advertised at\n * `/.well-known/oauth-protected-resource<mountPath>`.\n *\n * The `resource` URL itself is taken from `ServeOptions.publicUrl` — set\n * that to the canonical MCP endpoint (e.g. `https://my-agent.example.com/mcp`)\n * so clients request tokens bound to the right RFC 8707 audience.\n */\nexport interface ProtectedResourceMetadata {\n /** URLs of authorization servers that issue tokens for this resource. */\n authorization_servers: string[];\n /** Scopes this resource accepts. Optional. */\n scopes_supported?: string[];\n /** Bearer token methods supported. Defaults to `['header']`. */\n bearer_methods_supported?: Array<'header' | 'body' | 'query'>;\n /** Human-readable resource docs URL. Optional. */\n resource_documentation?: string;\n /** Per-resource policy URL. Optional. */\n resource_policy_uri?: string;\n /** Per-resource ToS URL. Optional. */\n resource_tos_uri?: string;\n}\n\nexport interface ServeOptions {\n /** Port to listen on. Defaults to PORT env var or 3001. */\n port?: number;\n /** HTTP path to mount the MCP endpoint on. Defaults to '/mcp'. */\n path?: string;\n /**\n * Hostnames allowed on framework-owned AdCP server requests, without ports.\n * The guard runs before protocol-era classification, so it protects both\n * legacy and MCP 2026-07-28 traffic. Defaults to the hostname from\n * `publicUrl`, or localhost-only when no public URL is set. Public and\n * reverse-proxied deployments must configure `publicUrl` or this allowlist;\n * include the upstream Host too when a proxy rewrites it.\n */\n allowedHosts?: string[];\n /**\n * Origin hostnames allowed on browser-originated framework AdCP requests,\n * across both protocol eras. Requests without Origin pass. Defaults to\n * {@link allowedHosts}.\n */\n allowedOrigins?: string[];\n /**\n * Maximum buffered MCP request body size used for era classification.\n * Defaults to 2 MiB. Set explicitly when an AdCP extension legitimately\n * carries larger JSON payloads.\n */\n maxRequestBytes?: number;\n /** Called when the server starts listening. */\n onListening?: (url: string) => void;\n /**\n * Async check called before the server begins accepting connections.\n * Throw to abort boot — `serve()` logs the error and calls `process.exit(1)`,\n * so the server never enters listen mode and no traffic arrives during the\n * check. Use to validate external dependencies (database pools, credential\n * fetches) so a misconfigured deployment fails loudly at startup rather than\n * silently on the first live request.\n *\n * @example\n * ```ts\n * serve(createAgent, {\n * readinessCheck: () => store.probe(),\n * });\n * ```\n */\n readinessCheck?: () => Promise<void>;\n /**\n * Custom task store. Defaults to a shared InMemoryTaskStore.\n *\n * The default InMemoryTaskStore only evicts tasks that have a TTL set.\n * For long-running servers, always set `ttl` when creating tasks, or\n * provide a store with automatic eviction to prevent unbounded memory growth.\n */\n taskStore?: TaskStore;\n\n /**\n * Canonical public URL of this MCP endpoint (e.g. `https://my-agent.example.com/mcp`).\n * Required when `protectedResource` is configured — the RFC 9728 `resource`\n * field, the RFC 6750 `resource_metadata` URL on 401 challenges, and the\n * JWT audience your tokens must carry are all derived from it. Setting this\n * defends against attacker-controlled `Host` header phishing: without it,\n * the server would advertise whatever host a caller happened to send.\n *\n * Must be an absolute https:// URL whose path matches the mount path.\n *\n * **Multi-host.** Pass a function `(host) => string` when one process\n * fronts multiple hostnames (white-label publishers, multi-brand\n * adapters). The resolver runs per unique host — the returned URL is\n * cached and used as the RFC 9728 `resource`, the 401-challenge\n * `resource_metadata`, and the JWT audience for that host. Each\n * resolved URL's path must match the mount path, same as the static\n * form. Setting {@link trustForwardedHost} is recommended when\n * behind a proxy.\n */\n publicUrl?: string | ((host: string) => string);\n\n /**\n * Authentication middleware applied to every request. When configured,\n * missing or invalid credentials produce a 401 with a compliant\n * `WWW-Authenticate` header — no request reaches the MCP transport\n * without passing. Use helpers from `./auth`: `verifyApiKey`,\n * `verifyBearer`, or `anyOf(verifyApiKey(...), verifyBearer(...))`.\n */\n authenticate?: Authenticator;\n\n /**\n * Advertise OAuth 2.0 protected-resource metadata at\n * `/.well-known/oauth-protected-resource<mountPath>`. Requires {@link publicUrl}.\n *\n * Pass a function `(host) => ProtectedResourceMetadata` for multi-host\n * deployments whose authorization servers or supported scopes vary per\n * hostname (e.g., each white-label seller has its own AS). The resolver\n * runs once per unique host and the result is cached. The static form\n * still works when every host uses the same PRM body.\n */\n protectedResource?: ProtectedResourceMetadata | ((host: string) => ProtectedResourceMetadata);\n\n /**\n * Reuse the agent returned by the factory across requests instead of\n * closing it after each. Default `false` (one fresh server per\n * request — the pre-existing behavior).\n *\n * When `true`, `serve()` DOES NOT call `agentServer.close()` between\n * requests. The factory is still called on every request; it's the\n * caller's responsibility to cache `AdcpServer` instances (typically\n * keyed on `ctx.host`) and return the cached instance when possible.\n * Concurrent requests to the same cached server are serialized per\n * instance — `McpServer.connect()` rejects when a transport is\n * already attached, so the framework wraps the\n * connect→handleRequest→release cycle in a per-instance async\n * mutex. Requests for DIFFERENT cached servers still run in parallel.\n *\n * Use when `createAdcpServer(...)` setup cost (tool registration,\n * handler wiring) is a measurable portion of request latency — common\n * in multi-host deployments with many tools per host. Trade-off:\n * throughput per unique host drops to 1 in flight at a time. For\n * higher concurrency per host, cache a small pool of servers in the\n * factory and round-robin.\n *\n * Cleanup is the caller's responsibility: listen for the process\n * shutdown signal and call `close()` on every cached server to\n * release MCP Tasks timers, HTTP keepalives, etc.\n *\n * **Incompatible with long-lived server→client streams.** MCP's\n * `Protocol._onclose` aborts in-flight handlers and clears progress\n * tokens when the transport closes. In stateless HTTP mode (the\n * default this helper uses) each request is already single-response,\n * so this is a no-op concern. Don't enable `reuseAgent` if you\n * eventually wire a transport that keeps an SSE channel open across\n * multiple logical requests.\n */\n reuseAgent?: boolean;\n\n /**\n * Trust `X-Forwarded-Host` and RFC 7239 `Forwarded: host=...` for\n * host resolution and for reconstructing the public URL on 401\n * challenges. Default `false` — an attacker-controlled header can't\n * flip the advertised OAuth `resource` URL unless you opt in.\n *\n * **Your proxy must OVERWRITE the forwarded headers on ingress, not\n * append.** The framework trusts the first (left-most) entry in a\n * chain. With an overwriting proxy that's the sanitized value; with\n * an appending proxy it's whatever the client sent — an attacker\n * picks it. Common behavior:\n *\n * - Overwrite (safe to trust): Fly.io, Cloud Run, GCP HTTPS LB.\n * - Append (NOT safe without extra config): AWS ALB default, nginx\n * default. These need `proxy_set_header X-Forwarded-Host $host;`\n * or equivalent before enabling this flag.\n *\n * Verify your proxy's behavior against a request that already has\n * `X-Forwarded-Host: attacker.example` in it before turning this on.\n */\n trustForwardedHost?: boolean;\n\n /**\n * Pre-MCP middleware — runs after authentication but before MCP transport\n * is connected. Intended for transport-layer concerns like RFC 9421\n * request-signature verification: the agent's body is already buffered\n * into `(req as any).rawBody` before the middleware fires so signature\n * verifiers can hash it without racing the transport's own body read.\n *\n * Return `true` to signal the middleware handled the response (e.g. a\n * 401 with `WWW-Authenticate`); the transport is skipped. Return `false`\n * to continue into MCP dispatch.\n *\n * Throwing from the middleware produces a 500 with a generic body.\n */\n preTransport?: (\n req: import('http').IncomingMessage & { rawBody?: string },\n res: import('http').ServerResponse\n ) => Promise<boolean>;\n}\n\n/**\n * Start an HTTP server that serves an AdCP MCP agent.\n *\n * Creates a new MCP server instance per request (stateless), wires up the\n * StreamableHTTPServerTransport, and returns the underlying http.Server\n * for lifecycle control.\n *\n * A shared task store is created once and passed to the factory on every\n * request via `ServeContext`. This ensures MCP Tasks (create → poll → result)\n * work correctly across stateless HTTP requests.\n *\n * **Multi-host.** Pass functions for `publicUrl` and `protectedResource` and\n * branch on `ctx.host` in the factory to front multiple hostnames from one\n * process. The framework resolves host from `X-Forwarded-Host` (when\n * `trustForwardedHost: true`) or `Host`, threads it through `ServeContext`,\n * and caches per-host `publicUrl`/PRM so each hostname advertises its own\n * audience-bound `resource`.\n *\n * @param createAgent - Factory function that returns a configured server —\n * either an `AdcpServer` from `createAdcpServer()` or a raw SDK `McpServer`\n * from `createTaskCapableServer()`. Called once per request so each gets a\n * fresh instance (a server can only be connected once). Receives a\n * `ServeContext` with a shared `taskStore` and the resolved `host` —\n * branch on `host` to return host-specific handlers in multi-host mode.\n * Framework `AdcpServer` instances serve both MCP 2026-07-28 and legacy\n * clients. Raw v1 SDK `McpServer` instances remain legacy-only so resources,\n * prompts, Tasks, and custom transport extras are never silently dropped.\n * @param options - Port, path, and callback configuration.\n * @returns The http.Server instance. Use the `onListening` callback or\n * listen for the 'listening' event to know when it's ready.\n */\nexport function serve(createAgent: (ctx: ServeContext) => AdcpServer | McpServer, options?: ServeOptions): HttpServer {\n const envPort = process.env.PORT ? parseInt(process.env.PORT, 10) : undefined;\n if (envPort !== undefined && (Number.isNaN(envPort) || envPort < 0 || envPort > 65535)) {\n throw new Error(`Invalid PORT environment variable: \"${process.env.PORT}\"`);\n }\n const port = options?.port ?? envPort ?? 3001;\n const mountPath = options?.path ?? '/mcp';\n const taskStore = options?.taskStore ?? new InMemoryTaskStore();\n const trustForwardedHost = options?.trustForwardedHost === true;\n const reuseAgent = options?.reuseAgent === true;\n const maxRequestBytes = options?.maxRequestBytes ?? 2 * 1024 * 1024;\n if (!Number.isSafeInteger(maxRequestBytes) || maxRequestBytes <= 0) {\n throw new Error('serve(): `maxRequestBytes` must be a positive safe integer');\n }\n\n // Per-instance mutex chain for `reuseAgent: true`. The MCP SDK's\n // `Protocol.connect()` hard-throws when a transport is already\n // attached (node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:215),\n // so concurrent requests that land on the same cached server would\n // race without this. WeakMap so agents GC normally when the caller\n // drops references. Only used when `reuseAgent` is true — the\n // default path still creates a fresh server per request and doesn't\n // share any state across calls.\n const reuseMutexes = new WeakMap<AdcpServer | McpServer, Promise<unknown>>();\n\n if (options?.protectedResource && !options.publicUrl) {\n throw new Error(\n 'serve(): `protectedResource` requires `publicUrl` (the canonical https:// URL clients use for this MCP endpoint). ' +\n 'Without it, the server would advertise an attacker-controlled Host header as the OAuth resource URL.'\n );\n }\n\n const publicUrlOption = options?.publicUrl;\n const protectedResourceOption = options?.protectedResource;\n const publicUrlIsFn = typeof publicUrlOption === 'function';\n const prmIsFn = typeof protectedResourceOption === 'function';\n\n // Static publicUrl — validate once at construction. Function form validates\n // lazily per host so a stale factory for one host can't prevent boot.\n let staticPublicOrigin: string | undefined;\n if (typeof publicUrlOption === 'string') {\n staticPublicOrigin = validatePublicUrl(publicUrlOption, mountPath);\n }\n\n // Per-host caches. Function-form options are pure host → value lookups,\n // so memoization is safe and avoids the per-request allocation of\n // `new URL(...)` plus the caller's own host → config table work.\n const publicUrlCache = new Map<string, string>();\n const publicOriginCache = new Map<string, string>();\n const prmCache = new Map<string, ProtectedResourceMetadata>();\n\n const resolvePublicUrl = (host: string): string | undefined => {\n if (typeof publicUrlOption === 'string') return publicUrlOption;\n if (!publicUrlIsFn) return undefined;\n let cached = publicUrlCache.get(host);\n if (cached !== undefined) return cached;\n cached = (publicUrlOption as (h: string) => string)(host);\n const origin = validatePublicUrl(cached, mountPath);\n publicUrlCache.set(host, cached);\n publicOriginCache.set(host, origin);\n return cached;\n };\n\n const resolvePublicOrigin = (host: string): string | undefined => {\n if (typeof publicUrlOption === 'string') return staticPublicOrigin;\n // Populate via resolvePublicUrl so both caches share a single validation pass.\n if (resolvePublicUrl(host) == null) return undefined;\n return publicOriginCache.get(host);\n };\n\n const resolveProtectedResource = (host: string): ProtectedResourceMetadata | undefined => {\n if (!protectedResourceOption) return undefined;\n if (!prmIsFn) return protectedResourceOption as ProtectedResourceMetadata;\n let cached = prmCache.get(host);\n if (cached !== undefined) return cached;\n cached = (protectedResourceOption as (h: string) => ProtectedResourceMetadata)(host);\n prmCache.set(host, cached);\n return cached;\n };\n\n if (options?.authenticate == null && process.env.NODE_ENV === 'production') {\n console.warn(\n '[adcp/serve] No `authenticate` configured — this agent will accept unauthenticated requests. ' +\n 'AdCP security_baseline requires authentication in production.'\n );\n }\n\n const explicitPreTransport = options?.preTransport as AdcpPreTransport | undefined;\n\n const protectedResourcePath = `/.well-known/oauth-protected-resource${mountPath}`;\n\n const httpServer = createServer(async (req, res) => {\n const { pathname } = new URL(req.url || '', 'http://localhost');\n const host = resolveHost(req, { trustForwardedHost });\n\n // RFC 9728 protected-resource metadata — intentionally auth-free so\n // clients can discover the authorization server before they have a token.\n if (protectedResourceOption && pathname === protectedResourcePath) {\n let resource: string | undefined;\n let prm: ProtectedResourceMetadata | undefined;\n try {\n resource = resolvePublicUrl(host);\n prm = resolveProtectedResource(host);\n } catch (err) {\n if (err instanceof UnknownHostError) {\n // Operator signalled \"this host isn't in my routing table.\" 404\n // lets the OAuth grader probe fall through cleanly and doesn't\n // leak the configured host set across the wire.\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n console.error('[adcp/serve] publicUrl/protectedResource resolver failed:', err);\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Protected-resource metadata unavailable for this host.' }));\n return;\n }\n if (!resource || !prm) {\n // Fail closed: advertising a garbage resource URL would mint\n // audience-mismatched tokens across the fleet. 404 signals \"this\n // host doesn't publish PRM\" — the operator sees it and either\n // wires the host up or takes it out of DNS.\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n const body = {\n resource,\n ...prm,\n bearer_methods_supported: prm.bearer_methods_supported ?? ['header'],\n };\n res.writeHead(200, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify(body));\n return;\n }\n\n if (pathname === mountPath || pathname === `${mountPath}/`) {\n // Resolve per-request `resource_metadata` URL for 401 challenges and\n // the per-host `publicUrl` authenticators read via\n // {@link getServeRequestContext}. Resolving both up front means\n // the audience callback in `verifyBearer` can never diverge from\n // what the framework advertises in `/.well-known/...`. For static\n // PRM this is the same string every request (pre-multi-host\n // behavior); for function-form PRM/URL it follows the host.\n let resourceMetadataUrl: string | undefined;\n let resolvedPublicUrl: string | undefined;\n try {\n resolvedPublicUrl = resolvePublicUrl(host);\n } catch (err) {\n if (err instanceof UnknownHostError) {\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n console.error('[adcp/serve] publicUrl resolver failed:', err);\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Protected-resource metadata unavailable for this host.' }));\n return;\n }\n if (protectedResourceOption) {\n const hostOrigin = resolvePublicOrigin(host);\n if (hostOrigin) resourceMetadataUrl = `${hostOrigin}${protectedResourcePath}`;\n }\n\n // Stamp the serve-resolved context on the request so authenticator\n // callbacks (e.g. `verifyBearer`'s audience resolver) inherit the\n // framework's host resolution — they MUST NOT re-derive host from\n // raw headers, since that would diverge from what PRM advertises\n // and let a spoofed `X-Forwarded-Host` flip the JWT audience check\n // when `trustForwardedHost` is false.\n const serveRequestContext: ServeRequestContext = resolvedPublicUrl\n ? { host, publicUrl: resolvedPublicUrl }\n : { host };\n (req as IncomingMessage & { [ADCP_SERVE_REQUEST_CONTEXT]?: ServeRequestContext })[ADCP_SERVE_REQUEST_CONTEXT] =\n serveRequestContext;\n\n // Body buffering happens at most once per request. An idempotent helper\n // lets the auth path (for signature authenticators) and the preTransport\n // path share the buffer without re-reading a drained stream.\n let rawBody: string | undefined;\n let parsedBody: unknown;\n let bodyParseFailed = false;\n const ensureRawBody = async (): Promise<void> => {\n if (rawBody !== undefined) return;\n rawBody = await bufferBody(req, maxRequestBytes);\n (req as { rawBody?: string }).rawBody = rawBody;\n if (rawBody.length > 0) {\n try {\n parsedBody = JSON.parse(rawBody);\n } catch {\n bodyParseFailed = true;\n }\n }\n };\n\n // RFC 9421 signature authenticators need `req.rawBody` for Content-Digest\n // recompute, so buffer before authentication runs when the authenticator\n // (or any branch of an anyOf composition) carries the needs-raw-body tag.\n if (authenticatorNeedsRawBody(options?.authenticate)) {\n try {\n await ensureRawBody();\n } catch (err) {\n // `bufferBody` has already called `req.destroy()` on the\n // oversize path; additional teardown here would race the\n // response write. Write the status and return.\n const errName = (err as Error).name || 'Error';\n console.error(`[adcp/serve] request body read failed before auth: ${errName}`);\n if (!res.headersSent) {\n res.writeHead(400, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Request body read failed.' }));\n }\n return;\n }\n }\n\n // Enforce authentication before transport work.\n if (options?.authenticate) {\n let principal: AuthPrincipal | null;\n try {\n principal = await options.authenticate(req);\n } catch (err) {\n // Surface only sanitized messages to the client; log internal cause server-side.\n const publicMessage = err instanceof AuthError ? err.publicMessage : 'Credentials rejected.';\n console.error('[adcp/auth] rejected:', err);\n // Switch challenge scheme to `Signature` when the rejection\n // originates in the RFC 9421 verifier — the signed_requests\n // negative-vector grader reads the error code from the\n // `WWW-Authenticate` header, so collapsing it into the generic\n // `Bearer error=\"invalid_token\"` challenge would surface the\n // wrong code and fail every negative vector.\n const signatureCode = signatureErrorCodeFromCause(err);\n if (signatureCode) {\n respondUnauthorized(req, res, {\n signatureError: signatureCode,\n errorDescription: publicMessage,\n resourceMetadata: resourceMetadataUrl,\n });\n return;\n }\n respondUnauthorized(req, res, {\n error: 'invalid_token',\n errorDescription: publicMessage,\n resourceMetadata: resourceMetadataUrl,\n });\n return;\n }\n if (!principal) {\n respondUnauthorized(req, res, {\n error: 'invalid_token',\n errorDescription: 'Missing or unrecognized credentials.',\n resourceMetadata: resourceMetadataUrl,\n });\n return;\n }\n // Propagate to MCP transport so tool handlers see `extra.authInfo`.\n attachAuthInfo(req, principal);\n }\n\n // Create the agent first so we can inspect it for an auto-wired\n // preTransport attached by `createAdcpServer({ signedRequests })`. An\n // explicit `options.preTransport` wins — it lets callers override the\n // default wiring (e.g., to add request logging or swap verifier\n // implementations).\n let agentServer: AdcpServer | McpServer;\n try {\n agentServer = createAgent({ taskStore, host });\n } catch (err) {\n if (err instanceof UnknownHostError) {\n // Factory signalled \"this host isn't routable.\" 404 keeps the\n // adapter table off the wire while giving ops a clean failure\n // mode instead of the generic-500 confusion.\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n // Unexpected factory failure — surface as 500 to the client and\n // log server-side. Rethrowing would bubble to the createServer\n // handler as an unhandled rejection (async callback), which\n // could crash a node process with `--unhandled-rejections=strict`.\n console.error('[adcp/serve] factory threw:', err);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n }\n return;\n }\n // Refuse `reuseAgent: true` + function-form `instructions`. The function\n // is captured at server construction and would not re-evaluate per\n // session under server reuse — silently degrading to \"instructions are\n // a constant after all\" is worse than failing loud at the first request.\n // Adopters fix this by removing `reuseAgent: true` (default factory\n // creates a fresh agent per request, which is what the function needs)\n // OR by passing a static string for `instructions`.\n //\n // The check fires when `reuseAgent: true` was declared, regardless of\n // whether the adopter's factory actually caches. The flag is the\n // adopter's stated intent to reuse; we can't introspect cache behavior.\n if (reuseAgent && (agentServer as unknown as Record<symbol, unknown>)[ADCP_INSTRUCTIONS_FN] === true) {\n const hint =\n 'Drop `reuseAgent: true` (a fresh agent per request fires the function each session) OR pass a static string for `instructions`.';\n console.error(\n '[adcp/serve] refusing reuseAgent: true with function-form instructions. ' +\n 'The function fires once per agent instance lifetime (at MCP initialize) and would not re-evaluate on subsequent sessions under server reuse. ' +\n hint\n );\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n error: 'serve(): reuseAgent is incompatible with function-form instructions',\n hint,\n })\n );\n }\n return;\n }\n const attached = (agentServer as unknown as Record<symbol, unknown>)[ADCP_PRE_TRANSPORT];\n const autoWiredPreTransport = typeof attached === 'function' ? (attached as AdcpPreTransport) : undefined;\n const activePreTransport = explicitPreTransport ?? autoWiredPreTransport;\n\n if (activePreTransport) {\n try {\n await ensureRawBody();\n const handled = await activePreTransport(req as import('http').IncomingMessage & { rawBody?: string }, res);\n if (handled) {\n // PreTransport already responded (401, etc.). Close the agent\n // before returning so the McpServer doesn't leak.\n await agentServer.close();\n return;\n }\n } catch (err) {\n // Narrow to name+code — transport errors can embed remote URLs.\n const errName = (err as Error).name || 'Error';\n const errCode = (err as { code?: string }).code ?? 'unknown';\n console.error(`preTransport middleware error: ${errName} (${errCode})`);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n }\n await agentServer.close();\n return;\n }\n }\n\n // In reuseAgent mode, serialize connect→handle→close per server\n // instance. `McpServer.connect()` rejects when a transport is\n // already attached (protocol.js:215), so concurrent requests on a\n // cached server would race without this chain. Requests on\n // DIFFERENT servers (different WeakMap keys) proceed in parallel.\n // Outside reuseAgent mode the factory returns a fresh server per\n // request — no shared instance, no lock needed.\n const runTransportCycle = async (): Promise<void> => {\n let modernAdapter: ReturnType<typeof createModernMcpServerAdapter> | undefined;\n try {\n // The official v2 classifier and Node adapter both need the parsed\n // body after auth/signing middleware may have drained the stream.\n // Buffer once, then pass the same parsed value to whichever era owns\n // the request. Malformed JSON and unsupported media types fail before\n // either protocol era receives a drained request stream.\n await ensureRawBody();\n\n if (req.method?.toUpperCase() === 'POST' && !isJsonContentType(req.headers['content-type'])) {\n res.writeHead(415, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32000, message: 'Unsupported Media Type: Content-Type must be application/json' },\n id: null,\n })\n );\n return;\n }\n\n if (req.method?.toUpperCase() === 'POST' && (bodyParseFailed || rawBody?.length === 0)) {\n res.writeHead(400, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: PARSE_ERROR, message: 'Parse error: request body is not valid JSON' },\n id: null,\n })\n );\n return;\n }\n\n // Raw v1 SDK McpServer instances retain their complete legacy\n // surface (resources, prompts, custom handlers, Tasks extras).\n // Only the framework-owned AdcpServer can be mirrored losslessly\n // onto the 2026-07-28 tool transport.\n const frameworkAgent = isAdcpServer(agentServer) ? agentServer : undefined;\n if (frameworkAgent) {\n const defaultAllowedHosts = resolvedPublicUrl\n ? [new URL(resolvedPublicUrl).hostname]\n : ['localhost', '127.0.0.1', '[::1]'];\n const allowedHosts = options?.allowedHosts ?? defaultAllowedHosts;\n const allowedOrigins = options?.allowedOrigins ?? allowedHosts;\n if (!hostHeaderValidation(allowedHosts)(req, res)) return;\n if (!originValidation(allowedOrigins)(req, res)) return;\n }\n\n let legacyRequest = true;\n if (frameworkAgent) {\n modernAdapter = createModernMcpServerAdapter(frameworkAgent);\n legacyRequest = await modernAdapter.isLegacyRequest(req, parsedBody);\n }\n\n if (legacyRequest) {\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n });\n await agentServer.connect(transport);\n // The stream was consumed for era classification, so always pass\n // the parsed body when one was available.\n if (parsedBody !== undefined) {\n await transport.handleRequest(req, res, parsedBody);\n } else {\n await transport.handleRequest(req, res);\n }\n } else {\n await modernAdapter!.handle(req, res, parsedBody);\n }\n } catch (err) {\n console.error('Server error:', err);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n }\n } finally {\n await modernAdapter?.close();\n // close() here releases the transport AND (in reuseAgent mode)\n // resets `_transport = undefined` on the cached server so the\n // next queued request can connect. The server's tools,\n // handlers, and idempotency wiring survive — close() clears\n // the transport, not the registration.\n await agentServer.close();\n }\n };\n\n if (reuseAgent) {\n const prev = reuseMutexes.get(agentServer) ?? Promise.resolve();\n // `.then(runTransportCycle, runTransportCycle)` runs the cycle on\n // EITHER prior outcome — we only care about sequencing, not the\n // prior request's result. A plain `.then(runTransportCycle)`\n // would skip this request when the prior rejected, leaving it\n // stuck behind a poison-pill promise forever.\n const current = prev.then(runTransportCycle, runTransportCycle);\n // Swallow errors on the copy stored for sequencing so one\n // rejection doesn't poison every subsequent request for this\n // server instance. `current` itself is still awaited below and\n // surfaces errors to THIS request.\n reuseMutexes.set(\n agentServer,\n current.catch(() => {})\n );\n await current;\n } else {\n await runTransportCycle();\n }\n } else {\n res.writeHead(404);\n res.end('Not found');\n }\n });\n\n const doListen = () => {\n httpServer.listen(port, () => {\n const actualPort = (httpServer.address() as { port: number }).port;\n const url = `http://localhost:${actualPort}${mountPath}`;\n if (options?.onListening) {\n options.onListening(url);\n } else {\n console.log(`AdCP agent running at ${url}`);\n console.log(`\\nTest with:\\n npx @adcp/sdk@latest ${url}`);\n }\n });\n };\n\n if (options?.readinessCheck) {\n options\n .readinessCheck()\n .then(doListen)\n .catch((err: unknown) => {\n const message = err instanceof Error ? err.message : String(err);\n console.error('[adcp/serve] readinessCheck failed — aborting boot:', message);\n process.exit(1);\n });\n } else {\n doListen();\n }\n\n return httpServer;\n}\n\nfunction trimTrailingSlashes(s: string): string {\n let end = s.length;\n while (end > 0 && s.charCodeAt(end - 1) === 47 /* '/' */) end--;\n return s.slice(0, end);\n}\n\n/**\n * Parse and validate a `publicUrl`, returning its origin. Shared by the\n * static-string path (validated once at `serve()` construction) and the\n * function path (validated lazily per unique host). A bad value from the\n * function form throws on the first request for that host, after PRM\n * resolution has already decided to fetch; the error is caught at the\n * call site and surfaced as a 500 so the operator sees the misconfigured\n * host instead of a silent audience-mismatch on minted tokens.\n */\nfunction validatePublicUrl(publicUrl: string, mountPath: string): string {\n let parsed: URL;\n try {\n parsed = new URL(publicUrl);\n } catch {\n throw new Error(`serve(): \\`publicUrl\\` is not a valid URL: ${publicUrl}`);\n }\n if (trimTrailingSlashes(parsed.pathname) !== trimTrailingSlashes(mountPath)) {\n throw new Error(\n `serve(): \\`publicUrl\\` path (${parsed.pathname}) must match mount path (${mountPath}). ` +\n 'The public URL is the full MCP endpoint URL, including the path.'\n );\n }\n return parsed.origin;\n}\n\n/**\n * Strip the port from a `host` string (`\"snap.example.com:3001\"` →\n * `\"snap.example.com\"`). Use inside `publicUrl` / `protectedResource`\n * resolvers to build scheme://host URLs without carrying the test-time\n * port into production URLs. IPv6 brackets preserved.\n */\nexport function hostname(host: string): string {\n if (host.startsWith('[')) {\n // IPv6 — preserve brackets, drop port after the closing bracket.\n const end = host.indexOf(']');\n if (end === -1) return host;\n return host.slice(0, end + 1);\n }\n const colon = host.lastIndexOf(':');\n return colon === -1 ? host : host.slice(0, colon);\n}\n\n/**\n * Resolve the canonical host the request arrived on for multi-host\n * routing and per-host PRM / audience advertisement. Same logic\n * `serve()` uses internally — exported so callers writing their own\n * host-dispatch middleware (e.g., behind `createExpressAdapter`) can\n * match `serve()`'s semantics exactly instead of re-implementing them.\n *\n * When `options.trustForwardedHost: true`, consults in order:\n * 1. `X-Forwarded-Host` (most common — Fly, Cloud Run, most ALBs).\n * 2. RFC 7239 `Forwarded: host=...` (spec-standard, less common).\n * 3. `Host`.\n *\n * When `trustForwardedHost: false` (default), only `Host` is read — an\n * attacker-controlled forwarded header can't flip the advertised OAuth\n * `resource` URL.\n *\n * **Proxy behavior matters when you opt in.** The helper trusts the\n * FIRST entry in a forwarded chain. That's safe when your proxy\n * OVERWRITES the header on ingress (rewriting the original value from\n * the client). It's UNSAFE when your proxy APPENDS — the attacker gets\n * to pick the first entry. Fly, Cloud Run, and GCP HTTPS LBs overwrite;\n * AWS ALB and nginx (by default) append. Verify your proxy's behavior\n * before enabling `trustForwardedHost`.\n *\n * Normalizes to lowercase and preserves port. Returns empty string when\n * no usable header is present (HTTP/1.1 requires `Host`, so this is\n * unusual — callers can branch on it to fail closed).\n *\n * @example\n * ```ts\n * import express from 'express';\n * import { resolveHost } from '@adcp/sdk/server';\n *\n * const routersByHost = new Map<string, express.Router>();\n *\n * function hostDispatch(req, res, next) {\n * const host = resolveHost(req, { trustForwardedHost: true });\n * const router = routersByHost.get(host);\n * if (!router) return res.status(404).end();\n * return router(req, res, next);\n * }\n * ```\n */\nexport function resolveHost(req: IncomingMessage, options?: { trustForwardedHost?: boolean }): string {\n const trustForwardedHost = options?.trustForwardedHost === true;\n if (trustForwardedHost) {\n const xfh = firstHeaderValue(req.headers['x-forwarded-host']);\n if (xfh) {\n const first = xfh.split(',')[0]?.trim();\n if (first) return first.toLowerCase();\n }\n const forwarded = firstHeaderValue(req.headers['forwarded']);\n if (forwarded) {\n const host = parseForwardedHost(forwarded);\n if (host) return host.toLowerCase();\n }\n }\n const host = firstHeaderValue(req.headers['host']);\n return host ? host.toLowerCase() : '';\n}\n\n/**\n * Extract the `host=` parameter from an RFC 7239 `Forwarded:` header.\n * Takes the first (left-most) hop — same policy as the `X-Forwarded-Host`\n * chain rule above, and subject to the same \"your proxy must overwrite,\n * not append\" guarantee.\n *\n * Handles quoted-string values per RFC 7239 §4 (IPv6 literals and hosts\n * with ports must be quoted). Returns undefined when the header has no\n * `host` parameter, a malformed value, or a blank host.\n */\nfunction parseForwardedHost(header: string): string | undefined {\n // Multi-hop: `Forwarded: for=1;host=a.example, for=2;host=b.example` —\n // first hop is the client-facing proxy's view. Commas INSIDE quoted\n // strings aren't separators, so a naive split would mis-parse IPv6.\n // Scan manually, respecting quotes.\n const firstHop = extractFirstForwardedHop(header);\n if (!firstHop) return undefined;\n for (const pair of firstHop.split(';')) {\n const eq = pair.indexOf('=');\n if (eq === -1) continue;\n const key = pair.slice(0, eq).trim().toLowerCase();\n if (key !== 'host') continue;\n let value = pair.slice(eq + 1).trim();\n if (value.startsWith('\"') && value.endsWith('\"') && value.length >= 2) {\n value = value.slice(1, -1).replace(/\\\\(.)/g, '$1');\n }\n return value || undefined;\n }\n return undefined;\n}\n\nfunction extractFirstForwardedHop(header: string): string | undefined {\n let depth = 0;\n let start = 0;\n for (let i = 0; i < header.length; i++) {\n const ch = header[i];\n if (ch === '\"') {\n // Skip the quoted run, respecting backslash escapes.\n i++;\n while (i < header.length && header[i] !== '\"') {\n if (header[i] === '\\\\') i++;\n i++;\n }\n continue;\n }\n if (ch === ',' && depth === 0) {\n return header.slice(start, i);\n }\n }\n return header.slice(start).trim() || undefined;\n}\n\nfunction firstHeaderValue(value: string | string[] | undefined): string | undefined {\n if (typeof value === 'string') return value;\n if (Array.isArray(value) && value.length > 0) return value[0];\n return undefined;\n}\n\nfunction attachAuthInfo(req: IncomingMessage, principal: AuthPrincipal): void {\n // Propagate the kind-discriminated `credential` (Stage 3 of #1269) into\n // `info.extra.credential` so the dispatcher can hoist it to top-level\n // `ctx.authInfo.credential` and pass it to `BuyerAgentRegistry.resolve`.\n // MCP's `extra` is `Record<string, unknown>`, so this round-trips\n // without a wire-shape change. Adopters with custom authenticators that\n // don't stamp `credential` see the registry resolve to `null` (no\n // credential = no known agent), preserving Stage 2's strict opt-in.\n //\n // Also forward `principal.extra` — adopter-provided extension data stamped\n // in the `verify` callback. This surfaces as `BuyerAgentResolveInput.extra`\n // in `BuyerAgentRegistry.resolve` (see buyer-agent.ts). `credential` is\n // always spread last so an adopter cannot overwrite the framework-stamped\n // credential via their `extra` object.\n const baseExtra = principal.claims !== undefined ? { ...principal.claims } : undefined;\n const adopterExtra =\n typeof principal.extra === 'object' && principal.extra !== null\n ? (principal.extra as Record<string, unknown>)\n : undefined;\n const hasExtra = baseExtra !== undefined || adopterExtra !== undefined || principal.credential !== undefined;\n const extra = hasExtra\n ? {\n ...(baseExtra ?? {}),\n ...(adopterExtra ?? {}),\n // credential last — prevents an adopter's `extra.credential` from\n // overwriting the framework-enforced kind-discriminated credential.\n ...(principal.credential !== undefined ? { credential: principal.credential } : {}),\n }\n : undefined;\n const info: AuthInfo = {\n token: principal.token ?? '',\n clientId: principal.principal,\n scopes: principal.scopes ?? [],\n ...(principal.expiresAt !== undefined ? { expiresAt: principal.expiresAt } : {}),\n ...(extra !== undefined ? { extra } : {}),\n };\n (req as IncomingMessage & { auth?: AuthInfo }).auth = info;\n}\n\nfunction bufferBody(req: import('http').IncomingMessage, maxBytes: number): Promise<string> {\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n let size = 0;\n req.on('data', chunk => {\n size += chunk.length;\n if (size > maxBytes) {\n reject(new Error(`Request body exceeded ${maxBytes} bytes`));\n req.destroy();\n return;\n }\n chunks.push(chunk as Buffer);\n });\n req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));\n req.on('error', reject);\n });\n}\n"],"mappings":"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","names":["host"]}
1
+ {"version":3,"sources":["../../../src/lib/server/serve.ts"],"sourcesContent":["/**\n * One-liner HTTP server for AdCP MCP agents.\n *\n * Wraps the StreamableHTTPServerTransport + http.createServer boilerplate\n * so agent builders can focus on business logic.\n *\n * @example\n * ```typescript\n * import { createTaskCapableServer, serve } from '@adcp/sdk';\n *\n * function createAgent({ taskStore }) {\n * const server = createTaskCapableServer('My Agent', '1.0.0', { taskStore });\n * server.registerTool('get_signals', { description: 'Discover audiences.', inputSchema: schema }, handler);\n * return server;\n * }\n *\n * serve(createAgent); // listening on http://localhost:3001/mcp\n * ```\n */\n\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { PARSE_ERROR, isJsonContentType } from '@modelcontextprotocol/server';\nimport { hostHeaderValidation, originValidation } from '@modelcontextprotocol/node';\nimport { createServer, type IncomingMessage, type Server as HttpServer } from 'http';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { TaskStore } from '@modelcontextprotocol/sdk/experimental/tasks/interfaces.js';\nimport { InMemoryTaskStore } from '@modelcontextprotocol/sdk/experimental/tasks/stores/in-memory.js';\nimport type { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\nimport type { AuthPrincipal, Authenticator, ServeRequestContext } from './auth';\nimport {\n ADCP_SERVE_REQUEST_CONTEXT,\n AuthError,\n authenticatorNeedsRawBody,\n respondUnauthorized,\n signatureErrorCodeFromCause,\n} from './auth';\nimport { ADCP_PRE_TRANSPORT, ADCP_INSTRUCTIONS_FN, type AdcpPreTransport } from './create-adcp-server';\nimport { isAdcpServer, type AdcpServer } from './adcp-server';\nimport { createModernMcpServerAdapter } from './mcp-modern-server';\n\n/**\n * Context passed to the agent factory on each request.\n *\n * Contains shared resources that must survive across stateless HTTP requests,\n * such as the task store for MCP Tasks protocol support.\n *\n * For multi-tenant / multi-host deployments, provide a custom `TaskStore` via\n * `ServeOptions` that enforces tenant/session scoping, and branch on\n * {@link host} inside your factory to return host-specific handlers.\n */\nexport interface ServeContext {\n /** Shared task store — use this when creating your McpServer so tasks persist across requests. */\n taskStore: TaskStore;\n /**\n * Canonical host the request arrived on, lowercased with port preserved\n * (e.g. `snap.example.com`, `localhost:3001`). Resolved from\n * `X-Forwarded-Host` when `ServeOptions.trustForwardedHost` is true,\n * otherwise from the `Host` header. Empty string when neither header\n * is present (unusual — HTTP/1.1 requires `Host`).\n *\n * Use this in the factory to branch on hostname when a single process\n * fronts multiple agents. The same string is passed to\n * `publicUrl` / `protectedResource` resolver functions.\n */\n host: string;\n}\n\n/**\n * Thrown from an agent factory (or a `publicUrl` / `protectedResource`\n * resolver) when the incoming request's host isn't configured. `serve()`\n * catches it and responds 404 with a generic body — the adapter routing\n * table never crosses the wire. Any other thrown error still surfaces\n * as 500 so unrelated bugs stay loud.\n */\nexport class UnknownHostError extends Error {\n constructor(message = 'Unknown host') {\n super(message);\n this.name = 'UnknownHostError';\n }\n}\n\n/**\n * OAuth 2.0 Protected Resource Metadata (RFC 9728) advertised at\n * `/.well-known/oauth-protected-resource<mountPath>`.\n *\n * The `resource` URL itself is taken from `ServeOptions.publicUrl` — set\n * that to the canonical MCP endpoint (e.g. `https://my-agent.example.com/mcp`)\n * so clients request tokens bound to the right RFC 8707 audience.\n */\nexport interface ProtectedResourceMetadata {\n /** URLs of authorization servers that issue tokens for this resource. */\n authorization_servers: string[];\n /** Scopes this resource accepts. Optional. */\n scopes_supported?: string[];\n /** Bearer token methods supported. Defaults to `['header']`. */\n bearer_methods_supported?: Array<'header' | 'body' | 'query'>;\n /** Human-readable resource docs URL. Optional. */\n resource_documentation?: string;\n /** Per-resource policy URL. Optional. */\n resource_policy_uri?: string;\n /** Per-resource ToS URL. Optional. */\n resource_tos_uri?: string;\n}\n\nexport interface ServeOptions {\n /** Port to listen on. Defaults to PORT env var or 3001. */\n port?: number;\n /** HTTP path to mount the MCP endpoint on. Defaults to '/mcp'. */\n path?: string;\n /**\n * Hostnames allowed on framework-owned AdCP server requests, without ports.\n * The guard runs before protocol-era classification, so it protects both\n * legacy and MCP 2026-07-28 traffic. Defaults to the hostname from\n * `publicUrl`, or localhost-only when no public URL is set. Public and\n * reverse-proxied deployments must configure `publicUrl` or this allowlist;\n * include the upstream Host too when a proxy rewrites it.\n */\n allowedHosts?: string[];\n /**\n * Origin hostnames allowed on browser-originated framework AdCP requests,\n * across both protocol eras. Requests without Origin pass. Defaults to\n * {@link allowedHosts}.\n */\n allowedOrigins?: string[];\n /**\n * Maximum buffered MCP request body size used for era classification.\n * Defaults to 2 MiB. Set explicitly when an AdCP extension legitimately\n * carries larger JSON payloads.\n */\n maxRequestBytes?: number;\n /** Called when the server starts listening. */\n onListening?: (url: string) => void;\n /**\n * Async check called before the server begins accepting connections.\n * Throw to abort boot — `serve()` logs the error and calls `process.exit(1)`,\n * so the server never enters listen mode and no traffic arrives during the\n * check. Use to validate external dependencies (database pools, credential\n * fetches) so a misconfigured deployment fails loudly at startup rather than\n * silently on the first live request.\n *\n * @example\n * ```ts\n * serve(createAgent, {\n * readinessCheck: () => store.probe(),\n * });\n * ```\n */\n readinessCheck?: () => Promise<void>;\n /**\n * Custom task store. Defaults to a shared InMemoryTaskStore.\n *\n * The default InMemoryTaskStore only evicts tasks that have a TTL set.\n * For long-running servers, always set `ttl` when creating tasks, or\n * provide a store with automatic eviction to prevent unbounded memory growth.\n */\n taskStore?: TaskStore;\n\n /**\n * Canonical public URL of this MCP endpoint (e.g. `https://my-agent.example.com/mcp`).\n * Required when `protectedResource` is configured — the RFC 9728 `resource`\n * field, the RFC 6750 `resource_metadata` URL on 401 challenges, and the\n * JWT audience your tokens must carry are all derived from it. Setting this\n * defends against attacker-controlled `Host` header phishing: without it,\n * the server would advertise whatever host a caller happened to send.\n *\n * Must be an absolute https:// URL whose path matches the mount path.\n *\n * **Multi-host.** Pass a function `(host) => string` when one process\n * fronts multiple hostnames (white-label publishers, multi-brand\n * adapters). The resolver runs per unique host — the returned URL is\n * cached and used as the RFC 9728 `resource`, the 401-challenge\n * `resource_metadata`, and the JWT audience for that host. Each\n * resolved URL's path must match the mount path, same as the static\n * form. Setting {@link trustForwardedHost} is recommended when\n * behind a proxy.\n */\n publicUrl?: string | ((host: string) => string);\n\n /**\n * Authentication middleware applied to every request. When configured,\n * missing or invalid credentials produce a 401 with a compliant\n * `WWW-Authenticate` header — no request reaches the MCP transport\n * without passing. Use helpers from `./auth`: `verifyApiKey`,\n * `verifyBearer`, or `anyOf(verifyApiKey(...), verifyBearer(...))`.\n */\n authenticate?: Authenticator;\n\n /**\n * Advertise OAuth 2.0 protected-resource metadata at\n * `/.well-known/oauth-protected-resource<mountPath>`. Requires {@link publicUrl}.\n *\n * Pass a function `(host) => ProtectedResourceMetadata` for multi-host\n * deployments whose authorization servers or supported scopes vary per\n * hostname (e.g., each white-label seller has its own AS). The resolver\n * runs once per unique host and the result is cached. The static form\n * still works when every host uses the same PRM body.\n */\n protectedResource?: ProtectedResourceMetadata | ((host: string) => ProtectedResourceMetadata);\n\n /**\n * Reuse the agent returned by the factory across requests instead of\n * closing it after each. Default `false` (one fresh server per\n * request — the pre-existing behavior).\n *\n * When `true`, `serve()` DOES NOT call `agentServer.close()` between\n * requests. The factory is still called on every request; it's the\n * caller's responsibility to cache `AdcpServer` instances (typically\n * keyed on `ctx.host`) and return the cached instance when possible.\n * Concurrent requests to the same cached server are serialized per\n * instance — `McpServer.connect()` rejects when a transport is\n * already attached, so the framework wraps the\n * connect→handleRequest→release cycle in a per-instance async\n * mutex. Requests for DIFFERENT cached servers still run in parallel.\n *\n * Use when `createAdcpServer(...)` setup cost (tool registration,\n * handler wiring) is a measurable portion of request latency — common\n * in multi-host deployments with many tools per host. Trade-off:\n * throughput per unique host drops to 1 in flight at a time. For\n * higher concurrency per host, cache a small pool of servers in the\n * factory and round-robin.\n *\n * Cleanup is the caller's responsibility: listen for the process\n * shutdown signal and call `close()` on every cached server to\n * release MCP Tasks timers, HTTP keepalives, etc.\n *\n * **Incompatible with long-lived server→client streams.** MCP's\n * `Protocol._onclose` aborts in-flight handlers and clears progress\n * tokens when the transport closes. In stateless HTTP mode (the\n * default this helper uses) each request is already single-response,\n * so this is a no-op concern. Don't enable `reuseAgent` if you\n * eventually wire a transport that keeps an SSE channel open across\n * multiple logical requests.\n */\n reuseAgent?: boolean;\n\n /**\n * Trust `X-Forwarded-Host` and RFC 7239 `Forwarded: host=...` for\n * host resolution and for reconstructing the public URL on 401\n * challenges. Default `false` — an attacker-controlled header can't\n * flip the advertised OAuth `resource` URL unless you opt in.\n *\n * **Your proxy must OVERWRITE the forwarded headers on ingress, not\n * append.** The framework trusts the first (left-most) entry in a\n * chain. With an overwriting proxy that's the sanitized value; with\n * an appending proxy it's whatever the client sent — an attacker\n * picks it. Common behavior:\n *\n * - Overwrite (safe to trust): Fly.io, Cloud Run, GCP HTTPS LB.\n * - Append (NOT safe without extra config): AWS ALB default, nginx\n * default. These need `proxy_set_header X-Forwarded-Host $host;`\n * or equivalent before enabling this flag.\n *\n * Verify your proxy's behavior against a request that already has\n * `X-Forwarded-Host: attacker.example` in it before turning this on.\n */\n trustForwardedHost?: boolean;\n\n /**\n * Pre-MCP middleware — runs after authentication but before MCP transport\n * is connected. Intended for transport-layer concerns like RFC 9421\n * request-signature verification: the agent's body is already buffered\n * into `(req as any).rawBody` before the middleware fires so signature\n * verifiers can hash it without racing the transport's own body read.\n *\n * Return `true` to signal the middleware handled the response (e.g. a\n * 401 with `WWW-Authenticate`); the transport is skipped. Return `false`\n * to continue into MCP dispatch.\n *\n * Throwing from the middleware produces a 500 with a generic body.\n */\n preTransport?: (\n req: import('http').IncomingMessage & { rawBody?: string },\n res: import('http').ServerResponse\n ) => Promise<boolean>;\n}\n\n/**\n * Start an HTTP server that serves an AdCP MCP agent.\n *\n * Creates a new MCP server instance per request (stateless), wires up the\n * StreamableHTTPServerTransport, and returns the underlying http.Server\n * for lifecycle control.\n *\n * A shared task store is created once and passed to the factory on every\n * request via `ServeContext`. This ensures MCP Tasks (create → poll → result)\n * work correctly across stateless HTTP requests.\n *\n * **Multi-host.** Pass functions for `publicUrl` and `protectedResource` and\n * branch on `ctx.host` in the factory to front multiple hostnames from one\n * process. The framework resolves host from `X-Forwarded-Host` (when\n * `trustForwardedHost: true`) or `Host`, threads it through `ServeContext`,\n * and caches per-host `publicUrl`/PRM so each hostname advertises its own\n * audience-bound `resource`.\n *\n * @param createAgent - Factory function that returns a configured server —\n * either an `AdcpServer` from `createAdcpServer()` or a raw SDK `McpServer`\n * from `createTaskCapableServer()`. Called once per request so each gets a\n * fresh instance (a server can only be connected once). Receives a\n * `ServeContext` with a shared `taskStore` and the resolved `host` —\n * branch on `host` to return host-specific handlers in multi-host mode.\n * Framework `AdcpServer` instances serve both MCP 2026-07-28 and legacy\n * clients. Raw v1 SDK `McpServer` instances remain legacy-only so resources,\n * prompts, Tasks, and custom transport extras are never silently dropped.\n * @param options - Port, path, and callback configuration.\n * @returns The http.Server instance. Use the `onListening` callback or\n * listen for the 'listening' event to know when it's ready.\n */\nexport function serve(createAgent: (ctx: ServeContext) => AdcpServer | McpServer, options?: ServeOptions): HttpServer {\n const envPort = process.env.PORT ? parseInt(process.env.PORT, 10) : undefined;\n if (envPort !== undefined && (Number.isNaN(envPort) || envPort < 0 || envPort > 65535)) {\n throw new Error(`Invalid PORT environment variable: \"${process.env.PORT}\"`);\n }\n const port = options?.port ?? envPort ?? 3001;\n const mountPath = options?.path ?? '/mcp';\n const taskStore = options?.taskStore ?? new InMemoryTaskStore();\n const trustForwardedHost = options?.trustForwardedHost === true;\n const reuseAgent = options?.reuseAgent === true;\n const maxRequestBytes = options?.maxRequestBytes ?? 2 * 1024 * 1024;\n if (!Number.isSafeInteger(maxRequestBytes) || maxRequestBytes <= 0) {\n throw new Error('serve(): `maxRequestBytes` must be a positive safe integer');\n }\n\n // Per-instance mutex chain for `reuseAgent: true`. The MCP SDK's\n // `Protocol.connect()` hard-throws when a transport is already\n // attached (node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:215),\n // so concurrent requests that land on the same cached server would\n // race without this. WeakMap so agents GC normally when the caller\n // drops references. Only used when `reuseAgent` is true — the\n // default path still creates a fresh server per request and doesn't\n // share any state across calls.\n const reuseMutexes = new WeakMap<AdcpServer | McpServer, Promise<unknown>>();\n\n if (options?.protectedResource && !options.publicUrl) {\n throw new Error(\n 'serve(): `protectedResource` requires `publicUrl` (the canonical https:// URL clients use for this MCP endpoint). ' +\n 'Without it, the server would advertise an attacker-controlled Host header as the OAuth resource URL.'\n );\n }\n\n const publicUrlOption = options?.publicUrl;\n const protectedResourceOption = options?.protectedResource;\n const publicUrlIsFn = typeof publicUrlOption === 'function';\n const prmIsFn = typeof protectedResourceOption === 'function';\n\n // Static publicUrl — validate once at construction. Function form validates\n // lazily per host so a stale factory for one host can't prevent boot.\n let staticPublicOrigin: string | undefined;\n if (typeof publicUrlOption === 'string') {\n staticPublicOrigin = validatePublicUrl(publicUrlOption, mountPath);\n }\n\n // Per-host caches. Function-form options are pure host → value lookups,\n // so memoization is safe and avoids the per-request allocation of\n // `new URL(...)` plus the caller's own host → config table work.\n const publicUrlCache = new Map<string, string>();\n const publicOriginCache = new Map<string, string>();\n const prmCache = new Map<string, ProtectedResourceMetadata>();\n\n const resolvePublicUrl = (host: string): string | undefined => {\n if (typeof publicUrlOption === 'string') return publicUrlOption;\n if (!publicUrlIsFn) return undefined;\n let cached = publicUrlCache.get(host);\n if (cached !== undefined) return cached;\n cached = (publicUrlOption as (h: string) => string)(host);\n const origin = validatePublicUrl(cached, mountPath);\n publicUrlCache.set(host, cached);\n publicOriginCache.set(host, origin);\n return cached;\n };\n\n const resolvePublicOrigin = (host: string): string | undefined => {\n if (typeof publicUrlOption === 'string') return staticPublicOrigin;\n // Populate via resolvePublicUrl so both caches share a single validation pass.\n if (resolvePublicUrl(host) == null) return undefined;\n return publicOriginCache.get(host);\n };\n\n const resolveProtectedResource = (host: string): ProtectedResourceMetadata | undefined => {\n if (!protectedResourceOption) return undefined;\n if (!prmIsFn) return protectedResourceOption as ProtectedResourceMetadata;\n let cached = prmCache.get(host);\n if (cached !== undefined) return cached;\n cached = (protectedResourceOption as (h: string) => ProtectedResourceMetadata)(host);\n prmCache.set(host, cached);\n return cached;\n };\n\n if (options?.authenticate == null && process.env.NODE_ENV === 'production') {\n console.warn(\n '[adcp/serve] No `authenticate` configured — this agent will accept unauthenticated requests. ' +\n 'AdCP security_baseline requires authentication in production.'\n );\n }\n\n const explicitPreTransport = options?.preTransport as AdcpPreTransport | undefined;\n\n const protectedResourcePath = `/.well-known/oauth-protected-resource${mountPath}`;\n\n const httpServer = createServer(async (req, res) => {\n const { pathname } = new URL(req.url || '', 'http://localhost');\n const host = resolveHost(req, { trustForwardedHost });\n\n // RFC 9728 protected-resource metadata — intentionally auth-free so\n // clients can discover the authorization server before they have a token.\n if (protectedResourceOption && pathname === protectedResourcePath) {\n let resource: string | undefined;\n let prm: ProtectedResourceMetadata | undefined;\n try {\n resource = resolvePublicUrl(host);\n prm = resolveProtectedResource(host);\n } catch (err) {\n if (err instanceof UnknownHostError) {\n // Operator signalled \"this host isn't in my routing table.\" 404\n // lets the OAuth grader probe fall through cleanly and doesn't\n // leak the configured host set across the wire.\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n console.error('[adcp/serve] publicUrl/protectedResource resolver failed:', err);\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Protected-resource metadata unavailable for this host.' }));\n return;\n }\n if (!resource || !prm) {\n // Fail closed: advertising a garbage resource URL would mint\n // audience-mismatched tokens across the fleet. 404 signals \"this\n // host doesn't publish PRM\" — the operator sees it and either\n // wires the host up or takes it out of DNS.\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n const body = {\n resource,\n ...prm,\n bearer_methods_supported: prm.bearer_methods_supported ?? ['header'],\n };\n res.writeHead(200, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify(body));\n return;\n }\n\n if (pathname === mountPath || pathname === `${mountPath}/`) {\n // Resolve per-request `resource_metadata` URL for 401 challenges and\n // the per-host `publicUrl` authenticators read via\n // {@link getServeRequestContext}. Resolving both up front means\n // the audience callback in `verifyBearer` can never diverge from\n // what the framework advertises in `/.well-known/...`. For static\n // PRM this is the same string every request (pre-multi-host\n // behavior); for function-form PRM/URL it follows the host.\n let resourceMetadataUrl: string | undefined;\n let resolvedPublicUrl: string | undefined;\n try {\n resolvedPublicUrl = resolvePublicUrl(host);\n } catch (err) {\n if (err instanceof UnknownHostError) {\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n console.error('[adcp/serve] publicUrl resolver failed:', err);\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Protected-resource metadata unavailable for this host.' }));\n return;\n }\n if (protectedResourceOption) {\n const hostOrigin = resolvePublicOrigin(host);\n if (hostOrigin) resourceMetadataUrl = `${hostOrigin}${protectedResourcePath}`;\n }\n\n // Stamp the serve-resolved context on the request so authenticator\n // callbacks (e.g. `verifyBearer`'s audience resolver) inherit the\n // framework's host resolution — they MUST NOT re-derive host from\n // raw headers, since that would diverge from what PRM advertises\n // and let a spoofed `X-Forwarded-Host` flip the JWT audience check\n // when `trustForwardedHost` is false.\n const serveRequestContext: ServeRequestContext = resolvedPublicUrl\n ? { host, publicUrl: resolvedPublicUrl }\n : { host };\n (req as IncomingMessage & { [ADCP_SERVE_REQUEST_CONTEXT]?: ServeRequestContext })[ADCP_SERVE_REQUEST_CONTEXT] =\n serveRequestContext;\n\n // Body buffering happens at most once per request. An idempotent helper\n // lets the auth path (for signature authenticators) and the preTransport\n // path share the buffer without re-reading a drained stream.\n let rawBody: string | undefined;\n let parsedBody: unknown;\n let bodyParseFailed = false;\n const ensureRawBody = async (): Promise<void> => {\n if (rawBody !== undefined) return;\n rawBody = await bufferBody(req, maxRequestBytes);\n (req as { rawBody?: string }).rawBody = rawBody;\n if (rawBody.length > 0) {\n try {\n parsedBody = JSON.parse(rawBody);\n } catch {\n bodyParseFailed = true;\n }\n }\n };\n\n // RFC 9421 signature authenticators need `req.rawBody` for Content-Digest\n // recompute, so buffer before authentication runs when the authenticator\n // (or any branch of an anyOf composition) carries the needs-raw-body tag.\n if (authenticatorNeedsRawBody(options?.authenticate)) {\n try {\n await ensureRawBody();\n } catch (err) {\n // `bufferBody` has already called `req.destroy()` on the\n // oversize path; additional teardown here would race the\n // response write. Write the status and return.\n const errName = (err as Error).name || 'Error';\n console.error(`[adcp/serve] request body read failed before auth: ${errName}`);\n if (!res.headersSent) {\n res.writeHead(400, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Request body read failed.' }));\n }\n return;\n }\n }\n\n // Enforce authentication before transport work.\n if (options?.authenticate) {\n let principal: AuthPrincipal | null;\n try {\n principal = await options.authenticate(req);\n } catch (err) {\n // Surface only sanitized messages to the client; log internal cause server-side.\n const publicMessage = err instanceof AuthError ? err.publicMessage : 'Credentials rejected.';\n console.error('[adcp/auth] rejected:', err);\n // Switch challenge scheme to `Signature` when the rejection\n // originates in the RFC 9421 verifier — the signed_requests\n // negative-vector grader reads the error code from the\n // `WWW-Authenticate` header, so collapsing it into the generic\n // `Bearer error=\"invalid_token\"` challenge would surface the\n // wrong code and fail every negative vector.\n const signatureCode = signatureErrorCodeFromCause(err);\n if (signatureCode) {\n respondUnauthorized(req, res, {\n signatureError: signatureCode,\n errorDescription: publicMessage,\n resourceMetadata: resourceMetadataUrl,\n });\n return;\n }\n respondUnauthorized(req, res, {\n error: 'invalid_token',\n errorDescription: publicMessage,\n resourceMetadata: resourceMetadataUrl,\n });\n return;\n }\n if (!principal) {\n respondUnauthorized(req, res, {\n error: 'invalid_token',\n errorDescription: 'Missing or unrecognized credentials.',\n resourceMetadata: resourceMetadataUrl,\n });\n return;\n }\n // Propagate to MCP transport so tool handlers see `extra.authInfo`.\n attachAuthInfo(req, principal);\n }\n\n // Create the agent first so we can inspect it for an auto-wired\n // preTransport attached by `createAdcpServer({ signedRequests })`. An\n // explicit `options.preTransport` wins — it lets callers override the\n // default wiring (e.g., to add request logging or swap verifier\n // implementations).\n let agentServer: AdcpServer | McpServer;\n try {\n agentServer = createAgent({ taskStore, host });\n } catch (err) {\n if (err instanceof UnknownHostError) {\n // Factory signalled \"this host isn't routable.\" 404 keeps the\n // adapter table off the wire while giving ops a clean failure\n // mode instead of the generic-500 confusion.\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n // Unexpected factory failure — surface as 500 to the client and\n // log server-side. Rethrowing would bubble to the createServer\n // handler as an unhandled rejection (async callback), which\n // could crash a node process with `--unhandled-rejections=strict`.\n console.error('[adcp/serve] factory threw:', err);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n }\n return;\n }\n // Refuse `reuseAgent: true` + function-form `instructions`. The function\n // is captured at server construction and would not re-evaluate per\n // session under server reuse — silently degrading to \"instructions are\n // a constant after all\" is worse than failing loud at the first request.\n // Adopters fix this by removing `reuseAgent: true` (default factory\n // creates a fresh agent per request, which is what the function needs)\n // OR by passing a static string for `instructions`.\n //\n // The check fires when `reuseAgent: true` was declared, regardless of\n // whether the adopter's factory actually caches. The flag is the\n // adopter's stated intent to reuse; we can't introspect cache behavior.\n if (reuseAgent && (agentServer as unknown as Record<symbol, unknown>)[ADCP_INSTRUCTIONS_FN] === true) {\n const hint =\n 'Drop `reuseAgent: true` (a fresh agent per request fires the function each session) OR pass a static string for `instructions`.';\n console.error(\n '[adcp/serve] refusing reuseAgent: true with function-form instructions. ' +\n 'The function fires once per agent instance lifetime (at MCP initialize) and would not re-evaluate on subsequent sessions under server reuse. ' +\n hint\n );\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n error: 'serve(): reuseAgent is incompatible with function-form instructions',\n hint,\n })\n );\n }\n return;\n }\n const attached = (agentServer as unknown as Record<symbol, unknown>)[ADCP_PRE_TRANSPORT];\n const autoWiredPreTransport = typeof attached === 'function' ? (attached as AdcpPreTransport) : undefined;\n const activePreTransport = explicitPreTransport ?? autoWiredPreTransport;\n\n if (activePreTransport) {\n try {\n await ensureRawBody();\n const handled = await activePreTransport(req as import('http').IncomingMessage & { rawBody?: string }, res);\n if (handled) {\n // PreTransport already responded (401, etc.). Close the agent\n // before returning so the McpServer doesn't leak.\n await agentServer.close();\n return;\n }\n } catch (err) {\n // Narrow to name+code — transport errors can embed remote URLs.\n const errName = (err as Error).name || 'Error';\n const errCode = (err as { code?: string }).code ?? 'unknown';\n console.error(`preTransport middleware error: ${errName} (${errCode})`);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n }\n await agentServer.close();\n return;\n }\n }\n\n // In reuseAgent mode, serialize connect→handle→close per server\n // instance. `McpServer.connect()` rejects when a transport is\n // already attached (protocol.js:215), so concurrent requests on a\n // cached server would race without this chain. Requests on\n // DIFFERENT servers (different WeakMap keys) proceed in parallel.\n // Outside reuseAgent mode the factory returns a fresh server per\n // request — no shared instance, no lock needed.\n const runTransportCycle = async (): Promise<void> => {\n let modernAdapter: ReturnType<typeof createModernMcpServerAdapter> | undefined;\n try {\n // The official v2 classifier and Node adapter both need the parsed\n // body after auth/signing middleware may have drained the stream.\n // Buffer once, then pass the same parsed value to whichever era owns\n // the request. Malformed JSON and unsupported media types fail before\n // either protocol era receives a drained request stream.\n await ensureRawBody();\n\n if (req.method?.toUpperCase() === 'POST' && !isJsonContentType(req.headers['content-type'])) {\n res.writeHead(415, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32000, message: 'Unsupported Media Type: Content-Type must be application/json' },\n id: null,\n })\n );\n return;\n }\n\n if (req.method?.toUpperCase() === 'POST' && (bodyParseFailed || rawBody?.length === 0)) {\n res.writeHead(400, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: PARSE_ERROR, message: 'Parse error: request body is not valid JSON' },\n id: null,\n })\n );\n return;\n }\n\n // Raw v1 SDK McpServer instances retain their complete legacy\n // surface (resources, prompts, custom handlers, Tasks extras).\n // Only the framework-owned AdcpServer can be mirrored losslessly\n // onto the 2026-07-28 tool transport.\n const frameworkAgent = isAdcpServer(agentServer) ? agentServer : undefined;\n if (frameworkAgent) {\n const defaultAllowedHosts = resolvedPublicUrl\n ? [new URL(resolvedPublicUrl).hostname]\n : ['localhost', '127.0.0.1', '[::1]'];\n const allowedHosts = options?.allowedHosts ?? defaultAllowedHosts;\n const allowedOrigins = options?.allowedOrigins ?? allowedHosts;\n if (!hostHeaderValidation(allowedHosts)(req, res)) return;\n if (!originValidation(allowedOrigins)(req, res)) return;\n }\n\n let legacyRequest = true;\n if (frameworkAgent) {\n modernAdapter = createModernMcpServerAdapter(frameworkAgent);\n legacyRequest = await modernAdapter.isLegacyRequest(req, parsedBody);\n }\n\n if (legacyRequest) {\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n });\n await agentServer.connect(transport);\n // The stream was consumed for era classification, so always pass\n // the parsed body when one was available.\n if (parsedBody !== undefined) {\n await transport.handleRequest(req, res, parsedBody);\n } else {\n await transport.handleRequest(req, res);\n }\n } else {\n await modernAdapter!.handle(req, res, parsedBody);\n }\n } catch (err) {\n console.error('Server error:', err);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n }\n } finally {\n await modernAdapter?.close();\n // close() here releases the transport AND (in reuseAgent mode)\n // resets `_transport = undefined` on the cached server so the\n // next queued request can connect. The server's tools,\n // handlers, and idempotency wiring survive — close() clears\n // the transport, not the registration.\n await agentServer.close();\n }\n };\n\n if (reuseAgent) {\n const prev = reuseMutexes.get(agentServer) ?? Promise.resolve();\n // `.then(runTransportCycle, runTransportCycle)` runs the cycle on\n // EITHER prior outcome — we only care about sequencing, not the\n // prior request's result. A plain `.then(runTransportCycle)`\n // would skip this request when the prior rejected, leaving it\n // stuck behind a poison-pill promise forever.\n const current = prev.then(runTransportCycle, runTransportCycle);\n // Swallow errors on the copy stored for sequencing so one\n // rejection doesn't poison every subsequent request for this\n // server instance. `current` itself is still awaited below and\n // surfaces errors to THIS request.\n reuseMutexes.set(\n agentServer,\n current.catch(() => {})\n );\n await current;\n } else {\n await runTransportCycle();\n }\n } else {\n res.writeHead(404);\n res.end('Not found');\n }\n });\n\n // MCP clients may hold a pooled connection while compiling or validating\n // the next tool schema. Node's five-second default can close that socket\n // during the pause, leaving a request racing the close with `fetch failed`.\n // Keep the connection through a normal multi-step storyboard run.\n httpServer.keepAliveTimeout = 60_000;\n httpServer.headersTimeout = 65_000;\n\n const doListen = () => {\n httpServer.listen(port, () => {\n const actualPort = (httpServer.address() as { port: number }).port;\n const url = `http://localhost:${actualPort}${mountPath}`;\n if (options?.onListening) {\n options.onListening(url);\n } else {\n console.log(`AdCP agent running at ${url}`);\n console.log(`\\nTest with:\\n npx @adcp/sdk@latest ${url}`);\n }\n });\n };\n\n if (options?.readinessCheck) {\n options\n .readinessCheck()\n .then(doListen)\n .catch((err: unknown) => {\n const message = err instanceof Error ? err.message : String(err);\n console.error('[adcp/serve] readinessCheck failed — aborting boot:', message);\n process.exit(1);\n });\n } else {\n doListen();\n }\n\n return httpServer;\n}\n\nfunction trimTrailingSlashes(s: string): string {\n let end = s.length;\n while (end > 0 && s.charCodeAt(end - 1) === 47 /* '/' */) end--;\n return s.slice(0, end);\n}\n\n/**\n * Parse and validate a `publicUrl`, returning its origin. Shared by the\n * static-string path (validated once at `serve()` construction) and the\n * function path (validated lazily per unique host). A bad value from the\n * function form throws on the first request for that host, after PRM\n * resolution has already decided to fetch; the error is caught at the\n * call site and surfaced as a 500 so the operator sees the misconfigured\n * host instead of a silent audience-mismatch on minted tokens.\n */\nfunction validatePublicUrl(publicUrl: string, mountPath: string): string {\n let parsed: URL;\n try {\n parsed = new URL(publicUrl);\n } catch {\n throw new Error(`serve(): \\`publicUrl\\` is not a valid URL: ${publicUrl}`);\n }\n if (trimTrailingSlashes(parsed.pathname) !== trimTrailingSlashes(mountPath)) {\n throw new Error(\n `serve(): \\`publicUrl\\` path (${parsed.pathname}) must match mount path (${mountPath}). ` +\n 'The public URL is the full MCP endpoint URL, including the path.'\n );\n }\n return parsed.origin;\n}\n\n/**\n * Strip the port from a `host` string (`\"snap.example.com:3001\"` →\n * `\"snap.example.com\"`). Use inside `publicUrl` / `protectedResource`\n * resolvers to build scheme://host URLs without carrying the test-time\n * port into production URLs. IPv6 brackets preserved.\n */\nexport function hostname(host: string): string {\n if (host.startsWith('[')) {\n // IPv6 — preserve brackets, drop port after the closing bracket.\n const end = host.indexOf(']');\n if (end === -1) return host;\n return host.slice(0, end + 1);\n }\n const colon = host.lastIndexOf(':');\n return colon === -1 ? host : host.slice(0, colon);\n}\n\n/**\n * Resolve the canonical host the request arrived on for multi-host\n * routing and per-host PRM / audience advertisement. Same logic\n * `serve()` uses internally — exported so callers writing their own\n * host-dispatch middleware (e.g., behind `createExpressAdapter`) can\n * match `serve()`'s semantics exactly instead of re-implementing them.\n *\n * When `options.trustForwardedHost: true`, consults in order:\n * 1. `X-Forwarded-Host` (most common — Fly, Cloud Run, most ALBs).\n * 2. RFC 7239 `Forwarded: host=...` (spec-standard, less common).\n * 3. `Host`.\n *\n * When `trustForwardedHost: false` (default), only `Host` is read — an\n * attacker-controlled forwarded header can't flip the advertised OAuth\n * `resource` URL.\n *\n * **Proxy behavior matters when you opt in.** The helper trusts the\n * FIRST entry in a forwarded chain. That's safe when your proxy\n * OVERWRITES the header on ingress (rewriting the original value from\n * the client). It's UNSAFE when your proxy APPENDS — the attacker gets\n * to pick the first entry. Fly, Cloud Run, and GCP HTTPS LBs overwrite;\n * AWS ALB and nginx (by default) append. Verify your proxy's behavior\n * before enabling `trustForwardedHost`.\n *\n * Normalizes to lowercase and preserves port. Returns empty string when\n * no usable header is present (HTTP/1.1 requires `Host`, so this is\n * unusual — callers can branch on it to fail closed).\n *\n * @example\n * ```ts\n * import express from 'express';\n * import { resolveHost } from '@adcp/sdk/server';\n *\n * const routersByHost = new Map<string, express.Router>();\n *\n * function hostDispatch(req, res, next) {\n * const host = resolveHost(req, { trustForwardedHost: true });\n * const router = routersByHost.get(host);\n * if (!router) return res.status(404).end();\n * return router(req, res, next);\n * }\n * ```\n */\nexport function resolveHost(req: IncomingMessage, options?: { trustForwardedHost?: boolean }): string {\n const trustForwardedHost = options?.trustForwardedHost === true;\n if (trustForwardedHost) {\n const xfh = firstHeaderValue(req.headers['x-forwarded-host']);\n if (xfh) {\n const first = xfh.split(',')[0]?.trim();\n if (first) return first.toLowerCase();\n }\n const forwarded = firstHeaderValue(req.headers['forwarded']);\n if (forwarded) {\n const host = parseForwardedHost(forwarded);\n if (host) return host.toLowerCase();\n }\n }\n const host = firstHeaderValue(req.headers['host']);\n return host ? host.toLowerCase() : '';\n}\n\n/**\n * Extract the `host=` parameter from an RFC 7239 `Forwarded:` header.\n * Takes the first (left-most) hop — same policy as the `X-Forwarded-Host`\n * chain rule above, and subject to the same \"your proxy must overwrite,\n * not append\" guarantee.\n *\n * Handles quoted-string values per RFC 7239 §4 (IPv6 literals and hosts\n * with ports must be quoted). Returns undefined when the header has no\n * `host` parameter, a malformed value, or a blank host.\n */\nfunction parseForwardedHost(header: string): string | undefined {\n // Multi-hop: `Forwarded: for=1;host=a.example, for=2;host=b.example` —\n // first hop is the client-facing proxy's view. Commas INSIDE quoted\n // strings aren't separators, so a naive split would mis-parse IPv6.\n // Scan manually, respecting quotes.\n const firstHop = extractFirstForwardedHop(header);\n if (!firstHop) return undefined;\n for (const pair of firstHop.split(';')) {\n const eq = pair.indexOf('=');\n if (eq === -1) continue;\n const key = pair.slice(0, eq).trim().toLowerCase();\n if (key !== 'host') continue;\n let value = pair.slice(eq + 1).trim();\n if (value.startsWith('\"') && value.endsWith('\"') && value.length >= 2) {\n value = value.slice(1, -1).replace(/\\\\(.)/g, '$1');\n }\n return value || undefined;\n }\n return undefined;\n}\n\nfunction extractFirstForwardedHop(header: string): string | undefined {\n let depth = 0;\n let start = 0;\n for (let i = 0; i < header.length; i++) {\n const ch = header[i];\n if (ch === '\"') {\n // Skip the quoted run, respecting backslash escapes.\n i++;\n while (i < header.length && header[i] !== '\"') {\n if (header[i] === '\\\\') i++;\n i++;\n }\n continue;\n }\n if (ch === ',' && depth === 0) {\n return header.slice(start, i);\n }\n }\n return header.slice(start).trim() || undefined;\n}\n\nfunction firstHeaderValue(value: string | string[] | undefined): string | undefined {\n if (typeof value === 'string') return value;\n if (Array.isArray(value) && value.length > 0) return value[0];\n return undefined;\n}\n\nfunction attachAuthInfo(req: IncomingMessage, principal: AuthPrincipal): void {\n // Propagate the kind-discriminated `credential` (Stage 3 of #1269) into\n // `info.extra.credential` so the dispatcher can hoist it to top-level\n // `ctx.authInfo.credential` and pass it to `BuyerAgentRegistry.resolve`.\n // MCP's `extra` is `Record<string, unknown>`, so this round-trips\n // without a wire-shape change. Adopters with custom authenticators that\n // don't stamp `credential` see the registry resolve to `null` (no\n // credential = no known agent), preserving Stage 2's strict opt-in.\n //\n // Also forward `principal.extra` — adopter-provided extension data stamped\n // in the `verify` callback. This surfaces as `BuyerAgentResolveInput.extra`\n // in `BuyerAgentRegistry.resolve` (see buyer-agent.ts). `credential` is\n // always spread last so an adopter cannot overwrite the framework-stamped\n // credential via their `extra` object.\n const baseExtra = principal.claims !== undefined ? { ...principal.claims } : undefined;\n const adopterExtra =\n typeof principal.extra === 'object' && principal.extra !== null\n ? (principal.extra as Record<string, unknown>)\n : undefined;\n const hasExtra = baseExtra !== undefined || adopterExtra !== undefined || principal.credential !== undefined;\n const extra = hasExtra\n ? {\n ...(baseExtra ?? {}),\n ...(adopterExtra ?? {}),\n // credential last — prevents an adopter's `extra.credential` from\n // overwriting the framework-enforced kind-discriminated credential.\n ...(principal.credential !== undefined ? { credential: principal.credential } : {}),\n }\n : undefined;\n const info: AuthInfo = {\n token: principal.token ?? '',\n clientId: principal.principal,\n scopes: principal.scopes ?? [],\n ...(principal.expiresAt !== undefined ? { expiresAt: principal.expiresAt } : {}),\n ...(extra !== undefined ? { extra } : {}),\n };\n (req as IncomingMessage & { auth?: AuthInfo }).auth = info;\n}\n\nfunction bufferBody(req: import('http').IncomingMessage, maxBytes: number): Promise<string> {\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n let size = 0;\n req.on('data', chunk => {\n size += chunk.length;\n if (size > maxBytes) {\n reject(new Error(`Request body exceeded ${maxBytes} bytes`));\n req.destroy();\n return;\n }\n chunks.push(chunk as Buffer);\n });\n req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));\n req.on('error', reject);\n });\n}\n"],"mappings":"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","names":["host"]}
@@ -334,6 +334,8 @@ function serve(createAgent, options) {
334
334
  res.end("Not found");
335
335
  }
336
336
  });
337
+ httpServer.keepAliveTimeout = 6e4;
338
+ httpServer.headersTimeout = 65e3;
337
339
  const doListen = () => {
338
340
  httpServer.listen(port, () => {
339
341
  const actualPort = httpServer.address().port;