Skip to content

Commit cddf55b

Browse files
committed
cleanup
Signed-off-by: Dmitrii Tikhomirov <[email protected]>
1 parent 56f5879 commit cddf55b

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/AgentWorkflowBuilder.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import dev.langchain4j.agentic.scope.AgenticScope;
1919
import io.serverlessworkflow.api.types.TaskItem;
20+
import io.serverlessworkflow.api.types.Workflow;
2021
import io.serverlessworkflow.fluent.func.spi.FuncTransformations;
2122
import io.serverlessworkflow.fluent.spec.BaseWorkflowBuilder;
2223
import java.util.ArrayList;
@@ -29,8 +30,11 @@ public class AgentWorkflowBuilder
2930
extends BaseWorkflowBuilder<AgentWorkflowBuilder, AgentDoTaskBuilder, AgentTaskItemListBuilder>
3031
implements FuncTransformations<AgentWorkflowBuilder> {
3132

33+
private final List<AgentDoTaskBuilder> agentDoTaskBuilders;
34+
3235
AgentWorkflowBuilder(final String name, final String namespace, final String version) {
3336
super(name, namespace, version);
37+
agentDoTaskBuilders = new ArrayList<>();
3438
}
3539

3640
public static AgentWorkflowBuilder workflow() {
@@ -53,7 +57,7 @@ public AgentWorkflowBuilder agent(Object agent) {
5357
public AgentWorkflowBuilder agent(String name, Object agent) {
5458
final AgentDoTaskBuilder doTaskBuilder = this.newDo();
5559
doTaskBuilder.agent(name, agent);
56-
setDo(doTaskBuilder);
60+
agentDoTaskBuilders.add(doTaskBuilder);
5761
return this;
5862
}
5963

@@ -64,7 +68,7 @@ public AgentWorkflowBuilder sequence(Object... agents) {
6468
public AgentWorkflowBuilder sequence(String name, Object... agents) {
6569
final AgentDoTaskBuilder doTaskBuilder = this.newDo();
6670
doTaskBuilder.sequence(name, agents);
67-
setDo(doTaskBuilder);
71+
agentDoTaskBuilders.add(doTaskBuilder);
6872
return this;
6973
}
7074

@@ -75,7 +79,7 @@ public AgentWorkflowBuilder parallel(Object... agents) {
7579
public AgentWorkflowBuilder parallel(String name, Object... agents) {
7680
final AgentDoTaskBuilder doTaskBuilder = this.newDo();
7781
doTaskBuilder.parallel(name, agents);
78-
setDo(doTaskBuilder);
82+
agentDoTaskBuilders.add(doTaskBuilder);
7983
return this;
8084
}
8185

@@ -87,7 +91,7 @@ public AgentWorkflowBuilder loop(
8791
String name, Predicate<AgenticScope> exitCondition, Object... agents) {
8892
final AgentDoTaskBuilder doTaskBuilder = this.newDo();
8993
doTaskBuilder.loop(name, loop -> loop.subAgents(agents).exitCondition(exitCondition));
90-
setDo(doTaskBuilder);
94+
agentDoTaskBuilders.add(doTaskBuilder);
9195
return this;
9296
}
9397

@@ -101,13 +105,14 @@ protected AgentWorkflowBuilder self() {
101105
return this;
102106
}
103107

104-
private void setDo(AgentDoTaskBuilder doTaskBuilder) {
105-
if (workflow.getDo() != null) {
106-
List<TaskItem> existing = new ArrayList<>(workflow.getDo());
107-
existing.addAll(doTaskBuilder.build().getDo());
108-
this.workflow.setDo(Collections.unmodifiableList(existing));
109-
} else {
110-
this.workflow.setDo(doTaskBuilder.build().getDo());
111-
}
108+
@Override
109+
public Workflow build() {
110+
List<TaskItem> items = new ArrayList<>(workflow.getDo());
111+
this.agentDoTaskBuilders.stream()
112+
.map(AgentDoTaskBuilder::build)
113+
.forEach(b -> items.addAll(b.getDo()));
114+
this.workflow.setDo(Collections.unmodifiableList(items));
115+
this.agentDoTaskBuilders.clear();
116+
return this.workflow;
112117
}
113118
}

0 commit comments

Comments
 (0)