This repository was archived by the owner on Mar 15, 2026. It is now read-only.
Commit 4eccbca
feat: upgrade to ADCP 3.5.0 with catalog support (#48)
* feat: add universal creative format (multi-channel asset pool)
Adds a 'universal' format similar to Google's Performance Max asset
groups. Publishers receive a pool of assets and assemble placements
themselves -- this is a submission container, not a generative format.
Asset pools use repeatable_group from the adcp library, supporting:
- headlines (1-15, 30 chars), long_headlines (0-5, 90 chars)
- descriptions (1-5, 90 chars)
- images_landscape/square/portrait (1-20 each)
- logos_square/landscape (0-5 each)
- videos_landscape/portrait (0-15), videos_square (0-5)
- Individual: brand_name, cta, promoted_offerings, click_url,
impression_tracker
Also fixes:
- _format_to_human_readable now includes repeatable group IDs for LLMs
- assets_required backward compat excludes repeatable groups (old
clients don't understand item_type=repeatable_group)
- filter_formats has_asset_type handles repeatable groups via getattr
Known limitation (deferred): validate_manifest_assets does not yet
enforce required repeatable groups.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: validate repeatable groups in creative manifests
validate_manifest_assets now handles Assets5 (repeatable_group) entries:
- Required groups (headlines, descriptions, images_landscape, images_square)
are checked for presence using asset_group_id
- min_count and max_count are enforced on submitted lists
- Each item in a group list is validated using the inner asset type
(e.g. each headline item is validated as a text asset)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: upgrade to ADCP 3.5.0 with catalog support, dead code cleanup
Replace promoted_offerings with catalog_requirements on generative formats
per ADCP 3.5.0. Add catalog validation (type, enum fields, feed_format
compatibility, offering_asset_constraints). Add brand parameter to
build_creative. Remove universal format (redundant with catalogs). Delete
8 unused modules and .bak files. Fix validate_url exception handling and
remove misplaced data URI bypass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: resolve CI mypy errors for ADCP 3.5.0 type changes
Annotate COMMON_MACROS as list[str | Any] to satisfy
list[UniversalMacro | str] invariance. Add None guards for
FormatCategory | None on fmt.type.value accesses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address pre-existing code review issues
- Remove traceback strings from client-facing error responses, log
server-side with logger.exception() instead
- Validate output_format parameter early in preview_creative
- Remove dead try/except ValidationError around f-string
- Move inline imports (re) to top level
- Simplify redundant emptiness check in _handle_batch_preview
- Fix enum comparison to use .value for FormatCategory
- Add regression tests for data URI rejection in validate_url
- Clarify data URI size limit comment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add git to Dockerfile for adcp git dependency
The adcp package is installed from a git URL which requires git
to be available in the Docker build environment.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 04fd0c7 commit 4eccbca
25 files changed
Lines changed: 1041 additions & 1461 deletions
File tree
- src/creative_agent
- data
- schemas
- tests
- integration
- validation
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | 12 | | |
14 | 13 | | |
15 | 14 | | |
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
19 | | - | |
| 18 | + | |
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
| |||
32 | 31 | | |
33 | 32 | | |
34 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
| |||
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
45 | 44 | | |
46 | 45 | | |
47 | 46 | | |
| |||
0 commit comments