Package dev.agenor.core.guardrail
Interface GuardrailResult
- All Known Implementing Classes:
GuardrailResult.Blocked,GuardrailResult.Modified,GuardrailResult.Passed
public sealed interface GuardrailResult
permits GuardrailResult.Passed, GuardrailResult.Modified, GuardrailResult.Blocked
Result produced by a guardrail evaluation.
Three mutually exclusive outcomes are modeled as records inside this sealed
interface, enabling exhaustive switch expressions with full compiler
enforcement (Java 21+):
GuardrailResult result = guardrail.apply(input, ctx).join();
String output = switch (result) {
case GuardrailResult.Passed p -> input;
case GuardrailResult.Modified m -> m.newContent();
case GuardrailResult.Blocked b -> throw new GuardrailViolationException(b.reason(), "...");
};
- Since:
- 0.13.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic final recordThe guardrail rejected the content.static final recordThe guardrail transformed the content.static final recordThe content passed validation without modification.