Spaces:
Runtime error
Runtime error
| import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, rmSync } from "node:fs"; | |
| import { join } from "node:path"; | |
| import { resolveDataDir } from "../data-dir.mjs"; | |
| function sessionsDir() { | |
| const dir = join(resolveDataDir(), "repl-sessions"); | |
| if (!existsSync(dir)) mkdirSync(dir, { recursive: true }); | |
| return dir; | |
| } | |
| export function saveSession(name, session) { | |
| const path = join(sessionsDir(), `${name}.json`); | |
| writeFileSync( | |
| path, | |
| JSON.stringify({ ...session, name, updatedAt: new Date().toISOString() }, null, 2) | |
| ); | |
| } | |
| export function loadSession(name) { | |
| const path = join(sessionsDir(), `${name}.json`); | |
| if (!existsSync(path)) throw new Error(`session '${name}' not found`); | |
| return JSON.parse(readFileSync(path, "utf8")); | |
| } | |
| export function listSessions() { | |
| const dir = sessionsDir(); | |
| return readdirSync(dir) | |
| .filter((f) => f.endsWith(".json")) | |
| .map((f) => { | |
| try { | |
| const data = JSON.parse(readFileSync(join(dir, f), "utf8")); | |
| return { | |
| name: data.name || f.replace(".json", ""), | |
| updatedAt: data.updatedAt, | |
| model: data.model, | |
| }; | |
| } catch { | |
| return { name: f.replace(".json", ""), updatedAt: null, model: null }; | |
| } | |
| }); | |
| } | |
| export function autosave(session) { | |
| try { | |
| saveSession("autosave", session); | |
| } catch { | |
| // autosave failure is not fatal | |
| } | |
| } | |
| export function deleteSession(name) { | |
| const path = join(sessionsDir(), `${name}.json`); | |
| if (existsSync(path)) rmSync(path); | |
| } | |