UNPKG

@tehreet/conduit

Version:

LLM API gateway with intelligent routing, robust process management, and health monitoring

180 lines โ€ข 7.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.listPresetsCommand = listPresetsCommand; exports.showPresetCommand = showPresetCommand; exports.validatePresetCommand = validatePresetCommand; exports.testPresetCommand = testPresetCommand; const config_presets_1 = require("../utils/config-presets"); const config_validator_1 = require("../utils/config-validator"); async function listPresetsCommand() { console.log('๐Ÿ“‹ Available Configuration Presets:'); console.log(''); console.log('Built-in presets:'); console.log(' โ€ข synapse-ide-preset - Optimized for Synapse IDE integration'); console.log(''); console.log('Usage:'); console.log(' Add "preset": "synapse-ide-preset" to your config.json'); console.log(' Or specify a custom preset file path'); } async function showPresetCommand(presetName) { try { let preset; if (presetName.endsWith('.json') || presetName.includes('/')) { preset = await config_presets_1.ConfigPresetManager.loadPreset(presetName); } else { preset = await config_presets_1.ConfigPresetManager.loadBuiltinPreset(presetName); } console.log(`๐Ÿ“‹ Preset: ${preset.name}`); if (preset.description) { console.log(`๐Ÿ“ Description: ${preset.description}`); } console.log(''); console.log('๐Ÿ”Œ Providers:'); for (const provider of preset.providers) { console.log(` โ€ข ${provider.name} (${provider.type})`); if (provider.binary) { console.log(` Binary: ${provider.binary}`); } console.log(` Models: ${provider.models.length}`); for (const model of provider.models) { const aliases = model.aliases ? ` (${model.aliases.join(', ')})` : ''; const capabilities = model.capabilities ? ` [${model.capabilities.join(', ')}]` : ''; console.log(` - ${model.id}${aliases}${capabilities}`); } } if (preset.defaultRouting?.rules) { console.log(''); console.log('๐Ÿ”€ Routing Rules:'); for (const rule of preset.defaultRouting.rules) { console.log(` โ€ข ${rule.name}: ${rule.condition} โ†’ ${rule.model}`); } if (preset.defaultRouting.fallback) { console.log(` โ€ข Fallback: ${preset.defaultRouting.fallback}`); } } if (preset.synapseIntegration) { console.log(''); console.log('๐Ÿ”ง Synapse Integration:'); console.log(` โ€ข Enabled: ${preset.synapseIntegration.enabled}`); if (preset.synapseIntegration.configSync !== undefined) { console.log(` โ€ข Config Sync: ${preset.synapseIntegration.configSync}`); } } } catch (error) { console.error(`โŒ Failed to load preset '${presetName}':`, error instanceof Error ? error.message : error); process.exit(1); } } async function validatePresetCommand(presetPath) { try { const preset = await config_presets_1.ConfigPresetManager.loadPreset(presetPath); const validation = (0, config_validator_1.validateSynapseConfig)(preset); if (validation.valid) { console.log('โœ… Preset configuration is valid'); console.log(`๐Ÿ“‹ Preset: ${preset.name}`); if (preset.description) { console.log(`๐Ÿ“ Description: ${preset.description}`); } if (validation.models && validation.models.length > 0) { console.log('๐ŸŽฏ Available models:', validation.models.join(', ')); } if (validation.warnings && validation.warnings.length > 0) { console.log('โš ๏ธ Warnings:'); validation.warnings.forEach(warning => console.log(` - ${warning}`)); } } else { console.error('โŒ Preset validation errors:'); validation.errors.forEach(error => console.error(` - ${error}`)); process.exit(1); } } catch (error) { console.error('โŒ Failed to validate preset:', error instanceof Error ? error.message : error); process.exit(1); } } async function testPresetCommand(presetName, options = {}) { try { let preset; if (presetName.endsWith('.json') || presetName.includes('/')) { preset = await config_presets_1.ConfigPresetManager.loadPreset(presetName); } else { preset = await config_presets_1.ConfigPresetManager.loadBuiltinPreset(presetName); } console.log(`๐Ÿงช Testing preset: ${preset.name}`); console.log(''); // Create a mock config with the preset const mockConfig = { preset: presetName, presetConfig: preset, }; const tokenCount = options.tokenCount || (options.message ? options.message.length : 1000); console.log(`๐Ÿ”ข Testing with token count: ${tokenCount}`); if (preset.defaultRouting?.rules) { console.log('๐Ÿ”€ Testing routing rules:'); for (const rule of preset.defaultRouting.rules) { const mockReq = { body: { model: 'claude-3-5-sonnet-20241022', thinking: rule.condition.includes('thinking'), messages: options.message ? [{ role: 'user', content: options.message }] : [], }, }; // Simple rule evaluation for testing let matches = false; try { if (rule.condition.includes('tokenCount')) { const match = rule.condition.match(/tokencount\s*([<>]=?)\s*(\d+)/i); if (match) { const operator = match[1]; const threshold = parseInt(match[2]); switch (operator) { case '<': matches = tokenCount < threshold; break; case '<=': matches = tokenCount <= threshold; break; case '>': matches = tokenCount > threshold; break; case '>=': matches = tokenCount >= threshold; break; } } } else if (rule.condition.includes('thinking')) { matches = mockReq.body.thinking; } } catch (error) { console.log(` โŒ ${rule.name}: Error evaluating condition`); continue; } if (matches) { console.log(` โœ… ${rule.name}: ${rule.condition} โ†’ ${rule.model}`); } else { console.log(` โญ๏ธ ${rule.name}: ${rule.condition} (no match)`); } } if (preset.defaultRouting.fallback) { console.log(` ๐Ÿ”„ Fallback: ${preset.defaultRouting.fallback}`); } } } catch (error) { console.error(`โŒ Failed to test preset '${presetName}':`, error instanceof Error ? error.message : error); process.exit(1); } } //# sourceMappingURL=preset-commands.js.map