/** * 사용자 지정 modelName 으로 추론 호출 시도할 때, 첫 호출이 404 / not-loaded * 류로 실패할 가능성에 대비한 fallback 후보 목록을 만든다. * * LM Studio 한정: `gemma3:4b` 같은 ":quant suffix" 형태가 안 먹히면 base name * (`gemma3`) 도 시도하게 한 줄 더 push. Ollama 는 항상 정확한 이름을 요구하므로 * candidates 는 1개. * * Stateless — agent.ts 의 private 메서드 그대로 추출. */ export function buildModelCandidates(modelName: string, engine: 'lmstudio' | 'ollama'): string[] { const candidates = [modelName]; if (engine === 'lmstudio') { const baseModel = modelName.replace(/:\d+$/, ''); if (baseModel && baseModel !== modelName) { candidates.push(baseModel); } } return candidates; }