-
Notifications
You must be signed in to change notification settings - Fork 1
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
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: v1.5.0
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: adcontextprotocol/adcp-client-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.6.0
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 3 commits
- 13 files changed
- 3 contributors
Commits on Nov 13, 2025
-
feat: add AdCPBaseModel with exclude_none serialization (#40)
* feat: add AdCPBaseModel with exclude_none serialization AdCP JSON schemas use `additionalProperties: false` and don't allow null for optional fields. Optional fields must be omitted entirely when not present. Changes: - Create AdCPBaseModel base class with exclude_none=True by default - Update code generator to use AdCPBaseModel instead of BaseModel - Regenerate all models with new base class - Export AdCPBaseModel from adcp.types This ensures spec-compliant JSON serialization where None values are omitted from the output instead of being sent as null. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: add type annotations to AdCPBaseModel methods Add proper type annotations to model_dump() and model_dump_json() to satisfy mypy strict type checking. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for c3cd590 - Browse repository at this point
Copy the full SHA c3cd590View commit details -
feat: add adagents.json validation and discovery (#42)
* feat: add adagents.json validation support Add utilities for fetching, parsing, and validating adagents.json files per the AdCP specification. This allows sales agents to verify they are authorized for specific publisher properties. Features: - fetch_adagents(): Async function to fetch and validate adagents.json - verify_agent_authorization(): Check if agent is authorized for a property - verify_agent_for_property(): Convenience wrapper combining fetch + verify - domain_matches(): Domain matching logic per AdCP rules (wildcards, subdomains) - identifiers_match(): Property identifier matching logic Implements AdCP spec for publisher authorization: - Wildcard domain patterns (*.example.com) - Common subdomain matching (www, m) - Protocol-agnostic agent URL matching - Property type and identifier validation - Multiple identifier types (domain, bundle_id, etc.) Exception hierarchy: - AdagentsValidationError: Base error for validation issues - AdagentsNotFoundError: adagents.json not found (404) - AdagentsTimeoutError: Request timeout Tests: - 27 unit tests covering all core logic - Domain matching edge cases - Identifier matching rules - Authorization verification scenarios - Error handling and validation All existing tests pass (207 tests total) Type checking passes with mypy 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add adagents validation example Add comprehensive example demonstrating adagents.json validation: - Fetching and parsing adagents.json - Verifying agent authorization - Domain matching rules - Identifier matching - Error handling Includes working examples with mock data and explanations of all key use cases for sales agents and publishers. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add Publisher Authorization Validation section to README Document the new adagents.json validation functionality: - Usage examples for fetch_adagents and verify_agent_authorization - Domain matching rules (wildcards, subdomains, protocol-agnostic) - Use cases for sales agents and publishers - Reference to complete examples 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add property and tag discovery functions Add utilities to extract and query properties from adagents.json: - get_all_properties(): Extract all properties across all agents - get_all_tags(): Get unique tags from all properties - get_properties_by_agent(): Filter properties by agent URL Features: - Extracts properties with agent_url for reference - Protocol-agnostic agent URL matching - Handles empty/missing properties gracefully - Returns structured data for indexing and discovery Use cases: - Build property indexes and registries - Discover available inventory by tags - Query what properties an agent can sell - Aggregate publisher inventory across agents Tests: - 8 new unit tests covering all edge cases - All 215 tests pass Example added demonstrating property discovery and tag extraction. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add security and performance improvements to adagents validation - Add domain input validation to prevent injection attacks - Add comprehensive domain normalization (handles trailing dots/slashes) - Add HTTP session management with optional client parameter for connection pooling - Add 14 new tests for domain validation and normalization - Fix line length violation in docstring Security improvements: - Validate publisher domains before HTTP requests - Check for suspicious characters (backslash, @, newlines, tabs) - Prevent path traversal attempts - Enforce DNS domain length limits (253 chars) Performance improvements: - Optional httpx.AsyncClient parameter for connection reuse - Enables connection pooling for multiple adagents.json fetches - Reduces overhead for production use cases All 229 tests pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: correct import sorting in __init__.py for CI linter Ruff's import sorter requires imports to be in alphabetical order. This fixes the CI linter failure. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 4ea16a1 - Browse repository at this point
Copy the full SHA 4ea16a1View commit details -
chore(main): release 1.6.0 (#41)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 6c67f02 - Browse repository at this point
Copy the full SHA 6c67f02View commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v1.5.0...v1.6.0