Skip to content

Commit 845941d

Browse files
committed
Add bipredicate to exitCondition
Signed-off-by: Ricardo Zanini <[email protected]>
1 parent 575aacb commit 845941d

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

experimental/fluent/agentic-langchain4j/src/main/java/io/serverlessworkflow/fluent/agentic/langchain4j/LoopAgentServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public LoopAgentService<T> exitCondition(Predicate<AgenticScope> exitCondition)
5353

5454
@Override
5555
public LoopAgentService<T> exitCondition(BiPredicate<AgenticScope, Integer> biPredicate) {
56-
throw new UnsupportedOperationException(
57-
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
56+
this.loopAgentsBuilder.exitCondition(biPredicate);
57+
return this;
5858
}
5959

6060
@Override

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import dev.langchain4j.agentic.scope.DefaultAgenticScope;
2323
import io.serverlessworkflow.api.types.func.LoopPredicateIndex;
2424
import java.util.List;
25+
import java.util.function.BiPredicate;
2526
import java.util.function.Function;
2627
import java.util.function.Predicate;
2728

@@ -40,4 +41,9 @@ public static Function<DefaultAgenticScope, Object> toFunction(AgentExecutor exe
4041
public static LoopPredicateIndex<AgenticScope, Object> toWhile(Predicate<AgenticScope> exit) {
4142
return (model, item, idx) -> !exit.test(model);
4243
}
44+
45+
public static LoopPredicateIndex<AgenticScope, Object> toWhile(
46+
BiPredicate<AgenticScope, Integer> exit) {
47+
return (model, item, idx) -> !exit.test(model, idx);
48+
}
4349
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import io.serverlessworkflow.fluent.func.FuncTaskItemListBuilder;
2323
import java.util.List;
2424
import java.util.UUID;
25+
import java.util.function.BiPredicate;
2526
import java.util.function.ObjIntConsumer;
2627
import java.util.function.Predicate;
2728
import java.util.stream.IntStream;
@@ -65,6 +66,11 @@ public LoopAgentsBuilder exitCondition(Predicate<AgenticScope> exitCondition) {
6566
return this;
6667
}
6768

69+
public LoopAgentsBuilder exitCondition(BiPredicate<AgenticScope, Integer> exitCondition) {
70+
this.forTask.withWhile(AgentAdapters.toWhile(exitCondition), AgenticScope.class);
71+
return this;
72+
}
73+
6874
public ForTaskFunction build() {
6975
this.forTask.setDo(this.funcDelegate.build());
7076
return this.forTask;

0 commit comments

Comments
 (0)