import { OpenAIEmbedder } from "../embeddings/openai"; import { OpenAILLM } from "../llms/openai"; import { OpenAIStructuredLLM } from "../llms/openai_structured"; import { MemoryVectorStore } from "../vector_stores/memory"; import { EmbeddingConfig, HistoryStoreConfig, LLMConfig, VectorStoreConfig, } from "../types"; import { Embedder } from "../embeddings/base"; import { LLM } from "../llms/base"; import { VectorStore } from "../vector_stores/base"; import { Qdrant } from "../vector_stores/qdrant"; import { SQLiteManager } from "../storage/SQLiteManager"; import { MemoryHistoryManager } from "../storage/MemoryHistoryManager"; import { HistoryManager } from "../storage/base"; export class EmbedderFactory { static create(provider: string, config: EmbeddingConfig): Embedder { switch (provider.toLowerCase()) { case "openai": return new OpenAIEmbedder(config); default: throw new Error(`Unsupported embedder provider: ${provider}`); } } } export class LLMFactory { static create(provider: string, config: LLMConfig): LLM { switch (provider.toLowerCase()) { case "openai": // Use structured OpenAI LLM as the default for "openai" provider return new OpenAIStructuredLLM(config); case "openai_legacy": // Original OpenAI LLM implementation is now available as "openai_legacy" return new OpenAILLM(config); case "openai_structured": // Keep this for backward compatibility return new OpenAIStructuredLLM(config); default: throw new Error(`Unsupported LLM provider: ${provider}`); } } } export class VectorStoreFactory { static create(provider: string, config: VectorStoreConfig): VectorStore { switch (provider.toLowerCase()) { case "memory": return new MemoryVectorStore(config); case "qdrant": return new Qdrant(config as any); default: throw new Error(`Unsupported vector store provider: ${provider}`); } } } export class HistoryManagerFactory { static create(provider: string, config: HistoryStoreConfig): HistoryManager { switch (provider.toLowerCase()) { case "sqlite": return new SQLiteManager(config.config.historyDbPath || ":memory:"); case "memory": return new MemoryHistoryManager(); default: throw new Error(`Unsupported history store provider: ${provider}`); } } }