@wavequery/conductor
Version:
Modular LLM orchestration framework
53 lines • 1.67 kB
JavaScript
import { configSchema } from "./types";
import { defaultConfig } from "./default";
import dotenv from "dotenv";
export class ConfigurationManager {
constructor() {
dotenv.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 || defaultConfig.openai?.model,
organization: process.env.OPENAI_ORG,
},
server: {
port: parseInt(process.env.SERVER_PORT || String(defaultConfig.server?.port), 10),
host: process.env.SERVER_HOST || defaultConfig.server?.host,
},
logging: {
level: (process.env.LOG_LEVEL ||
defaultConfig.logging?.level),
},
};
try {
return 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 configSchema.parse(this.config);
}
}
// Export a default instance
export const config = ConfigurationManager.getInstance().getConfig();
//# sourceMappingURL=index.js.map