Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: adcontextprotocol/adcp-client-python
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.8.0
Choose a base ref
...
head repository: adcontextprotocol/adcp-client-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.9.0
Choose a head ref
  • 3 commits
  • 50 files changed
  • 3 contributors

Commits on Nov 20, 2025

  1. feat: add missing AdCP protocol methods to CLI and client (#71)

    * feat: add list_tools command to CLI dispatch table
    
    Adds support for the list_tools protocol introspection command in the CLI.
    Previously, list_tools was available as a client method but was not exposed
    through the CLI tool dispatch system.
    
    Changes:
    - Add list_tools to TOOL_DISPATCH table in __main__.py
    - Handle list_tools specially since it takes no parameters and returns list[str]
    - Fix TaskResult success field to be False when status is FAILED
    - Add comprehensive tests for list_tools dispatch and invalid tool names
    
    Fixes issue where CLI did not expose the list_tools introspection method
    that is available on the ADCPClient class.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: add missing AdCP protocol methods to client and CLI
    
    Adds four missing AdCP protocol methods that had schemas but were not
    implemented in the Python client:
    
    - preview_creative (existed in client, now added to CLI)
    - create_media_buy (new to both client and CLI)
    - update_media_buy (new to both client and CLI)
    - build_creative (new to both client and CLI)
    
    Changes:
    - Add missing request/response type imports to client.py
    - Implement create_media_buy, update_media_buy, build_creative in ADCPClient
    - Add abstract methods to base protocol adapter
    - Implement methods in MCP and A2A adapters
    - Add all four tools to CLI TOOL_DISPATCH table with lazy type initialization
    
    All 14 AdCP protocol tools are now fully supported in both the client API
    and CLI interface.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * chore: trigger CI after PR title fix
    
    * test: add coverage for new protocol methods
    
    - Add assertions for preview_creative, create_media_buy, update_media_buy, build_creative in test_all_client_methods
    - Document that complex schema methods are tested separately
    - Ensures all 4 new client methods are verified to exist
    
    Addresses code review feedback on test coverage.
    
    * docs: enhance docstrings for media buy and creative methods
    
    - Add detailed contextual descriptions for create_media_buy, update_media_buy, and build_creative
    - Include comprehensive parameter explanations with field breakdowns
    - Add usage examples demonstrating typical patterns
    - Document response structure and expected data fields
    - Explain discriminated union usage in update_media_buy
    
    Improves developer experience by providing clear guidance on when and how to use these protocol methods.
    
    * docs: add comprehensive workflow examples to README
    
    - Add 'Workflow Examples' section demonstrating end-to-end usage
    - Document complete media buy workflow (discovery β†’ create β†’ update)
    - Document complete creative workflow (list formats β†’ preview β†’ build)
    - Show integrated multi-agent workflow combining both
    - Reorganize 'Available Tools' section to group Creative Management methods
    - Include code examples with clear step-by-step comments
    
    Makes it easier for developers to understand typical usage patterns and how different protocol methods work together in real-world scenarios.
    
    * fix: update types for schema changes in media buy responses
    
    The upstream AdCP schemas changed:
    - create_media_buy_response and update_media_buy_response now use the canonical Package type instead of defining custom types
    - get_signals and activate_signal changed 'destinations' field to 'deployments'
    - New schema types: asset-content-type, format-category
    
    Changes:
    - Remove obsolete AffectedPackage type (replaced by canonical Package)
    - Remove obsolete CreatedPackageReference alias (schema now uses full Package everywhere)
    - Update type imports in stable.py, __init__.py, and aliases.py
    - Regenerate types from latest schemas
    - Update test data to use 'deployments' instead of 'destinations'
    - Update package alias tests to reflect unified Package type
    
    All 297 tests passing.
    
    ---------
    
    Co-authored-by: Claude <noreply@anthropic.com>
    bokelley and claude authored Nov 20, 2025
    Configuration menu
    Copy the full SHA
    f9432a3 View commit details
    Browse the repository at this point in the history
  2. feat: integrate AdCP schema improvements (PR #222 + #223) (#73)

    * feat: resolve schema collisions with AssetContentType, FormatCategory, and unified Package
    
    Implements changes from upstream AdCP PR #222 and PR #223:
    
    **New Types (PR #222)**
    - AssetContentType: Consolidated enum for asset content types (13 values)
    - FormatCategory: Semantic enum for format categories (7 values)
    
    **Unified Package (PR #223)**
    - create_media_buy and update_media_buy now return full Package objects
    - Removed CreatedPackageReference (deprecated)
    - Better API consistency and developer experience
    
    **Breaking Changes**
    - Removed CreatedPackageReference: use Package directly
    - Removed AffectedPackage: removed from upstream schemas
    
    **Backward Compatibility**
    - AssetType maintained as deprecated alias to AssetContentType
    
    Test results: 283/295 passing (12 failures for removed CreatedPackageReference - expected)
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * test: remove obsolete CreatedPackageReference tests
    
    Removed 5 test functions that tested CreatedPackageReference since this type
    was removed in AdCP PR #223. The PR unified Package responses so that both
    create_media_buy and update_media_buy now return full Package objects instead
    of minimal references.
    
    Removed tests:
    - test_package_type_aliases_imports
    - test_package_type_aliases_point_to_correct_modules
    - test_package_type_aliases_have_correct_fields
    - test_package_type_aliases_in_exports
    - test_package_aliases_can_instantiate
    
    All 290 tests now pass.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * docs: consolidate schema analysis into changelog, remove temp docs
    
    Removed temporary documentation files (SCHEMA_COLLISION_PROPOSAL.md,
    UPSTREAM_SCHEMA_RECOMMENDATIONS.md) that were used during analysis.
    
    Enhanced CHANGELOG_ENTRY.md to include:
    - Detailed description of upstream schema improvements (PR #222 + #223)
    - Complete list of new types with all enum values
    - Expanded migration guide with more examples
    - Upstream recommendations identified during integration
    
    The key findings (orphaned asset-type.json, enum organization suggestions,
    discriminator standardization opportunities) are now captured in the changelog
    for future reference.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * fix: remove orphaned asset-type.json and update schemas
    
    Upstream PR #222 removed the orphaned asset-type.json schema file. Our local
    cache had stale copies that were no longer referenced upstream.
    
    Changes:
    - Removed stale asset-type.json from schemas/cache/1.0.0/
    - Removed asset_type.py generated file (no longer has upstream schema)
    - Removed orphaned type exports: AssetTypeSchema, ContentLength, Dimensions,
      Duration, FileSize, Quality, Requirements
    - Added deprecation alias: AssetType = AssetContentType
    - Synced 6 updated schemas (deployment, destination, activate-signal, get-signals)
    
    The sync discovered asset-type.json was 404 upstream - it was removed in PR #222
    as part of the enum consolidation work.
    
    Tests: 288/290 passing (2 failures in signals tests due to schema API changes
    from destinations β†’ deployments in upstream)
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * docs: update changelog to reflect upstream already removed asset-type.json
    
    The orphaned asset-type.json was already removed by the AdCP team in PR #222.
    Updated changelog to acknowledge this was properly handled upstream.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * feat: automatically remove orphaned schemas during sync
    
    Added automatic cleanup of schema files that no longer exist upstream.
    This prevents stale cached schemas from causing issues when upstream
    removes or renames schema files.
    
    Changes:
    - Scan for JSON files in cache that aren't in the upstream schema list
    - Remove orphaned files and their empty parent directories
    - Report removed count in sync summary
    - Updated script documentation to explain new feature
    
    Example output:
      Cleaning up orphaned schemas:
        βœ— asset-type.json (removed - no longer in upstream)
        βœ— core/asset-type.json (removed - no longer in upstream)
    
    This would have automatically caught the stale asset-type.json files
    that were orphaned after PR #222.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * fix: update signals API tests for destinations β†’ deployments change
    
    Upstream schema updates changed the signals API from using 'destinations'
    to 'deployments'. Updated test fixtures to match new API structure.
    
    Changes:
    - GetSignalsRequest.deliver_to.destinations β†’ deployments
    - ActivateSignalRequest.destinations β†’ deployments
    
    Tests now passing: 290/290 (100%)
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * docs: remove temporary changelog entry file
    
    Release Please will automatically generate changelog from commits.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    * fix: resolve linter errors in stable.py and __init__.py
    
    - Fix import sorting per ruff I001 rules
    - Fix line length by moving comment above import
    - Remove orphaned 'Requirements' from __all__ (type was removed with asset-type.json)
    
    All linter checks now passing.
    
    πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude <noreply@anthropic.com>
    bokelley and claude authored Nov 20, 2025
    Configuration menu
    Copy the full SHA
    d61ca33 View commit details
    Browse the repository at this point in the history
  3. chore(main): release 2.9.0 (#72)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Nov 20, 2025
    Configuration menu
    Copy the full SHA
    be28a7f View commit details
    Browse the repository at this point in the history
Loading