export function isOllamaPreferredSlotAvailable(ctx) {
    return ctx.preferredProvider === 'ollama' && ctx.llmProviderConfig === 'ollama';
}
export function determineRelationLlmProvider(ctx, requestedProvider) {
    if (requestedProvider === 'auto') {
        if (ctx.openaiClient)
            return 'openai';
        if (ctx.geminiClient)
            return 'gemini';
        if (isOllamaPreferredSlotAvailable(ctx))
            return 'ollama';
        return null;
    }
    if (requestedProvider === 'openai' && ctx.openaiClient) {
        return 'openai';
    }
    if (requestedProvider === 'gemini' && ctx.geminiClient) {
        return 'gemini';
    }
    if (requestedProvider === 'ollama' && isOllamaPreferredSlotAvailable(ctx)) {
        return 'ollama';
    }
    if (requestedProvider === 'openai') {
        if (ctx.geminiClient)
            return 'gemini';
        if (isOllamaPreferredSlotAvailable(ctx))
            return 'ollama';
    }
    else if (requestedProvider === 'gemini') {
        if (ctx.openaiClient)
            return 'openai';
        if (isOllamaPreferredSlotAvailable(ctx))
            return 'ollama';
    }
    else if (requestedProvider === 'ollama') {
        if (ctx.openaiClient)
            return 'openai';
        if (ctx.geminiClient)
            return 'gemini';
    }
    return null;
}
//# sourceMappingURL=provider-selection.js.map