Update SQL Server vector search to latest VECTOR_SEARCH() syntax#1
Closed
Update SQL Server vector search to latest VECTOR_SEARCH() syntax#1
Conversation
… for endpoint. (microsoft#12810) ### Description This PR fixes an issue where AddOpenAIEmbeddingGenerator() ignored the BaseAddress of the provided HttpClient, always using the default OpenAI endpoint. Now, if a custom BaseAddress is set on the HttpClient, it is passed as the endpoint parameter, ensuring requests are sent to the correct server. This aligns the behavior with other OpenAI service registrations and enables proxy or custom endpoint scenarios. FIxes microsoft#12806 --------- Co-authored-by: Adit Sheth <adsheth@microsoft.com> Co-authored-by: Roger Barreto <19890735+RogerBarreto@users.noreply.github.com> Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
Update mistake in description ### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? fix incorrect documentation 2. What problem does it solve? fix incorrect documentation 3. What scenario does it contribute to? fix incorrect documentation 4. If it fixes an open issue, please link to the issue here. --> ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> fix incorrect documentation ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 --------- Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
…icrosoft#12907) ### Motivation and Context When running a reasoning model with the OpenAI responses agent, it was producing 400s due to the way we were either including or not including FCC related to tool calls. This PR fixes it for both the default (store_enabled=True) and the case where uses don't want to use OpenAI's previous response id as a pseudo-thread (store_enabled=False). <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description - Closes microsoft#12843 <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
…crosoft#12940) ### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> We are adding two new attributes to the execute tool span according to this proposal to Otel Semantic Conventions: open-telemetry/semantic-conventions#2528 ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> The following two attributes are added to the `execute_tool` span: 1. `gen_ai.tool.call.arguments` 2. `gen_ai.tool.call.result` ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄
### Motivation and Context Bump Python version to 1.35.3 for a release <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Bump Python version to 1.35.3 for a release <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
### Motivation and Context Tool/tool_calls are getting orphaned. Issue : microsoft#12708 How to reproduce : ```python from semantic_kernel.contents import ( AuthorRole, ChatMessageContent, FunctionCallContent, FunctionResultContent, ChatHistoryTruncationReducer, ) messages = [ ChatMessageContent(role=AuthorRole.SYSTEM, content="sys"), ChatMessageContent(role=AuthorRole.USER, content="user A"), ChatMessageContent( role=AuthorRole.ASSISTANT, items=[ FunctionCallContent( id="123", function_name="search", plugin_name="plugin", arguments={"q": "x"} ) ], ), ChatMessageContent( role=AuthorRole.TOOL, items=[ FunctionResultContent( id="123", function_name="search", plugin_name="plugin", result="RESULT" ) ], ), ChatMessageContent(role=AuthorRole.USER, content="user B"), ChatMessageContent(role=AuthorRole.ASSISTANT, content="done"), ] reducer = ChatHistoryTruncationReducer(target_count=3, threshold_count=0) reducer.messages = messages print("Before reduce:", [m.role for m in reducer.messages]) await reducer.reduce() print("After reduce:", [m.role for m in reducer.messages]) # After reduce: [<AuthorRole.TOOL: 'tool'>, <AuthorRole.USER: 'user'>, <AuthorRole.ASSISTANT: 'assistant'>] ``` ### Description Move backward as long as we are in a tool/tool_call island when reducing the messages. --------- Co-authored-by: Allaoua Benchikh <allaoua.benchikh@ext.saint-gobain.com> Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com> Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
### Motivation and Context The MCPStreamableHttpPlugin concept sample pointing to GitHub isn't working. Updating it to use the Microsoft Learn site MCP server instead. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Update sample. <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
…microsoft#12827) ### Motivation and Context The MongoDB connector currently only supports string key types. ### Description Adds support for Guid and ObjectId key types to the MongoDB Connector. ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 --------- Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com> Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
This PR adds OpenAPI parameter description to its schema to provide more details to ai model about it.
) ### Motivation and Context Fixes microsoft#12934 The filter translation layer set all 4 (Gt, Gte, Lt, Lte) properties of the datetime range object, which resulted in always 0 results being returned as no rows can be greater and smaller than the set date at the same time. ### Description At first I added some simple tests and an `DateTimeOffset` properties to the unit tests, which failed. After debugging and finding the issue, I made the changes and the tests passed. I was only able to test the Qdrant and InMemory integrations though, due to lack of locally running and preconfigured databases. **Open** ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 Co-authored-by: TsengSR <kpgit@atomic-gear.net>
…5) (microsoft#12962) ### Motivation and Context This PR addresses a recent vulnerability warning received while working in the Semantic Kernel solution, limited to specific packages for Prompty, Milvus and Microsoft Graph Plugin. As part of addressing the vulnerabilities was also necessary to upgrade the logic to use the newest packages from Microsoft.Graph library.
### Motivation and Context Update to the latest version of OpenAI related packages: - `Microsoft.Extensions.AI.* 9.8.0-*` - `Azure.AI.OpenAI 2.3.0-beta.1` - `OllamaSharp 5.3.5`
### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
### Motivation and Context This demo shows how to implement human-in-the-loop in Process Framework with SignalR. It is based on the ProcessWithCloudEvents one, readapting it to use SignalR. ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 --------- Co-authored-by: Chris <66376200+crickman@users.noreply.github.com> Co-authored-by: Chris Rickman <crickman@microsoft.com>
…rameworkWithSignalR/src/ProcessFramework.Aspire.SignalR.ReactFrontend (microsoft#12980) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.5 to 6.2.7. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/releases">vite's releases</a>.</em></p> <blockquote> <h2>v6.2.7</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> <h2>v6.2.6</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/blob/v6.2.7/packages/vite/CHANGELOG.md">vite's changelog</a>.</em></p> <blockquote> <h2><!-- raw HTML omitted -->6.2.7 (2025-04-30)<!-- raw HTML omitted --></h2> <ul> <li>fix: check static serve file inside sirv (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19965">#19965</a>) (<a href="https://github.com/vitejs/vite/commit/99980ecf669aa42379ab0cb0c5889c4b671f4866">99980ec</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/19965">#19965</a></li> </ul> <h2><!-- raw HTML omitted -->6.2.6 (2025-04-10)<!-- raw HTML omitted --></h2> <ul> <li>fix: reject requests with <code>#</code> in request-target (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>) (<a href="https://github.com/vitejs/vite/commit/3bb0883d22d59cfd901ff18f338e8b4bf11395f7">3bb0883</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/19830">#19830</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vitejs/vite/commit/3d6a42728f645bcab7c391983604ecdb3619eca9"><code>3d6a427</code></a> release: v6.2.7</li> <li><a href="https://github.com/vitejs/vite/commit/99980ecf669aa42379ab0cb0c5889c4b671f4866"><code>99980ec</code></a> fix: check static serve file inside sirv (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19965">#19965</a>)</li> <li><a href="https://github.com/vitejs/vite/commit/d3dbf25fd5e21448f9ea6cec8fb5ac45d220037b"><code>d3dbf25</code></a> release: v6.2.6</li> <li><a href="https://github.com/vitejs/vite/commit/3bb0883d22d59cfd901ff18f338e8b4bf11395f7"><code>3bb0883</code></a> fix: reject requests with <code>#</code> in request-target (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)</li> <li>See full diff in <a href="https://github.com/vitejs/vite/commits/v6.2.7/packages/vite">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/semantic-kernel/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…onnectors (microsoft#12989) This PR resolves issue microsoft#12887 by adding support for the new 'minimal' reasoning effort level introduced with gpt-5 models. Interestingly enought the latest 2.3.0 version of OpenAI SDK doesn't have a specific `ChatReasoningEffortLevel.Minimal` option, but this is possible using a string "minimal" effort. ## Problem Users were unable to use the new 'minimal' reasoning effort level with GPT-5 and other reasoning models, receiving the error: ``` The provided reasoning effort 'minimal' is not supported. ``` ## Solution The fix adds support for the "minimal" string value in the `GetEffortLevel` method within `ClientCore.ChatCompletion.cs`. The implementation leverages OpenAI SDK implicit string conversion capability for `ChatReasoningEffortLevel` type. ### Changes Made 1. **Updated `GetEffortLevel` method** to recognize "MINIMAL" (case-insensitive) and convert it to `(ChatReasoningEffortLevel)"minimal"` 2. **Added comprehensive test coverage** for the new "minimal" option in both OpenAI and AzureOpenAI connector unit tests 3. **Updated documentation** in `OpenAIPromptExecutionSettings.cs` to include "minimal" as a supported string value ### Usage Users can now specify reasoning effort in multiple ways: ```csharp // Using string (new minimal option) var settings = new OpenAIPromptExecutionSettings { ReasoningEffort = "minimal" }; // Using existing enum values (unchanged) var settings = new OpenAIPromptExecutionSettings { ReasoningEffort = ChatReasoningEffortLevel.Low }; ``` All supported string values: `"low"`, `"medium"`, `"high"`, `"minimal"` ## Testing - ✅ All existing tests continue to pass (471 OpenAI + 490 AzureOpenAI tests) - ✅ New test cases validate "minimal" support in both connectors - ✅ Backward compatibility maintained for existing reasoning effort values - ✅ Invalid strings still throw appropriate `NotSupportedException` Fixes microsoft#12887 <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/microsoft/semantic-kernel/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> The usage of `DefaultAzureCredential` by default is unsafe and raises security issues. Instead, users should provide their own credential types such as `AzureCliCredential`, `ManagedIdentityCredential` and so on. More information here: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.aio?view=azure-python In this PR: 1. Removed the usage of `DefaultAzureCredential` from authentication logic. 2. Replaced `DefaultAzureCredential` with `AzureCliCredential` in all examples. **Note**: this is breaking change for Azure users, who relies on `DefaultAzureCredential`. Users will need to update the code and pass the credential type of their choice by using `credential` parameter when initializing one of the Azure clients. Before: ```python chat_completion = AzureChatCompletion() ``` After: ```python chat_completion = AzureChatCompletion(credential=AzureCliCredential()) ``` ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
…2983) ### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> Resolves: microsoft#11821 Today, the encoding of template arguments is performed only if argument type is `string`. In case of custom type, anonymous type or collection - the encoding is not performed. This PR contains changes to throw an exception in case if encoding is enabled but complex type is used. In case of complex type, the encoding should be performed manually according to business logic and automatic encoding should be explicitly disabled. This enforces stricter, but more secure template rendering rules. **Note**: this is a breaking change for customers who use Handlebars or Liquid template with complex type arguments. Code changes are required when initializing template arguments: ```diff var arguments = new KernelArguments() { { "customer", new { - firstName = userInput.FirstName, - lastName = userInput.LastName, + firstName = HttpUtility.HtmlEncode(userInput.FirstName), + lastName = HttpUtility.HtmlEncode(userInput.LastName), } } }; var templateFactory = new LiquidPromptTemplateFactory(); var promptTemplateConfig = new PromptTemplateConfig() { TemplateFormat = "liquid" + InputVariables = new() + { + // We set AllowDangerouslySetContent to 'true' because each property of this argument is encoded manually. + new() { Name = "customer", AllowDangerouslySetContent = true }, + } }; var promptTemplate = templateFactory.Create(promptTemplateConfig); var renderedPrompt = await promptTemplate.RenderAsync(kernel, arguments); ``` ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
### Motivation and Context Bump Python version to 1.36.0 for a release. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Bump Python version to 1.36.0 for a release. <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> The OTel workgroup has been thinking about enhancing tracing for agents. This is a proposal from our tracing team: open-telemetry/semantic-conventions#2528. This PR implements part of the proposal so that when the proposal gets merged, we can quickly follow. This is a follow-up PR after the Python PR microsoft#12834 ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> Two new attributes are added to the invoke_agent span, namely the `gen_ai.agent.invocation_input` and `gen_ai.agent.invocation_output`. <img width="870" height="384" alt="image" src="https://github.com/user-attachments/assets/c2cf069a-af00-4ae2-8fed-745c166d9cbc" /> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 --------- Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> Resolves: microsoft#12982 Removed experimental flags in following items: 1. `ChatClientExtensions` 2. `ChatClientBuilderExtensions` 3. `AIFunctionExtensions` 4. `ChatCompletionServiceExtensions` 5. `AuthorName` property in `ChatMessageContent` and `StreamingChatMessageContent` models. 6. `KernelFunctionExtensions` 7. `KernelPlugin` ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄
…osoft#13019) ### Motivation and Context Closes microsoft#12888 ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
…crosoft#13020) ### Motivation and Context Closes microsoft#12904 ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
…ss (microsoft#12985) ### Motivation and Context I confirmed that Code Interpreter can run via Azure Responses API in Semantic Kernel, but I found two issues: an error occurs when a file is created inside the Code Interpreter, and the response lacks parameters required to access the created file. ### Description #### Bug 1: ValidationError for AnnotationContent Semantic Kernel uses the following enum for `AnnotationContent.content_type`: ```python @experimental class CitationType(str, Enum): """Citation type.""" URL_CITATION = "url_citation" FILE_PATH = "file_path" FILE_CITATION = "file_citation" ``` However, the Responses API returns file citations with a `type` like this: ```json {"container_id": "cntr_68a6c50135d88190b6fdc062051155b50847ddec73d3be1b", "end_index": 94, "file_id": "cfile_68a6c67a7fcc8190889d7e1789d485e2", "filename": "sample.txt", "start_index": 66, "type": "container_file_citation"} ``` There is no matching enum member on the Semantic Kernel side. The `CitationType` should include `CONTAINER_FILE_CITATION`, for example: ```python @experimental class CitationType(str, Enum): """Citation type.""" URL_CITATION = "url_citation" FILE_PATH = "file_path" FILE_CITATION = "file_citation" CONTAINER_FILE_CITATION = "container_file_citation" ``` #### Bug 2: Missing parameters to access generated files The response returned by the agent shows a `file_id`, but lacks the `container_id` and `filename` required to download the file (the filename is needed to replace `sandbox:/mnt/data/sample.txt`): Example call: ```python r = await agent.get_response(cast(list, history.messages), thread=thread) print(r.content.items) ``` Example output: ```python [ TextContent(inner_content=None, ai_model_id=None, metadata={}, content_type='text', text='<user_prompt>', encoding=None), TextContent(inner_content=None, ai_model_id=None, metadata={}, content_type='text', text='<assistant_message>\n\n[sample.txt](sandbox:/mnt/data/sample.txt)', encoding=None), AnnotationContent(inner_content=None, ai_model_id=None, metadata={}, content_type='annotation', file_id='cfile_68a6c67a7fcc8190889d7e1789d485e2', quote=None, start_index=88, end_index=116, url=None, title=None, citation_type=<CitationType.CONTAINER_FILE_CITATION: 'container_file_citation'>) ] ``` To include these values in the parsed result, `AnnotationContent` in `semantic_kernel/contents/annotation_content.py` should expose `container_id` and `filename`, and map the incoming `type` to `citation_type`. Example suggested structure: ```python @experimental class AnnotationContent(KernelContent): """Annotation content.""" content_type: Literal[ContentTypes.ANNOTATION_CONTENT] = Field(ANNOTATION_CONTENT_TAG, init=False) # type: ignore tag: ClassVar[str] = ANNOTATION_CONTENT_TAG file_id: str | None = None quote: str | None = None start_index: int | None = None end_index: int | None = None url: str | None = None title: str | None = None # added container_id: str | None = None filename: str | None = None citation_type: CitationType | None = Field(None, alias="type") model_config = ConfigDict( extra="ignore", populate_by_name=True, ) def __str__(self) -> str: ... def to_element(self) -> Element: ... @classmethod def from_element(cls: type[_T], element: Element) -> _T: ... def to_dict(self) -> dict[str, Any]: ... ``` Summary: add the missing enum value `container_file_citation` and extend `AnnotationContent` to include `container_id` and `filename` (and map `type` to `citation_type`) so file references returned by the Azure Responses API are fully usable. #### Code ```python client: AsyncAzureOpenAI = AsyncAzureOpenAI( base_url=urljoin(server_settings.AZURE_OPENAI_COMPLETION_ENDPOINT.rstrip("/") + "/", "openai/v1/"), api_key=server_settings.AZURE_OPENAI_COMPLETION_API_KEY, api_version="preview", ) async def run(history: ChatHistory) -> dict[str, Any]: with open("sample.txt", "rb") as fp: f = await client.files.create(file=fp, purpose="assistants") agent = AzureResponsesAgent( ai_model_id=server_settings.AZURE_OPENAI_COMPLETION_DEPLOYMENT_NAME, client=client, name="name", function_choice_behavior=FunctionChoiceBehavior.Required(), tools=[ CodeInterpreter( type="code_interpreter", container=CodeInterpreterContainerCodeInterpreterToolAuto(type="auto", file_ids=[f.id]), ) ], ) thread = ResponsesAgentThread(client, history, previous_response_id=None, enable_store=True) r = await agent.get_response(cast(list, history.messages), thread=thread) print(thread.id, r.content.items) annotation_content = [item for item in r.content.items if isinstance(item, AnnotationContent)] for ac in annotation_content: print(ac.file_id, ac.filename, ac.container_id) ``` ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
…mini, o3) (microsoft#12881) ## Summary Adds reasoning capabilities to Python OpenAI ResponsesAgent, bringing parity with the C# implementation. This enables fine-grained control over reasoning effort for O-series models (o1, o3-mini, o4-mini) and gpt-5 that support the reasoning parameter. Fixes microsoft#12843 ## Changes ### Core Implementation - **`openai_responses_agent.py`**: Added reasoning configuration support - Constructor-level reasoning effort setting - Per-invocation reasoning effort override capability - Proper parameter validation and model compatibility checks - **`responses_agent_thread_actions.py`**: Extended thread actions to support reasoning parameters - Reasoning effort propagation through thread operations - Metadata preservation for reasoning tokens and summaries ### Sample and Tests - **`responses_agent_reasoning.py`**: Comprehensive demonstration sample - Constructor vs per-invocation reasoning configuration - Function calling integration with reasoning - Reasoning comparison scenarios (low/medium/high effort) - Error handling and troubleshooting guidance - **`test_openai_responses_agent_reasoning.py`**: Full unit test coverage - Parameter validation tests - Integration scenarios with function calling - Edge cases and error conditions ## Features ✅ **Constructor-Level Reasoning**: Set default reasoning effort when creating agents ✅ **Per-Invocation Override**: Override reasoning effort per request ✅ **Priority Hierarchy**: per-invocation > constructor > model default ✅ **Function Calling Compatible**: Works seamlessly with existing plugin system ✅ **Azure OpenAI & OpenAI Support**: Compatible with both service providers ✅ **Model Validation**: Automatic compatibility checks for O-series models nad GÜT-5 ✅ **Metadata Access**: Reasoning tokens and summaries available in response metadata ## Usage Example ```python # Constructor-level reasoning # Constructor-level reasoning configuration agent = AzureResponsesAgent( ai_model_id="gpt-5", client=client, reasoning={"effort": "low"} # Default reasoning for all requests ) # Per-invocation override response = await agent.invoke( "Solve this complex problem step by step", reasoning={"effort": "high"} ) # Invoke with reasoning callback to capture intermediate thoughts response = await agent.invoke( "Analyze this data step by step", reasoning={"effort": "high", "summary": "detailed"}, on_intermediate_message=handle_reasoning_message ) # Streaming with reasoning async for response in agent.invoke_stream( "Explain quantum computing in detail", reasoning={"effort": "high", "summary": "detailed"}, on_intermediate_message=handle_reasoning_message ): print(response.content, end="", flush=True) --------- Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com> Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
### Motivation and Context To fix unreliable MongoDB Test Container start-up. Fixes microsoft#13025 ### Description TestContainers.NET is, by default checking, for the string `Waiting for connections` to appear TWICE in the MongoDB logs before deciding the container is available. While this can happen quite often it doesn't **always** happen and I believe this is a mistake (introduced in a large PR). TestContainers clients for Go and Rust only check the message appears once (and TestContainers for Java has a different mechanism altogether). This introduces an alternative waiting mechanism until I can get the fix shipped upstream that only checks the message appears once. Note: This PR does not yet enable the MongoDB tests as I think there are some other intermittent issues relating to the use of lock/counting mechanism that sometimes responds with a very different error. ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄
…t#13032) ### Motivation and Context As part of invoking an AzureAIAgent via streaming, we weren't providing the `thread_id` via the `AgentStreamEvent.THREAD_MESSAGE_CREATED` event. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Supply the caller with the `thread_msg_id` by sticking it into the returned SCMC's `metadata` dictionary. - Closes microsoft#12959 Sample output looks like: ``` Sample Output: # User: 'Hello' # AuthorRole.ASSISTANT: (thread message id: msg_HZ2h4Wzbj7GEcnVCjnyEuYWT) Hello! How can I assist you with the menu today? # User: 'What is the special soup?' # AuthorRole.ASSISTANT: (thread message id: msg_TSjkJK6hHJojIkPvF6uUofHD) The special soup today is Clam Chowder. Would you like to know more about it or anything else from the menu? # User: 'How much does that cost?' # AuthorRole.ASSISTANT: (thread message id: msg_liwTpBFrB9JpCM1oM9EXKiwq) The Clam Chowder costs $9.99. Is there anything else you'd like to know? # User: 'Thank you' # AuthorRole.ASSISTANT: (thread message id: msg_K6lpR3gYIHethXq17T6gJcxi) You're welcome! If you have any more questions or need assistance, feel free to ask. Enjoy your meal! ``` <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
…lugin (microsoft#13644) ### Motivation and Context Improve control and security settings for WebFileDownloadPlugin - Change AllowedDomains and AllowedFolders defaults from null (allow-all) to empty (deny-all) - Change DisableFileOverwrite default to true - Set MaximumDownloadSize default to 10 MB - Add path canonicalization via Path.GetFullPath() to prevent directory traversal - Switch folder matching from exact to prefix-based with separator handling - Fix fileMode variable not being used in FileStream constructor - Add XML doc security remarks to all three plugins - Update tests for new defaults Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Motivation and Context Link to the Chroma is incorrect. ### Description This PR fixes link for Chroma documentation in README. ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.1 to 3.1.6. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pallets/werkzeug/releases">werkzeug's releases</a>.</em></p> <blockquote> <h2>3.1.6</h2> <p>This is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.</p> <p>PyPI: <a href="https://pypi.org/project/Werkzeug/3.1.6/">https://pypi.org/project/Werkzeug/3.1.6/</a> Changes: <a href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6</a></p> <ul> <li><code>safe_join</code> on Windows does not allow special devices names in multi-segment paths. <a href="https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x">GHSA-29vq-49wr-vm6x</a></li> </ul> <h2>3.1.5</h2> <p>This is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.</p> <p>PyPI: <a href="https://pypi.org/project/Werkzeug/3.1.5/">https://pypi.org/project/Werkzeug/3.1.5/</a> Changes: <a href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5</a> Milestone: <a href="https://github.com/pallets/werkzeug/milestone/43?closed=1">https://github.com/pallets/werkzeug/milestone/43?closed=1</a></p> <ul> <li><code>safe_join</code> on Windows does not allow more special device names, regardless of extension or surrounding spaces. <a href="https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7">GHSA-87hc-h4r5-73f7</a></li> <li>The multipart form parser handles a <code>\r\n</code> sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. <a href="https://redirect.github.com/pallets/werkzeug/issues/3065">#3065</a> <a href="https://redirect.github.com/pallets/werkzeug/issues/3077">#3077</a></li> <li>Fix <code>AttributeError</code> when initializing <code>DebuggedApplication</code> with <code>pin_security=False</code>. <a href="https://redirect.github.com/pallets/werkzeug/issues/3075">#3075</a></li> </ul> <h2>3.1.4</h2> <p>This is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.</p> <p>PyPI: <a href="https://pypi.org/project/Werkzeug/3.1.4/">https://pypi.org/project/Werkzeug/3.1.4/</a> Changes: <a href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4</a> Milestone: <a href="https://github.com/pallets/werkzeug/milestone/42?closed=1">https://github.com/pallets/werkzeug/milestone/42?closed=1</a></p> <ul> <li><code>safe_join</code> on Windows does not allow special device names. This prevents reading from these when using <code>send_from_directory</code>. <code>secure_filename</code> already prevented writing to these. <a href="https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2">ghsa-hgf8-39gv-g3f2</a></li> <li>The debugger pin fails after 10 attempts instead of 11. <a href="https://redirect.github.com/pallets/werkzeug/issues/3020">#3020</a></li> <li>The multipart form parser handles a <code>\r\n</code> sequence at a chunk boundary. <a href="https://redirect.github.com/pallets/werkzeug/issues/3065">#3065</a></li> <li>Improve CPU usage during Watchdog reloader. <a href="https://redirect.github.com/pallets/werkzeug/issues/3054">#3054</a></li> <li><code>Request.json</code> annotation is more accurate. <a href="https://redirect.github.com/pallets/werkzeug/issues/3067">#3067</a></li> <li>Traceback rendering handles when the line number is beyond the available source lines. <a href="https://redirect.github.com/pallets/werkzeug/issues/3044">#3044</a></li> <li><code>HTTPException.get_response</code> annotation and doc better conveys the distinction between WSGI and sans-IO responses. <a href="https://redirect.github.com/pallets/werkzeug/issues/3056">#3056</a></li> </ul> <h2>3.1.3</h2> <p>This is the Werkzeug 3.1.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.</p> <p>PyPI: <a href="https://pypi.org/project/Werkzeug/3.1.3/">https://pypi.org/project/Werkzeug/3.1.3/</a> Changes: <a href="https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3">https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3</a> Milestone: <a href="https://github.com/pallets/werkzeug/milestone/41?closed=1">https://github.com/pallets/werkzeug/milestone/41?closed=1</a></p> <ul> <li>Initial data passed to <code>MultiDict</code> and similar interfaces only accepts <code>list</code>, <code>tuple</code>, or <code>set</code> when passing multiple values. It had been changed to accept any <code>Collection</code>, but this matched types that should be treated as single values, such as <code>bytes</code>. <a href="https://redirect.github.com/pallets/werkzeug/issues/2994">#2994</a></li> <li>When the <code>Host</code> header is not set and <code>Request.host</code> falls back to the WSGI <code>SERVER_NAME</code> value, if that value is an IPv6 address it is wrapped in <code>[]</code> to match the <code>Host</code> header. <a href="https://redirect.github.com/pallets/werkzeug/issues/2993">#2993</a></li> </ul> <h2>3.1.2</h2> <p>This is the Werkzeug 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.</p> <p>PyPI: <a href="https://pypi.org/project/Werkzeug/3.1.2/">https://pypi.org/project/Werkzeug/3.1.2/</a> Changes: <a href="https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2">https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pallets/werkzeug/blob/main/CHANGES.rst">werkzeug's changelog</a>.</em></p> <blockquote> <h2>Version 3.1.6</h2> <p>Released 2026-02-19</p> <ul> <li><code>safe_join</code> on Windows does not allow special devices names in multi-segment paths. :ghsa:<code>29vq-49wr-vm6x</code></li> </ul> <h2>Version 3.1.5</h2> <p>Released 2026-01-08</p> <ul> <li><code>safe_join</code> on Windows does not allow more special device names, regardless of extension or surrounding spaces. :ghsa:<code>87hc-h4r5-73f7</code></li> <li>The multipart form parser handles a <code>\r\n</code> sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. :issue:<code>3065</code> :issue:<code>3077</code></li> <li>Fix <code>AttributeError</code> when initializing <code>DebuggedApplication</code> with <code>pin_security=False</code>. :issue:<code>3075</code></li> </ul> <h2>Version 3.1.4</h2> <p>Released 2025-11-28</p> <ul> <li><code>safe_join</code> on Windows does not allow special device names. This prevents reading from these when using <code>send_from_directory</code>. <code>secure_filename</code> already prevented writing to these. :ghsa:<code>hgf8-39gv-g3f2</code></li> <li>The debugger pin fails after 10 attempts instead of 11. :pr:<code>3020</code></li> <li>The multipart form parser handles a <code>\r\n</code> sequence at a chunk boundary. :issue:<code>3065</code></li> <li>Improve CPU usage during Watchdog reloader. :issue:<code>3054</code></li> <li><code>Request.json</code> annotation is more accurate. :issue:<code>3067</code></li> <li>Traceback rendering handles when the line number is beyond the available source lines. :issue:<code>3044</code></li> <li><code>HTTPException.get_response</code> annotation and doc better conveys the distinction between WSGI and sans-IO responses. :issue:<code>3056</code></li> </ul> <h2>Version 3.1.3</h2> <p>Released 2024-11-08</p> <ul> <li>Initial data passed to <code>MultiDict</code> and similar interfaces only accepts <code>list</code>, <code>tuple</code>, or <code>set</code> when passing multiple values. It had been changed to accept any <code>Collection</code>, but this matched types that should be</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pallets/werkzeug/commit/04da1b5221b7a7b57e82246e4b5741d37a6b2e56"><code>04da1b5</code></a> release version 3.1.6</li> <li><a href="https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d"><code>f407712</code></a> Merge commit from fork</li> <li><a href="https://github.com/pallets/werkzeug/commit/f54fe98026253e70fbbcd35a6b52fb67cfff1c03"><code>f54fe98</code></a> safe_join prevents Windows special device names in multi-segment paths</li> <li><a href="https://github.com/pallets/werkzeug/commit/d005985ef69ffe3275eda8fb6fb25e074dbe871b"><code>d005985</code></a> start version 3.1.6</li> <li><a href="https://github.com/pallets/werkzeug/commit/8565c2cbd6681ae8463e77d4fc0795324a7fdae7"><code>8565c2c</code></a> document rule priority (<a href="https://redirect.github.com/pallets/werkzeug/issues/3102">#3102</a>)</li> <li><a href="https://github.com/pallets/werkzeug/commit/3febc7e90072bffe04c27e6b7478dfc4f88930df"><code>3febc7e</code></a> document rule priority</li> <li><a href="https://github.com/pallets/werkzeug/commit/2525b827646c10ab7adb334664e6a4af1b769181"><code>2525b82</code></a> remove state machine docs</li> <li><a href="https://github.com/pallets/werkzeug/commit/4abfbd553cdeb6d4e6fa693340d52b13c884079f"><code>4abfbd5</code></a> rewrite build docstring (<a href="https://redirect.github.com/pallets/werkzeug/issues/3097">#3097</a>)</li> <li><a href="https://github.com/pallets/werkzeug/commit/161c18b2a8800ae6ef377fb3cbdb933a878fea67"><code>161c18b</code></a> rewrite build docstring</li> <li><a href="https://github.com/pallets/werkzeug/commit/86e11c29e44726dae524cd9db11549b3b1ad681d"><code>86e11c2</code></a> release version 3.1.5 (<a href="https://redirect.github.com/pallets/werkzeug/issues/3085">#3085</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pallets/werkzeug/compare/3.1.1...3.1.6">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/microsoft/semantic-kernel/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
### Motivation and Context Reduce macos runner coverage due to capacity <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Reduce macos runner coverage due to capacity <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
…osoft#13610) ## Summary `ChatHistoryTruncationReducer.reduce()` silently deletes system/developer messages when truncating chat history. This is because it calls `extract_range()`, which unconditionally filters out system/developer messages — a function designed for the summarization use case, not truncation. Fixes microsoft#12612. ## Approach Port the .NET SDK fix (PR microsoft#10344) to Python: 1. Detect the first system/developer message before truncation 2. Pass `has_system_message=True` to `locate_safe_reduction_index` so `target_count` accounts for the preserved message (matches .NET's `targetCount -= hasSystemMessage ? 1 : 0`) 3. Use a simple `history[truncation_index:]` slice instead of `extract_range` (which strips system messages) 4. Prepend the system message if it was truncated away Also adds a guard for `target_count <= 0` after the system message adjustment to prevent `IndexError` when `target_count=1`. ## Changes | File | Change | |------|--------| | `chat_history_reducer_utils.py` | Add `has_system_message` parameter, adjust `target_count`, guard against `<= 0` | | `chat_history_truncation_reducer.py` | Detect system message, bypass `extract_range`, prepend if truncated | | `test_chat_history_truncation_reducer.py` | Update 2 existing tests + 4 new tests (system, developer, no-system, target_count=1) | ## Note The summarization reducer (`ChatHistorySummarizationReducer`) has the same bug — it also uses `extract_range` and loses system messages during summarization. The .NET summarization reducer preserves system messages via `AssemblySummarizedHistory`. This should be addressed in a follow-up PR to keep this change focused. ## Test plan - [x] 11/11 truncation reducer tests pass (was 7, now 11) - [x] 9/9 utils tests pass (no regressions from new parameter) - [x] 11/11 summarization reducer tests pass (unaffected) - [x] Reproduces and fixes the exact scenario from microsoft#12612 - [x] Edge case: `target_count=1` with system message does not crash --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
…jects to 2.0.0-beta.2, Microsoft.Extensions.AI* to 10.4.0 (microsoft#13668) ### Motivation and Context Bumps core AI SDK dependencies to their latest versions to pick up new features and fixes. ### Description Updates the following packages in `Directory.Packages.props`: - **OpenAI** 2.8.0 → 2.9.1 - **Azure.AI.OpenAI** 2.8.0-beta.1 → 2.9.0-beta.1 - **Azure.AI.Projects** 1.1.0 → 2.0.0-beta.2 - **Azure.Identity** 1.17.1 → 1.19.0 (cascading dependency from Azure.AI.Projects 2.0.0-beta.2) - **Microsoft.Extensions.AI\*** 10.3.0 → 10.4.0 - **System.Text.Json, System.Numerics.Tensors, Microsoft.Extensions.Logging.Abstractions, Microsoft.Bcl.AsyncInterfaces, System.Threading.Channels** → 10.0.4 Addresses the following breaking changes introduced by OpenAI 2.9.1: - `CreateInputImagePart` BinaryData overload removed (replaced with data URI approach) - Realtime API type renames (`ConversationTool` → `RealtimeTool`, `ConversationSessionOptions` → `RealtimeConversationSessionOptions`, etc.) - `ResponsesClient` constructor no longer accepts a model parameter; model is now specified on `CreateResponseOptions.Model` - `ResponseResult.Instructions` is now read-only Code changes to adapt: - Added `ModelId` property to `OpenAIResponseAgent` and propagated it through `ResponseCreationOptionsFactory` - Updated unit tests (`BaseOpenAIResponseClientTest`, `OpenAIResponseAgentExtensionsTests`, `OpenAIResponseExtensionsTests`) - Updated integration tests (`OpenAIResponseAgentTests`, `OpenAIResponseAgentFixture`) - Updated `BaseResponsesAgentTest` and `GettingStartedWithAgents` samples - Updated `AgentFrameworkMigration` samples (`GetResponsesClient`, `AsIChatClient`, `CreateAIAgent`, modelId propagation) - Rewrote `OpenAIRealtime` demo for the restructured Realtime API event model ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 <!-- START COPILOT CODING AGENT TIPS --> --- 📍 Connect Copilot coding agent with [Jira](https://gh.io/cca-jira-docs), [Azure Boards](https://gh.io/cca-azure-boards-docs) or [Linear](https://gh.io/cca-linear-docs) to delegate work to Copilot in one click without leaving your project management tool. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
### Motivation and Context DF Automated PR review workflow. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
### Motivation and Context <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
microsoft#13612) ### Motivation and Context **Why is this change required?** PR microsoft#10489 added support for configuring embedding [dimensions] (outputDimensionality) for the Google AI connector, but the equivalent Vertex AI connector was not updated. This means specifying [Dimensions] in [EmbeddingGenerationOptions] or via the constructor has no effect when using Vertex AI — the API always returns the model's default dimensionality. **What problem does it solve?** When using [VertexAIEmbeddingGenerator] or [VertexAITextEmbeddingGenerationService]with a [dimensions] value (e.g. 128), the output embedding length is the model default (e.g. 3072) instead of the requested size. **What scenario does it contribute to?** Users who need to control embedding dimensionality for storage optimization, performance, or compatibility with downstream systems when using the Vertex AI endpoint. Fixes: microsoft#12988 ### Description This PR adds outputDimensionality support to the Vertex AI embedding connector, mirroring the existing Google AI implementation from PR microsoft#10489. The Google connector has two parallel embedding paths — Google AI (uses API key, calls generativelanguage.googleapis.com) and Vertex AI (uses bearer token, calls [{location}-aiplatform.googleapis.com]). PR microsoft#10489 only wired up dimensions for the Google AI path. This PR applies the same pattern to every layer of the Vertex AI path. The key structural difference between the two APIs is where outputDimensionality goes in the request JSON: Google AI puts it per-content-item: `{ "requests": [{ "content": {...}, "outputDimensionality": 128 }] }` Vertex AI puts it in the shared parameters block: `{ "instances": [...], "parameters": { "autoTruncate": false, "outputDimensionality": 128 } }` The implementation follows this difference. In [VertexAIEmbeddingRequest], outputDimensionality is added to the existing [RequestParameters] class (alongside autoTruncate), rather than on each instance item. Dimensions flow through the same chain as Google AI: 1. Extension methods accept int? dimensions = null and pass it to the generator/service constructor 2. [VertexAIEmbeddingGenerator] passes it to [VertexAITextEmbeddingGenerationService] 3. The service passes it to [VertexAIEmbeddingClient], which stores it as a default 4. At request time, the client resolves the final value as [options?.Dimensions ?? this._dimensions] — runtime [EmbeddingGenerationOptions] take priority over the constructor default 5. [VertexAIEmbeddingRequest.FromData()] sets it on the parameters block, and [JsonIgnore(WhenWritingNull)] ensures it's omitted when not specified All new parameters default to null, preserving full backward compatibility. ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: abbottdev <3226335+abbottdev@users.noreply.github.com> Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
Removes all legacy filtering logic from MEVD, leaving only (obsoleted) FilterClause and subclasses, which are still needed by ITextSearch (see conversation in microsoft#13384 (comment)). As suggested by @westey-m let's do an SK release before merging this (see above). Closes microsoft#10456 /cc @alzarei
…compile-time attribute argument (microsoft#13698) ### Motivation and Context `VectorStoreKeyAttribute.IsAutoGenerated` was typed as `bool?`, which C# does not permit as a compile-time attribute argument. This made the following valid-looking code fail to compile: ```csharp [VectorStoreKey(StorageName = "name", IsAutoGenerated = true)] public Guid Key { get; set; } ``` ### Description - **`VectorStoreKeyAttribute.IsAutoGenerated`**: Changed from `public bool?` to a `public bool` property. Its setter stores the value into a new `internal bool? IsAutoGeneratedNullable` backing property. The getter returns `IsAutoGeneratedNullable.GetValueOrDefault()` rather than throwing; an inline comment explains this is a workaround for the C# compiler restriction that prevents `Nullable<bool>` from being used as a compile-time attribute argument. The `bool?` backing preserves the "not explicitly set" vs. "explicitly set" distinction the framework relies on. - **`CollectionModelBuilder`**: Updated to read `keyAttribute.IsAutoGeneratedNullable` (the `bool?` backing) instead of the former `bool?` public property, keeping the existing `?? SupportsKeyAutoGeneration(...)` fallback behaviour intact. - **`KernelFunctionFromMethod`**: Fixed a pre-existing operator precedence bug in a pattern match expression (`value is not JsonElement or JsonDocument or JsonNode`) that caused CS9336 redundant-pattern errors on the .NET 10 compiler. Added parentheses to correctly express the intended negation of all three types: `value is not (JsonElement or JsonDocument or JsonNode)`. - **`CollectionModelBuilderTests`**: Added four new unit tests covering all `IsAutoGenerated` attribute scenarios: explicitly set to `true`, explicitly set to `false`, omitted on a `Guid` key (fallback to `SupportsKeyAutoGeneration` returns `true`), and omitted on an `int` key (fallback returns `false`). ```csharp // Now compiles and works correctly [VectorStoreKey(IsAutoGenerated = true)] public Guid Key { get; set; } [VectorStoreKey(IsAutoGenerated = false)] public Guid Key { get; set; } [VectorStoreKey] // IsAutoGeneratedNullable remains null, fallback to SupportsKeyAutoGeneration() public Guid Key { get; set; } ``` ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>[MEVD] Can't set IsAutoGenerated property of VectorStoreKeyAttribute at compile time</issue_title> > <issue_description>The following code fails to compile: > > ```csharp > [VectorStoreKey(StorageName = "name", IsAutoGenerated = true)] > public Guid Key { get; set; } > ``` > > Because the `IsAutoGenerated` is `bool?`: > > https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/RecordAttributes/VectorStoreKeyAttribute.cs#L30 > > Which in C# maps to `System.Nullable<bool>` (a struct) and can't be set at compile time. > > Could we make it just a `bool` like what it's mapped to at the end? > > https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/ProviderServices/KeyPropertyModel.cs#L18 > > Context: https://github.com/dotnet/extensions/pull/7423/changes#r2974567816 > > cc @roji </issue_description> > > <agent_instructions>1. Make [this](https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/RecordAttributes/VectorStoreKeyAttribute.cs#L30) property be a `bool` rather than `bool?` property. > 2. Implement the getter and setter for it. > 3. The setter should set an internal `bool?` property that should be used instead of the public property everywhere in the repo. [Example]https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/ProviderServices/CollectionModelBuilder.cs#L162) > 3. Proof of concept code that I've used to verify it's going to get us what we need: > > ```csharp > using System.Reflection; > > namespace ConsoleApp15 > { > public class Program > { > static void Main() > { > TestAttribute setToTrue = typeof(Program).GetMethod(nameof(SetToTrue))!.GetCustomAttribute<TestAttribute>()!; > Console.WriteLine($"IsAutoGenerated_Core for [Test(IsAutoGenerated = true)]: {setToTrue.IsAutoGenerated_Core}"); > > TestAttribute setToFalse = typeof(Program).GetMethod(nameof(SetToFalse))!.GetCustomAttribute<TestAttribute>()!; > Console.WriteLine($"IsAutoGenerated_Core for [Test(IsAutoGenerated = false)]: {setToFalse.IsAutoGenerated_Core}"); > > TestAttribute notSet = typeof(Program).GetMethod(nameof(NotSet))!.GetCustomAttribute<TestAttribute>()!; > Console.WriteLine($"IsAutoGenerated_Core for [Test]: {notSet.IsAutoGenerated_Core}"); > } > > [Test(IsAutoGenerated = true)] > public static void SetToTrue() { } > > [Test(IsAutoGenerated = false)] > public static void SetToFalse() { } > > [Test] > public static void NotSet() { } > } > > [AttributeUsage(AttributeTargets.All)] > public class TestAttribute : Attribute > { > public bool IsAutoGenerated > { > get => throw new InvalidOperationException(); // provided to satisfy compiler requirements > set => IsAutoGenerated_Core = value; > } > > internal bool? IsAutoGenerated_Core { get; set; } > } > } > ```</agent_instructions> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > </comments> > </details> <!-- START COPILOT CODING AGENT SUFFIX --> - Fixes microsoft#13697 <!-- START COPILOT CODING AGENT TIPS --> --- 💬 Send tasks to Copilot coding agent from [Slack](https://gh.io/cca-slack-docs) and [Teams](https://gh.io/cca-teams-docs) to turn conversations into code. Copilot posts an update in your thread when it's finished. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: adamsitnik <6011991+adamsitnik@users.noreply.github.com>
…icrosoft#13608) ## Summary Fixes microsoft#12708 `ChatHistoryTruncationReducer.reduce()` can orphan `TOOL` role messages by truncating the preceding `assistant` message that contains the `tool_calls`, causing OpenAI to reject the history with: ``` messages with role 'tool' must be a response to a preceding message with 'tool_calls' ``` ## Root Cause `locate_safe_reduction_index()` uses `contains_function_call_or_result()` to detect tool-related messages during its backward scan. This function only checks `msg.items` for `FunctionCallContent`/`FunctionResultContent` instances. However, `TOOL` role messages can contain only text content (no `FunctionResultContent` in `items`), which causes the backward scan to treat them as regular messages. The truncation point then lands between the `tool_calls` assistant message and its `TOOL` responses, orphaning the tool results. ## Fix Added `AuthorRole.TOOL` check to `contains_function_call_or_result()`: ```python if msg.role == AuthorRole.TOOL: return True ``` This ensures **any** `TOOL` role message is recognized as part of a tool call/result pair, regardless of whether it has `FunctionResultContent` in its `items`. ## Test Added `test_locate_safe_reduction_index_tool_role_without_function_result_content` that verifies TOOL role messages with only text content are not separated from their tool call. --------- Co-authored-by: giulio-leone <giulio.leone@users.noreply.github.com> Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Motivation and Context Improve PR parsing by just operating on the PR number - no need for a full URL. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: MAF Dashboard Bot <maf-dashboard-bot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…osoft#13596) ### Motivation and Context Follow-up to microsoft#13499. The previous PR added the `allowed_module_prefixes` parameter but defaulted it to `None`, which meant the module restriction was only active if developers discovered and configured it. Secure-by-default is the right posture here — restrict first, let developers widen as needed. - Change `allowed_module_prefixes` default from `None` to `("semantic_kernel.",)` across Dapr runtime step loading - Non-SK step classes now require developers to explicitly add their module prefix (e.g. `("semantic_kernel.", "myapp.steps.")`) - Developers can pass `None` to opt out entirely, but the secure default is now enforced - The Dapr runtime code is experimental, so this is a non-breaking change per our stability guarantees <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 --------- Co-authored-by: MAF Dashboard Bot <maf-dashboard-bot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…icrosoft#13607) ## Summary Fixes microsoft#13483 ### Motivation and Context When `use_vertexai=True`, users authenticate via Application Default Credentials (ADC) and don't need an API key. However, the initialization check for `api_key` runs unconditionally, blocking Vertex AI users with: ``` ServiceInitializationError: The API key is required when use_vertexai is False. ``` ### Description Guard the `api_key` validation with `not google_ai_settings.use_vertexai` in all three Google AI service classes: - `GoogleAIChatCompletion` - `GoogleAITextCompletion` - `GoogleAITextEmbedding` The error message already reads *"when use_vertexai is False"*, so the condition now matches the intent. ### Before / After ```python # Before — fails even with use_vertexai=True GoogleAIChatCompletion( use_vertexai=True, cloud_project_id="my-project", cloud_region="us-central1" ) # → ServiceInitializationError: The API key is required when use_vertexai is False. # After — works correctly GoogleAIChatCompletion( use_vertexai=True, cloud_project_id="my-project", cloud_region="us-central1" ) # → Initializes successfully, uses ADC for authentication ``` ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) - [x] The code follows the [SK coding standards](https://github.com/microsoft/semantic-kernel/blob/main/python/README.md) --------- Co-authored-by: giulio-leone <giulio.leone@users.noreply.github.com> Co-authored-by: giulio-leone <6887247+giulio-leone@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… (microsoft#13624) ### Motivation and Context Closes microsoft#12442 When `ChatCompletionAgent` instances are used as plugins with `GoogleAIChatCompletion`, the application crashes with: ``` ValueError: Unknown field for Schema: anyOf ``` **Root cause**: The Semantic Kernel JSON schema builder generates `anyOf` for Union types (e.g. `str | list[str]` on the agent's `messages` parameter) and type-as-array for Optional types (e.g. `["string", "null"]`). Google AI's protobuf `Schema` does not support these constructs. ### Description Add `sanitize_schema_for_google_ai()` to `shared_utils.py` that recursively rewrites unsupported schema constructs: - `anyOf` / `oneOf` with a null variant → single type + `nullable: true` - `anyOf` / `oneOf` without null → picks the first variant - `type` as array (e.g. `["string", "null"]`) → single type + `nullable: true` Applied in both `kernel_function_metadata_to_google_ai_function_call_format()` and `kernel_function_metadata_to_vertex_ai_function_call_format()`. ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) - [x] The existing tests pass, and I have added 12 new regression tests - [x] I didn't break any existing functionality > [!NOTE] > AI-assisted contribution: Claude helped with code review, test generation, and formatting. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
### Motivation and Context Bump Pythong version to 1.41.1 for a release <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Bump Pythong version to 1.41.1 for a release <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
…erfaces (microsoft#13699) ## Changes * **Extract `ConfigureVectorPropertyEmbedding()`**: Deduplicated embedding resolution logic that was repeated across `ProcessTypeProperties` and `ProcessRecordDefinition`. * **Replace `IRecordCreator` with `Func<object>`**: Removed `IRecordCreator` interface and two implementing classes (`ActivatorBasedRecordCreator`, `DynamicRecordCreator`), replacing them with simple lambdas. * **Rename `TemporaryStorageName` → `SerializedKeyName`**: Moved from `PropertyModel` base to `KeyPropertyModel` where it belongs (only used by CosmosNoSql for key property JSON serializer name remapping). * **Delegate-based property accessors**: Replaced virtual `GetValueAsObject`/`SetValueAsObject` overrides with delegate fields (`_getter`/`_setter`), configured via `ConfigurePocoAccessors()`/`ConfigureDynamicAccessors()`. Converted null-coalescing throws to `Debug.Assert`. * **Improved xmldoc** on `VectorPropertyModel.EmbeddingType` explaining the `[AllowNull]` invariant. * **Introduce read-only interfaces** (`IPropertyModel`, `IKeyPropertyModel`, `IDataPropertyModel`, `IVectorPropertyModel`): `CollectionModel` now exposes `IReadOnlyList<IVectorPropertyModel>` etc., giving providers an immutable view post-build. All provider code updated to consume interface types. Note that the last is a non-trivial breaking change for providers (not users), which I think is fine (note that the provider-facing APIs are flagged as [Experimental]). --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
We are currently using Npgsql 8.0 because that's the last version that's still compatible with .NET Standard 2.0/netfx; but it seems wrong to force an older version of Npgsql on modern .NET users just because netfx users require it So for the versions of the PgVector MEVD provider targeting net8.0/net10.0, use the latest Npgsql 10.0; netstandard2.0/net462 still use Npgsql 8.0. It's not ideal to use different versions of Npgsql across different TFM targets of the same library, but it seems like the lesser of the possible evils here. This incidentally also takes care of the ReloadTypesAsync problem in microsoft#13706. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…soft#13738) ### Motivation and Context This PR updates the Jinja2 and Handlebars prompt-template helpers to serialize chat messages through the existing XML/message serializer instead of assembling message XML manually. It also aligns the prompt-template samples with the serializer-backed helper and adds regression coverage for common message content. <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description Prompt template message serialize improvements. <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 --------- Co-authored-by: MAF Dashboard Bot <maf-dashboard-bot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…thon (microsoft#13329) Updates the requirements on [redis[hiredis]](https://github.com/redis/redis-py) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/redis/redis-py/releases">redis[hiredis]'s releases</a>.</em></p> <blockquote> <h2>7.0.1</h2> <h1>Changes</h1> <p>This release adds small fixes related to documentation.</p> <h2>🧰 Maintenance</h2> <ul> <li>Add 'multi_database' section to documentation index (313d93f)</li> <li>Revised multi-database client documentation(78df745)</li> <li>Adding info about Multi-database client in README.md (3f7a55e)</li> </ul> <p>We'd like to thank all the contributors who worked on this release! <a href="https://github.com/dmaier"><code>@dmaier</code></a> <a href="https://github.com/petyaslavova"><code>@petyaslavova</code></a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/redis/redis-py/commit/613a06f5bee94ee8aad3d841dd8c595ae6cc62d2"><code>613a06f</code></a> Updating redis-py package version to 7.0.1</li> <li><a href="https://github.com/redis/redis-py/commit/3f7a55e5914f82787fde15c56c18b105f001745e"><code>3f7a55e</code></a> Adding info about Multi-database client in README.md</li> <li><a href="https://github.com/redis/redis-py/commit/313d93f0b90c69ea5e6c7af8ff9b31ee005f4994"><code>313d93f</code></a> Add 'multi_database' section to documentation index</li> <li><a href="https://github.com/redis/redis-py/commit/78df74522f76341be965e5c719427be6dcd5bedf"><code>78df745</code></a> Revised multi-database client documentation</li> <li><a href="https://github.com/redis/redis-py/commit/7a4e8bc42a1cbda6b1e8e2e1dfbe8a94766e07f9"><code>7a4e8bc</code></a> Updating package version to 7.0.0 and supported redis versions in readme.md</li> <li><a href="https://github.com/redis/redis-py/commit/64a2721d6b0303e7a723066530b467145ee10841"><code>64a2721</code></a> Refactor healthcheck to use PING instead of ECHO (<a href="https://redirect.github.com/redis/redis-py/issues/3811">#3811</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/24a7a1027bd6390e161c1c88be35c8acb242833d"><code>24a7a10</code></a> Fixing SORTABLE, INDEXEMPTY and INDEXMISSING order when using RediSearch fiel...</li> <li><a href="https://github.com/redis/redis-py/commit/32ba6d89d2061a44c0c3f36d249fb9929836fca6"><code>32ba6d8</code></a> DOC-5821 update index/query example for runnable notebook (<a href="https://redirect.github.com/redis/redis-py/issues/3807">#3807</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/c1e566f9fbd99912d7073b871eeda76d70f61b63"><code>c1e566f</code></a> Add handling of empty spaces during CLIENT LIST response parsing (<a href="https://redirect.github.com/redis/redis-py/issues/3797">#3797</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/295bec67ddbf99c205376483f08a3ddebb72f2b2"><code>295bec6</code></a> Adding new ExternalAuthProviderError that will be raised when we receive 'pro...</li> <li>Additional commits viewable in <a href="https://github.com/redis/redis-py/compare/v6.0.0...v7.0.1">compare view</a></li> </ul> </details> <br /> You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…/python (microsoft#13331) [//]: # (dependabot-start)⚠️ **Dependabot is rebasing this PR**⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Updates the requirements on [chromadb](https://github.com/chroma-core/chroma) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/chroma-core/chroma/releases">chromadb's releases</a>.</em></p> <blockquote> <h2>1.3.0</h2> <p>Version: <code>1.3.0</code> Git ref: <code>refs/tags/1.3.0</code> Build Date: <code>2025-10-29T03:08</code> PIP Package: <code>chroma-1.3.0.tar.gz</code> Github Container Registry Image: <code>:1.3.0</code> DockerHub Image: <code>:1.3.0</code></p> <h2>What's Changed</h2> <ul> <li>[ENH] - Adds rust client to list of clients by <a href="https://github.com/tjkrusinskichroma"><code>@tjkrusinskichroma</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5740">chroma-core/chroma#5740</a></li> <li>[ENH]: Integrate task operators into compaction by <a href="https://github.com/tanujnay112"><code>@tanujnay112</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5687">chroma-core/chroma#5687</a></li> <li>[ENH]: Add heaptender client to compaction and make finishtask use this by <a href="https://github.com/tanujnay112"><code>@tanujnay112</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5715">chroma-core/chroma#5715</a></li> <li>[ENH] Add local support for schema by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5714">chroma-core/chroma#5714</a></li> <li>[ENH]: Implement create_task with 2PC and backfill + make it idemptotent by <a href="https://github.com/tanujnay112"><code>@tanujnay112</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5729">chroma-core/chroma#5729</a></li> <li>[CHORE] reconcile schema in compaction orchetrator and use in spann&hnsw by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5742">chroma-core/chroma#5742</a></li> <li>[ENH] Export schema and search types from chromadb.api by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5736">chroma-core/chroma#5736</a></li> <li>Add Sync to roadmap by <a href="https://github.com/kylediaz"><code>@kylediaz</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5745">chroma-core/chroma#5745</a></li> <li>[ENH]: limit concurrency on operators spawned by GC by <a href="https://github.com/codetheweb"><code>@codetheweb</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5720">chroma-core/chroma#5720</a></li> <li>[BLD] Bump hnswlib dep by <a href="https://github.com/Sicheng-Pan"><code>@Sicheng-Pan</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5743">chroma-core/chroma#5743</a></li> <li>[ENH] recognize and flush new metadata keys to schema on local compaction by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5728">chroma-core/chroma#5728</a></li> <li>[ENH]: Error if source_key set but no ef by <a href="https://github.com/sanketkedia"><code>@sanketkedia</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5751">chroma-core/chroma#5751</a></li> <li>[ENH]: (Rust client): add <code>true.into::<Where>()</code> helper by <a href="https://github.com/codetheweb"><code>@codetheweb</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5750">chroma-core/chroma#5750</a></li> <li>Revert "[ENH]: Error if source_key set but no ef" by <a href="https://github.com/sanketkedia"><code>@sanketkedia</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5757">chroma-core/chroma#5757</a></li> <li>[ENH]: Disallow setting only source_key without an ef by <a href="https://github.com/sanketkedia"><code>@sanketkedia</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5758">chroma-core/chroma#5758</a></li> <li>[BUG] use keys instead of key_overrides in query embedding strings by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5754">chroma-core/chroma#5754</a></li> <li>[ENH] Add BM25 embedding function to JS by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5756">chroma-core/chroma#5756</a></li> <li>[CHORE] Bump js ai-embeddings versions by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5759">chroma-core/chroma#5759</a></li> <li>[TST] add space checks & local modify test for schema by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5761">chroma-core/chroma#5761</a></li> <li>[RELEASE] Python 1.3.0 by <a href="https://github.com/jairad26"><code>@jairad26</code></a> in <a href="https://redirect.github.com/chroma-core/chroma/pull/5760">chroma-core/chroma#5760</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/chroma-core/chroma/compare/1.2.2...1.3.0">https://github.com/chroma-core/chroma/compare/1.2.2...1.3.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/chroma-core/chroma/commit/6b30ba6104cb8feeac8c58e39ff1b1f327b343fa"><code>6b30ba6</code></a> [RELEASE] Python 1.3.0 (<a href="https://redirect.github.com/chroma-core/chroma/issues/5760">#5760</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/589bfbc967b8d17c8d6ffad6d12d6de31b4b86fb"><code>589bfbc</code></a> [TST] add space checks & local modify test for schema (<a href="https://redirect.github.com/chroma-core/chroma/issues/5761">#5761</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/810eecc153c915a061cc5b463f00b0a741191ead"><code>810eecc</code></a> [CHORE] Bump js ai-embeddings versions (<a href="https://redirect.github.com/chroma-core/chroma/issues/5759">#5759</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/83252aa0f8d4524908107de70b809b1dad1f7daa"><code>83252aa</code></a> [ENH] Add BM25 embedding function to JS (<a href="https://redirect.github.com/chroma-core/chroma/issues/5756">#5756</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/ff1285d2572bf9ca0018d38c69bd1eae3846f82b"><code>ff1285d</code></a> [BUG] use keys instead of key_overrides in query embedding strings (<a href="https://redirect.github.com/chroma-core/chroma/issues/5754">#5754</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/8e8fb95c2cde9e24b01069947b3b5e613e633ccd"><code>8e8fb95</code></a> [ENH]: Disallow setting only source_key without an ef (<a href="https://redirect.github.com/chroma-core/chroma/issues/5758">#5758</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/0734fdffa5f73ff6886eec9a10d07810d63e99ed"><code>0734fdf</code></a> Revert "[ENH]: Error if source_key set but no ef" (<a href="https://redirect.github.com/chroma-core/chroma/issues/5757">#5757</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/34ebde8d4f8debd5a26d5fd740c85cfbb66379e7"><code>34ebde8</code></a> [ENH]: (Rust client): add <code>true.into::\<Where>()</code> helper (<a href="https://redirect.github.com/chroma-core/chroma/issues/5750">#5750</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/0d3bd2afdcba32f1de74007d3e77bbae89d67849"><code>0d3bd2a</code></a> [ENH]: Error if source_key set but no ef (<a href="https://redirect.github.com/chroma-core/chroma/issues/5751">#5751</a>)</li> <li><a href="https://github.com/chroma-core/chroma/commit/a1ea81a69275bdf25d7526df520d4aab3d82a76d"><code>a1ea81a</code></a> [ENH] recognize and flush new metadata keys to schema on local compaction (<a href="https://redirect.github.com/chroma-core/chroma/issues/5">#5</a>...</li> <li>Additional commits viewable in <a href="https://github.com/chroma-core/chroma/compare/0.5.0...1.3.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
…6 in /python (microsoft#13124) [//]: # (dependabot-start)⚠️ **Dependabot is rebasing this PR**⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Updates the requirements on [pymongo](https://github.com/mongodb/mongo-python-driver) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/mongodb/mongo-python-driver/releases">pymongo's releases</a>.</em></p> <blockquote> <h2>PyMongo 4.15.0</h2> <p>Community notes: <a href="https://www.mongodb.com/community/forums/t/pymongo-4-15-released/328574">https://www.mongodb.com/community/forums/t/pymongo-4-15-released/328574</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst">pymongo's changelog</a>.</em></p> <blockquote> <h2>Changes in Version 4.15.0 (2025/09/10)</h2> <p>PyMongo 4.15 brings a number of changes including:</p> <ul> <li>Added :class:<code>~pymongo.encryption_options.TextOpts</code>, :attr:<code>~pymongo.encryption.Algorithm.TEXTPREVIEW</code>, :attr:<code>~pymongo.encryption.QueryType.PREFIXPREVIEW</code>, :attr:<code>~pymongo.encryption.QueryType.SUFFIXPREVIEW</code>, :attr:<code>~pymongo.encryption.QueryType.SUBSTRINGPREVIEW</code>, as part of the experimental Queryable Encryption text queries beta. <code>pymongocrypt>=1.16</code> is required for text query support.</li> <li>Added :class:<code>bson.decimal128.DecimalEncoder</code> and :class:<code>bson.decimal128.DecimalDecoder</code> to support encoding and decoding of BSON Decimal128 values to decimal.Decimal values using the TypeRegistry API.</li> <li>Added support for Windows <code>arm64</code> wheels.</li> </ul> <h2>Changes in Version 4.14.1 (2025/08/19)</h2> <p>Version 4.14.1 is a bug fix release.</p> <ul> <li>Fixed a bug in <code>MongoClient.append_metadata()</code> and <code>AsyncMongoClient.append_metadata()</code> that allowed duplicate <code>DriverInfo.name</code> to be appended to the metadata.</li> </ul> <p>Issues Resolved ...............</p> <p>See the <code>PyMongo 4.14.1 release notes in JIRA</code>_ for the list of resolved issues in this release.</p> <p>.. _PyMongo 4.14.1 release notes in JIRA: <a href="https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&version=45256">https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&version=45256</a></p> <h2>Changes in Version 4.14.0 (2025/08/06)</h2> <p>.. warning:: PyMongo 4.14 drops support for MongoDB 4.0. PyMongo now supports MongoDB 4.2+.</p> <p>PyMongo 4.14 brings a number of changes including:</p> <ul> <li> <p>Dropped support for MongoDB 4.0.</p> </li> <li> <p>Added preliminary support for Python 3.14 and 3.14 with free-threading. We do not yet support the following with Python 3.14:</p> <ul> <li>Subinterpreters (<code>concurrent.interpreters</code>)</li> <li>Free-threading with Encryption</li> <li>mod_wsgi</li> </ul> </li> <li> <p>Removed experimental support for free-threading support in Python 3.13.</p> </li> <li> <p>Added :attr:<code>bson.codec_options.TypeRegistry.codecs</code> and</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/1514e9b784ed395e7dad806c7b722fef531ecb15"><code>1514e9b</code></a> Prepare 4.15 release (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2523">#2523</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/98e9f5ecc1396abf2fafe070de36e1bed5691930"><code>98e9f5e</code></a> PYTHON-5538 Clean up uv lock file handling (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2522">#2522</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/d7316afb632fb16e23214ec2a404b308a1054896"><code>d7316af</code></a> PYTHON-5328 CRUD Support in Driver for Prefix/Suffix/Substring Indexes (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2521">#2521</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/7580309e993fdda26dc4ea38ccfd0178e78c99e7"><code>7580309</code></a> PYTHON-4928 Convert CSFLE spec tests to unified test format (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2520">#2520</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/47c5460d2ec7eced587add33cb6ab0d717218f49"><code>47c5460</code></a> Bump pyright from 1.1.404 to 1.1.405 (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2518">#2518</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/b84e1a7ce4f53faf3b4898fdf8b5b89251f8c047"><code>b84e1a7</code></a> PYTHON-5527 - Unified test typo in 'Expected error' (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2517">#2517</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/c0e0554a3b69b7c3140a792934682c19b43fc269"><code>c0e0554</code></a> PYTHON-5521 - Update TestBsonSizeBatches.test_06_insert_fails_over_16MiB erro...</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/d63edf7aea260be286a3bc98e28f961db43a71b0"><code>d63edf7</code></a> PYTHON-5524 - Fix CSFLE spec test min version checks (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2516">#2516</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/b756bbd2a392ee9a810dd9b5df97fc4e16cfae37"><code>b756bbd</code></a> Bump the actions group with 2 updates (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2513">#2513</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/b2bba67b61f033be5360bebc1ea260164ae75bb2"><code>b2bba67</code></a> Update coverage requirement from <=7.10.5,>=5 to >=5,<=7.10.6 (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2512">#2512</a>)</li> <li>Additional commits viewable in <a href="https://github.com/mongodb/mongo-python-driver/compare/4.8.0...4.15.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
…=2.10.3,<2.12,>=2.0 to >=2.0,!=2.10.0,!=2.10.1,!=2.10.2,!=2.10.3,<2.13 in /python (microsoft#13246) Updates the requirements on [pydantic](https://github.com/pydantic/pydantic) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/releases">pydantic's releases</a>.</em></p> <blockquote> <h2>v2.12.1 2025-10-13</h2> <h2>v2.12.1 (2025-10-13)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.12.1">GitHub release</a></p> <h3>What's Changed</h3> <p>This is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.</p> <h4>Fixes</h4> <ul> <li>Do not evaluate annotations when inspecting validators and serializers by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12355">#12355</a></li> <li>Make sure <code>None</code> is converted as <code>NoneType</code> in Python 3.14 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12370">#12370</a></li> <li>Backport V1 runtime warning when using Python 3.14 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12367">#12367</a></li> <li>Fix error message for invalid validator signatures by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12366">#12366</a></li> <li>Populate field name in <code>ValidationInfo</code> for validation of default value by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1826">pydantic-core#1826</a></li> <li>Encode credentials in <code>MultiHostUrl</code> builder by <a href="https://github.com/willswire"><code>@willswire</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li> <li>Respect field serializers when using <code>serialize_as_any</code> serialization flag by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li> <li>Fix various <code>RootModel</code> serialization issues by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1836">pydantic-core#1836</a></li> </ul> <h3>New Contributors</h3> <ul> <li><a href="https://github.com/willswire"><code>@willswire</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.12.0...v2.12.1">https://github.com/pydantic/pydantic/compare/v2.12.0...v2.12.1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/blob/v2.12.1/HISTORY.md">pydantic's changelog</a>.</em></p> <blockquote> <h2>v2.12.1 (2025-10-13)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.12.1">GitHub release</a></p> <h3>What's Changed</h3> <p>This is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.</p> <h4>Fixes</h4> <ul> <li>Do not evaluate annotations when inspecting validators and serializers by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12355">#12355</a></li> <li>Make sure <code>None</code> is converted as <code>NoneType</code> in Python 3.14 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12370">#12370</a></li> <li>Backport V1 runtime warning when using Python 3.14 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12367">#12367</a></li> <li>Fix error message for invalid validator signatures by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12366">#12366</a></li> <li>Populate field name in <code>ValidationInfo</code> for validation of default value by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1826">pydantic-core#1826</a></li> <li>Encode credentials in <code>MultiHostUrl</code> builder by <a href="https://github.com/willswire"><code>@willswire</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li> <li>Respect field serializers when using <code>serialize_as_any</code> serialization flag by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li> <li>Fix various <code>RootModel</code> serialization issues by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1836">pydantic-core#1836</a></li> </ul> <h3>New Contributors</h3> <ul> <li><a href="https://github.com/willswire"><code>@willswire</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li> </ul> <h2>v2.12.0 (2025-10-07)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.12.0">GitHub release</a></p> <h3>What's Changed</h3> <p>This is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support. Several minor changes (considered non-breaking changes according to our <a href="https://docs.pydantic.dev/2.12/version-policy/#pydantic-v2">versioning policy</a>) are also included in this release. Make sure to look into them before upgrading.</p> <p><strong>Note that Pydantic V1 is not compatible with Python 3.14 and greater</strong>.</p> <p>Changes (see the alpha and beta releases for additional changes since 2.11):</p> <h4>Packaging</h4> <ul> <li>Update V1 copy to v1.10.24 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12338">#12338</a></li> </ul> <h4>New Features</h4> <ul> <li>Add <code>extra</code> parameter to the validate functions by <a href="https://github.com/anvilpete"><code>@anvilpete</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12233">#12233</a></li> <li>Add <code>exclude_computed_fields</code> serialization option by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12334">#12334</a></li> <li>Add <code>preverse_empty_path</code> URL options by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12336">#12336</a></li> <li>Add <code>union_format</code> parameter to JSON Schema generation by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12147">#12147</a></li> <li>Add <code>__qualname__</code> parameter for <code>create_model</code> by <a href="https://github.com/Atry"><code>@Atry</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/12001">#12001</a></li> </ul> <h4>Fixes</h4> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pydantic/pydantic/commit/b4076c66773b514d4891f036a4cc562b8ff0ff21"><code>b4076c6</code></a> Prepare release 2.12.1</li> <li><a href="https://github.com/pydantic/pydantic/commit/b67f07291167b4005a6eeee05fcad67b43a53f41"><code>b67f072</code></a> Bump <code>pydantic-core</code> to v2.41.3</li> <li><a href="https://github.com/pydantic/pydantic/commit/529f7ddc4a2eac8eb41b39d8b4d6c07997de46f8"><code>529f7dd</code></a> Fix error message for invalid validator signatures</li> <li><a href="https://github.com/pydantic/pydantic/commit/445fa79f2eda31e2a1922f9736f7613bbd9680b5"><code>445fa79</code></a> Backport V1 runtime warning</li> <li><a href="https://github.com/pydantic/pydantic/commit/b3dba9be0705293019c368d8acc5b8b60dcf5148"><code>b3dba9b</code></a> Make sure <code>None</code> is converted as <code>NoneType</code> in Python 3.14</li> <li><a href="https://github.com/pydantic/pydantic/commit/1e8c41ee1327c153c713f47feb98a5fa7bb8ce89"><code>1e8c41e</code></a> Do not evaluate annotations when inspecting validators and serializers</li> <li><a href="https://github.com/pydantic/pydantic/commit/e2a199fe4fc5f8cbc32c93840c9783b332b4f112"><code>e2a199f</code></a> Upgrade dependencies for 3.14</li> <li><a href="https://github.com/pydantic/pydantic/commit/79353e6a6b9fc7a34304d5981b670832044caa99"><code>79353e6</code></a> Fix spelling in <code>model_dump()</code> docstring</li> <li><a href="https://github.com/pydantic/pydantic/commit/aa6b6cd206253c24a46a5fb830e2ff029d21fb95"><code>aa6b6cd</code></a> Fix typo in experimental.md documentation</li> <li><a href="https://github.com/pydantic/pydantic/commit/a7928e692e5a7841c4379d1af1fd37966941dade"><code>a7928e6</code></a> Update Python version in documentation publishing CI job (<a href="https://redirect.github.com/pydantic/pydantic/issues/12344">#12344</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pydantic/pydantic/compare/v2.0...v2.12.1">compare view</a></li> </ul> </details> <br /> You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ent tools (microsoft#13235) issue: microsoft#13234 ## Summary - honor FunctionChoiceBehavior filters when retrieving kernel function metadata ### Contribution Checklist - [x] The code builds clean without any errors or warnings - [x] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [x] All unit tests pass, and I have added new tests where possible - [x] I didn't break anyone 😄 --------- Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
…ython (microsoft#13330) Updates the requirements on [ipykernel](https://github.com/ipython/ipykernel) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/ipython/ipykernel/releases">ipykernel's releases</a>.</em></p> <blockquote> <h2>v7.1.0</h2> <h2>7.1.0</h2> <p>IPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using <code>%notebook</code> magic to save sessions as <code>.ipynb</code> files (<a href="https://redirect.github.com/ipython/ipykernel/issues/1435">#1435</a>). This is enabled using the traitlet <code>ZMQDisplayPublisher.store_display_history</code> which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.</p> <p>Output from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless <code>get_ipython().set_parent()</code> is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (<a href="https://redirect.github.com/ipython/ipykernel/issues/1451">#1451</a>).</p> <p>This release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (<a href="https://redirect.github.com/ipython/ipykernel/issues/1458">#1458</a>), kernels launched in new threads failing asserts (<a href="https://redirect.github.com/ipython/ipykernel/issues/1455">#1455</a>), and <code>ContextVar</code>s persisting between cells (<a href="https://redirect.github.com/ipython/ipykernel/issues/1462">#1462</a>). There is also a fix for keyboard interrupts on Windows (<a href="https://redirect.github.com/ipython/ipykernel/issues/1434">#1434</a>).</p> <p>(<a href="https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43">Full Changelog</a>)</p> <h3>Enhancements made</h3> <ul> <li>Store display outputs in history for <code>%notebook</code> magic <a href="https://redirect.github.com/ipython/ipykernel/pull/1435">#1435</a> (<a href="https://github.com/Darshan808"><code>@Darshan808</code></a>)</li> </ul> <h3>Bugs fixed</h3> <ul> <li>fix ContextVar persistence across cells <a href="https://redirect.github.com/ipython/ipykernel/pull/1462">#1462</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> <li>Fix matplotlib eventloops <a href="https://redirect.github.com/ipython/ipykernel/pull/1458">#1458</a> (<a href="https://github.com/ianthomas23"><code>@ianthomas23</code></a>)</li> <li>Refer to kernel launching thread instead of assuming the main thread <a href="https://redirect.github.com/ipython/ipykernel/pull/1455">#1455</a> (<a href="https://github.com/dfalbel"><code>@dfalbel</code></a>)</li> <li>Fix routing of background thread output when no parent is set explicitly <a href="https://redirect.github.com/ipython/ipykernel/pull/1451">#1451</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> <li>Fix KeyboardInterrupt on Windows by manually resetting interrupt event <a href="https://redirect.github.com/ipython/ipykernel/pull/1434">#1434</a> (<a href="https://github.com/ptosco"><code>@ptosco</code></a>)</li> </ul> <h3>Maintenance and upkeep improvements</h3> <ul> <li>update pre-commit and related <a href="https://redirect.github.com/ipython/ipykernel/pull/1465">#1465</a> (<a href="https://github.com/Carreau"><code>@Carreau</code></a>)</li> <li>test that matplotlib event loop integration is responsive <a href="https://redirect.github.com/ipython/ipykernel/pull/1463">#1463</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> <li>update tests for 3.14 <a href="https://redirect.github.com/ipython/ipykernel/pull/1453">#1453</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> </ul> <h3>Contributors to this release</h3> <p>(<a href="https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14&to=2025-10-27&type=c">GitHub contributors page for this release</a>)</p> <p><a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@Carreau</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@Darshan808</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@dfalbel</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@ianthomas23</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@krassowski</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@lumberbot-app</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@minrk</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@ptosco</code></a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md">ipykernel's changelog</a>.</em></p> <blockquote> <h2>7.1.0</h2> <p>IPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using <code>%notebook</code> magic to save sessions as <code>.ipynb</code> files (<a href="https://redirect.github.com/ipython/ipykernel/issues/1435">#1435</a>). This is enabled using the traitlet <code>ZMQDisplayPublisher.store_display_history</code> which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.</p> <p>Output from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless <code>get_ipython().set_parent()</code> is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (<a href="https://redirect.github.com/ipython/ipykernel/issues/1451">#1451</a>).</p> <p>This release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (<a href="https://redirect.github.com/ipython/ipykernel/issues/1458">#1458</a>), kernels launched in new threads failing asserts (<a href="https://redirect.github.com/ipython/ipykernel/issues/1455">#1455</a>), and <code>ContextVar</code>s persisting between cells (<a href="https://redirect.github.com/ipython/ipykernel/issues/1462">#1462</a>). There is also a fix for keyboard interrupts on Windows (<a href="https://redirect.github.com/ipython/ipykernel/issues/1434">#1434</a>).</p> <p>(<a href="https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43">Full Changelog</a>)</p> <h3>Enhancements made</h3> <ul> <li>Store display outputs in history for <code>%notebook</code> magic <a href="https://redirect.github.com/ipython/ipykernel/pull/1435">#1435</a> (<a href="https://github.com/Darshan808"><code>@Darshan808</code></a>)</li> </ul> <h3>Bugs fixed</h3> <ul> <li>fix ContextVar persistence across cells <a href="https://redirect.github.com/ipython/ipykernel/pull/1462">#1462</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> <li>Fix matplotlib eventloops <a href="https://redirect.github.com/ipython/ipykernel/pull/1458">#1458</a> (<a href="https://github.com/ianthomas23"><code>@ianthomas23</code></a>)</li> <li>Refer to kernel launching thread instead of assuming the main thread <a href="https://redirect.github.com/ipython/ipykernel/pull/1455">#1455</a> (<a href="https://github.com/dfalbel"><code>@dfalbel</code></a>)</li> <li>Fix routing of background thread output when no parent is set explicitly <a href="https://redirect.github.com/ipython/ipykernel/pull/1451">#1451</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> <li>Fix KeyboardInterrupt on Windows by manually resetting interrupt event <a href="https://redirect.github.com/ipython/ipykernel/pull/1434">#1434</a> (<a href="https://github.com/ptosco"><code>@ptosco</code></a>)</li> </ul> <h3>Maintenance and upkeep improvements</h3> <ul> <li>update pre-commit and related <a href="https://redirect.github.com/ipython/ipykernel/pull/1465">#1465</a> (<a href="https://github.com/Carreau"><code>@Carreau</code></a>)</li> <li>test that matplotlib event loop integration is responsive <a href="https://redirect.github.com/ipython/ipykernel/pull/1463">#1463</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> <li>update tests for 3.14 <a href="https://redirect.github.com/ipython/ipykernel/pull/1453">#1453</a> (<a href="https://github.com/minrk"><code>@minrk</code></a>)</li> </ul> <h3>Contributors to this release</h3> <p>(<a href="https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14&to=2025-10-27&type=c">GitHub contributors page for this release</a>)</p> <p><a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@Carreau</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@Darshan808</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@dfalbel</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@ianthomas23</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@krassowski</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@lumberbot-app</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@minrk</code></a> | <a href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27&type=Issues"><code>@ptosco</code></a></p> <!-- raw HTML omitted --> <h2>7.0.1</h2> <p>IPykernel 7.0.1 is a bug fix release to support CPython 3.14.</p> <p>(<a href="https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45">Full Changelog</a>)</p> <h3>Bugs fixed</h3> <ul> <li>Avoid overriding Thread._context in Python 3.14 <a href="https://redirect.github.com/ipython/ipykernel/pull/1447">#1447</a> (<a href="https://github.com/ianthomas23"><code>@ianthomas23</code></a>)</li> </ul> <h3>Maintenance and upkeep improvements</h3> <ul> <li>Fix 7.x license warnings <a href="https://redirect.github.com/ipython/ipykernel/pull/1448">#1448</a> (<a href="https://github.com/bollwyvl"><code>@bollwyvl</code></a>)</li> <li>ci: Test on PyPy 3.11 instead of 3.10 <a href="https://redirect.github.com/ipython/ipykernel/pull/1444">#1444</a> (<a href="https://github.com/cclauss"><code>@cclauss</code></a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/ipython/ipykernel/commit/39eaf96ab6db0d0ff9ad269831384c53a11e11d8"><code>39eaf96</code></a> Publish 7.1.0</li> <li><a href="https://github.com/ipython/ipykernel/commit/6f61a6835c217e42c406ee01b359e2fa235baf43"><code>6f61a68</code></a> test that matplotlib event loop integration is responsive (<a href="https://redirect.github.com/ipython/ipykernel/issues/1463">#1463</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/8446e02948c390793e129affeceedfa30ed5080f"><code>8446e02</code></a> Fix KeyboardInterrupt on Windows by manually resetting interrupt event (<a href="https://redirect.github.com/ipython/ipykernel/issues/1434">#1434</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/dd1e09484854c8dedcd98436bc01b6b8e1cc9034"><code>dd1e094</code></a> update pre-commit and related (<a href="https://redirect.github.com/ipython/ipykernel/issues/1465">#1465</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/95f245138589db4f723b8af06107cdfeadc53314"><code>95f2451</code></a> fix ContextVar persistence across cells (<a href="https://redirect.github.com/ipython/ipykernel/issues/1462">#1462</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/c56a7aab3cad1fb91f7e7185dc7403d561ecd667"><code>c56a7aa</code></a> Fix matplotlib eventloops (<a href="https://redirect.github.com/ipython/ipykernel/issues/1458">#1458</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/c7af34cd19ebcd43f5aafe1919909feb6e898387"><code>c7af34c</code></a> Refer to kernel laucnhing thread instead of assuming the main thread (<a href="https://redirect.github.com/ipython/ipykernel/issues/1455">#1455</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/7193d14de447a18470a18d60b81eda5f0048b6aa"><code>7193d14</code></a> Fix routing of background thread output when no parent is set explicitly (<a href="https://redirect.github.com/ipython/ipykernel/issues/1451">#1451</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/b8f5dfc3a35a658c66b85213e60f634bd8a44488"><code>b8f5dfc</code></a> Store display outputs in history for <code>%notebook</code> magic (<a href="https://redirect.github.com/ipython/ipykernel/issues/1435">#1435</a>)</li> <li><a href="https://github.com/ipython/ipykernel/commit/93f11dbb02692a7922cb6fdb4ebadffdb8b691c0"><code>93f11db</code></a> update tests for 3.14 (<a href="https://redirect.github.com/ipython/ipykernel/issues/1453">#1453</a>)</li> <li>Additional commits viewable in <a href="https://github.com/ipython/ipykernel/compare/v6.29.0...v7.1.0">compare view</a></li> </ul> </details> <br /> You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
### Motivation and Context bump py version to 1.41.2 for a release <!-- Thank you for your contribution to the semantic-kernel repo! Please help reviewers and future users, providing the following information: 1. Why is this change required? 2. What problem does it solve? 3. What scenario does it contribute to? 4. If it fixes an open issue, please link to the issue here. --> ### Description bump py version to 1.41.2 for a release <!-- Describe your changes, the overall approach, the underlying design. These notes will help understanding how your code works. Thanks! --> ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄
- Replace deprecated TOP_N parameter with SELECT TOP(N) WITH APPROXIMATE - Enable iterative filtering (WHERE predicates during vector search) - Support skip via subquery wrapping (TOP and OFFSET/FETCH can't coexist) - Add Azure SQL runtime detection for DiskAnn (SERVERPROPERTY EngineEdition) - Remove read-only table workaround (SqlServerDiskAnnVectorSearchTests) - Update hybrid search CTE with new VECTOR_SEARCH syntax - Gate DiskAnn conformance test on Azure SQL connection string - Handle 100-row minimum requirement for DiskAnn vector index creation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates the SQL Server vector store connector to support the latest Azure SQL VECTOR_SEARCH() features, matching what was done in EF Core (dotnet/efcore#38075).
Changes
VECTOR_SEARCH syntax update
TOP_Nparameter withSELECT TOP(N) WITH APPROXIMATEskipvia subquery wrapping (TOPandOFFSET/FETCHcan't coexist in the same SELECT)Hybrid search
Azure SQL runtime detection
SERVERPROPERTY('EngineEdition')at table creation and query timeNotSupportedExceptionwhen used against on-prem SQL ServerTest infrastructure
SqlServerDiskAnnVectorSearchTests.cs(read-only table workaround no longer needed — tables with latest vector indexes now support full DML)SqlServerConnectionStringRequiredAttributeto gate DiskAnn tests on Azure SQL connection string availabilityKept
PREVIEW_FEATUREScommand inCreateTable(needed for future on-prem SQL Server support)