Volver al índice
src/main/java/ar/com/companeros/decision/ToolDecision.java
package ar.com.companeros.decision;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
/** Plan propuesto; sus pasos todavía necesitan validación física al ejecutarse. */
public record ToolDecision(String goal, List<Step> steps, Set<String> permissions, String briefRationale) {
public ToolDecision {
Objects.requireNonNull(goal); Objects.requireNonNull(briefRationale);
steps = List.copyOf(steps); permissions = Set.copyOf(permissions);
if (goal.isBlank() || goal.length() > 512 || briefRationale.length() > 1024
|| steps.size() > 16 || permissions.size() > 16)
throw new IllegalArgumentException("Plan fuera de límite");
}
public record Step(String toolId, int version, Map<String, String> arguments) {
public Step {
Objects.requireNonNull(toolId); arguments = Map.copyOf(arguments);
if (toolId.isBlank() || toolId.length() > 128 || version < 1 || arguments.size() > 16
|| arguments.entrySet().stream().anyMatch(e -> e.getKey().isBlank()
|| e.getKey().length() > 64 || e.getValue().length() >
((toolId.equals("propose_tool") || toolId.equals("propose_infected_tool")) && e.getKey().equals("manifest") ? 4096 : 512)))
throw new IllegalArgumentException("Paso fuera de límite");
}
}
}