Version Packages#250
Closed
github-actions[bot] wants to merge 1 commit into
Closed
Conversation
b8a1463 to
f92b522
Compare
f92b522 to
935bb7b
Compare
935bb7b to
db6ac4a
Compare
db6ac4a to
e104668
Compare
e104668 to
e71c884
Compare
e71c884 to
65dfed6
Compare
Contributor
|
Closing this PR as all changesets have been resolved. PR #258 removed the changesets that were incorrectly proposing a bump to 2.6.0. Those changesets described features already released in v2.5.0. The Release workflow now correctly reports: "All changesets are empty; not creating PR" The version remains at 2.5.0 as expected. A new Version Packages PR will be created automatically when new changesets with version bumps are added. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
adcontextprotocol@2.6.0
Minor Changes
0c6a48f: Add URL reference support to adagents.json for CDN distribution and multi-domain publishers.
Publishers can now choose between two file structures:
Features:
Use cases:
9c362e0: Add AdCP extension schema for agent card capability discovery
Introduces a standardized extension schema that AdCP agents can include in their agent cards to declare protocol version and supported domains programmatically.
New schema:
adcp-extension.jsonUsage:
extensions.adcpin/.well-known/agent.jsonextensions.adcpin server info once MCP adds server card supportExtension structure:
{ "extensions": { "adcp": { "adcp_version": "2.4.0", "protocols_supported": ["media_buy", "creative", "signals"] } } }Benefits:
24aa0b9: Implement build-time schema versioning with semantic version paths
Adds build-time schema versioning system that transforms unversioned source schemas into versioned distribution output with multiple access patterns:
/schemas/{version}/- Exact semantic version (e.g., 2.5.0) for production use/schemas/v{major}/- Major version alias (e.g., v2) that tracks latest 2.x release/schemas/v1/- Backward compatibility alias for existing clients/schemas/latest/- Always points to current version (exploration only)Breaking changes:
static/schemas/v1/tostatic/schemas/source/dist/schemas/instead ofstatic/schemas/$idand$reffields use unversioned paths in source, versioned paths in distMigration:
/schemas/v1/paths continue to work via backward compatibility alias/schemas/v2/for major version tracking/schemas/2.5.0/)Implementation:
scripts/build-schemas.jshandles transformation and symlink creationnpm run buildand version workflowsgit mvdocs/reference/schema-versioning.mdxba4fd04: Add creative_ids filter to sync_creatives for scoped updates and error recovery.
New Capability:
The
creative_idsfilter enables targeted creative updates without affecting the entire library. When provided, only the specified creatives are processed, leaving all other creatives untouched.Key Use Cases:
Schema Changes:
creative_idsarray parameter to sync-creatives-request (max 100)Example - Error Recovery Workflow:
Documentation Updates:
This complements the replacement semantics pattern established in update_media_buy by enabling subset-based operations without requiring full library enumeration.
ba4fd04: Add comprehensive creative management to update_media_buy with support for uploading new creatives, updating weights, and managing placement targeting.
Previously, buyers could only reference existing library creatives using simple
creative_idswhen updating a media buy. This limited the ability to adjust creative rotation weights or placement targeting without recreating the entire campaign.New Capabilities:
creativesfield to upload and assign new creative assets with optional weight and placement_ids configuration in one stepcreative_assignmentsfield to modify rotation weights (0-100) and placement targeting for existing creativescreative_ids: Simple creative list (add/remove creatives)creatives: Upload brand new creative assets with optional weight/placement configurationcreative_assignments: Granular control over weights and placement targeting for existing creativesSchema Changes:
creativesfield to package update objects (max 100 creatives)creative_assignmentsfield with weight and placement_ids supportcreative-asset.jsonwith optionalweightandplacement_idsfields for assignment configuration during uploadDocumentation Updates:
Replacement Semantics:
creative_assignmentswith modified valuesThis brings update_media_buy to feature parity with create_media_buy while adding the ability to fine-tune creative rotation and targeting post-launch.
9c3a472: Improve TypeScript and Zod code generation for discriminated union schemas.
Changes:
ext,context) inside eachoneOfvariant instead of at root levelpreview-creative-request.json,preview-creative-response.json,build-creative-response.jsoncreate-media-buy-response.json,update-media-buy-response.json,sync-creatives-response.json,provide-performance-feedback-response.jsonactivate-signal-response.jsonBenefits:
ts-to-zod(previously failed on intersection types)Backward Compatibility:
Migration:
For SDK maintainers:
ts-to-zod)1d705a2: Add extension fields (
ext) at three layers following IAB/OpenRTB conventions.Three-Layer Extension Architecture:
New capabilities:
extfor operational parametersextfor processing metadataextfor persistent dataadditionalProperties: trueextnaming per OpenRTB specificationSchema changes:
extto all request schemas (17 files): create-media-buy-request, get-products-request, etc.extto all response schemas (16 files): create-media-buy-response, get-products-response, etc.extto core object schemas (4 files): product, media-buy, creative-manifest, packageDocumentation:
docs/reference/extensions.mdwith comprehensive three-layer extension guideTesting:
tests/extension-fields.test.jsvalidating extension behaviorExtension fields enable forward compatibility and platform-specific innovation at appropriate architectural layers while maintaining protocol stability. Each layer serves distinct purposes following proven OpenRTB patterns.
ba4fd04: Add media_buy_ids and buyer_refs filters to list_creatives for campaign-level creative discovery.
New Filter Capabilities:
media_buy_idsto find all creatives assigned to specific media buysbuyer_refsto find creatives across campaigns with matching buyer referencesSchema Changes:
media_buy_idsarray filter to list-creatives-requestbuyer_refsarray filter to list-creatives-requestassigned_to_packagesUse Cases:
This complements existing package-level filtering (
assigned_to_packages) by enabling campaign-level creative discovery.73cb9f4: Add template formats with dimension parameters to eliminate format explosion for dimension variants.
Problem: Publishers supporting hundreds of placement sizes would need separate format definitions for each dimension (300x250, 728x90, 970x250, etc.), creating unmanageable format catalogs.
Solution: Template formats accept dimension/duration parameters in the format_id object. Format definitions use
parameters_from_format_idflags to indicate where parameters are used, making it clear how dimensions flow from format_id to renders and assets.Key Changes:
Format ID Schema - Added optional dimension and duration fields
width,height(integers) - Pixel dimensions for visual formats (display, DOOH, native)duration_ms(number) - Duration in milliseconds for time-based formats (video, audio)Format Schema - Added capability and reference indicators
accepts_parameters- Array listing which parameters format accepts (["dimensions"], ["duration"], or ["dimensions", "duration"])renders[].parameters_from_format_id- Render parameters come from format_idrequirements.parameters_from_format_id- Asset parameters must match format_idCreative Manifest Schema - Updated format_id description
Placement Schema - CRITICAL: Sales agents MUST return parameterized format_ids
get_products()responses MUST include parameterized format_ids with explicit dimensions/durationlist_creative_formats()responsesBenefits:
Examples:
Template format definition (accepts any dimensions):
{ "format_id": { "agent_url": "...", "id": "display_static" }, "accepts_parameters": ["dimensions"], "renders": [ { "role": "primary", "parameters_from_format_id": true } ], "assets_required": [ { "asset_id": "banner_image", "asset_type": "image", "requirements": { "parameters_from_format_id": true } } ] }Creative with parameterized format_id:
{ "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_static", "width": 300, "height": 250 }, "assets": {...} }Placement format_ids (REQUIRED pattern - sales agents MUST use parameterized format_ids):
{ "format_ids": [ { "agent_url": "...", "id": "display_static", "width": 300, "height": 250 }, { "agent_url": "...", "id": "display_static", "width": 728, "height": 90 } // Lists all exact dimensions supported by this placement ] }Documentation:
/docs/creative/template-format-ids.mdxa3e7786: Add comprehensive filters to get_products request for efficient product discovery.
Enables buyers to filter products by campaign requirements and constraints:
These optional filters allow sales agents to short-circuit expensive NLP processing and immediately return only relevant products, significantly improving product discovery efficiency and response times. The channels and countries filters match the same format used in list_authorized_properties for consistency.
b830a3d: Replace package
statusenum withpausedboolean for clearer semantics.Breaking Changes:
statusfield from Package schema (was"draft" | "active" | "paused" | "completed")paused: booleanfield to Package schema (buyer-controlled pause state)update_media_buyrequest:active: boolean→paused: booleandelivery_statusfield toget_media_buy_deliveryper-package metrics (system-reported operational state)Rationale:
The previous
statusenum conflated buyer control (pause/resume) with system state (lifecycle phase). This created confusion about:New Design:
paused: boolean(in Package object) - Buyer-controlled pause statefalse= package should deliver (default)true= package should not deliver, regardless of budget/datesdelivery_status: string(in delivery reporting) - System-reported operational state"delivering","completed","budget_exhausted", etc.Migration Guide:
Before:
{ "packages": [ { "package_id": "pkg_123", "status": "active" } ] }After:
{ "packages": [ { "package_id": "pkg_123", "paused": false } ] }Before (update request):
{ "packages": [ { "package_id": "pkg_123", "active": false // Pause package } ] }After (update request):
{ "packages": [ { "package_id": "pkg_123", "paused": true // Pause package } ] }Benefits:
Patch Changes
e7dadc0: Add artifactId to A2A documentation examples. Fixes A2A protocol compliance issues by adding missing artifactId fields to all artifact examples and correcting request structure (field names, message wrapper, webhook config location).
3fdf9ea: Document canonical A2A response structure with comprehensive, consolidated protocol guidance. Clarifies that AdCP responses transmitted over A2A protocol MUST include at least one DataPart containing the task response payload, MAY include TextPart for human messages, and MUST use the last DataPart as authoritative when multiple data parts exist.
New documentation:
/docs/protocols/a2a-response-format.mdx- Canonical format specification (consolidated from 657 to 470 lines)/docs/protocols/a2a-guide.mdx- Streamlined response section, removed redundant extraction codeCore requirements:
status: "failed"errorsarray withstatus: "completed"Documentation improvements:
<details>blocks75a4e53: Add product roadmap documentation
Added comprehensive product roadmap page documenting release timeline and planned features:
8b7b767: Update CSV export example headers to use underscores instead of dots for better data warehouse compatibility (e.g.,
totals_impressionsinstead oftotals.impressions).5ed352a: Fix outdated documentation references in adagents.json
Updated schema descriptions and documentation to remove outdated references to
list_authorized_propertiesresponse structure. Thepropertiesandtagsfields in adagents.json are canonical property definitions, not reflections of the task response (which was simplified in v2.3.0 to only returnpublisher_domains).Schema changes:
propertiesfield description to emphasize it defines the canonical property listtagsfield description to clarify it provides metadata for property groupingDocumentation changes:
63f90d7: Fix documentation logo display and dark mode support. Updated favicon to use AdCP logo instead of old Docusaurus dinosaur icon. Improved dark mode navbar styling across documentation site.
09df396: Add release infrastructure for 2.5.0: minor version symlinks and pre-written release notes.
This is preparation work for the 2.5.0 release. The actual version bump and schema changes will happen when the Version Packages PR is merged. This changeset is marked as patch since it only updates documentation and build tooling without changing the protocol itself.
Changes:
3d75b8f: Simplify format-id schema structure for better code generation compatibility.
Problem: The previous schema used a complex
oneOf/not/anyOfpattern inallOfto express that width/height fields are optional but must appear together. This caused code generators to interpret the schema as two separate types (FormatId1, FormatId2) rather than a single type with optional fields, forcing union types everywhere format_id was used.Solution: Replaced the complex validation pattern with a simpler approach:
dependencieskeyword to enforce that width and height must appear togetherImpact:
Example generated type (TypeScript):