getDefaultEffortForModel method
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;
}