Skip to content

[Python] Add agent-framework-azure-ai-contentunderstanding package#4829

Merged
TaoChenOSU merged 95 commits into
microsoft:mainfrom
yungshinlintw:yslin/contentunderstanding-context-provider
Apr 28, 2026
Merged

[Python] Add agent-framework-azure-ai-contentunderstanding package#4829
TaoChenOSU merged 95 commits into
microsoft:mainfrom
yungshinlintw:yslin/contentunderstanding-context-provider

Conversation

@yungshinlintw
Copy link
Copy Markdown
Member

@yungshinlintw yungshinlintw commented Mar 22, 2026

Reviewer's Guide

Closes #4942

This package adds a BaseContextProvider implementation that bridges Azure Content Understanding (CU) with the Agent Framework. When a user sends file attachments (PDF, images, audio, video), the provider intercepts them in before_run(), sends them to CU for analysis, and injects the structured results (markdown + extracted fields) back into the LLM context — so the agent can answer questions about the files without the developer writing any extraction code.

Quick usage:

cu = ContentUnderstandingContextProvider(
    endpoint="https://my-resource.services.ai.azure.com/",
    credential=AzureCliCredential(),
)
agent = Agent(
    client=client,
    name="DocQA",
    instructions="You are a document analyst.",
    context_providers=[cu],
)
# Files in Message.contents are auto-analyzed; results injected into LLM context
response = await agent.run(
    Message(role="user", contents=[
        Content.from_text("What's on this invoice?"),
        Content.from_uri("https://example.com/invoice.pdf", media_type="application/pdf",
                         additional_properties={"filename": "invoice.pdf"}),
    ]),
    session=session,
)

Suggested review order

1. Start with samples — they show the feature set and usage patterns end-to-end:

Sample What it demonstrates
01_document_qa.py Simplest flow — upload a PDF via URL, ask a question about it. Shows Content.from_uri(), context_providers=[cu], and how CU results appear in the agent's response.
02_multi_turn_session.py AgentSession persistence — upload a file on turn 1, ask follow-up questions on turns 2–3 without re-uploading. Shows how state["documents"] carries across turns.
03_multimodal_chat.py PDF + audio + video in a single session (5 turns). Shows auto-detection of media types, parallel analysis, and multi-segment video output with per-segment fields.
04_invoice_processing.py Per-file analyzer override — uses additional_properties={"analyzer_id": "prebuilt-invoice"} to extract structured invoice fields (vendor, total, line items) instead of generic markdown.
05_background_analysis.py Non-blocking analysis with max_wait=0.5 — file starts analyzing in the background while the agent responds immediately. Next turn resolves the pending result. Shows the analyzingready status flow.
06_large_doc_file_search.py CU extraction + OpenAI vector store for RAG — large documents are analyzed by CU, uploaded to a vector store, and retrieved via file_search tool instead of injecting full content into context.

2. Then review the core implementation:

Priority File Why
🔴 High _context_provider.py (1087 lines) Core logic — before_run() hook, file detection/stripping, CU analysis with timeout + background fallback, output formatting, tool registration. Most important file to review.
🔴 High _models.py Public API surface — DocumentEntry, DocumentStatus, AnalysisSection, FileSearchConfig TypedDicts and enums exposed to users
🟡 Medium _file_search.py FileSearchBackend protocol + OpenAI/Foundry factory methods for vector store integration
🟡 Medium __init__.py Public exports — verify the right symbols are exposed
🟡 Medium pyproject.toml Package metadata, dependencies, version constraints
🟢 Low tests/ 78 unit tests + 5 live integration tests

MAF API usage (needs team alignment)

This package uses the following internal/private MAF APIs — if any of these are changing or not intended for external use, this package may need updates:

  • BaseContextProvider and its before_run() hook
  • SessionContext.extend_instructions(), extend_messages(), extend_tools()
  • Content.from_data(), Content.from_uri(), Content.type, Content.media_type, Content.additional_properties
  • FunctionTool for registering list_documents()
  • agent_framework._sessions.AgentSession
  • agent_framework._settings.load_settings()

This PR adds agent-framework-azure-ai-contentunderstanding, an optional connector package that integrates Azure Content Understanding (CU) into the Agent Framework as a context provider.

What's Included

Core (_context_provider.py, _models.py, _file_search.py)

  • ContentUnderstandingContextProvider -- auto-analyzes file attachments (PDF, images, audio, video) via Azure CU and injects structured results (markdown, fields) into LLM context
  • Auto-detects media type and selects the right CU analyzer (prebuilt-documentSearch, prebuilt-audioSearch, prebuilt-videoSearch)
  • Multi-document session state with status tracking (analyzing/uploading/ready/failed)
  • Configurable timeout (max_wait) with async background fallback
  • Output filtering (>90% token reduction) via AnalysisSection enum
  • Auto-registered list_documents() tool for status queries
  • Document content injected into conversation history for follow-up turns
  • Multi-segment video/audio: per-segment fields with time ranges
  • MIME sniffing for misidentified files (application/octet-stream)
  • Per-file analyzer ID override via Content.additional_properties["analyzer_id"] -- mix different analyzers in the same turn (e.g., prebuilt-invoice for invoices alongside prebuilt-documentSearch for general docs)
  • Duplicate filename rejection (filenames must be unique within a session)
  • Optional FileSearchConfig for vector store integration (OpenAI/Foundry backends)

Samples (6 scripts + 3 DevUI)

  • 01_document_qa.py -- Single PDF upload + Q&A
  • 02_multi_turn_session.py -- AgentSession persistence across turns
  • 03_multimodal_chat.py -- PDF + audio + video parallel analysis (5 turns)
  • 04_invoice_processing.py -- Structured field extraction with prebuilt-invoice
  • 05_background_analysis.py -- Non-blocking analysis with max_wait + status tracking
  • 06_large_doc_file_search.py -- CU extraction + vector store RAG
  • 02-devui/01-multimodal_agent -- Interactive web UI for uploading and chatting with documents/audio/video
  • 02-devui/02-file_search_agent/azure_openai_backend -- DevUI with CU + Azure OpenAI file_search RAG
  • 02-devui/02-file_search_agent/foundry_backend -- DevUI with CU + Foundry file_search RAG

Tests

  • 66 unit tests covering all major flows
  • 5 live integration tests (CU endpoint required)
  • Test fixtures for PDF, audio, video, image, invoice modalities

@markwallace-microsoft markwallace-microsoft added documentation Improvements or additions to documentation python labels Mar 22, 2026
@github-actions github-actions Bot changed the title [WIP] [Python] Add agent-framework-azure-contentunderstanding package (DO NOT REVIEW) Python: [WIP] [Python] Add agent-framework-azure-contentunderstanding package (DO NOT REVIEW) Mar 22, 2026
@markwallace-microsoft
Copy link
Copy Markdown
Contributor

markwallace-microsoft commented Mar 23, 2026

Python Test Coverage

Python Test Coverage Report •
FileStmtsMissCoverMissing
packages/azure-contentunderstanding/agent_framework_azure_contentunderstanding
   _context_provider.py2514283%177–180, 283–284, 286, 290–291, 294, 298, 381, 383, 399, 521, 525, 579, 629–630, 653, 655–658, 798, 802, 808, 828–833, 835–840, 848, 857–858
   _detection.py801186%156, 162, 167–172, 231–233
   _extraction.py1741293%40, 122, 125, 146, 224, 256, 277–281, 292
   _file_search.py23482%58, 65, 69, 72
   _models.py37197%111
TOTAL30448354988% 

Python Unit Test Overview

Tests Skipped Failures Errors Time
6113 30 💤 0 ❌ 0 🔥 1m 40s ⏱️

@yungshinlintw yungshinlintw changed the title Python: [WIP] [Python] Add agent-framework-azure-contentunderstanding package (DO NOT REVIEW) Python: [WIP] [Python] Add agent-framework-azure-ai-contentunderstanding package (DO NOT REVIEW) Mar 26, 2026
@yungshinlintw yungshinlintw changed the title Python: [WIP] [Python] Add agent-framework-azure-ai-contentunderstanding package (DO NOT REVIEW) [Python] Add agent-framework-azure-ai-contentunderstanding package Mar 27, 2026
@yungshinlintw yungshinlintw marked this pull request as ready for review March 27, 2026 05:14
Copilot AI review requested due to automatic review settings March 27, 2026 05:14
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new optional Python connector package, agent-framework-azure-ai-contentunderstanding, integrating Azure Content Understanding (CU) into the Agent Framework as a BaseContextProvider for automatic attachment analysis and optional vector-store (file_search) indexing.

Changes:

  • Introduces ContentUnderstandingContextProvider plus supporting models and vector-store upload abstraction (FileSearchBackend / FileSearchConfig).
  • Adds extensive unit + integration tests and CU result fixtures, along with script + DevUI samples.
  • Wires the new workspace package into python/pyproject.toml and python/uv.lock.

Reviewed changes

Copilot reviewed 36 out of 38 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
python/uv.lock Adds the new workspace member and locks new deps (azure-ai-contentunderstanding, filetype).
python/pyproject.toml Registers the package in workspace deps and adds pyright test env config.
python/packages/azure-ai-contentunderstanding/pyproject.toml New package metadata, deps, and tooling config (pytest/ruff/mypy/pyright).
python/packages/azure-ai-contentunderstanding/agent_framework_azure_ai_contentunderstanding/init.py Public exports for provider/models/backends.
python/packages/azure-ai-contentunderstanding/agent_framework_azure_ai_contentunderstanding/_models.py Defines DocumentStatus, AnalysisSection, DocumentEntry, FileSearchConfig.
python/packages/azure-ai-contentunderstanding/agent_framework_azure_ai_contentunderstanding/_file_search.py Adds backend abstraction for vector store upload/delete across OpenAI/Foundry clients.
python/packages/azure-ai-contentunderstanding/agent_framework_azure_ai_contentunderstanding/_context_provider.py Implements CU analysis, session tracking, background analysis, MIME sniffing, and optional vector-store upload.
python/packages/azure-ai-contentunderstanding/tests/cu/conftest.py Adds fixtures and mock CU client factory.
python/packages/azure-ai-contentunderstanding/tests/cu/test_models.py Unit tests for enums/typed models and FileSearchConfig factories.
python/packages/azure-ai-contentunderstanding/tests/cu/test_context_provider.py Comprehensive unit tests for provider flows (analysis, background, sniffing, file_search).
python/packages/azure-ai-contentunderstanding/tests/cu/test_integration.py Live CU integration tests (skipped unless env var is set).
python/packages/azure-ai-contentunderstanding/tests/cu/fixtures/analyze_pdf_result.json CU PDF fixture for unit tests.
python/packages/azure-ai-contentunderstanding/tests/cu/fixtures/analyze_invoice_result.json CU invoice fixture for unit tests.
python/packages/azure-ai-contentunderstanding/tests/cu/fixtures/analyze_image_result.json CU image fixture for unit tests.
python/packages/azure-ai-contentunderstanding/tests/cu/fixtures/analyze_audio_result.json CU audio fixture for unit tests.
python/packages/azure-ai-contentunderstanding/tests/cu/fixtures/analyze_video_result.json CU video fixture for unit tests.
python/packages/azure-ai-contentunderstanding/README.md Package README with setup guidance and usage examples.
python/packages/azure-ai-contentunderstanding/LICENSE Adds MIT license file for the new package.
python/packages/azure-ai-contentunderstanding/AGENTS.md Package-specific agent/dev notes and architecture description.
python/packages/azure-ai-contentunderstanding/.gitignore Ignores local-only artifacts under the package.
python/packages/azure-ai-contentunderstanding/samples/README.md Top-level samples index for scripts and DevUI examples.
python/packages/azure-ai-contentunderstanding/samples/01-get-started/01_document_qa.py Script sample: single PDF upload + Q&A.
python/packages/azure-ai-contentunderstanding/samples/01-get-started/02_multi_turn_session.py Script sample: session persistence across turns.
python/packages/azure-ai-contentunderstanding/samples/01-get-started/03_multimodal_chat.py Script sample: PDF+audio+video parallel CU analysis.
python/packages/azure-ai-contentunderstanding/samples/01-get-started/04_invoice_processing.py Script sample: per-file analyzer override for invoice extraction.
python/packages/azure-ai-contentunderstanding/samples/01-get-started/05_background_analysis.py Script sample: short max_wait triggers background analysis + status.
python/packages/azure-ai-contentunderstanding/samples/01-get-started/06_large_doc_file_search.py Script sample: CU extraction + vector-store indexing for file_search.
python/packages/azure-ai-contentunderstanding/samples/02-devui/01-multimodal_agent/agent.py DevUI agent: CU-powered upload + chat.
python/packages/azure-ai-contentunderstanding/samples/02-devui/01-multimodal_agent/init.py DevUI agent module export.
python/packages/azure-ai-contentunderstanding/samples/02-devui/01-multimodal_agent/README.md DevUI setup/usage doc for multimodal agent.
python/packages/azure-ai-contentunderstanding/samples/02-devui/02-file_search_agent/azure_openai_backend/agent.py DevUI agent: CU + file_search (Azure OpenAI backend).
python/packages/azure-ai-contentunderstanding/samples/02-devui/02-file_search_agent/azure_openai_backend/init.py DevUI agent module export.
python/packages/azure-ai-contentunderstanding/samples/02-devui/02-file_search_agent/azure_openai_backend/README.md DevUI setup/usage doc for Azure OpenAI file_search agent.
python/packages/azure-ai-contentunderstanding/samples/02-devui/02-file_search_agent/foundry_backend/agent.py DevUI agent: CU + file_search (Foundry backend).
python/packages/azure-ai-contentunderstanding/samples/02-devui/02-file_search_agent/foundry_backend/init.py Foundry backend sample package init.
python/packages/azure-ai-contentunderstanding/samples/02-devui/02-file_search_agent/foundry_backend/README.md DevUI setup/usage doc for Foundry file_search agent.
python/AGENTS.md Adds the new package to the Python “Azure Integrations” index.

Comment thread python/packages/azure-contentunderstanding/AGENTS.md
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 36 out of 38 changed files in this pull request and generated 3 comments.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 36 out of 38 changed files in this pull request and generated 3 comments.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 36 out of 38 changed files in this pull request and generated 1 comment.

Comment thread python/packages/azure-contentunderstanding/README.md
@yungshinlintw yungshinlintw force-pushed the yslin/contentunderstanding-context-provider branch from 5677c0b to 9f31124 Compare March 27, 2026 21:52
Copy link
Copy Markdown
Member

@eavanvalkenburg eavanvalkenburg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left a couple of comments, the most important one is in the 05_background_analysis because it is a core question about how this should be used, let's discuss options for that and then we need some updates most likely

Add Azure Content Understanding integration as a context provider for the
Agent Framework. The package automatically analyzes file attachments
(documents, images, audio, video) using Azure CU and injects structured
results (markdown, fields) into the LLM context.

Key features:
- Multi-document session state with status tracking (pending/ready/failed)
- Configurable timeout with async background fallback for large files
- Output filtering via AnalysisSection enum
- Auto-registered list_documents() and get_analyzed_document() tools
- Supports all CU modalities: documents, images, audio, video
- Content limits enforcement (pages, file size, duration)
- Binary stripping of supported files from input messages

Public API:
- ContentUnderstandingContextProvider (main class)
- AnalysisSection (output section selector enum)
- ContentLimits (configurable limits dataclass)

Tests: 46 unit tests, 91% coverage, all linting and type checks pass.
- Replace synthetic fixtures with real CU API responses (sanitized)
- Update test assertions to match real data (Contoso vs CONTOSO,
  TotalAmount vs InvoiceTotal, field values from real analysis)
- Add --pre install note in README (preview package)
- Document unenforced ContentLimits fields (max_pages, duration)
sanaullahmohammed pushed a commit to sanaullahmohammed/NexusOps that referenced this pull request May 28, 2026
Updated
[Microsoft.Agents.AI](https://github.com/microsoft/agent-framework) from
1.0.0 to 1.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Agents.AI's
releases](https://github.com/microsoft/agent-framework/releases)._

## 1.7.0

## [1.7.0] - 2026-05-28

### Added
- **agent-framework-core**: Add `HarnessAgent` and background-agents
harness provider
([#​6041](https://github.com/microsoft/agent-framework/pull/6041),
[#​6069](https://github.com/microsoft/agent-framework/pull/6069))
- **agent-framework-core**, **agent-framework-a2a**: Add
`A2AAgentSession` with referenced task IDs and input-required support
([#​5980](https://github.com/microsoft/agent-framework/pull/5980))
- **agent-framework-foundry**: Add experimental prompt-agent conversion
and deployment APIs
([#​5959](https://github.com/microsoft/agent-framework/pull/5959))
- **agent-framework-declarative**: Add Foundry Toolbox MCP invocation
support and sample
([#​5933](https://github.com/microsoft/agent-framework/pull/5933))
- **samples**: Add hosting samples overview README
([#​5407](https://github.com/microsoft/agent-framework/pull/5407))

### Changed
- **agent-framework-core**: Align TodoProvider tool names with the C#
implementation
([#​6107](https://github.com/microsoft/agent-framework/pull/6107))
- **agent-framework-core**: Align ModeProvider tool names and
instructions
([#​6071](https://github.com/microsoft/agent-framework/pull/6071))
- **agent-framework-chatkit**: Raise the `openai-chatkit` dependency
floor to `>=1.6.4` to match the current typed API usage.
- **agent-framework-declarative**: [BREAKING] Remove Python-only
declarative actions and rename alias kinds to C# canonical names
([#​6126](https://github.com/microsoft/agent-framework/pull/6126))
- **tests**: Replace deprecated `asyncio.iscoroutinefunction` usage in
DevUI cleanup-hook tests
([#​4563](https://github.com/microsoft/agent-framework/pull/4563))

### Fixed
- **agent-framework-core**: Point `@​experimental` warnings at user code
([#​5996](https://github.com/microsoft/agent-framework/pull/5996))
- **agent-framework-declarative**: Fix Foreach body exit wiring
([#​6050](https://github.com/microsoft/agent-framework/pull/6050))
- **agent-framework-devui**: Fix streaming memory growth regression
([#​6038](https://github.com/microsoft/agent-framework/pull/6038))
- **agent-framework-foundry**: Pass default headers to Foundry agents
([#​6040](https://github.com/microsoft/agent-framework/pull/6040))
- **agent-framework-foundry-hosting**: Fix hosted handoff argument
serialization
([#​5861](https://github.com/microsoft/agent-framework/pull/5861))
- **agent-framework-foundry-hosting**: Allow hosted checkpoints to
restore `MessageRole` values
([#​6049](https://github.com/microsoft/agent-framework/pull/6049))
- **agent-framework-openai**: Preserve citation `get_url` metadata
([#​6037](https://github.com/microsoft/agent-framework/pull/6037))
- **agent-framework-openai**: Guard Chat Completions streaming against
null deltas
([#​5734](https://github.com/microsoft/agent-framework/pull/5734))
- **agent-framework-openai**: Read response headers defensively for
stream wrappers without `.headers`
([#​6028](https://github.com/microsoft/agent-framework/pull/6028),
[#​6029](https://github.com/microsoft/agent-framework/pull/6029))
- **samples**: Fix sequential workflow sample output handling
([#​5976](https://github.com/microsoft/agent-framework/pull/5976))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.6.0...python-1.7.0

## 1.6.1

## What's Changed
* .NET: Add hyperlight to release slnf by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5695
* .NET: Update FoundryAgent to address HostedAgents strict URL routing
by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5677
* .NET: Add IChatMessageInjector for message injection during function
loop by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5679
* .NET: Foundry.Hosting IT - eliminate MSBuild parallel-output races by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5725
* .NET: Hosted-Files sample + AgentSessionFiles SDK companion +
integration test by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5698
* .NET: Simplify ClientHeadersScope to rely on AsyncLocal natural
restoration by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5676
* .NET: Hosted Agents - RAG Sample with Azure AI Search (#​5693) by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5701
* .NET: Fix/per service input persistence on stream error by @​alliscode
in https://github.com/microsoft/agent-framework/pull/5744
* .NET: Remove Foundry Toolbox server-side tools support by @​alliscode
in https://github.com/microsoft/agent-framework/pull/5753
* .NET: DevUI: add configurable access controls for the DevUI HTTP
surface by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/5739
* .NET: Add A2A input-request content for human-in-the-loop scenarios by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5743
* .NET fix: Synthesized Handoff FunctionResult is never sent to agent by
@​lokitoth in https://github.com/microsoft/agent-framework/pull/5718
* .NET: Refactor harness console rendering by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5751
* .NET: fix: align Anthropic Extensions AI version by @​danyalahmed1995
in https://github.com/microsoft/agent-framework/pull/5709
* .NET: declare Magentic protocol messages by @​he-yufeng in
https://github.com/microsoft/agent-framework/pull/5778
* .NET: Feat/dotnet shell tool by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5604
* .NET: Fix OpenAIResponsesAgentClient to include agentName in endpoint
path by @​giles17 in
https://github.com/microsoft/agent-framework/pull/5748
* .NET: CI hardening — split Functions tests, re-enable skipped
integration tests by @​giles17 in
https://github.com/microsoft/agent-framework/pull/5717
* .NET: Add harness agent package by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5782
* .NET: [Breaking Change] Auto-wire ChatClient with
OpenTelemetryChatClient in OpenTelemetryAgent by @​Copilot in
https://github.com/microsoft/agent-framework/pull/5750
* Dotnet: Fixing FoundryToolboxMcp sample to use created toolbox by
@​alliscode in https://github.com/microsoft/agent-framework/pull/5786
* .NET: fix: avoid mutating handoff message roles by @​he-yufeng in
https://github.com/microsoft/agent-framework/pull/5808
* .NET: feat(evals): add ground_truth/expected_output support for
workflow evaluation by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5755
* .NET: Update version for release. by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5789
* .NET: Fix build issue CA1873 in DevUI by using LoggerMessage source
generator by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5831
* [BREAKING] Python: DevUI: tighten default access controls and CORS
posture by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/5740
* [BREAKING] Python: Align file skill folder discovery with
agentskills.io spec by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5807
* .NET: Filestore improvements by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5842
* .NET: DevUI: quarantine flaky discovery integration test (#​5845) by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5846
* .NET: Update version to 1.6.1 for release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5843

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.5.0...dotnet-1.6.1

## 1.6.0

## [1.6.0] - 2026-05-21

### Added
- **agent-framework-core**: Shell tool with support for local and Docker
execution
([#​5664](https://github.com/microsoft/agent-framework/pull/5664))
- **agent-framework-monty**: New Monty-backed CodeAct provider package
([#​5915](https://github.com/microsoft/agent-framework/pull/5915))
- **agent-framework-foundry**: Add experimental hosted tool factories on
`FoundryChatClient`
([#​5958](https://github.com/microsoft/agent-framework/pull/5958))
- **agent-framework-foundry**: Include tool definitions for Foundry
agent evals
([#​5974](https://github.com/microsoft/agent-framework/pull/5974))
- **agent-framework-a2a**: Use non-streaming transport and
`return_immediately` for background ops
([#​5963](https://github.com/microsoft/agent-framework/pull/5963))

### Changed
- **agent-framework-core**, **agent-framework-foundry**: [BREAKING]
Enable instrumentation by default
([#​5865](https://github.com/microsoft/agent-framework/pull/5865))
- **agent-framework-foundry**: Show more authentication methods in
Foundry Toolbox MCP
([#​5719](https://github.com/microsoft/agent-framework/pull/5719))

### Fixed
- **agent-framework-core**: Skip MCP prompt loading when unsupported
([#​5370](https://github.com/microsoft/agent-framework/pull/5370))

## 1.5.0

## What's Changed
* .NET: feat: Implement message filtering to exclude non-portable
content typ… by @​tarockey in
https://github.com/microsoft/agent-framework/pull/5410
* .NET: Add allow listing for WebBrowsingTool by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5605
* .NET: fix: JSON Serialization issue with MultiPartyConversation by
@​lokitoth in https://github.com/microsoft/agent-framework/pull/5653
* .NET: Improve Todo multithreading and inject todos into message list
by @​westey-m in https://github.com/microsoft/agent-framework/pull/5655
* .NET: fix: Add missing Workflows "Shared" sources to solution by
@​lokitoth in https://github.com/microsoft/agent-framework/pull/5656
* .NET: Fix QuestionExecutor looping after GotoAction re-entry in
declarative workflows by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5635
* .NET: Fix YAML block scalar parsing for file skills by @​tejakusireddy
in https://github.com/microsoft/agent-framework/pull/5610
* .NET: Add hosted agent observability sample by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5660
* .NET: Bump MEAI to 10.5.1 and add Foundry per-call x-client header
support by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5652
* .NET: Fix flaky declarative test by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5669
* .NET: Add Foundry.Hosting.IntegrationTests by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5598
* .NET: Issue 5662 by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5668
* .NET: Support reasoning events in AGUI by @​jeffinsibycoremont in
https://github.com/microsoft/agent-framework/pull/4953
* .NET: feat: Update Github Copilot SDK to 1.0.0-beta.2 by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5699
* .NET: feat: Implement Magentic Orchestration for .NET by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5595
* .NET: Foundry.Hosting IT - avoid MSB3026 in publish step by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5689
* .NET: Python: Add dotnet integration test report to CI by @​giles17 in
https://github.com/microsoft/agent-framework/pull/5515
* .NET: Non-thread-safe sequence number generation may cause duplicate
or out-of-order IDs by @​tuanaiseo in
https://github.com/microsoft/agent-framework/pull/5320
* .NET: Fix typo: sesionElement -> sessionElement by @​XiongHaoTrigger
in https://github.com/microsoft/agent-framework/pull/5674
* .NET: Mark Magentic Orchestration Experimental by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5704
* .NET: Fix function_call_output.output to be a JSON string on the wire
by @​alliscode in https://github.com/microsoft/agent-framework/pull/5705
* .NET: Update version for release by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5703

## New Contributors
* @​tarockey made their first contribution in
https://github.com/microsoft/agent-framework/pull/5410
* @​tejakusireddy made their first contribution in
https://github.com/microsoft/agent-framework/pull/5610
* @​jeffinsibycoremont made their first contribution in
https://github.com/microsoft/agent-framework/pull/4953
* @​tuanaiseo made their first contribution in
https://github.com/microsoft/agent-framework/pull/5320
* @​XiongHaoTrigger made their first contribution in
https://github.com/microsoft/agent-framework/pull/5674

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.4.0...dotnet-1.5.0

## 1.4.0

## What's Changed
* .NET: Bump OpenTelemetry packages to 1.15.3 by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5478
* .NET: Support returning durable workflow results from HTTP trigger
endpoint by @​kshyju in
https://github.com/microsoft/agent-framework/pull/5321
* .NET: [Breaking] Support string[] arguments for file-based skill
scripts by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5475
* .NET: Add HttpRequestAction support to declarative workflows by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/5474
* .NET: Add declarative HttpRequestAction sample by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5572
* .NET: dotnet: Add hosted-agent User-Agent supplement to outgoing
requests by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5453
* .NET: Add dedicated Foundry.Hosting UnitTest project by @​rogerbarreto
in https://github.com/microsoft/agent-framework/pull/5592
* .NET: Harness Feature branch by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5310
* .NET: Hosting updates to declarative workflows by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5589
* docs: enhance README with 1.0 features and improved structure by
@​chetantoshniwal in
https://github.com/microsoft/agent-framework/pull/5534
* .NET: Update version for release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5636
* .NET: Add Microsoft.Agents.AI.Hyperlight package for CodeAct
integration (.NET) by @​eavanvalkenburg in
https://github.com/microsoft/agent-framework/pull/5329

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.3.0...dotnet-1.4.0

## 1.3.0

## What's Changed
* .NET: Add dynamic tool expansion sample by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5425
* .NET: Update Aspire package to be preview by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5444
* .NET: Fix off-thread RunStatus race where GetStatusAsync can return
Running after ResumeAsync halts by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5412
* .NET: Update versions for release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5449
* .NET: Add streaming support to A2A agent handler by @​SergeyMenshykh
in https://github.com/microsoft/agent-framework/pull/5427
* .NET: dotnet: Add server-side Foundry Toolbox support and fix SDK
beta.4 br… by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5450

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.2.0...dotnet-1.3.0

## 1.2.2

## [1.2.2] - 2026-04-29

### Added
- **agent-framework-azure-contentunderstanding**: New alpha package —
Azure AI Content Understanding context provider that auto-analyzes file
attachments (documents, images, audio, video) and injects structured
results into the LLM context, with multi-document session state,
configurable timeout, output filtering via `AnalysisSection`, and
auto-registered `list_documents` / `get_analyzed_document` tools
([#​4829](https://github.com/microsoft/agent-framework/pull/4829))
- **agent-framework-foundry-hosting**: Add hosted Durable Workflow
support — propagate full conversation history to workflow agents and
wire `Workflow.as_agent()` end-to-end via the foundry hosting layer
([#​5531](https://github.com/microsoft/agent-framework/pull/5531))

### Changed
- **agent-framework-orchestrations**: [BREAKING] Standardize
orchestration terminal outputs as `AgentResponse` so
`Workflow.as_agent()` returns the final answer only; aligns
sequential-approval (`with_request_info`) and concurrent
(`intermediate_outputs=True`) flows on the same output contract
([#​5301](https://github.com/microsoft/agent-framework/pull/5301))
- **agent-framework-core**, **agent-framework-declarative**: Preserve
`Workflow.run()` shared state across calls so multi-turn `WorkflowAgent`
invocations retain context, accept `list[Message]` input in the
declarative start executor, and coerce `Enum` values when serializing
PowerFx symbols
([#​5531](https://github.com/microsoft/agent-framework/pull/5531))
- **dependencies**: Update workspace package dependencies and preserve
`mcp[ws]` / `uvicorn[standard]` extras through override-dependencies in
`/python`
([#​5555](https://github.com/microsoft/agent-framework/pull/5555))

### Fixed
- **agent-framework-core**: Fix observability spans not being correctly
nested when using streaming
([#​5552](https://github.com/microsoft/agent-framework/pull/5552))
- **agent-framework-openai**: Fix `file_search` citations breaking the
assistant-message history roundtrip — skip `hosted_file` content in the
assistant role so the Responses API no longer rejects `input_file`
([#​5557](https://github.com/microsoft/agent-framework/pull/5557))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.2.1...python-1.2.2

## 1.2.1

## [1.2.1] - 2026-04-28

### Added
- **agent-framework-foundry-hosting**: Add file data type support to
hosted-agent Responses, refresh `foundry-hosted-agents` samples, and add
response test coverage
([#​5485](https://github.com/microsoft/agent-framework/pull/5485))
- **samples**: Add `requirements.txt` and `.env.example` to the `a2a/`
hosting sample for pip-based setup
([#​5510](https://github.com/microsoft/agent-framework/pull/5510))

### Changed
- **dependencies**: Update `rich` requirement from `<15.0.0,>=13.7.1` to
`>=13.7.1,<16.0.0` in `/python`
([#​5227](https://github.com/microsoft/agent-framework/pull/5227))
- **dependencies**: Bump `prek` from `0.3.8` to `0.3.9` in `/python`
([#​5228](https://github.com/microsoft/agent-framework/pull/5228))
- **dependencies**: Bump `python-multipart` from `0.0.22` to `0.0.26` in
`/python`
([#​5286](https://github.com/microsoft/agent-framework/pull/5286))
- **dependencies**: Bump `pyasn1` from `0.6.2` to `0.6.3` in `/python`
([#​4748](https://github.com/microsoft/agent-framework/pull/4748))
- **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in
`/python/packages/ag-ui`
([#​5461](https://github.com/microsoft/agent-framework/pull/5461))
- **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in
`/python/packages/devui`
([#​5492](https://github.com/microsoft/agent-framework/pull/5492))
- **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in
`/python/packages/lab`
([#​5470](https://github.com/microsoft/agent-framework/pull/5470))
- **dependencies**: Bump `uv` from `0.11.3` to `0.11.6` in
`/python/packages/lab`
([#​5469](https://github.com/microsoft/agent-framework/pull/5469))
- **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in
`/python/packages/devui/frontend`
([#​5127](https://github.com/microsoft/agent-framework/pull/5127))
- **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in
`/python/samples/05-end-to-end/chatkit-integration/frontend`
([#​5126](https://github.com/microsoft/agent-framework/pull/5126))
- **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in
`/python/packages/devui/frontend`
([#​5484](https://github.com/microsoft/agent-framework/pull/5484))
- **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in
`/python/samples/05-end-to-end/chatkit-integration/frontend`
([#​5491](https://github.com/microsoft/agent-framework/pull/5491))
- **dependencies**: Bump `postcss` from `8.5.6` to `8.5.12` in
`/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend`
([#​5527](https://github.com/microsoft/agent-framework/pull/5527))
- **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in
`/python/packages/devui/frontend`
([#​4921](https://github.com/microsoft/agent-framework/pull/4921))
- **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in
`/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend`
([#​4936](https://github.com/microsoft/agent-framework/pull/4936))

### Fixed
- **agent-framework-core**: Prevent `inner_exception` from being lost in
`AgentFrameworkException`
([#​5167](https://github.com/microsoft/agent-framework/pull/5167))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.2.0...python-1.2.1

## 1.2.0



## Changes:

* f2b215a2f6d4767fd37b17dd33195100ea2e498f .NET [WIP] Foundry Hosted
Agents Support (#​5312) [ #​5091, #​5287, #​5278, #​5281, #​5316,
#​5336, #​5341, #​5367, #​5368, #​5371, #​5374, #​5406, #​5408 ]
* 57fa8ea9022ac9ec39fb5ececb020aa042599c8f Python: Fix
OpenAIEmbeddingClient to use AsyncOpenAI for /openai/v1 endpoints
(#​5137) [ #​5068 ]
* aa582d021d69dd3b047d7664ced090dcc08b56f2 Python: feat(evals): add
ground_truth support for similarity evaluator (#​5234)
* 8f17067383154e87e3a3c8ae673c7b5f1cf71add .NET: Update .NET package
version 1.2.0 (#​5364)
* 267351b7607595cfcb2d64c739587bc50a476e2f .NET: Expand Workflow Unit
Test Coverage (#​5390)
* adcd2d33f5e32be85ea141fc8cc6fbe590aa0981 .NET: Declarative workflows -
Gracefully handle agent scenarios when no response is returned (#​5376)
* d5777bc546ba48652d85cec6093b445965533a4a fix: Duplicate CallIds cause
Handoff Message Filtering to fail (#​5359)
* b6b191ad9c2ddaaa8a647419135f01a2d3fce73a Python: Add second
approval-required tool (set_stop_loss) to
concurrent_builder_tool_approval sample (#​4875) [ #​4874 ]
* 2c8036779c20e5fa2feb6304c01e28c594e801a9 Python: Bump versions for a
release. Update CHANGELOG (#​5385)
* ce8b6305d8e7280ac9d22226a17e2e4f0828ef97 Python: Foundry hosted agent
V2 (#​5379) [ #​5177, #​5215, #​5235, #​5261, #​5281, #​5284, #​5298,
#​5372, #​5378 ]
<details><summary><b>See More</b></summary>

* 07f4c8a8d66d2fba40bdd086f16cc6dca059d054 Python: Expose forwardedProps
to agents and tools via session metadata (#​5264) [ #​5239 ]
* 04aaf0c1fe6023a579a334f9d2afe5b79ca497f0 Python: Add support for
Foundry Toolboxes (#​5346)
* 3e54a689fc96d681a072fe7e7cfc445909dac74b Python: Add search tool
content for OpenAI responses (#​5302)
* 60af59ba8b3c871065d0a288f21bfd7f0d6be3c1 .NET:
Features/3768-devui-aspire-integration (#​3771)
* 69894eded89d6e8ebf7bdb75cd0d9da54ade8b21 Python: Flatten hyperlight
execute_code output (#​5333)
* 495e1dad6bf3c62b14929805cfd5f0409c897876 Python: Fix
CopilotStudioAgent to reuse conversation ID from existing session
(#​5299) [ #​5285 ]
* 5777ed26e62e721375f78c404b8df1dfbc322560 .NET: fix: Add session
support for Handoff-hosted Agents (#​5280)
* 52303a8d07e8f9f2c3f056d969d99a9062c06219 .NET: Add Code Interpreter
container file download samples (#​5014) [ #​3081 ]
* c85d24da440ebe5266852f6356aecdadc41379c6 .NET: Fix declarative resume
edge predicates to recognize both direct and PortableValue-wrapped forms
after checkpoint restore (#​5323)
* b03cb324d5cc5e91a55b5eb9045b8ead244aaf11 Python: Add Hyperlight
CodeAct package and docs (#​5185)
* dbf935b4e30cf9ae2553cad54f6bc09668f7eb62 .NET: fix: Foundry Agents
without description in Handoff (#​5311)
* ca580a8316a904e947e48aaba8f3c00eb738ae36 .NET: Add error checking to
workflow samples (#​5175)
* 101e07b0610e2a73e0c369be7e81907a44fb243f .NET: Add Handoff sample
(#​5245)
* aee1acbf8baeb9fb3b3f196975aae9e7f7481096 .NET: Foundry Evals
integration for .NET (#​4914) [ #​5269 ]
* 91e34358eb4f2643b13537b470d8ea0aeaec7307 Python: Feat: Add
finish_reason support to AgentResponse and AgentResponseUpdate (#​5211)
[ #​4622 ]
* 90a633967ca60601fc696d335d770f9f05e236e2 Python: Fix Gemini client
support for Gemini API and Vertex AI (#​5258)
* c14beedb3af8bdee168e3a06a245a5b9d8fa5f75 test: Add Handoff
composability test (#​5208)
* 43d98974d3994486a35602467efcffb85839ce66 fix: propagate A2A metadata
with namespaced key in additional_properties (#​5240) (#​5256)
* 60da0ffb4803e0db18d3d3bde8e008eb4277882c .NET: Improve local release
build perf by only formatting for one build target framework (#​5266)
* a2044829b13659ac40f7f4112f74efcce15397cc .NET: Update
Microsoft.Extensions.AI to 10.5.0 and OpenAI to 2.10.0 and remove unused
refs (#​5269)
* 435c66e9c9f215fdea4b041da35e6ca774b63094 Python: Handle url_citation
annotations in `FoundryChatClient` streaming responses (#​5071) [ #​5029
]
* 52d50be9e06456aa8dc4adb2525b0bbd4f60d4d3 Bump Anthropic SDK to 12.13.0
and Anthropic.Foundry to 0.5.0 (#​5279)
* d20f9b5f973b0b8f693f530a8e3c0f9d9c99bb94 Add
AgentExecutorResponse.with_text() to preserve conversation history
through custom executors (#​5255) [ #​5246 ]
* 87a8fa2a9d0ffd3d0b4b31882e70c4f60462bb29 .NET: Fix intermittent
checkpoint-restore race in in-process workflow runs (#​5134)
* 8f7fd9525d1bf24f9606779ba7f8d41b66ce2ff1 Python: Add OpenAI types to
default checkpoint encoding allow list (#​5297)
* 69697065ab78502c5e58a7e6bc90ae14fdc46c20 Python: Add context_providers
and description to `workflow.as_agent()` (#​4651)
* fe4cd3cddc99f157710296dad892bec427cae991 Revert to public MCP server
and skip on transient upstream errors (#​5296)
* 611230cc8ebde031d6c15dbc15d7053ddf56b40c Python: improve
misc-integration test robustness (#​5295)
* f112150cfbc4d514b21b60a81bbe5239b4b2c81f Python: bump misc-integration
retry delay to 30s (#​5293)
* ff05c22c5853a51b83c05b6fdb3b8e982bbf3b31 Python: add experimental file
history provider (#​5248)
* eab7f09d03387a2b393f9785963353c1a09e8b6b Forward provider config to
SessionConfig in GitHubCopilotAgent (fixes #​5190) (#​5195)
* 68b93641b6802abd2d00a5191cb16c6074d39fe1 Python: Bump
agent-framework-devui to 1.0.0b260414 for release (#​5259)
* 2b251d904f1cb045ec3b7e13411cac3c1aa1e019 Python: Fix reasoning replay
when store=False (#​5250)
* 485af07b8c21896b7f24a0313b5a226b3bd711f8 Python: Add GeminiChatClient
(#​4847)
 ... (truncated)

## 1.1.1

## [1.1.1] - 2026-04-23

### Added
- **agent-framework-core**: Add `expected_output` ground-truth support
to `evaluate_workflow` for similarity evaluators
([#​5234](https://github.com/microsoft/agent-framework/pull/5234))
- **agent-framework-ag-ui**, **agent-framework-a2a**: Propagate
`thread_id` and `forwarded_props` through AG-UI to A2A `context_id`
([#​5383](https://github.com/microsoft/agent-framework/pull/5383))
- **samples**: Add second approval-required tool (`set_stop_loss`) to
`concurrent_builder_tool_approval` sample
([#​4875](https://github.com/microsoft/agent-framework/pull/4875))
- **agent-framework-core**: Add `SKIP_PARSING` sentinel for
`FunctionTool.invoke` to bypass `Content`-wrapping and return raw
function results
([#​5424](https://github.com/microsoft/agent-framework/pull/5424))

### Changed
- **agent-framework-foundry-hosting**: Correct Development Status
classifier from Beta (4) to Alpha (3) to match the package's lifecycle
stage ([#​5387](https://github.com/microsoft/agent-framework/pull/5387))
- **tests**: Add Python flaky test report workflow
([#​5342](https://github.com/microsoft/agent-framework/pull/5342))
- **agent-framework-hyperlight**: Simplify host callback to pass raw
Python results via `SKIP_PARSING`, switch `execute_code` input schema to
a plain JSON-schema dict, and tighten public API
surface
([#​5424](https://github.com/microsoft/agent-framework/pull/5424))

### Fixed
- **agent-framework-openai**: Fix OpenAI Responses streaming to
propagate `created_at` from the final `response.completed` event
([#​5382](https://github.com/microsoft/agent-framework/pull/5382))
- **agent-framework-openai**: Fix `OpenAIEmbeddingClient` to use
`AsyncOpenAI` for `/openai/v1` endpoints
([#​5137](https://github.com/microsoft/agent-framework/pull/5137))
- **agent-framework-openai**: Exclude null `file_id` from `input_image`
payload to prevent schema 400 errors
([#​5125](https://github.com/microsoft/agent-framework/pull/5125))
- **agent-framework-foundry**: Reconcile Toolbox hosted-tool payloads
with the Responses API
([#​5414](https://github.com/microsoft/agent-framework/pull/5414))
- **agent-framework-ag-ui**: Pass client `thread_id` as `session_id`
when constructing `AgentSession`
([#​5384](https://github.com/microsoft/agent-framework/pull/5384))
- **agent-framework-hyperlight**: Thread-confine `WasmSandbox`
interactions via per-entry `ThreadPoolExecutor` to eliminate the PyO3
`unsendable` panic when touched from asyncio worker threads
([#​5424](https://github.com/microsoft/agent-framework/pull/5424)) 


**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.1.0...python-1.1.1

## 1.1.0

## Changes:

* 3e864cdb4c6031cf93096fa6af4d927b31126d8a .NET: Update version to 1.1.0
(#​5204)
* 14d2ab3262580a383472b406d97b36cfd86b2787 Standardize file skills
terminology on 'directory' (#​5205)
* e5f7b9c260961916e108ca10780988aeefd51662 .NET: Support reflection for
discovery of resources and scripts in class-based skills (#​5183)
<details><summary><b>See More</b></summary>

* 1dd828d25502a1d4b4facff8e278da0668b40d28 CHANGELOG Update with V1.0.0
Release (#​5069)
* 8348584ac29f91a2c5e5e3db05166add1bb7b2af VerifySamples: Filter
projects to net10 only (#​5184)
* 6d6cb840aec8b85c6bb5e95dc680c8fdd6110394 .NET: Improve resilience of
verify-samples by building separately and improving evaluation
instructions (#​5151)
* 79afda1a6c4103baa5ae3a42b3004a9e1d28f892 Samples fixes (#​5169)
* a7a02c1abd87cdb69637aa6f51b98632b9b980c4 Fix test compat for entity
key validation (#​5179)
* 7010dd7439d1fd8f377ad062c7483edb1da60118 .NET: Support custom types in
skill resource and script functions (#​5152)
* e10d448ae29417f3aa107973ab7f7c2745cf7993 Fix handoff workflow context
management and improve AG-UI demo (#​5136)
* 942cb04ccb5adb3726f292659a7b61b5d67681b6 .NET: Fix compaction chat
history duplication bug (#​5149)
* e224f06e601a8ae16ea78c28f434848f332595a3 .NET: Update models used in
dotnet samples to gpt-5.4-mini (#​5080)
* 826d8db84c25389defa7aa13caa2016689c1b975 .NET: fix: Concurrent
Workflow Sample (#​5090)
* 4134c74060d37db60c600a5b748a4f7bfeb2ae41 Add
CreateSessionAsync(conversationId) to FoundryAgent (#​5144) [ #​5138 ]
* 86b49d800e9dc37df9d07f7924c9445ba5b8d2c2 Fix and simplify ComputerUse
sample (#​5075)
* d73c06fa8c1bcb9dc3351d3c80f023d4192765b7 .NET: Align skill folder
discovery with spec (#​5078)
* 746c7da216b9cf8d8affbfe40445fd6bcd3ae291 Revise agent examples in
README.md (#​5067)
* d30103fee6b03e2322dc13d590ef43661692b7c9 .NET: Fix input signal issue
during checkpoint restoration (#​5085)
* 55ae57c0ed403c10fc3520505198ca32e71e76d8 .NET: Add Message Delivery
Callback Overloads to Executor (#​5081)
* d284d96a9ed6cbe9220837e139ccb7202e5b5659 fix: 04_MultiModelService
sample (#​5074)
* d1a81159de1b51113c7a0357fdde14aebf1afb79 Bump Anthropic from 12.8.0 to
12.11.0 (#​5055)
* 9f0dbe5f8dc0c22861e761a26c4c6ed6e2436581 .NET: Improve workflow unit
test coverage (#​5072)
* 3fc1d000265e0db1f434fa5617d6e641b58c61a7 .NET: skill as class (#​5027)
* e4defadc799cea13efa912e7ee21ce833a5a5c92 .NET: Add github actions
workflow for verify-samples (#​5034)

This list of changes was [auto
generated](https://msdata.visualstudio.com/Vienna/_build/results?buildId=214703013&view=logs).</details>

## 1.0.1

## 1.0.1 - 2026-04-09

> [!IMPORTANT]
> **Security hardening for `FileCheckpointStorage`:** Checkpoint
deserialization now flows through a restricted unpickler by default,
which only permits a built-in set of safe Python types and all
`agent_framework` framework types. If your application stores custom
types in checkpoints, pass their `"module:qualname"` identifiers via the
new `allowed_checkpoint_types` constructor parameter — otherwise loads
will raise `WorkflowCheckpointException`. See [Security
Considerations](https://learn.microsoft.com/en-us/agent-framework/workflows/checkpoints?pivots=programming-language-python#security-considerations)
for details and the opt-in format.

### Added
- **samples**: Add sample documentation for two separate Neo4j context
providers for retrieval and memory
([#​4010](https://github.com/microsoft/agent-framework/pull/4010))
- **agent-framework-azure-cosmos**: Add Cosmos DB NoSQL checkpoint
storage for Python workflows
([#​4916](https://github.com/microsoft/agent-framework/pull/4916))

### Changed
- **docs**: Remove pre-release flag from agent-framework installation
instructions
([#​5082](https://github.com/microsoft/agent-framework/pull/5082))
- **samples**: Revise agent examples in `README.md`
([#​5067](https://github.com/microsoft/agent-framework/pull/5067))
- **repo**: Update `CHANGELOG` with v1.0.0 release
([#​5069](https://github.com/microsoft/agent-framework/pull/5069))
- **agent-framework-core**: [BREAKING] Fix handoff workflow context
management and improve AG-UI demo
([#​5136](https://github.com/microsoft/agent-framework/pull/5136))
- **agent-framework-core**: Restrict persisted checkpoint
deserialization by default
([#​4941](https://github.com/microsoft/agent-framework/pull/4941))
- **samples**: Bump `vite` from 7.3.1 to 7.3.2 in
`/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend`
([#​5132](https://github.com/microsoft/agent-framework/pull/5132))
- **python**: Bump `cryptography` from 46.0.6 to 46.0.7
([#​5176](https://github.com/microsoft/agent-framework/pull/5176))
- **python**: Bump `mcp` from 1.26.0 to 1.27.0
([#​5117](https://github.com/microsoft/agent-framework/pull/5117))
- **python**: Bump `mcp[ws]` from 1.26.0 to 1.27.0
([#​5119](https://github.com/microsoft/agent-framework/pull/5119))

### Fixed
- **agent-framework-core**: Raise clear handler registration error for
unresolved `TypeVar` annotations
([#​4944](https://github.com/microsoft/agent-framework/pull/4944))
- **agent-framework-openai**: Fix `response_format` crash on background
polling with empty text
([#​5146](https://github.com/microsoft/agent-framework/pull/5146))
- **agent-framework-foundry**: Strip tools from `FoundryAgent` request
when `agent_reference` is present
([#​5101](https://github.com/microsoft/agent-framework/pull/5101))
- **agent-framework-core**: Fix test compatibility for entity key
validation
([#​5179](https://github.com/microsoft/agent-framework/pull/5179))
- **agent-framework-openai**: Stop emitting duplicate reasoning content
from `response.reasoning_text.done` and
`response.reasoning_summary_text.done` events
([#​5162](https://github.com/microsoft/agent-framework/pull/5162))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.0.0...python-1.0.1

Commits viewable in [compare
view](https://github.com/microsoft/agent-framework/commits).
</details>

Updated
[Microsoft.Agents.AI.OpenAI](https://github.com/microsoft/agent-framework)
from 1.0.0 to 1.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Agents.AI.OpenAI's
releases](https://github.com/microsoft/agent-framework/releases)._

## 1.7.0

## [1.7.0] - 2026-05-28

### Added
- **agent-framework-core**: Add `HarnessAgent` and background-agents
harness provider
([#​6041](https://github.com/microsoft/agent-framework/pull/6041),
[#​6069](https://github.com/microsoft/agent-framework/pull/6069))
- **agent-framework-core**, **agent-framework-a2a**: Add
`A2AAgentSession` with referenced task IDs and input-required support
([#​5980](https://github.com/microsoft/agent-framework/pull/5980))
- **agent-framework-foundry**: Add experimental prompt-agent conversion
and deployment APIs
([#​5959](https://github.com/microsoft/agent-framework/pull/5959))
- **agent-framework-declarative**: Add Foundry Toolbox MCP invocation
support and sample
([#​5933](https://github.com/microsoft/agent-framework/pull/5933))
- **samples**: Add hosting samples overview README
([#​5407](https://github.com/microsoft/agent-framework/pull/5407))

### Changed
- **agent-framework-core**: Align TodoProvider tool names with the C#
implementation
([#​6107](https://github.com/microsoft/agent-framework/pull/6107))
- **agent-framework-core**: Align ModeProvider tool names and
instructions
([#​6071](https://github.com/microsoft/agent-framework/pull/6071))
- **agent-framework-chatkit**: Raise the `openai-chatkit` dependency
floor to `>=1.6.4` to match the current typed API usage.
- **agent-framework-declarative**: [BREAKING] Remove Python-only
declarative actions and rename alias kinds to C# canonical names
([#​6126](https://github.com/microsoft/agent-framework/pull/6126))
- **tests**: Replace deprecated `asyncio.iscoroutinefunction` usage in
DevUI cleanup-hook tests
([#​4563](https://github.com/microsoft/agent-framework/pull/4563))

### Fixed
- **agent-framework-core**: Point `@​experimental` warnings at user code
([#​5996](https://github.com/microsoft/agent-framework/pull/5996))
- **agent-framework-declarative**: Fix Foreach body exit wiring
([#​6050](https://github.com/microsoft/agent-framework/pull/6050))
- **agent-framework-devui**: Fix streaming memory growth regression
([#​6038](https://github.com/microsoft/agent-framework/pull/6038))
- **agent-framework-foundry**: Pass default headers to Foundry agents
([#​6040](https://github.com/microsoft/agent-framework/pull/6040))
- **agent-framework-foundry-hosting**: Fix hosted handoff argument
serialization
([#​5861](https://github.com/microsoft/agent-framework/pull/5861))
- **agent-framework-foundry-hosting**: Allow hosted checkpoints to
restore `MessageRole` values
([#​6049](https://github.com/microsoft/agent-framework/pull/6049))
- **agent-framework-openai**: Preserve citation `get_url` metadata
([#​6037](https://github.com/microsoft/agent-framework/pull/6037))
- **agent-framework-openai**: Guard Chat Completions streaming against
null deltas
([#​5734](https://github.com/microsoft/agent-framework/pull/5734))
- **agent-framework-openai**: Read response headers defensively for
stream wrappers without `.headers`
([#​6028](https://github.com/microsoft/agent-framework/pull/6028),
[#​6029](https://github.com/microsoft/agent-framework/pull/6029))
- **samples**: Fix sequential workflow sample output handling
([#​5976](https://github.com/microsoft/agent-framework/pull/5976))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.6.0...python-1.7.0

## 1.6.1

## What's Changed
* .NET: Add hyperlight to release slnf by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5695
* .NET: Update FoundryAgent to address HostedAgents strict URL routing
by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5677
* .NET: Add IChatMessageInjector for message injection during function
loop by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5679
* .NET: Foundry.Hosting IT - eliminate MSBuild parallel-output races by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5725
* .NET: Hosted-Files sample + AgentSessionFiles SDK companion +
integration test by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5698
* .NET: Simplify ClientHeadersScope to rely on AsyncLocal natural
restoration by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5676
* .NET: Hosted Agents - RAG Sample with Azure AI Search (#​5693) by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5701
* .NET: Fix/per service input persistence on stream error by @​alliscode
in https://github.com/microsoft/agent-framework/pull/5744
* .NET: Remove Foundry Toolbox server-side tools support by @​alliscode
in https://github.com/microsoft/agent-framework/pull/5753
* .NET: DevUI: add configurable access controls for the DevUI HTTP
surface by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/5739
* .NET: Add A2A input-request content for human-in-the-loop scenarios by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5743
* .NET fix: Synthesized Handoff FunctionResult is never sent to agent by
@​lokitoth in https://github.com/microsoft/agent-framework/pull/5718
* .NET: Refactor harness console rendering by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5751
* .NET: fix: align Anthropic Extensions AI version by @​danyalahmed1995
in https://github.com/microsoft/agent-framework/pull/5709
* .NET: declare Magentic protocol messages by @​he-yufeng in
https://github.com/microsoft/agent-framework/pull/5778
* .NET: Feat/dotnet shell tool by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5604
* .NET: Fix OpenAIResponsesAgentClient to include agentName in endpoint
path by @​giles17 in
https://github.com/microsoft/agent-framework/pull/5748
* .NET: CI hardening — split Functions tests, re-enable skipped
integration tests by @​giles17 in
https://github.com/microsoft/agent-framework/pull/5717
* .NET: Add harness agent package by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5782
* .NET: [Breaking Change] Auto-wire ChatClient with
OpenTelemetryChatClient in OpenTelemetryAgent by @​Copilot in
https://github.com/microsoft/agent-framework/pull/5750
* Dotnet: Fixing FoundryToolboxMcp sample to use created toolbox by
@​alliscode in https://github.com/microsoft/agent-framework/pull/5786
* .NET: fix: avoid mutating handoff message roles by @​he-yufeng in
https://github.com/microsoft/agent-framework/pull/5808
* .NET: feat(evals): add ground_truth/expected_output support for
workflow evaluation by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5755
* .NET: Update version for release. by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5789
* .NET: Fix build issue CA1873 in DevUI by using LoggerMessage source
generator by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5831
* [BREAKING] Python: DevUI: tighten default access controls and CORS
posture by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/5740
* [BREAKING] Python: Align file skill folder discovery with
agentskills.io spec by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5807
* .NET: Filestore improvements by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5842
* .NET: DevUI: quarantine flaky discovery integration test (#​5845) by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5846
* .NET: Update version to 1.6.1 for release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5843

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.5.0...dotnet-1.6.1

## 1.6.0

## [1.6.0] - 2026-05-21

### Added
- **agent-framework-core**: Shell tool with support for local and Docker
execution
([#​5664](https://github.com/microsoft/agent-framework/pull/5664))
- **agent-framework-monty**: New Monty-backed CodeAct provider package
([#​5915](https://github.com/microsoft/agent-framework/pull/5915))
- **agent-framework-foundry**: Add experimental hosted tool factories on
`FoundryChatClient`
([#​5958](https://github.com/microsoft/agent-framework/pull/5958))
- **agent-framework-foundry**: Include tool definitions for Foundry
agent evals
([#​5974](https://github.com/microsoft/agent-framework/pull/5974))
- **agent-framework-a2a**: Use non-streaming transport and
`return_immediately` for background ops
([#​5963](https://github.com/microsoft/agent-framework/pull/5963))

### Changed
- **agent-framework-core**, **agent-framework-foundry**: [BREAKING]
Enable instrumentation by default
([#​5865](https://github.com/microsoft/agent-framework/pull/5865))
- **agent-framework-foundry**: Show more authentication methods in
Foundry Toolbox MCP
([#​5719](https://github.com/microsoft/agent-framework/pull/5719))

### Fixed
- **agent-framework-core**: Skip MCP prompt loading when unsupported
([#​5370](https://github.com/microsoft/agent-framework/pull/5370))

## 1.5.0

## What's Changed
* .NET: feat: Implement message filtering to exclude non-portable
content typ… by @​tarockey in
https://github.com/microsoft/agent-framework/pull/5410
* .NET: Add allow listing for WebBrowsingTool by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5605
* .NET: fix: JSON Serialization issue with MultiPartyConversation by
@​lokitoth in https://github.com/microsoft/agent-framework/pull/5653
* .NET: Improve Todo multithreading and inject todos into message list
by @​westey-m in https://github.com/microsoft/agent-framework/pull/5655
* .NET: fix: Add missing Workflows "Shared" sources to solution by
@​lokitoth in https://github.com/microsoft/agent-framework/pull/5656
* .NET: Fix QuestionExecutor looping after GotoAction re-entry in
declarative workflows by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5635
* .NET: Fix YAML block scalar parsing for file skills by @​tejakusireddy
in https://github.com/microsoft/agent-framework/pull/5610
* .NET: Add hosted agent observability sample by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5660
* .NET: Bump MEAI to 10.5.1 and add Foundry per-call x-client header
support by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5652
* .NET: Fix flaky declarative test by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5669
* .NET: Add Foundry.Hosting.IntegrationTests by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/5598
* .NET: Issue 5662 by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5668
* .NET: Support reasoning events in AGUI by @​jeffinsibycoremont in
https://github.com/microsoft/agent-framework/pull/4953
* .NET: feat: Update Github Copilot SDK to 1.0.0-beta.2 by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5699
* .NET: feat: Implement Magentic Orchestration for .NET by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5595
* .NET: Foundry.Hosting IT - avoid MSB3026 in publish step by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/5689
* .NET: Python: Add dotnet integration test report to CI by @​giles17 in
https://github.com/microsoft/agent-framework/pull/5515
* .NET: Non-thread-safe sequence number generation may cause duplicate
or out-of-order IDs by @​tuanaiseo in
https://github.com/microsoft/agent-framework/pull/5320
* .NET: Fix typo: sesionElement -> sessionElement by @​XiongHaoTrigger
in https://github.com/microsoft/agent-framework/pull/5674
* .NET: Mark Magentic Orchestration Experimental by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5704
* .NET: Fix function_call_output.output to be a JSON string on the wire
by @​alliscode in https://github.com/microsoft/agent-framework/pull/5705
* .NET: Update version for release by @​lokitoth in
https://github.com/microsoft/agent-framework/pull/5703

## New Contributors
* @​tarockey made their first contribution in
https://github.com/microsoft/agent-framework/pull/5410
* @​tejakusireddy made their first contribution in
https://github.com/microsoft/agent-framework/pull/5610
* @​jeffinsibycoremont made their first contribution in
https://github.com/microsoft/agent-framework/pull/4953
* @​tuanaiseo made their first contribution in
https://github.com/microsoft/agent-framework/pull/5320
* @​XiongHaoTrigger made their first contribution in
https://github.com/microsoft/agent-framework/pull/5674

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.4.0...dotnet-1.5.0

## 1.4.0

## What's Changed
* .NET: Bump OpenTelemetry packages to 1.15.3 by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5478
* .NET: Support returning durable workflow results from HTTP trigger
endpoint by @​kshyju in
https://github.com/microsoft/agent-framework/pull/5321
* .NET: [Breaking] Support string[] arguments for file-based skill
scripts by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/5475
* .NET: Add HttpRequestAction support to declarative workflows by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/5474
* .NET: Add declarative HttpRequestAction sample by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5572
* .NET: dotnet: Add hosted-agent User-Agent supplement to outgoing
requests by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5453
* .NET: Add dedicated Foundry.Hosting UnitTest project by @​rogerbarreto
in https://github.com/microsoft/agent-framework/pull/5592
* .NET: Harness Feature branch by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5310
* .NET: Hosting updates to declarative workflows by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5589
* docs: enhance README with 1.0 features and improved structure by
@​chetantoshniwal in
https://github.com/microsoft/agent-framework/pull/5534
* .NET: Update version for release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5636
* .NET: Add Microsoft.Agents.AI.Hyperlight package for CodeAct
integration (.NET) by @​eavanvalkenburg in
https://github.com/microsoft/agent-framework/pull/5329

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.3.0...dotnet-1.4.0

## 1.3.0

## What's Changed
* .NET: Add dynamic tool expansion sample by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5425
* .NET: Update Aspire package to be preview by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5444
* .NET: Fix off-thread RunStatus race where GetStatusAsync can return
Running after ResumeAsync halts by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/5412
* .NET: Update versions for release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/5449
* .NET: Add streaming support to A2A agent handler by @​SergeyMenshykh
in https://github.com/microsoft/agent-framework/pull/5427
* .NET: dotnet: Add server-side Foundry Toolbox support and fix SDK
beta.4 br… by @​alliscode in
https://github.com/microsoft/agent-framework/pull/5450

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.2.0...dotnet-1.3.0

## 1.2.2

## [1.2.2] - 2026-04-29

### Added
- **agent-framework-azure-contentunderstanding**: New alpha package —
Azure AI Content Understanding context provider that auto-analyzes file
attachments (documents, images, audio, video) and injects structured
results into the LLM context, with multi-document session state,
configurable timeout, output filtering via `AnalysisSection`, and
auto-registered `list_documents` / `get_analyzed_document` tools
([#​4829](https://github.com/microsoft/agent-framework/pull/4829))
- **agent-framework-foundry-hosting**: Add hosted Durable Workflow
support — propagate full conversation history to workflow agents and
wire `Workflow.as_agent()` end-to-end via the foundry hosting layer
([#​5531](https://github.com/microsoft/agent-framework/pull/5531))

### Changed
- **agent-framework-orchestrations**: [BREAKING] Standardize
orchestration terminal outputs as `AgentResponse` so
`Workflow.as_agent()` returns the final answer only; aligns
sequential-approval (`with_request_info`) and concurrent
(`intermediate_outputs=True`) flows on the same output contract
([#​5301](https://github.com/microsoft/agent-framework/pull/5301))
- **agent-framework-core**, **agent-framework-declarative**: Preserve
`Workflow.run()` shared state across calls so multi-turn `WorkflowAgent`
invocations retain context, accept `list[Message]` input in the
declarative start executor, and coerce `Enum` values when serializing
PowerFx symbols
([#​5531](https://github.com/microsoft/agent-framework/pull/5531))
- **dependencies**: Update workspace package dependencies and preserve
`mcp[ws]` / `uvicorn[standard]` extras through override-dependencies in
`/python`
([#​5555](https://github.com/microsoft/agent-framework/pull/5555))

### Fixed
- **agent-framework-core**: Fix observability spans not being correctly
nested when using streaming
([#​5552](https://github.com/microsoft/agent-framework/pull/5552))
- **agent-framework-openai**: Fix `file_search` citations breaking the
assistant-message history roundtrip — skip `hosted_file` content in the
assistant role so the Responses API no longer rejects `input_file`
([#​5557](https://github.com/microsoft/agent-framework/pull/5557))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.2.1...python-1.2.2

## 1.2.1

## [1.2.1] - 2026-04-28

### Added
- **agent-framework-foundry-hosting**: Add file data type support to
hosted-agent Responses, refresh `foundry-hosted-agents` samples, and add
response test coverage
([#​5485](https://github.com/microsoft/agent-framework/pull/5485))
- **samples**: Add `requirements.txt` and `.env.example` to the `a2a/`
hosting sample for pip-based setup
([#​5510](https://github.com/microsoft/agent-framework/pull/5510))

### Changed
- **dependencies**: Update `rich` requirement from `<15.0.0,>=13.7.1` to
`>=13.7.1,<16.0.0` in `/python`
([#​5227](https://github.com/microsoft/agent-framework/pull/5227))
- **dependencies**: Bump `prek` from `0.3.8` to `0.3.9` in `/python`
([#​5228](https://github.com/microsoft/agent-framework/pull/5228))
- **dependencies**: Bump `python-multipart` from `0.0.22` to `0.0.26` in
`/python`
([#​5286](https://github.com/microsoft/agent-framework/pull/5286))
- **dependencies**: Bump `pyasn1` from `0.6.2` to `0.6.3` in `/python`
([#​4748](https://github.com/microsoft/agent-framework/pull/4748))
- **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in
`/python/packages/ag-ui`
([#​5461](https://github.com/microsoft/agent-framework/pull/5461))
- **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in
`/python/packages/devui`
([#​5492](https://github.com/microsoft/agent-framework/pull/5492))
- **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in
`/python/packages/lab`
([#​5470](https://github.com/microsoft/agent-framework/pull/5470))
- **dependencies**: Bump `uv` from `0.11.3` to `0.11.6` in
`/python/packages/lab`
([#​5469](https://github.com/microsoft/agent-framework/pull/5469))
- **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in
`/python/packages/devui/frontend`
([#​5127](https://github.com/microsoft/agent-framework/pull/5127))
- **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in
`/python/samples/05-end-to-end/chatkit-integration/frontend`
([#​5126](https://github.com/microsoft/agent-framework/pull/5126))
- **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in
`/python/packages/devui/frontend`
([#​5484](https://github.com/microsoft/agent-framework/pull/5484))
- **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in
`/python/samples/05-end-to-end/chatkit-integration/frontend`
([#​5491](https://github.com/microsoft/agent-framework/pull/5491))
- **dependencies**: Bump `postcss` from `8.5.6` to `8.5.12` in
`/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend`
([#​5527](https://github.com/microsoft/agent-framework/pull/5527))
- **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in
`/python/packages/devui/frontend`
([#​4921](https://github.com/microsoft/agent-framework/pull/4921))
- **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in
`/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend`
([#​4936](https://github.com/microsoft/agent-framework/pull/4936))

### Fixed
- **agent-framework-core**: Prevent `inner_exception` from being lost in
`AgentFrameworkException`
([#​5167](https://github.com/microsoft/agent-framework/pull/5167))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.2.0...python-1.2.1

## 1.2.0



## Changes:

* f2b215a2f6d4767fd37b17dd33195100ea2e498f .NET [WIP] Foundry Hosted
Agents Support (#​5312) [ #​5091, #​5287, #​5278, #​5281, #​5316,
#​5336, #​5341, #​5367, #​5368, #​5371, #​5374, #​5406, #​5408 ]
* 57fa8ea9022ac9ec39fb5ececb020aa042599c8f Python: Fix
OpenAIEmbeddingClient to use AsyncOpenAI for /openai/v1 endpoints
(#​5137) [ #​5068 ]
* aa582d021d69dd3b047d7664ced090dcc08b56f2 Python: feat(evals): add
ground_truth support for similarity evaluator (#​5234)
* 8f17067383154e87e3a3c8ae673c7b5f1cf71add .NET: Update .NET package
version 1.2.0 (#​5364)
* 267351b7607595cfcb2d64c739587bc50a476e2f .NET: Expand Workflow Unit
Test Coverage (#​5390)
* adcd2d33f5e32be85ea141fc8cc6fbe590aa0981 .NET: Declarative workflows -
Gracefully handle agent scenarios when no response is returned (#​5376)
* d5777bc546ba48652d85cec6093b445965533a4a fix: Duplicate CallIds cause
Handoff Message Filtering to fail (#​5359)
* b6b191ad9c2ddaaa8a647419135f01a2d3fce73a Python: Add second
approval-required tool (set_stop_loss) to
concurrent_builder_tool_approval sample (#​4875) [ #​4874 ]
* 2c8036779c20e5fa2feb6304c01e28c594e801a9 Python: Bump versions for a
release. Update CHANGELOG (#​5385)
* ce8b6305d8e7280ac9d22226a17e2e4f0828ef97 Python: Foundry hosted agent
V2 (#​5379) [ #​5177, #​5215, #​5235, #​5261, #​5281, #​5284, #​5298,
#​5372, #​5378 ]
<details><summary><b>See More</b></summary>

* 07f4c8a8d66d2fba40bdd086f16cc6dca059d054 Python: Expose forwardedProps
to agents and tools via session metadata (#​5264) [ #​5239 ]
* 04aaf0c1fe6023a579a334f9d2afe5b79ca497f0 Python: Add support for
Foundry Toolboxes (#​5346)
* 3e54a689fc96d681a072fe7e7cfc445909dac74b Python: Add search tool
content for OpenAI responses (#​5302)
* 60af59ba8b3c871065d0a288f21bfd7f0d6be3c1 .NET:
Features/3768-devui-aspire-integration (#​3771)
* 69894eded89d6e8ebf7bdb75cd0d9da54ade8b21 Python: Flatten hyperlight
execute_code output (#​5333)
* 495e1dad6bf3c62b14929805cfd5f0409c897876 Python: Fix
CopilotStudioAgent to reuse conversation ID from existing session
(#​5299) [ #​5285 ]
* 5777ed26e62e721375f78c404b8df1dfbc322560 .NET: fix: Add session
support for Handoff-hosted Agents (#​5280)
* 52303a8d07e8f9f2c3f056d969d99a9062c06219 .NET: Add Code Interpreter
container file download samples (#​5014) [ #​3081 ]
* c85d24da440ebe5266852f6356aecdadc41379c6 .NET: Fix declarative resume
edge predicates to recognize both direct and PortableValue-wrapped forms
after checkpoint restore (#​5323)
* b03cb324d5cc5e91a55b5eb9045b8ead244aaf11 Python: Add Hyperlight
CodeAct package and docs (#​5185)
* dbf935b4e30cf9ae2553cad54f6bc09668f7eb62 .NET: fix: Foundry Agents
without description in Handoff (#​5311)
* ca580a8316a904e947e48aaba8f3c00eb738ae36 .NET: Add error checking to
workflow samples (#​5175)
* 101e07b0610e2a73e0c369be7e81907a44fb243f .NET: Add Handoff sample
(#​5245)
* aee1acbf8baeb9fb3b3f196975aae9e7f7481096 .NET: Foundry Evals
integration for .NET (#​4914) [ #​5269 ]
* 91e34358eb4f2643b13537b470d8ea0aeaec7307 Python: Feat: Add
finish_reason support to AgentResponse and AgentResponseUpdate (#​5211)
[ #​4622 ]
* 90a633967ca60601fc696d335d770f9f05e236e2 Python: Fix Gemini client
support for Gemini API and Vertex AI (#​5258)
* c14beedb3af8bdee168e3a06a245a5b9d8fa5f75 test: Add Handoff
composability test (#​5208)
* 43d98974d3994486a35602467efcffb85839ce66 fix: propagate A2A metadata
with namespaced key in additional_properties (#​5240) (#​5256)
* 60da0ffb4803e0db18d3d3bde8e008eb4277882c .NET: Improve local release
build perf by only formatting for one build target framework (#​5266)
* a2044829b13659ac40f7f4112f74efcce15397cc .NET: Update
Microsoft.Extensions.AI to 10.5.0 and OpenAI to 2.10.0 and remove unused
refs (#​5269)
* 435c66e9c9f215fdea4b041da35e6ca774b63094 Python: Handle url_citation
annotations in `FoundryChatClient` streaming responses (#​5071) [ #​5029
]
* 52d50be9e06456aa8dc4adb2525b0bbd4f60d4d3 Bump Anthropic SDK to 12.13.0
and Anthropic.Foundry to 0.5.0 (#​5279)
* d20f9b5f973b0b8f693f530a8e3c0f9d9c99bb94 Add
AgentExecutorResponse.with_text() to preserve conversation history
through custom executors (#​5255) [ #​5246 ]
* 87a8fa2a9d0ffd3d0b4b31882e70c4f60462bb29 .NET: Fix intermittent
checkpoint-restore race in in-process workflow runs (#​5134)
* 8f7fd9525d1bf24f9606779ba7f8d41b66ce2ff1 Python: Add OpenAI types to
default checkpoint encoding allow list (#​5297)
* 69697065ab78502c5e58a7e6bc90ae14fdc46c20 Python: Add context_providers
and description to `workflow.as_agent()` (#​4651)
* fe4cd3cddc99f157710296dad892bec427cae991 Revert to public MCP server
and skip on transient upstream errors (#​5296)
* 611230cc8ebde031d6c15dbc15d7053ddf56b40c Python: improve
misc-integration test robustness (#​5295)
* f112150cfbc4d514b21b60a81bbe5239b4b2c81f Python: bump misc-integration
retry delay to 30s (#​5293)
* ff05c22c5853a51b83c05b6fdb3b8e982bbf3b31 Python: add experimental file
history provider (#​5248)
* eab7f09d03387a2b393f9785963353c1a09e8b6b Forward provider config to
SessionConfig in GitHubCopilotAgent (fixes #​5190) (#​5195)
* 68b93641b6802abd2d00a5191cb16c6074d39fe1 Python: Bump
agent-framework-devui to 1.0.0b260414 for release (#​5259)
* 2b251d904f1cb045ec3b7e13411cac3c1aa1e019 Python: Fix reasoning replay
when store=False (#​5250)
* 485af07b8c21896b7f24a0313b5a226b3bd711f8 Python: Add GeminiChatClient
(#​4847)
 ... (truncated)

## 1.1.1

## [1.1.1] - 2026-04-23

### Added
- **agent-framework-core**: Add `expected_output` ground-truth support
to `evaluate_workflow` for similarity evaluators
([#​5234](https://github.com/microsoft/agent-framework/pull/5234))
- **agent-framework-ag-ui**, **agent-framework-a2a**: Propagate
`thread_id` and `forwarded_props` through AG-UI to A2A `context_id`
([#​5383](https://github.com/microsoft/agent-framework/pull/5383))
- **samples**: Add second approval-required tool (`set_stop_loss`) to
`concurrent_builder_tool_approval` sample
([#​4875](https://github.com/microsoft/agent-framework/pull/4875))
- **agent-framework-core**: Add `SKIP_PARSING` sentinel for
`FunctionTool.invoke` to bypass `Content`-wrapping and return raw
function results
([#​5424](https://github.com/microsoft/agent-framework/pull/5424))

### Changed
- **agent-framework-foundry-hosting**: Correct Development Status
classifier from Beta (4) to Alpha (3) to match the package's lifecycle
stage ([#​5387](https://github.com/microsoft/agent-framework/pull/5387))
- **tests**: Add Python flaky test report workflow
([#​5342](https://github.com/microsoft/agent-framework/pull/5342))
- **agent-framework-hyperlight**: Simplify host callback to pass raw
Python results via `SKIP_PARSING`, switch `execute_code` input schema to
a plain JSON-schema dict, and tighten public API
surface
([#​5424](https://github.com/microsoft/agent-framework/pull/5424))

### Fixed
- **agent-framework-openai**: Fix OpenAI Responses streaming to
propagate `created_at` from the final `response.completed` event
([#​5382](https://github.com/microsoft/agent-framework/pull/5382))
- **agent-framework-openai**: Fix `OpenAIEmbeddingClient` to use
`AsyncOpenAI` for `/openai/v1` endpoints
([#​5137](https://github.com/microsoft/agent-framework/pull/5137))
- **agent-framework-openai**: Exclude null `file_id` from `input_image`
payload to prevent schema 400 errors
([#​5125](https://github.com/microsoft/agent-framework/pull/5125))
- **agent-framework-foundry**: Reconcile Toolbox hosted-tool payloads
with the Responses API
([#​5414](https://github.com/microsoft/agent-framework/pull/5414))
- **agent-framework-ag-ui**: Pass client `thread_id` as `session_id`
when constructing `AgentSession`
([#​5384](https://github.com/microsoft/agent-framework/pull/5384))
- **agent-framework-hyperlight**: Thread-confine `WasmSandbox`
interactions via per-entry `ThreadPoolExecutor` to eliminate the PyO3
`unsendable` panic when touched from asyncio worker threads
([#​5424](https://github.com/microsoft/agent-framework/pull/5424)) 


**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.1.0...python-1.1.1

## 1.1.0

## Changes:

* 3e864cdb4c6031cf93096fa6af4d927b31126d8a .NET: Update version to 1.1.0
(#​5204)
* 14d2ab3262580a383472b406d97b36cfd86b2787 Standardize file skills
terminology on 'directory' (#​5205)
* e5f7b9c260961916e108ca10780988aeefd51662 .NET: Support reflection for
discovery of resources and scripts in class-based skills (#​5183)
<details><summary><b>See More</b></summary>

* 1dd828d25502a1d4b4facff8e278da0668b40d28 CHANGELOG Update with V1.0.0
Release (#​5069)
* 8348584ac29f91a2c5e5e3db05166add1bb7b2af VerifySamples: Filter
projects to net10 only (#​5184)
* 6d6cb840aec8b85c6bb5e95dc680c8fdd6110394 .NET: Improve resilience of
verify-samples by building separately and improving evaluation
instructions (#​5151)
* 79afda1a6…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation python

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Python: [Feature]: Azure Content Understanding context provider for multimodal document analysis

8 participants