@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
JavaScript
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