refactor(context): simplify constructor and inputs encoding of running flow context

This commit is contained in:
2026-04-15 15:45:42 +08:00
parent dc147000ba
commit d8ff0b5ea4
5 changed files with 44 additions and 119 deletions

View File

@@ -69,7 +69,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
@Override
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
String input = context.encodeInputsXml();
String input = context.encodeInputsBlock().encodeToXmlString();
Result<ExtractorResult> result = actionExtractor.execute(input)
.onFailure(exp -> {
ExceptionReporterHandler.INSTANCE.report(exp, ContextExceptionReporter.REPORTER_NAME);

View File

@@ -129,7 +129,7 @@ public class CommunicationProducer extends AbstractAgentModule.Running<PartnerRu
Element root = document.createElement("input");
document.appendChild(root);
runningFlowContext.appendInputsXml(document, root);
document.appendChild(document.importNode(runningFlowContext.encodeInputsBlock().encodeToXml(), true));
appendTextElement(document, root, "source", runningFlowContext.getSource());
for (Map.Entry<String, String> entry : runningFlowContext.getAdditionalUserInfo().entrySet()) {
appendTextElement(document, root, sanitizeTagName(entry.getKey()), entry.getValue());

View File

@@ -1,15 +1,15 @@
package work.slhaf.partner.runtime
import org.w3c.dom.Document
import org.w3c.dom.Element
import work.slhaf.partner.common.base.Block
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
class PartnerRunningFlowContext private constructor(
override val source: String,
inputs: List<InputEntry>,
firstInputEpochMillis: Long,
additionalUserInfo: Map<String, String> = emptyMap(),
skippedModules: Set<String> = emptySet(),
target: String = source
) : RunningFlowContext(inputs, firstInputEpochMillis, additionalUserInfo, skippedModules, target) {
firstInputEpochMillis: Long
) : RunningFlowContext(inputs, firstInputEpochMillis) {
companion object {
@@ -31,6 +31,7 @@ class PartnerRunningFlowContext private constructor(
}
@JvmStatic
@JvmOverloads
fun fromUser(userId: String, input: String, receivedAtMillis: Long = System.currentTimeMillis()) =
PartnerRunningFlowContext(
SourceTag.buildUserSource(userId),
@@ -39,6 +40,7 @@ class PartnerRunningFlowContext private constructor(
)
@JvmStatic
@JvmOverloads
fun fromSelf(input: String, receivedAtMillis: Long = System.currentTimeMillis()) =
PartnerRunningFlowContext(
SourceTag.buildAgentSource(),
@@ -50,20 +52,21 @@ class PartnerRunningFlowContext private constructor(
}
}
override fun copyWith(
inputs: List<InputEntry>,
firstInputEpochMillis: Long,
additionalUserInfo: Map<String, String>,
skippedModules: Set<String>,
target: String
): RunningFlowContext {
override fun recreate(inputs: List<InputEntry>): RunningFlowContext {
return PartnerRunningFlowContext(
source = source,
inputs = inputs,
firstInputEpochMillis = firstInputEpochMillis,
additionalUserInfo = additionalUserInfo,
skippedModules = skippedModules,
target = target
firstInputEpochMillis = System.currentTimeMillis()
)
}
fun encodeInputsBlock(): Block = object : Block("inputs") {
override fun fillXml(document: Document, root: Element) {
appendRepeatedElements(document, root, "input", inputs) {
this.setAttribute("interval-to-first", it.offsetMillis.toString())
this.textContent = it.content
}
}
}
}