Skip to content
Closed
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
55 changes: 49 additions & 6 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,40 @@
# Microsoft 365 Agents SDK for Python - Release Notes v1.2.0

**Release Date:** 2026-07-17
**Previous Version:** 1.1.0 (Released 2026-06-19)

This release adds first-class Microsoft Teams hosting APIs and a credential-free Entra ID authentication provider, while improving turn processing, OAuth token handling, streaming responses, and async runtime behavior.

## Major Features & Enhancements

- **Teams Hosting Package**: Added the new `microsoft-agents-hosting-msteams` package for building Teams agents with typed, decorator-based routing. It introduces `TeamsAgentExtension`, `TeamsTurnContext`, route namespaces for Teams invoke and event activities, and Teams API client access from handlers (#434)
- **Entra Auth Sidecar Package**: Added the new `microsoft-agents-authentication-entra-auth-sidecar` package for credential-free Entra ID Agent ID authentication through the Microsoft Entra ID Agent Container sidecar. It includes `SidecarAuth`, `SidecarHttpClient`, `SidecarConnectionSettings`, in-memory token caching, transient retry handling, and SSRF-safe sidecar URL validation (#424)
- **AgentApplication Lifecycle Hooks**: Added `before_turn` and `after_turn` hooks for app-level logic around route execution without requiring full middleware. Hooks can short-circuit processing, participate in state saving, and support scenarios such as app-level guards, telemetry enrichment, and turn cleanup (#431)
- **AgentApplication Routing and Connections**: Improved route registration and exposed `AgentApplication.connection_manager` for code that needs access to configured connections (#429, #432)
- **Detached SSO Token Exchange**: Teams SSO token exchange invoke activities are now handled independently from regular route dispatch, reducing duplicate route logic and making SSO callbacks more reliable (#469)

## New Models & APIs

- **StreamingResponse Attachments and Reset**: Added `StreamingResponse.add_attachment()` for final-message attachments and `StreamingResponse.reset()` for returning the helper to its initial state after a stream completes (#426)
- **Activity Method Type Handling**: Improved `Activity` helper methods for typed activity data and entity conversions, including support for the new `ActivityTreatment` entity type (#441)
- **Configuration Coercion Helpers**: Added shared boolean, integer, and float coercion helpers so environment-derived configuration values are interpreted consistently (#424)

## Bug Fixes

- **State Loading**: Removed duplicate `turn_state.load()` calls and corrected when state is loaded during `AgentApplication` initialization (#455, #460)
- **Middleware Pipeline**: Fixed `MiddlewareSet` registration and turn invocation so multiple middleware components are registered and invoked in order (#461)
- **Composite Channels**: Normalized composite channel IDs for all user token operations, improving OAuth behavior for Copilot Web and Teams channel IDs such as `msteams:copilot-web` (#457)
- **Teams Activity Hooks**: Fixed `TeamsActivityHandler` hook dispatch so Teams-specific handlers receive the required arguments (#450)
- **Concurrency**: Replaced runtime use of `threading.Lock` with `asyncio.Lock` in async execution paths to avoid blocking the event loop (#442)
- **Dependencies**: Removed the unused `azure-core` dependency from `microsoft-agents-hosting-core` (#467)

## Developer Experience

- **Logging**: Added color-coded log messages and simplified `ApplicationOptions` by removing the logger option in favor of standard module-level logging (#439, #443)
- **Samples and Documentation**: Fixed the FastAPI sample startup path and added missing dialogs package links to README release tables (#417, #458)

---

# Microsoft 365 Agents SDK for Python - Release Notes v1.1.0

**Release Date:** 2026-06-19
Expand All @@ -16,21 +53,18 @@

## Developer Experience

- **Integration Testing**: Integration testing enhancements (#408)
- **Testing Initialization Helper**: New testing initialization helper (#416)
- **Typing Annotations**: Updated typing annotations across the codebase (#418)
Comment thread
rodrigobr-msft marked this conversation as resolved.

Comment thread
rodrigobr-msft marked this conversation as resolved.
---

# Microsoft 365 Agents SDK for Python - Release Notes v1.0.0

**Release Date:** May 22, 2026
**Previous Version:** 0.9.0 (Released April 15, 2026)
**Previous Version:** 0.9.1 (Released May 4, 2026)

## Major Features & Enhancements

- **Dialogs Library**: New `microsoft-agents-hosting-dialogs` package porting the BotFramework dialog system (WaterfallDialog, ComponentDialog, DialogSet, DialogContext) and prompts (TextPrompt, NumberPrompt, ChoicePrompt, ConfirmPrompt, DateTimePrompt, AttachmentPrompt, OAuthPrompt) to the new SDK (#378)
- **Teams SSO Consent**: Support for the Teams SSO `Consent Required` flow (#380)
- **Teams Extension Updates**: `TeamsAgentExtension` and related types re-exported at the `microsoft_agents.hosting.teams` package root, integration with `microsoft-teams-api` 2.x Pydantic models, and new runnable samples for message extensions, task modules, and meeting events (#385)
- **Copilot Web OAuth Base-Channel Support**: New optional `force_base_channel` parameter on `Activity.get_conversation_reference()` and `_OAuthFlow.begin_flow()` so OAuth token exchange uses the base channel (e.g. `msteams`) when receiving composite channel IDs like `msteams:copilot-web` (#392)
- **Per-Channel Typing Indicator**: New `TypingChannelStrategy` and `TypingOptions` for configurable per-channel typing behavior, surfaced via `ApplicationOptions` and a streaming fix (#398)
Expand All @@ -39,9 +73,18 @@
## Developer Experience

- **API Reference Docstrings**: Docstrings updated from short-form to fully qualified object names for Learn API reference generation (#381)

---

# Microsoft 365 Agents SDK for Python - Release Notes v0.9.1

**Release Date:** 2026-05-04
**Previous Version:** 0.9.0 (Released 2026-04-15)

## Enhancements

- **Teams SSO Consent**: Support for the Teams SSO `Consent Required` flow (#380)
- **SuggestedActions Factory**: New factory for the `to` property of `SuggestedActions` (#370)
- **Dialogs Test Layout**: `hosting-dialogs` tests moved back under the top-level `tests/` directory for consistency with other packages (#379)
- **Build Dependencies**: Temporary fix for build testing dependencies (#404)

---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,5 @@ def load_configuration_from_env(env_vars: dict[str, Any]) -> dict:
return {
"AGENTAPPLICATION": result.get("AGENTAPPLICATION", {}),
"CONNECTIONS": result.get("CONNECTIONS", {}),
"CONNECTIONSMAP": result.get("CONNECTIONSMAP", {}),
"CONNECTIONSMAP": result.get("CONNECTIONSMAP", []),
}
18 changes: 18 additions & 0 deletions libraries/microsoft-agents-activity/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
<th style="width:20%">Date</th>
<th style="width:60%">Release Notes</th>
</tr>
<tr>
<td>1.2.0</td>
<td>2026-07-17</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v120">
1.2.0 Release Notes
</a>
</td>
</tr>
<tr>
<td>1.1.0</td>
<td>2026-06-19</td>
Expand All @@ -33,6 +42,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
</a>
</td>
</tr>
<tr>
<td>0.9.1</td>
Comment thread
rodrigobr-msft marked this conversation as resolved.
<td>2026-05-04</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v091">
0.9.1 Release Notes
</a>
</td>
</tr>
<tr>
<td>0.9.0</td>
<td>2026-04-15</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,25 @@ Entra ID Agent Container** (the *sidecar*). Instead of acquiring tokens directly
the SDK delegates token acquisition to the sidecar's HTTP API, so the agent process never
handles secrets, certificates, or keys.

## Release Notes

<table style="width:100%">
<tr>
<th style="width:20%">Version</th>
<th style="width:20%">Date</th>
<th style="width:60%">Release Notes</th>
</tr>
<tr>
<td>1.2.0</td>
<td>2026-07-17</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v120">
1.2.0 Release Notes
</a>
</td>
</tr>
</table>

## Why a sidecar?

- **Credential-free agent code** — all credential management (Managed Identity, Workload
Expand Down
18 changes: 18 additions & 0 deletions libraries/microsoft-agents-authentication-msal/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
<th style="width:20%">Date</th>
<th style="width:60%">Release Notes</th>
</tr>
<tr>
<td>1.2.0</td>
<td>2026-07-17</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v120">
1.2.0 Release Notes
</a>
</td>
</tr>
<tr>
<td>1.1.0</td>
<td>2026-06-19</td>
Expand All @@ -33,6 +42,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
</a>
</td>
</tr>
<tr>
<td>0.9.1</td>
Comment thread
rodrigobr-msft marked this conversation as resolved.
<td>2026-05-04</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v091">
0.9.1 Release Notes
</a>
</td>
</tr>
<tr>
<td>0.9.0</td>
<td>2026-04-15</td>
Expand Down
18 changes: 18 additions & 0 deletions libraries/microsoft-agents-copilotstudio-client/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
<th style="width:20%">Date</th>
<th style="width:60%">Release Notes</th>
</tr>
<tr>
<td>1.2.0</td>
<td>2026-07-17</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v120">
1.2.0 Release Notes
</a>
</td>
</tr>
<tr>
<td>1.1.0</td>
<td>2026-06-19</td>
Expand All @@ -34,6 +43,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
</a>
</td>
</tr>
<tr>
<td>0.9.1</td>
Comment thread
rodrigobr-msft marked this conversation as resolved.
<td>2026-05-04</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v091">
0.9.1 Release Notes
</a>
</td>
</tr>
<tr>
<td>0.9.0</td>
<td>2026-04-15</td>
Expand Down
18 changes: 18 additions & 0 deletions libraries/microsoft-agents-hosting-aiohttp/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
<th style="width:20%">Date</th>
<th style="width:60%">Release Notes</th>
</tr>
<tr>
<td>1.2.0</td>
<td>2026-07-17</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v120">
1.2.0 Release Notes
</a>
</td>
</tr>
<tr>
<td>1.1.0</td>
<td>2026-06-19</td>
Expand All @@ -35,6 +44,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
</a>
</td>
</tr>
<tr>
<td>0.9.1</td>
Comment thread
rodrigobr-msft marked this conversation as resolved.
<td>2026-05-04</td>
<td>
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v091">
0.9.1 Release Notes
</a>
</td>
</tr>
<tr>
<td>0.9.0</td>
<td>2026-04-15</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,16 +93,15 @@ def __init__(
)
if not auth_handlers:
# get from config
handlers_config: dict[str, dict] = auth_configuration.get("HANDLERS")
if not auth_handlers and handlers_config:
auth_handlers = {
handler_name: AuthHandler(
name=handler_name,
auth_type=config.get("TYPE", None),
**config.get("SETTINGS", {}),
)
for handler_name, config in handlers_config.items()
}
handlers_config: dict[str, dict] = auth_configuration.get("HANDLERS") or {}
auth_handlers = {
handler_name: AuthHandler(
name=handler_name,
auth_type=config.get("TYPE", ""),
**config.get("SETTINGS", {}),
)
for handler_name, config in handlers_config.items()
}

self._handler_settings = auth_handlers
self._auto_sign_in = auto_sign_in or bool(
Expand Down
Loading
Loading