resolveAppliedEffort method

EffortValue? resolveAppliedEffort(
  1. String model,
  2. EffortValue? appStateEffortValue
)

Resolve the effort value that will actually be sent to the API. Follows the full precedence chain: env MAGE_EFFORT_LEVEL -> appState.effortValue -> model default

Implementation

EffortValue? resolveAppliedEffort(
  String model,
  EffortValue? appStateEffortValue,
) {
  if (isEffortEnvUnset) return null;
  final envOverride = getEffortEnvOverride();
  final resolved =
      envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model);
  // API rejects 'max' on non-Opus-4.6 models -- downgrade to 'high'.
  if (resolved is EffortLevelValue &&
      resolved.level == EffortLevel.max &&
      !modelSupportsMaxEffort(model)) {
    return const EffortLevelValue(EffortLevel.high);
  }
  return resolved;
}