Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .changeset/bump-adcp-client-5-18-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
---

Bumps `@adcp/client` 5.17.0 → 5.18.0. The release ships our `get_media_buys` request-builder fix (adcp-client#987 closing #983), the broader placeholder-ID enricher audit (#991), schema-aware brand/account injection in the storyboard runner (#943), the new `a2a_context_continuity` validator for multi-step storyboards (#962), A2A wire-shape capture (#904), and triage-bot ergonomics that close the loop on adcp#3121 (#992, #993).

Two breakages surfaced and fixed:

- **Hint type widening.** `StoryboardStepHint` widened from `ContextValueRejectedHint` to a five-kind union (`context_value_rejected | shape_drift | missing_required_field | format_mismatch | monotonic_violation`). `renderAllHintFixPlans` in `server/src/addie/services/storyboard-fix-plan.ts` now accepts the broader type and filters to `context_value_rejected` for the existing render path. Richer rendering for the other four kinds is a follow-up — today they're silently dropped from the fix-plan section, but the runner's per-hint `message` field still surfaces them upstream.

- **Strict request-schema validation in storyboard runner.** The `create_property_list` request schema declares `additionalProperties: false`; `pagination-integrity-property-lists.yaml` was passing a `list_type: "inclusion" | "exclusion"` field that isn't in the schema. 5.18.0's runner rejects unknown fields strictly. Removed the `list_type` field — it never affected agent behavior (no handler reads it).

Multi-page upgrade for `get_media_buys_pagination_integrity` deferred — adcp-client's convention extractor populates `context.media_buy_id` from the first-page response, then the request-builder injects that ID and turns the second call into an ID-lookup. Filed adcp-client#998 with the diagnosis and fix options. Storyboard stays at the single-step pagination-envelope assertion until the SDK fix lands.
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
"check:images": "bash scripts/check-image-quality.sh"
},
"dependencies": {
"@adcp/client": "5.17.0",
"@adcp/client": "5.18.0",
"@anthropic-ai/sdk": "^0.90.0",
"@asteasolutions/zod-to-openapi": "^8.5.0",
"@contentauth/c2pa-node": "^0.5.4",
Expand Down
18 changes: 15 additions & 3 deletions server/src/addie/services/storyboard-fix-plan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* hints to format.
*/

import type { ContextValueRejectedHint } from '@adcp/client/testing';
import type { ContextValueRejectedHint, StoryboardStepHint } from '@adcp/client/testing';

export type { ContextValueRejectedHint };

Expand Down Expand Up @@ -208,20 +208,32 @@ function formatAcceptedList(values: unknown[]): string {
* Convenience: render every hint on a step result as fix plans, joined
* by horizontal rules. Returns `null` when there are no actionable
* hints (lets callers omit the section entirely).
*
* Accepts the broader `StoryboardStepHint` union for forward compat —
* @adcp/client 5.18.0 widened the union to include `shape_drift`,
* `missing_required_field`, `format_mismatch`, and `monotonic_violation`
* kinds. We render only `context_value_rejected` here today; richer
* rendering for the other kinds is a follow-up. Unknown kinds are
* silently dropped — the runner's `message` field still surfaces them
* upstream of this renderer.
*/
export function renderAllHintFixPlans(
hints: ContextValueRejectedHint[] | undefined,
hints: StoryboardStepHint[] | undefined,
ctx: { current_step_id: string; current_task: string; surface: 'step' | 'full' }
): string | null {
if (!hints || !hints.length) return null;
const rejectedHints = hints.filter(
(h): h is ContextValueRejectedHint => h.kind === 'context_value_rejected',
);
if (!rejectedHints.length) return null;
// Dedup on (source_step_id, context_key, rejected_value) — the runner's
// detector already de-dupes by `(context_key, rejected_value)` per error
// (rejection-hints.ts), but a single response may carry the same drift
// through both the field-pointer and value-scan paths. Two near-identical
// fix plans separated by a horizontal rule reads like a bug.
const seen = new Set<string>();
const blocks: string[] = [];
for (const h of hints) {
for (const h of rejectedHints) {
const key = `${h.source_step_id}::${h.context_key}::${stableStringify(h.rejected_value)}`;
if (seen.has(key)) continue;
seen.add(key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ phases:
operator: "pinnacle-agency.example"
name: "Approved News Publishers"
description: "Inclusion list of brand-safe news publisher domains."
list_type: "inclusion"
idempotency_key: "$generate:uuid_v4#pagination_integrity_property_lists_setup_create_list_1"
context:
correlation_id: "pagination_integrity_property_lists--setup_1"
Expand Down Expand Up @@ -147,7 +146,6 @@ phases:
operator: "pinnacle-agency.example"
name: "Gambling Sites Blocklist"
description: "Exclusion list of gambling and wagering domains."
list_type: "exclusion"
idempotency_key: "$generate:uuid_v4#pagination_integrity_property_lists_setup_create_list_2"
context:
correlation_id: "pagination_integrity_property_lists--setup_2"
Expand Down Expand Up @@ -179,7 +177,6 @@ phases:
operator: "pinnacle-agency.example"
name: "Premium Entertainment Properties"
description: "Inclusion list of tier-one entertainment publisher domains."
list_type: "inclusion"
idempotency_key: "$generate:uuid_v4#pagination_integrity_property_lists_setup_create_list_3"
context:
correlation_id: "pagination_integrity_property_lists--setup_3"
Expand Down
Loading