Project Files
src / presets.ts
// src/presets.ts
import * as fs from "fs";
import * as path from "path";
export interface PresetInfo {
name: string;
systemPrompt: string;
}
const PRESETS_DIR = path.join(process.env.HOME || "/Users/" + (typeof process !== "undefined" ? process.env.USER : "Unknown"), ".cache/lm-studio/config-presets");
function detectPresetsDir(): string {
if (process.env.HOME) {
return path.join(process.env.HOME, ".cache/lm-studio/config-presets");
}
const paths = [
path.join("/Users", "knishika", ".cache/lm-studio/config-presets"),
];
for (const p of paths) {
if (fs.existsSync(p)) return p;
}
return paths[0];
}
export function loadPresets(): PresetInfo[] {
const dir = detectPresetsDir();
try {
if (!fs.existsSync(dir)) {
return [];
}
const files = fs.readdirSync(dir).filter(f => f.endsWith(".preset.json"));
const presets: PresetInfo[] = [];
for (const file of files) {
try {
const data = JSON.parse(fs.readFileSync(path.join(dir, file), "utf8"));
const spField = data?.operation?.fields?.find((f: any) => f.key === "llm.prediction.systemPrompt");
if (data.name && spField !== undefined) {
presets.push({
name: data.name,
systemPrompt: spField.value || "",
});
}
} catch {
// Skip invalid JSON files
}
}
return presets.sort((a, b) => a.name.localeCompare(b.name));
} catch {
return [];
}
}
export function loadPresetByName(name: string): PresetInfo | null {
const presets = loadPresets();
return presets.find(p => p.name === name) ?? null;
}