@adcp/sdk 5.25.0 → 6.0.0

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 (298) hide show
  1. package/README.md +45 -7
  2. package/dist/lib/compliance-fixtures/index.d.ts +1 -1
  3. package/dist/lib/compliance-fixtures/index.js +1 -1
  4. package/dist/lib/conformance/runners.d.ts.map +1 -1
  5. package/dist/lib/conformance/runners.js +13 -1
  6. package/dist/lib/conformance/runners.js.map +1 -1
  7. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  8. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  9. package/dist/lib/core/SingleAgentClient.js +15 -0
  10. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  11. package/dist/lib/core/TaskExecutor.d.ts +7 -0
  12. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  13. package/dist/lib/core/TaskExecutor.js +9 -2
  14. package/dist/lib/core/TaskExecutor.js.map +1 -1
  15. package/dist/lib/index.d.ts +1 -1
  16. package/dist/lib/index.d.ts.map +1 -1
  17. package/dist/lib/index.js +7 -8
  18. package/dist/lib/index.js.map +1 -1
  19. package/dist/lib/protocols/index.d.ts +3 -1
  20. package/dist/lib/protocols/index.d.ts.map +1 -1
  21. package/dist/lib/protocols/index.js +23 -14
  22. package/dist/lib/protocols/index.js.map +1 -1
  23. package/dist/lib/schemas/index.d.ts +1 -1
  24. package/dist/lib/schemas/index.js +1 -1
  25. package/dist/lib/server/create-adcp-server.d.ts +142 -11
  26. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  27. package/dist/lib/server/create-adcp-server.js +211 -2
  28. package/dist/lib/server/create-adcp-server.js.map +1 -1
  29. package/dist/lib/server/ctx-metadata/backends/memory.d.ts +27 -0
  30. package/dist/lib/server/ctx-metadata/backends/memory.d.ts.map +1 -0
  31. package/dist/lib/server/ctx-metadata/backends/memory.js +72 -0
  32. package/dist/lib/server/ctx-metadata/backends/memory.js.map +1 -0
  33. package/dist/lib/server/ctx-metadata/backends/pg.d.ts +62 -0
  34. package/dist/lib/server/ctx-metadata/backends/pg.d.ts.map +1 -0
  35. package/dist/lib/server/ctx-metadata/backends/pg.js +145 -0
  36. package/dist/lib/server/ctx-metadata/backends/pg.js.map +1 -0
  37. package/dist/lib/server/ctx-metadata/index.d.ts +15 -0
  38. package/dist/lib/server/ctx-metadata/index.d.ts.map +1 -0
  39. package/dist/lib/server/ctx-metadata/index.js +28 -0
  40. package/dist/lib/server/ctx-metadata/index.js.map +1 -0
  41. package/dist/lib/server/ctx-metadata/store.d.ts +177 -0
  42. package/dist/lib/server/ctx-metadata/store.d.ts.map +1 -0
  43. package/dist/lib/server/ctx-metadata/store.js +327 -0
  44. package/dist/lib/server/ctx-metadata/store.js.map +1 -0
  45. package/dist/lib/server/ctx-metadata/wire-shape.d.ts +55 -0
  46. package/dist/lib/server/ctx-metadata/wire-shape.d.ts.map +1 -0
  47. package/dist/lib/server/ctx-metadata/wire-shape.js +121 -0
  48. package/dist/lib/server/ctx-metadata/wire-shape.js.map +1 -0
  49. package/dist/lib/server/decisioning/account.d.ts +309 -0
  50. package/dist/lib/server/decisioning/account.d.ts.map +1 -0
  51. package/dist/lib/server/decisioning/account.js +102 -0
  52. package/dist/lib/server/decisioning/account.js.map +1 -0
  53. package/dist/lib/server/decisioning/admin-router.d.ts +75 -0
  54. package/dist/lib/server/decisioning/admin-router.d.ts.map +1 -0
  55. package/dist/lib/server/decisioning/admin-router.js +120 -0
  56. package/dist/lib/server/decisioning/admin-router.js.map +1 -0
  57. package/dist/lib/server/decisioning/assembly-helpers.d.ts +204 -0
  58. package/dist/lib/server/decisioning/assembly-helpers.d.ts.map +1 -0
  59. package/dist/lib/server/decisioning/assembly-helpers.js +173 -0
  60. package/dist/lib/server/decisioning/assembly-helpers.js.map +1 -0
  61. package/dist/lib/server/decisioning/async-outcome.d.ts +154 -0
  62. package/dist/lib/server/decisioning/async-outcome.d.ts.map +1 -0
  63. package/dist/lib/server/decisioning/async-outcome.js +239 -0
  64. package/dist/lib/server/decisioning/async-outcome.js.map +1 -0
  65. package/dist/lib/server/decisioning/capabilities.d.ts +251 -0
  66. package/dist/lib/server/decisioning/capabilities.d.ts.map +1 -0
  67. package/dist/lib/server/decisioning/capabilities.js +16 -0
  68. package/dist/lib/server/decisioning/capabilities.js.map +1 -0
  69. package/dist/lib/server/decisioning/context.d.ts +212 -0
  70. package/dist/lib/server/decisioning/context.d.ts.map +1 -0
  71. package/dist/lib/server/decisioning/context.js +26 -0
  72. package/dist/lib/server/decisioning/context.js.map +1 -0
  73. package/dist/lib/server/decisioning/errors-typed.d.ts +104 -0
  74. package/dist/lib/server/decisioning/errors-typed.d.ts.map +1 -0
  75. package/dist/lib/server/decisioning/errors-typed.js +304 -0
  76. package/dist/lib/server/decisioning/errors-typed.js.map +1 -0
  77. package/dist/lib/server/decisioning/helpers.d.ts +131 -0
  78. package/dist/lib/server/decisioning/helpers.d.ts.map +1 -0
  79. package/dist/lib/server/decisioning/helpers.js +134 -0
  80. package/dist/lib/server/decisioning/helpers.js.map +1 -0
  81. package/dist/lib/server/decisioning/index.d.ts +46 -0
  82. package/dist/lib/server/decisioning/index.d.ts.map +1 -0
  83. package/dist/lib/server/decisioning/index.js +120 -0
  84. package/dist/lib/server/decisioning/index.js.map +1 -0
  85. package/dist/lib/server/decisioning/list-helpers.d.ts +53 -0
  86. package/dist/lib/server/decisioning/list-helpers.d.ts.map +1 -0
  87. package/dist/lib/server/decisioning/list-helpers.js +96 -0
  88. package/dist/lib/server/decisioning/list-helpers.js.map +1 -0
  89. package/dist/lib/server/decisioning/manifest-helpers.d.ts +56 -0
  90. package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -0
  91. package/dist/lib/server/decisioning/manifest-helpers.js +78 -0
  92. package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -0
  93. package/dist/lib/server/decisioning/pagination.d.ts +21 -0
  94. package/dist/lib/server/decisioning/pagination.d.ts.map +1 -0
  95. package/dist/lib/server/decisioning/pagination.js +12 -0
  96. package/dist/lib/server/decisioning/pagination.js.map +1 -0
  97. package/dist/lib/server/decisioning/platform.d.ts +188 -0
  98. package/dist/lib/server/decisioning/platform.d.ts.map +1 -0
  99. package/dist/lib/server/decisioning/platform.js +19 -0
  100. package/dist/lib/server/decisioning/platform.js.map +1 -0
  101. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +510 -0
  102. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -0
  103. package/dist/lib/server/decisioning/runtime/from-platform.js +2196 -0
  104. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -0
  105. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts +114 -0
  106. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -0
  107. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +247 -0
  108. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -0
  109. package/dist/lib/server/decisioning/runtime/protocol-for-tool.d.ts +32 -0
  110. package/dist/lib/server/decisioning/runtime/protocol-for-tool.d.ts.map +1 -0
  111. package/dist/lib/server/decisioning/runtime/protocol-for-tool.js +127 -0
  112. package/dist/lib/server/decisioning/runtime/protocol-for-tool.js.map +1 -0
  113. package/dist/lib/server/decisioning/runtime/task-registry.d.ts +105 -0
  114. package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -0
  115. package/dist/lib/server/decisioning/runtime/task-registry.js +96 -0
  116. package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -0
  117. package/dist/lib/server/decisioning/runtime/to-context.d.ts +54 -0
  118. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -0
  119. package/dist/lib/server/decisioning/runtime/to-context.js +166 -0
  120. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -0
  121. package/dist/lib/server/decisioning/runtime/validate-platform.d.ts +20 -0
  122. package/dist/lib/server/decisioning/runtime/validate-platform.d.ts.map +1 -0
  123. package/dist/lib/server/decisioning/runtime/validate-platform.js +93 -0
  124. package/dist/lib/server/decisioning/runtime/validate-platform.js.map +1 -0
  125. package/dist/lib/server/decisioning/specialisms/audiences.d.ts +72 -0
  126. package/dist/lib/server/decisioning/specialisms/audiences.d.ts.map +1 -0
  127. package/dist/lib/server/decisioning/specialisms/audiences.js +15 -0
  128. package/dist/lib/server/decisioning/specialisms/audiences.js.map +1 -0
  129. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts +92 -0
  130. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts.map +1 -0
  131. package/dist/lib/server/decisioning/specialisms/brand-rights.js +28 -0
  132. package/dist/lib/server/decisioning/specialisms/brand-rights.js.map +1 -0
  133. package/dist/lib/server/decisioning/specialisms/campaign-governance.d.ts +67 -0
  134. package/dist/lib/server/decisioning/specialisms/campaign-governance.d.ts.map +1 -0
  135. package/dist/lib/server/decisioning/specialisms/campaign-governance.js +31 -0
  136. package/dist/lib/server/decisioning/specialisms/campaign-governance.js.map +1 -0
  137. package/dist/lib/server/decisioning/specialisms/content-standards.d.ts +78 -0
  138. package/dist/lib/server/decisioning/specialisms/content-standards.d.ts.map +1 -0
  139. package/dist/lib/server/decisioning/specialisms/content-standards.js +35 -0
  140. package/dist/lib/server/decisioning/specialisms/content-standards.js.map +1 -0
  141. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +81 -0
  142. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -0
  143. package/dist/lib/server/decisioning/specialisms/creative-ad-server.js +28 -0
  144. package/dist/lib/server/decisioning/specialisms/creative-ad-server.js.map +1 -0
  145. package/dist/lib/server/decisioning/specialisms/creative.d.ts +144 -0
  146. package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -0
  147. package/dist/lib/server/decisioning/specialisms/creative.js +19 -0
  148. package/dist/lib/server/decisioning/specialisms/creative.js.map +1 -0
  149. package/dist/lib/server/decisioning/specialisms/lists.d.ts +61 -0
  150. package/dist/lib/server/decisioning/specialisms/lists.d.ts.map +1 -0
  151. package/dist/lib/server/decisioning/specialisms/lists.js +30 -0
  152. package/dist/lib/server/decisioning/specialisms/lists.js.map +1 -0
  153. package/dist/lib/server/decisioning/specialisms/sales.d.ts +163 -0
  154. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -0
  155. package/dist/lib/server/decisioning/specialisms/sales.js +64 -0
  156. package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -0
  157. package/dist/lib/server/decisioning/specialisms/signals.d.ts +64 -0
  158. package/dist/lib/server/decisioning/specialisms/signals.d.ts.map +1 -0
  159. package/dist/lib/server/decisioning/specialisms/signals.js +28 -0
  160. package/dist/lib/server/decisioning/specialisms/signals.js.map +1 -0
  161. package/dist/lib/server/decisioning/start-time.d.ts +76 -0
  162. package/dist/lib/server/decisioning/start-time.d.ts.map +1 -0
  163. package/dist/lib/server/decisioning/start-time.js +81 -0
  164. package/dist/lib/server/decisioning/start-time.js.map +1 -0
  165. package/dist/lib/server/decisioning/status-changes.d.ts +165 -0
  166. package/dist/lib/server/decisioning/status-changes.d.ts.map +1 -0
  167. package/dist/lib/server/decisioning/status-changes.js +131 -0
  168. package/dist/lib/server/decisioning/status-changes.js.map +1 -0
  169. package/dist/lib/server/decisioning/status-mappers.d.ts +46 -0
  170. package/dist/lib/server/decisioning/status-mappers.d.ts.map +1 -0
  171. package/dist/lib/server/decisioning/status-mappers.js +46 -0
  172. package/dist/lib/server/decisioning/status-mappers.js.map +1 -0
  173. package/dist/lib/server/decisioning/tenant-registry.d.ts +289 -0
  174. package/dist/lib/server/decisioning/tenant-registry.d.ts.map +1 -0
  175. package/dist/lib/server/decisioning/tenant-registry.js +503 -0
  176. package/dist/lib/server/decisioning/tenant-registry.js.map +1 -0
  177. package/dist/lib/server/express-adapter.d.ts +1 -1
  178. package/dist/lib/server/express-adapter.js +1 -1
  179. package/dist/lib/server/governance.d.ts +1 -1
  180. package/dist/lib/server/governance.js +1 -1
  181. package/dist/lib/server/idempotency/store.d.ts +1 -1
  182. package/dist/lib/server/idempotency/store.js +1 -1
  183. package/dist/lib/server/index.d.ts +9 -2
  184. package/dist/lib/server/index.d.ts.map +1 -1
  185. package/dist/lib/server/index.js +79 -4
  186. package/dist/lib/server/index.js.map +1 -1
  187. package/dist/lib/server/legacy/v5/index.d.ts +38 -0
  188. package/dist/lib/server/legacy/v5/index.d.ts.map +1 -0
  189. package/dist/lib/server/legacy/v5/index.js +60 -0
  190. package/dist/lib/server/legacy/v5/index.js.map +1 -0
  191. package/dist/lib/server/normalize-errors.d.ts +88 -0
  192. package/dist/lib/server/normalize-errors.d.ts.map +1 -0
  193. package/dist/lib/server/normalize-errors.js +146 -0
  194. package/dist/lib/server/normalize-errors.js.map +1 -0
  195. package/dist/lib/server/pick-safe-details.d.ts +90 -0
  196. package/dist/lib/server/pick-safe-details.d.ts.map +1 -0
  197. package/dist/lib/server/pick-safe-details.js +148 -0
  198. package/dist/lib/server/pick-safe-details.js.map +1 -0
  199. package/dist/lib/server/postgres-state-store.d.ts +1 -1
  200. package/dist/lib/server/postgres-state-store.js +1 -1
  201. package/dist/lib/server/responses.d.ts +38 -0
  202. package/dist/lib/server/responses.d.ts.map +1 -1
  203. package/dist/lib/server/responses.js +38 -0
  204. package/dist/lib/server/responses.js.map +1 -1
  205. package/dist/lib/server/state-store.d.ts +1 -1
  206. package/dist/lib/server/state-store.js +1 -1
  207. package/dist/lib/server/test-controller.d.ts +10 -3
  208. package/dist/lib/server/test-controller.d.ts.map +1 -1
  209. package/dist/lib/server/test-controller.js +10 -3
  210. package/dist/lib/server/test-controller.js.map +1 -1
  211. package/dist/lib/testing/comply-controller.d.ts +47 -1
  212. package/dist/lib/testing/comply-controller.d.ts.map +1 -1
  213. package/dist/lib/testing/comply-controller.js +11 -4
  214. package/dist/lib/testing/comply-controller.js.map +1 -1
  215. package/dist/lib/testing/index.d.ts +1 -1
  216. package/dist/lib/testing/index.d.ts.map +1 -1
  217. package/dist/lib/testing/index.js.map +1 -1
  218. package/dist/lib/testing/personas/index.d.ts +143 -0
  219. package/dist/lib/testing/personas/index.d.ts.map +1 -0
  220. package/dist/lib/testing/personas/index.js +190 -0
  221. package/dist/lib/testing/personas/index.js.map +1 -0
  222. package/dist/lib/testing/storyboard/index.d.ts +1 -1
  223. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  224. package/dist/lib/testing/storyboard/index.js +3 -2
  225. package/dist/lib/testing/storyboard/index.js.map +1 -1
  226. package/dist/lib/testing/storyboard/runner.d.ts +13 -0
  227. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  228. package/dist/lib/testing/storyboard/runner.js +179 -7
  229. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  230. package/dist/lib/types/adcp.d.ts.map +1 -1
  231. package/dist/lib/types/adcp.js +1 -0
  232. package/dist/lib/types/adcp.js.map +1 -1
  233. package/dist/lib/types/asset-instances.d.ts +1 -0
  234. package/dist/lib/types/asset-instances.d.ts.map +1 -1
  235. package/dist/lib/types/core.generated.d.ts +203 -98
  236. package/dist/lib/types/core.generated.d.ts.map +1 -1
  237. package/dist/lib/types/core.generated.js +1 -1
  238. package/dist/lib/types/index.d.ts +1 -0
  239. package/dist/lib/types/index.d.ts.map +1 -1
  240. package/dist/lib/types/index.js.map +1 -1
  241. package/dist/lib/types/schemas.generated.d.ts +599 -159
  242. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  243. package/dist/lib/types/schemas.generated.js +175 -94
  244. package/dist/lib/types/schemas.generated.js.map +1 -1
  245. package/dist/lib/types/tools.generated.d.ts +315 -46
  246. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  247. package/dist/lib/utils/capabilities.d.ts +1 -1
  248. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  249. package/dist/lib/utils/capabilities.js +6 -0
  250. package/dist/lib/utils/capabilities.js.map +1 -1
  251. package/dist/lib/validation/schema-validator.d.ts +13 -0
  252. package/dist/lib/validation/schema-validator.d.ts.map +1 -1
  253. package/dist/lib/validation/schema-validator.js +240 -3
  254. package/dist/lib/validation/schema-validator.js.map +1 -1
  255. package/dist/lib/version.d.ts +3 -3
  256. package/dist/lib/version.d.ts.map +1 -1
  257. package/dist/lib/version.js +3 -3
  258. package/dist/lib/version.js.map +1 -1
  259. package/docs/guides/BUILD-AN-AGENT.md +30 -5
  260. package/docs/llms.txt +28 -17
  261. package/examples/README.md +3 -1
  262. package/examples/decisioning-platform-broadcast-tv.ts +300 -0
  263. package/examples/decisioning-platform-identity-graph.ts +214 -0
  264. package/examples/decisioning-platform-mock-seller.ts +332 -0
  265. package/examples/decisioning-platform-multi-tenant.ts +128 -0
  266. package/examples/decisioning-platform-programmatic.ts +254 -0
  267. package/examples/signals-agent.ts +1 -1
  268. package/package.json +13 -2
  269. package/skills/build-brand-rights-agent/SKILL.md +10 -3
  270. package/skills/build-creative-agent/SKILL.md +94 -64
  271. package/skills/build-decisioning-creative-template/SKILL.md +554 -0
  272. package/skills/build-decisioning-platform/SKILL.md +304 -0
  273. package/skills/build-decisioning-platform/advanced/BRAND-RIGHTS.md +25 -0
  274. package/skills/build-decisioning-platform/advanced/COMPLIANCE.md +23 -0
  275. package/skills/build-decisioning-platform/advanced/GOVERNANCE.md +24 -0
  276. package/skills/build-decisioning-platform/advanced/HITL.md +34 -0
  277. package/skills/build-decisioning-platform/advanced/IDEMPOTENCY.md +52 -0
  278. package/skills/build-decisioning-platform/advanced/MULTI-TENANT.md +47 -0
  279. package/skills/build-decisioning-platform/advanced/OAUTH.md +22 -0
  280. package/skills/build-decisioning-platform/advanced/REFERENCE.md +991 -0
  281. package/skills/build-decisioning-platform/advanced/SANDBOX.md +24 -0
  282. package/skills/build-decisioning-platform/advanced/STATE-MACHINE.md +52 -0
  283. package/skills/build-decisioning-signal-marketplace/SKILL.md +269 -0
  284. package/skills/build-generative-seller-agent/SKILL.md +89 -53
  285. package/skills/build-governance-agent/SKILL.md +76 -45
  286. package/skills/build-retail-media-agent/SKILL.md +87 -62
  287. package/skills/build-seller-agent/SKILL.md +384 -255
  288. package/skills/build-seller-agent/deployment.md +5 -3
  289. package/skills/build-seller-agent/specialisms/audience-sync.md +0 -2
  290. package/skills/build-seller-agent/specialisms/sales-broadcast-tv.md +0 -2
  291. package/skills/build-seller-agent/specialisms/sales-guaranteed.md +0 -2
  292. package/skills/build-seller-agent/specialisms/sales-non-guaranteed.md +0 -2
  293. package/skills/build-seller-agent/specialisms/sales-proposal-mode.md +0 -2
  294. package/skills/build-seller-agent/specialisms/sales-social.md +0 -2
  295. package/skills/build-seller-agent/specialisms/signed-requests.md +0 -2
  296. package/skills/build-si-agent/SKILL.md +40 -32
  297. package/skills/build-signals-agent/SKILL.md +139 -92
  298. package/skills/call-adcp-agent.previous/SKILL.md +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-outcome.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/async-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,k8BA8CpB,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AA+B3D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAChC,QAAQ,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGzC,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAC/B,OAAO,EAAE;QACP,QAAQ,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;QACnD,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC;IAYH,kFAAkF;IAClF,iBAAiB,IAAI,mBAAmB;IAYxC;;;;;;OAMG;IACM,QAAQ,IAAI,MAAM;CAG5B;AAMD;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,EAAE,OAAO,MAAqD,CAAC;AAavF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,WAAW,CAAC,OAAO;IAClC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;CASrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * Error vocabulary + structured error class for `DecisioningPlatform`.
4
+ *
5
+ * Adopters write per-tool methods (sync OR `*Task` HITL variant), return
6
+ * the success value, or `throw new AdcpError(...)` for structured rejection.
7
+ * The framework projects the structured fields onto the wire `adcp_error`
8
+ * envelope; generic thrown errors map to `SERVICE_UNAVAILABLE`.
9
+ *
10
+ * `AsyncOutcome<T>` and the `ok` / `submitted` / `rejected` constructors
11
+ * remain as the framework's internal projection vocabulary; adopter code
12
+ * doesn't return them.
13
+ *
14
+ * Status: Preview / 6.0.
15
+ *
16
+ * @public
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.AdcpError = exports.KNOWN_ERROR_CODES = void 0;
20
+ exports._createTaskHandoff = _createTaskHandoff;
21
+ exports.isTaskHandoff = isTaskHandoff;
22
+ exports._extractTaskFn = _extractTaskFn;
23
+ /**
24
+ * Error code vocabulary mirroring `schemas/cache/3.0.0/enums/error-code.json`
25
+ * (45 standard codes). Adopters can return platform-specific codes too —
26
+ * agents fall back to the `recovery` classification on unknowns via the
27
+ * `(string & {})` escape hatch on `AdcpStructuredError.code`.
28
+ *
29
+ * TODO(6.0): generate this from `schemas/cache/<version>/enums/error-code.json`
30
+ * via the same codegen pipeline as the rest of `tools.generated.ts`.
31
+ */
32
+ exports.KNOWN_ERROR_CODES = [
33
+ 'INVALID_REQUEST',
34
+ 'AUTH_REQUIRED',
35
+ 'RATE_LIMITED',
36
+ 'SERVICE_UNAVAILABLE',
37
+ 'POLICY_VIOLATION',
38
+ 'PRODUCT_NOT_FOUND',
39
+ 'PRODUCT_UNAVAILABLE',
40
+ 'PRODUCT_EXPIRED',
41
+ 'PROPOSAL_EXPIRED',
42
+ 'PROPOSAL_NOT_COMMITTED',
43
+ 'BUDGET_TOO_LOW',
44
+ 'BUDGET_EXHAUSTED',
45
+ 'BUDGET_EXCEEDED',
46
+ 'CREATIVE_REJECTED',
47
+ 'CREATIVE_DEADLINE_EXCEEDED',
48
+ 'CREATIVE_NOT_FOUND',
49
+ 'UNSUPPORTED_FEATURE',
50
+ 'AUDIENCE_TOO_SMALL',
51
+ 'ACCOUNT_NOT_FOUND',
52
+ 'ACCOUNT_SETUP_REQUIRED',
53
+ 'ACCOUNT_AMBIGUOUS',
54
+ 'ACCOUNT_PAYMENT_REQUIRED',
55
+ 'ACCOUNT_SUSPENDED',
56
+ 'COMPLIANCE_UNSATISFIED',
57
+ 'GOVERNANCE_DENIED',
58
+ 'GOVERNANCE_UNAVAILABLE',
59
+ 'CAMPAIGN_SUSPENDED',
60
+ 'CONFLICT',
61
+ 'IDEMPOTENCY_CONFLICT',
62
+ 'IDEMPOTENCY_EXPIRED',
63
+ 'INVALID_STATE',
64
+ 'IO_REQUIRED',
65
+ 'MEDIA_BUY_NOT_FOUND',
66
+ 'NOT_CANCELLABLE',
67
+ 'PACKAGE_NOT_FOUND',
68
+ 'PERMISSION_DENIED',
69
+ 'PLAN_NOT_FOUND',
70
+ 'REFERENCE_NOT_FOUND',
71
+ 'REQUOTE_REQUIRED',
72
+ 'SESSION_NOT_FOUND',
73
+ 'SESSION_TERMINATED',
74
+ 'SIGNAL_NOT_FOUND',
75
+ 'TERMS_REJECTED',
76
+ 'VALIDATION_ERROR',
77
+ 'VERSION_UNSUPPORTED',
78
+ ];
79
+ const KNOWN_ERROR_CODE_SET = new Set(exports.KNOWN_ERROR_CODES);
80
+ /**
81
+ * Detect typoed error codes in `AdcpError` constructor calls. The
82
+ * `code: ErrorCode | (string & {})` escape hatch keeps platform-specific
83
+ * codes available, but it also defeats autocomplete on misspellings —
84
+ * `'BUDGET_TO_LOW'` (typo) compiles fine. The runtime warns once per
85
+ * unknown code so `npm run dev` log review surfaces typos before they
86
+ * ship to a buyer who can't pattern-match `recovery`.
87
+ *
88
+ * Set `ADCP_DECISIONING_ALLOW_CUSTOM_CODES=1` to silence the warn for
89
+ * platforms that intentionally mint vendor-specific codes
90
+ * (`'GAM_INTERNAL_QUOTA_EXCEEDED'` etc.).
91
+ */
92
+ const warnedUnknownCodes = new Set();
93
+ function maybeWarnUnknownErrorCode(code) {
94
+ if (KNOWN_ERROR_CODE_SET.has(code))
95
+ return;
96
+ if (process.env.ADCP_DECISIONING_ALLOW_CUSTOM_CODES === '1')
97
+ return;
98
+ if (warnedUnknownCodes.has(code))
99
+ return;
100
+ warnedUnknownCodes.add(code);
101
+ // eslint-disable-next-line no-console
102
+ console.warn(`[adcp/decisioning] AdcpError code "${code}" is not in the known ErrorCode set ` +
103
+ `(45 standard codes per schemas/cache/3.0.0/enums/error-code.json). ` +
104
+ `If this is intentional (vendor-specific code), set ADCP_DECISIONING_ALLOW_CUSTOM_CODES=1. ` +
105
+ `Otherwise check spelling against the ErrorCode union.`);
106
+ }
107
+ /**
108
+ * Throwable structured error. Adopter code throws this to fail a specialism
109
+ * method with a buyer-facing wire envelope.
110
+ *
111
+ * ```ts
112
+ * createMediaBuy: async (req, ctx) => {
113
+ * if (req.total_budget.amount < this.floor) {
114
+ * throw new AdcpError('BUDGET_TOO_LOW', {
115
+ * recovery: 'correctable',
116
+ * message: `Floor is $${this.floor} CPM`,
117
+ * field: 'total_budget.amount',
118
+ * });
119
+ * }
120
+ * return await this.gam.createOrder(req);
121
+ * }
122
+ * ```
123
+ *
124
+ * Framework catches `AdcpError` from any specialism method and projects
125
+ * the structured fields onto the wire `adcp_error` envelope.
126
+ * Generic thrown errors map to `SERVICE_UNAVAILABLE` with `recovery: 'transient'`.
127
+ */
128
+ class AdcpError extends Error {
129
+ name = 'AdcpError';
130
+ code;
131
+ recovery;
132
+ field;
133
+ suggestion;
134
+ retry_after;
135
+ details;
136
+ constructor(code, options) {
137
+ super(options.message);
138
+ this.code = code;
139
+ this.recovery = options.recovery;
140
+ maybeWarnUnknownErrorCode(code);
141
+ if (options.field !== undefined)
142
+ this.field = options.field;
143
+ if (options.suggestion !== undefined)
144
+ this.suggestion = options.suggestion;
145
+ if (options.retry_after !== undefined)
146
+ this.retry_after = options.retry_after;
147
+ if (options.details !== undefined)
148
+ this.details = options.details;
149
+ }
150
+ /** Coerce to the structured envelope shape the framework projects to the wire. */
151
+ toStructuredError() {
152
+ return {
153
+ code: this.code,
154
+ recovery: this.recovery,
155
+ message: this.message,
156
+ ...(this.field !== undefined && { field: this.field }),
157
+ ...(this.suggestion !== undefined && { suggestion: this.suggestion }),
158
+ ...(this.retry_after !== undefined && { retry_after: this.retry_after }),
159
+ ...(this.details !== undefined && { details: this.details }),
160
+ };
161
+ }
162
+ /**
163
+ * Override `Error.toString` so default `console.error(err)` /
164
+ * CloudWatch / structured-log adopters see the `code` and `recovery`
165
+ * alongside the message rather than the bare `AdcpError: <message>`
166
+ * default. Triage in operator dashboards needs the code more than
167
+ * the stack.
168
+ */
169
+ toString() {
170
+ return `AdcpError [${this.code}, ${this.recovery}]: ${this.message}`;
171
+ }
172
+ }
173
+ exports.AdcpError = AdcpError;
174
+ // ---------------------------------------------------------------------------
175
+ // TaskHandoff — unified hybrid-seller shape
176
+ // ---------------------------------------------------------------------------
177
+ /**
178
+ * Brand value framework checks at the dispatch seam to detect "this method
179
+ * is handing off to a task." Module-level constant so adopters can't construct
180
+ * one without going through `ctx.handoffToTask(fn)`.
181
+ */
182
+ const TASK_HANDOFF_BRAND = Symbol.for('@adcp/decisioning/task-handoff');
183
+ /**
184
+ * The handoff function lives in a WeakMap keyed by the `TaskHandoff`
185
+ * marker object — NOT on the marker itself. This means the framework
186
+ * can extract the function (it has the WeakMap reference) but adopters
187
+ * holding only a `TaskHandoff<T>` value cannot invoke or inspect it.
188
+ * Closes round-6 CR-3 / Protocol-L2: `_taskFn` was previously a
189
+ * type-visible field that adopters could forge with their own
190
+ * `Symbol.for(...)` call.
191
+ */
192
+ const taskHandoffFns = new WeakMap();
193
+ /**
194
+ * Construct a `TaskHandoff<T>` marker. The framework's `ctx.handoffToTask`
195
+ * helper invokes this; adopters don't call it directly.
196
+ *
197
+ * The `fn` is stashed in a module-private WeakMap keyed by the marker
198
+ * object. Adopters can hold the marker and pass it through return
199
+ * values, but cannot extract or invoke `fn` themselves — only the
200
+ * framework's `_extractTaskFn` can.
201
+ *
202
+ * @internal
203
+ */
204
+ function _createTaskHandoff(fn) {
205
+ // Frozen object so adopters can't mutate the brand field. Even if
206
+ // they did, the dispatch seam keys on identity (WeakMap), not on
207
+ // mutable structure.
208
+ const marker = Object.freeze({ [TASK_HANDOFF_BRAND]: true });
209
+ taskHandoffFns.set(marker, fn);
210
+ return marker;
211
+ }
212
+ /**
213
+ * Type guard — does the value the adopter returned mark a task handoff?
214
+ *
215
+ * Checks both the symbol brand AND WeakMap presence. An adopter who
216
+ * forges `{ [TASK_HANDOFF_BRAND]: true }` without going through
217
+ * `_createTaskHandoff` won't be in the WeakMap and the guard returns
218
+ * false. Belt-and-suspenders against forgery.
219
+ *
220
+ * @internal
221
+ */
222
+ function isTaskHandoff(value) {
223
+ return (typeof value === 'object' &&
224
+ value !== null &&
225
+ value[TASK_HANDOFF_BRAND] === true &&
226
+ taskHandoffFns.has(value));
227
+ }
228
+ /**
229
+ * Extract the handoff function from a marker. Framework-only — the
230
+ * dispatch seam in `from-platform.ts` calls this after `isTaskHandoff`.
231
+ * Returns `undefined` if the marker wasn't created by `_createTaskHandoff`
232
+ * (forgery).
233
+ *
234
+ * @internal
235
+ */
236
+ function _extractTaskFn(handoff) {
237
+ return taskHandoffFns.get(handoff);
238
+ }
239
+ //# sourceMappingURL=async-outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-outcome.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/async-outcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ /**
2
+ * DecisioningCapabilities — single source of truth for `get_adcp_capabilities`
3
+ * response and any admin UI surface a host wants to render.
4
+ *
5
+ * Adopters declare once. Framework wires the wire-protocol response;
6
+ * adopters' admin tools (or the SDK CLI's `validate_platform_config`) consume
7
+ * the same dataclass so there's no drift between "what the agent says it
8
+ * supports" and "what it actually does."
9
+ *
10
+ * Status: Preview / 6.0.
11
+ *
12
+ * @public
13
+ */
14
+ import type { ZodSchema } from 'zod';
15
+ import type { AdCPSpecialism, MediaChannel, PricingModel, GetAdCPCapabilitiesResponse } from '../../types/tools.generated';
16
+ export interface DecisioningCapabilities<TConfig = unknown> {
17
+ /**
18
+ * Specialisms claimed; framework type-checks these against implemented platform
19
+ * interfaces. Arrays are `readonly` so adopters can declare with `as const`
20
+ * (load-bearing for the `RequiredPlatformsFor<S>` compile-time gate).
21
+ */
22
+ specialisms: readonly AdCPSpecialism[];
23
+ /**
24
+ * Creative agents this seller composes with. Framework fetches format catalogs
25
+ * from each (1h cache) and unions them on `list_creative_formats`. Self-hosting
26
+ * sellers point at their own `agent_url`; framework calls into their
27
+ * `CreativePlatform.listFormats()` locally instead of HTTP-fetching.
28
+ *
29
+ * `format_ids` filter (optional) subsets a single creative agent's catalog.
30
+ * Useful when a creative agent hosts 50 formats but this seller only accepts
31
+ * 10 of them. Filter scope is per-creative-agent: `[{ agent_url: A, format_ids: ['x'] }, { agent_url: B }]`
32
+ * means "from A only format x; from B all formats."
33
+ */
34
+ creative_agents: readonly CreativeAgentRef[];
35
+ /** Channels this platform sells. */
36
+ channels: readonly MediaChannel[];
37
+ /** Pricing models this platform supports. */
38
+ pricingModels: readonly PricingModel[];
39
+ /** Targeting capabilities. Optional — framework infers reasonable defaults if omitted. */
40
+ targeting?: TargetingCapabilities;
41
+ /** Reporting capabilities. Optional — framework infers reasonable defaults if omitted. */
42
+ reporting?: ReportingCapabilities;
43
+ /**
44
+ * Audience-matching capabilities — projected onto
45
+ * `get_adcp_capabilities.media_buy.audience_targeting`. Required for
46
+ * audience-sync adopters (CRM-list adopters that accept hashed
47
+ * identifiers + UID types) so buyers know which identifier shapes
48
+ * the platform will match against and what minimum audience size /
49
+ * matching latency to expect. Omit when the platform doesn't accept
50
+ * external audience uploads.
51
+ *
52
+ * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.audience_targeting`.
53
+ */
54
+ audience_targeting?: NonNullable<NonNullable<GetAdCPCapabilitiesResponse['media_buy']>['audience_targeting']>;
55
+ /**
56
+ * Conversion-tracking capabilities — projected onto
57
+ * `get_adcp_capabilities.media_buy.conversion_tracking`. Required for
58
+ * adopters that accept conversion events via `sync_event_sources` /
59
+ * `log_event` so buyers know which event types, action sources,
60
+ * attribution windows, and identifier shapes the platform supports.
61
+ * Omit when the platform doesn't track conversions.
62
+ *
63
+ * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.conversion_tracking`.
64
+ */
65
+ conversion_tracking?: NonNullable<NonNullable<GetAdCPCapabilitiesResponse['media_buy']>['conversion_tracking']>;
66
+ /**
67
+ * Content-standards capabilities — projected onto
68
+ * `get_adcp_capabilities.media_buy.content_standards`. Required for
69
+ * adopters claiming the `content-standards` specialism so buyers know
70
+ * whether the platform runs local evaluation, which channels it
71
+ * covers, and whether it supports webhook artifact delivery. Omit
72
+ * when the platform doesn't ship content-standards artifacts.
73
+ *
74
+ * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.content_standards`.
75
+ */
76
+ content_standards?: NonNullable<NonNullable<GetAdCPCapabilitiesResponse['media_buy']>['content_standards']>;
77
+ /**
78
+ * Brand-protocol capabilities. Projected onto the wire `brand` block of
79
+ * `get_adcp_capabilities` (`brand: { rights, right_types, available_uses,
80
+ * generation_providers, description }`). The framework auto-derives
81
+ * `rights: true` when `BrandRightsPlatform` is supplied; adopters
82
+ * declare the rest (right_types they license, RightUses they support,
83
+ * generation providers they issue credentials for).
84
+ *
85
+ * REQUIRED when claiming the `'brand-rights'` specialism — enforced at
86
+ * compile-time via `RequiredCapabilitiesFor<S>`.
87
+ */
88
+ brand?: BrandCapabilities;
89
+ /**
90
+ * Compliance-testing capabilities. The presence of this block declares
91
+ * the agent supports deterministic state-machine testing via the
92
+ * `comply_test_controller` wire tool. Omit entirely if the agent
93
+ * doesn't support compliance testing.
94
+ *
95
+ * When this block is present, `createAdcpServerFromPlatform` REQUIRES
96
+ * `opts.complyTest` (the `ComplyControllerConfig` adapter set) to be
97
+ * supplied — claiming the capability without implementing the
98
+ * controller is a `PlatformConfigError` at construction.
99
+ *
100
+ * Inversely, supplying `opts.complyTest` without declaring this
101
+ * capability is also caught — the framework derives `scenarios` from
102
+ * the declared force/simulate/seed adapters and emits the discovery
103
+ * field on `get_adcp_capabilities` automatically. Adopters who want
104
+ * to explicitly declare a narrower or wider scenarios list can supply
105
+ * this block; otherwise the auto-derivation wins.
106
+ */
107
+ compliance_testing?: ComplianceTestingCapabilities;
108
+ /**
109
+ * Billing parties this platform supports. `'operator'` = retail-media model
110
+ * (Criteo, Amazon — operator pays the publisher and bills the brand).
111
+ * `'agent'` = pass-through model (buyer's agent settles directly with the
112
+ * platform). Defaults to `['agent']` when omitted.
113
+ */
114
+ supportedBillings?: ReadonlyArray<'operator' | 'agent'>;
115
+ /**
116
+ * If true, this platform refuses transactions without an authenticated
117
+ * operator principal (operator-billed retail-media). Framework emits
118
+ * `AUTH_REQUIRED` envelope before dispatching to the platform.
119
+ */
120
+ requireOperatorAuth?: boolean;
121
+ /**
122
+ * Platform-specific config. Strongly typed when the adopter uses the generic.
123
+ * Example: `class GAM extends DecisioningPlatform<{ networkId: string }>`.
124
+ */
125
+ config: TConfig;
126
+ /**
127
+ * Optional Zod schema for runtime validation of `config`. When provided,
128
+ * framework validates at platform construction time; missing or wrong-shaped
129
+ * config rejects the agent at boot rather than at first request.
130
+ */
131
+ configSchema?: ZodSchema<TConfig>;
132
+ }
133
+ export interface CreativeAgentRef {
134
+ agent_url: string;
135
+ /** Human-readable label for this creative agent. */
136
+ name?: string;
137
+ /** Optional allowlist of `format_id.id` values from THIS agent's catalog. Omit to include all. */
138
+ format_ids?: string[];
139
+ }
140
+ /**
141
+ * Targeting capabilities the platform supports in `create_media_buy`. Maps
142
+ * to AdCP `GetAdcpCapabilitiesResponse.media_buy.execution.targeting`.
143
+ *
144
+ * Shape converged across two independently-evolved peer codebases (Scope3
145
+ * `agentic-adapters`, Prebid `salesagent`). Per-geo-system flags rather than
146
+ * coarse enums because the two implementations agreed: real platforms support
147
+ * specific geo identifier formats (Nielsen DMA, Eurostat NUTS2, US ZIP+4), not
148
+ * abstract "metro" / "postal" categories.
149
+ */
150
+ export interface TargetingCapabilities {
151
+ geo_countries?: boolean;
152
+ geo_regions?: boolean;
153
+ /** Metro / DMA identifier systems. */
154
+ geo_metros?: {
155
+ nielsen_dma?: boolean;
156
+ uk_itl1?: boolean;
157
+ uk_itl2?: boolean;
158
+ eurostat_nuts2?: boolean;
159
+ };
160
+ /** Postal-code identifier systems. */
161
+ geo_postal_areas?: {
162
+ us_zip?: boolean;
163
+ us_zip_plus_four?: boolean;
164
+ gb_outward?: boolean;
165
+ gb_full?: boolean;
166
+ ca_fsa?: boolean;
167
+ ca_full?: boolean;
168
+ de_plz?: boolean;
169
+ fr_code_postal?: boolean;
170
+ au_postcode?: boolean;
171
+ ch_plz?: boolean;
172
+ at_plz?: boolean;
173
+ };
174
+ /** Geographic-proximity targeting (radius / drive-time / arbitrary geometry). */
175
+ geo_proximity?: {
176
+ radius?: boolean;
177
+ travel_time?: boolean;
178
+ geometry?: boolean;
179
+ transport_modes?: ReadonlyArray<'walking' | 'cycling' | 'driving' | 'public_transport'>;
180
+ };
181
+ /** Age-restriction targeting; `verification_methods` enumerates the assurance levels accepted. */
182
+ age_restriction?: {
183
+ supported?: boolean;
184
+ verification_methods?: ReadonlyArray<'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id'>;
185
+ };
186
+ device_platform?: boolean;
187
+ device_type?: boolean;
188
+ language?: boolean;
189
+ audience_include?: boolean;
190
+ audience_exclude?: boolean;
191
+ /** Keyword-targeting match types accepted on positive-match terms. */
192
+ keyword_targets?: {
193
+ supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;
194
+ };
195
+ /** Negative-keyword match types accepted. */
196
+ negative_keywords?: {
197
+ supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;
198
+ };
199
+ }
200
+ /**
201
+ * Reporting capabilities the platform supports in `get_media_buy_delivery`.
202
+ *
203
+ * `availableDimensions` is the breakdown axes the platform can group
204
+ * delivery rows by. Vocabulary converged across Scope3 and Prebid.
205
+ */
206
+ export interface ReportingCapabilities {
207
+ frequencies: ReadonlyArray<'hourly' | 'daily' | 'weekly'>;
208
+ expected_delay_minutes: number;
209
+ timezone: string;
210
+ metrics: string[];
211
+ date_range_support: 'date_range' | 'fixed_only';
212
+ supports_webhooks: boolean;
213
+ availableDimensions?: ReadonlyArray<'geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item'>;
214
+ }
215
+ /**
216
+ * Brand-protocol capabilities — projected onto the wire `brand` block of
217
+ * `get_adcp_capabilities` via the framework's `overrides.brand` deep-merge
218
+ * seam. Adopters who also implement `BrandRightsPlatform` get
219
+ * `rights: true` auto-derived; the other four fields (`right_types`,
220
+ * `available_uses`, `generation_providers`, `description`) are
221
+ * adopter-declared.
222
+ *
223
+ * Wire spec: `protocol/get-adcp-capabilities-response.json#brand`.
224
+ */
225
+ export type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesResponse['brand']>>;
226
+ /**
227
+ * Compliance-testing capabilities — projected onto the wire-side
228
+ * `compliance_testing` block of `get_adcp_capabilities` so buyers and
229
+ * conformance harnesses can discover which `comply_test_controller`
230
+ * scenarios the agent supports.
231
+ *
232
+ * Wire spec: `core/get-adcp-capabilities-response.json#compliance_testing`.
233
+ *
234
+ * The `scenarios` array MUST be non-empty when this block is declared
235
+ * (per the spec). `'list_scenarios'` is implicit — adopters don't need
236
+ * to enumerate it.
237
+ */
238
+ export interface ComplianceTestingCapabilities {
239
+ /**
240
+ * Scenarios this agent advertises support for. Wire enum is the
241
+ * spec-narrowed force + simulate set; seed scenarios are
242
+ * deliberately NOT advertised here (the controller's own
243
+ * `list_scenarios` response follows the same rule). Adopters who
244
+ * wire seed adapters get them dispatched correctly at runtime; they
245
+ * just don't appear in capability discovery. Framework defaults
246
+ * this from the adopter-supplied `complyTest` adapter set when
247
+ * omitted.
248
+ */
249
+ scenarios?: ReadonlyArray<'force_creative_status' | 'force_account_status' | 'force_media_buy_status' | 'force_session_status' | 'simulate_delivery' | 'simulate_budget_spend'>;
250
+ }
251
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * DecisioningCapabilities — single source of truth for `get_adcp_capabilities`
4
+ * response and any admin UI surface a host wants to render.
5
+ *
6
+ * Adopters declare once. Framework wires the wire-protocol response;
7
+ * adopters' admin tools (or the SDK CLI's `validate_platform_config`) consume
8
+ * the same dataclass so there's no drift between "what the agent says it
9
+ * supports" and "what it actually does."
10
+ *
11
+ * Status: Preview / 6.0.
12
+ *
13
+ * @public
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/capabilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG"}