@tehreet/conduit
Version:
LLM API gateway with intelligent routing, robust process management, and health monitoring
180 lines โข 7.89 kB
JavaScript
;
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