1616package io .serverlessworkflow .fluent .agentic ;
1717
1818import dev .langchain4j .agentic .scope .AgenticScope ;
19+ import io .serverlessworkflow .api .types .TaskItem ;
1920import io .serverlessworkflow .fluent .func .spi .FuncTransformations ;
2021import io .serverlessworkflow .fluent .spec .BaseWorkflowBuilder ;
22+ import java .util .ArrayList ;
23+ import java .util .Collections ;
24+ import java .util .List ;
2125import java .util .UUID ;
2226import java .util .function .Predicate ;
2327
@@ -49,7 +53,7 @@ public AgentWorkflowBuilder agent(Object agent) {
4953 public AgentWorkflowBuilder agent (String name , Object agent ) {
5054 final AgentDoTaskBuilder doTaskBuilder = this .newDo ();
5155 doTaskBuilder .agent (name , agent );
52- this . workflow . setDo (doTaskBuilder . build (). getDo () );
56+ setDo (doTaskBuilder );
5357 return this ;
5458 }
5559
@@ -60,7 +64,7 @@ public AgentWorkflowBuilder sequence(Object... agents) {
6064 public AgentWorkflowBuilder sequence (String name , Object ... agents ) {
6165 final AgentDoTaskBuilder doTaskBuilder = this .newDo ();
6266 doTaskBuilder .sequence (name , agents );
63- this . workflow . setDo (doTaskBuilder . build (). getDo () );
67+ setDo (doTaskBuilder );
6468 return this ;
6569 }
6670
@@ -71,7 +75,7 @@ public AgentWorkflowBuilder parallel(Object... agents) {
7175 public AgentWorkflowBuilder parallel (String name , Object ... agents ) {
7276 final AgentDoTaskBuilder doTaskBuilder = this .newDo ();
7377 doTaskBuilder .parallel (name , agents );
74- this . workflow . setDo (doTaskBuilder . build (). getDo () );
78+ setDo (doTaskBuilder );
7579 return this ;
7680 }
7781
@@ -83,7 +87,7 @@ public AgentWorkflowBuilder loop(
8387 String name , Predicate <AgenticScope > exitCondition , Object ... agents ) {
8488 final AgentDoTaskBuilder doTaskBuilder = this .newDo ();
8589 doTaskBuilder .loop (name , loop -> loop .subAgents (agents ).exitCondition (exitCondition ));
86- this . workflow . setDo (doTaskBuilder . build (). getDo () );
90+ setDo (doTaskBuilder );
8791 return this ;
8892 }
8993
@@ -96,4 +100,14 @@ protected AgentDoTaskBuilder newDo() {
96100 protected AgentWorkflowBuilder self () {
97101 return this ;
98102 }
103+
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+ }
112+ }
99113}
0 commit comments