MagicCode/packages/cli/src/config.ts

32 lines
1,020 B
TypeScript
Raw Normal View History

2026-10-11 00:11:20 +00:00
import { readFile } from "node:fs/promises";
import { join } from "node:path";
export interface MaiaConfig {
2026-10-11 00:11:20 +00:00
model?: string;
}
async function readJson(path: string): Promise<MaiaConfig> {
2026-10-11 00:11:20 +00:00
try {
return JSON.parse(await readFile(path, "utf8")) as MaiaConfig;
2026-10-11 00:11:20 +00:00
} catch {
return {};
}
}
/** Priorité : flags CLI > variables d'environnement > config projet > config utilisateur > défauts. */
export async function resolveConfig(opts: {
cwd: string;
homeDir: string;
flags: MaiaConfig;
}): Promise<{ model?: string }> {
const user = await readJson(join(opts.homeDir, ".maia", "config.json"));
const project = await readJson(join(opts.cwd, ".maia", "config.json"));
const env: MaiaConfig = {
model: process.env.MAIA_MODEL,
2026-10-11 00:11:20 +00:00
};
const pick = (k: keyof MaiaConfig): string | undefined =>
2026-10-11 00:11:20 +00:00
opts.flags[k] ?? env[k] ?? project[k] ?? user[k];
// Pas de modèle par défaut : s'il n'est pas défini explicitement, l'utilisateur le choisit au démarrage.
return { model: pick("model") };
2026-10-11 00:11:20 +00:00
}