diff --git a/experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/dsl/AgenticDSL.java b/experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/dsl/AgenticDSL.java index 052dd807..f6505ef0 100644 --- a/experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/dsl/AgenticDSL.java +++ b/experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/dsl/AgenticDSL.java @@ -113,6 +113,10 @@ public static AgentTaskConfigurer sequence(Object... agents) { return list -> list.sequence(agents); } + public static AgentTaskConfigurer sequence(Predicate predicate, Object... agents) { + return list -> list.sequence(agents).when(predicate); + } + public static AgentTaskConfigurer loop(Predicate exitCondition, Object... agents) { return list -> list.loop(l -> l.subAgents(agents).exitCondition(exitCondition)); } @@ -121,6 +125,10 @@ public static AgentTaskConfigurer parallel(Object... agents) { return list -> list.parallel(agents); } + public static AgentTaskConfigurer parallel(Predicate predicate, Object... agents) { + return list -> list.parallel(agents).when(predicate); + } + // --------- Tasks ------ // public static Consumer doTasks(AgentTaskConfigurer... steps) { Objects.requireNonNull(steps, "Steps in a tasks are required"); @@ -140,6 +148,10 @@ public static AgentTaskConfigurer agent(Object agent) { return list -> list.agent(agent); } + public static AgentTaskConfigurer conditional(Predicate predicate, Object agent) { + return list -> list.agent(agent).when(predicate); + } + public static AgentTaskConfigurer emit(Consumer event) { return list -> list.emit(event); }