mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
refactor(framework): add additional component storage and guarded registration in AgentContext
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package work.slhaf.partner.api.agent.factory.context
|
package work.slhaf.partner.api.agent.factory.context
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONArray
|
import com.alibaba.fastjson2.JSONArray
|
||||||
|
import work.slhaf.partner.api.agent.factory.AgentComponent
|
||||||
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule
|
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule
|
||||||
import java.time.ZonedDateTime
|
import java.time.ZonedDateTime
|
||||||
|
|
||||||
@@ -18,6 +19,11 @@ object AgentContext {
|
|||||||
val capabilities: Map<Class<*>, Any?>
|
val capabilities: Map<Class<*>, Any?>
|
||||||
get() = _capabilities
|
get() = _capabilities
|
||||||
|
|
||||||
|
private val _additionalComponents = mutableSetOf<Any>()
|
||||||
|
|
||||||
|
val additionalComponents: Set<Any>
|
||||||
|
get() = _additionalComponents
|
||||||
|
|
||||||
val metadata: MutableMap<String, Any> = mutableMapOf()
|
val metadata: MutableMap<String, Any> = mutableMapOf()
|
||||||
|
|
||||||
fun addModule(name: String, module: ModuleContextData<AbstractAgentModule>) {
|
fun addModule(name: String, module: ModuleContextData<AbstractAgentModule>) {
|
||||||
@@ -27,6 +33,17 @@ object AgentContext {
|
|||||||
fun <T> addCapability(type: Class<T>, value: T) {
|
fun <T> addCapability(type: Class<T>, value: T) {
|
||||||
_capabilities[type] = value
|
_capabilities[type] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <T> addAdditionalComponent(type: Class<T>, value: T): Boolean {
|
||||||
|
if (type.isAnnotationPresent(AgentComponent::class.java)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (value == null) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
_additionalComponents.add(value)
|
||||||
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ModuleContextData<out T : AbstractAgentModule> {
|
sealed class ModuleContextData<out T : AbstractAgentModule> {
|
||||||
|
|||||||
Reference in New Issue
Block a user