diff --git a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/AgentLifecycleEvaluator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/AgentLifecycleEvaluator.java index 9eb15d6e..7171ce61 100644 --- a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/AgentLifecycleEvaluator.java +++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/AgentLifecycleEvaluator.java @@ -64,13 +64,13 @@ public class AgentLifecycleEvaluator implements ConditionEvaluator matches = eventRepo.findInWindow( envSlug, appSlug, agentId, typeNames, from, to, MAX_EVENTS_PER_TICK); - if (matches.isEmpty()) return new EvalResult.Batch(List.of()); + if (matches.isEmpty()) return new EvalResult.Batch(List.of(), Map.of()); List firings = new ArrayList<>(matches.size()); for (AgentEventRecord ev : matches) { firings.add(toFiring(ev)); } - return new EvalResult.Batch(firings); + return new EvalResult.Batch(firings, Map.of()); } private static EvalResult.Firing toFiring(AgentEventRecord ev) { diff --git a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/EvalResult.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/EvalResult.java index 209293e5..1e4c144f 100644 --- a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/EvalResult.java +++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/EvalResult.java @@ -17,9 +17,14 @@ public sealed interface EvalResult { record Error(Throwable cause) implements EvalResult {} - record Batch(List firings) implements EvalResult { + record Batch(List firings, Map nextEvalState) implements EvalResult { public Batch { firings = firings == null ? List.of() : List.copyOf(firings); + nextEvalState = nextEvalState == null ? Map.of() : Map.copyOf(nextEvalState); + } + /** Convenience: a Batch with no cursor update (first-run empty, or no matches). */ + public static Batch empty() { + return new Batch(List.of(), Map.of()); } } } diff --git a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/ExchangeMatchEvaluator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/ExchangeMatchEvaluator.java index f7451483..d45bdd99 100644 --- a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/ExchangeMatchEvaluator.java +++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/ExchangeMatchEvaluator.java @@ -116,7 +116,7 @@ public class ExchangeMatchEvaluator implements ConditionEvaluator result = searchIndex.search(req); List matches = result.data(); - if (matches.isEmpty()) return new EvalResult.Batch(List.of()); + if (matches.isEmpty()) return new EvalResult.Batch(List.of(), Map.of()); // Find the latest startTime across all matches — becomes the next cursor Instant latestTs = matches.stream() @@ -144,6 +144,6 @@ public class ExchangeMatchEvaluator implements ConditionEvaluator