mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(framework): redesign AgentContext to store typed module contexts and runtime metadata
This commit is contained in:
@@ -2,26 +2,49 @@ 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.module.abstracts.AbstractAgentModule
|
import work.slhaf.partner.api.agent.factory.module.abstracts.AbstractAgentModule
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext
|
||||||
|
import java.time.ZonedDateTime
|
||||||
|
|
||||||
object AgentContext {
|
object AgentContext {
|
||||||
|
val modules = mutableMapOf<String, ModuleContextData<out AbstractAgentModule>>()
|
||||||
|
val capabilities = mutableMapOf<Class<Any>, Any>()
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ModuleContextData<T : AbstractAgentModule> {
|
sealed class ModuleContextData<T : AbstractAgentModule> {
|
||||||
abstract val name: String
|
|
||||||
abstract val clazz: Class<T>
|
abstract val clazz: Class<T>
|
||||||
abstract val instance: T
|
abstract val instance: T
|
||||||
abstract val prompt: JSONArray
|
abstract val launchTime: ZonedDateTime
|
||||||
abstract val modelActivated: Boolean
|
|
||||||
|
|
||||||
data class RunningModule<T : AbstractAgentModule>(
|
val modelInfo: ModelInfo? = null
|
||||||
override val name: String,
|
val metadata = mutableMapOf<String, Any>()
|
||||||
|
|
||||||
|
data class Running<T : AbstractAgentModule.Running<out RunningFlowContext>>(
|
||||||
override val clazz: Class<T>,
|
override val clazz: Class<T>,
|
||||||
override val instance: T,
|
override val instance: T,
|
||||||
override val prompt: JSONArray,
|
override val launchTime: ZonedDateTime,
|
||||||
override val modelActivated: Boolean,
|
|
||||||
|
|
||||||
val order: Int
|
val order: Int
|
||||||
) : ModuleContextData<T>()
|
) : ModuleContextData<T>()
|
||||||
|
|
||||||
|
data class Sub<T : AbstractAgentModule.Sub<out Any, out Any>>(
|
||||||
|
override val clazz: Class<T>,
|
||||||
|
override val instance: T,
|
||||||
|
override val launchTime: ZonedDateTime,
|
||||||
|
|
||||||
|
val injectTarget: MutableSet<AbstractAgentModule> = mutableSetOf()
|
||||||
|
) : ModuleContextData<T>()
|
||||||
|
|
||||||
|
data class Standalone<T : AbstractAgentModule.Standalone>(
|
||||||
|
override val clazz: Class<T>,
|
||||||
|
override val instance: T,
|
||||||
|
override val launchTime: ZonedDateTime,
|
||||||
|
|
||||||
|
val injectTarget: MutableSet<AbstractAgentModule> = mutableSetOf()
|
||||||
|
) : ModuleContextData<T>()
|
||||||
|
|
||||||
|
data class ModelInfo(
|
||||||
|
val baseUrl: String,
|
||||||
|
val model: String,
|
||||||
|
val basePrompt: JSONArray
|
||||||
|
)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user