@tehreet/conduit
Version:
LLM API gateway with intelligent routing, robust process management, and health monitoring
84 lines • 2.92 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.initConfig = exports.writeConfigFile = exports.readConfigFile = exports.initDir = void 0;
const promises_1 = __importDefault(require("node:fs/promises"));
const node_readline_1 = __importDefault(require("node:readline"));
const constants_1 = require("../constants");
const config_presets_1 = require("./config-presets");
const ensureDir = async (dir_path) => {
try {
await promises_1.default.access(dir_path);
}
catch {
await promises_1.default.mkdir(dir_path, { recursive: true });
}
};
const initDir = async () => {
await ensureDir(constants_1.HOME_DIR);
await ensureDir(constants_1.PLUGINS_DIR);
};
exports.initDir = initDir;
const createReadline = () => {
return node_readline_1.default.createInterface({
input: process.stdin,
output: process.stdout,
});
};
const question = (query) => {
return new Promise(resolve => {
const rl = createReadline();
rl.question(query, answer => {
rl.close();
resolve(answer);
});
});
};
const confirm = async (query) => {
const answer = await question(query);
return answer.toLowerCase() !== 'n';
};
const readConfigFile = async () => {
try {
const config = await promises_1.default.readFile(constants_1.CONFIG_FILE, 'utf-8');
return JSON.parse(config);
}
catch {
const name = await question('Enter Provider Name: ');
const apiKey = await question('Enter Provider API KEY: ');
const baseUrl = await question('Enter Provider URL: ');
const model = await question('Enter MODEL Name: ');
const config = Object.assign({}, constants_1.DEFAULT_CONFIG, {
Providers: [
{
name,
api_base_url: baseUrl,
api_key: apiKey,
models: [model],
},
],
Router: {
default: `${name},${model}`,
},
});
await (0, exports.writeConfigFile)(config);
return config;
}
};
exports.readConfigFile = readConfigFile;
const writeConfigFile = async (config) => {
await ensureDir(constants_1.HOME_DIR);
await promises_1.default.writeFile(constants_1.CONFIG_FILE, JSON.stringify(config, null, 2));
};
exports.writeConfigFile = writeConfigFile;
const initConfig = async () => {
let config = await (0, exports.readConfigFile)();
// Apply preset configuration if specified
config = await config_presets_1.ConfigPresetManager.applyPresetToConfig(config);
Object.assign(process.env, config);
return config;
};
exports.initConfig = initConfig;
//# sourceMappingURL=index.js.map