Uh oh!
There was an error while loading. Please reload this page.
.NET: [BREAKING] Change *Provider StateKey to list of StateKeys - #4395
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the .NET agent provider abstractions to support multiple state keys per provider (rather than assuming a single key), and adjusts agent validation plus tests/samples accordingly.
Changes:
- Replace
StateKeywithStateKeys : IReadOnlyList<string>onAIContextProviderandChatHistoryProvider(and update concrete providers). - Update
ChatClientAgentvalidation logic to detect key clashes across all declared state keys. - Update unit tests and samples to use
StateKeys.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| dotnet/src/Microsoft.Agents.AI.Abstractions/AIContextProvider.cs | Switch provider state identifier to multi-key StateKeys. |
| dotnet/src/Microsoft.Agents.AI.Abstractions/ChatHistoryProvider.cs | Switch provider state identifier to multi-key StateKeys. |
| dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgent.cs | Validate uniqueness/clashes across all keys (including override provider validation). |
| dotnet/src/Microsoft.Agents.AI/TextSearchProvider.cs | Implement StateKeys for TextSearchProvider. |
| dotnet/src/Microsoft.Agents.AI/Memory/ChatHistoryMemoryProvider.cs | Implement StateKeys for ChatHistoryMemoryProvider. |
| dotnet/src/Microsoft.Agents.AI.Abstractions/InMemoryChatHistoryProvider.cs | Implement StateKeys for InMemoryChatHistoryProvider. |
| dotnet/src/Microsoft.Agents.AI.CosmosNoSql/CosmosChatHistoryProvider.cs | Implement StateKeys for CosmosChatHistoryProvider. |
| dotnet/src/Microsoft.Agents.AI.Mem0/Mem0Provider.cs | Implement StateKeys for Mem0Provider. |
| dotnet/src/Microsoft.Agents.AI.FoundryMemory/FoundryMemoryProvider.cs | Implement StateKeys for FoundryMemoryProvider. |
| dotnet/src/Microsoft.Agents.AI.Workflows/WorkflowChatHistoryProvider.cs | Implement StateKeys for WorkflowChatHistoryProvider. |
| dotnet/tests/Microsoft.Agents.AI.UnitTests/Memory/ChatHistoryMemoryProviderTests.cs | Update assertions to StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.UnitTests/Data/TextSearchProviderTests.cs | Update assertions to StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgentTests.cs | Update tests/messages for new key validation behavior. |
| dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgent_BackgroundResponsesTests.cs | Update mocks to provide StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgent_ChatHistoryManagementTests.cs | Update mocks to provide StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.UnitTests/AIContextProviderDecorators/AIContextProviderChatClientTests.cs | Update test provider override to StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.Mem0.UnitTests/Mem0ProviderTests.cs | Update assertions to StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.CosmosNoSql.UnitTests/CosmosChatHistoryProviderTests.cs | Update assertions to StateKeys. |
| dotnet/tests/Microsoft.Agents.AI.Abstractions.UnitTests/InMemoryChatHistoryProviderTests.cs | Update assertions to StateKeys. |
| dotnet/samples/01-get-started/04_memory/Program.cs | Update sample provider override to StateKeys. |
| dotnet/samples/02-agents/Agents/Agent_Step04_3rdPartyChatHistoryStorage/Program.cs | Update sample provider override to StateKeys. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Motivation and Context
It's not good to assume that AIContextProviders and ChatHistoryProviders will only use a single state key. This is especially relevant if one of these becomes a proxy for multiple internal providers, in which case each would have their own keys, and these would all need to be surfaced.
Description
string StateKeytoIReadOnlyList<string> StateKeysto allow multiple state keys per *provider.Contribution Checklist