@adcp/sdk 14.0.0-rc.38 → 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 (600) 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/evidence.d.mts +1 -0
  79. package/dist/lib/reporting/evidence.d.ts +1 -0
  80. package/dist/lib/reporting/evidence.js +32 -3
  81. package/dist/lib/reporting/evidence.mjs +31 -3
  82. package/dist/lib/reporting/ledger/handler.d.mts +51 -1
  83. package/dist/lib/reporting/ledger/handler.d.ts +51 -1
  84. package/dist/lib/reporting/ledger/handler.js +306 -38
  85. package/dist/lib/reporting/ledger/handler.mjs +304 -37
  86. package/dist/lib/reporting/ledger/health.d.mts +12 -0
  87. package/dist/lib/reporting/ledger/health.d.ts +12 -0
  88. package/dist/lib/reporting/ledger/health.js +15 -2
  89. package/dist/lib/reporting/ledger/health.mjs +13 -1
  90. package/dist/lib/reporting/ledger/index.d.mts +3 -0
  91. package/dist/lib/reporting/ledger/index.d.ts +3 -0
  92. package/dist/lib/reporting/ledger/index.js +7 -1
  93. package/dist/lib/reporting/ledger/index.mjs +3 -0
  94. package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
  95. package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
  96. package/dist/lib/reporting/ledger/lifecycle.js +244 -37
  97. package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
  98. package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
  99. package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
  100. package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
  101. package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
  102. package/dist/lib/reporting/ledger/managed.d.mts +355 -0
  103. package/dist/lib/reporting/ledger/managed.d.ts +355 -0
  104. package/dist/lib/reporting/ledger/managed.js +661 -0
  105. package/dist/lib/reporting/ledger/managed.mjs +633 -0
  106. package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
  107. package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
  108. package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
  109. package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
  110. package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
  111. package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
  112. package/dist/lib/reporting/ledger/postgres.js +1153 -21
  113. package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
  114. package/dist/lib/reporting/ledger/producer.d.mts +8 -0
  115. package/dist/lib/reporting/ledger/producer.d.ts +8 -0
  116. package/dist/lib/reporting/ledger/producer.js +146 -52
  117. package/dist/lib/reporting/ledger/producer.mjs +146 -51
  118. package/dist/lib/reporting/ledger/types.d.mts +358 -1
  119. package/dist/lib/reporting/ledger/types.d.ts +358 -1
  120. package/dist/lib/reporting/ledger/types.js +3 -0
  121. package/dist/lib/reporting/ledger/types.mjs +2 -0
  122. package/dist/lib/reporting/service/conformance.d.mts +35 -0
  123. package/dist/lib/reporting/service/conformance.d.ts +35 -0
  124. package/dist/lib/reporting/service/conformance.js +89 -0
  125. package/dist/lib/reporting/service/conformance.mjs +68 -0
  126. package/dist/lib/reporting/service/index.d.mts +182 -0
  127. package/dist/lib/reporting/service/index.d.ts +182 -0
  128. package/dist/lib/reporting/service/index.js +793 -0
  129. package/dist/lib/reporting/service/index.mjs +787 -0
  130. package/dist/lib/reporting/source/index.d.mts +2 -1
  131. package/dist/lib/reporting/source/index.d.ts +2 -1
  132. package/dist/lib/reporting/source/index.js +16 -3
  133. package/dist/lib/reporting/source/index.mjs +12 -1
  134. package/dist/lib/reporting/source/inline.d.mts +88 -1
  135. package/dist/lib/reporting/source/inline.d.ts +88 -1
  136. package/dist/lib/reporting/source/inline.js +1161 -163
  137. package/dist/lib/reporting/source/inline.mjs +1166 -163
  138. package/dist/lib/reporting/source/manifest.js +12 -7
  139. package/dist/lib/reporting/source/manifest.mjs +12 -7
  140. package/dist/lib/reporting/source/source.d.mts +26 -0
  141. package/dist/lib/reporting/source/source.d.ts +26 -0
  142. package/dist/lib/reporting/source/source.js +71 -2
  143. package/dist/lib/reporting/source/source.mjs +65 -1
  144. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  145. package/dist/lib/server/create-adcp-server.d.mts +18 -0
  146. package/dist/lib/server/create-adcp-server.d.ts +18 -0
  147. package/dist/lib/server/create-adcp-server.js +52 -2
  148. package/dist/lib/server/create-adcp-server.mjs +52 -2
  149. package/dist/lib/server/decisioning/account.d.mts +1 -1
  150. package/dist/lib/server/decisioning/account.d.ts +1 -1
  151. package/dist/lib/server/decisioning/index.d.mts +1 -0
  152. package/dist/lib/server/decisioning/index.d.ts +1 -0
  153. package/dist/lib/server/decisioning/platform.d.mts +3 -0
  154. package/dist/lib/server/decisioning/platform.d.ts +3 -0
  155. package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
  156. package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
  157. package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
  158. package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
  159. package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
  160. package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
  161. package/dist/lib/server/index.d.mts +4 -2
  162. package/dist/lib/server/index.d.ts +4 -2
  163. package/dist/lib/server/index.js +5 -0
  164. package/dist/lib/server/index.mjs +4 -0
  165. package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
  166. package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
  167. package/dist/lib/server/media-buy-action-resolver.js +297 -0
  168. package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
  169. package/dist/lib/server/media-buy-actions.d.mts +7 -8
  170. package/dist/lib/server/media-buy-actions.d.ts +7 -8
  171. package/dist/lib/server/media-buy-actions.js +57 -14
  172. package/dist/lib/server/media-buy-actions.mjs +63 -14
  173. package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
  174. package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
  175. package/dist/lib/server/notification-subscriptions/index.js +2 -0
  176. package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
  177. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
  178. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
  179. package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
  180. package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
  181. package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
  182. package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
  183. package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
  184. package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
  185. package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
  186. package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
  187. package/dist/lib/server/webhook-emitter.d.mts +40 -5
  188. package/dist/lib/server/webhook-emitter.d.ts +40 -5
  189. package/dist/lib/server/webhook-emitter.js +23 -12
  190. package/dist/lib/server/webhook-emitter.mjs +23 -12
  191. package/dist/lib/storage/interfaces.d.mts +14 -2
  192. package/dist/lib/storage/interfaces.d.ts +14 -2
  193. package/dist/lib/testing/compliance/comply.d.mts +9 -3
  194. package/dist/lib/testing/compliance/comply.d.ts +9 -3
  195. package/dist/lib/testing/compliance/comply.js +158 -3
  196. package/dist/lib/testing/compliance/comply.mjs +159 -4
  197. package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
  198. package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
  199. package/dist/lib/testing/compliance/summary.js +10 -1
  200. package/dist/lib/testing/compliance/summary.mjs +10 -1
  201. package/dist/lib/testing/index.d.mts +1 -1
  202. package/dist/lib/testing/index.d.ts +1 -1
  203. package/dist/lib/testing/index.js +2 -0
  204. package/dist/lib/testing/index.mjs +3 -1
  205. package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
  206. package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
  207. package/dist/lib/testing/storyboard/agent-routing.js +75 -13
  208. package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
  209. package/dist/lib/testing/storyboard/index.d.mts +1 -0
  210. package/dist/lib/testing/storyboard/index.d.ts +1 -0
  211. package/dist/lib/testing/storyboard/index.js +3 -0
  212. package/dist/lib/testing/storyboard/index.mjs +2 -0
  213. package/dist/lib/testing/storyboard/junit.d.mts +1 -1
  214. package/dist/lib/testing/storyboard/junit.d.ts +1 -1
  215. package/dist/lib/testing/storyboard/junit.js +21 -2
  216. package/dist/lib/testing/storyboard/junit.mjs +21 -2
  217. package/dist/lib/testing/storyboard/probes.d.mts +130 -0
  218. package/dist/lib/testing/storyboard/probes.d.ts +130 -0
  219. package/dist/lib/testing/storyboard/probes.js +682 -10
  220. package/dist/lib/testing/storyboard/probes.mjs +683 -3
  221. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
  222. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
  223. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
  224. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
  225. package/dist/lib/testing/storyboard/request-signing/grader.js +46 -22
  226. package/dist/lib/testing/storyboard/request-signing/grader.mjs +43 -21
  227. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
  228. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
  229. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
  230. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
  231. package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
  232. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
  233. package/dist/lib/testing/storyboard/runner.d.mts +103 -0
  234. package/dist/lib/testing/storyboard/runner.d.ts +103 -0
  235. package/dist/lib/testing/storyboard/runner.js +1090 -268
  236. package/dist/lib/testing/storyboard/runner.mjs +1096 -261
  237. package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
  238. package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
  239. package/dist/lib/testing/storyboard/seeding.js +55 -24
  240. package/dist/lib/testing/storyboard/seeding.mjs +55 -24
  241. package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
  242. package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
  243. package/dist/lib/testing/storyboard/test-kit.js +8 -2
  244. package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
  245. package/dist/lib/testing/storyboard/types.d.mts +132 -10
  246. package/dist/lib/testing/storyboard/types.d.ts +132 -10
  247. package/dist/lib/testing/storyboard/types.js +17 -0
  248. package/dist/lib/testing/storyboard/types.mjs +16 -0
  249. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  250. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  251. package/dist/lib/testing/storyboard/validations.js +16 -0
  252. package/dist/lib/testing/storyboard/validations.mjs +16 -0
  253. package/dist/lib/testing/test-controller.d.mts +1 -1
  254. package/dist/lib/testing/test-controller.d.ts +1 -1
  255. package/dist/lib/types/buy-products.d.ts +71 -6
  256. package/dist/lib/types/control-media-buy.d.ts +25 -11
  257. package/dist/lib/types/core.generated.d.mts +69 -10
  258. package/dist/lib/types/core.generated.d.ts +69 -10
  259. package/dist/lib/types/create-media-buy.d.ts +71 -6
  260. package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
  261. package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
  262. package/dist/lib/types/index.d.mts +2 -2
  263. package/dist/lib/types/index.d.ts +2 -2
  264. package/dist/lib/types/schemas.generated.d.ts +8040 -8116
  265. package/dist/lib/types/schemas.generated.js +1074 -309
  266. package/dist/lib/types/schemas.generated.mjs +1068 -309
  267. package/dist/lib/types/tools.generated.d.mts +65 -6
  268. package/dist/lib/types/tools.generated.d.ts +65 -6
  269. package/dist/lib/types/update-media-buy.d.ts +71 -6
  270. package/dist/lib/utils/redact-secrets.d.mts +1 -1
  271. package/dist/lib/utils/redact-secrets.d.ts +1 -1
  272. package/dist/lib/utils/redact-secrets.js +1 -1
  273. package/dist/lib/utils/redact-secrets.mjs +1 -1
  274. package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
  275. package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
  276. package/dist/lib/v2/projection/cache-versions.js +1 -15
  277. package/dist/lib/v2/projection/cache-versions.mjs +1 -14
  278. package/dist/lib/v2/projection/canonical-properties.js +2 -2
  279. package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
  280. package/dist/lib/v2/projection/registry.d.mts +1 -1
  281. package/dist/lib/v2/projection/registry.d.ts +1 -1
  282. package/dist/lib/v2/projection/registry.js +2 -2
  283. package/dist/lib/v2/projection/registry.mjs +3 -3
  284. package/dist/lib/version.d.mts +5 -5
  285. package/dist/lib/version.d.ts +5 -5
  286. package/dist/lib/version.js +3 -8
  287. package/dist/lib/version.mjs +3 -8
  288. package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
  289. package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
  290. package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
  291. package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
  292. package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
  293. package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
  294. package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
  295. package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
  296. package/dist/lib/wholesale-feed-sync/sync.js +3 -1
  297. package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
  298. package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
  299. package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
  300. package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
  301. package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
  302. package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
  303. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
  304. package/docs/CLI.md +1 -1
  305. package/docs/TYPE-SUMMARY.md +118 -4
  306. package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
  307. package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
  308. package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
  309. package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
  310. package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
  311. package/docs/guides/EXISTING-PLATFORM.md +35 -0
  312. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +7 -3
  313. package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
  314. package/docs/guides/REPORTING-LEDGER.md +654 -3
  315. package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
  316. package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
  317. package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
  318. package/docs/guides/idempotency-crash-recovery.md +4 -0
  319. package/docs/llms.txt +4 -2
  320. package/docs/migration-14.x-rc-worksheet.md +5 -5
  321. package/docs/migration-7.9-to-7.10.md +7 -5
  322. package/examples/README.md +17 -0
  323. package/examples/durable-buyer-writes/caller.ts +745 -0
  324. package/examples/durable-buyer-writes/worker.ts +240 -0
  325. package/examples/reliable-reporting-service/README.md +100 -0
  326. package/examples/seller-3.2-starter.ts +7 -8
  327. package/examples/targeting-input-existing-platform.ts +153 -0
  328. package/package.json +41 -29
  329. package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
  330. package/skills/cross-cutting.md +28 -11
  331. package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
  332. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  333. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
  334. package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
  335. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
  336. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  337. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
  338. package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
  339. package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
  340. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  341. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
  342. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  343. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
  344. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  345. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  346. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  347. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  348. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
  349. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
  350. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
  351. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  352. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  353. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  354. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
  355. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
  356. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
  357. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  358. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
  359. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  360. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  361. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
  362. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  363. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  364. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  365. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  366. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  367. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  368. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
  369. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  370. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  371. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  372. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  373. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  374. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  375. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  376. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
  377. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  378. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  379. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  380. package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
  381. package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
  382. package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
  383. package/compliance/cache/3.1.0-beta.7/index.json +0 -356
  384. package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
  385. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  386. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
  387. package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
  388. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
  389. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  390. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
  391. package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
  392. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
  393. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  394. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
  395. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  396. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
  397. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  398. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  399. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  400. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  401. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
  402. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
  403. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
  404. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  405. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  406. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  407. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
  408. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
  409. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
  410. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  411. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
  412. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  413. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  414. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
  415. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  416. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  417. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  418. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  419. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  420. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  421. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
  422. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  423. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  424. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  425. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  426. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  427. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  428. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  429. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
  430. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  431. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  432. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  433. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
  434. package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
  435. package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
  436. package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
  437. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
  438. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
  439. package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
  440. package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
  441. package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
  442. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
  443. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
  444. package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
  445. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
  446. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
  447. package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
  448. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
  449. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
  450. package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
  451. package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
  452. package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
  453. package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
  454. package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
  455. package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
  456. package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
  457. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
  458. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
  459. package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
  460. package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
  461. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
  462. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
  463. package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
  464. package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
  465. package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
  466. package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
  467. package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
  468. package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
  469. package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
  470. package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
  471. package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
  472. package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
  473. package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
  474. package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
  475. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
  476. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
  477. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
  478. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
  479. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
  480. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
  481. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
  482. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
  483. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
  484. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
  485. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
  486. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
  487. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
  488. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
  489. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
  490. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
  491. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
  492. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
  493. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
  494. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
  495. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
  496. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
  497. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
  498. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
  499. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
  500. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
  501. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
  502. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
  503. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
  504. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
  505. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
  506. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
  507. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
  508. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
  509. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
  510. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
  511. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
  512. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
  513. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
  514. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
  515. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
  516. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
  517. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
  518. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  519. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
  520. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
  521. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
  522. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
  523. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
  524. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
  525. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
  526. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
  527. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
  528. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
  529. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
  530. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
  531. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
  532. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
  533. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
  534. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
  535. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
  536. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
  537. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
  538. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
  539. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
  540. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
  541. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
  542. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
  543. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
  544. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
  545. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
  546. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
  547. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
  548. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
  549. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
  550. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
  551. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
  552. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
  553. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
  554. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
  555. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
  556. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
  557. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
  558. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
  559. package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
  560. package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
  561. package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
  562. package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
  563. package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
  564. package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
  565. package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
  566. package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
  567. package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
  568. package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
  569. package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
  570. package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
  571. package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
  572. package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
  573. package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
  574. package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
  575. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
  576. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
  577. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
  578. package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
  579. package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
  580. package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
  581. package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
  582. package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
  583. package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
  584. package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
  585. package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
  586. package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
  587. package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
  588. package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
  589. package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
  590. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
  591. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
  592. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
  593. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
  594. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
  595. package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
  596. package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
  597. package/dist/lib/types/v3-1-beta/index.mjs +0 -1
  598. package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
  599. package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
  600. /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
@@ -1,9 +1,22 @@
1
- import type { GetReportingStatusResponse, ReportingAdjustment, ReportingConsumerStatus, ReportingRevision } from '../../types';
1
+ import type { GetReportingStatusResponse, ReportingAdjustment, ReportingAdjustmentReceipt, ReportingConsumerStatus, ReportingMaterialization, ReportingReceipt, ReportingRevision } from '../../types';
2
2
  import type { AdcpToolMap, HandlerContext } from '../../server/create-adcp-server';
3
3
  import type { ErrorRecovery } from '../../types/error-codes';
4
+ import type { ReportingScheduleAlignment } from '../../types/core.generated';
4
5
  import type { ReportingSourceExecutorV1, ReportingSourceOfferingV1, ReportingSourceSliceRequestV1, ReportingSourceStagedObjectReaderV1, SourceBatchManifestReferenceV1 } from '../source';
6
+ /**
7
+ * Private-by-convention identity used to prove Core and Managed stores share
8
+ * one reporting authority. Store implementations may expose their own stable
9
+ * authority identity through this symbol; it is never serialized.
10
+ */
11
+ export declare const REPORTING_LEDGER_AUTHORITY: unique symbol;
12
+ /** Shared identity used by separately constructed Core and opt-in reporting stores. */
13
+ export interface ReportingLedgerAuthorityV1 {
14
+ readonly substrate: unknown;
15
+ readonly managedDelivery: boolean;
16
+ }
5
17
  export type ReportingHealthV1 = 'waiting' | 'healthy' | 'delayed' | 'action_required' | 'complete';
6
18
  export type ReportingFinalityV1 = 'snapshot' | 'official';
19
+ export type ReportingObservedFinalityV1 = 'none' | ReportingFinalityV1;
7
20
  export type ReportingLedgerAccountV1 = Readonly<{
8
21
  account_id: string;
9
22
  }>;
@@ -69,6 +82,20 @@ export interface ReportingLedgerConfigurationV1 {
69
82
  recoveryWindowMilliseconds: number;
70
83
  officialAfterMilliseconds?: number;
71
84
  restatementMilliseconds?: number[];
85
+ /**
86
+ * The exact schedule identity the offering advertised, echoed verbatim.
87
+ *
88
+ * `installed_schedule_match` requires period_duration, alignment, and the
89
+ * applicable period_timezone to equal the installed configuration, so these
90
+ * are preserved rather than re-derived: `P1D` must not come back as
91
+ * `PT86400S`, and a `source_timezone` schedule must not be reported as
92
+ * `utc` merely because its boundaries also sit on the UTC origin. Optional
93
+ * so generations installed before this field keep their fingerprint.
94
+ */
95
+ periodDuration?: string;
96
+ alignment?: ReportingScheduleAlignment;
97
+ periodTimezone?: string;
98
+ deliverySlaDuration?: string;
72
99
  };
73
100
  sourceSettings: ReportingSourceSliceRequestV1['sourceSettings'];
74
101
  contract: ReportingSourceSliceRequestV1['contract'];
@@ -353,10 +380,33 @@ export interface ReportingLedgerStatusTransitionV1 {
353
380
  reporting_obligation_id: string;
354
381
  previousHealth: ReportingHealthV1;
355
382
  health: ReportingHealthV1;
383
+ /** Finality visible immediately before this transition. Added in SDK 14. */
384
+ previousFinality?: ReportingObservedFinalityV1;
385
+ /** Finality visible at this transition. Added in SDK 14. */
386
+ finality?: ReportingObservedFinalityV1;
356
387
  issueIds: string[];
357
388
  occurredAt: string;
358
389
  notifiedAt?: string;
359
390
  }
391
+ /** Minimum transaction surface used by the bundled PostgreSQL ledger. */
392
+ export interface ReportingLedgerTransactionV1 {
393
+ query<Row extends Record<string, unknown> = Record<string, unknown>>(text: string, values?: unknown[]): Promise<{
394
+ rows: Row[];
395
+ rowCount: number | null;
396
+ }>;
397
+ }
398
+ /**
399
+ * Persists the durable consequence of a reporting lifecycle transition.
400
+ *
401
+ * The ledger store MUST call this port with its active authoritative
402
+ * transaction. Implementations must not perform network I/O from this method.
403
+ */
404
+ export interface ReportingLedgerNotificationActivityPortV1<TTransaction = unknown> {
405
+ recordTransition(input: {
406
+ transition: Readonly<ReportingLedgerStatusTransitionV1>;
407
+ obligation: Readonly<ReportingLedgerObligationV1>;
408
+ }, transaction: TTransaction): Promise<void>;
409
+ }
360
410
  export interface ReportingLedgerSubscriberV1 {
361
411
  subscriberId: string;
362
412
  account_id: string;
@@ -396,6 +446,31 @@ export interface ReportingLedgerSnapshotV1 {
396
446
  obligations: ReportingLedgerObligationV1[];
397
447
  revisions: ReportingLedgerRevisionSnapshotV1[];
398
448
  adjustments: ReportingLedgerAdjustmentSnapshotV1[];
449
+ /** Present only when the opt-in Managed Delivery migration is installed. */
450
+ managedBindings?: ReportingManagedDeliveryBindingV1[];
451
+ materializations?: ReportingMaterialization[];
452
+ /** Full immutable history; separate from authorization-aware health projection. */
453
+ materializationHistoryProjection?: ReportingMaterialization[];
454
+ materializationProjection?: ReportingMaterialization[];
455
+ /** Authenticated caller's receipts only; another consumer is never projected. */
456
+ receipts?: ReportingReceipt[];
457
+ receiptProjection?: ReportingReceipt[];
458
+ adjustmentReceipts?: ReportingAdjustmentReceipt[];
459
+ adjustmentReceiptProjection?: ReportingAdjustmentReceipt[];
460
+ /**
461
+ * Subjects whose accepted receipt body has been pruned.
462
+ *
463
+ * Retention removes bodies past the advertised horizon, but an accepted
464
+ * leaf is terminal forever. Without this the projection stops seeing the
465
+ * acceptance and reopens a settled subject.
466
+ */
467
+ tombstonedAcceptedSubjects?: Array<{
468
+ kind: 'revision' | 'adjustment';
469
+ subjectId: string;
470
+ consumerId: string;
471
+ }>;
472
+ /** Revisions whose successful materialization row has been pruned. */
473
+ tombstonedDeliveredRevisionIds?: readonly string[];
399
474
  consumerStatuses?: ReportingLedgerConsumerStatementV1[];
400
475
  /** Full scoped histories retained across changes_after for complete counts and current-leaf projection. */
401
476
  consumerStatusProjection?: ReportingLedgerConsumerStatementV1[];
@@ -406,6 +481,9 @@ export interface ReportingLedgerPageV1 {
406
481
  obligations: ReportingLedgerObligationV1[];
407
482
  revisions: ReportingLedgerRevisionSnapshotV1[];
408
483
  adjustments: ReportingLedgerAdjustmentSnapshotV1[];
484
+ materializations?: ReportingMaterialization[];
485
+ receipts?: ReportingReceipt[];
486
+ adjustmentReceipts?: ReportingAdjustmentReceipt[];
409
487
  consumerStatuses?: ReportingLedgerConsumerStatementV1[];
410
488
  totalCount: number;
411
489
  offset: number;
@@ -413,6 +491,152 @@ export interface ReportingLedgerPageV1 {
413
491
  hasMore: boolean;
414
492
  nextCursor?: string;
415
493
  }
494
+ /**
495
+ * Immutable opt-in binding between one Core configuration generation and one
496
+ * caller-owned destination authorization generation. Core configurations do
497
+ * not carry this shape and remain API-delivered.
498
+ */
499
+ export interface ReportingManagedDeliveryBindingV1 {
500
+ configurationId: string;
501
+ account_id: string;
502
+ delivery_config_id: string;
503
+ delivery_config_version: number;
504
+ destination_ref: string;
505
+ authorization_generation: number;
506
+ feed_purpose: 'pacing' | 'analytics' | 'billing';
507
+ method: ReportingMaterialization['method'];
508
+ transport?: string;
509
+ verification_profile: NonNullable<ReportingMaterialization['verification']>['verification_profile'];
510
+ reconciliation_mode: 'delivery_only' | 'consumer_receipt';
511
+ resource_retention_days: number;
512
+ created_at: string;
513
+ semantic_fingerprint: string;
514
+ }
515
+ /**
516
+ * Managed Delivery inputs the lifecycle reconciler needs to project the same
517
+ * health the read path projects.
518
+ *
519
+ * Reads are scoped to one authenticated consumer; a persisted transition is
520
+ * account-level, so receipts arrive grouped per consumer and the reconciler
521
+ * folds the per-consumer projections with `moreSevereReportingHealthV1`. The
522
+ * seller's obligation is only reconciled once every consumer that owes a
523
+ * receipt has accepted, so the most severe consumer is the truthful one.
524
+ */
525
+ export interface ReportingManagedLifecycleProjectionV1 {
526
+ binding: ReportingManagedDeliveryBindingV1;
527
+ /** Authorization-aware view: a revoked destination reads as `failed`. */
528
+ materializations: ReportingMaterialization[];
529
+ /** Full immutable history, independent of current authorization. */
530
+ materializationHistory: ReportingMaterialization[];
531
+ /** One entry per consumer that has submitted receipts; empty when none has. */
532
+ consumers: Array<{
533
+ consumer_id: string;
534
+ receipts: ReportingReceipt[];
535
+ adjustmentReceipts: ReportingAdjustmentReceipt[];
536
+ }>;
537
+ /**
538
+ * Principals that owe a receipt for this obligation, from trusted state.
539
+ *
540
+ * `consumers` alone is not a roster: it is only who has already submitted
541
+ * something. Aggregating it would let an authorized consumer that owes a
542
+ * receipt and has stayed silent vanish the moment another consumer accepts,
543
+ * so the account-level transition could report the obligation reconciled
544
+ * while that consumer's own read still says `action_required`. Entries here
545
+ * that have submitted nothing are projected with empty receipts.
546
+ */
547
+ obligatedConsumerIds?: readonly string[];
548
+ /**
549
+ * Set only when `obligatedConsumerIds` is provably the complete roster.
550
+ *
551
+ * The managed tables key destination authorizations and bindings by
552
+ * `(account_id, destination_ref, generation)` with no consumer dimension, so
553
+ * the SDK's own PostgreSQL store cannot prove completeness and leaves this
554
+ * false. While it is false the reconciler keeps projecting one additional
555
+ * zero-receipt consumer for a `consumer_receipt` binding, so the obligation
556
+ * is never reported reconciled on the strength of the consumers that
557
+ * happened to be observed. A seller whose authorization layer knows the
558
+ * roster should supply it and set this true to get accurate reconciled
559
+ * transitions.
560
+ */
561
+ obligatedConsumerRosterComplete?: boolean;
562
+ /**
563
+ * False when the store could not project every consumer's receipt evidence.
564
+ *
565
+ * A store bounds what it will hold in memory at once. Crossing that bound
566
+ * must not fail the reconcile — nothing about a retry makes a large tenant
567
+ * smaller — so the store truncates at a deterministic consumer boundary and
568
+ * says so here. An incomplete projection can never prove reconciliation, so
569
+ * the fold treats it exactly as it treats an unproven roster.
570
+ */
571
+ receiptEvidenceComplete?: boolean;
572
+ /**
573
+ * Adjustments this obligation had at the projection's cutoff.
574
+ *
575
+ * Adjustment bodies carry a producer-authored `createdAt`, which is a host
576
+ * clock; the cutoff is compared against the store's own ordering column. A
577
+ * store that can tell the two apart reports the cutoff-visible set here, and
578
+ * the reconciler folds only those — otherwise a fast producer clock hid a
579
+ * correction from the lifecycle while the public status still demanded a
580
+ * receipt for it.
581
+ */
582
+ visibleAdjustmentIds?: readonly string[];
583
+ /**
584
+ * Revisions this obligation had at the projection's cutoff.
585
+ *
586
+ * The managed evidence beside a revision is cutoff-bounded, so the revision
587
+ * set has to be too: one committed after the cutoff arrives with no
588
+ * materialization and no receipt in scope and reads as an unmet obligation.
589
+ * The CAS still fences on the full set — that is a concurrency check, not a
590
+ * statement about the moment being described.
591
+ */
592
+ visibleRevisionIds?: readonly string[];
593
+ /**
594
+ * Opaque token over the managed state this projection was computed from.
595
+ *
596
+ * The lifecycle CAS fences Core evidence — revision set, obligation state,
597
+ * attempt count, predecessor health — but managed state is read in a
598
+ * separate transaction, so a revocation, receipt, adjustment or
599
+ * materialization landing between projection and apply would be written over
600
+ * by a health computed before it existed. Pass it back through
601
+ * `applyLifecycleProjection` so a store that supplies one can refuse a stale
602
+ * apply.
603
+ */
604
+ managedStateVersion?: string;
605
+ /**
606
+ * Subjects whose accepted receipt body has been pruned, and revisions whose
607
+ * successful materialization has been pruned.
608
+ *
609
+ * Retention removes bodies; it must not remove conclusions. Without these
610
+ * the lifecycle recomputes an accepted subject as outstanding and a
611
+ * delivered revision as never delivered.
612
+ */
613
+ tombstonedAcceptedSubjects?: Array<{
614
+ kind: 'revision' | 'adjustment';
615
+ subjectId: string;
616
+ consumerId: string;
617
+ }>;
618
+ tombstonedDeliveredRevisionIds?: readonly string[];
619
+ /**
620
+ * The cutoff this projection actually used, at full database precision.
621
+ *
622
+ * A host `toISOString()` is millisecond-truncated while the underlying
623
+ * columns are microsecond timestamps, so a caller-taken "now" can sort
624
+ * before a row written in the same millisecond. A store that resolves its
625
+ * own instant reports it here, and the reconciler uses it for everything
626
+ * downstream so the projection, its token and the transition all describe
627
+ * one instant.
628
+ */
629
+ resolvedLedgerAsOf?: string;
630
+ /**
631
+ * Version of the externally supplied obligated-consumer roster.
632
+ *
633
+ * The roster is fetched outside the store's transaction, so it cannot be
634
+ * re-read inside the apply. It is versioned separately and re-checked just
635
+ * before the apply instead, which is what keeps a concurrent roster change
636
+ * from passing the CAS.
637
+ */
638
+ obligatedConsumerRosterVersion?: string;
639
+ }
416
640
  export interface ReportingLedgerLeaseV1 {
417
641
  obligation: ReportingLedgerObligationV1;
418
642
  owner: string;
@@ -430,6 +654,47 @@ export declare class ReportingConsumerStatusConflictError extends Error {
430
654
  constructor(message?: string);
431
655
  }
432
656
  export interface ReportingLedgerStore {
657
+ /** Optional substrate identity for an add-on store that must prove shared authority. */
658
+ readonly [REPORTING_LEDGER_AUTHORITY]?: ReportingLedgerAuthorityV1;
659
+ /**
660
+ * True when durable notification/activity intent is committed with transitions.
661
+ * Such stores must atomically stamp `notifiedAt` as the durable handoff marker.
662
+ */
663
+ readonly transactionalNotificationActivity?: boolean;
664
+ /**
665
+ * Resolves the authoritative observed finality of the obligation's latest
666
+ * transition.
667
+ *
668
+ * Transitions written from SDK 14 onward carry their own `finality`, so the
669
+ * baseline is read straight back off the committed row. Pre-SDK-14 rows carry
670
+ * none, and a store MUST NOT reconstruct one: nothing already stored proves
671
+ * which revisions had committed when such a row was recorded. Payload
672
+ * timestamps rank creation instants rather than commits, and insert wall
673
+ * clocks such as `clock_timestamp()` can repeat within a microsecond and step
674
+ * backward. Either rule can conclude `official`, which makes
675
+ * `previousFinality` equal `finality` and permanently suppresses the real
676
+ * snapshot→official change.
677
+ *
678
+ * Such rows therefore resolve to `'none'`, which the store persists so
679
+ * `applyLifecycleProjection` compares against the same committed value the
680
+ * lifecycle decision used. That records at most one redundant finality-only
681
+ * transition per obligation at upgrade, which stays internal activity because
682
+ * the AdCP status webhook is health-only.
683
+ *
684
+ * Optional for stores compiled against the pre-finality lifecycle port. Such
685
+ * stores must also ignore `expectedPreviousFinality`, and omitting the port
686
+ * is **not** equivalent to returning `'none'`: the lifecycle cannot persist a
687
+ * baseline on their behalf, so it uses the currently observed finality
688
+ * instead, making the comparison a no-op. Finality is simply unobservable
689
+ * there — health transitions still fire, finality-only ones never do, exactly
690
+ * as before finality existed. Returning `'none'` for such a store would
691
+ * instead make every reconciliation tick observe `'none' -> official` and
692
+ * append another finality-only transition, forever.
693
+ *
694
+ * So a store that wants finality-only activity at all must implement this
695
+ * port, and commit what it returns.
696
+ */
697
+ resolveTransitionFinalityBaseline?(reporting_obligation_id: string): Promise<ReportingObservedFinalityV1>;
433
698
  putConfiguration(configuration: ReportingLedgerConfigurationV1): Promise<{
434
699
  inserted: boolean;
435
700
  value: ReportingLedgerConfigurationV1;
@@ -487,16 +752,101 @@ export interface ReportingLedgerStore {
487
752
  reporting_obligation_id: string;
488
753
  expectedRevisionIds: string[];
489
754
  expectedPreviousHealth: ReportingHealthV1;
755
+ /**
756
+ * Baseline observed finality the caller decided against, as returned by
757
+ * `resolveTransitionFinalityBaseline`. Stores must compare it against that
758
+ * same committed baseline and never against a freshly reconstructed one.
759
+ * Optional for callers compiled against the pre-finality lifecycle port.
760
+ */
761
+ expectedPreviousFinality?: ReportingObservedFinalityV1;
490
762
  expectedObligationState: ReportingLedgerObligationV1['state'];
491
763
  expectedAttemptCount: number;
492
764
  projectedIssues: ReportingLedgerIssueV1[];
493
765
  ledgerAsOf: string;
494
766
  transition?: ReportingLedgerStatusTransitionV1;
767
+ /**
768
+ * Managed-state token from the projection this apply was computed from.
769
+ * A store that produces `managedStateVersion` MUST re-read it inside the
770
+ * apply transaction and return `applied: false` when it has moved, so a
771
+ * concurrent managed write cannot be overwritten by a stale health.
772
+ */
773
+ expectedManagedStateVersion?: string;
774
+ /**
775
+ * Watermark to record for this obligation, even when health did not move.
776
+ *
777
+ * Without it a managed change with no health effect leaves the obligation
778
+ * due forever, and a fair-ordered sweep keeps returning it ahead of work
779
+ * that has waited less.
780
+ */
781
+ processedManagedStateVersion?: string;
782
+ processedObligatedConsumerRosterVersion?: string;
783
+ /**
784
+ * Roster version this reconcile observed, for the same compare-and-set
785
+ * treatment as `expectedManagedStateVersion`.
786
+ *
787
+ * The roster lives outside the store, so the apply cannot re-read it.
788
+ * A store that records what readers observed MUST NOT overwrite a newer
789
+ * observation with this one: the due query compares the observed version
790
+ * with the processed one, so clobbering it drops the re-arm.
791
+ */
792
+ expectedObligatedConsumerRosterVersion?: string;
495
793
  }): Promise<{
496
794
  applied: boolean;
497
795
  transitionInserted: boolean;
498
796
  }>;
499
797
  markTransitionNotified(transitionId: string, notifiedAt: string): Promise<void>;
798
+ /**
799
+ * Managed Delivery projection inputs for one obligation.
800
+ *
801
+ * Optional on purpose: a Core-only ledger omits it and the lifecycle stays
802
+ * Core-only, exactly as before. A store that has the Managed Delivery
803
+ * migration installed must implement it, otherwise persisted transitions and
804
+ * webhooks would keep reporting Core health while `get_reporting_status`
805
+ * reports the composed managed health — the divergence this exists to close.
806
+ * Return `null` for an obligation whose configuration has no managed binding.
807
+ */
808
+ getManagedLifecycleProjection?(input: {
809
+ reporting_obligation_id: string;
810
+ /** Omit to let the store resolve an authoritative instant at full precision. */
811
+ ledgerAsOf?: string;
812
+ }): Promise<ReportingManagedLifecycleProjectionV1 | null>;
813
+ /**
814
+ * Re-reads the external obligated-consumer roster version immediately
815
+ * before an apply, outside any transaction.
816
+ */
817
+ readObligatedConsumerRosterVersion?(input: {
818
+ reporting_obligation_id: string;
819
+ }): Promise<string | undefined>;
820
+ /**
821
+ * An authoritative instant from the ledger's own clock, at full precision.
822
+ *
823
+ * Lifecycle cutoffs taken from a caller's `Date` are millisecond-truncated
824
+ * and may lag the database, which silently drops rows written in the same
825
+ * millisecond. Reconciliation prefers this when the caller has not pinned a
826
+ * cutoff, and always takes a fresh one before a retry.
827
+ */
828
+ readLedgerInstant?(): Promise<string>;
829
+ /**
830
+ * Records a failed reconcile so the obligation backs off rather than
831
+ * re-occupying the head of every sweep. It must not advance the
832
+ * reconciliation watermark: the work is still unresolved.
833
+ */
834
+ recordLifecycleFailure?(input: {
835
+ reporting_obligation_id: string;
836
+ }): Promise<void>;
837
+ /**
838
+ * Refreshes the recorded roster version for obligations that have one.
839
+ *
840
+ * The roster lives outside the database, so nothing here changes when it
841
+ * does. Publishing the version only during a reconcile is circular — a
842
+ * reconcile happens because the obligation is due, and a roster change is
843
+ * what should have made it due. A sweep calls this first so a change made
844
+ * while nothing was scheduled can still schedule something.
845
+ */
846
+ refreshObligatedConsumerRosterVersions?(input: {
847
+ account_id?: string;
848
+ limit: number;
849
+ }): Promise<number>;
500
850
  listTransitions(reporting_obligation_id: string): Promise<ReportingLedgerStatusTransitionV1[]>;
501
851
  listPendingTransitions(input?: {
502
852
  account_id?: string;
@@ -567,6 +917,13 @@ export interface ReportingProducerV1 {
567
917
  revisionsCommitted: number;
568
918
  notReady: number;
569
919
  failed: number;
920
+ /**
921
+ * Obligations whose durable work committed but whose projection could not
922
+ * be published on this pass. They stay due for the deadline sweep, which
923
+ * isolates and backs off per obligation; a non-zero count that does not
924
+ * clear is an operational signal, not a lost write.
925
+ */
926
+ reconcilesDeferred: number;
570
927
  }>;
571
928
  }
572
929
  export type ReportingSourceWithReaderV1 = ReportingSourceExecutorV1 & ReportingSourceStagedObjectReaderV1;
@@ -23,10 +23,12 @@ __export(types_exports, {
23
23
  REPORTING_CONSUMER_STATUS_ERROR_FIELD_MAX_BYTES: () => REPORTING_CONSUMER_STATUS_ERROR_FIELD_MAX_BYTES,
24
24
  REPORTING_CONSUMER_STATUS_ERROR_MESSAGE_MAX_BYTES: () => REPORTING_CONSUMER_STATUS_ERROR_MESSAGE_MAX_BYTES,
25
25
  REPORTING_CONSUMER_STATUS_MAX_BYTES: () => REPORTING_CONSUMER_STATUS_MAX_BYTES,
26
+ REPORTING_LEDGER_AUTHORITY: () => REPORTING_LEDGER_AUTHORITY,
26
27
  ReportingConsumerStatusConflictError: () => ReportingConsumerStatusConflictError,
27
28
  ReportingLedgerSnapshotUnavailableError: () => ReportingLedgerSnapshotUnavailableError
28
29
  });
29
30
  module.exports = __toCommonJS(types_exports);
31
+ const REPORTING_LEDGER_AUTHORITY = /* @__PURE__ */ Symbol.for("@adcp/sdk/reporting-ledger-authority");
30
32
  const REPORTING_CONSUMER_STATUS_ERROR_FIELD_MAX_BYTES = 1024;
31
33
  const REPORTING_CONSUMER_STATUS_ERROR_MESSAGE_MAX_BYTES = 1024;
32
34
  const REPORTING_CONSUMER_STATUS_MAX_BYTES = 64 * 1024;
@@ -55,6 +57,7 @@ class ReportingConsumerStatusConflictError extends Error {
55
57
  REPORTING_CONSUMER_STATUS_ERROR_FIELD_MAX_BYTES,
56
58
  REPORTING_CONSUMER_STATUS_ERROR_MESSAGE_MAX_BYTES,
57
59
  REPORTING_CONSUMER_STATUS_MAX_BYTES,
60
+ REPORTING_LEDGER_AUTHORITY,
58
61
  ReportingConsumerStatusConflictError,
59
62
  ReportingLedgerSnapshotUnavailableError
60
63
  });
@@ -1,3 +1,4 @@
1
+ const REPORTING_LEDGER_AUTHORITY = /* @__PURE__ */ Symbol.for("@adcp/sdk/reporting-ledger-authority");
1
2
  const REPORTING_CONSUMER_STATUS_ERROR_FIELD_MAX_BYTES = 1024;
2
3
  const REPORTING_CONSUMER_STATUS_ERROR_MESSAGE_MAX_BYTES = 1024;
3
4
  const REPORTING_CONSUMER_STATUS_MAX_BYTES = 64 * 1024;
@@ -25,6 +26,7 @@ export {
25
26
  REPORTING_CONSUMER_STATUS_ERROR_FIELD_MAX_BYTES,
26
27
  REPORTING_CONSUMER_STATUS_ERROR_MESSAGE_MAX_BYTES,
27
28
  REPORTING_CONSUMER_STATUS_MAX_BYTES,
29
+ REPORTING_LEDGER_AUTHORITY,
28
30
  ReportingConsumerStatusConflictError,
29
31
  ReportingLedgerSnapshotUnavailableError
30
32
  };
@@ -0,0 +1,35 @@
1
+ import { type ReportingSourceManifestV1, type ReportingSourceSliceRequestV1 } from '../source/index.mjs';
2
+ import type { ReliableReportingAdapterV1, ReliableReportingConfigurationInputV1, ReliableReportingInstallContextV1, ReliableReportingServiceV1 } from './index.mjs';
3
+ export interface ReliableReportingServiceConformanceOptionsV1<TCtxMeta = Record<string, unknown>> {
4
+ service: ReliableReportingServiceV1<TCtxMeta>;
5
+ adapter: ReliableReportingAdapterV1;
6
+ replayRequest: ReportingSourceSliceRequestV1;
7
+ primary: {
8
+ context: ReliableReportingInstallContextV1<TCtxMeta>;
9
+ configuration: ReliableReportingConfigurationInputV1 & {
10
+ expectedCurrency: string;
11
+ };
12
+ };
13
+ isolated: {
14
+ context: ReliableReportingInstallContextV1<TCtxMeta>;
15
+ configuration: ReliableReportingConfigurationInputV1 & {
16
+ expectedCurrency: string;
17
+ };
18
+ };
19
+ }
20
+ export interface ReliableReportingServiceConformanceResultV1 {
21
+ checks: readonly [
22
+ 'adapter_replay',
23
+ 'account_isolation',
24
+ 'frozen_currency',
25
+ 'lifecycle_start_stop',
26
+ 'capability_truthfulness'
27
+ ];
28
+ manifest: ReportingSourceManifestV1;
29
+ }
30
+ /**
31
+ * Exercise the invariants every Core installation must preserve. Use an
32
+ * isolated conformance ledger: the helper intentionally installs two durable
33
+ * configurations and starts the lifecycle once.
34
+ */
35
+ export declare function runReliableReportingServiceConformanceV1<TCtxMeta = Record<string, unknown>>(options: ReliableReportingServiceConformanceOptionsV1<TCtxMeta>): Promise<ReliableReportingServiceConformanceResultV1>;
@@ -0,0 +1,35 @@
1
+ import { type ReportingSourceManifestV1, type ReportingSourceSliceRequestV1 } from '../source';
2
+ import type { ReliableReportingAdapterV1, ReliableReportingConfigurationInputV1, ReliableReportingInstallContextV1, ReliableReportingServiceV1 } from './index';
3
+ export interface ReliableReportingServiceConformanceOptionsV1<TCtxMeta = Record<string, unknown>> {
4
+ service: ReliableReportingServiceV1<TCtxMeta>;
5
+ adapter: ReliableReportingAdapterV1;
6
+ replayRequest: ReportingSourceSliceRequestV1;
7
+ primary: {
8
+ context: ReliableReportingInstallContextV1<TCtxMeta>;
9
+ configuration: ReliableReportingConfigurationInputV1 & {
10
+ expectedCurrency: string;
11
+ };
12
+ };
13
+ isolated: {
14
+ context: ReliableReportingInstallContextV1<TCtxMeta>;
15
+ configuration: ReliableReportingConfigurationInputV1 & {
16
+ expectedCurrency: string;
17
+ };
18
+ };
19
+ }
20
+ export interface ReliableReportingServiceConformanceResultV1 {
21
+ checks: readonly [
22
+ 'adapter_replay',
23
+ 'account_isolation',
24
+ 'frozen_currency',
25
+ 'lifecycle_start_stop',
26
+ 'capability_truthfulness'
27
+ ];
28
+ manifest: ReportingSourceManifestV1;
29
+ }
30
+ /**
31
+ * Exercise the invariants every Core installation must preserve. Use an
32
+ * isolated conformance ledger: the helper intentionally installs two durable
33
+ * configurations and starts the lifecycle once.
34
+ */
35
+ export declare function runReliableReportingServiceConformanceV1<TCtxMeta = Record<string, unknown>>(options: ReliableReportingServiceConformanceOptionsV1<TCtxMeta>): Promise<ReliableReportingServiceConformanceResultV1>;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var conformance_exports = {};
20
+ __export(conformance_exports, {
21
+ runReliableReportingServiceConformanceV1: () => runReliableReportingServiceConformanceV1
22
+ });
23
+ module.exports = __toCommonJS(conformance_exports);
24
+ var import_source = require('../source/index.js');
25
+ async function runReliableReportingServiceConformanceV1(options) {
26
+ const source = options.adapter.executor ?? (0, import_source.createInlineReportingSourceExecutor)(options.adapter.fetchSlice, options.adapter.sourceOffering);
27
+ const manifest = await (0, import_source.runReportingSourceReplayConformanceV1)({
28
+ level: "basic",
29
+ executor: source,
30
+ objectReader: source,
31
+ request: structuredClone(options.replayRequest)
32
+ });
33
+ const first = await options.service.installConfiguration(options.primary.configuration, options.primary.context);
34
+ const replay = await options.service.installConfiguration(options.primary.configuration, options.primary.context);
35
+ const isolated = await options.service.installConfiguration(options.isolated.configuration, options.isolated.context);
36
+ if (first.configurationId !== replay.configurationId || first.semanticFingerprint !== replay.semanticFingerprint) {
37
+ throw new Error("Reliable reporting configuration replay was not idempotent");
38
+ }
39
+ if (first.account.account_id === isolated.account.account_id || first.configurationId === isolated.configurationId || first.account.account_id !== options.primary.context.account.id || isolated.account.account_id !== options.isolated.context.account.id) {
40
+ throw new Error("Reliable reporting configuration identity is not account isolated");
41
+ }
42
+ if (first.sourceSettings.currency !== options.primary.configuration.expectedCurrency || isolated.sourceSettings.currency !== options.isolated.configuration.expectedCurrency) {
43
+ throw new Error("Reliable reporting configuration did not freeze trusted currency");
44
+ }
45
+ assertTruthfulCoreCapabilities(options.service);
46
+ options.service.start({ intervalMilliseconds: 6e4, accountIds: [] });
47
+ if (!options.service.running) throw new Error("Reliable reporting lifecycle did not start");
48
+ await options.service.stop();
49
+ if (options.service.running) throw new Error("Reliable reporting lifecycle did not stop");
50
+ return {
51
+ checks: [
52
+ "adapter_replay",
53
+ "account_isolation",
54
+ "frozen_currency",
55
+ "lifecycle_start_stop",
56
+ "capability_truthfulness"
57
+ ],
58
+ manifest
59
+ };
60
+ }
61
+ function assertTruthfulCoreCapabilities(service) {
62
+ const capabilities = service.capabilities;
63
+ for (const forbidden of [
64
+ "managed_delivery",
65
+ "reconciled_billing",
66
+ "receipt_task",
67
+ "readiness_notification",
68
+ "status_notification",
69
+ "ledger_notification",
70
+ "supports_webhook_activity"
71
+ ]) {
72
+ if (capabilities[forbidden] !== void 0) {
73
+ throw new Error(`Reliable Reporting Core must not advertise ${forbidden}`);
74
+ }
75
+ }
76
+ if (capabilities.consumer_status_task !== void 0 !== (service.platform.syncReportingStatus !== void 0)) {
77
+ throw new Error("Reliable reporting consumer-status capability does not match its installed handler");
78
+ }
79
+ if (capabilities.consumer_mismatch_escalation_seconds !== void 0 && capabilities.consumer_status_task !== "sync_reporting_status") {
80
+ throw new Error("Reliable reporting mismatch escalation requires the consumer-status task");
81
+ }
82
+ if (capabilities.status_task !== "get_reporting_status" || capabilities.revision_content_task !== "get_media_buy_delivery") {
83
+ throw new Error("Reliable reporting capability does not match its installed read handlers");
84
+ }
85
+ }
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ runReliableReportingServiceConformanceV1
89
+ });