From f56ff7d7196da7ab041a16e74dfabbcf8d62dc3e Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Mon, 23 Feb 2026 21:53:37 +0800 Subject: [PATCH] refactor(framework): rework `AgentContext` capability storage to group implementations by capability and include method metadata --- .../api/agent/factory/context/AgentContext.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/context/AgentContext.kt b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/context/AgentContext.kt index 7d1dd011..45ffec1f 100644 --- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/context/AgentContext.kt +++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/factory/context/AgentContext.kt @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray import com.alibaba.fastjson2.JSONObject import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent +import java.lang.reflect.Method import java.time.ZonedDateTime object AgentContext { @@ -15,9 +16,9 @@ object AgentContext { get() = _modules private val _capabilities = - mutableMapOf, Any>() + mutableMapOf>() - val capabilities: Map, Any> + val capabilities: Map> get() = _capabilities private val _additionalComponents = mutableSetOf() @@ -34,8 +35,10 @@ object AgentContext { _modules[name] = module } - fun addCapability(value: Any) { - _capabilities[value::class.java] = value + fun addCapability(capability: String, instance: Any, methods: Map) { + val capabilityImpls = _capabilities.computeIfAbsent(capability) { mutableSetOf() } + val newImpl = CapabilityImplementation(instance.javaClass, instance, methods) + capabilityImpls.add(newImpl) } fun addAdditionalComponent(instance: Any): Boolean { @@ -56,6 +59,12 @@ object AgentContext { val clazz: Class<*>, val value: String ) + + data class CapabilityImplementation( + val clazz: Class<*>, + val instance: Any, + val methods: Map + ) } sealed class ModuleContextData {