@adcp/sdk 14.0.0-rc.37 → 14.0.0-rc.39

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 (622) hide show
  1. package/bin/adcp-storyboard-summary.js +286 -0
  2. package/bin/adcp.js +221 -10
  3. package/dist/lib/conformance/schemaLoader.d.mts +1 -1
  4. package/dist/lib/conformance/schemaLoader.d.ts +1 -1
  5. package/dist/lib/core/AgentClient.d.mts +6 -1
  6. package/dist/lib/core/AgentClient.d.ts +6 -1
  7. package/dist/lib/core/AgentClient.js +9 -0
  8. package/dist/lib/core/AgentClient.mjs +9 -0
  9. package/dist/lib/core/ConversationTypes.d.mts +29 -0
  10. package/dist/lib/core/ConversationTypes.d.ts +29 -0
  11. package/dist/lib/core/SingleAgentClient.d.mts +3 -1
  12. package/dist/lib/core/SingleAgentClient.d.ts +3 -1
  13. package/dist/lib/core/SingleAgentClient.js +9 -1
  14. package/dist/lib/core/SingleAgentClient.mjs +9 -1
  15. package/dist/lib/core/TaskExecutor.d.mts +13 -1
  16. package/dist/lib/core/TaskExecutor.d.ts +13 -1
  17. package/dist/lib/core/TaskExecutor.js +216 -18
  18. package/dist/lib/core/TaskExecutor.mjs +216 -19
  19. package/dist/lib/index.d.mts +5 -2
  20. package/dist/lib/index.d.ts +5 -2
  21. package/dist/lib/index.js +10 -1
  22. package/dist/lib/index.mjs +10 -1
  23. package/dist/lib/media-buy/action-assessment.d.mts +77 -0
  24. package/dist/lib/media-buy/action-assessment.d.ts +77 -0
  25. package/dist/lib/media-buy/action-assessment.js +300 -0
  26. package/dist/lib/media-buy/action-assessment.mjs +284 -0
  27. package/dist/lib/media-buy/action-constraints.d.mts +9 -0
  28. package/dist/lib/media-buy/action-constraints.d.ts +9 -0
  29. package/dist/lib/media-buy/action-constraints.js +170 -0
  30. package/dist/lib/media-buy/action-constraints.mjs +146 -0
  31. package/dist/lib/media-buy/action-contracts.d.mts +40 -0
  32. package/dist/lib/media-buy/action-contracts.d.ts +40 -0
  33. package/dist/lib/media-buy/action-contracts.js +304 -0
  34. package/dist/lib/media-buy/action-contracts.mjs +267 -0
  35. package/dist/lib/media-buy/action-metadata.generated.d.mts +37 -0
  36. package/dist/lib/media-buy/action-metadata.generated.d.ts +37 -0
  37. package/dist/lib/media-buy/action-metadata.generated.js +128 -0
  38. package/dist/lib/media-buy/action-metadata.generated.mjs +101 -0
  39. package/dist/lib/media-buy/action-types.d.mts +106 -0
  40. package/dist/lib/media-buy/action-types.d.ts +106 -0
  41. package/dist/lib/{types/v3-1-beta/tools.generated.js → media-buy/action-types.js} +2 -2
  42. package/dist/lib/media-buy/actions.d.mts +6 -0
  43. package/dist/lib/media-buy/actions.d.ts +6 -0
  44. package/dist/lib/media-buy/actions.js +38 -0
  45. package/dist/lib/media-buy/actions.mjs +9 -0
  46. package/dist/lib/media-buy/available-actions.d.mts +2 -1
  47. package/dist/lib/media-buy/available-actions.d.ts +2 -1
  48. package/dist/lib/media-buy/available-actions.js +4 -3
  49. package/dist/lib/media-buy/available-actions.mjs +4 -3
  50. package/dist/lib/media-buy/compatibility.js +3 -0
  51. package/dist/lib/media-buy/compatibility.mjs +3 -0
  52. package/dist/lib/media-buy/index.d.mts +4 -0
  53. package/dist/lib/media-buy/index.d.ts +4 -0
  54. package/dist/lib/media-buy/index.js +3 -1
  55. package/dist/lib/media-buy/index.mjs +1 -0
  56. package/dist/lib/media-buy/legacy-action-ids.d.mts +1 -0
  57. package/dist/lib/media-buy/legacy-action-ids.d.ts +1 -0
  58. package/dist/lib/media-buy/legacy-action-ids.js +50 -0
  59. package/dist/lib/media-buy/legacy-action-ids.mjs +26 -0
  60. package/dist/lib/media-buy/mutations.d.mts +70 -0
  61. package/dist/lib/media-buy/mutations.d.ts +70 -0
  62. package/dist/lib/media-buy/mutations.js +525 -0
  63. package/dist/lib/media-buy/mutations.mjs +498 -0
  64. package/dist/lib/media-buy/preflight.d.mts +20 -69
  65. package/dist/lib/media-buy/preflight.d.ts +20 -69
  66. package/dist/lib/media-buy/preflight.js +100 -336
  67. package/dist/lib/media-buy/preflight.mjs +111 -333
  68. package/dist/lib/media-buy/targeting-input.d.mts +7 -4
  69. package/dist/lib/media-buy/targeting-input.d.ts +7 -4
  70. package/dist/lib/media-buy/types.d.mts +55 -7
  71. package/dist/lib/media-buy/types.d.ts +55 -7
  72. package/dist/lib/protocols/rawResponseCapture.d.mts +12 -0
  73. package/dist/lib/protocols/rawResponseCapture.d.ts +12 -0
  74. package/dist/lib/protocols/rawResponseCapture.js +33 -3
  75. package/dist/lib/protocols/rawResponseCapture.mjs +32 -3
  76. package/dist/lib/registry/types.generated.d.mts +377 -9
  77. package/dist/lib/registry/types.generated.d.ts +377 -9
  78. package/dist/lib/reporting/content-mismatch.d.mts +126 -0
  79. package/dist/lib/reporting/content-mismatch.d.ts +126 -0
  80. package/dist/lib/reporting/content-mismatch.js +90 -0
  81. package/dist/lib/reporting/content-mismatch.mjs +66 -0
  82. package/dist/lib/reporting/evidence.d.mts +1 -0
  83. package/dist/lib/reporting/evidence.d.ts +1 -0
  84. package/dist/lib/reporting/evidence.js +32 -3
  85. package/dist/lib/reporting/evidence.mjs +31 -3
  86. package/dist/lib/reporting/index.d.mts +3 -1
  87. package/dist/lib/reporting/index.d.ts +3 -1
  88. package/dist/lib/reporting/index.js +3 -0
  89. package/dist/lib/reporting/index.mjs +2 -0
  90. package/dist/lib/reporting/ledger/handler.d.mts +51 -1
  91. package/dist/lib/reporting/ledger/handler.d.ts +51 -1
  92. package/dist/lib/reporting/ledger/handler.js +306 -38
  93. package/dist/lib/reporting/ledger/handler.mjs +304 -37
  94. package/dist/lib/reporting/ledger/health.d.mts +12 -0
  95. package/dist/lib/reporting/ledger/health.d.ts +12 -0
  96. package/dist/lib/reporting/ledger/health.js +15 -2
  97. package/dist/lib/reporting/ledger/health.mjs +13 -1
  98. package/dist/lib/reporting/ledger/index.d.mts +3 -0
  99. package/dist/lib/reporting/ledger/index.d.ts +3 -0
  100. package/dist/lib/reporting/ledger/index.js +7 -1
  101. package/dist/lib/reporting/ledger/index.mjs +3 -0
  102. package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
  103. package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
  104. package/dist/lib/reporting/ledger/lifecycle.js +244 -37
  105. package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
  106. package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
  107. package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
  108. package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
  109. package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
  110. package/dist/lib/reporting/ledger/managed.d.mts +355 -0
  111. package/dist/lib/reporting/ledger/managed.d.ts +355 -0
  112. package/dist/lib/reporting/ledger/managed.js +661 -0
  113. package/dist/lib/reporting/ledger/managed.mjs +633 -0
  114. package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
  115. package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
  116. package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
  117. package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
  118. package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
  119. package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
  120. package/dist/lib/reporting/ledger/postgres.js +1153 -21
  121. package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
  122. package/dist/lib/reporting/ledger/producer.d.mts +8 -0
  123. package/dist/lib/reporting/ledger/producer.d.ts +8 -0
  124. package/dist/lib/reporting/ledger/producer.js +146 -52
  125. package/dist/lib/reporting/ledger/producer.mjs +146 -51
  126. package/dist/lib/reporting/ledger/types.d.mts +358 -1
  127. package/dist/lib/reporting/ledger/types.d.ts +358 -1
  128. package/dist/lib/reporting/ledger/types.js +3 -0
  129. package/dist/lib/reporting/ledger/types.mjs +2 -0
  130. package/dist/lib/reporting/reconciliation.d.mts +362 -2
  131. package/dist/lib/reporting/reconciliation.d.ts +362 -2
  132. package/dist/lib/reporting/reconciliation.js +1051 -7
  133. package/dist/lib/reporting/reconciliation.mjs +1053 -7
  134. package/dist/lib/reporting/service/conformance.d.mts +35 -0
  135. package/dist/lib/reporting/service/conformance.d.ts +35 -0
  136. package/dist/lib/reporting/service/conformance.js +89 -0
  137. package/dist/lib/reporting/service/conformance.mjs +68 -0
  138. package/dist/lib/reporting/service/index.d.mts +182 -0
  139. package/dist/lib/reporting/service/index.d.ts +182 -0
  140. package/dist/lib/reporting/service/index.js +793 -0
  141. package/dist/lib/reporting/service/index.mjs +787 -0
  142. package/dist/lib/reporting/source/index.d.mts +2 -1
  143. package/dist/lib/reporting/source/index.d.ts +2 -1
  144. package/dist/lib/reporting/source/index.js +16 -3
  145. package/dist/lib/reporting/source/index.mjs +12 -1
  146. package/dist/lib/reporting/source/inline.d.mts +88 -1
  147. package/dist/lib/reporting/source/inline.d.ts +88 -1
  148. package/dist/lib/reporting/source/inline.js +1161 -163
  149. package/dist/lib/reporting/source/inline.mjs +1166 -163
  150. package/dist/lib/reporting/source/manifest.js +12 -7
  151. package/dist/lib/reporting/source/manifest.mjs +12 -7
  152. package/dist/lib/reporting/source/source.d.mts +26 -0
  153. package/dist/lib/reporting/source/source.d.ts +26 -0
  154. package/dist/lib/reporting/source/source.js +71 -2
  155. package/dist/lib/reporting/source/source.mjs +65 -1
  156. package/dist/lib/schemas/index.d.mts +22 -1
  157. package/dist/lib/schemas/index.d.ts +22 -1
  158. package/dist/lib/schemas/index.js +7 -0
  159. package/dist/lib/schemas/index.mjs +7 -0
  160. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  161. package/dist/lib/server/create-adcp-server.d.mts +18 -0
  162. package/dist/lib/server/create-adcp-server.d.ts +18 -0
  163. package/dist/lib/server/create-adcp-server.js +52 -2
  164. package/dist/lib/server/create-adcp-server.mjs +52 -2
  165. package/dist/lib/server/decisioning/account.d.mts +1 -1
  166. package/dist/lib/server/decisioning/account.d.ts +1 -1
  167. package/dist/lib/server/decisioning/index.d.mts +1 -0
  168. package/dist/lib/server/decisioning/index.d.ts +1 -0
  169. package/dist/lib/server/decisioning/platform.d.mts +3 -0
  170. package/dist/lib/server/decisioning/platform.d.ts +3 -0
  171. package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
  172. package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
  173. package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
  174. package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
  175. package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
  176. package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
  177. package/dist/lib/server/index.d.mts +4 -2
  178. package/dist/lib/server/index.d.ts +4 -2
  179. package/dist/lib/server/index.js +5 -0
  180. package/dist/lib/server/index.mjs +4 -0
  181. package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
  182. package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
  183. package/dist/lib/server/media-buy-action-resolver.js +297 -0
  184. package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
  185. package/dist/lib/server/media-buy-actions.d.mts +7 -8
  186. package/dist/lib/server/media-buy-actions.d.ts +7 -8
  187. package/dist/lib/server/media-buy-actions.js +57 -14
  188. package/dist/lib/server/media-buy-actions.mjs +63 -14
  189. package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
  190. package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
  191. package/dist/lib/server/notification-subscriptions/index.js +2 -0
  192. package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
  193. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
  194. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
  195. package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
  196. package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
  197. package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
  198. package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
  199. package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
  200. package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
  201. package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
  202. package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
  203. package/dist/lib/server/webhook-emitter.d.mts +40 -5
  204. package/dist/lib/server/webhook-emitter.d.ts +40 -5
  205. package/dist/lib/server/webhook-emitter.js +23 -12
  206. package/dist/lib/server/webhook-emitter.mjs +23 -12
  207. package/dist/lib/storage/interfaces.d.mts +14 -2
  208. package/dist/lib/storage/interfaces.d.ts +14 -2
  209. package/dist/lib/testing/compliance/comply.d.mts +9 -3
  210. package/dist/lib/testing/compliance/comply.d.ts +9 -3
  211. package/dist/lib/testing/compliance/comply.js +158 -3
  212. package/dist/lib/testing/compliance/comply.mjs +159 -4
  213. package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
  214. package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
  215. package/dist/lib/testing/compliance/summary.js +10 -1
  216. package/dist/lib/testing/compliance/summary.mjs +10 -1
  217. package/dist/lib/testing/index.d.mts +1 -1
  218. package/dist/lib/testing/index.d.ts +1 -1
  219. package/dist/lib/testing/index.js +2 -0
  220. package/dist/lib/testing/index.mjs +3 -1
  221. package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
  222. package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
  223. package/dist/lib/testing/storyboard/agent-routing.js +75 -13
  224. package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
  225. package/dist/lib/testing/storyboard/index.d.mts +1 -0
  226. package/dist/lib/testing/storyboard/index.d.ts +1 -0
  227. package/dist/lib/testing/storyboard/index.js +3 -0
  228. package/dist/lib/testing/storyboard/index.mjs +2 -0
  229. package/dist/lib/testing/storyboard/junit.d.mts +1 -1
  230. package/dist/lib/testing/storyboard/junit.d.ts +1 -1
  231. package/dist/lib/testing/storyboard/junit.js +21 -2
  232. package/dist/lib/testing/storyboard/junit.mjs +21 -2
  233. package/dist/lib/testing/storyboard/probes.d.mts +130 -0
  234. package/dist/lib/testing/storyboard/probes.d.ts +130 -0
  235. package/dist/lib/testing/storyboard/probes.js +682 -10
  236. package/dist/lib/testing/storyboard/probes.mjs +683 -3
  237. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
  238. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
  239. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
  240. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
  241. package/dist/lib/testing/storyboard/request-signing/grader.js +46 -22
  242. package/dist/lib/testing/storyboard/request-signing/grader.mjs +43 -21
  243. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
  244. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
  245. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
  246. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
  247. package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
  248. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
  249. package/dist/lib/testing/storyboard/runner.d.mts +103 -0
  250. package/dist/lib/testing/storyboard/runner.d.ts +103 -0
  251. package/dist/lib/testing/storyboard/runner.js +1090 -268
  252. package/dist/lib/testing/storyboard/runner.mjs +1096 -261
  253. package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
  254. package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
  255. package/dist/lib/testing/storyboard/seeding.js +55 -24
  256. package/dist/lib/testing/storyboard/seeding.mjs +55 -24
  257. package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
  258. package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
  259. package/dist/lib/testing/storyboard/test-kit.js +8 -2
  260. package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
  261. package/dist/lib/testing/storyboard/types.d.mts +132 -10
  262. package/dist/lib/testing/storyboard/types.d.ts +132 -10
  263. package/dist/lib/testing/storyboard/types.js +17 -0
  264. package/dist/lib/testing/storyboard/types.mjs +16 -0
  265. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  266. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  267. package/dist/lib/testing/storyboard/validations.js +16 -0
  268. package/dist/lib/testing/storyboard/validations.mjs +16 -0
  269. package/dist/lib/testing/test-controller.d.mts +1 -1
  270. package/dist/lib/testing/test-controller.d.ts +1 -1
  271. package/dist/lib/types/buy-products.d.ts +71 -6
  272. package/dist/lib/types/control-media-buy.d.ts +25 -11
  273. package/dist/lib/types/core.generated.d.mts +69 -10
  274. package/dist/lib/types/core.generated.d.ts +69 -10
  275. package/dist/lib/types/create-media-buy.d.ts +71 -6
  276. package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
  277. package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
  278. package/dist/lib/types/index.d.mts +2 -2
  279. package/dist/lib/types/index.d.ts +2 -2
  280. package/dist/lib/types/schemas.generated.d.ts +8040 -8116
  281. package/dist/lib/types/schemas.generated.js +1074 -309
  282. package/dist/lib/types/schemas.generated.mjs +1068 -309
  283. package/dist/lib/types/tools.generated.d.mts +65 -6
  284. package/dist/lib/types/tools.generated.d.ts +65 -6
  285. package/dist/lib/types/update-media-buy.d.ts +71 -6
  286. package/dist/lib/utils/redact-secrets.d.mts +1 -1
  287. package/dist/lib/utils/redact-secrets.d.ts +1 -1
  288. package/dist/lib/utils/redact-secrets.js +1 -1
  289. package/dist/lib/utils/redact-secrets.mjs +1 -1
  290. package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
  291. package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
  292. package/dist/lib/v2/projection/cache-versions.js +1 -15
  293. package/dist/lib/v2/projection/cache-versions.mjs +1 -14
  294. package/dist/lib/v2/projection/canonical-properties.js +2 -2
  295. package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
  296. package/dist/lib/v2/projection/registry.d.mts +1 -1
  297. package/dist/lib/v2/projection/registry.d.ts +1 -1
  298. package/dist/lib/v2/projection/registry.js +2 -2
  299. package/dist/lib/v2/projection/registry.mjs +3 -3
  300. package/dist/lib/validation/schema-loader.d.mts +9 -1
  301. package/dist/lib/validation/schema-loader.d.ts +9 -1
  302. package/dist/lib/validation/schema-loader.js +65 -8
  303. package/dist/lib/validation/schema-loader.mjs +64 -8
  304. package/dist/lib/version.d.mts +5 -5
  305. package/dist/lib/version.d.ts +5 -5
  306. package/dist/lib/version.js +3 -8
  307. package/dist/lib/version.mjs +3 -8
  308. package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
  309. package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
  310. package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
  311. package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
  312. package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
  313. package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
  314. package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
  315. package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
  316. package/dist/lib/wholesale-feed-sync/sync.js +3 -1
  317. package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
  318. package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
  319. package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
  320. package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
  321. package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
  322. package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
  323. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
  324. package/docs/CLI.md +1 -1
  325. package/docs/TYPE-SUMMARY.md +118 -4
  326. package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
  327. package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
  328. package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
  329. package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
  330. package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
  331. package/docs/guides/EXISTING-PLATFORM.md +80 -1
  332. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +57 -0
  333. package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
  334. package/docs/guides/REPORTING-LEDGER.md +654 -3
  335. package/docs/guides/REPORTING-RECONCILIATION.md +50 -0
  336. package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
  337. package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
  338. package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
  339. package/docs/guides/idempotency-crash-recovery.md +4 -0
  340. package/docs/llms.txt +4 -2
  341. package/docs/migration-14.x-rc-worksheet.md +60 -5
  342. package/docs/migration-7.9-to-7.10.md +7 -5
  343. package/examples/README.md +17 -0
  344. package/examples/durable-buyer-writes/caller.ts +745 -0
  345. package/examples/durable-buyer-writes/worker.ts +240 -0
  346. package/examples/reliable-reporting-service/README.md +100 -0
  347. package/examples/seller-3.2-starter.ts +7 -8
  348. package/examples/targeting-input-existing-platform.ts +153 -0
  349. package/package.json +41 -29
  350. package/skills/build-seller-agent/SKILL.md +2 -0
  351. package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
  352. package/skills/cross-cutting.md +28 -11
  353. package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
  354. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  355. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
  356. package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
  357. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
  358. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  359. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
  360. package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
  361. package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
  362. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  363. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
  364. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  365. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
  366. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  367. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  368. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  369. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  370. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
  371. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
  372. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
  373. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  374. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  375. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  376. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
  377. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
  378. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
  379. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  380. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
  381. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  382. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  383. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
  384. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  385. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  386. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  387. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  388. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  389. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  390. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
  391. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  392. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  393. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  394. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  395. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  396. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  397. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  398. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
  399. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  400. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  401. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  402. package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
  403. package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
  404. package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
  405. package/compliance/cache/3.1.0-beta.7/index.json +0 -356
  406. package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
  407. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  408. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
  409. package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
  410. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
  411. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  412. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
  413. package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
  414. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
  415. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  416. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
  417. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  418. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
  419. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  420. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  421. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  422. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  423. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
  424. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
  425. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
  426. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  427. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  428. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  429. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
  430. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
  431. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
  432. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  433. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
  434. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  435. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  436. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
  437. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  438. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  439. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  440. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  441. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  442. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  443. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
  444. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  445. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  446. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  447. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  448. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  449. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  450. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  451. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
  452. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  453. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  454. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  455. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
  456. package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
  457. package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
  458. package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
  459. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
  460. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
  461. package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
  462. package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
  463. package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
  464. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
  465. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
  466. package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
  467. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
  468. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
  469. package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
  470. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
  471. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
  472. package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
  473. package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
  474. package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
  475. package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
  476. package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
  477. package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
  478. package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
  479. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
  480. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
  481. package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
  482. package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
  483. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
  484. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
  485. package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
  486. package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
  487. package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
  488. package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
  489. package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
  490. package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
  491. package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
  492. package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
  493. package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
  494. package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
  495. package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
  496. package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
  497. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
  498. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
  499. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
  500. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
  501. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
  502. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
  503. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
  504. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
  505. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
  506. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
  507. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
  508. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
  509. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
  510. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
  511. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
  512. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
  513. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
  514. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
  515. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
  516. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
  517. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
  518. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
  519. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
  520. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
  521. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
  522. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
  523. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
  524. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
  525. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
  526. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
  527. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
  528. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
  529. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
  530. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
  531. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
  532. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
  533. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
  534. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
  535. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
  536. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
  537. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
  538. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
  539. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
  540. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  541. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
  542. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
  543. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
  544. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
  545. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
  546. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
  547. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
  548. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
  549. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
  550. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
  551. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
  552. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
  553. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
  554. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
  555. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
  556. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
  557. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
  558. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
  559. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
  560. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
  561. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
  562. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
  563. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
  564. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
  565. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
  566. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
  567. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
  568. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
  569. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
  570. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
  571. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
  572. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
  573. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
  574. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
  575. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
  576. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
  577. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
  578. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
  579. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
  580. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
  581. package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
  582. package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
  583. package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
  584. package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
  585. package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
  586. package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
  587. package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
  588. package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
  589. package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
  590. package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
  591. package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
  592. package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
  593. package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
  594. package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
  595. package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
  596. package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
  597. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
  598. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
  599. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
  600. package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
  601. package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
  602. package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
  603. package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
  604. package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
  605. package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
  606. package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
  607. package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
  608. package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
  609. package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
  610. package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
  611. package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
  612. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
  613. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
  614. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
  615. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
  616. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
  617. package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
  618. package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
  619. package/dist/lib/types/v3-1-beta/index.mjs +0 -1
  620. package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
  621. package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
  622. /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
@@ -1,5 +1,9 @@
1
+ import type { LiveMediaBuyAction as MediaBuyAvailableAction } from './action-types';
2
+ import { type ActionAssessmentOptions } from './action-assessment';
1
3
  import { type AvailableActionsResult } from './available-actions';
2
- import type { ActionNotAllowedReason, MediaBuyActionContext, MediaBuyActionId, MediaBuyActionMode, MediaBuyAvailableAction, UpdateMediaBuyRequestLike } from './types';
4
+ import type { ActionNotAllowedReason, MediaBuyActionContext, MediaBuyActionId, MediaBuyActionMode, UpdateMediaBuyRequestLike } from './types';
5
+ import { type ResolvedAction, type DecomposedUpdateMediaBuyMutation } from './mutations';
6
+ export * from './mutations';
3
7
  export declare const canPause: (buy: MediaBuyActionContext) => boolean;
4
8
  export declare const canResume: (buy: MediaBuyActionContext) => boolean;
5
9
  export declare const canCancel: (buy: MediaBuyActionContext) => boolean;
@@ -17,70 +21,6 @@ export declare const canUpdateCreativeAssignments: (buy: MediaBuyActionContext)
17
21
  export declare const canAddPackages: (buy: MediaBuyActionContext) => boolean;
18
22
  export declare const canRemovePackages: (buy: MediaBuyActionContext) => boolean;
19
23
  export declare const canRemoveCreative: (buy: MediaBuyActionContext) => boolean;
20
- export type MediaBuyMutationDirection = 'increase' | 'decrease' | 'reallocate' | 'extend' | 'shorten' | 'shift';
21
- /**
22
- * One action a request body covers, plus the direction inference where the
23
- * fine-grained vocabulary distinguishes increase/decrease or
24
- * extend/shorten. `touched_fields` lists the normalized dotted paths that
25
- * triggered this entry (useful for debugging).
26
- */
27
- export interface ResolvedAction {
28
- action: MediaBuyActionId;
29
- /**
30
- * Direction tag. Present when the resolver picked between fine-grained
31
- * siblings (e.g. `increase_budget` vs `decrease_budget`).
32
- */
33
- direction?: MediaBuyMutationDirection;
34
- touched_fields: string[];
35
- }
36
- export type MediaBuyMutationScope = 'buy' | 'package' | 'packages';
37
- /**
38
- * One concrete requested mutation inside an `update_media_buy` patch.
39
- *
40
- * `field` is the normalized schema path used for action mapping
41
- * (`packages[].budget`), while `path` is the concrete request path
42
- * (`packages[0].budget`) that adopter code can use for diagnostics or
43
- * dispatch. `from` is best-effort and only populated for fields the helper can
44
- * read from the supplied current buy snapshot.
45
- */
46
- export interface DecomposedUpdateMediaBuyMutation {
47
- action: MediaBuyActionId;
48
- direction?: MediaBuyMutationDirection;
49
- field: string;
50
- path: string;
51
- scope: MediaBuyMutationScope;
52
- package_id?: string;
53
- package_index?: number;
54
- from?: unknown;
55
- to?: unknown;
56
- }
57
- export interface DecomposedUpdateMediaBuy {
58
- /** Concrete mutations requested by the patch. Empty when no known fields were touched. */
59
- mutations: DecomposedUpdateMediaBuyMutation[];
60
- /** Aggregated action view, preserving the legacy `getActionForMutation()` shape. */
61
- actions: ResolvedAction[];
62
- /** Unique normalized fields touched by this patch, in request traversal order. */
63
- touched_fields: string[];
64
- }
65
- /**
66
- * Walk the request body and return the set of fine-grained actions it
67
- * covers. Compatibility wrapper over `decomposeUpdateMediaBuy()` for callers
68
- * that only need the action-level view.
69
- *
70
- * Returns an empty array when the request touches no recognized field
71
- * (e.g. only `idempotency_key` / `revision` / `account` were set).
72
- */
73
- export declare function getActionForMutation(currentBuy: MediaBuyActionContext, request: UpdateMediaBuyRequestLike): ResolvedAction[];
74
- /**
75
- * Decompose an `update_media_buy` patch into the concrete mutations it
76
- * requests plus the fine-grained actions those mutations require.
77
- *
78
- * This is intentionally read-only: it does not validate availability or
79
- * mutate the request. Buyer code can use it for previews and preflight;
80
- * seller/adopter code can use it to dispatch individual patch operations
81
- * without re-walking the raw request.
82
- */
83
- export declare function decomposeUpdateMediaBuy(currentBuy: MediaBuyActionContext, request: UpdateMediaBuyRequestLike): DecomposedUpdateMediaBuy;
84
24
  export interface PreflightAllowed {
85
25
  ok: true;
86
26
  /** Every action the request body covers. Multi-entry for mixed mutations. */
@@ -109,6 +49,10 @@ export interface PreflightDenial {
109
49
  reason: ActionNotAllowedReason;
110
50
  /** Structured recovery hint when `reason: 'mode_mismatch'`. */
111
51
  recovery?: ModeMismatchRecovery;
52
+ /** Portable bound or missing-state diagnostic, when accepted change terms were supplied. */
53
+ assessment?: Extract<import('./action-assessment').ActionAvailability, {
54
+ status: 'currently_unavailable';
55
+ }>;
112
56
  }
113
57
  export interface PreflightDenied {
114
58
  ok: false;
@@ -130,6 +74,9 @@ export type ModeMismatchRecovery = {
130
74
  } | {
131
75
  kind: 'waitForApproval';
132
76
  message: string;
77
+ } | {
78
+ kind: 'waitForTask';
79
+ message: string;
133
80
  } | {
134
81
  kind: 'reissueAsDirect';
135
82
  message: string;
@@ -141,15 +88,19 @@ export type ModeMismatchRecovery = {
141
88
  * matching action - mode is not knowable, so it's reported as `self_serve`
142
89
  * but flagged as a compat fallback.
143
90
  *
91
+ * Supplying an accepted snapshot enables negotiated-term checks; separately stored
92
+ * snapshots use options.proposal. options.task defaults to the named update facade.
93
+ * For route-neutral strict assessment, use preflightMediaBuyActions.
94
+ *
144
95
  * Multi-action requests: every resolved action must be present in
145
96
  * `available_actions[]`. All missing actions are reported in `denials[]`
146
97
  * so callers can render every blocker in a single pass.
147
98
  *
148
- * Throws `ValidationError` when the request touches no recognized
149
- * `update_media_buy` field. This is a buyer-side bug (the SDK was asked to
99
+ * Throws `ValidationError` for unmapped mutation fields or when the request
100
+ * touches no recognized `update_media_buy` field. This is a buyer-side bug (the SDK was asked to
150
101
  * dispatch a no-op), not a seller-side denial.
151
102
  */
152
- export declare function preflightUpdateMediaBuy(currentBuy: MediaBuyActionContext, request: UpdateMediaBuyRequestLike): PreflightResult;
103
+ export declare function preflightUpdateMediaBuy(currentBuy: MediaBuyActionContext, request: UpdateMediaBuyRequestLike, options?: Omit<ActionAssessmentOptions, 'request'>): PreflightResult;
153
104
  /**
154
105
  * Build a typed recovery hint from a `mode_mismatch` rejection. Exported
155
106
  * so callers handling `ActionNotAllowedError` outside of the preflight
@@ -157,4 +108,4 @@ export declare function preflightUpdateMediaBuy(currentBuy: MediaBuyActionContex
157
108
  * the same structured recovery path.
158
109
  */
159
110
  export declare function recoveryForModeMismatch(attemptedAction: MediaBuyActionId, currentlyAvailable: ReadonlyArray<MediaBuyAvailableAction>): ModeMismatchRecovery | undefined;
160
- export type { ActionNotAllowedReason, MediaBuyAvailableAction, MediaBuyActionId, MediaBuyActionMode, MediaBuyValidAction, MediaBuyActionContext, UpdateMediaBuyRequestLike, } from './types';
111
+ export type { ActionNotAllowedReason, MediaBuyActionId, MediaBuyActionMode, MediaBuyValidAction, MediaBuyActionContext, UpdateMediaBuyRequestLike, } from './types';
@@ -15,6 +15,7 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
20
  var preflight_exports = {};
20
21
  __export(preflight_exports, {
@@ -35,15 +36,28 @@ __export(preflight_exports, {
35
36
  canUpdateFrequencyCaps: () => canUpdateFrequencyCaps,
36
37
  canUpdatePacing: () => canUpdatePacing,
37
38
  canUpdateTargeting: () => canUpdateTargeting,
38
- decomposeUpdateMediaBuy: () => decomposeUpdateMediaBuy,
39
- getActionForMutation: () => getActionForMutation,
40
39
  preflightUpdateMediaBuy: () => preflightUpdateMediaBuy,
41
40
  recoveryForModeMismatch: () => recoveryForModeMismatch
42
41
  });
43
42
  module.exports = __toCommonJS(preflight_exports);
44
43
  var import_errors = require('../errors/index.js');
44
+ var import_action_contracts = require('./action-contracts.js');
45
+ var import_action_assessment = require('./action-assessment.js');
45
46
  var import_available_actions = require('./available-actions.js');
46
- var import_update_fields = require('./update-fields.generated.js');
47
+ var import_action_metadata = require('./action-metadata.generated.js');
48
+ var import_mutations = require('./mutations.js');
49
+ __reExport(preflight_exports, require('./mutations.js'), module.exports);
50
+ function tasksForLegacyMutation(action) {
51
+ const direct = (0, import_action_contracts.mediaBuyActionTasks)(action);
52
+ if (direct.length) return direct;
53
+ const children = Object.keys(import_action_metadata.CANONICAL_ACTION_TASKS).filter(
54
+ (child) => (0, import_available_actions.getRollupParent)(child) === action
55
+ );
56
+ if (!children.length) return [];
57
+ return (0, import_action_contracts.mediaBuyActionTasks)(children[0]).filter(
58
+ (task) => children.every((child) => (0, import_action_contracts.mediaBuyActionTasks)(child).includes(task))
59
+ );
60
+ }
47
61
  function isAvailable(buy, action) {
48
62
  return (0, import_available_actions.findAvailableAction)(buy, action, { silent: true }) !== void 0;
49
63
  }
@@ -64,340 +78,23 @@ const canUpdateCreativeAssignments = (buy) => isAvailable(buy, "update_creative_
64
78
  const canAddPackages = (buy) => isAvailable(buy, "add_packages");
65
79
  const canRemovePackages = (buy) => isAvailable(buy, "remove_packages");
66
80
  const canRemoveCreative = (buy) => isAvailable(buy, "remove_creative");
67
- const BUDGET_EQUAL_TOLERANCE = 5e-3;
68
- function getActionForMutation(currentBuy, request) {
69
- return decomposeUpdateMediaBuy(currentBuy, request).actions;
70
- }
71
- function decomposeUpdateMediaBuy(currentBuy, request) {
72
- const mutations = [];
73
- const currentPackages = /* @__PURE__ */ new Map();
74
- for (const pkg of currentBuy.packages ?? []) {
75
- if (pkg.package_id) currentPackages.set(pkg.package_id, pkg);
76
- }
77
- const push = (mutation) => {
78
- mutations.push(mutation);
79
- };
80
- if (request.paused !== void 0) {
81
- push({
82
- action: request.paused === false ? "resume" : "pause",
83
- field: "paused",
84
- path: "paused",
85
- scope: "buy",
86
- to: request.paused
87
- });
88
- }
89
- if (request.canceled !== void 0) {
90
- push({
91
- action: "cancel",
92
- field: "canceled",
93
- path: "canceled",
94
- scope: "buy",
95
- to: request.canceled
96
- });
97
- }
98
- if (request.cancellation_reason !== void 0) {
99
- push({
100
- action: "cancel",
101
- field: "cancellation_reason",
102
- path: "cancellation_reason",
103
- scope: "buy",
104
- to: request.cancellation_reason
105
- });
106
- }
107
- if (request.start_time !== void 0) {
108
- push({
109
- action: "update_flight_dates",
110
- direction: "shift",
111
- field: "start_time",
112
- path: "start_time",
113
- scope: "buy",
114
- from: currentBuy.start_time,
115
- to: request.start_time
116
- });
117
- }
118
- if (request.end_time !== void 0) {
119
- const pick = resolveFlightEndDirection(currentBuy, request, "end_time");
120
- push({
121
- ...pick,
122
- field: "end_time",
123
- path: "end_time",
124
- scope: "buy",
125
- from: currentBuy.end_time,
126
- to: request.end_time
127
- });
128
- }
129
- if (request.frequency_cap !== void 0) {
130
- const [frequencyCapAction] = import_update_fields.ACTIONS_BY_FIELD["frequency_cap"] ?? [];
131
- if (frequencyCapAction) {
132
- push({
133
- action: frequencyCapAction,
134
- field: "frequency_cap",
135
- path: "frequency_cap",
136
- scope: "buy",
137
- to: request.frequency_cap
138
- });
139
- }
140
- }
141
- if (request.new_packages !== void 0 && request.new_packages.length > 0) {
142
- push({
143
- action: "add_packages",
144
- field: "new_packages",
145
- path: "new_packages",
146
- scope: "packages",
147
- to: request.new_packages
148
- });
149
- }
150
- if (request.packages) {
151
- const budgetPick = resolveBudgetDirection(currentBuy, request);
152
- const packageEndPick = resolveFlightEndDirection(currentBuy, request, "packages[].end_time");
153
- request.packages.forEach((pkg, index) => {
154
- const currentPkg = currentPackages.get(pkg.package_id);
155
- const base = {
156
- scope: "package",
157
- package_id: pkg.package_id,
158
- package_index: index
159
- };
160
- if (pkg.canceled !== void 0) {
161
- push({
162
- action: "remove_packages",
163
- field: "packages[].canceled",
164
- path: `packages[${index}].canceled`,
165
- ...base,
166
- to: pkg.canceled
167
- });
168
- }
169
- if (pkg.budget !== void 0) {
170
- push({
171
- ...budgetPick,
172
- field: "packages[].budget",
173
- path: `packages[${index}].budget`,
174
- ...base,
175
- from: currentPkg?.budget,
176
- to: pkg.budget
177
- });
178
- }
179
- if (pkg.pacing !== void 0) {
180
- push({
181
- action: "update_pacing",
182
- field: "packages[].pacing",
183
- path: `packages[${index}].pacing`,
184
- ...base,
185
- to: pkg.pacing
186
- });
187
- }
188
- if (pkg.start_time !== void 0) {
189
- push({
190
- action: "update_flight_dates",
191
- direction: "shift",
192
- field: "packages[].start_time",
193
- path: `packages[${index}].start_time`,
194
- ...base,
195
- from: currentPkg?.start_time,
196
- to: pkg.start_time
197
- });
198
- }
199
- if (pkg.end_time !== void 0) {
200
- push({
201
- ...packageEndPick,
202
- field: "packages[].end_time",
203
- path: `packages[${index}].end_time`,
204
- ...base,
205
- from: currentPkg?.end_time,
206
- to: pkg.end_time
207
- });
208
- }
209
- if (pkg.creative_assignments !== void 0) {
210
- push({
211
- action: "update_creative_assignments",
212
- field: "packages[].creative_assignments",
213
- path: `packages[${index}].creative_assignments`,
214
- ...base,
215
- to: pkg.creative_assignments
216
- });
217
- }
218
- if (pkg.creatives !== void 0) {
219
- push({
220
- action: "replace_creative",
221
- field: "packages[].creatives",
222
- path: `packages[${index}].creatives`,
223
- ...base,
224
- to: pkg.creatives
225
- });
226
- }
227
- if (pkg.keyword_targets_add !== void 0) {
228
- push({
229
- action: "update_targeting",
230
- field: "packages[].keyword_targets_add",
231
- path: `packages[${index}].keyword_targets_add`,
232
- ...base,
233
- to: pkg.keyword_targets_add
234
- });
235
- }
236
- if (pkg.keyword_targets_remove !== void 0) {
237
- push({
238
- action: "update_targeting",
239
- field: "packages[].keyword_targets_remove",
240
- path: `packages[${index}].keyword_targets_remove`,
241
- ...base,
242
- to: pkg.keyword_targets_remove
243
- });
244
- }
245
- if (pkg.negative_keywords_add !== void 0) {
246
- push({
247
- action: "update_targeting",
248
- field: "packages[].negative_keywords_add",
249
- path: `packages[${index}].negative_keywords_add`,
250
- ...base,
251
- to: pkg.negative_keywords_add
252
- });
253
- }
254
- if (pkg.negative_keywords_remove !== void 0) {
255
- push({
256
- action: "update_targeting",
257
- field: "packages[].negative_keywords_remove",
258
- path: `packages[${index}].negative_keywords_remove`,
259
- ...base,
260
- to: pkg.negative_keywords_remove
261
- });
262
- }
263
- if (pkg.targeting_overlay !== void 0) {
264
- const overlayKeys = Object.keys(pkg.targeting_overlay);
265
- if (overlayKeys.length === 1 && overlayKeys[0] === "frequency_cap") {
266
- push({
267
- action: "update_frequency_caps",
268
- field: "packages[].targeting_overlay.frequency_cap",
269
- path: `packages[${index}].targeting_overlay.frequency_cap`,
270
- ...base,
271
- to: pkg.targeting_overlay.frequency_cap
272
- });
273
- } else {
274
- push({
275
- action: "update_targeting",
276
- field: "packages[].targeting_overlay",
277
- path: `packages[${index}].targeting_overlay`,
278
- ...base,
279
- to: pkg.targeting_overlay
280
- });
281
- }
282
- }
283
- });
284
- }
285
- return {
286
- mutations,
287
- actions: aggregateResolvedActions(mutations),
288
- touched_fields: uniqueFields(mutations)
289
- };
290
- }
291
- function aggregateResolvedActions(mutations) {
292
- const resolved = /* @__PURE__ */ new Map();
293
- for (const mutation of mutations) {
294
- const existing = resolved.get(mutation.action);
295
- if (existing) {
296
- if (existing.direction === void 0 && mutation.direction !== void 0) {
297
- existing.direction = mutation.direction;
298
- }
299
- if (!existing.touched_fields.includes(mutation.field)) {
300
- existing.touched_fields.push(mutation.field);
301
- }
302
- continue;
303
- }
304
- resolved.set(mutation.action, {
305
- action: mutation.action,
306
- direction: mutation.direction,
307
- touched_fields: [mutation.field]
308
- });
309
- }
310
- return [...resolved.values()];
311
- }
312
- function uniqueFields(mutations) {
313
- const fields = [];
314
- for (const mutation of mutations) {
315
- if (!fields.includes(mutation.field)) fields.push(mutation.field);
316
- }
317
- return fields;
318
- }
319
- function resolveBudgetDirection(currentBuy, request) {
320
- const currentByPkg = /* @__PURE__ */ new Map();
321
- for (const pkg of currentBuy.packages ?? []) {
322
- if (pkg.package_id && typeof pkg.budget === "number") {
323
- currentByPkg.set(pkg.package_id, pkg.budget);
324
- }
325
- }
326
- let currentTotal = 0;
327
- let proposedTotal = 0;
328
- let sawIncrease = false;
329
- let sawDecrease = false;
330
- for (const pkg of request.packages ?? []) {
331
- if (typeof pkg.budget !== "number") continue;
332
- const prev = currentByPkg.get(pkg.package_id);
333
- if (prev === void 0) {
334
- sawIncrease = true;
335
- proposedTotal += pkg.budget;
336
- continue;
337
- }
338
- currentTotal += prev;
339
- proposedTotal += pkg.budget;
340
- if (pkg.budget > prev) sawIncrease = true;
341
- if (pkg.budget < prev) sawDecrease = true;
342
- }
343
- if (sawIncrease && sawDecrease && Math.abs(proposedTotal - currentTotal) < BUDGET_EQUAL_TOLERANCE) {
344
- return { action: "reallocate_budget", direction: "reallocate" };
345
- }
346
- if (proposedTotal > currentTotal) return { action: "increase_budget", direction: "increase" };
347
- if (proposedTotal < currentTotal) return { action: "decrease_budget", direction: "decrease" };
348
- return { action: "reallocate_budget", direction: "reallocate" };
349
- }
350
- function resolveFlightEndDirection(currentBuy, request, field) {
351
- if (request.start_time !== void 0) {
352
- return { action: "update_flight_dates", direction: "shift" };
353
- }
354
- const packageStartTouched = (request.packages ?? []).some((pkg) => pkg.start_time !== void 0);
355
- if (packageStartTouched) {
356
- return { action: "update_flight_dates", direction: "shift" };
357
- }
358
- if (field === "end_time") {
359
- const currentEnd = currentBuy.end_time;
360
- const proposedEnd = request.end_time;
361
- if (currentEnd && proposedEnd) {
362
- const cur = Date.parse(currentEnd);
363
- const next = Date.parse(proposedEnd);
364
- if (!Number.isNaN(cur) && !Number.isNaN(next)) {
365
- if (next > cur) return { action: "extend_flight", direction: "extend" };
366
- if (next < cur) return { action: "shorten_flight", direction: "shorten" };
367
- }
368
- }
369
- return { action: "update_flight_dates", direction: "shift" };
370
- }
371
- let extending = false;
372
- let shortening = false;
373
- const currentByPkg = /* @__PURE__ */ new Map();
374
- for (const pkg of currentBuy.packages ?? []) {
375
- if (pkg.package_id) currentByPkg.set(pkg.package_id, pkg.end_time);
376
- }
377
- for (const pkg of request.packages ?? []) {
378
- if (!pkg.end_time) continue;
379
- const prev = currentByPkg.get(pkg.package_id);
380
- if (!prev) {
381
- extending = true;
382
- continue;
383
- }
384
- const cur = Date.parse(prev);
385
- const next = Date.parse(pkg.end_time);
386
- if (Number.isNaN(cur) || Number.isNaN(next)) continue;
387
- if (next > cur) extending = true;
388
- if (next < cur) shortening = true;
389
- }
390
- if (extending && !shortening) return { action: "extend_flight", direction: "extend" };
391
- if (shortening && !extending) return { action: "shorten_flight", direction: "shorten" };
392
- return { action: "update_flight_dates", direction: "shift" };
393
- }
394
- function preflightUpdateMediaBuy(currentBuy, request) {
395
- const decomposition = decomposeUpdateMediaBuy(currentBuy, request);
81
+ function preflightUpdateMediaBuy(currentBuy, request, options = {}) {
82
+ const assessmentBuy = currentBuy;
83
+ currentBuy = (0, import_action_contracts.withActionProposal)(currentBuy, options);
84
+ options = { ...options, task: options.task ?? "update_media_buy" };
85
+ const decomposition = (0, import_mutations.decomposeUpdateMediaBuy)(currentBuy, request);
396
86
  const resolved = decomposition.actions;
87
+ const strict = currentBuy.accepted_proposal?.commercial_terms?.change_terms !== void 0 || currentBuy.available_actions?.some((entry) => entry?.change_term_id !== void 0) === true;
88
+ if ((0, import_mutations.hasUnmappedMutation)(request, decomposition))
89
+ throw new import_errors.ValidationError(
90
+ "request",
91
+ void 0,
92
+ "At least one requested mutation has no supported action mapping; do not submit a partial mutation."
93
+ );
397
94
  if (resolved.length === 0) {
398
95
  throw new import_errors.ValidationError(
399
96
  "request",
400
- request,
97
+ void 0,
401
98
  "update_media_buy request must touch at least one mutating field (paused, canceled, start_time, end_time, frequency_cap, packages[*], or new_packages)"
402
99
  );
403
100
  }
@@ -407,14 +104,77 @@ function preflightUpdateMediaBuy(currentBuy, request) {
407
104
  const modes = [];
408
105
  const denials = [];
409
106
  for (const resolvedAction of resolved) {
107
+ if (!strict && (resolvedAction.action === "pause" || resolvedAction.action === "resume")) {
108
+ const controls = decomposition.mutations.filter(
109
+ (mutation) => mutation.action === resolvedAction.action && mutation.field === "packages[].paused"
110
+ );
111
+ if (controls.length) {
112
+ const statuses = controls.map(
113
+ (mutation) => (0, import_action_contracts.packageActionStatus)(currentBuy.packages?.find((pkg) => pkg.package_id === mutation.package_id))
114
+ );
115
+ const allowed = (0, import_action_contracts.actionAllowedStatuses)({ action: resolvedAction.action });
116
+ if (currentBuy.status === void 0 || statuses.some((status) => status === void 0)) {
117
+ denials.push({ action: resolvedAction.action, reason: "condition_unresolved" });
118
+ continue;
119
+ }
120
+ if (!["active", "paused"].includes(currentBuy.status) || statuses.some((status) => !allowed.includes(status))) {
121
+ denials.push({ action: resolvedAction.action, reason: "wrong_status" });
122
+ continue;
123
+ }
124
+ }
125
+ }
126
+ if (strict || options.proposal !== void 0 || resolvedAction.action === "update_name") {
127
+ const assessment = (0, import_action_assessment.assessActionAvailability)(assessmentBuy, resolvedAction.action, { ...options, request });
128
+ if (assessment.status === "currently_unavailable") {
129
+ denials.push({ action: resolvedAction.action, reason: assessment.reason, assessment });
130
+ continue;
131
+ }
132
+ }
410
133
  const lookup = (0, import_available_actions.findAvailableAction)(currentBuy, resolvedAction.action, { silent: true });
411
134
  if (!lookup) {
412
135
  denials.push({ action: resolvedAction.action, reason: "not_supported_on_buy" });
413
136
  continue;
414
137
  }
138
+ if (options.adcpVersion && !(0, import_action_contracts.liveActionFitsVersion)(lookup.entry, options.adcpVersion)) {
139
+ denials.push({
140
+ action: resolvedAction.action,
141
+ reason: "condition_unresolved",
142
+ assessment: {
143
+ status: "currently_unavailable",
144
+ action: resolvedAction.action,
145
+ reason: "condition_unresolved",
146
+ certainty: "unknown",
147
+ message: "The action uses metadata introduced after the supplied seller version."
148
+ }
149
+ });
150
+ continue;
151
+ }
152
+ if (!strict && lookup.entry.task !== void 0 && !tasksForLegacyMutation(resolvedAction.action).includes(lookup.entry.task)) {
153
+ denials.push({ action: resolvedAction.action, reason: "mode_mismatch" });
154
+ continue;
155
+ }
156
+ if (!strict && lookup.entry.applicable_package_ids !== void 0) {
157
+ const scoped = decomposition.mutations.filter((m) => m.action === resolvedAction.action);
158
+ const ids = lookup.entry.applicable_package_ids;
159
+ if ((0, import_action_contracts.liveActionIssues)([lookup.entry]).length || !scoped.length) {
160
+ denials.push({ action: resolvedAction.action, reason: "condition_unresolved" });
161
+ continue;
162
+ }
163
+ if (scoped.some((m) => m.scope !== "package" || !m.package_id || !ids.includes(m.package_id))) {
164
+ denials.push({ action: resolvedAction.action, reason: "not_supported_on_buy" });
165
+ continue;
166
+ }
167
+ }
168
+ if (!strict && options.task !== "update_media_buy" && options.task !== (lookup.entry.task ?? "update_media_buy")) {
169
+ denials.push({ action: resolvedAction.action, reason: "mode_mismatch" });
170
+ continue;
171
+ }
415
172
  matched.push(lookup.entry);
416
173
  modes.push(lookup.entry.mode);
417
174
  }
175
+ if (strict && options.task !== "update_media_buy" && denials.length === 0 && new Set(matched.map((entry) => entry.task ?? "update_media_buy")).size > 1) {
176
+ for (const action of resolved) denials.push({ action: action.action, reason: "mode_mismatch" });
177
+ }
418
178
  if (denials.length > 0) {
419
179
  return {
420
180
  ok: false,
@@ -438,6 +198,11 @@ function recoveryForModeMismatch(attemptedAction, currentlyAvailable) {
438
198
  const entry = currentlyAvailable.find((a) => a.action === attemptedAction);
439
199
  if (!entry) return void 0;
440
200
  switch (entry.mode) {
201
+ case "seller_managed":
202
+ return {
203
+ kind: "waitForTask",
204
+ message: "Use the declared task and follow its submitted/working/completed lifecycle."
205
+ };
441
206
  case "requires_proposal":
442
207
  return {
443
208
  kind: "createProposal",
@@ -481,8 +246,7 @@ function recoveryForModeMismatch(attemptedAction, currentlyAvailable) {
481
246
  canUpdateFrequencyCaps,
482
247
  canUpdatePacing,
483
248
  canUpdateTargeting,
484
- decomposeUpdateMediaBuy,
485
- getActionForMutation,
486
249
  preflightUpdateMediaBuy,
487
- recoveryForModeMismatch
250
+ recoveryForModeMismatch,
251
+ ...require('./mutations.js')
488
252
  });