getModelCostsForModel function

ModelCosts getModelCostsForModel(
  1. String model,
  2. TokenUsageInfo usage, {
  3. required CanonicalNameResolver getCanonicalName,
  4. required DefaultModelResolver getDefaultMainLoopModelSetting,
  5. required FastModeChecker isFastModeEnabled,
  6. UnknownModelCostFlagged? onUnknownModelCost,
  7. AnalyticsLogger? logEvent,
})

Get the model costs for a model, handling Opus 4.6 fast mode and unknown models.

Implementation

ModelCosts getModelCostsForModel(
  String model,
  TokenUsageInfo usage, {
  required CanonicalNameResolver getCanonicalName,
  required DefaultModelResolver getDefaultMainLoopModelSetting,
  required FastModeChecker isFastModeEnabled,
  UnknownModelCostFlagged? onUnknownModelCost,
  AnalyticsLogger? logEvent,
}) {
  final shortName = getCanonicalName(model);

  // Check if this is an Opus 4.6 model with fast mode active.
  if (shortName == 'claude-opus-4-6') {
    final isFastMode = usage.speed == 'fast';
    return getOpus46CostTier(
      fastMode: isFastMode,
      isFastModeEnabled: isFastModeEnabled,
    );
  }

  final costs = modelCosts[shortName];
  if (costs == null) {
    _trackUnknownModelCost(
      model,
      shortName,
      logEvent: logEvent,
      onUnknownModelCost: onUnknownModelCost,
    );
    return modelCosts[getCanonicalName(getDefaultMainLoopModelSetting())] ??
        _defaultUnknownModelCost;
  }
  return costs;
}