@wavequery/conductor
Version:
Modular LLM orchestration framework
60 lines • 2.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = exports.ConfigurationManager = void 0;
const types_1 = require("./types");
const default_1 = require("./default");
const dotenv_1 = __importDefault(require("dotenv"));
class ConfigurationManager {
constructor() {
dotenv_1.default.config();
this.config = this.loadConfig();
}
static getInstance() {
if (!ConfigurationManager.instance) {
ConfigurationManager.instance = new ConfigurationManager();
}
return ConfigurationManager.instance;
}
loadConfig() {
const config = {
openai: {
apiKey: process.env.OPENAI_API_KEY,
model: process.env.OPENAI_MODEL || default_1.defaultConfig.openai?.model,
organization: process.env.OPENAI_ORG,
},
server: {
port: parseInt(process.env.SERVER_PORT || String(default_1.defaultConfig.server?.port), 10),
host: process.env.SERVER_HOST || default_1.defaultConfig.server?.host,
},
logging: {
level: (process.env.LOG_LEVEL ||
default_1.defaultConfig.logging?.level),
},
};
try {
return types_1.configSchema.parse(config);
}
catch (error) {
console.error("Invalid configuration:", error);
process.exit(1);
}
}
getConfig() {
return this.config;
}
// Allow overriding config for testing
setConfig(config) {
this.config = {
...this.config,
...config,
};
return types_1.configSchema.parse(this.config);
}
}
exports.ConfigurationManager = ConfigurationManager;
// Export a default instance
exports.config = ConfigurationManager.getInstance().getConfig();
//# sourceMappingURL=index.js.map