From f1848fece425696f4bdd241f1b80e355c83f36d1 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Tue, 3 Mar 2026 20:29:23 +0800 Subject: [PATCH] refactor(framework): cache running modules in `AgentInteractionAdapter` and add refresh method --- .../interaction/AgentInteractionAdapter.kt | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentInteractionAdapter.kt b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentInteractionAdapter.kt index 7239edeb..01b6a2ae 100644 --- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentInteractionAdapter.kt +++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/interaction/AgentInteractionAdapter.kt @@ -15,6 +15,27 @@ abstract class AgentInteractionAdapter>>> = emptyMap() + + fun refreshRunningModules() { + val newMap = buildRunningModules() + runningModules = newMap + } + + private fun buildRunningModules(): + Map>>> { + return AgentContext.modules + .values + .filterIsInstance>>() + .filter { it.enabled } + .groupBy { it.order } + .toSortedMap() + } + } + fun submit(inputData: I): O { val finalInputData: C = parseInputData(inputData) val outputContext: C = call(finalInputData) @@ -22,15 +43,10 @@ abstract class AgentInteractionAdapter>>>() - AgentContext.modules - .filter { ModuleContextData.Running::class.java.isAssignableFrom(it.value.javaClass) } - .map { it.value as ModuleContextData.Running> } - .filter { it.enabled } - .sortedBy { it.order } - .forEach { runningModules.computeIfAbsent(it.order) { mutableListOf() }.add(it) } + if (runningModules.isEmpty()) { + buildRunningModules() + } try { for (modules in runningModules.values) { @@ -45,8 +61,9 @@ abstract class AgentInteractionAdapter>>, + modules: List>>, runningFlowContext: C ) {