@adcp/client 4.22.0 → 4.23.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/dist/lib/index.d.ts +2 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/server/index.d.ts +1 -1
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/serve.d.ts +32 -4
- package/dist/lib/server/serve.d.ts.map +1 -1
- package/dist/lib/server/serve.js +12 -4
- package/dist/lib/server/serve.js.map +1 -1
- package/dist/lib/testing/compliance/comply.d.ts +22 -5
- package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
- package/dist/lib/testing/compliance/comply.js +242 -276
- package/dist/lib/testing/compliance/comply.js.map +1 -1
- package/dist/lib/testing/compliance/index.d.ts +1 -0
- 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 +230 -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 +4 -44
- package/dist/lib/testing/compliance/storyboard-tracks.js.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/types/core.generated.d.ts +241 -2
- 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 +3380 -3154
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +220 -115
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +267 -74
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/docs/guides/BUILD-AN-AGENT.md +5 -3
- package/docs/llms.txt +48 -32
- package/examples/signals-agent.ts +3 -2
- package/package.json +1 -1
- 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 +135 -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_lifecycle.yaml +284 -0
- package/storyboards/creative_sales_agent.yaml +2 -6
- package/storyboards/creative_template.yaml +1 -5
- package/storyboards/error_compliance.yaml +105 -108
- package/storyboards/media_buy_catalog_creative.yaml +6 -4
- package/storyboards/media_buy_governance_escalation.yaml +9 -5
- package/storyboards/media_buy_guaranteed_approval.yaml +9 -7
- package/storyboards/media_buy_non_guaranteed.yaml +7 -6
- package/storyboards/media_buy_proposal_mode.yaml +9 -8
- package/storyboards/media_buy_seller.yaml +153 -165
- package/storyboards/media_buy_state_machine.yaml +100 -99
- package/storyboards/property_governance.yaml +239 -0
- package/storyboards/schema.yaml +2 -2
- package/storyboards/schema_validation.yaml +58 -51
- package/storyboards/si_session.yaml +99 -317
- package/storyboards/signal_marketplace.yaml +6 -5
- package/storyboards/signal_owned.yaml +5 -5
- package/storyboards/social_platform.yaml +274 -0
- package/storyboards/governance_content_standards.yaml +0 -213
- package/storyboards/governance_property_lists.yaml +0 -372
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
id: governance_property_lists
|
|
2
|
-
version: "1.0.0"
|
|
3
|
-
title: "Governance property list management"
|
|
4
|
-
category: governance_property_lists
|
|
5
|
-
summary: "CRUD lifecycle for property lists with filter round-trip validation."
|
|
6
|
-
track: governance
|
|
7
|
-
required_tools:
|
|
8
|
-
- create_property_list
|
|
9
|
-
|
|
10
|
-
narrative: |
|
|
11
|
-
You operate a governance agent that manages property lists — curated sets of
|
|
12
|
-
domains and apps where a brand is willing (or unwilling) to run ads. Buyer
|
|
13
|
-
agents create, read, update, and delete property lists through your agent,
|
|
14
|
-
attaching filters like GARM brand-safety categories, MFA thresholds, and
|
|
15
|
-
custom tags.
|
|
16
|
-
|
|
17
|
-
This storyboard covers two concerns: basic CRUD operations on property lists,
|
|
18
|
-
and filter fidelity — ensuring that every filter type set at creation time
|
|
19
|
-
survives the round-trip and comes back unchanged on retrieval.
|
|
20
|
-
|
|
21
|
-
agent:
|
|
22
|
-
interaction_model: governance
|
|
23
|
-
capabilities:
|
|
24
|
-
- manages_property_lists
|
|
25
|
-
- brand_safety
|
|
26
|
-
examples:
|
|
27
|
-
- "Brand safety platforms"
|
|
28
|
-
- "Agency governance dashboards"
|
|
29
|
-
- "Advertiser compliance tools"
|
|
30
|
-
|
|
31
|
-
caller:
|
|
32
|
-
role: buyer_agent
|
|
33
|
-
example: "Scope3 (DSP)"
|
|
34
|
-
|
|
35
|
-
prerequisites:
|
|
36
|
-
description: |
|
|
37
|
-
The caller needs a brand identity for the property list. The test kit
|
|
38
|
-
provides a sample brand (Acme Outdoor) with governance parameters.
|
|
39
|
-
test_kit: "test-kits/acme-outdoor.yaml"
|
|
40
|
-
|
|
41
|
-
phases:
|
|
42
|
-
- id: property_list_crud
|
|
43
|
-
title: "Property list CRUD operations"
|
|
44
|
-
narrative: |
|
|
45
|
-
The buyer creates a property list, retrieves it, updates it, lists all
|
|
46
|
-
property lists, deletes the created list, and verifies the deletion.
|
|
47
|
-
This exercises the full lifecycle of property list management.
|
|
48
|
-
|
|
49
|
-
steps:
|
|
50
|
-
- id: create_property_list
|
|
51
|
-
title: "Create a property list"
|
|
52
|
-
narrative: |
|
|
53
|
-
The buyer creates a new property list with base properties (included
|
|
54
|
-
domains) and filters (GARM exclusions, MFA thresholds). The governance
|
|
55
|
-
agent provisions the list and returns a list_id and auth_token for
|
|
56
|
-
subsequent mutations.
|
|
57
|
-
task: create_property_list
|
|
58
|
-
stateful: true
|
|
59
|
-
expected: |
|
|
60
|
-
Return the created property list with:
|
|
61
|
-
- list.list_id: platform-assigned identifier
|
|
62
|
-
- list.name: echoes the requested name
|
|
63
|
-
- auth_token: credential for update/delete operations
|
|
64
|
-
sample_request:
|
|
65
|
-
name: "E2E Test List"
|
|
66
|
-
description: "E2E test property list for governance testing"
|
|
67
|
-
base_properties:
|
|
68
|
-
include:
|
|
69
|
-
- identifier_type: "domain"
|
|
70
|
-
identifier_value: "example.com"
|
|
71
|
-
- identifier_type: "domain"
|
|
72
|
-
identifier_value: "test.example.com"
|
|
73
|
-
filters:
|
|
74
|
-
garm_categories:
|
|
75
|
-
exclude:
|
|
76
|
-
- "adult"
|
|
77
|
-
- "arms"
|
|
78
|
-
mfa_thresholds:
|
|
79
|
-
min_score: 0.7
|
|
80
|
-
brand_manifest:
|
|
81
|
-
name: "E2E Test Brand"
|
|
82
|
-
url: "https://test.example.com"
|
|
83
|
-
validations:
|
|
84
|
-
- check: response_schema
|
|
85
|
-
description: "Response matches create-property-list response schema"
|
|
86
|
-
- check: field_present
|
|
87
|
-
path: "list.list_id"
|
|
88
|
-
description: "Created list has a platform-assigned ID"
|
|
89
|
-
- check: field_present
|
|
90
|
-
path: "list.name"
|
|
91
|
-
description: "Created list echoes the requested name"
|
|
92
|
-
context_outputs:
|
|
93
|
-
- path: "list.list_id"
|
|
94
|
-
key: "list_id"
|
|
95
|
-
- path: "auth_token"
|
|
96
|
-
key: "auth_token"
|
|
97
|
-
|
|
98
|
-
- id: get_property_list
|
|
99
|
-
title: "Retrieve the property list"
|
|
100
|
-
requires_tool: get_property_list
|
|
101
|
-
narrative: |
|
|
102
|
-
The buyer retrieves the property list just created, requesting
|
|
103
|
-
resolved identifiers. The response should include the list metadata,
|
|
104
|
-
base properties, and filters exactly as they were set.
|
|
105
|
-
task: get_property_list
|
|
106
|
-
stateful: true
|
|
107
|
-
expected: |
|
|
108
|
-
Return the property list with:
|
|
109
|
-
- list.list_id: matches the created ID
|
|
110
|
-
- list.name: matches the created name
|
|
111
|
-
- identifiers: resolved list of included domains
|
|
112
|
-
- list.filters: matches the filters set at creation
|
|
113
|
-
sample_request:
|
|
114
|
-
list_id: "$context.list_id"
|
|
115
|
-
resolve: true
|
|
116
|
-
max_results: 10
|
|
117
|
-
context_inputs:
|
|
118
|
-
- key: "list_id"
|
|
119
|
-
inject_at: "list_id"
|
|
120
|
-
validations:
|
|
121
|
-
- check: response_schema
|
|
122
|
-
description: "Response matches get-property-list response schema"
|
|
123
|
-
- check: field_present
|
|
124
|
-
path: "list.list_id"
|
|
125
|
-
description: "Response contains the list ID"
|
|
126
|
-
|
|
127
|
-
- id: update_property_list
|
|
128
|
-
title: "Update the property list"
|
|
129
|
-
requires_tool: update_property_list
|
|
130
|
-
narrative: |
|
|
131
|
-
The buyer updates the property list, adding a new domain to the
|
|
132
|
-
include set and expanding the GARM exclusion list. The auth_token
|
|
133
|
-
from the create step authorizes the mutation.
|
|
134
|
-
task: update_property_list
|
|
135
|
-
stateful: true
|
|
136
|
-
expected: |
|
|
137
|
-
Return the updated property list with:
|
|
138
|
-
- list.list_id: unchanged
|
|
139
|
-
- list.updated_at: a timestamp reflecting the update
|
|
140
|
-
- Updated description and filters
|
|
141
|
-
sample_request:
|
|
142
|
-
list_id: "$context.list_id"
|
|
143
|
-
auth_token: "$context.auth_token"
|
|
144
|
-
description: "Updated E2E test property list"
|
|
145
|
-
base_properties:
|
|
146
|
-
include:
|
|
147
|
-
- identifier_type: "domain"
|
|
148
|
-
identifier_value: "example.com"
|
|
149
|
-
- identifier_type: "domain"
|
|
150
|
-
identifier_value: "test.example.com"
|
|
151
|
-
- identifier_type: "domain"
|
|
152
|
-
identifier_value: "new.example.com"
|
|
153
|
-
filters:
|
|
154
|
-
garm_categories:
|
|
155
|
-
exclude:
|
|
156
|
-
- "adult"
|
|
157
|
-
- "arms"
|
|
158
|
-
- "gambling"
|
|
159
|
-
mfa_thresholds:
|
|
160
|
-
min_score: 0.8
|
|
161
|
-
context_inputs:
|
|
162
|
-
- key: "list_id"
|
|
163
|
-
inject_at: "list_id"
|
|
164
|
-
- key: "auth_token"
|
|
165
|
-
inject_at: "auth_token"
|
|
166
|
-
validations:
|
|
167
|
-
- check: response_schema
|
|
168
|
-
description: "Response matches update-property-list response schema"
|
|
169
|
-
- check: field_present
|
|
170
|
-
path: "list.list_id"
|
|
171
|
-
description: "Updated list retains its ID"
|
|
172
|
-
|
|
173
|
-
- id: list_property_lists
|
|
174
|
-
title: "List all property lists"
|
|
175
|
-
requires_tool: list_property_lists
|
|
176
|
-
narrative: |
|
|
177
|
-
The buyer lists all property lists visible to them. The response
|
|
178
|
-
should include at least the list created earlier in this storyboard.
|
|
179
|
-
task: list_property_lists
|
|
180
|
-
stateful: false
|
|
181
|
-
expected: |
|
|
182
|
-
Return a paginated list of property lists with:
|
|
183
|
-
- lists: array of property list summaries
|
|
184
|
-
- Each list has list_id and name
|
|
185
|
-
sample_request:
|
|
186
|
-
max_results: 10
|
|
187
|
-
validations:
|
|
188
|
-
- check: response_schema
|
|
189
|
-
description: "Response matches list-property-lists response schema"
|
|
190
|
-
- check: field_present
|
|
191
|
-
path: "lists"
|
|
192
|
-
description: "Response contains a lists array"
|
|
193
|
-
|
|
194
|
-
- id: delete_property_list
|
|
195
|
-
title: "Delete the property list"
|
|
196
|
-
requires_tool: delete_property_list
|
|
197
|
-
narrative: |
|
|
198
|
-
The buyer deletes the test property list. The auth_token from the
|
|
199
|
-
create step authorizes the deletion.
|
|
200
|
-
task: delete_property_list
|
|
201
|
-
stateful: true
|
|
202
|
-
expected: |
|
|
203
|
-
Return confirmation of deletion:
|
|
204
|
-
- deleted: true
|
|
205
|
-
- list_id: matches the deleted list
|
|
206
|
-
sample_request:
|
|
207
|
-
list_id: "$context.list_id"
|
|
208
|
-
auth_token: "$context.auth_token"
|
|
209
|
-
context_inputs:
|
|
210
|
-
- key: "list_id"
|
|
211
|
-
inject_at: "list_id"
|
|
212
|
-
- key: "auth_token"
|
|
213
|
-
inject_at: "auth_token"
|
|
214
|
-
validations:
|
|
215
|
-
- check: response_schema
|
|
216
|
-
description: "Response matches delete-property-list response schema"
|
|
217
|
-
- check: field_present
|
|
218
|
-
path: "deleted"
|
|
219
|
-
description: "Response confirms deletion"
|
|
220
|
-
- check: field_present
|
|
221
|
-
path: "list_id"
|
|
222
|
-
description: "Response echoes the deleted list ID"
|
|
223
|
-
|
|
224
|
-
- id: get_deleted_list
|
|
225
|
-
title: "Retrieve deleted list (error expected)"
|
|
226
|
-
requires_tool: get_property_list
|
|
227
|
-
narrative: |
|
|
228
|
-
The buyer attempts to retrieve the list that was just deleted. The
|
|
229
|
-
agent should reject this request with an error, confirming that the
|
|
230
|
-
list no longer exists.
|
|
231
|
-
task: get_property_list
|
|
232
|
-
stateful: true
|
|
233
|
-
expect_error: true
|
|
234
|
-
expected: |
|
|
235
|
-
Return an error indicating the list does not exist.
|
|
236
|
-
sample_request:
|
|
237
|
-
list_id: "$context.list_id"
|
|
238
|
-
context_inputs:
|
|
239
|
-
- key: "list_id"
|
|
240
|
-
inject_at: "list_id"
|
|
241
|
-
validations:
|
|
242
|
-
- check: error_code
|
|
243
|
-
value: "not_found"
|
|
244
|
-
description: "Agent rejects access to a deleted list"
|
|
245
|
-
|
|
246
|
-
- id: property_list_filters
|
|
247
|
-
title: "Property list filter round-trips"
|
|
248
|
-
narrative: |
|
|
249
|
-
Filter fidelity matters: when a buyer sets GARM exclusions, MFA
|
|
250
|
-
thresholds, custom tags, and feature requirements on a property list,
|
|
251
|
-
those filters must survive storage and come back unchanged on retrieval.
|
|
252
|
-
|
|
253
|
-
This phase creates a property list with every supported filter type,
|
|
254
|
-
retrieves it with resolve:true, and validates each filter round-tripped.
|
|
255
|
-
|
|
256
|
-
steps:
|
|
257
|
-
- id: create_list_with_all_filters
|
|
258
|
-
title: "Create property list with all filter types"
|
|
259
|
-
narrative: |
|
|
260
|
-
The buyer creates a property list with GARM category exclusions,
|
|
261
|
-
MFA thresholds, custom tag include/exclude rules, and optionally
|
|
262
|
-
feature requirements. This exercises the full filter surface area.
|
|
263
|
-
task: create_property_list
|
|
264
|
-
stateful: true
|
|
265
|
-
expected: |
|
|
266
|
-
Return the created property list with:
|
|
267
|
-
- list.list_id: platform-assigned identifier
|
|
268
|
-
- auth_token: credential for subsequent operations
|
|
269
|
-
- All filter types accepted without error
|
|
270
|
-
sample_request:
|
|
271
|
-
name: "E2E Filter Test"
|
|
272
|
-
description: "E2E filter round-trip test"
|
|
273
|
-
base_properties:
|
|
274
|
-
include:
|
|
275
|
-
- identifier_type: "domain"
|
|
276
|
-
identifier_value: "example.com"
|
|
277
|
-
filters:
|
|
278
|
-
garm_categories:
|
|
279
|
-
exclude:
|
|
280
|
-
- "adult"
|
|
281
|
-
- "arms"
|
|
282
|
-
- "gambling"
|
|
283
|
-
- "hate_speech"
|
|
284
|
-
mfa_thresholds:
|
|
285
|
-
min_score: 0.75
|
|
286
|
-
custom_tags:
|
|
287
|
-
include:
|
|
288
|
-
- key: "content_type"
|
|
289
|
-
value: "premium"
|
|
290
|
-
exclude:
|
|
291
|
-
- key: "content_type"
|
|
292
|
-
value: "user_generated"
|
|
293
|
-
brand_manifest:
|
|
294
|
-
name: "E2E Test Brand"
|
|
295
|
-
url: "https://test.example.com"
|
|
296
|
-
validations:
|
|
297
|
-
- check: response_schema
|
|
298
|
-
description: "Response matches create-property-list response schema"
|
|
299
|
-
- check: field_present
|
|
300
|
-
path: "list.list_id"
|
|
301
|
-
description: "Created list has a platform-assigned ID"
|
|
302
|
-
context_outputs:
|
|
303
|
-
- path: "list.list_id"
|
|
304
|
-
key: "filter_list_id"
|
|
305
|
-
- path: "auth_token"
|
|
306
|
-
key: "filter_auth_token"
|
|
307
|
-
|
|
308
|
-
- id: get_list_validate_filters
|
|
309
|
-
title: "Retrieve and validate filter round-trip"
|
|
310
|
-
requires_tool: get_property_list
|
|
311
|
-
narrative: |
|
|
312
|
-
The buyer retrieves the property list with resolve:true and checks
|
|
313
|
-
that every filter type set at creation time is returned unchanged.
|
|
314
|
-
GARM categories, MFA thresholds, and custom tags must all survive
|
|
315
|
-
the round-trip through the governance agent's storage.
|
|
316
|
-
task: get_property_list
|
|
317
|
-
stateful: true
|
|
318
|
-
expected: |
|
|
319
|
-
Return the property list with all filters intact:
|
|
320
|
-
- list.filters.garm_categories.exclude: contains adult, arms, gambling, hate_speech
|
|
321
|
-
- list.filters.mfa_thresholds.min_score: 0.75
|
|
322
|
-
- list.filters.custom_tags.include: content_type=premium
|
|
323
|
-
- list.filters.custom_tags.exclude: content_type=user_generated
|
|
324
|
-
sample_request:
|
|
325
|
-
list_id: "$context.filter_list_id"
|
|
326
|
-
resolve: true
|
|
327
|
-
max_results: 5
|
|
328
|
-
context_inputs:
|
|
329
|
-
- key: "filter_list_id"
|
|
330
|
-
inject_at: "list_id"
|
|
331
|
-
validations:
|
|
332
|
-
- check: response_schema
|
|
333
|
-
description: "Response matches get-property-list response schema"
|
|
334
|
-
- check: field_present
|
|
335
|
-
path: "list.list_id"
|
|
336
|
-
description: "Response contains the list ID"
|
|
337
|
-
- check: field_present
|
|
338
|
-
path: "list.filters"
|
|
339
|
-
description: "Filters object is present in the response"
|
|
340
|
-
- check: field_present
|
|
341
|
-
path: "list.filters.garm_categories"
|
|
342
|
-
description: "GARM category filters survived the round-trip"
|
|
343
|
-
- check: field_present
|
|
344
|
-
path: "list.filters.mfa_thresholds"
|
|
345
|
-
description: "MFA threshold filters survived the round-trip"
|
|
346
|
-
- check: field_present
|
|
347
|
-
path: "list.filters.custom_tags"
|
|
348
|
-
description: "Custom tag filters survived the round-trip"
|
|
349
|
-
|
|
350
|
-
- id: cleanup_filter_list
|
|
351
|
-
title: "Delete filter test list (cleanup)"
|
|
352
|
-
requires_tool: delete_property_list
|
|
353
|
-
narrative: |
|
|
354
|
-
Clean up the filter test list created in this phase.
|
|
355
|
-
task: delete_property_list
|
|
356
|
-
stateful: true
|
|
357
|
-
expected: |
|
|
358
|
-
Return confirmation that the list was deleted.
|
|
359
|
-
sample_request:
|
|
360
|
-
list_id: "$context.filter_list_id"
|
|
361
|
-
auth_token: "$context.filter_auth_token"
|
|
362
|
-
context_inputs:
|
|
363
|
-
- key: "filter_list_id"
|
|
364
|
-
inject_at: "list_id"
|
|
365
|
-
- key: "filter_auth_token"
|
|
366
|
-
inject_at: "auth_token"
|
|
367
|
-
validations:
|
|
368
|
-
- check: response_schema
|
|
369
|
-
description: "Response matches delete-property-list response schema"
|
|
370
|
-
- check: field_present
|
|
371
|
-
path: "deleted"
|
|
372
|
-
description: "Response confirms deletion"
|