@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.
Files changed (73) hide show
  1. package/dist/lib/index.d.ts +2 -2
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js.map +1 -1
  4. package/dist/lib/server/index.d.ts +1 -1
  5. package/dist/lib/server/index.d.ts.map +1 -1
  6. package/dist/lib/server/serve.d.ts +32 -4
  7. package/dist/lib/server/serve.d.ts.map +1 -1
  8. package/dist/lib/server/serve.js +12 -4
  9. package/dist/lib/server/serve.js.map +1 -1
  10. package/dist/lib/testing/compliance/comply.d.ts +22 -5
  11. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  12. package/dist/lib/testing/compliance/comply.js +242 -276
  13. package/dist/lib/testing/compliance/comply.js.map +1 -1
  14. package/dist/lib/testing/compliance/index.d.ts +1 -0
  15. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  16. package/dist/lib/testing/compliance/index.js +6 -1
  17. package/dist/lib/testing/compliance/index.js.map +1 -1
  18. package/dist/lib/testing/compliance/platform-storyboards.d.ts +44 -0
  19. package/dist/lib/testing/compliance/platform-storyboards.d.ts.map +1 -0
  20. package/dist/lib/testing/compliance/platform-storyboards.js +230 -0
  21. package/dist/lib/testing/compliance/platform-storyboards.js.map +1 -0
  22. package/dist/lib/testing/compliance/storyboard-tracks.d.ts +2 -9
  23. package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -1
  24. package/dist/lib/testing/compliance/storyboard-tracks.js +4 -44
  25. package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -1
  26. package/dist/lib/testing/index.d.ts +1 -1
  27. package/dist/lib/testing/index.d.ts.map +1 -1
  28. package/dist/lib/testing/index.js +6 -1
  29. package/dist/lib/testing/index.js.map +1 -1
  30. package/dist/lib/types/core.generated.d.ts +241 -2
  31. package/dist/lib/types/core.generated.d.ts.map +1 -1
  32. package/dist/lib/types/core.generated.js +1 -1
  33. package/dist/lib/types/schemas.generated.d.ts +3380 -3154
  34. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  35. package/dist/lib/types/schemas.generated.js +220 -115
  36. package/dist/lib/types/schemas.generated.js.map +1 -1
  37. package/dist/lib/types/tools.generated.d.ts +267 -74
  38. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  39. package/dist/lib/version.d.ts +3 -3
  40. package/dist/lib/version.js +3 -3
  41. package/docs/guides/BUILD-AN-AGENT.md +5 -3
  42. package/docs/llms.txt +48 -32
  43. package/examples/signals-agent.ts +3 -2
  44. package/package.json +1 -1
  45. package/storyboards/audience_sync.yaml +18 -29
  46. package/storyboards/behavioral_analysis.yaml +40 -72
  47. package/storyboards/brand_rights.yaml +172 -75
  48. package/storyboards/campaign_governance_conditions.yaml +187 -0
  49. package/storyboards/campaign_governance_delivery.yaml +231 -0
  50. package/storyboards/campaign_governance_denied.yaml +135 -0
  51. package/storyboards/capability_discovery.yaml +106 -0
  52. package/storyboards/content_standards.yaml +251 -0
  53. package/storyboards/creative_ad_server.yaml +108 -16
  54. package/storyboards/creative_lifecycle.yaml +284 -0
  55. package/storyboards/creative_sales_agent.yaml +2 -6
  56. package/storyboards/creative_template.yaml +1 -5
  57. package/storyboards/error_compliance.yaml +105 -108
  58. package/storyboards/media_buy_catalog_creative.yaml +6 -4
  59. package/storyboards/media_buy_governance_escalation.yaml +9 -5
  60. package/storyboards/media_buy_guaranteed_approval.yaml +9 -7
  61. package/storyboards/media_buy_non_guaranteed.yaml +7 -6
  62. package/storyboards/media_buy_proposal_mode.yaml +9 -8
  63. package/storyboards/media_buy_seller.yaml +153 -165
  64. package/storyboards/media_buy_state_machine.yaml +100 -99
  65. package/storyboards/property_governance.yaml +239 -0
  66. package/storyboards/schema.yaml +2 -2
  67. package/storyboards/schema_validation.yaml +58 -51
  68. package/storyboards/si_session.yaml +99 -317
  69. package/storyboards/signal_marketplace.yaml +6 -5
  70. package/storyboards/signal_owned.yaml +5 -5
  71. package/storyboards/social_platform.yaml +274 -0
  72. package/storyboards/governance_content_standards.yaml +0 -213
  73. package/storyboards/governance_property_lists.yaml +0 -372
@@ -0,0 +1,231 @@
1
+ id: campaign_governance_delivery
2
+ version: "1.0.0"
3
+ title: "Campaign governance — delivery monitoring with drift detection"
4
+ category: campaign_governance_delivery
5
+ summary: "Governance agent monitors delivery, detects budget drift past thresholds, and triggers re-evaluation."
6
+ track: campaign_governance
7
+ required_tools:
8
+ - check_governance
9
+
10
+ narrative: |
11
+ After a media buy is confirmed with governance approval, the governance agent monitors
12
+ delivery. When spend drifts past a reallocation threshold — for example, one line item
13
+ is overspending while another is underspending — the governance agent triggers a delivery
14
+ phase re-evaluation.
15
+
16
+ This storyboard covers the delivery monitoring governance flow: initial approval,
17
+ delivery metrics showing drift, governance re-check triggered by drift, and either
18
+ re-approval with adjusted conditions or a pause recommendation.
19
+
20
+ agent:
21
+ interaction_model: media_buy_seller
22
+ capabilities:
23
+ - sells_media
24
+ - governance_aware
25
+ examples:
26
+ - "Publisher platform with governance and delivery reporting"
27
+ - "Retail media network with pacing data"
28
+
29
+ caller:
30
+ role: buyer_agent
31
+ example: "Pinnacle Agency (buyer)"
32
+
33
+ prerequisites:
34
+ description: |
35
+ The caller needs a brand identity, operator credentials, a governance agent URL,
36
+ and an active media buy with delivery data. The governance plan defines a
37
+ reallocation threshold that triggers re-evaluation.
38
+ test_kit: "test-kits/acme-outdoor.yaml"
39
+
40
+ phases:
41
+ - id: plan_registration
42
+ title: "Register governance plan with delivery monitoring"
43
+ narrative: |
44
+ The buyer registers a governance plan that includes delivery monitoring thresholds.
45
+ When spend drift exceeds the reallocation threshold, the governance agent triggers
46
+ a delivery-phase re-evaluation.
47
+
48
+ steps:
49
+ - id: sync_plans
50
+ title: "Register a governance plan with reallocation threshold"
51
+ narrative: |
52
+ The buyer's governance agent registers a plan with full spending authority and
53
+ a 20% reallocation threshold. If any line item's spend drifts more than 20%
54
+ from the planned budget allocation, the governance agent re-evaluates.
55
+ task: sync_plans
56
+ schema_ref: "governance/sync-plans-request.json"
57
+ response_schema_ref: "governance/sync-plans-response.json"
58
+ doc_ref: "/governance/campaign/tasks/sync_plans"
59
+ comply_scenario: campaign_governance_delivery
60
+ stateful: true
61
+ expected: |
62
+ Acknowledge the governance plan:
63
+ - plan_id: identifier for this governance plan
64
+ - authority_level: agent_full
65
+ - reallocation_threshold: 0.20 (20% drift triggers re-evaluation)
66
+
67
+ sample_request:
68
+ plans:
69
+ - plan_name: "Acme Outdoor delivery governance"
70
+ brand:
71
+ domain: "acmeoutdoor.com"
72
+ operator: "pinnacle-agency.com"
73
+ authority_level: "agent_full"
74
+ reallocation_threshold: 0.20
75
+ conditions:
76
+ - "Re-evaluate governance if any line item drifts >20% from plan"
77
+
78
+ validations:
79
+ - check: response_schema
80
+ description: "Response matches sync-plans-response.json schema"
81
+
82
+ - id: initial_approval
83
+ title: "Initial governance check — approved"
84
+ narrative: |
85
+ The buyer proposes a media buy within authority. The governance agent approves
86
+ the buy with the delivery monitoring conditions active.
87
+
88
+ steps:
89
+ - id: check_governance_approved
90
+ title: "Pre-buy governance check (approved)"
91
+ narrative: |
92
+ The buyer calls check_governance with a media buy within authority. The governance
93
+ agent approves and notes that delivery monitoring is active with the 20% drift
94
+ threshold.
95
+ task: check_governance
96
+ schema_ref: "governance/check-governance-request.json"
97
+ response_schema_ref: "governance/check-governance-response.json"
98
+ doc_ref: "/governance/campaign/tasks/check_governance"
99
+ comply_scenario: campaign_governance_delivery
100
+ stateful: true
101
+ expected: |
102
+ Return an approved governance decision:
103
+ - decision: approved
104
+ - governance_context: token for the media buy
105
+ - monitoring: delivery phase governance is active
106
+
107
+ sample_request:
108
+ plan_id: "gov_acme_delivery"
109
+ binding:
110
+ type: "media_buy"
111
+ account:
112
+ brand:
113
+ domain: "acmeoutdoor.com"
114
+ operator: "pinnacle-agency.com"
115
+ total_budget: 40000
116
+ packages:
117
+ - product_id: "sports_ctv_q2"
118
+ budget: 20000
119
+ - product_id: "outdoor_video_q2"
120
+ budget: 20000
121
+
122
+ validations:
123
+ - check: response_schema
124
+ description: "Response matches check-governance-response.json schema"
125
+ - check: field_present
126
+ path: "decision"
127
+ description: "Response contains a governance decision"
128
+
129
+ - id: delivery_monitoring
130
+ title: "Delivery metrics show budget drift"
131
+ narrative: |
132
+ The campaign is running. The buyer checks delivery and finds that one line item
133
+ is overspending while the other is underspending. The CTV line item has consumed
134
+ 70% of its budget at the halfway point while the video line item is at 30%.
135
+
136
+ steps:
137
+ - id: get_delivery
138
+ title: "Check delivery metrics"
139
+ narrative: |
140
+ The buyer requests delivery data and finds budget drift. One line item is
141
+ significantly overpacing while the other is underpacing.
142
+ task: get_media_buy_delivery
143
+ schema_ref: "media-buy/get-media-buy-delivery-request.json"
144
+ response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
145
+ doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
146
+ comply_scenario: campaign_governance_delivery
147
+ stateful: true
148
+ expected: |
149
+ Return delivery metrics showing drift:
150
+ - Per-package delivery with impressions, spend, and pacing
151
+ - One package overpacing (>60% spend at 50% flight)
152
+ - One package underpacing (<40% spend at 50% flight)
153
+
154
+ sample_request:
155
+ account:
156
+ brand:
157
+ domain: "acmeoutdoor.com"
158
+ operator: "pinnacle-agency.com"
159
+ media_buy_ids:
160
+ - "mb_acme_q2_2026"
161
+ include_package_daily_breakdown: true
162
+
163
+ validations:
164
+ - check: response_schema
165
+ description: "Response matches get-media-buy-delivery-response.json schema"
166
+ - check: field_present
167
+ path: "media_buys"
168
+ description: "Response contains media buy delivery data"
169
+
170
+ - id: drift_recheck
171
+ title: "Governance re-check — drift detected"
172
+ narrative: |
173
+ The buyer's governance agent detects that budget drift has exceeded the 20%
174
+ reallocation threshold. It triggers a delivery-phase governance check with the
175
+ current delivery data as evidence. The governance agent re-evaluates and returns
176
+ a decision — either re-approved with updated conditions or a recommendation to
177
+ pause and rebalance.
178
+
179
+ steps:
180
+ - id: check_governance_drift
181
+ title: "Delivery-phase governance re-check (drift exceeded)"
182
+ narrative: |
183
+ The buyer calls check_governance with governance_phase: delivery and attaches
184
+ the current delivery metrics as evidence. The governance agent evaluates the
185
+ drift against the reallocation threshold and returns a decision.
186
+ task: check_governance
187
+ schema_ref: "governance/check-governance-request.json"
188
+ response_schema_ref: "governance/check-governance-response.json"
189
+ doc_ref: "/governance/campaign/tasks/check_governance"
190
+ comply_scenario: campaign_governance_delivery
191
+ stateful: true
192
+ expected: |
193
+ Return a governance decision about the delivery drift:
194
+ - decision: approved (with rebalancing conditions) or denied (pause recommended)
195
+ - findings: should-severity findings noting the drift amounts
196
+ - severity: should
197
+ - code: BUDGET_DRIFT_EXCEEDED
198
+ - message: explains which line items drifted and by how much
199
+ - conditions: if approved, conditions for rebalancing (e.g., "Reallocate $5K from CTV to video")
200
+
201
+ sample_request:
202
+ plan_id: "gov_acme_delivery"
203
+ governance_phase: "delivery"
204
+ governance_context: "gov_ctx_acme_delivery_approved"
205
+ binding:
206
+ type: "media_buy"
207
+ account:
208
+ brand:
209
+ domain: "acmeoutdoor.com"
210
+ operator: "pinnacle-agency.com"
211
+ media_buy_id: "mb_acme_q2_2026"
212
+ delivery_evidence:
213
+ packages:
214
+ - product_id: "sports_ctv_q2"
215
+ budget: 20000
216
+ spend_to_date: 14000
217
+ flight_progress: 0.50
218
+ - product_id: "outdoor_video_q2"
219
+ budget: 20000
220
+ spend_to_date: 6000
221
+ flight_progress: 0.50
222
+
223
+ validations:
224
+ - check: response_schema
225
+ description: "Response matches check-governance-response.json schema"
226
+ - check: field_present
227
+ path: "decision"
228
+ description: "Response contains a governance decision"
229
+ - check: field_present
230
+ path: "findings"
231
+ description: "Response contains findings about the drift"
@@ -0,0 +1,135 @@
1
+ id: campaign_governance_denied
2
+ version: "1.0.0"
3
+ title: "Campaign governance — denied"
4
+ category: campaign_governance_denied
5
+ summary: "Governance agent denies a media buy that exceeds the agent's spending authority. No human escalation — the buy is blocked."
6
+ track: campaign_governance
7
+ required_tools:
8
+ - sync_plans
9
+ - check_governance
10
+
11
+ narrative: |
12
+ The buyer's governance agent registers a plan with strict spending authority. The buyer
13
+ then proposes a media buy that exceeds the agent's per-transaction threshold. The
14
+ governance agent denies the buy outright with a must-severity finding.
15
+
16
+ Unlike the escalation storyboard, there is no human override here. The denial is final.
17
+ The buyer must reduce the buy amount or restructure into smaller transactions that fall
18
+ within the agent's authority. This tests the hard-stop governance path.
19
+
20
+ agent:
21
+ interaction_model: media_buy_seller
22
+ capabilities:
23
+ - sells_media
24
+ - governance_aware
25
+ examples:
26
+ - "Publisher platform with governance support"
27
+ - "Retail media network"
28
+
29
+ caller:
30
+ role: buyer_agent
31
+ example: "Pinnacle Agency (buyer)"
32
+
33
+ prerequisites:
34
+ description: |
35
+ The caller needs a brand identity, operator credentials, and a governance agent URL.
36
+ The governance plan must define a per-transaction threshold below the intended buy amount.
37
+ test_kit: "test-kits/acme-outdoor.yaml"
38
+
39
+ phases:
40
+ - id: plan_registration
41
+ title: "Register governance plan"
42
+ narrative: |
43
+ The buyer registers a governance plan with strict spending authority. The plan sets
44
+ an agent_limited authority level with a $10K per-transaction threshold. Any buy above
45
+ this amount is denied without escalation.
46
+
47
+ steps:
48
+ - id: sync_plans
49
+ title: "Register a governance plan with strict authority"
50
+ narrative: |
51
+ The buyer's governance agent registers a plan with a $10K per-transaction limit
52
+ and no escalation path. Buys that exceed this threshold are denied outright.
53
+ task: sync_plans
54
+ schema_ref: "governance/sync-plans-request.json"
55
+ response_schema_ref: "governance/sync-plans-response.json"
56
+ doc_ref: "/governance/campaign/tasks/sync_plans"
57
+ comply_scenario: campaign_governance_denied
58
+ stateful: true
59
+ expected: |
60
+ Acknowledge the governance plan:
61
+ - plan_id: identifier for this governance plan
62
+ - authority_level: agent_limited
63
+ - per_transaction_threshold: $10K spending limit
64
+
65
+ sample_request:
66
+ plans:
67
+ - plan_name: "Acme Outdoor strict governance"
68
+ brand:
69
+ domain: "acmeoutdoor.com"
70
+ operator: "pinnacle-agency.com"
71
+ authority_level: "agent_limited"
72
+ per_transaction_threshold: 10000
73
+ escalation_path: "none"
74
+
75
+ validations:
76
+ - check: response_schema
77
+ description: "Response matches sync-plans-response.json schema"
78
+
79
+ - id: governance_check
80
+ title: "Governance check — denied"
81
+ narrative: |
82
+ The buyer proposes a $50K media buy against the $10K threshold. The governance agent
83
+ evaluates the binding and returns a denied decision with a must-severity finding
84
+ explaining the spending authority violation. No escalation instructions are provided
85
+ because the plan has no escalation path.
86
+
87
+ steps:
88
+ - id: check_governance_denied
89
+ title: "Pre-buy governance check (denied, no escalation)"
90
+ narrative: |
91
+ The buyer calls check_governance with a $50K media buy binding. The governance
92
+ agent denies the buy because the total exceeds the $10K per-transaction authority.
93
+ The response includes a must-severity finding with the violation details.
94
+ task: check_governance
95
+ schema_ref: "governance/check-governance-request.json"
96
+ response_schema_ref: "governance/check-governance-response.json"
97
+ doc_ref: "/governance/campaign/tasks/check_governance"
98
+ comply_scenario: campaign_governance_denied
99
+ stateful: true
100
+ expected: |
101
+ Return a denied governance decision:
102
+ - decision: denied
103
+ - findings: array with at least one must-severity finding
104
+ - severity: must
105
+ - code: SPENDING_AUTHORITY_EXCEEDED
106
+ - message: explains the threshold and how much the buy exceeds it
107
+ - No escalation instructions (plan has no escalation path)
108
+
109
+ sample_request:
110
+ plan_id: "gov_acme_strict"
111
+ binding:
112
+ type: "media_buy"
113
+ account:
114
+ brand:
115
+ domain: "acmeoutdoor.com"
116
+ operator: "pinnacle-agency.com"
117
+ total_budget: 50000
118
+ packages:
119
+ - product_id: "sports_ctv_q2"
120
+ budget: 30000
121
+ - product_id: "outdoor_video_q2"
122
+ budget: 20000
123
+
124
+ validations:
125
+ - check: response_schema
126
+ description: "Response matches check-governance-response.json schema"
127
+ - check: field_present
128
+ path: "decision"
129
+ description: "Response contains a governance decision"
130
+ - check: field_value
131
+ path: "decision"
132
+ description: "Decision is denied"
133
+ - check: field_present
134
+ path: "findings"
135
+ description: "Response contains findings explaining the denial"
@@ -0,0 +1,106 @@
1
+ id: capability_discovery
2
+ version: "1.0.0"
3
+ title: "Capability discovery"
4
+ category: capability_discovery
5
+ summary: "Buyer calls get_adcp_capabilities to discover what an agent supports before making any buying or creative decisions."
6
+ track: core
7
+
8
+ narrative: |
9
+ Before doing anything else, a buyer agent calls get_adcp_capabilities to learn what your
10
+ platform supports. This is the first call in any new relationship — the buyer needs to know
11
+ your protocol version, supported domains (media buy, creative, governance, signals, SI),
12
+ pricing models, targeting capabilities, and creative specs.
13
+
14
+ The response shapes every subsequent call. If you declare media_buy support, the buyer knows
15
+ it can send briefs and create media buys. If you declare creative support, the buyer knows
16
+ it can sync or build creatives. The buyer uses this to decide which storyboards apply to your
17
+ agent and what flows to attempt.
18
+
19
+ agent:
20
+ interaction_model: media_buy_seller
21
+ capabilities:
22
+ - sells_media
23
+ examples:
24
+ - "Any AdCP-compliant agent"
25
+ - "Publisher platforms"
26
+ - "Creative ad servers"
27
+ - "DSPs"
28
+
29
+ caller:
30
+ role: buyer_agent
31
+ example: "Scope3 (DSP)"
32
+
33
+ prerequisites:
34
+ description: |
35
+ No prerequisites. This is the very first call a buyer makes to any agent.
36
+ The test kit provides brand context but it is not required for this storyboard.
37
+ test_kit: "test-kits/acme-outdoor.yaml"
38
+
39
+ phases:
40
+ - id: protocol_discovery
41
+ title: "Protocol and capability discovery"
42
+ narrative: |
43
+ The buyer calls get_adcp_capabilities to learn what your agent supports. This call
44
+ takes no required arguments — it is a read-only introspection of the agent's
45
+ capabilities. The buyer may optionally filter by protocol domain or major version.
46
+
47
+ steps:
48
+ - id: get_capabilities
49
+ title: "Discover agent capabilities"
50
+ narrative: |
51
+ The buyer calls get_adcp_capabilities with no arguments. Your agent returns its
52
+ full capability declaration: protocol version, supported domains, pricing models,
53
+ targeting options, creative specs, and any extensions.
54
+
55
+ This response is the source of truth for what the buyer can do with your agent.
56
+ Every field the buyer reads here determines which tasks it will call next.
57
+ task: get_adcp_capabilities
58
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
59
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
60
+ doc_ref: "/protocol/get_adcp_capabilities"
61
+ comply_scenario: capability_discovery
62
+ stateful: false
63
+ expected: |
64
+ Return your agent's full capability declaration:
65
+ - adcp.major_versions: which protocol versions you support (e.g., [3])
66
+ - supported_protocols: which domains are available (media_buy, creative, governance, signals, sponsored_intelligence)
67
+ - media_buy: pricing models, delivery types, targeting, reporting features
68
+ - creative: library support, generation, transformation capabilities
69
+ - governance: property and creative features the governance agent can evaluate
70
+ - account: auth model, billing support, sandbox mode
71
+
72
+ sample_request: {}
73
+
74
+ validations:
75
+ - check: response_schema
76
+ description: "Response matches get-adcp-capabilities-response.json schema"
77
+ - check: field_present
78
+ path: "adcp.major_versions"
79
+ description: "Agent declares supported protocol versions"
80
+ - check: field_present
81
+ path: "supported_protocols"
82
+ description: "Agent declares which protocol domains it supports"
83
+
84
+ - id: get_capabilities_filtered
85
+ title: "Discover capabilities filtered by protocol"
86
+ narrative: |
87
+ The buyer calls get_adcp_capabilities again, this time filtering for a specific
88
+ protocol domain. This is useful when the buyer already knows what it wants and
89
+ only needs details for one domain (e.g., just media_buy capabilities).
90
+ task: get_adcp_capabilities
91
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
92
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
93
+ doc_ref: "/protocol/get_adcp_capabilities"
94
+ comply_scenario: capability_discovery
95
+ stateful: false
96
+ expected: |
97
+ Return capabilities filtered to the requested protocol domain. The response
98
+ should include the same structure but only the requested domain details.
99
+
100
+ sample_request:
101
+ protocols:
102
+ - "media_buy"
103
+
104
+ validations:
105
+ - check: response_schema
106
+ description: "Response matches get-adcp-capabilities-response.json schema"