← back to AbramsOS

lib/chat-providers/index.js

25 lines

// Uniform provider dispatcher. Each adapter exposes async chat({system,messages,providerModel}) -> {text}.

const gemini = require('./gemini');
const ollama = require('./ollama');
const claudeCli = require('./claude-cli');
const openai = require('./openai');

async function dispatch(model, { system, messages }) {
  const args = { system, messages, providerModel: model.providerModel };
  switch (model.provider) {
    case 'gemini':
      return gemini.chat(args);
    case 'ollama':
      return ollama.chat(args);
    case 'claude-cli':
      return claudeCli.chat(args);
    case 'openai':
      return openai.chat(args);
    default:
      throw new Error(`unknown provider: ${model.provider}`);
  }
}

module.exports = { dispatch, availableModels: ollama.availableModels };