refactor(framework): rework AgentContext capability storage to group implementations by capability and include method metadata

This commit is contained in:
2026-02-23 21:53:37 +08:00
parent fd9b376afa
commit f56ff7d719

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray
import com.alibaba.fastjson2.JSONObject import com.alibaba.fastjson2.JSONObject
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import java.lang.reflect.Method
import java.time.ZonedDateTime import java.time.ZonedDateTime
object AgentContext { object AgentContext {
@@ -15,9 +16,9 @@ object AgentContext {
get() = _modules get() = _modules
private val _capabilities = private val _capabilities =
mutableMapOf<Class<*>, Any>() mutableMapOf<String, MutableSet<CapabilityImplementation>>()
val capabilities: Map<Class<*>, Any> val capabilities: Map<String, Set<CapabilityImplementation>>
get() = _capabilities get() = _capabilities
private val _additionalComponents = mutableSetOf<Any>() private val _additionalComponents = mutableSetOf<Any>()
@@ -34,8 +35,10 @@ object AgentContext {
_modules[name] = module _modules[name] = module
} }
fun addCapability(value: Any) { fun addCapability(capability: String, instance: Any, methods: Map<String, Method>) {
_capabilities[value::class.java] = value val capabilityImpls = _capabilities.computeIfAbsent(capability) { mutableSetOf() }
val newImpl = CapabilityImplementation(instance.javaClass, instance, methods)
capabilityImpls.add(newImpl)
} }
fun addAdditionalComponent(instance: Any): Boolean { fun addAdditionalComponent(instance: Any): Boolean {
@@ -56,6 +59,12 @@ object AgentContext {
val clazz: Class<*>, val clazz: Class<*>,
val value: String val value: String
) )
data class CapabilityImplementation(
val clazz: Class<*>,
val instance: Any,
val methods: Map<String, Method>
)
} }
sealed class ModuleContextData<out T : AbstractAgentModule> { sealed class ModuleContextData<out T : AbstractAgentModule> {