mirror of
https://github.com/KeygraphHQ/shannon.git
synced 2026-07-03 03:45:50 +02:00
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
/** TOML config writer for ~/.shannon/config.toml. */
|
|
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import { stringify } from 'smol-toml';
|
|
import { getConfigFile } from '../home.js';
|
|
|
|
// === Types ===
|
|
|
|
export interface ShannonConfig {
|
|
core?: { max_tokens?: number; adaptive_thinking?: boolean };
|
|
anthropic?: { api_key?: string; oauth_token?: string };
|
|
custom_base_url?: { base_url?: string; auth_token?: string };
|
|
bedrock?: { use?: boolean; region?: string; token?: string };
|
|
vertex?: { use?: boolean; region?: string; project_id?: string; key_path?: string };
|
|
models?: { small?: string; medium?: string; large?: string };
|
|
}
|
|
|
|
// === File Operations ===
|
|
|
|
/** Write the config to ~/.shannon/config.toml with 0o600 permissions. */
|
|
export function saveConfig(config: ShannonConfig): void {
|
|
const configPath = getConfigFile();
|
|
const dir = path.dirname(configPath);
|
|
fs.mkdirSync(dir, { recursive: true });
|
|
|
|
const content = stringify(config);
|
|
fs.writeFileSync(configPath, content, { mode: 0o600 });
|
|
}
|