getDefaultEffortForModel method

EffortValue? getDefaultEffortForModel(
  1. String model
)

Get the default effort for a model.

Implementation

EffortValue? getDefaultEffortForModel(String model) {
  if (_isAnt) {
    final overrideConfig = _config.getAntModelOverrideConfig();
    if (overrideConfig != null) {
      final defaultModel = overrideConfig['defaultModel'] as String?;
      final isDefaultModel =
          defaultModel != null &&
          model.toLowerCase() == defaultModel.toLowerCase();
      if (isDefaultModel) {
        final level = overrideConfig['defaultModelEffortLevel'] as String?;
        if (level != null) {
          final parsed = EffortLevel.tryParse(level);
          if (parsed != null) return EffortLevelValue(parsed);
        }
      }
    }
    final antModel = _config.resolveAntModel(model);
    if (antModel != null) {
      final level = antModel['defaultEffortLevel'] as String?;
      if (level != null) {
        final parsed = EffortLevel.tryParse(level);
        if (parsed != null) return EffortLevelValue(parsed);
      }
      final numValue = antModel['defaultEffortValue'] as int?;
      if (numValue != null) return EffortNumericValue(numValue);
    }
    // Always default ants to undefined/high.
    return null;
  }

  // Default effort on Opus 4.6 to medium for Pro.
  // Max/Team also get medium when the tengu_grey_step2 config is enabled.
  if (model.toLowerCase().contains('opus-4-6')) {
    if (_config.isProSubscriber()) {
      return const EffortLevelValue(EffortLevel.medium);
    }
    if (getOpusDefaultEffortConfig().enabled &&
        (_config.isMaxSubscriber() || _config.isTeamSubscriber())) {
      return const EffortLevelValue(EffortLevel.medium);
    }
  }

  // When ultrathink is enabled, default to medium.
  if (_config.isUltrathinkEnabled() && modelSupportsEffort(model)) {
    return const EffortLevelValue(EffortLevel.medium);
  }

  // Fallback to undefined = high effort in the API.
  return null;
}