import { streamClaude, completeClaudeText } from "./claude"; import { streamGemini, completeGeminiText } from "./gemini"; import { streamOpenAI, completeOpenAIText } from "./openai"; import { providerForModel } from "./models"; import type { StreamChatParams, StreamChatResult, UserApiKeys } from "./types"; export * from "./types"; export * from "./models"; export async function streamChatWithTools( params: StreamChatParams, ): Promise { const provider = providerForModel(params.model); if (provider === "claude") return streamClaude(params); if (provider === "openai") return streamOpenAI(params); return streamGemini(params); } export async function completeText(params: { model: string; systemPrompt?: string; user: string; maxTokens?: number; apiKeys?: UserApiKeys; }): Promise { const provider = providerForModel(params.model); if (provider === "claude") return completeClaudeText(params); if (provider === "openai") return completeOpenAIText(params); return completeGeminiText(params); }