| import fs from 'fs'; | |
| import path from 'path'; | |
| import { fileURLToPath } from 'url'; | |
| const __filename = fileURLToPath(import.meta.url); | |
| const __dirname = path.dirname(__filename); | |
| let config = null; | |
| export function loadConfig() { | |
| try { | |
| const configPath = path.join(__dirname, 'config.json'); | |
| const configData = fs.readFileSync(configPath, 'utf-8'); | |
| config = JSON.parse(configData); | |
| return config; | |
| } catch (error) { | |
| throw new Error(`Failed to load config.json: ${error.message}`); | |
| } | |
| } | |
| export function getConfig() { | |
| if (!config) { | |
| loadConfig(); | |
| } | |
| return config; | |
| } | |
| export function getModelById(modelId) { | |
| const cfg = getConfig(); | |
| return cfg.models.find(m => m.id === modelId); | |
| } | |
| export function getEndpointByType(type) { | |
| const cfg = getConfig(); | |
| return cfg.endpoint.find(e => e.name === type); | |
| } | |
| export function isDevMode() { | |
| const cfg = getConfig(); | |
| return cfg.dev_mode === true; | |
| } | |
| export function getPort() { | |
| const cfg = getConfig(); | |
| return cfg.port || 3000; | |
| } | |
| export function getSystemPrompt() { | |
| const cfg = getConfig(); | |
| return cfg.system_prompt || ''; | |
| } | |
| export function getModelReasoning(modelId) { | |
| const model = getModelById(modelId); | |
| if (!model || !model.reasoning) { | |
| return null; | |
| } | |
| const reasoningLevel = model.reasoning.toLowerCase(); | |
| if (['low', 'medium', 'high', 'auto'].includes(reasoningLevel)) { | |
| return reasoningLevel; | |
| } | |
| return null; | |
| } | |
| export function getUserAgent() { | |
| const cfg = getConfig(); | |
| return cfg.user_agent || 'factory-cli/0.19.3'; | |
| } | |