Skip to content

[Duplicate Code] Model resolver middle-power fallback logic duplicated twice #3613

@github-actions

Description

@github-actions

Duplicate Code Opportunity

Summary

  • Pattern: Model resolver middle-power fallback selection logic
  • Locations: containers/api-proxy/model-resolver.js lines 267-277 and 320-330
  • Impact: 11 lines of identical fallback logic duplicated in two locations

Evidence

The exact same middle-power fallback pattern appears twice in model-resolver.js:

First occurrence (lines 267-277):

const middlePowerFallback = selectMiddlePowerFallback(
  requestedModel,
  availableModels,
  currentProvider,
  'no_alias_match_and_not_in_available_models',
  fallbackConfig
);
if (middlePowerFallback) {
  log.push(`[model-resolver] middle-power fallback: "${requestedModel}" → "${middlePowerFallback.resolvedModel}"`);
  return { resolvedModel: middlePowerFallback.resolvedModel, log, fallback: middlePowerFallback.fallback };
}

Second occurrence (lines 320-330):

const middlePowerFallback = selectMiddlePowerFallback(
  requestedModel,
  availableModels,
  currentProvider,
  'no_alias_match_and_not_in_available_models',
  fallbackConfig
);
if (middlePowerFallback) {
  log.push(`[model-resolver] middle-power fallback: "${requestedModel}" → "${middlePowerFallback.resolvedModel}"`);
  return { resolvedModel: middlePowerFallback.resolvedModel, log, fallback: middlePowerFallback.fallback };
}

Both occurrences are identical — same function call, same conditional, same log message, same return statement.

Suggested Refactoring

Extract this logic into a helper function:

/**
 * Attempts to select a middle-power fallback model and returns early if found.
 * Returns null if no fallback is available.
 */
function tryMiddlePowerFallback(requestedModel, availableModels, currentProvider, log, fallbackConfig) {
  const middlePowerFallback = selectMiddlePowerFallback(
    requestedModel,
    availableModels,
    currentProvider,
    'no_alias_match_and_not_in_available_models',
    fallbackConfig
  );
  
  if (middlePowerFallback) {
    log.push(`[model-resolver] middle-power fallback: "${requestedModel}" → "${middlePowerFallback.resolvedModel}"`);
    return { resolvedModel: middlePowerFallback.resolvedModel, log, fallback: middlePowerFallback.fallback };
  }
  
  return null;
}

// Usage at both call sites:
const fallbackResult = tryMiddlePowerFallback(requestedModel, availableModels, currentProvider, log, fallbackConfig);
if (fallbackResult) return fallbackResult;

This eliminates 11 lines of duplication and makes the fallback logic more maintainable — changes only need to be made once.

Affected Files

  • containers/api-proxy/model-resolver.js — lines 267-277, 320-330

Effort Estimate

Low — Simple extraction with 2 call sites in the same file


Detected by Duplicate Code Detector workflow. Run date: 2026-05-22

Generated by Duplicate Code Detector · ● 8.1M ·

  • expires on Jun 21, 2026, 10:01 PM UTC

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions