import { readFileSync, writeFileSync, mkdirSync } from 'fs';
import { dirname, resolve } from 'path';

export interface Preferences {
  modelTier?: string;
}

export function loadPreferences(dataDir: string): Preferences {
  const filePath = resolve(dataDir, 'preferences.json');
  try {
    const raw = readFileSync(filePath, 'utf-8');
    return JSON.parse(raw) as Preferences;
  } catch {
    return {};
  }
}

export function savePreference(dataDir: string, key: string, value: unknown): void {
  const filePath = resolve(dataDir, 'preferences.json');
  let prefs: Record<string, unknown> = {};
  try {
    prefs = JSON.parse(readFileSync(filePath, 'utf-8'));
  } catch {
    // start fresh
  }
  prefs[key] = value;
  mkdirSync(dirname(filePath), { recursive: true });
  writeFileSync(filePath, JSON.stringify(prefs, null, 2) + '\n');
}
