@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.
- package/README.md +23 -9
- package/bin/adcp.js +83 -18
- package/dist/lib/index.d.ts +3 -5
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +16 -12
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/server/index.d.ts +5 -1
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +10 -1
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/postgres-task-store.d.ts +105 -0
- package/dist/lib/server/postgres-task-store.d.ts.map +1 -0
- package/dist/lib/server/postgres-task-store.js +267 -0
- package/dist/lib/server/postgres-task-store.js.map +1 -0
- package/dist/lib/server/responses.d.ts +1 -0
- package/dist/lib/server/responses.d.ts.map +1 -1
- package/dist/lib/server/responses.js +1 -0
- package/dist/lib/server/responses.js.map +1 -1
- package/dist/lib/server/test-controller.d.ts +88 -0
- package/dist/lib/server/test-controller.d.ts.map +1 -0
- package/dist/lib/server/test-controller.js +227 -0
- package/dist/lib/server/test-controller.js.map +1 -0
- package/dist/lib/testing/agent-tester.d.ts +1 -1
- package/dist/lib/testing/agent-tester.d.ts.map +1 -1
- package/dist/lib/testing/agent-tester.js +13 -1
- package/dist/lib/testing/agent-tester.js.map +1 -1
- package/dist/lib/testing/compliance/comply.d.ts +24 -5
- package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
- package/dist/lib/testing/compliance/comply.js +318 -277
- package/dist/lib/testing/compliance/comply.js.map +1 -1
- package/dist/lib/testing/compliance/index.d.ts +2 -1
- package/dist/lib/testing/compliance/index.d.ts.map +1 -1
- package/dist/lib/testing/compliance/index.js +6 -1
- package/dist/lib/testing/compliance/index.js.map +1 -1
- package/dist/lib/testing/compliance/platform-storyboards.d.ts +44 -0
- package/dist/lib/testing/compliance/platform-storyboards.d.ts.map +1 -0
- package/dist/lib/testing/compliance/platform-storyboards.js +232 -0
- package/dist/lib/testing/compliance/platform-storyboards.js.map +1 -0
- package/dist/lib/testing/compliance/storyboard-tracks.d.ts +2 -9
- package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -1
- package/dist/lib/testing/compliance/storyboard-tracks.js +15 -46
- package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -1
- package/dist/lib/testing/compliance/types.d.ts +22 -1
- package/dist/lib/testing/compliance/types.d.ts.map +1 -1
- package/dist/lib/testing/index.d.ts +1 -1
- package/dist/lib/testing/index.d.ts.map +1 -1
- package/dist/lib/testing/index.js +6 -1
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/orchestrator.d.ts.map +1 -1
- package/dist/lib/testing/orchestrator.js +5 -1
- package/dist/lib/testing/orchestrator.js.map +1 -1
- package/dist/lib/testing/scenarios/brand-rights.d.ts +19 -1
- package/dist/lib/testing/scenarios/brand-rights.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/brand-rights.js +138 -1
- package/dist/lib/testing/scenarios/brand-rights.js.map +1 -1
- package/dist/lib/testing/scenarios/deterministic.js +7 -7
- package/dist/lib/testing/scenarios/deterministic.js.map +1 -1
- package/dist/lib/testing/scenarios/index.d.ts +1 -1
- package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/index.js +4 -2
- package/dist/lib/testing/scenarios/index.js.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.js +4 -4
- package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
- package/dist/lib/testing/storyboard/loader.d.ts +1 -0
- package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/loader.js +14 -0
- package/dist/lib/testing/storyboard/loader.js.map +1 -1
- package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-builder.js +88 -11
- package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +83 -5
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/testing/storyboard/task-map.d.ts +2 -0
- package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/task-map.js +23 -9
- package/dist/lib/testing/storyboard/task-map.js.map +1 -1
- package/dist/lib/testing/storyboard/types.d.ts +6 -2
- package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/validations.js +21 -4
- package/dist/lib/testing/storyboard/validations.js.map +1 -1
- package/dist/lib/testing/types.d.ts +1 -1
- package/dist/lib/testing/types.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +242 -3
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/schemas.generated.d.ts +3697 -3468
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +226 -118
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +281 -79
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +2 -2
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +9 -3
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/dist/lib/utils/response-schemas.d.ts.map +1 -1
- package/dist/lib/utils/response-schemas.js +9 -0
- package/dist/lib/utils/response-schemas.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/docs/llms.txt +56 -32
- package/package.json +8 -2
- package/skills/adcp/SKILL.md +118 -33
- package/skills/build-creative-agent/SKILL.md +221 -0
- package/skills/build-generative-seller-agent/SKILL.md +288 -0
- package/skills/build-retail-media-agent/SKILL.md +237 -0
- package/skills/build-seller-agent/SKILL.md +313 -0
- package/skills/build-signals-agent/SKILL.md +203 -0
- package/storyboards/audience_sync.yaml +18 -29
- package/storyboards/behavioral_analysis.yaml +40 -72
- package/storyboards/brand_rights.yaml +172 -75
- package/storyboards/campaign_governance_conditions.yaml +187 -0
- package/storyboards/campaign_governance_delivery.yaml +231 -0
- package/storyboards/campaign_governance_denied.yaml +136 -0
- package/storyboards/capability_discovery.yaml +106 -0
- package/storyboards/content_standards.yaml +251 -0
- package/storyboards/creative_ad_server.yaml +108 -16
- package/storyboards/creative_generative.yaml +317 -0
- package/storyboards/creative_lifecycle.yaml +284 -0
- package/storyboards/creative_sales_agent.yaml +2 -6
- package/storyboards/creative_template.yaml +3 -6
- package/storyboards/deterministic_testing.yaml +271 -245
- package/storyboards/error_compliance.yaml +105 -108
- package/storyboards/media_buy_catalog_creative.yaml +8 -5
- package/storyboards/media_buy_generative_seller.yaml +581 -0
- package/storyboards/media_buy_governance_escalation.yaml +10 -6
- package/storyboards/media_buy_guaranteed_approval.yaml +21 -19
- package/storyboards/media_buy_non_guaranteed.yaml +9 -8
- package/storyboards/media_buy_proposal_mode.yaml +12 -11
- package/storyboards/media_buy_seller.yaml +161 -173
- package/storyboards/media_buy_state_machine.yaml +102 -101
- package/storyboards/property_governance.yaml +239 -0
- package/storyboards/schema.yaml +3 -2
- package/storyboards/schema_validation.yaml +58 -51
- package/storyboards/si_session.yaml +99 -317
- package/storyboards/signal_marketplace.yaml +9 -5
- package/storyboards/signal_owned.yaml +6 -5
- package/storyboards/social_platform.yaml +274 -0
- package/storyboards/test-kits/acme-outdoor.yaml +118 -0
- package/storyboards/test-kits/nova-motors.yaml +134 -0
- package/storyboards/governance_content_standards.yaml +0 -213
- package/storyboards/governance_property_lists.yaml +0 -372
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
id: schema_validation
|
|
2
2
|
version: "1.0.0"
|
|
3
3
|
title: "Schema compliance and temporal validation"
|
|
4
|
-
category:
|
|
5
|
-
track: core
|
|
4
|
+
category: schema_validation
|
|
6
5
|
summary: "Validates that agent responses conform to AdCP schemas and that temporal constraints are enforced."
|
|
7
|
-
|
|
6
|
+
track: core
|
|
8
7
|
required_tools:
|
|
9
8
|
- get_products
|
|
10
9
|
|
|
@@ -29,13 +28,18 @@ caller:
|
|
|
29
28
|
role: buyer_agent
|
|
30
29
|
example: "Compliance test harness"
|
|
31
30
|
|
|
31
|
+
prerequisites:
|
|
32
|
+
description: |
|
|
33
|
+
The caller needs a brand identity for product discovery requests.
|
|
34
|
+
test_kit: "test-kits/acme-outdoor.yaml"
|
|
35
|
+
|
|
32
36
|
phases:
|
|
33
37
|
- id: schema_compliance
|
|
34
38
|
title: "Response schema compliance"
|
|
35
39
|
narrative: |
|
|
36
40
|
The buyer sends a standard get_products request and validates that the response
|
|
37
41
|
matches the published schema. Each product must have the required fields defined
|
|
38
|
-
in the AdCP spec
|
|
42
|
+
in the AdCP spec.
|
|
39
43
|
|
|
40
44
|
steps:
|
|
41
45
|
- id: get_products_schema
|
|
@@ -45,7 +49,10 @@ phases:
|
|
|
45
49
|
must conform to the get-products-response.json schema, with required v3 fields
|
|
46
50
|
present.
|
|
47
51
|
task: get_products
|
|
48
|
-
|
|
52
|
+
schema_ref: "media-buy/get-products-request.json"
|
|
53
|
+
response_schema_ref: "media-buy/get-products-response.json"
|
|
54
|
+
doc_ref: "/media-buy/task-reference/get_products"
|
|
55
|
+
comply_scenario: schema_compliance
|
|
49
56
|
stateful: false
|
|
50
57
|
expected: |
|
|
51
58
|
Return products matching the brief. Each product must have:
|
|
@@ -53,11 +60,13 @@ phases:
|
|
|
53
60
|
- name: human-readable name
|
|
54
61
|
- delivery_type: guaranteed or non_guaranteed
|
|
55
62
|
- pricing_options: at least one pricing option
|
|
63
|
+
|
|
56
64
|
sample_request:
|
|
57
65
|
buying_mode: "brief"
|
|
58
66
|
brief: "Show all available advertising products"
|
|
59
67
|
brand:
|
|
60
68
|
domain: "acmeoutdoor.com"
|
|
69
|
+
|
|
61
70
|
validations:
|
|
62
71
|
- check: response_schema
|
|
63
72
|
description: "Response matches get-products-response.json schema"
|
|
@@ -70,32 +79,31 @@ phases:
|
|
|
70
79
|
- check: field_present
|
|
71
80
|
path: "products[0].delivery_type"
|
|
72
81
|
description: "Each product declares guaranteed or non_guaranteed delivery"
|
|
73
|
-
- check: field_present
|
|
74
|
-
path: "products[0].name"
|
|
75
|
-
description: "Each product has a name"
|
|
76
82
|
|
|
77
83
|
- id: pricing_options_present
|
|
78
84
|
title: "Validate pricing options structure"
|
|
79
85
|
narrative: |
|
|
80
|
-
|
|
81
|
-
pricing_option_id and pricing_model. These are
|
|
86
|
+
Verify that products include pricing_options with the required fields:
|
|
87
|
+
pricing_option_id and pricing_model. These are required for buyers to
|
|
82
88
|
construct valid create_media_buy requests.
|
|
83
89
|
task: get_products
|
|
84
|
-
|
|
90
|
+
schema_ref: "media-buy/get-products-request.json"
|
|
91
|
+
response_schema_ref: "media-buy/get-products-response.json"
|
|
92
|
+
doc_ref: "/media-buy/task-reference/get_products"
|
|
93
|
+
comply_scenario: schema_compliance
|
|
85
94
|
stateful: false
|
|
86
95
|
expected: |
|
|
87
96
|
Products include pricing_options with:
|
|
88
97
|
- pricing_option_id: unique identifier for the pricing option
|
|
89
|
-
- pricing_model: CPM, CPC,
|
|
98
|
+
- pricing_model: CPM, CPC, flat_rate, etc.
|
|
99
|
+
|
|
90
100
|
sample_request:
|
|
91
101
|
buying_mode: "brief"
|
|
92
|
-
brief: "
|
|
102
|
+
brief: "Premium display inventory with pricing details"
|
|
93
103
|
brand:
|
|
94
104
|
domain: "acmeoutdoor.com"
|
|
105
|
+
|
|
95
106
|
validations:
|
|
96
|
-
- check: field_present
|
|
97
|
-
path: "products[0].pricing_options"
|
|
98
|
-
description: "Products include pricing_options array"
|
|
99
107
|
- check: field_present
|
|
100
108
|
path: "products[0].pricing_options[0].pricing_option_id"
|
|
101
109
|
description: "Pricing options have a pricing_option_id"
|
|
@@ -106,61 +114,60 @@ phases:
|
|
|
106
114
|
- id: temporal_validation
|
|
107
115
|
title: "Temporal constraint enforcement"
|
|
108
116
|
narrative: |
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
117
|
+
The buyer sends media buy requests with invalid temporal constraints. The agent
|
|
118
|
+
must reject reversed dates (end before start) and handle past start dates
|
|
119
|
+
appropriately.
|
|
112
120
|
|
|
113
121
|
steps:
|
|
114
122
|
- id: reversed_dates
|
|
115
|
-
title: "Reject reversed
|
|
123
|
+
title: "Reject reversed flight dates"
|
|
116
124
|
narrative: |
|
|
117
|
-
Send a create_media_buy
|
|
118
|
-
|
|
125
|
+
Send a create_media_buy request where end_time is before start_time. The agent
|
|
126
|
+
must reject this with an INVALID_REQUEST error.
|
|
119
127
|
task: create_media_buy
|
|
120
|
-
|
|
121
|
-
|
|
128
|
+
schema_ref: "media-buy/create-media-buy-request.json"
|
|
129
|
+
response_schema_ref: "media-buy/create-media-buy-response.json"
|
|
130
|
+
doc_ref: "/media-buy/task-reference/create_media_buy"
|
|
131
|
+
comply_scenario: temporal_validation
|
|
122
132
|
stateful: false
|
|
123
133
|
expected: |
|
|
124
|
-
Reject
|
|
125
|
-
- code: INVALID_REQUEST
|
|
126
|
-
-
|
|
127
|
-
|
|
134
|
+
Reject the request with:
|
|
135
|
+
- Error code: INVALID_REQUEST
|
|
136
|
+
- Message indicating the date constraint violation
|
|
137
|
+
|
|
128
138
|
sample_request:
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
end_time: "2026-05-01T00:00:00Z"
|
|
139
|
+
start_time: "2026-12-31T00:00:00Z"
|
|
140
|
+
end_time: "2026-01-01T00:00:00Z"
|
|
132
141
|
packages:
|
|
133
142
|
- product_id: "test-product"
|
|
134
|
-
budget:
|
|
143
|
+
budget: 10000
|
|
135
144
|
pricing_option_id: "test-pricing"
|
|
145
|
+
|
|
136
146
|
validations:
|
|
137
|
-
- check:
|
|
138
|
-
|
|
139
|
-
description: "
|
|
147
|
+
- check: field_present
|
|
148
|
+
path: "errors"
|
|
149
|
+
description: "Response contains an error for reversed dates"
|
|
140
150
|
|
|
141
151
|
- id: past_start_date
|
|
142
|
-
title: "Handle start date
|
|
152
|
+
title: "Handle past start date"
|
|
143
153
|
narrative: |
|
|
144
|
-
Send a create_media_buy with a start_time in the past.
|
|
145
|
-
|
|
146
|
-
acceptable — what matters is that the response is structured and intentional.
|
|
154
|
+
Send a create_media_buy request with a start_time in the past. The agent
|
|
155
|
+
should either reject the request or auto-adjust the start date forward.
|
|
147
156
|
task: create_media_buy
|
|
148
|
-
|
|
157
|
+
schema_ref: "media-buy/create-media-buy-request.json"
|
|
158
|
+
response_schema_ref: "media-buy/create-media-buy-response.json"
|
|
159
|
+
doc_ref: "/media-buy/task-reference/create_media_buy"
|
|
160
|
+
comply_scenario: temporal_validation
|
|
149
161
|
stateful: false
|
|
150
162
|
expected: |
|
|
151
|
-
Either
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
adjusting it or warning the buyer.
|
|
163
|
+
Either reject with INVALID_REQUEST or accept with adjusted dates.
|
|
164
|
+
Both behaviors are valid — the key is that the agent does not silently
|
|
165
|
+
accept a past start date without acknowledgment.
|
|
166
|
+
|
|
156
167
|
sample_request:
|
|
157
|
-
|
|
158
|
-
start_time: "2025-01-01T00:00:00Z"
|
|
168
|
+
start_time: "2020-01-01T00:00:00Z"
|
|
159
169
|
end_time: "2026-12-31T23:59:59Z"
|
|
160
170
|
packages:
|
|
161
171
|
- product_id: "test-product"
|
|
162
|
-
budget:
|
|
172
|
+
budget: 10000
|
|
163
173
|
pricing_option_id: "test-pricing"
|
|
164
|
-
validations:
|
|
165
|
-
- check: response_schema
|
|
166
|
-
description: "Response is a valid create-media-buy-response or structured error"
|