Volver al índice
src/main/java/ar/com/companeros/decision/DecisionResponse.java
package ar.com.companeros.decision;
import java.math.BigDecimal;
import java.util.UUID;
public record DecisionResponse(UUID requestId, UUID actorUUID, long sessionEpoch, long observationSeq,
Status status, String model, ToolDecision decision, Usage usage, String reason, java.util.List<String> webSources) {
public DecisionResponse { webSources = java.util.List.copyOf(webSources); }
public DecisionResponse(UUID requestId, UUID actorUUID, long sessionEpoch, long observationSeq,
Status status, String model, ToolDecision decision, Usage usage, String reason) {
this(requestId, actorUUID, sessionEpoch, observationSeq, status, model, decision, usage, reason, java.util.List.of());
}
public enum Status {
ACCEPTED, DISABLED, CLOSED, CANCELLED, STALE, THROTTLED, BUDGET_EXHAUSTED,
STRATEGIC_DENIED, HTTP_ERROR, NETWORK_ERROR, INVALID_RESPONSE, REFUSED, INCOMPLETE
}
public record Usage(long inputTokens, long outputTokens, long reasoningTokens,
long cachedTokens, long cacheWriteTokens, boolean estimatedBillable, BigDecimal usd) {
public static Usage zero() { return new Usage(0, 0, 0, 0, 0, false, BigDecimal.ZERO); }
}
public boolean accepted() { return status == Status.ACCEPTED && decision != null; }
public boolean validFor(UUID actor, long epoch, long observation) {
return accepted() && actorUUID.equals(actor) && sessionEpoch == epoch && observationSeq == observation;
}
}