@adcp/client 4.22.1 → 4.24.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 (144) hide show
  1. package/README.md +23 -9
  2. package/bin/adcp.js +83 -18
  3. package/dist/lib/index.d.ts +3 -5
  4. package/dist/lib/index.d.ts.map +1 -1
  5. package/dist/lib/index.js +16 -12
  6. package/dist/lib/index.js.map +1 -1
  7. package/dist/lib/server/index.d.ts +5 -1
  8. package/dist/lib/server/index.d.ts.map +1 -1
  9. package/dist/lib/server/index.js +10 -1
  10. package/dist/lib/server/index.js.map +1 -1
  11. package/dist/lib/server/postgres-task-store.d.ts +105 -0
  12. package/dist/lib/server/postgres-task-store.d.ts.map +1 -0
  13. package/dist/lib/server/postgres-task-store.js +267 -0
  14. package/dist/lib/server/postgres-task-store.js.map +1 -0
  15. package/dist/lib/server/responses.d.ts +1 -0
  16. package/dist/lib/server/responses.d.ts.map +1 -1
  17. package/dist/lib/server/responses.js +1 -0
  18. package/dist/lib/server/responses.js.map +1 -1
  19. package/dist/lib/server/test-controller.d.ts +88 -0
  20. package/dist/lib/server/test-controller.d.ts.map +1 -0
  21. package/dist/lib/server/test-controller.js +227 -0
  22. package/dist/lib/server/test-controller.js.map +1 -0
  23. package/dist/lib/testing/agent-tester.d.ts +1 -1
  24. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  25. package/dist/lib/testing/agent-tester.js +13 -1
  26. package/dist/lib/testing/agent-tester.js.map +1 -1
  27. package/dist/lib/testing/compliance/comply.d.ts +24 -5
  28. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  29. package/dist/lib/testing/compliance/comply.js +318 -277
  30. package/dist/lib/testing/compliance/comply.js.map +1 -1
  31. package/dist/lib/testing/compliance/index.d.ts +2 -1
  32. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  33. package/dist/lib/testing/compliance/index.js +6 -1
  34. package/dist/lib/testing/compliance/index.js.map +1 -1
  35. package/dist/lib/testing/compliance/platform-storyboards.d.ts +44 -0
  36. package/dist/lib/testing/compliance/platform-storyboards.d.ts.map +1 -0
  37. package/dist/lib/testing/compliance/platform-storyboards.js +232 -0
  38. package/dist/lib/testing/compliance/platform-storyboards.js.map +1 -0
  39. package/dist/lib/testing/compliance/storyboard-tracks.d.ts +2 -9
  40. package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -1
  41. package/dist/lib/testing/compliance/storyboard-tracks.js +15 -46
  42. package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -1
  43. package/dist/lib/testing/compliance/types.d.ts +22 -1
  44. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  45. package/dist/lib/testing/index.d.ts +1 -1
  46. package/dist/lib/testing/index.d.ts.map +1 -1
  47. package/dist/lib/testing/index.js +6 -1
  48. package/dist/lib/testing/index.js.map +1 -1
  49. package/dist/lib/testing/orchestrator.d.ts.map +1 -1
  50. package/dist/lib/testing/orchestrator.js +5 -1
  51. package/dist/lib/testing/orchestrator.js.map +1 -1
  52. package/dist/lib/testing/scenarios/brand-rights.d.ts +19 -1
  53. package/dist/lib/testing/scenarios/brand-rights.d.ts.map +1 -1
  54. package/dist/lib/testing/scenarios/brand-rights.js +138 -1
  55. package/dist/lib/testing/scenarios/brand-rights.js.map +1 -1
  56. package/dist/lib/testing/scenarios/deterministic.js +7 -7
  57. package/dist/lib/testing/scenarios/deterministic.js.map +1 -1
  58. package/dist/lib/testing/scenarios/index.d.ts +1 -1
  59. package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
  60. package/dist/lib/testing/scenarios/index.js +4 -2
  61. package/dist/lib/testing/scenarios/index.js.map +1 -1
  62. package/dist/lib/testing/scenarios/media-buy.js +4 -4
  63. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  64. package/dist/lib/testing/storyboard/loader.d.ts +1 -0
  65. package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
  66. package/dist/lib/testing/storyboard/loader.js +14 -0
  67. package/dist/lib/testing/storyboard/loader.js.map +1 -1
  68. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  69. package/dist/lib/testing/storyboard/request-builder.js +88 -11
  70. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  71. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  72. package/dist/lib/testing/storyboard/runner.js +83 -5
  73. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  74. package/dist/lib/testing/storyboard/task-map.d.ts +2 -0
  75. package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
  76. package/dist/lib/testing/storyboard/task-map.js +23 -9
  77. package/dist/lib/testing/storyboard/task-map.js.map +1 -1
  78. package/dist/lib/testing/storyboard/types.d.ts +6 -2
  79. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  80. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  81. package/dist/lib/testing/storyboard/validations.js +21 -4
  82. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  83. package/dist/lib/testing/types.d.ts +1 -1
  84. package/dist/lib/testing/types.d.ts.map +1 -1
  85. package/dist/lib/types/core.generated.d.ts +242 -3
  86. package/dist/lib/types/core.generated.d.ts.map +1 -1
  87. package/dist/lib/types/core.generated.js +1 -1
  88. package/dist/lib/types/schemas.generated.d.ts +3697 -3468
  89. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  90. package/dist/lib/types/schemas.generated.js +226 -118
  91. package/dist/lib/types/schemas.generated.js.map +1 -1
  92. package/dist/lib/types/tools.generated.d.ts +281 -79
  93. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  94. package/dist/lib/utils/capabilities.d.ts +2 -2
  95. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  96. package/dist/lib/utils/capabilities.js +9 -3
  97. package/dist/lib/utils/capabilities.js.map +1 -1
  98. package/dist/lib/utils/response-schemas.d.ts.map +1 -1
  99. package/dist/lib/utils/response-schemas.js +9 -0
  100. package/dist/lib/utils/response-schemas.js.map +1 -1
  101. package/dist/lib/version.d.ts +3 -3
  102. package/dist/lib/version.js +3 -3
  103. package/docs/llms.txt +56 -32
  104. package/package.json +8 -2
  105. package/skills/adcp/SKILL.md +118 -33
  106. package/skills/build-creative-agent/SKILL.md +221 -0
  107. package/skills/build-generative-seller-agent/SKILL.md +288 -0
  108. package/skills/build-retail-media-agent/SKILL.md +237 -0
  109. package/skills/build-seller-agent/SKILL.md +313 -0
  110. package/skills/build-signals-agent/SKILL.md +203 -0
  111. package/storyboards/audience_sync.yaml +18 -29
  112. package/storyboards/behavioral_analysis.yaml +40 -72
  113. package/storyboards/brand_rights.yaml +172 -75
  114. package/storyboards/campaign_governance_conditions.yaml +187 -0
  115. package/storyboards/campaign_governance_delivery.yaml +231 -0
  116. package/storyboards/campaign_governance_denied.yaml +136 -0
  117. package/storyboards/capability_discovery.yaml +106 -0
  118. package/storyboards/content_standards.yaml +251 -0
  119. package/storyboards/creative_ad_server.yaml +108 -16
  120. package/storyboards/creative_generative.yaml +317 -0
  121. package/storyboards/creative_lifecycle.yaml +284 -0
  122. package/storyboards/creative_sales_agent.yaml +2 -6
  123. package/storyboards/creative_template.yaml +3 -6
  124. package/storyboards/deterministic_testing.yaml +271 -245
  125. package/storyboards/error_compliance.yaml +105 -108
  126. package/storyboards/media_buy_catalog_creative.yaml +8 -5
  127. package/storyboards/media_buy_generative_seller.yaml +581 -0
  128. package/storyboards/media_buy_governance_escalation.yaml +10 -6
  129. package/storyboards/media_buy_guaranteed_approval.yaml +21 -19
  130. package/storyboards/media_buy_non_guaranteed.yaml +9 -8
  131. package/storyboards/media_buy_proposal_mode.yaml +12 -11
  132. package/storyboards/media_buy_seller.yaml +161 -173
  133. package/storyboards/media_buy_state_machine.yaml +102 -101
  134. package/storyboards/property_governance.yaml +239 -0
  135. package/storyboards/schema.yaml +3 -2
  136. package/storyboards/schema_validation.yaml +58 -51
  137. package/storyboards/si_session.yaml +99 -317
  138. package/storyboards/signal_marketplace.yaml +9 -5
  139. package/storyboards/signal_owned.yaml +6 -5
  140. package/storyboards/social_platform.yaml +274 -0
  141. package/storyboards/test-kits/acme-outdoor.yaml +118 -0
  142. package/storyboards/test-kits/nova-motors.yaml +134 -0
  143. package/storyboards/governance_content_standards.yaml +0 -213
  144. package/storyboards/governance_property_lists.yaml +0 -372
@@ -3,15 +3,11 @@ version: "1.0.0"
3
3
  title: "Guaranteed media buy with human IO approval"
4
4
  category: media_buy_guaranteed_approval
5
5
  summary: "Seller agent that requires human-in-the-loop IO signing before guaranteed media buys go live."
6
- platform_types:
7
- - display_ad_server
8
- - video_ad_server
9
- - audio_platform
10
- - linear_tv_platform
11
-
12
6
  track: media_buy
13
7
  required_tools:
8
+ - get_products
14
9
  - create_media_buy
10
+
15
11
  narrative: |
16
12
  You run a sell-side platform that requires human approval before guaranteed media buys go
17
13
  live. When a buyer creates a guaranteed buy, your platform returns a submitted status with
@@ -20,7 +16,7 @@ narrative: |
20
16
 
21
17
  The buyer either polls get_media_buys or configures a push_notification_config webhook to
22
18
  receive a callback when the IO is signed. Once approved, the media buy transitions from
23
- pending_approval to confirmed/active and the buyer can sync creatives and monitor delivery.
19
+ pending_approval to active and the buyer can sync creatives and monitor delivery.
24
20
 
25
21
  This storyboard isolates the guaranteed approval path — the async handshake between agent
26
22
  automation and human decision-making that makes guaranteed buys work in practice.
@@ -114,6 +110,7 @@ phases:
114
110
  schema_ref: "media-buy/get-products-request.json"
115
111
  response_schema_ref: "media-buy/get-products-response.json"
116
112
  doc_ref: "/media-buy/task-reference/get_products"
113
+ comply_scenario: full_sales_flow
117
114
  stateful: false
118
115
  expected: |
119
116
  Return guaranteed products matching the brief. Each product should include:
@@ -172,6 +169,7 @@ phases:
172
169
  schema_ref: "media-buy/create-media-buy-request.json"
173
170
  response_schema_ref: "media-buy/create-media-buy-response.json"
174
171
  doc_ref: "/media-buy/task-reference/create_media_buy"
172
+ comply_scenario: create_media_buy
175
173
  stateful: true
176
174
  expected: |
177
175
  Return the media buy in submitted status:
@@ -229,6 +227,7 @@ phases:
229
227
  schema_ref: "media-buy/get-media-buys-request.json"
230
228
  response_schema_ref: "media-buy/get-media-buys-response.json"
231
229
  doc_ref: "/media-buy/task-reference/get_media_buys"
230
+ comply_scenario: media_buy_lifecycle
232
231
  stateful: true
233
232
  expected: |
234
233
  Return the media buy in pending_approval status:
@@ -265,28 +264,29 @@ phases:
265
264
  narrative: |
266
265
  The human has reviewed the IO and signed it through the setup URL. The buyer
267
266
  polls get_media_buys again (or received a webhook notification) and sees that the
268
- media buy has transitioned from pending_approval to confirmed or active. The buy
267
+ media buy has transitioned from pending_approval to active. The buy
269
268
  is now live.
270
269
 
271
270
  steps:
272
- - id: get_media_buys_confirmed
273
- title: "Check media buy status (confirmed/active)"
271
+ - id: get_media_buys_active
272
+ title: "Check media buy status (active)"
274
273
  narrative: |
275
274
  After the human signs the IO, the buyer checks the media buy status again.
276
- Your platform returns confirmed or active, indicating the buy is approved
275
+ Your platform returns active, indicating the buy is approved
277
276
  and inventory is reserved.
278
277
  task: get_media_buys
279
278
  schema_ref: "media-buy/get-media-buys-request.json"
280
279
  response_schema_ref: "media-buy/get-media-buys-response.json"
281
280
  doc_ref: "/media-buy/task-reference/get_media_buys"
281
+ comply_scenario: media_buy_lifecycle
282
282
  stateful: true
283
283
  expected: |
284
- Return the media buy in confirmed or active status:
284
+ Return the media buy in active status:
285
285
  - media_buy_id: matches the buy created earlier
286
- - status: confirmed or active (IO has been signed)
286
+ - status: active (IO has been signed)
287
287
  - confirmed_at: timestamp when the IO was signed
288
- - packages: line items now confirmed with reserved inventory
289
- - valid_actions: updated for confirmed state (creative sync, pause, etc.)
288
+ - packages: line items with reserved inventory
289
+ - valid_actions: updated for active state (creative sync, pause, etc.)
290
290
 
291
291
  sample_request:
292
292
  account:
@@ -301,15 +301,15 @@ phases:
301
301
  description: "Response matches get-media-buys-response.json schema"
302
302
  - check: field_present
303
303
  path: "media_buys[0].status"
304
- description: "Media buy status is confirmed or active"
304
+ description: "Media buy status is active"
305
305
  - check: field_present
306
306
  path: "media_buys[0].confirmed_at"
307
- description: "Confirmed buy includes a confirmed_at timestamp"
307
+ description: "Active buy includes a confirmed_at timestamp"
308
308
 
309
309
  - id: creative_sync
310
310
  title: "Creative sync"
311
311
  narrative: |
312
- With the IO signed and the media buy confirmed, the buyer syncs creative assets
312
+ With the IO signed and the media buy active, the buyer syncs creative assets
313
313
  to your platform. Each package has creative format requirements that the buyer
314
314
  discovered during product discovery.
315
315
 
@@ -323,6 +323,7 @@ phases:
323
323
  schema_ref: "creative/sync-creatives-request.json"
324
324
  response_schema_ref: "creative/sync-creatives-response.json"
325
325
  doc_ref: "/creative/task-reference/sync_creatives"
326
+ comply_scenario: creative_sync
326
327
  stateful: true
327
328
  expected: |
328
329
  Accept and validate creatives:
@@ -371,6 +372,7 @@ phases:
371
372
  schema_ref: "media-buy/get-media-buy-delivery-request.json"
372
373
  response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
373
374
  doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
375
+ comply_scenario: reporting_flow
374
376
  stateful: true
375
377
  expected: |
376
378
  Return delivery metrics for the guaranteed media buy:
@@ -392,5 +394,5 @@ phases:
392
394
  - check: response_schema
393
395
  description: "Response matches get-media-buy-delivery-response.json schema"
394
396
  - check: field_present
395
- path: "media_buys"
397
+ path: "media_buy_deliveries"
396
398
  description: "Response contains media buy delivery data"
@@ -3,15 +3,11 @@ version: "1.0.0"
3
3
  title: "Non-guaranteed auction-based media buy"
4
4
  category: media_buy_non_guaranteed
5
5
  summary: "Seller agent for auction-based, non-guaranteed buying where the buyer sets bid prices and budgets."
6
- platform_types:
7
- - social_platform
8
- - dsp
9
- - pmax_platform
10
- - generative_dsp
11
-
12
6
  track: media_buy
13
7
  required_tools:
8
+ - get_products
14
9
  - create_media_buy
10
+
15
11
  narrative: |
16
12
  You run a sell-side platform with auction-based inventory. Non-guaranteed buys don't
17
13
  require IOs or human approval — the buyer sets a bid price and budget, and your platform
@@ -66,6 +62,7 @@ phases:
66
62
  schema_ref: "media-buy/get-products-request.json"
67
63
  response_schema_ref: "media-buy/get-products-response.json"
68
64
  doc_ref: "/media-buy/task-reference/get_products"
65
+ comply_scenario: full_sales_flow
69
66
  stateful: false
70
67
  expected: |
71
68
  Return non-guaranteed products matching the brief. Each product should include:
@@ -122,11 +119,12 @@ phases:
122
119
  schema_ref: "media-buy/create-media-buy-request.json"
123
120
  response_schema_ref: "media-buy/create-media-buy-response.json"
124
121
  doc_ref: "/media-buy/task-reference/create_media_buy"
122
+ comply_scenario: create_media_buy
125
123
  stateful: true
126
124
  expected: |
127
125
  Return the media buy in completed status:
128
126
  - media_buy_id: your platform's identifier
129
- - status: confirmed or active (no async approval needed)
127
+ - status: active (no async approval needed)
130
128
  - confirmed_at: timestamp
131
129
  - packages: confirmed line items with bid prices acknowledged
132
130
  - valid_actions: pause, update_bid, get_delivery
@@ -178,6 +176,7 @@ phases:
178
176
  schema_ref: "media-buy/get-media-buys-request.json"
179
177
  response_schema_ref: "media-buy/get-media-buys-response.json"
180
178
  doc_ref: "/media-buy/task-reference/get_media_buys"
179
+ comply_scenario: media_buy_lifecycle
181
180
  stateful: true
182
181
  expected: |
183
182
  Return the media buy with pacing data:
@@ -219,6 +218,7 @@ phases:
219
218
  schema_ref: "media-buy/update-media-buy-request.json"
220
219
  response_schema_ref: "media-buy/update-media-buy-response.json"
221
220
  doc_ref: "/media-buy/task-reference/update_media_buy"
221
+ comply_scenario: media_buy_lifecycle
222
222
  stateful: true
223
223
  expected: |
224
224
  Apply the updates and return the modified media buy:
@@ -262,6 +262,7 @@ phases:
262
262
  schema_ref: "media-buy/get-media-buy-delivery-request.json"
263
263
  response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
264
264
  doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
265
+ comply_scenario: reporting_flow
265
266
  stateful: true
266
267
  expected: |
267
268
  Return delivery metrics for the non-guaranteed media buy:
@@ -284,5 +285,5 @@ phases:
284
285
  - check: response_schema
285
286
  description: "Response matches get-media-buy-delivery-response.json schema"
286
287
  - check: field_present
287
- path: "media_buys"
288
+ path: "media_buy_deliveries"
288
289
  description: "Response contains media buy delivery data"
@@ -3,16 +3,11 @@ version: "1.0.0"
3
3
  title: "Media buy via proposal acceptance"
4
4
  category: media_buy_proposal_mode
5
5
  summary: "Seller agent that generates curated media plan proposals the buyer can review, refine, and accept."
6
- platform_types:
7
- - dsp
8
- - retail_media
9
- - pmax_platform
10
- - generative_dsp
11
-
12
6
  track: media_buy
13
7
  required_tools:
14
- - create_media_buy
15
8
  - get_products
9
+ - create_media_buy
10
+
16
11
  narrative: |
17
12
  Your seller generates curated media plan proposals. The buyer sends a brief, your platform
18
13
  returns products alongside proposals — curated bundles with budget allocations and rationale
@@ -110,6 +105,7 @@ phases:
110
105
  schema_ref: "media-buy/get-products-request.json"
111
106
  response_schema_ref: "media-buy/get-products-response.json"
112
107
  doc_ref: "/media-buy/task-reference/get_products"
108
+ comply_scenario: full_sales_flow
113
109
  stateful: false
114
110
  expected: |
115
111
  Return products and proposals matching the brief:
@@ -164,6 +160,7 @@ phases:
164
160
  schema_ref: "media-buy/get-products-request.json"
165
161
  response_schema_ref: "media-buy/get-products-response.json"
166
162
  doc_ref: "/media-buy/task-reference/get_products"
163
+ comply_scenario: full_sales_flow
167
164
  stateful: true
168
165
  expected: |
169
166
  Return the refined proposal:
@@ -200,7 +197,7 @@ phases:
200
197
  The buyer is satisfied with the refined proposal and accepts it by creating a
201
198
  media buy with the proposal_id. Instead of specifying individual packages, the
202
199
  buyer passes the proposal_id and total_budget. Your platform converts the proposal
203
- into a confirmed media buy with the exact product selections and budget allocations
200
+ into an active media buy with the exact product selections and budget allocations
204
201
  from the proposal.
205
202
 
206
203
  steps:
@@ -217,11 +214,12 @@ phases:
217
214
  schema_ref: "media-buy/create-media-buy-request.json"
218
215
  response_schema_ref: "media-buy/create-media-buy-response.json"
219
216
  doc_ref: "/media-buy/task-reference/create_media_buy"
217
+ comply_scenario: create_media_buy
220
218
  stateful: true
221
219
  expected: |
222
- Convert the proposal into a confirmed media buy:
220
+ Convert the proposal into an active media buy:
223
221
  - media_buy_id: your platform's identifier
224
- - status: confirmed or active
222
+ - status: active
225
223
  - confirmed_at: timestamp
226
224
  - packages: line items derived from the proposal's budget allocations
227
225
  - proposal_id: echoed back to confirm which proposal was accepted
@@ -260,6 +258,7 @@ phases:
260
258
  schema_ref: "creative/list-creative-formats-request.json"
261
259
  response_schema_ref: "creative/list-creative-formats-response.json"
262
260
  doc_ref: "/creative/task-reference/list_creative_formats"
261
+ comply_scenario: creative_lifecycle
263
262
  stateful: false
264
263
  expected: |
265
264
  Return creative formats your platform accepts. Each format should define:
@@ -286,6 +285,7 @@ phases:
286
285
  schema_ref: "creative/sync-creatives-request.json"
287
286
  response_schema_ref: "creative/sync-creatives-response.json"
288
287
  doc_ref: "/creative/task-reference/sync_creatives"
288
+ comply_scenario: creative_sync
289
289
  stateful: true
290
290
  expected: |
291
291
  Accept and validate creatives:
@@ -344,6 +344,7 @@ phases:
344
344
  schema_ref: "media-buy/get-media-buy-delivery-request.json"
345
345
  response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
346
346
  doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
347
+ comply_scenario: reporting_flow
347
348
  stateful: true
348
349
  expected: |
349
350
  Return delivery metrics for the media buy:
@@ -365,5 +366,5 @@ phases:
365
366
  - check: response_schema
366
367
  description: "Response matches get-media-buy-delivery-response.json schema"
367
368
  - check: field_present
368
- path: "media_buys"
369
+ path: "media_buy_deliveries"
369
370
  description: "Response contains media buy delivery data"