UNPKG

@antl3x/toolrag

Version:

Context-aware tool retrieval for language models - unlock the full potential of LLM function calling without context window limitations or constraints.

62 lines 1.77 kB
import { z } from 'zod'; import { EmbeddingProviderOpenAI } from './EmbeddingProviderOpenAI'; import { EmbeddingProviderGoogle } from './EmbeddingProviderGoogle'; const ToolRAGConfigSchema = z.object({ embeddingProvider: z .union([ z.literal('openai'), z.literal('google'), z.instanceof(EmbeddingProviderOpenAI), z.instanceof(EmbeddingProviderGoogle), ]) .default('openai'), mcpServers: z.array(z.string()).default([]), rerank: z .object({ enabled: z.boolean().optional(), threshold: z.number().optional(), }) .optional(), database: z .object({ url: z.string().default('file:./toolreg.db'), }) .default({}), }); class ConfigManager { static instance; config = null; constructor() { } static getInstance() { if (!ConfigManager.instance) { ConfigManager.instance = new ConfigManager(); } return ConfigManager.instance; } setup(config) { try { this.config = ToolRAGConfigSchema.parse(config); return this.config; } catch (error) { if (error instanceof z.ZodError) { throw new Error(`Invalid configuration: ${error.message}`); } throw error; } } getConfig() { if (!this.config) { throw new Error('Configuration not initialized. Call setup() first.'); } return this.config; } } const setupConfig = (config) => { return ConfigManager.getInstance().setup(config ?? {}); }; const getConfig = () => { return ConfigManager.getInstance().getConfig(); }; export { setupConfig, getConfig }; //# sourceMappingURL=ToolRAGConfig.js.map