diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index f0669705f11..c359f6152c1 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.15.0] - 2026-08-21 + +### Added +- **agent-framework-ag-ui**, **agent-framework-openai**: Add optional A2UI support for agent-generated interfaces and preserve streaming tool-call indices for A2UI consumers ([#7423](https://github.com/microsoft/agent-framework/pull/7423)) +- **agent-framework-core**: Add `MiddlewareFailure` as a first-class fatal signal for function middleware ([#7562](https://github.com/microsoft/agent-framework/pull/7562)) +- **agent-framework-core**, **agent-framework-azure-cosmos**: Add a process-wide workflow checkpoint type registry, register Cosmos checkpoint state types, and declare the compatibility dependency required by the supported Cosmos SDK floor ([#7636](https://github.com/microsoft/agent-framework/pull/7636)) +- **agent-framework-core**, **agent-framework-foundry-hosting**: Add steering, retry, and recovery support for resilient Foundry Hosted Agents, with long-running workflow samples ([#7670](https://github.com/microsoft/agent-framework/pull/7670)) +- **samples**: Add the production-ready installment of the build-your-own-claw harness sample ([#7698](https://github.com/microsoft/agent-framework/pull/7698)) + +### Changed +- **agent-framework-ag-ui**, **agent-framework-core**: [BREAKING] Consolidate OpenTelemetry GenAI semantic-convention support around stable and experimental modes with explicit message-event controls ([#7673](https://github.com/microsoft/agent-framework/pull/7673)) +- **agent-framework-ag-ui**: Align run continuity and avoid emitting unchanged predictive state snapshots ([#7662](https://github.com/microsoft/agent-framework/pull/7662), [#7766](https://github.com/microsoft/agent-framework/pull/7766)) +- **agent-framework-core**: Defer turn-scoped `after_run` context providers to the agent-loop boundary ([#7289](https://github.com/microsoft/agent-framework/pull/7289)) +- **agent-framework-ag-ui**, **agent-framework-core**, **agent-framework-declarative**: Persist approval state and distinguish absent values from falsey approval data ([#7631](https://github.com/microsoft/agent-framework/pull/7631)) +- **agent-framework-devui**: Forward `function_invocation_kwargs` through DevUI agent runs ([#7779](https://github.com/microsoft/agent-framework/pull/7779)) +- **agent-framework-core**, **samples**: Clarify skill script arguments and MCP tool argument-filtering behavior ([#7695](https://github.com/microsoft/agent-framework/pull/7695), [#7801](https://github.com/microsoft/agent-framework/pull/7801)) +- **tests**: Update uv, Ruff, mypy, ty, Flit, and the root build-system dependency range ([#7644](https://github.com/microsoft/agent-framework/pull/7644), [#7645](https://github.com/microsoft/agent-framework/pull/7645), [#7780](https://github.com/microsoft/agent-framework/pull/7780), [#7781](https://github.com/microsoft/agent-framework/pull/7781), [#7782](https://github.com/microsoft/agent-framework/pull/7782), [#7783](https://github.com/microsoft/agent-framework/pull/7783), [#7784](https://github.com/microsoft/agent-framework/pull/7784)) +- **docs**: Clarify PR review resolution and pin the Agent Lightning installation documentation link ([#7746](https://github.com/microsoft/agent-framework/pull/7746), [#7693](https://github.com/microsoft/agent-framework/pull/7693)) + +### Fixed +- **agent-framework-a2a**, **agent-framework-core**, **agent-framework-orchestrations**: Preserve and normalize A2A inputs when used through orchestrations ([#7761](https://github.com/microsoft/agent-framework/pull/7761)) +- **agent-framework-ag-ui**: Preserve tool-message IDs, URL-source attachments, and JSON workflow resume payloads ([#7510](https://github.com/microsoft/agent-framework/pull/7510), [#7655](https://github.com/microsoft/agent-framework/pull/7655), [#7684](https://github.com/microsoft/agent-framework/pull/7684)) +- **agent-framework-anthropic**, **agent-framework-core**: Preserve structured instructions when merging chat options ([#7730](https://github.com/microsoft/agent-framework/pull/7730)) +- **agent-framework-core**: Preserve all fan-in trace contexts and restrict workflow type deserialization ([#7557](https://github.com/microsoft/agent-framework/pull/7557), [#7500](https://github.com/microsoft/agent-framework/pull/7500)) +- **agent-framework-core**: Avoid remote MCP tool-name shadowing while retaining the documented argument allowlist ([#7799](https://github.com/microsoft/agent-framework/pull/7799)) +- **agent-framework-core**: Always emit an arguments field for zero-argument tool calls in Foundry evaluations ([#7734](https://github.com/microsoft/agent-framework/pull/7734)) +- **agent-framework-core**, **agent-framework-github-copilot**: Forward telemetry configuration to the GitHub Copilot client ([#7625](https://github.com/microsoft/agent-framework/pull/7625)) +- **agent-framework-core**, **agent-framework-redis**: Prevent superlinear history growth by deduplicating saved messages ([#7242](https://github.com/microsoft/agent-framework/pull/7242)) +- **agent-framework-devui**: Deduplicate streamed tool calls ([#7652](https://github.com/microsoft/agent-framework/pull/7652)) +- **agent-framework-foundry-hosting**: Surface A2A preview consent URLs and prevent duplicate streamed function calls ([#7606](https://github.com/microsoft/agent-framework/pull/7606), [#7486](https://github.com/microsoft/agent-framework/pull/7486)) +- **agent-framework-orchestrations**: Preserve agent `additional_properties` in handoff clones ([#7755](https://github.com/microsoft/agent-framework/pull/7755)) + ## [1.14.0] - 2026-08-13 ### Added @@ -1523,7 +1555,8 @@ Release candidate for **agent-framework-core** and **agent-framework-azure-ai** For more information, see the [announcement blog post](https://devblogs.microsoft.com/foundry/introducing-microsoft-agent-framework-the-open-source-engine-for-agentic-ai-apps/). -[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.14.0...HEAD +[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.15.0...HEAD +[1.15.0]: https://github.com/microsoft/agent-framework/compare/python-1.14.0...python-1.15.0 [1.14.0]: https://github.com/microsoft/agent-framework/compare/python-1.13.0...python-1.14.0 [1.13.0]: https://github.com/microsoft/agent-framework/compare/python-1.12.1...python-1.13.0 [1.12.1]: https://github.com/microsoft/agent-framework/compare/python-1.12.0...python-1.12.1 diff --git a/python/packages/a2a/pyproject.toml b/python/packages/a2a/pyproject.toml index 5ca26e067a5..88cf8c9bb93 100644 --- a/python/packages/a2a/pyproject.toml +++ b/python/packages/a2a/pyproject.toml @@ -4,7 +4,7 @@ description = "A2A integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260730" +version = "1.0.0b260821" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "a2a-sdk>=1.0.0,<2", ] diff --git a/python/packages/ag-ui/pyproject.toml b/python/packages/ag-ui/pyproject.toml index 97d1d0058d0..9c34024f469 100644 --- a/python/packages/ag-ui/pyproject.toml +++ b/python/packages/ag-ui/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "agent-framework-ag-ui" -version = "1.1.0" +version = "1.2.0" description = "AG-UI protocol integration for Agent Framework" readme = "README.md" license-files = ["LICENSE"] @@ -22,7 +22,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.14.0,<2", + "agent-framework-core>=1.15.0,<2", "ag-ui-protocol>=0.1.19,<0.2", "fastapi>=0.121.0,<0.140.0", "httpx>=0.28.1,<1", diff --git a/python/packages/anthropic/pyproject.toml b/python/packages/anthropic/pyproject.toml index 7116d064e66..221133e3a2e 100644 --- a/python/packages/anthropic/pyproject.toml +++ b/python/packages/anthropic/pyproject.toml @@ -4,7 +4,7 @@ description = "Anthropic integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260730" +version = "1.0.0b260821" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "anthropic>=0.80.0,<0.117.0", ] diff --git a/python/packages/azure-cosmos/pyproject.toml b/python/packages/azure-cosmos/pyproject.toml index 6df900a7bea..e3de61e616d 100644 --- a/python/packages/azure-cosmos/pyproject.toml +++ b/python/packages/azure-cosmos/pyproject.toml @@ -4,7 +4,7 @@ description = "Azure Cosmos DB history provider integration for Microsoft Agent authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260730" +version = "1.0.0b260821" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,8 +23,9 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "azure-cosmos>=4.3.0,<5", + "six>=1.17.0,<2", ] [tool.uv] diff --git a/python/packages/core/pyproject.toml b/python/packages/core/pyproject.toml index cc1da9dbe99..d3b28c529d6 100644 --- a/python/packages/core/pyproject.toml +++ b/python/packages/core/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Agent Framework for building AI Agents with Python. Thi authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.14.0" +version = "1.15.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/declarative/pyproject.toml b/python/packages/declarative/pyproject.toml index a6e1517ef78..6a5f28dcc17 100644 --- a/python/packages/declarative/pyproject.toml +++ b/python/packages/declarative/pyproject.toml @@ -4,7 +4,7 @@ description = "Declarative specification support for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.2" +version = "1.0.3" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -22,7 +22,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "httpx>=0.27,<1", "powerfx>=0.0.32,<0.0.35; python_version < '3.14'", "pyyaml>=6.0,<7.0", diff --git a/python/packages/devui/pyproject.toml b/python/packages/devui/pyproject.toml index 2ca7d608704..382d75fb47a 100644 --- a/python/packages/devui/pyproject.toml +++ b/python/packages/devui/pyproject.toml @@ -4,7 +4,7 @@ description = "Debug UI for Microsoft Agent Framework with OpenAI-compatible API authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260813" +version = "1.0.0b260821" license-files = ["LICENSE"] urls.homepage = "https://github.com/microsoft/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "openai>=2.45.0,<3", "opentelemetry-sdk>=1.39.0,<2", "fastapi>=0.115.0,<0.138.1", diff --git a/python/packages/foundry_hosting/pyproject.toml b/python/packages/foundry_hosting/pyproject.toml index 4f1e285a8c2..8bb1d84188e 100644 --- a/python/packages/foundry_hosting/pyproject.toml +++ b/python/packages/foundry_hosting/pyproject.toml @@ -4,7 +4,7 @@ description = "Foundry Hosting integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260813" +version = "1.0.0b260821" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "azure-ai-agentserver-core>=2.1.0b1,<3", "azure-ai-agentserver-responses>=2.1.0b1,<3", "azure-ai-agentserver-invocations>=1.1.0b1,<2", diff --git a/python/packages/github_copilot/pyproject.toml b/python/packages/github_copilot/pyproject.toml index 3896be8de08..ef660ec3032 100644 --- a/python/packages/github_copilot/pyproject.toml +++ b/python/packages/github_copilot/pyproject.toml @@ -4,7 +4,7 @@ description = "GitHub Copilot integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.11" -version = "1.0.2" +version = "1.0.3" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -22,7 +22,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "github-copilot-sdk==1.0.2; python_version >= '3.11'", ] diff --git a/python/packages/openai/pyproject.toml b/python/packages/openai/pyproject.toml index 3c2f6ccd40e..4fb486e1a4a 100644 --- a/python/packages/openai/pyproject.toml +++ b/python/packages/openai/pyproject.toml @@ -4,7 +4,7 @@ description = "OpenAI integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.13.0" +version = "1.14.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "openai>=2.25.0,<3", ] diff --git a/python/packages/orchestrations/pyproject.toml b/python/packages/orchestrations/pyproject.toml index e5bd976bd32..303912056ad 100644 --- a/python/packages/orchestrations/pyproject.toml +++ b/python/packages/orchestrations/pyproject.toml @@ -4,7 +4,7 @@ description = "Orchestration patterns for Microsoft Agent Framework. Includes Se authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.1.0" +version = "1.1.1" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", ] [tool.uv] diff --git a/python/packages/redis/pyproject.toml b/python/packages/redis/pyproject.toml index 8ee8523db49..184106c393e 100644 --- a/python/packages/redis/pyproject.toml +++ b/python/packages/redis/pyproject.toml @@ -4,7 +4,7 @@ description = "Redis integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260813" +version = "1.0.0b260821" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", + "agent-framework-core>=1.15.0,<2", "redis>=6.4.0,<7.2.1", "redisvl>=0.11.0,<0.16", "numpy>=2.2.6,<3" diff --git a/python/pyproject.toml b/python/pyproject.toml index df697ce7cf9..144126b8613 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Agent Framework for building AI Agents with Python. Thi authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.14.0" +version = "1.15.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core[all]==1.14.0", + "agent-framework-core[all]==1.15.0", ] [dependency-groups] diff --git a/python/uv.lock b/python/uv.lock index 5aaf412fae2..5aa816032c6 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -124,7 +124,7 @@ wheels = [ [[package]] name = "agent-framework" -version = "1.14.0" +version = "1.15.0" source = { virtual = "." } dependencies = [ { name = "agent-framework-core", extra = ["all"] }, @@ -191,7 +191,7 @@ test = [ [[package]] name = "agent-framework-a2a" -version = "1.0.0b260730" +version = "1.0.0b260821" source = { editable = "packages/a2a" } dependencies = [ { name = "a2a-sdk" }, @@ -206,7 +206,7 @@ requires-dist = [ [[package]] name = "agent-framework-ag-ui" -version = "1.1.0" +version = "1.2.0" source = { editable = "packages/ag-ui" } dependencies = [ { name = "ag-ui-protocol" }, @@ -248,7 +248,7 @@ test = [{ name = "agent-framework-orchestrations", editable = "packages/orchestr [[package]] name = "agent-framework-anthropic" -version = "1.0.0b260730" +version = "1.0.0b260821" source = { editable = "packages/anthropic" } dependencies = [ { name = "agent-framework-core" }, @@ -299,17 +299,19 @@ requires-dist = [ [[package]] name = "agent-framework-azure-cosmos" -version = "1.0.0b260730" +version = "1.0.0b260821" source = { editable = "packages/azure-cosmos" } dependencies = [ { name = "agent-framework-core" }, { name = "azure-cosmos" }, + { name = "six" }, ] [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, { name = "azure-cosmos", specifier = ">=4.3.0,<5" }, + { name = "six", specifier = ">=1.17.0,<2" }, ] [[package]] @@ -426,7 +428,7 @@ requires-dist = [ [[package]] name = "agent-framework-core" -version = "1.14.0" +version = "1.15.0" source = { editable = "packages/core" } dependencies = [ { name = "msgspec" }, @@ -526,7 +528,7 @@ dev = [{ name = "azure-ai-agentserver-core", specifier = ">=2.0.0b7,<3" }] [[package]] name = "agent-framework-declarative" -version = "1.0.2" +version = "1.0.3" source = { editable = "packages/declarative" } dependencies = [ { name = "agent-framework-core" }, @@ -553,7 +555,7 @@ dev = [{ name = "types-pyyaml", specifier = "==6.0.12.20260518" }] [[package]] name = "agent-framework-devui" -version = "1.0.0b260813" +version = "1.0.0b260821" source = { editable = "packages/devui" } dependencies = [ { name = "agent-framework-core" }, @@ -627,7 +629,7 @@ requires-dist = [ [[package]] name = "agent-framework-foundry-hosting" -version = "1.0.0b260813" +version = "1.0.0b260821" source = { editable = "packages/foundry_hosting" } dependencies = [ { name = "agent-framework-core" }, @@ -682,7 +684,7 @@ requires-dist = [ [[package]] name = "agent-framework-github-copilot" -version = "1.0.2" +version = "1.0.3" source = { editable = "packages/github_copilot" } dependencies = [ { name = "agent-framework-core" }, @@ -950,7 +952,7 @@ requires-dist = [ [[package]] name = "agent-framework-openai" -version = "1.13.0" +version = "1.14.0" source = { editable = "packages/openai" } dependencies = [ { name = "agent-framework-core" }, @@ -965,7 +967,7 @@ requires-dist = [ [[package]] name = "agent-framework-orchestrations" -version = "1.1.0" +version = "1.1.1" source = { editable = "packages/orchestrations" } dependencies = [ { name = "agent-framework-core" }, @@ -993,7 +995,7 @@ requires-dist = [ [[package]] name = "agent-framework-redis" -version = "1.0.0b260813" +version = "1.0.0b260821" source = { editable = "packages/redis" } dependencies = [ { name = "agent-framework-core" },