UNPKG

locatai-ts

Version:

Enterprise-grade AI-powered element locator for Selenium WebDriver - TypeScript implementation

79 lines 3.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AIProviderFactory = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const OpenAIProvider_1 = require("./OpenAIProvider"); const OllamaProvider_1 = require("./OllamaProvider"); const AnthropicProvider_1 = require("./AnthropicProvider"); const GeminiProvider_1 = require("./GeminiProvider"); /** * Factory class for creating AI provider instances */ class AIProviderFactory { /** * Creates an AI provider based on configuration in appsettings.json */ static create() { // Load configuration from appsettings.json const settings = AIProviderFactory.loadAppSettings(); // Use settings or defaults const provider = settings.AI?.Provider?.toLowerCase() || 'openai'; const apiKey = settings.AI?.ApiKey; const modelName = settings.AI?.Model; if (!apiKey) { console.warn('API key not found in appsettings.json. This might cause authentication errors.'); } const config = { apiKey, model: modelName }; // Create the appropriate provider instance switch (provider) { case 'openai': return new OpenAIProvider_1.OpenAIProvider(config); case 'ollama': return new OllamaProvider_1.OllamaProvider(config); case 'anthropic': return new AnthropicProvider_1.AnthropicProvider(config); case 'gemini': return new GeminiProvider_1.GeminiProvider(config); default: console.warn(`Unknown provider '${provider}' specified in appsettings.json, defaulting to OpenAI`); return new OpenAIProvider_1.OpenAIProvider(config); } } /** * Loads the app settings from appsettings.json * Tries multiple locations to find the file */ static loadAppSettings() { // Possible locations for appsettings.json const possiblePaths = [ 'appsettings.json', path_1.default.join('test', 'appsettings.json'), path_1.default.join(__dirname, '..', '..', 'appsettings.json'), path_1.default.join(__dirname, '..', '..', 'test', 'appsettings.json') ]; for (const filePath of possiblePaths) { try { if (fs_1.default.existsSync(filePath)) { const content = fs_1.default.readFileSync(filePath, 'utf-8'); const settings = JSON.parse(content); console.log(`Loaded configuration from ${filePath}`); return settings; } } catch (error) { console.warn(`Error reading ${filePath}:`, error); } } console.warn('No appsettings.json found, using default settings'); return {}; } } exports.AIProviderFactory = AIProviderFactory; //# sourceMappingURL=AIProviderFactory.js.map