-
Notifications
You must be signed in to change notification settings - Fork 0
Add Context-Aware Plugin Metadata Architecture Decision Record #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
@copilot This issue is not about how the current solution works. But design adding support for the newly release agentic framework in semantic kernel and how that would work.!! |
Understood. I'll create a design document exploring how SemanticPluginForge could integrate with Semantic Kernel's newly released agentic framework, rather than documenting the current solution's internals. |
Co-authored-by: lsiddiquee <15940466+lsiddiquee@users.noreply.github.com>
|
@copilot this shoudl not be in docs but in adr folder |
Co-authored-by: lsiddiquee <15940466+lsiddiquee@users.noreply.github.com>
Co-authored-by: lsiddiquee <15940466+lsiddiquee@users.noreply.github.com>
Co-authored-by: lsiddiquee <15940466+lsiddiquee@users.noreply.github.com>
| var kernel = builder.Build(); | ||
|
|
||
| // Register agent context for plugin resolution | ||
| kernel.Data[AgentContextKey] = new AgentContext |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot why is this agent context required here? I assume that the agentcontext is passed when the plugin is registered.
Also generalizing, what if we create an interface IPluginContext and use that for context and we can create a concrete AgentContext which can be used for Agentic this will allow users to pass any custom metadata/context they want?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Refactored to introduce IPluginContext interface for extensibility. Context is now passed only at plugin registration time via AddFromTypeWithContext() or AddFromTypeForAgent(). Removed kernel-level context storage entirely - no more global state. AgentContext is now just one implementation of IPluginContext, enabling custom context types for multi-tenancy, user-specific configs, or any other scenario. (commit in progress)
…egistration Co-authored-by: lsiddiquee <15940466+lsiddiquee@users.noreply.github.com>
Architecture Decision Record (ADR) exploring how SemanticPluginForge can support context-aware plugin metadata customization through a flexible, extensible interface design. While designed with Semantic Kernel's agentic framework in mind, the solution supports any context-based scenario including multi-tenancy, user-specific configurations, and session-based customizations.
Changes Made
Created ADR-0001 (
adr/0001-agentic-framework-integration.md) following Architecture Decision Record conventions with:IPluginContextinterface pattern with extensible context typesArchitecture and Design:
IPluginContextinterface as base for all context types, enabling custom implementationsAgentContextimplementsIPluginContextfor agent-specific scenariosIContextAwarePluginMetadataProviderinterface (withIAgentPluginMetadataProvideras convenience alias)API Extensions:
AddFromTypeWithContext<T>(IPluginContext context)- general method for any context typeAddFromTypeForAgent<T>(string agentName)- convenience method for agent scenariosservices.AddSingleton<IContextAwarePluginMetadataProvider>()Documented use cases:
Implementation considerations:
Simplified Design:
AgentContextcontains onlyAgentNameandProperties(removedAgentIdandAgentRole)Extensibility Features:
IPluginContextinterfaceIPluginMetadataProviderfor context-unaware scenariosMigration path: Shows how existing SemanticPluginForge users can adopt context-aware plugins while maintaining backward compatibility
Testing strategy: Includes unit tests, integration tests, and multi-agent scenario tests
ADR infrastructure: Created
adr/README.mdto document the ADR directory structure and indexThe ADR provides a complete blueprint for extending SemanticPluginForge with flexible, context-aware metadata customization that supports agents, multi-tenancy, user-specific configurations, and any custom context scenario through a clean, extensible interface design.
Fixes #23
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.