From 837ea5d497388ff8d3382796e00bb4d5c67afadf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 May 2026 16:40:29 +0000 Subject: [PATCH] chore(main): release 4.4.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 145 ++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- 3 files changed, 147 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 83f9eb804..fb1f343c6 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.3.0" + ".": "4.4.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0efb2b0d2..9e82c7918 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,150 @@ # Changelog +## [4.4.0](https://github.com/adcontextprotocol/adcp-client-python/compare/v4.3.0...v4.4.0) (2026-05-04) + + +### Features + +* **auth:** header_name + bearer_prefix_required on BearerTokenAuthMiddleware ([#545](https://github.com/adcontextprotocol/adcp-client-python/issues/545)) ([b16d18f](https://github.com/adcontextprotocol/adcp-client-python/commit/b16d18f88f4c905843e297c06341e475a89a991b)) +* **buyer-agent-registry:** caching + rate-limit + audit emission ([#380](https://github.com/adcontextprotocol/adcp-client-python/issues/380)) ([#407](https://github.com/adcontextprotocol/adcp-client-python/issues/407)) ([5a1e6b6](https://github.com/adcontextprotocol/adcp-client-python/commit/5a1e6b620c86da88259f7477f91179762c4a04e2)) +* **client:** looks_like_v3_capabilities — drop the v2-downgrade footgun on capabilities-validation failure ([#475](https://github.com/adcontextprotocol/adcp-client-python/issues/475)) ([385dc80](https://github.com/adcontextprotocol/adcp-client-python/commit/385dc80f9c2043d175b7420dda7cfa3a8d387403)) +* **decisioning:** Account v3 projection helpers — bank-details write-only guard ([#356](https://github.com/adcontextprotocol/adcp-client-python/issues/356)) ([#366](https://github.com/adcontextprotocol/adcp-client-python/issues/366)) ([5d898b6](https://github.com/adcontextprotocol/adcp-client-python/commit/5d898b6dda23db54e56d155a1de151a14721cf56)) +* **decisioning:** Account.mode + sandbox-authority gate for comply_test_controller (Phase 1) ([#483](https://github.com/adcontextprotocol/adcp-client-python/issues/483)) ([f5cd8cf](https://github.com/adcontextprotocol/adcp-client-python/commit/f5cd8cf7f4f2e03425302b5945d109c5f90cf2f9)) +* **decisioning:** adopt structured capabilities in v3 reference seller ([8316105](https://github.com/adcontextprotocol/adcp-client-python/commit/83161053ecda45f10b2d263e902c628a6b158ef5)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** advertise_all kwarg + handler.get_advertised_tools ([#529](https://github.com/adcontextprotocol/adcp-client-python/issues/529)) ([8b1b384](https://github.com/adcontextprotocol/adcp-client-python/commit/8b1b384f410818ae0a35ad4bcaf1a496d706f3c6)) +* **decisioning:** align AccountStore.resolution literal with JS + Tier 1 docs ([#330](https://github.com/adcontextprotocol/adcp-client-python/issues/330)) ([6490948](https://github.com/adcontextprotocol/adcp-client-python/commit/6490948ae5d9abb668775db50652c36b989a80e0)) +* **decisioning:** AuthInfo.from_verified_signer — bridge to RFC 9421 verifier ([#365](https://github.com/adcontextprotocol/adcp-client-python/issues/365)) ([5ae109b](https://github.com/adcontextprotocol/adcp-client-python/commit/5ae109b893cedc998ffb0fa50699cb8af7cc8839)) +* **decisioning:** boot-time capabilities response shape validation ([#422](https://github.com/adcontextprotocol/adcp-client-python/issues/422)) ([#446](https://github.com/adcontextprotocol/adcp-client-python/issues/446)) ([127f164](https://github.com/adcontextprotocol/adcp-client-python/commit/127f164faa18b51e24e050e934d9dbd41956c9e2)) +* **decisioning:** boot-time validator for declared idempotency vs wired [@wrap](https://github.com/wrap) ([#543](https://github.com/adcontextprotocol/adcp-client-python/issues/543)) ([7657ad4](https://github.com/adcontextprotocol/adcp-client-python/commit/7657ad446b9bfd449b0170be7659838e093dc363)) +* **decisioning:** BrandRights/ContentStandards/PropertyLists/CollectionLists Protocols (breadth sprint Batch 4 — FINAL) ([#335](https://github.com/adcontextprotocol/adcp-client-python/issues/335)) ([aeb2543](https://github.com/adcontextprotocol/adcp-client-python/commit/aeb25434847828928bca45644769e77e22a09905)) +* **decisioning:** built-in fields projection on get_products responses ([#503](https://github.com/adcontextprotocol/adcp-client-python/issues/503)) ([06aaf51](https://github.com/adcontextprotocol/adcp-client-python/commit/06aaf5193890f96ab5730574498346e7380aeffb)) +* **decisioning:** CampaignGovernancePlatform Protocol (breadth sprint Batch 3) ([#334](https://github.com/adcontextprotocol/adcp-client-python/issues/334)) ([2ca828a](https://github.com/adcontextprotocol/adcp-client-python/commit/2ca828a6ab84f49521b819aecd917924c02d80b0)) +* **decisioning:** composeMethod + security composer helpers ([#466](https://github.com/adcontextprotocol/adcp-client-python/issues/466)) ([ddad4b9](https://github.com/adcontextprotocol/adcp-client-python/commit/ddad4b9853fb0df022eae5be3dec5ee660b76dc7)) +* **decisioning:** comprehensive Emma DX follow-up (P0/P1/P2 + examples) ([#339](https://github.com/adcontextprotocol/adcp-client-python/issues/339)) ([985dcd9](https://github.com/adcontextprotocol/adcp-client-python/commit/985dcd9a287a89d1fb79e321f856075c3b31af71)) +* **decisioning:** create_tenant_store — opinionated multi-tenant AccountStore with fail-closed isolation ([#473](https://github.com/adcontextprotocol/adcp-client-python/issues/473)) ([8dd5dab](https://github.com/adcontextprotocol/adcp-client-python/commit/8dd5dabc06f38f7045ec000190f6c8ad6565baa7)) +* **decisioning:** createOAuthPassthroughResolver — Shape B account resolver factory ([#472](https://github.com/adcontextprotocol/adcp-client-python/issues/472)) ([defa022](https://github.com/adcontextprotocol/adcp-client-python/commit/defa022b5325d89a23c595521bd969eb2482d0dd)) +* **decisioning:** createUpstreamHttpClient + createTranslationMap ([#464](https://github.com/adcontextprotocol/adcp-client-python/issues/464)) ([7e5f2c4](https://github.com/adcontextprotocol/adcp-client-python/commit/7e5f2c4fad15ce5ce8d14b19955fafb66513e329)) +* **decisioning:** CreativeBuilderPlatform + CreativeAdServerPlatform (breadth sprint Batch 2) ([#333](https://github.com/adcontextprotocol/adcp-client-python/issues/333)) ([5921949](https://github.com/adcontextprotocol/adcp-client-python/commit/592194904ee70424d50f8421cf57812c0668a010)) +* **decisioning:** credential-leak strip on every echo path + ctx_metadata guidance ([#481](https://github.com/adcontextprotocol/adcp-client-python/issues/481)) ([52b15fa](https://github.com/adcontextprotocol/adcp-client-python/commit/52b15fa2f252b4e213f2dd2a5795dba08700019e)) +* **decisioning:** cursor-based pagination helper for list responses ([#499](https://github.com/adcontextprotocol/adcp-client-python/issues/499)) ([524c608](https://github.com/adcontextprotocol/adcp-client-python/commit/524c608fb1ea2fdf9c8c7659172bec731f4a2ff3)) +* **decisioning:** F12 — auto-emit completion webhook on sync mutating responses ([#331](https://github.com/adcontextprotocol/adcp-client-python/issues/331)) ([9d29754](https://github.com/adcontextprotocol/adcp-client-python/commit/9d29754e310e370ca8b9730d61070513640d1e45)) +* **decisioning:** handoff_to_workflow — externally-completed task primitive ([#336](https://github.com/adcontextprotocol/adcp-client-python/issues/336)) ([bff48ab](https://github.com/adcontextprotocol/adcp-client-python/commit/bff48abbc26a33a7649ca0264329bcba294dc6fa)) +* **decisioning:** LazyPlatformRouter for tenant-on-first-request construction ([#552](https://github.com/adcontextprotocol/adcp-client-python/issues/552)) ([98fd456](https://github.com/adcontextprotocol/adcp-client-python/commit/98fd4566c57925da84a34cabca37281901882350)) +* **decisioning:** mock-mode upstream URL routing — Account.metadata['mock_upstream_url'] + DecisioningPlatform.upstream_for (Phase 2) ([#487](https://github.com/adcontextprotocol/adcp-client-python/issues/487)) ([5c605b4](https://github.com/adcontextprotocol/adcp-client-python/commit/5c605b463c2fa48bc079ed301cffc5608a5b001c)) +* **decisioning:** MockAdServer Protocol + /_debug/traffic counters ([#383](https://github.com/adcontextprotocol/adcp-client-python/issues/383)) ([#405](https://github.com/adcontextprotocol/adcp-client-python/issues/405)) ([53d8b8c](https://github.com/adcontextprotocol/adcp-client-python/commit/53d8b8cbe7be5208e3d1250a7e1068f93c33ca28)) +* **decisioning:** PgBuyerAgentRegistry — durable Tier 2 commercial-identity store ([#364](https://github.com/adcontextprotocol/adcp-client-python/issues/364)) ([fbdcb31](https://github.com/adcontextprotocol/adcp-client-python/commit/fbdcb31f2e4d18a8cff6875aa6ad5fd7b5643e5f)) +* **decisioning:** PlatformRouter + multi-platform proof ([#477](https://github.com/adcontextprotocol/adcp-client-python/issues/477)) ([#490](https://github.com/adcontextprotocol/adcp-client-python/issues/490)) ([786e6a2](https://github.com/adcontextprotocol/adcp-client-python/commit/786e6a2708522e4b6308b91534b1f412ca58ae9d)) +* **decisioning:** PostgresTaskRegistry — durable HITL task state (v6.1) ([#361](https://github.com/adcontextprotocol/adcp-client-python/issues/361)) ([e01eef0](https://github.com/adcontextprotocol/adcp-client-python/commit/e01eef0a3f4e3d4eb3acfb66f22d9486f101d54f)) +* **decisioning:** ProductConfigStore lookup helper for create_media_buy ([#498](https://github.com/adcontextprotocol/adcp-client-python/issues/498)) ([59f3b6e](https://github.com/adcontextprotocol/adcp-client-python/commit/59f3b6e2968fb5b2ece8f745e6af386a8bf4cf2a)) +* **decisioning:** project full capability blocks via DecisioningCapabilities ([c09433c](https://github.com/adcontextprotocol/adcp-client-python/commit/c09433c2526d3a7635ea6cb7a975f840e03dc82d)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** project full get_adcp_capabilities response schema into DecisioningCapabilities ([55613f8](https://github.com/adcontextprotocol/adcp-client-python/commit/55613f8def13d0c388f131709262c9003b26add1)) +* **decisioning:** property_list resolver + intersection helper for get_products ([#500](https://github.com/adcontextprotocol/adcp-client-python/issues/500)) ([1dfdcd5](https://github.com/adcontextprotocol/adcp-client-python/commit/1dfdcd5e00242e3e79faba6f4a255fe822194cb0)) +* **decisioning:** ProposalManager v1 — Protocol + MockProposalManager forwarder + tenant binding ([#504](https://github.com/adcontextprotocol/adcp-client-python/issues/504)) ([fe8e5b0](https://github.com/adcontextprotocol/adcp-client-python/commit/fe8e5b0382324365a5b86bd4467853b6284f354a)) +* **decisioning:** ProposalManager v1.5 — primitives, capability validation, lifecycle helpers ([#538](https://github.com/adcontextprotocol/adcp-client-python/issues/538)-impl) ([#550](https://github.com/adcontextprotocol/adcp-client-python/issues/550)) ([c7c317e](https://github.com/adcontextprotocol/adcp-client-python/commit/c7c317eb1f466c32d696ff135de1d55d8f074889)) +* **decisioning:** re-export SignalsFeatures + ContentStandards capability sub-models ([74671d0](https://github.com/adcontextprotocol/adcp-client-python/commit/74671d0efe20fb3f1abcd28650eb8fc121163292)), closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485) +* **decisioning:** refine[] flow scaffold for get_products ([#496](https://github.com/adcontextprotocol/adcp-client-python/issues/496)) ([#505](https://github.com/adcontextprotocol/adcp-client-python/issues/505)) ([b584e70](https://github.com/adcontextprotocol/adcp-client-python/commit/b584e70e8563044434898d0b78c3ca00d3c13eea)) +* **decisioning:** retype DecisioningCapabilities.specialisms to Specialism enum union ([9fb7fc9](https://github.com/adcontextprotocol/adcp-client-python/commit/9fb7fc93a9cbc6602cffe0ee88d7d8e118390b77)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** SignalsPlatform + AudiencePlatform Protocols (breadth sprint Batch 1) ([#332](https://github.com/adcontextprotocol/adcp-client-python/issues/332)) ([c66ff72](https://github.com/adcontextprotocol/adcp-client-python/commit/c66ff72688bee46d6e34aad08840938b278dc8fe)) +* **decisioning:** state-machine helpers + typed exception classes + ref_account_id ([#465](https://github.com/adcontextprotocol/adcp-client-python/issues/465)) ([9301acf](https://github.com/adcontextprotocol/adcp-client-python/commit/9301acf01576b24ae79718a9792bee385e9d7717)) +* **decisioning:** surface capability sub-models via adcp.decisioning.capabilities ([bc5bb9a](https://github.com/adcontextprotocol/adcp-client-python/commit/bc5bb9af06a6c189aa3219221d2fac4078cc5706)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** TaskHandoff create_media_buy on_complete + on_failure hooks ([#561](https://github.com/adcontextprotocol/adcp-client-python/issues/561)) ([3072c6e](https://github.com/adcontextprotocol/adcp-client-python/commit/3072c6e0675a707ec8c933c5c20e49efb3927fff)) +* **decisioning:** Tier 2 — BuyerAgentRegistry + dispatch wire-up + AuthInfo v3 fields ([#349](https://github.com/adcontextprotocol/adcp-client-python/issues/349)) ([#359](https://github.com/adcontextprotocol/adcp-client-python/issues/359)) ([9dad22c](https://github.com/adcontextprotocol/adcp-client-python/commit/9dad22c94f15052777cddf4652b007a44d2f1136)) +* **decisioning:** time_budget deadline wrapper + incomplete projection on get_products ([#501](https://github.com/adcontextprotocol/adcp-client-python/issues/501)) ([bc6ad13](https://github.com/adcontextprotocol/adcp-client-python/commit/bc6ad13ee18454c2091f5d8951574761ca1c0df0)) +* **decisioning:** UserWarning when sales-* required methods missing ([#423](https://github.com/adcontextprotocol/adcp-client-python/issues/423)) ([#445](https://github.com/adcontextprotocol/adcp-client-python/issues/445)) ([5349ddc](https://github.com/adcontextprotocol/adcp-client-python/commit/5349ddc91b0299f18b96e7fb75383971c7446136)) +* **decisioning:** v6.0 DecisioningPlatform foundation (skeleton + design) ([#316](https://github.com/adcontextprotocol/adcp-client-python/issues/316)) ([3539359](https://github.com/adcontextprotocol/adcp-client-python/commit/353935951a7358ea749519a702b2bb5b54355a1c)) +* **decisioning:** warn when compliance_testing capability is declared without test_controller wired ([37f42a7](https://github.com/adcontextprotocol/adcp-client-python/commit/37f42a76402bcb4a8dbcf90a1af6cf7481fbd4e7)), closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485) +* **decisioning:** warn when supported_protocols is auto-derived from specialisms ([a0eb1e2](https://github.com/adcontextprotocol/adcp-client-python/commit/a0eb1e265562f7a5d8e0fc1ee84b76c44e157d85)), closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485) +* **decisioning:** WebhookDeliverySupervisor + SQLAlchemy A2A stores example ([#348](https://github.com/adcontextprotocol/adcp-client-python/issues/348)) ([73a7512](https://github.com/adcontextprotocol/adcp-client-python/commit/73a7512cd3d5c3fcee265455f7e54d7738c77124)) +* **decisioning:** widen DecisioningCapabilities with structured wire fields ([5a5219e](https://github.com/adcontextprotocol/adcp-client-python/commit/5a5219e2f6fb965ff489f5ae19feaaf10c953e3c)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **examples:** v3 reference seller — runnable Tier 2 + v3 wiring ([#357](https://github.com/adcontextprotocol/adcp-client-python/issues/357)) ([#373](https://github.com/adcontextprotocol/adcp-client-python/issues/373)) ([cda07f9](https://github.com/adcontextprotocol/adcp-client-python/commit/cda07f997ce9b5cca40f6149b439e7ac0769ddb3)) +* **migrate:** --auto-apply mode for mechanically-rewritable codemod findings ([#540](https://github.com/adcontextprotocol/adcp-client-python/issues/540)) ([d19e71e](https://github.com/adcontextprotocol/adcp-client-python/commit/d19e71e0deed2514fd87a6e30f0e8d145a2e1efb)) +* **migrate:** flag MediaBuyStatus.pending_activation split in v3-to-v4 codemod ([#523](https://github.com/adcontextprotocol/adcp-client-python/issues/523)) ([d0659c7](https://github.com/adcontextprotocol/adcp-client-python/commit/d0659c759dbc79f8086ee02a377609c172ea57a2)) +* **schemas:** bundle adcp-agents.json as adcp.schemas package, eliminate inlined test copy ([#442](https://github.com/adcontextprotocol/adcp-client-python/issues/442)) ([9a8fef1](https://github.com/adcontextprotocol/adcp-client-python/commit/9a8fef13f74371e13b39e92da9828e0e348229d4)) +* **server:** /.well-known/adcp-agents.json discovery endpoint ([#381](https://github.com/adcontextprotocol/adcp-client-python/issues/381)) ([#406](https://github.com/adcontextprotocol/adcp-client-python/issues/406)) ([e6dfaad](https://github.com/adcontextprotocol/adcp-client-python/commit/e6dfaad8679d58f25c417c313ff054aff8b87499)) +* **server/a2a:** structured error parity with MCP — emit field/details/retry_after, catch decisioning AdcpError (closes [#530](https://github.com/adcontextprotocol/adcp-client-python/issues/530)) ([#536](https://github.com/adcontextprotocol/adcp-client-python/issues/536)) ([423d975](https://github.com/adcontextprotocol/adcp-client-python/commit/423d9758e654664a1eb8094757679d52b27f394d)) +* **server/idempotency:** complete PgBackend for multi-worker durable replay ([#555](https://github.com/adcontextprotocol/adcp-client-python/issues/555)) ([1123458](https://github.com/adcontextprotocol/adcp-client-python/commit/11234586f87d36aa2cdf9e1bd192a60a80913788)) +* **server:** Account v3 wire fields + AccountStore.upsert/list/syncGovernance receive ResolveContext ([#469](https://github.com/adcontextprotocol/adcp-client-python/issues/469)) ([62b58dc](https://github.com/adcontextprotocol/adcp-client-python/commit/62b58dc3e211e69814a4993ab32726ed514c297e)) +* **server:** add asgi_middleware param to serve() ([#441](https://github.com/adcontextprotocol/adcp-client-python/issues/441)) ([69211a3](https://github.com/adcontextprotocol/adcp-client-python/commit/69211a3e17efc8b8fd7512e501c164e83ec9c222)) +* **server:** AuditSink Protocol + LoggingAuditSink/SlackAlertSink reference impls ([#362](https://github.com/adcontextprotocol/adcp-client-python/issues/362)) ([66c3c57](https://github.com/adcontextprotocol/adcp-client-python/commit/66c3c57a70d29d778069665e1e0fb3b93966b1ae)) +* **server:** CallableSubdomainTenantRouter for DB-backed tenant lookups ([#544](https://github.com/adcontextprotocol/adcp-client-python/issues/544)) ([80876c1](https://github.com/adcontextprotocol/adcp-client-python/commit/80876c165fa492799c804f44def23d12289a36ac)) +* **server:** createMediaBuyStore — opt-in targeting_overlay echo for property-lists / collection-lists sellers ([#474](https://github.com/adcontextprotocol/adcp-client-python/issues/474)) ([4ba19fc](https://github.com/adcontextprotocol/adcp-client-python/commit/4ba19fc199ca715adc54d885c00b6a33b90ca94f)) +* **server:** createRosterAccountStore — Shape C explicit AccountStore for publisher-curated rosters ([#471](https://github.com/adcontextprotocol/adcp-client-python/issues/471)) ([7f919cc](https://github.com/adcontextprotocol/adcp-client-python/commit/7f919cc0c13c219b2a183adeb14caaa14964901d)) +* **server:** default validation=strict in serve() — wire-conformance by default ([#439](https://github.com/adcontextprotocol/adcp-client-python/issues/439)) ([a29b61f](https://github.com/adcontextprotocol/adcp-client-python/commit/a29b61f944732cdee8bff3f11310a67035349edb)) +* **server:** introduce ServeConfig dataclass to consolidate serve() kwargs ([#437](https://github.com/adcontextprotocol/adcp-client-python/issues/437)) ([07db849](https://github.com/adcontextprotocol/adcp-client-python/commit/07db849d51e95df4809dd47d404fa95c5469e5b1)) +* **server:** MCP error responses populate structuredContent.adcp_error (closes [#509](https://github.com/adcontextprotocol/adcp-client-python/issues/509)) ([#525](https://github.com/adcontextprotocol/adcp-client-python/issues/525)) ([b50a87a](https://github.com/adcontextprotocol/adcp-client-python/commit/b50a87ad63a5f00d53e03398d8ee7d9b055879d2)) +* **server:** SubdomainTenantRouter middleware for multi-tenant deployments ([#355](https://github.com/adcontextprotocol/adcp-client-python/issues/355)) ([#368](https://github.com/adcontextprotocol/adcp-client-python/issues/368)) ([1e27dad](https://github.com/adcontextprotocol/adcp-client-python/commit/1e27dad86787cfa09155e937fa0c3b2e7d169911)) +* **server:** synthesize host:* siblings for bare allowed_hosts ([#537](https://github.com/adcontextprotocol/adcp-client-python/issues/537)) ([2733423](https://github.com/adcontextprotocol/adcp-client-python/commit/2733423bb8286ee809f9003804de096ce9fd9e0f)) +* **server:** transport="both" — host MCP and A2A on a single binary ([#354](https://github.com/adcontextprotocol/adcp-client-python/issues/354)) ([#370](https://github.com/adcontextprotocol/adcp-client-python/issues/370)) ([1d5d907](https://github.com/adcontextprotocol/adcp-client-python/commit/1d5d9074bc4868a6573fe1e2d862a660767dfab7)) +* **signing:** async_resolve_agent — bootstrap to JWKS via brand.json ([#389](https://github.com/adcontextprotocol/adcp-client-python/issues/389)) ([0d78bd1](https://github.com/adcontextprotocol/adcp-client-python/commit/0d78bd137391207313281f5abf0f364c5200e85e)) +* **signing:** v3-identity Tier 1 — BrandJsonJwksResolver + CapabilityCache (port from JS) ([#345](https://github.com/adcontextprotocol/adcp-client-python/issues/345)) ([a016eca](https://github.com/adcontextprotocol/adcp-client-python/commit/a016eca80bfa9ee3db90d62045a847cb29004c8a)) +* **signing:** verify_from_agent_url — single-call resolver+verifier factory ([#401](https://github.com/adcontextprotocol/adcp-client-python/issues/401)) ([5931921](https://github.com/adcontextprotocol/adcp-client-python/commit/5931921a483fa2b1126e13c71da2e882812a16f7)) +* **storyboards:** require full proposal_finalize chain after @adcp/sdk@6.10.0 ([#565](https://github.com/adcontextprotocol/adcp-client-python/issues/565)) ([b1fe9d5](https://github.com/adcontextprotocol/adcp-client-python/commit/b1fe9d572253cab28ce6362d0bee7abb8ffb7fed)) +* **testing:** add build_test_client async context manager ([#554](https://github.com/adcontextprotocol/adcp-client-python/issues/554)) ([5f038e5](https://github.com/adcontextprotocol/adcp-client-python/commit/5f038e5cc442173ed3e2726e38f856610d898473)) +* **testing:** make_request_context + build_asgi_app helpers ([#535](https://github.com/adcontextprotocol/adcp-client-python/issues/535)) ([6869976](https://github.com/adcontextprotocol/adcp-client-python/commit/68699763e917980f6d7ad75e4a1364a2dc188715)) +* **testing:** storyboard runner matrix entry for v3 reference seller ([#410](https://github.com/adcontextprotocol/adcp-client-python/issues/410)) ([#426](https://github.com/adcontextprotocol/adcp-client-python/issues/426)) ([f047c23](https://github.com/adcontextprotocol/adcp-client-python/commit/f047c23616250dc12631a953e9c0f0b65b502af6)) +* **types,decisioning:** close salesagent migration export gaps ([#511](https://github.com/adcontextprotocol/adcp-client-python/issues/511)) ([97a52e8](https://github.com/adcontextprotocol/adcp-client-python/commit/97a52e8412319e1693415af21dec47fcf788b3fd)) +* **types:** Account v3 projection helpers — bank-details write-only guard ([#371](https://github.com/adcontextprotocol/adcp-client-python/issues/371)) ([e4415e3](https://github.com/adcontextprotocol/adcp-client-python/commit/e4415e3f7aec181100b8b2581d71e0a54d1a4728)) +* **types:** narrow discriminated-union errors (Stability AI Emma P2) ([#340](https://github.com/adcontextprotocol/adcp-client-python/issues/340)) ([ad8b520](https://github.com/adcontextprotocol/adcp-client-python/commit/ad8b5206c6ef7eac088f335b00902a16c4eacd3d)) +* **v3-ref-seller:** broaden sales surface + sync_accounts + invoice_recipient ([#408](https://github.com/adcontextprotocol/adcp-client-python/issues/408)) ([f1e325b](https://github.com/adcontextprotocol/adcp-client-python/commit/f1e325bd9682e2792d9234ceb5adb31b8d77ab48)) +* **v3-ref-seller:** enable server validation + declare account.supported_billing ([#402](https://github.com/adcontextprotocol/adcp-client-python/issues/402)) ([ac7a61f](https://github.com/adcontextprotocol/adcp-client-python/commit/ac7a61fae0f41b2bf51b5e560edc118437f07638)) +* **v3-ref-seller:** translator pattern with JS mock-server upstream ([#447](https://github.com/adcontextprotocol/adcp-client-python/issues/447)) ([4185ced](https://github.com/adcontextprotocol/adcp-client-python/commit/4185cedce4cb27dbe6cfc0e104398d6811a48ccc)) +* **validation:** ADCP_VALIDATION_MODE env var + outputSchema on tools/list ([#391](https://github.com/adcontextprotocol/adcp-client-python/issues/391)) ([fa35bfb](https://github.com/adcontextprotocol/adcp-client-python/commit/fa35bfb5f4a17d97df6ce038e8b15cb54e88334e)) +* **validation:** oneOf near-miss validator hints + issues[].hint on every VALIDATION_ERROR ([#476](https://github.com/adcontextprotocol/adcp-client-python/issues/476)) ([9985086](https://github.com/adcontextprotocol/adcp-client-python/commit/9985086c23cbab80cf67348e0c84177f749f733f)) +* **webhook:** PgWebhookDeliverySupervisor — Postgres-backed multi-worker delivery ([#360](https://github.com/adcontextprotocol/adcp-client-python/issues/360)) ([5f1f3a0](https://github.com/adcontextprotocol/adcp-client-python/commit/5f1f3a0fca2162547dda0c24c6f4723daced6b0b)) +* **webhooks:** HMAC/bearer/Docker/Standard Webhooks delivery modes ([#482](https://github.com/adcontextprotocol/adcp-client-python/issues/482)) ([5d2c220](https://github.com/adcontextprotocol/adcp-client-python/commit/5d2c2208016b2355fbd0350a9ce039398abffb8d)) + + +### Bug Fixes + +* **auth:** populate ctx.auth_principal from bearer ContextVar ([#574](https://github.com/adcontextprotocol/adcp-client-python/issues/574)) ([6c49b31](https://github.com/adcontextprotocol/adcp-client-python/commit/6c49b319b3a994eee475f45c8122b96bc10cf984)) +* **ci:** add --extra dev to pre-commit mypy hook so types-protobuf stubs are present ([#431](https://github.com/adcontextprotocol/adcp-client-python/issues/431)) ([254d0e2](https://github.com/adcontextprotocol/adcp-client-python/commit/254d0e2173c300598919e9fc1203fe141e934e7c)) +* **ci:** add concurrency group to cancel superseded runs on force-push ([#444](https://github.com/adcontextprotocol/adcp-client-python/issues/444)) ([272fb01](https://github.com/adcontextprotocol/adcp-client-python/commit/272fb0106a1b85ab40f5621e7dcd209a4cffca10)), closes [#413](https://github.com/adcontextprotocol/adcp-client-python/issues/413) +* **ci:** align pre-commit mypy with CI — install mypy in uv dev group ([#427](https://github.com/adcontextprotocol/adcp-client-python/issues/427)) ([d3d8f7b](https://github.com/adcontextprotocol/adcp-client-python/commit/d3d8f7bb048b9c328550003d10aa4705f6e21a93)) +* **ci:** pre-install @adcp/client + bump readiness window for v3 storyboard ([#448](https://github.com/adcontextprotocol/adcp-client-python/issues/448)) ([6b89599](https://github.com/adcontextprotocol/adcp-client-python/commit/6b89599ca25a948f378c2df214e8d4a7c8f6791f)) +* **decisioning:** address expert review — major_versions passthrough, supported_protocols default, nested re-exports ([b72b744](https://github.com/adcontextprotocol/adcp-client-python/commit/b72b74485a5fb1c6800bc2659e0ec22740c90fc0)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** apply 3.10 mock-target fix to second compliance_testing test ([d086aa8](https://github.com/adcontextprotocol/adcp-client-python/commit/d086aa88d8a709a7e8a5b2876b9079dba540fc8f)), closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485) +* **decisioning:** fire legacy-field DeprecationWarnings at construction ([679709b](https://github.com/adcontextprotocol/adcp-client-python/commit/679709b1a269cbe4510264dad0c8bb8588ab48ee)), closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485) +* **decisioning:** handle Specialism|str union in create_media_buy_store ([6f3faa0](https://github.com/adcontextprotocol/adcp-client-python/commit/6f3faa0447c328ca82ee29e03e52ee6a4f2a5140)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** handler shims for every non-sales wire tool ([#337](https://github.com/adcontextprotocol/adcp-client-python/issues/337)) ([a51c5a4](https://github.com/adcontextprotocol/adcp-client-python/commit/a51c5a49d99132a51f1b95721f5d4329110fe164)) +* **decisioning:** mock target Python 3.10 import-resolution compat ([40b4517](https://github.com/adcontextprotocol/adcp-client-python/commit/40b4517f57054e3fa1115c1e8d2d0a4e1d2abdcc)), closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485) +* **decisioning:** post-[#484](https://github.com/adcontextprotocol/adcp-client-python/issues/484) capabilities-projection polish (closes [#485](https://github.com/adcontextprotocol/adcp-client-python/issues/485)) ([87bacfb](https://github.com/adcontextprotocol/adcp-client-python/commit/87bacfbe708b5eca8f56b151572541c934bb7f97)) +* **decisioning:** TaskHandoff registry.fail/complete echo request context ([#569](https://github.com/adcontextprotocol/adcp-client-python/issues/569)) ([b73b899](https://github.com/adcontextprotocol/adcp-client-python/commit/b73b8999c229287a5c1ba3364b17b4233c2aa438)) +* **decisioning:** three Emma cross-cutting findings + matrix runner ([#341](https://github.com/adcontextprotocol/adcp-client-python/issues/341)) ([4938ee1](https://github.com/adcontextprotocol/adcp-client-python/commit/4938ee1f913c37ecd5ac3b6f2c9a368b0364e405)) +* **decisioning:** Tier 2 codes → spec-conformant PERMISSION_DENIED ([#375](https://github.com/adcontextprotocol/adcp-client-python/issues/375)) ([#393](https://github.com/adcontextprotocol/adcp-client-python/issues/393)) ([870e98a](https://github.com/adcontextprotocol/adcp-client-python/commit/870e98ad6657a0dd2214d695765e3b5bc6b7228b)) +* **decisioning:** Tier 2 expert-review fix-pack ([#372](https://github.com/adcontextprotocol/adcp-client-python/issues/372)) ([9605f44](https://github.com/adcontextprotocol/adcp-client-python/commit/9605f44518c79c544d3ff1539395234c3f8b73a8)) +* **decisioning:** update v3 reference seller smoke tests for Specialism|str union ([09c5669](https://github.com/adcontextprotocol/adcp-client-python/commit/09c5669d1f1f9669adc3a21b47c47e63169528ab)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **decisioning:** wire-path dispatch + F12 silent no-op (Emma sales-direct P0s) ([#338](https://github.com/adcontextprotocol/adcp-client-python/issues/338)) ([50c985e](https://github.com/adcontextprotocol/adcp-client-python/commit/50c985eda951fa9a720ad9c5ff0bb758efdd812f)) +* **examples/multi_platform_seller:** align mocks with wire contract; storyboard gate now blocking ([#508](https://github.com/adcontextprotocol/adcp-client-python/issues/508)) ([863bb93](https://github.com/adcontextprotocol/adcp-client-python/commit/863bb933f88d12b987bc64aeff109636986c639a)) +* **examples/multi_platform_seller:** list_creatives populates query_summary (closes [#510](https://github.com/adcontextprotocol/adcp-client-python/issues/510)) ([#521](https://github.com/adcontextprotocol/adcp-client-python/issues/521)) ([c7cfe6f](https://github.com/adcontextprotocol/adcp-client-python/commit/c7cfe6fb05622cb68fb194f24dfef4dea8fc317b)) +* **idempotency:** @IdempotencyStore.wrap supports arg-projected methods ([#567](https://github.com/adcontextprotocol/adcp-client-python/issues/567)) ([1abdae6](https://github.com/adcontextprotocol/adcp-client-python/commit/1abdae676c8f3bcf2bef48ea5a6d192a5da7de92)) +* **migrate:** per-symbol replacement for generated_poc reach-ins ([#329](https://github.com/adcontextprotocol/adcp-client-python/issues/329)) ([100680b](https://github.com/adcontextprotocol/adcp-client-python/commit/100680beba6ea99d5bca606d4582c4e7b6559d34)) +* **server:** BearerTokenAuthMiddleware now populates ctx.auth_info for bearer flows ([#579](https://github.com/adcontextprotocol/adcp-client-python/issues/579)) ([901aa53](https://github.com/adcontextprotocol/adcp-client-python/commit/901aa53e6b86b3d8bde92ff4a434cd19dbc9f1f3)) +* **server:** echo request context on AdcpError error envelopes ([#560](https://github.com/adcontextprotocol/adcp-client-python/issues/560)) ([2e351b0](https://github.com/adcontextprotocol/adcp-client-python/commit/2e351b0d20c73c8483deeaa4c0efa89d3c453af7)) +* **server:** protocol-polish follow-ups from PR [#341](https://github.com/adcontextprotocol/adcp-client-python/issues/341) ([#342](https://github.com/adcontextprotocol/adcp-client-python/issues/342)) ([5a37adc](https://github.com/adcontextprotocol/adcp-client-python/commit/5a37adca7364f8c0892d991540444caf024eda0c)) +* **testing:** make a2a_compat_shim resilient to wrong a2a-sdk in /tmp worktrees ([#433](https://github.com/adcontextprotocol/adcp-client-python/issues/433)) ([c5c581d](https://github.com/adcontextprotocol/adcp-client-python/commit/c5c581dedb591d37565f52fff69d5f5e13619164)) +* **types:** CreateMediaBuy handler return type covers all 3 branches + add Submitted alias ([#575](https://github.com/adcontextprotocol/adcp-client-python/issues/575)) ([f7960ed](https://github.com/adcontextprotocol/adcp-client-python/commit/f7960ed5778e6d96299eaa7246afa8a03682de9f)) + + +### Performance Improvements + +* **ci:** cache ~/.npm + drop per-invocation npx for storyboard runners ([#450](https://github.com/adcontextprotocol/adcp-client-python/issues/450)) ([386cb15](https://github.com/adcontextprotocol/adcp-client-python/commit/386cb15071673a7340a54b31db07bd07ac448300)) +* **server:** lazy-load Pydantic schema generation to fix storyboard readiness flake ([#435](https://github.com/adcontextprotocol/adcp-client-python/issues/435)) ([8664ea3](https://github.com/adcontextprotocol/adcp-client-python/commit/8664ea37a4468646a1caef3238d7eb3d3b28a9f5)) + + +### Documentation + +* **adcp:** document git worktree isolation pattern for parallel agents ([#428](https://github.com/adcontextprotocol/adcp-client-python/issues/428)) ([117d4f2](https://github.com/adcontextprotocol/adcp-client-python/commit/117d4f2f4bd1979123d91d4e590aebab8969b814)) +* **adcp:** fix a2a-sdk 1.0.x symbol guidance in v3→v4 migration guide ([#524](https://github.com/adcontextprotocol/adcp-client-python/issues/524)) ([57cb4e5](https://github.com/adcontextprotocol/adcp-client-python/commit/57cb4e51261e5b929d056005ed6138fbc8d5722d)), closes [#514](https://github.com/adcontextprotocol/adcp-client-python/issues/514) +* **agents:** add parallel agent coordination protocol to CLAUDE.md ([#430](https://github.com/adcontextprotocol/adcp-client-python/issues/430)) ([abf0d65](https://github.com/adcontextprotocol/adcp-client-python/commit/abf0d65563f3cde45d907950214fbd16d3a2857f)) +* **decisioning:** adopter guide for declaring capabilities ([f2e8f9a](https://github.com/adcontextprotocol/adcp-client-python/commit/f2e8f9acbe598ed4b9b02fe5afebdc3fac80bd7a)), closes [#479](https://github.com/adcontextprotocol/adcp-client-python/issues/479) +* **examples:** Alembic migration scaffold for v3 reference seller ([#390](https://github.com/adcontextprotocol/adcp-client-python/issues/390)) ([3035c25](https://github.com/adcontextprotocol/adcp-client-python/commit/3035c25ba906680facb685c66df784cab6d3de49)) +* **examples:** expand hello_seller.py to full 9-method sales-non-guaranteed surface ([#531](https://github.com/adcontextprotocol/adcp-client-python/issues/531)) ([7d21302](https://github.com/adcontextprotocol/adcp-client-python/commit/7d213026414038e4a92e4318ba8a3c9194e04ea1)) +* **examples:** webhook wiring recipe — handler-authoring section + expanded hello_seller + new with_webhooks example ([#551](https://github.com/adcontextprotocol/adcp-client-python/issues/551)) ([6cf71cb](https://github.com/adcontextprotocol/adcp-client-python/commit/6cf71cbb7fed2169f43c847fc28f5685c29a995f)) +* **migration:** anchor v3→v4 adopter numbers to v4.0 release, point to live codemod ([#522](https://github.com/adcontextprotocol/adcp-client-python/issues/522)) ([11732c8](https://github.com/adcontextprotocol/adcp-client-python/commit/11732c87bd494874801ec55ae139634a7a604fa6)) +* **proposals:** product architecture — layered model + two-platform composition ([#502](https://github.com/adcontextprotocol/adcp-client-python/issues/502)) ([69c585c](https://github.com/adcontextprotocol/adcp-client-python/commit/69c585c962c2e531fd7d5d76d9be0a326ca7eea7)) +* **proposals:** ProposalManager v1.5 design — session cache, finalize, expires_at, capability validation, recipe lifecycle ([#538](https://github.com/adcontextprotocol/adcp-client-python/issues/538)) ([8ea85ad](https://github.com/adcontextprotocol/adcp-client-python/commit/8ea85ad992b5571b84c88ab7b5a24e824339e575)) +* **proposals:** when to use which proposal surface ([#533](https://github.com/adcontextprotocol/adcp-client-python/issues/533)) ([a9fd18a](https://github.com/adcontextprotocol/adcp-client-python/commit/a9fd18aa8aba806204a054c315797ea8da1beb9e)) + ## [4.3.0](https://github.com/adcontextprotocol/adcp-client-python/compare/v4.2.0...v4.3.0) (2026-04-30) diff --git a/pyproject.toml b/pyproject.toml index e6dedb99e..68d7aefa3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "adcp" -version = "4.3.0" +version = "4.4.0" description = "Official Python client for the Ad Context Protocol (AdCP)" authors = [ {name = "AdCP Community", email = "maintainers@adcontextprotocol.org"}