.Net: Semantic Kernel -> Agent Framework - Migration/Samples Update (AF 1.0 Compatible)#13852
.Net: Semantic Kernel -> Agent Framework - Migration/Samples Update (AF 1.0 Compatible)#13852rogerbarreto wants to merge 8 commits intomicrosoft:mainfrom
Conversation
- OpenAI/Azure OpenAI Assistants: Rewrite AF sections to use Responses API (GetResponsesClient().AsAIAgent()) since Assistants API is deprecated - Azure AI Foundry: Replace PersistentAgentsClient.CreateAIAgentAsync() with AIProjectClient.AsAIAgent() from Microsoft.Agents.AI.Foundry - Replace GetNewThread() with async CreateSessionAsync() - Replace ChatClientAgentThread with ChatClientAgentSession - Remove cleanup code from AF sections (Responses/non-hosted paths don't create server-side resources) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update migration document, samples, and bridge code from Agent Framework preview (1.0.0-preview.251009.1) to GA (1.0.0). Breaking changes addressed: - AgentThread -> AgentSession, GetNewThread() -> CreateSessionAsync() - AgentRunResponse -> AgentResponse, AgentRunResponseUpdate -> AgentResponseUpdate - CreateAIAgent() -> AsAIAgent() (extension method renamed) - OpenAI Assistants extensions removed (redirect to Responses API) - PersistentAgentsClient obsolete (use AIProjectClient via Microsoft.Agents.AI.Foundry) - Microsoft.Agents.AI.AzureAI renamed to Microsoft.Agents.AI.Foundry - InProcessExecution.StreamAsync -> RunStreamingAsync - AgentRunUpdateEvent -> AgentResponseUpdateEvent Additional discoveries: - using OpenAI.Chat required for ChatClient.AsAIAgent() extension - using OpenAI.Responses required for ResponsesClient.AsAIAgent() extension - AIAgent.Id no longer virtual, use IdCore override instead
There was a problem hiding this comment.
Pull request overview
This pull request updates the .NET Semantic Kernel to Agent Framework migration guidance, samples, and bridge code to align with Agent Framework 1.0 GA APIs, primarily renaming thread concepts to sessions and updating agent creation and workflow streaming patterns.
Changes:
- Updated package references from Agent Framework preview packages to 1.0.0 GA, including the Azure AI Foundry package rename.
- Updated the SK bridge adapter to the new AF 1.0 GA override surface (session lifecycle and response types).
- Updated migration samples, tests, and documentation to use
AsAIAgent(),CreateSessionAsync(), and GA response and workflow event types.
Reviewed changes
Copilot reviewed 54 out of 54 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| dotnet/src/IntegrationTests/Agents/CommonInterfaceConformance/SemanticKernelAIAgentConformance/SemanticKernelAIAgentTests.cs | Updates conformance test to session APIs |
| dotnet/src/IntegrationTests/Agents/CommonInterfaceConformance/AgentWithTextSearchProviderConformance/AgentWithTextSearchProvider.cs | Updates conformance fixture session creation |
| dotnet/src/IntegrationTests/Agents/CommonInterfaceConformance/AgentWithAIContextProviderConformance/AgentWithAIContextProviderTests.cs | Updates state provider tests to session creation |
| dotnet/src/Agents/UnitTests/OpenAI/OpenAIResponseAgentExtensionsTests.cs | Updates OpenAI Responses agent extension tests to sessions |
| dotnet/src/Agents/UnitTests/OpenAI/OpenAIAssistantAgentExtensionsTests.cs | Updates Assistant agent extension tests to sessions |
| dotnet/src/Agents/UnitTests/Core/ChatCompletionAgentExtensionsTests.cs | Updates chat completion agent extension tests to sessions |
| dotnet/src/Agents/UnitTests/Copilot/CopilotStudioAgentExtensionsTests.cs | Updates Copilot Studio agent extension tests to sessions |
| dotnet/src/Agents/UnitTests/Bedrock/Extensions.cs/BedrockAgentExtensionsTests.cs | Updates Bedrock agent extension tests to sessions |
| dotnet/src/Agents/UnitTests/AzureAI/AzureAIAgentExtensionsTests.cs | Updates Azure AI agent extension tests to sessions |
| dotnet/src/Agents/UnitTests/AIAgent/SemanticKernelAIAgentThreadTests.cs | Renames adapter tests from thread to session concept |
| dotnet/src/Agents/UnitTests/AIAgent/SemanticKernelAIAgentTests.cs | Updates SK bridge unit tests to session APIs and GA response types |
| dotnet/src/Agents/UnitTests/AgentExtensionsTests.cs | Updates generic agent extension tests to session APIs |
| dotnet/src/Agents/UnitTests/A2A/A2AAgentExtensionsTests.cs | Updates A2A agent extension tests to sessions |
| dotnet/src/Agents/Abstractions/AIAgent/SemanticKernelAIAgentThread.cs | Renames adapter wrapper type to AgentSession |
| dotnet/src/Agents/Abstractions/AIAgent/SemanticKernelAIAgent.cs | Updates SK bridge agent adapter to AF 1.0 GA core overrides |
| dotnet/samples/AgentFrameworkMigration/OpenAIResponses/Step04_DependencyInjection/Program.cs | Updates sample to Responses AsAIAgent and required using |
| dotnet/samples/AgentFrameworkMigration/OpenAIResponses/Step03_ToolCall/Program.cs | Updates Responses tool call sample to AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/OpenAIResponses/Step02_ReasoningModel/Program.cs | Updates reasoning sample to sessions and Responses AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/OpenAIResponses/Step01_Basics/Program.cs | Updates basics sample to sessions and Responses AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/OpenAIAssistants/Step04_CodeInterpreter/Program.cs | Updates Assistants migration sample to Responses and sessions |
| dotnet/samples/AgentFrameworkMigration/OpenAIAssistants/Step03_DependencyInjection/Program.cs | Updates DI sample from Assistants to Responses path |
| dotnet/samples/AgentFrameworkMigration/OpenAIAssistants/Step02_ToolCall/Program.cs | Updates tool call sample from Assistants to Responses path |
| dotnet/samples/AgentFrameworkMigration/OpenAIAssistants/Step01_Basics/Program.cs | Updates basics sample from Assistants to Responses path |
| dotnet/samples/AgentFrameworkMigration/OpenAI/Step03_DependencyInjection/Program.cs | Updates ChatClient sample to AsAIAgent and required using |
| dotnet/samples/AgentFrameworkMigration/OpenAI/Step02_ToolCall/Program.cs | Updates ChatClient tool call sample to sessions and AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/OpenAI/Step01_Basics/Program.cs | Updates ChatClient basics sample to sessions and AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIResponses/Step04_DependencyInjection/Program.cs | Updates Azure Responses DI sample to AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIResponses/Step03_ToolCall/Program.cs | Updates Azure Responses tool call sample to AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIResponses/Step02_ReasoningModel/Program.cs | Updates Azure Responses reasoning sample to sessions |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIResponses/Step01_Basics/Program.cs | Updates Azure Responses basics sample to sessions |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIAssistants/Step04_CodeInterpreter/Program.cs | Updates Azure Assistants migration sample to Responses path |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIAssistants/Step03_DependencyInjection/Program.cs | Updates Azure Assistants DI sample to Responses path |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIAssistants/Step02_ToolCall/Program.cs | Updates Azure Assistants tool call sample to Responses path |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAIAssistants/Step01_Basics/Program.cs | Updates Azure Assistants basics sample to Responses path |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAI/Step04_ToolCall_WithOpenAPI/Program.cs | Updates Azure ChatClient OpenAPI tool sample to AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAI/Step03_DependencyInjection/Program.cs | Updates Azure ChatClient DI sample to AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAI/Step02_ToolCall/Program.cs | Updates Azure ChatClient tool call sample to AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureOpenAI/Step01_Basics/Program.cs | Updates Azure ChatClient basics sample to sessions and AsAIAgent |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step04_CodeInterpreter/Program.cs | Updates Foundry sample to AIProjectClient and sessions |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step04_CodeInterpreter/AzureAIFoundry_Step04_CodeInterpreter.csproj | Updates Foundry sample package references for GA |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step03_DependencyInjection/Program.cs | Updates Foundry DI sample, now uses Responses path |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step03_DependencyInjection/AzureAIFoundry_Step03_DependencyInjection.csproj | Updates Foundry DI sample package references for GA |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step02_ToolCall/Program.cs | Updates Foundry tool call sample to AIProjectClient and sessions |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step02_ToolCall/AzureAIFoundry_Step02_ToolCall.csproj | Updates Foundry tool call sample package references for GA |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step01_Basics/Program.cs | Updates Foundry basics sample to AIProjectClient and sessions |
| dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step01_Basics/AzureAIFoundry_Step01_Basics.csproj | Updates Foundry basics sample package references for GA |
| dotnet/samples/AgentFrameworkMigration/AgentOrchestrations/Step03_Handoff/Program.cs | Updates workflows streaming API and event types |
| dotnet/samples/AgentFrameworkMigration/AgentOrchestrations/Step03_Handoff/AgentOrchestrations_Step03_Handoff.csproj | Updates orchestration packages to GA set |
| dotnet/samples/AgentFrameworkMigration/AgentOrchestrations/Step02_Sequential/Program.cs | Updates workflows streaming API and event types |
| dotnet/samples/AgentFrameworkMigration/AgentOrchestrations/Step02_Sequential/AgentOrchestrations_Step02_Sequential.csproj | Updates orchestration packages to GA set |
| dotnet/samples/AgentFrameworkMigration/AgentOrchestrations/Step01_Concurrent/Program.cs | Updates workflows streaming API and event types |
| dotnet/samples/AgentFrameworkMigration/AgentOrchestrations/Step01_Concurrent/AgentOrchestrations_Step01_Concurrent.csproj | Updates orchestration packages to GA set |
| dotnet/Directory.Packages.props | Bumps AF packages to 1.0.0 GA and renames Foundry package |
| .github/upgrades/prompts/SemanticKernelToAgentFramework.md | Updates migration guide content and examples for AF 1.0 GA |
Comments suppressed due to low confidence (1)
dotnet/src/Agents/Abstractions/AIAgent/SemanticKernelAIAgentThread.cs:22
- SemanticKernelAIAgentSession stores a thread serializer delegate but never uses it. Since callers (and unit tests) rely on session.Serialize(...) producing a JsonElement, this adapter should override the appropriate serialization method (or remove the delegate and update all callers to serialize via the agent API) so session serialization actually works.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...ts/CommonInterfaceConformance/SemanticKernelAIAgentConformance/SemanticKernelAIAgentTests.cs
Outdated
Show resolved
Hide resolved
...onInterfaceConformance/AgentWithTextSearchProviderConformance/AgentWithTextSearchProvider.cs
Show resolved
Hide resolved
...nterfaceConformance/AgentWithAIContextProviderConformance/AgentWithAIContextProviderTests.cs
Show resolved
Hide resolved
dotnet/samples/AgentFrameworkMigration/AzureAIFoundry/Step03_DependencyInjection/Program.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Automated Code Review
Reviewers: 4 | Confidence: 86%
✗ Correctness
This PR upgrades Microsoft.Agents.AI packages from preview to 1.0, renaming APIs throughout (CreateAIAgent→AsAIAgent, GetNewThread→CreateSessionAsync, AgentThread→AgentSession, AgentRunResponse→AgentResponse, etc.). The bulk of changes are consistent and correct. However, there are compilation errors in integration tests where
this.Fixture.GetNewThread()(returning SKAgentThread) was incorrectly changed tothis.Fixture.CreateSessionAsync()— a method that doesn't exist onAgentFixtureand would return the wrong type even if it did (these tests require SKAgentThreadwith itsAIContextProvidersproperty, not AFAgentSession). There is also a variable naming issue in the migration guide whereAgentResponse(PascalCase) shadows the type name.
✓ Security Reliability
This PR migrates from a preview version of Microsoft.Agents.AI packages to 1.0.0, renaming APIs (CreateAIAgent→AsAIAgent, GetNewThread→CreateSessionAsync, AgentThread→AgentSession, etc.) across documentation, samples, source, and tests. The changes are largely mechanical renames with no new security vulnerabilities introduced. The migration doc has a variable naming bug in a code sample that would confuse users copying the code. Several samples remove server-side resource cleanup when switching to non-hosted API paths, which is appropriate. The source code changes correctly adapt to the new base class shape (protected override Core methods). No secrets, injection risks, or unsafe deserialization patterns were found.
✓ Test Coverage
This PR updates the Semantic Kernel ↔ Agent Framework adapter layer from preview to v1.0 APIs, renaming classes (Thread→Session), methods (GetNewThread→CreateSessionAsync, RunAsync→RunCoreAsync), and types (AgentRunResponse→AgentResponse). Existing unit tests are properly renamed to match the new types. However, the newly introduced
SerializeSessionCoreAsyncmethod inSemanticKernelAIAgent—which includes an incompatible-session type check throwingInvalidOperationException—has no unit test coverage. Additionally, threeSerializetests inSemanticKernelAIAgentSessionTestsstill call.Serialize()on the session object, but the diff removes theSerialize()override fromSemanticKernelAIAgentSession, meaning these tests may now exercise base-class behavior rather than the intended serialization logic (which moved to the agent'sSerializeSessionCoreAsync). The integration tests inAgentWithAIContextProviderTestsandAgentWithTextSearchProvidercallthis.Fixture.CreateSessionAsync(), butAgentFixture.csis not updated in this diff and still only definesGetNewThread(), which could cause compilation failures.
✗ Design Approach
This PR tracks a breaking API rename in the Microsoft.Agents.AI 1.0.0 GA release:
CreateAIAgent()→AsAIAgent(),AgentThread/GetNewThread()→AgentSession/CreateSessionAsync(),AgentRunResponse→AgentResponse, andAgentRunResponseUpdate→AgentResponseUpdate. The package reference changes and method renames are mechanically correct. However, there are two significant design-level concerns: (1) a PascalCase variable namedAgentResponsein the migration prompt doc collides with the typeAgentResponse, which will produce broken/confusing code when users or AI tools copy this guide verbatim; (2) theAFAgentsections in theOpenAIAssistantsandAzureOpenAIAssistantssample folders have been silently redirected to use the Responses API instead of the Assistants API — the folder names and the SK side of each sample clearly indicate Assistants migration, but the AF side no longer demonstrates it. Step04_CodeInterpreter in both folders becomes functionally identical to Step01_Basics, making it a misleading stub. The migration doc also claimsAsAIAgent()is used to 'create new agents in the hosted service', which contradicts the synchronous, non-asyncAs*naming convention in .NET (which universally means 'cast/wrap', not 'provision remotely').
Flagged Issues
- Integration tests in AgentWithAIContextProviderTests.cs (lines 34, 68, 103, 133) and AgentWithTextSearchProvider.cs (line 58) call
this.Fixture.CreateSessionAsync(), which does not exist onAgentFixture(onlyGetNewThread()exists). These tests require SKAgentThreadfor itsAIContextProvidersproperty and must not be changed to use AFAgentSession. All five call sites will fail to compile and should be reverted tothis.Fixture.GetNewThread(). - In SemanticKernelToAgentFramework.md, the breaking-glass example uses
var AgentResponse = await agent.RunAsync(...)— a PascalCase identifier that shadows theAgentResponsetype. Code copied from this migration guide will either fail to compile or produce confusing naming. Should bevar agentResponse = ...(camelCase).
Suggestions
- Add unit tests for the new
SerializeSessionCoreAsyncmethod inSemanticKernelAIAgent, covering both theInvalidOperationExceptionwhen passed an incompatible session type and the happy path where it successfully delegates to_threadSerializer. - The
Serialize_CallsThreadSerializer,Serialize_WithJsonSerializerOptions_PassesOptionsToSerializer, andSerialize_WithNullOptions_CallsSerializerWithNulltests inSemanticKernelAIAgentSessionTestscall.Serialize()on the session, but theSerialize()override was removed fromSemanticKernelAIAgentSession(serialization moved to the agent'sSerializeSessionCoreAsync). Verify these tests still validate the intended serialization path or update them to test through the agent. - The AF sample functions in
OpenAIAssistants/Step01–03andAzureOpenAIAssistants/Step01–03now useGetResponsesClient().AsAIAgent()instead ofGetAssistantClient(). The folders are named '*Assistants' and the SK side demonstrates the Assistants API, so readers looking for the Assistants→AF migration path will find no AF equivalent using Assistants. Either keep aGetAssistantClient().GetAIAgent(id)example in the AF section, or rename the folders to reflect that the recommended AF path is Responses-based. - Step04_CodeInterpreter in
OpenAIAssistantsandAzureOpenAIAssistantsis now functionally identical to Step01_Basics — all code interpreter tool setup, breaking-glass extraction, and citations handling are removed. Either demonstrate code interpreter via a supported AF 1.0 path (e.g., Assistants API viaGetAssistantClient().GetAIAgent(existingId)) or explicitly remove/mark this step as 'not yet migrated'. - The migration doc states 'AsAIAgent(): Use when creating new agents in the hosted service', but in .NET idiom
As*is a synchronous cast/wrap that does not provision remote resources. Clarify whetherAsAIAgent()configures a lazily-created hosted agent or is purely a local wrapper, and update the wording to distinguish it fromGetAIAgent(id).
Automated review by rogerbarreto's agents
...nterfaceConformance/AgentWithAIContextProviderConformance/AgentWithAIContextProviderTests.cs
Outdated
Show resolved
Hide resolved
...nterfaceConformance/AgentWithAIContextProviderConformance/AgentWithAIContextProviderTests.cs
Outdated
Show resolved
Hide resolved
...nterfaceConformance/AgentWithAIContextProviderConformance/AgentWithAIContextProviderTests.cs
Outdated
Show resolved
Hide resolved
...nterfaceConformance/AgentWithAIContextProviderConformance/AgentWithAIContextProviderTests.cs
Outdated
Show resolved
Hide resolved
...onInterfaceConformance/AgentWithTextSearchProviderConformance/AgentWithTextSearchProvider.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Agents/UnitTests/AIAgent/SemanticKernelAIAgentThreadTests.cs
Outdated
Show resolved
Hide resolved
dotnet/samples/AgentFrameworkMigration/OpenAIAssistants/Step01_Basics/Program.cs
Outdated
Show resolved
Hide resolved
dotnet/samples/AgentFrameworkMigration/OpenAIAssistants/Step04_CodeInterpreter/Program.cs
Outdated
Show resolved
Hide resolved
- Replace GetAwaiter().GetResult() with await in async test methods - Fix lastResponseMessage never assigned in SemanticKernelAIAgent.RunCoreAsync - Revert incorrect AgentFixture.GetNewThread() renames (SK methods, not AF) - Fix remaining thread → session variable names in migration doc AF snippets - Update Foundry DI sample to use AIProjectClient instead of AzureOpenAIClient - Add explicit notes about Assistants → Responses migration path - Remove obsolete Serialize() tests from SemanticKernelAIAgentSessionTests (serialization moved to agent.SerializeSessionCoreAsync)
OpenAI Assistants API is deprecated and no longer supported by the Microsoft Agent Framework. Users should migrate to the Responses API instead (see OpenAIResponses and AzureOpenAIResponses samples).
dotnet/src/Agents/Abstractions/AIAgent/SemanticKernelAIAgentThread.cs
Outdated
Show resolved
Hide resolved
- Fix missing await on CreateSessionAsync/DeserializeSessionAsync/SerializeSessionAsync in SemanticKernelAIAgentTests integration test - Remove dead _threadSerializer field from SemanticKernelAIAgentSession (Sergey) - Simplify SemanticKernelAIAgentSession constructor (single param) - Fix migration doc: thread→session in comments (Sergey, lines 1288/1357) - Fix migration doc: undeclared thread variable (Sergey, line 1572) - Fix migration doc: PascalCase variable name (line 796) - Remove obsolete Serialize tests from SemanticKernelAIAgentSessionTests - Apply dotnet format - All 499 unit tests pass, 0 failures
Also apply dotnet format fixes.
| <ItemGroup> | ||
| <PackageReference Include="Microsoft.Agents.AI.Abstractions" /> | ||
| <PackageReference Include="Microsoft.Agents.AI.AzureAI" /> | ||
| <PackageReference Include="Microsoft.Agents.AI.OpenAI" /> |
There was a problem hiding this comment.
Are we using this? From the sample I would have thought we are only using foundry?
| <ItemGroup> | ||
| <PackageReference Include="Microsoft.Agents.AI.Abstractions" /> | ||
| <PackageReference Include="Microsoft.Agents.AI.AzureAI" /> | ||
| <PackageReference Include="Microsoft.Agents.AI.OpenAI" /> |
There was a problem hiding this comment.
Same here, looks like all foundry
And a few other samples below.
| @@ -1,35 +1,25 @@ | |||
| // Copyright (c) Microsoft. All rights reserved. | |||
There was a problem hiding this comment.
Remember to also rename the file.
Applied dotnet format via mcr.microsoft.com/dotnet/sdk:10.0 Docker image (matching CI pipeline). Fixes using statement ordering (System.Threading.Tasks) and removes unnecessary using directives (Azure.AI.OpenAI in Foundry samples).
- Remove unnecessary Microsoft.Agents.AI.OpenAI and Azure.AI.OpenAI from Foundry sample csproj files (AF sections use AIProjectClient only) - Remove unused 'using OpenAI.Responses' from Foundry .cs files - Rename SemanticKernelAIAgentThread.cs -> SemanticKernelAIAgentSession.cs - Rename SemanticKernelAIAgentThreadTests.cs -> SemanticKernelAIAgentSessionTests.cs - Apply dotnet format
Description
Updates the SK → Agent Framework migration document, samples, and bridge code from AF preview (
1.0.0-preview.251009.1) to GA (1.0.0).Breaking changes addressed
AgentThreadAgentSessionGetNewThread()CreateSessionAsync()AgentRunResponseAgentResponseAgentRunResponseUpdateAgentResponseUpdateCreateAIAgent()AsAIAgent()AssistantClient.CreateAIAgentAsync()PersistentAgentsClientAIProjectClientviaMicrosoft.Agents.AI.FoundryMicrosoft.Agents.AI.AzureAIMicrosoft.Agents.AI.FoundryInProcessExecution.StreamAsyncRunStreamingAsyncAgentRunUpdateEventAgentResponseUpdateEventAIAgent.Id(virtual)IdCore(protected virtual)Additional discoveries
using OpenAI.Chat;required forChatClient.AsAIAgent()extension to resolveusing OpenAI.Responses;required forResponsesClient.AsAIAgent()extension to resolveWhat changed
Package versions (
dotnet/Directory.Packages.props)1.0.0Microsoft.Agents.AI.AzureAI→Microsoft.Agents.AI.FoundryBridge code (
dotnet/src/Agents/Abstractions/AIAgent/)SemanticKernelAIAgent.cs: NewCoremethod overrides (CreateSessionCoreAsync,RunCoreAsync, etc.)SemanticKernelAIAgentThread→SemanticKernelAIAgentSession(extendsAgentSession)31 migration samples (all compile ✅)
AsAIAgent,CreateSessionAsync,using OpenAI.Chat;ResponsesClient.AsAIAgent()AIProjectClient.AsAIAgent()viaMicrosoft.Agents.AI.FoundryRunStreamingAsync,AgentResponseUpdateEventMigration document (
.github/upgrades/prompts/SemanticKernelToAgentFramework.md)Unit/integration tests (~15 files)
AgentSession,AgentResponse,CreateSessionAsyncValidation
8 standalone console programs were created and executed against AF 1.0.0 NuGet packages with real API keys, validating all migration patterns end-to-end: