Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions python/.github/skills/agent-framework-py-release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ Use the LATEST released tag as the compare base:

```bash
LAST_RELEASED_TAG=$(
git tag -l 'python-[0-9]*.[0-9]*.[0-9]*' \
| uv run --directory python python -c 'import sys; tags=[t.strip() for t in sys.stdin if t.strip()]; print(max(tags, key=lambda t: tuple(map(int, t[7:].split(".")))))'
git tag -l 'python-*' \
| uv run --directory python python -c 'import re, sys; tags=[t.strip() for t in sys.stdin if re.fullmatch(r"python-\d+\.\d+\.\d+", t.strip())]; print(max(tags, key=lambda t: tuple(map(int, t[7:].split(".")))))'
)
echo "Compare base: $LAST_RELEASED_TAG"
```
Expand Down Expand Up @@ -322,7 +322,7 @@ If `core` did not bump this cycle, do not touch floors.
### 7. Validate

```bash
cd python && uv run poe validate-python-release --base-ref "$RELEASE_BASE"
cd python && uv run --group tool-runtime poe validate-python-release --base-ref "$RELEASE_BASE"
```

Use the same freshly fetched main ref that the release branch was based on (`upstream/main` above; use `origin/main`
Expand Down
47 changes: 46 additions & 1 deletion python/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.22.0] - 2026-10-15

> [!IMPORTANT]
> **Python 3.15 support:** The core framework and root `agent-framework` package now support Python 3.15, but not every package, optional extra, or feature supports it yet because of upstream dependency constraints. Before upgrading, check the README for each package and extra you use. The [Python README](https://github.com/microsoft/agent-framework/blob/main/python/README.md#python-315-limitations) summarizes the currently known limitations.

> [!WARNING]
> **Persisted-state compatibility:** This applies to persisted artifacts that contain serialized Agent Framework `Content` or streamed response-update records. That includes chat and message histories; session stores and protocol snapshots when they embed those records; and workflow checkpoints only when their checkpoint state contains them. Plain session metadata and checkpoints without serialized messages, content, or response updates are unaffected.
>
> The 1.22 runtime can read records written by earlier releases, but pre-1.22 runtimes cannot read new records containing `hosted` or `merge_mode`. Do not run old and new workers against the same affected store during a rolling deployment, and do not downgrade after 1.22 has written these records unless the new state is isolated or migrated.

### Added
- **agent-framework-azure-cosmos-memory**: Add a dedicated Cosmos memory provider User-Agent token ([#9223](https://github.com/microsoft/agent-framework/pull/9223))
- **agent-framework-foundry**: Surface OAuth consent requests in non-streaming responses ([#8976](https://github.com/microsoft/agent-framework/pull/8976))
- **agent-framework-ollama**, **agent-framework-openai**: Add configurable service URLs to chat clients ([#9222](https://github.com/microsoft/agent-framework/pull/9222), [#9225](https://github.com/microsoft/agent-framework/pull/9225))
- **agent-framework-oracle**: Forward Oracle connection-pool configuration settings ([#9233](https://github.com/microsoft/agent-framework/pull/9233))

### Changed
- **agent-framework**, **agent-framework-a2a**, **agent-framework-ag-ui**, **agent-framework-anthropic**, **agent-framework-azure-ai-search**, **agent-framework-azure-contentunderstanding**, **agent-framework-azure-cosmos**, **agent-framework-azure-cosmos-memory**, **agent-framework-azure-documentdb**, **agent-framework-bedrock**, **agent-framework-chatkit**, **agent-framework-claude**, **agent-framework-copilotstudio**, **agent-framework-core**, **agent-framework-declarative**, **agent-framework-devui**, **agent-framework-duckdb**, **agent-framework-foundry**, **agent-framework-foundry-hosting**, **agent-framework-foundry-local**, **agent-framework-gemini**, **agent-framework-github-copilot**, **agent-framework-hosting**, **agent-framework-hosting-a2a**, **agent-framework-hosting-mcp**, **agent-framework-hosting-responses**, **agent-framework-hosting-telegram**, **agent-framework-hyperlight**, **agent-framework-mem0**, **agent-framework-mistral**, **agent-framework-mongodb**, **agent-framework-monty**, **agent-framework-ollama**, **agent-framework-openai**, **agent-framework-oracle**, **agent-framework-orchestrations**, **agent-framework-postgres**, **agent-framework-purview**, **agent-framework-qdrant**, **agent-framework-redis**, **agent-framework-sql-server**, **agent-framework-tools**, **agent-framework-typesafe**: Add Python 3.15 compatibility metadata where supported, document package-specific limitations, and refresh shared dependencies and automation ([#9363](https://github.com/microsoft/agent-framework/pull/9363))
- **agent-framework-a2a**, **agent-framework-ag-ui**, **agent-framework-anthropic**, **agent-framework-bedrock**, **agent-framework-claude**, **agent-framework-copilotstudio**, **agent-framework-core**, **agent-framework-devui**, **agent-framework-foundry**, **agent-framework-foundry-hosting**, **agent-framework-gemini**, **agent-framework-github-copilot**, **agent-framework-hosting-a2a**, **agent-framework-hosting-responses**, **agent-framework-mistral**, **agent-framework-ollama**, **agent-framework-openai**: [BREAKING] Consolidate content identity, hosted execution, protocol metadata, replay, and stream-merge semantics across providers and adapters ([#8886](https://github.com/microsoft/agent-framework/pull/8886))
Comment thread
eavanvalkenburg marked this conversation as resolved.
- **agent-framework-ag-ui**: [BREAKING] Enforce fail-closed request trust boundaries and bind workflow continuations and interrupts to the resolved thread ID ([#9316](https://github.com/microsoft/agent-framework/pull/9316), [#9365](https://github.com/microsoft/agent-framework/pull/9365))
- **agent-framework-ag-ui**: [BREAKING] Prevent client Shared State and stored Thread Snapshots from replacing tool-approval state, including when AG-UI wraps an agent that does not expose its middleware ([#9368](https://github.com/microsoft/agent-framework/pull/9368))
- **agent-framework-declarative**: [BREAKING] Bound HTTP response bodies and compressed decoding stages with a configurable limit ([#9358](https://github.com/microsoft/agent-framework/pull/9358))
- **agent-framework-devui**: Refresh frontend runtime and development dependencies ([#9230](https://github.com/microsoft/agent-framework/pull/9230), [#9306](https://github.com/microsoft/agent-framework/pull/9306), [#9310](https://github.com/microsoft/agent-framework/pull/9310))
- **agent-framework-purview**: Include citations and error details in Purview policy checks ([#9375](https://github.com/microsoft/agent-framework/pull/9375))
- **docs**, **samples**: Refresh response-stream, hosted-agent, security, media-detection, hosting, approval-reuse, community-project, package-promotion, and development-tooling guidance ([#8985](https://github.com/microsoft/agent-framework/pull/8985), [#9107](https://github.com/microsoft/agent-framework/pull/9107), [#9201](https://github.com/microsoft/agent-framework/pull/9201), [#9229](https://github.com/microsoft/agent-framework/pull/9229), [#9232](https://github.com/microsoft/agent-framework/pull/9232), [#9311](https://github.com/microsoft/agent-framework/pull/9311), [#9188](https://github.com/microsoft/agent-framework/pull/9188), [#9360](https://github.com/microsoft/agent-framework/pull/9360), [#9356](https://github.com/microsoft/agent-framework/pull/9356), [#9390](https://github.com/microsoft/agent-framework/pull/9390))
- **tests**: Consolidate dependency updates, separate optional provider development dependencies, and expand tool-role coverage ([#9292](https://github.com/microsoft/agent-framework/pull/9292), [#9255](https://github.com/microsoft/agent-framework/pull/9255), [#9323](https://github.com/microsoft/agent-framework/pull/9323))

### Fixed
- **agent-framework-a2a**, **agent-framework-core**, **agent-framework-openai**: Preserve continuation tokens across conversions; allow empty A2A attachments and forward selected run metadata ([#9002](https://github.com/microsoft/agent-framework/pull/9002), [#9056](https://github.com/microsoft/agent-framework/pull/9056), [#9192](https://github.com/microsoft/agent-framework/pull/9192))
- **agent-framework-core**: Accept bare container edge targets, fold streamed text efficiently, preserve memory summaries and Mermaid node identities, correlate mixed-pause host responses, validate complex tool arguments, serialize plain enums, refresh MCP prompt catalogs, retain dictionary tool schemas, restore subworkflow sibling requests, merge single mapping tools, redact sensitive telemetry, omit tool arguments from metrics, and preserve concurrent workflow steps across pauses ([#8731](https://github.com/microsoft/agent-framework/pull/8731), [#8953](https://github.com/microsoft/agent-framework/pull/8953), [#9079](https://github.com/microsoft/agent-framework/pull/9079), [#9082](https://github.com/microsoft/agent-framework/pull/9082), [#9203](https://github.com/microsoft/agent-framework/pull/9203), [#8824](https://github.com/microsoft/agent-framework/pull/8824), [#9195](https://github.com/microsoft/agent-framework/pull/9195), [#9121](https://github.com/microsoft/agent-framework/pull/9121), [#9299](https://github.com/microsoft/agent-framework/pull/9299), [#9289](https://github.com/microsoft/agent-framework/pull/9289), [#8732](https://github.com/microsoft/agent-framework/pull/8732), [#9288](https://github.com/microsoft/agent-framework/pull/9288), [#9361](https://github.com/microsoft/agent-framework/pull/9361), [#9291](https://github.com/microsoft/agent-framework/pull/9291))
- **agent-framework-core**: Treat a single string passed to `Message` as one text content item instead of one item per character ([#9327](https://github.com/microsoft/agent-framework/pull/9327))
- **agent-framework-core**, **agent-framework-declarative**, **agent-framework-foundry-hosting**: Discard pending workflow state after failed or interrupted execution ([#8819](https://github.com/microsoft/agent-framework/pull/8819))
- **agent-framework-core**, **agent-framework-openai**: Concatenate overlapping code-interpreter stream deltas without duplicating content ([#9142](https://github.com/microsoft/agent-framework/pull/9142))
- **agent-framework-core**, **agent-framework-orchestrations**: Start a new streamed message when the response author changes ([#9353](https://github.com/microsoft/agent-framework/pull/9353))
- **agent-framework-core**: Allow switch-case branches to share a target executor ([#9300](https://github.com/microsoft/agent-framework/pull/9300))
- **agent-framework-declarative**: Parse scientific notation, evaluate quoted concatenations, preserve reusable model options, substitute templates at the correct positions, honor `BreakLoop` in `Foreach`, and avoid generated executor ID collisions ([#9077](https://github.com/microsoft/agent-framework/pull/9077), [#9073](https://github.com/microsoft/agent-framework/pull/9073), [#9068](https://github.com/microsoft/agent-framework/pull/9068), [#9096](https://github.com/microsoft/agent-framework/pull/9096), [#9091](https://github.com/microsoft/agent-framework/pull/9091), [#9087](https://github.com/microsoft/agent-framework/pull/9087))
- **agent-framework-orchestrations**: Reject out-of-scope request-info filters, reset Magentic participants on replan, parse progress ledgers with braces inside strings, await async aggregators, preserve explicit zero handoff limits, and retry ledgers that name unknown agents ([#9182](https://github.com/microsoft/agent-framework/pull/9182), [#9131](https://github.com/microsoft/agent-framework/pull/9131), [#9089](https://github.com/microsoft/agent-framework/pull/9089), [#9028](https://github.com/microsoft/agent-framework/pull/9028), [#8965](https://github.com/microsoft/agent-framework/pull/8965), [#9181](https://github.com/microsoft/agent-framework/pull/9181))
- **agent-framework-bedrock**, **agent-framework-claude**, **agent-framework-gemini**, **agent-framework-ollama**: Respect provider region, explicit zero limits, configured streamed models, and disabled tool choice ([#9249](https://github.com/microsoft/agent-framework/pull/9249), [#9159](https://github.com/microsoft/agent-framework/pull/9159), [#9139](https://github.com/microsoft/agent-framework/pull/9139), [#8987](https://github.com/microsoft/agent-framework/pull/8987))
- **agent-framework-openai**: Read the Azure OpenAI API version before applying defaults ([#9098](https://github.com/microsoft/agent-framework/pull/9098))
- **agent-framework-azure-ai-search**, **agent-framework-azure-contentunderstanding**: Retain image-only agentic messages and restored upload status ([#9075](https://github.com/microsoft/agent-framework/pull/9075), [#9085](https://github.com/microsoft/agent-framework/pull/9085))
- **agent-framework-ag-ui**, **agent-framework-devui**: Persist workflow HITL user text, isolate standalone FIDES session state, and redact deployment auth tokens from logs ([#8273](https://github.com/microsoft/agent-framework/pull/8273), [#9367](https://github.com/microsoft/agent-framework/pull/9367), [#9118](https://github.com/microsoft/agent-framework/pull/9118))
- **agent-framework-devui**: Discover entities exported through annotated assignments ([#9128](https://github.com/microsoft/agent-framework/pull/9128))
- **agent-framework-hosting-responses**, **agent-framework-monty**, **agent-framework-redis**, **agent-framework-tools**: Preserve input-image media types, block reparse points during file capture, omit null context fields, and recover queued persistent shell commands ([#9298](https://github.com/microsoft/agent-framework/pull/9298), [#9364](https://github.com/microsoft/agent-framework/pull/9364), [#9069](https://github.com/microsoft/agent-framework/pull/9069), [#9047](https://github.com/microsoft/agent-framework/pull/9047))

## [1.21.0] - 2026-10-08

### Added
Expand Down Expand Up @@ -1808,7 +1852,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.21.0...HEAD
[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.22.0...HEAD
[1.22.0]: https://github.com/microsoft/agent-framework/compare/python-1.21.0...python-1.22.0
[1.21.0]: https://github.com/microsoft/agent-framework/compare/python-1.20.0...python-1.21.0
[1.20.0]: https://github.com/microsoft/agent-framework/compare/python-1.19.0...python-1.20.0
[1.19.0]: https://github.com/microsoft/agent-framework/compare/python-1.18.0...python-1.19.0
Expand Down
4 changes: 2 additions & 2 deletions python/packages/a2a/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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.0b261002"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand All @@ -24,7 +24,7 @@ classifiers = [
"Typing :: Typed",
]
dependencies = [
"agent-framework-core>=1.19.0,<2",
"agent-framework-core>=1.22.0,<2",
"a2a-sdk>=1.0.0,<2",
]

Expand Down
4 changes: 2 additions & 2 deletions python/packages/ag-ui/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "agent-framework-ag-ui"
version = "1.5.1"
version = "1.6.0"
description = "AG-UI protocol integration for Agent Framework"
readme = "README.md"
license-files = ["LICENSE"]
Expand All @@ -24,7 +24,7 @@ classifiers = [
"Typing :: Typed",
]
dependencies = [
"agent-framework-core>=1.20.0,<2",
"agent-framework-core>=1.22.0,<2",
"ag-ui-protocol>=0.1.19,<0.2",
"fastapi>=0.121.0,<0.142.0",
"httpx>=0.28.1,<1",
Expand Down
4 changes: 2 additions & 2 deletions python/packages/anthropic/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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.0b261008"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand All @@ -24,7 +24,7 @@ classifiers = [
"Typing :: Typed",
]
dependencies = [
"agent-framework-core>=1.19.0,<2",
"agent-framework-core>=1.22.0,<2",
"anthropic>=1.11.0,<2",
]

Expand Down
2 changes: 1 addition & 1 deletion python/packages/azure-ai-search/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Azure AI Search integration for Microsoft Agent Framework."
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0b261002"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Azure Content Understanding integration for Microsoft Agent Frame
authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0b261008"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand Down
2 changes: 1 addition & 1 deletion python/packages/azure-cosmos-memory/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Azure Cosmos DB Agent Memory Toolkit integration for Microsoft Ag
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
readme = "README.md"
requires-python = ">=3.11"
version = "1.0.0a261008"
version = "1.0.0a261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand Down
2 changes: 1 addition & 1 deletion python/packages/azure-cosmos/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Azure Cosmos DB for NoSQL integrations for Microsoft Agent Framew
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0b261002"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand Down
2 changes: 1 addition & 1 deletion python/packages/azure-documentdb/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Azure DocumentDB vector stores for Microsoft Agent Framework."
authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0a261002"
version = "1.0.0a261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand Down
4 changes: 2 additions & 2 deletions python/packages/bedrock/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Amazon Bedrock integration for Microsoft Agent Framework."
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0b261008"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand All @@ -24,7 +24,7 @@ classifiers = [
"Typing :: Typed",
]
dependencies = [
"agent-framework-core>=1.19.0,<2",
"agent-framework-core>=1.22.0,<2",
"boto3>=1.35.0,<2.0.0",
"botocore>=1.35.0,<2.0.0",
]
Expand Down
2 changes: 1 addition & 1 deletion python/packages/chatkit/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "OpenAI ChatKit integration for Microsoft Agent Framework."
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0b261002"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand Down
4 changes: 2 additions & 2 deletions python/packages/claude/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description = "Claude Agent SDK integration for Microsoft Agent Framework."
authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}]
readme = "README.md"
requires-python = ">=3.10"
version = "1.0.0b261002"
version = "1.0.0b261015"
license-files = ["LICENSE"]
urls.homepage = "https://aka.ms/agent-framework"
urls.source = "https://github.com/microsoft/agent-framework/tree/main/python"
Expand All @@ -24,7 +24,7 @@ classifiers = [
"Typing :: Typed",
]
dependencies = [
"agent-framework-core>=1.13.0,<2",
"agent-framework-core>=1.22.0,<2",
"claude-agent-sdk>=0.1.46,<0.3",
]

Expand Down
Loading
Loading