import { mkdir, readFile, rm, writeFile } from 'node:fs/promises'; import path from 'node:path'; export interface StoredReconnectCredential { readonly projectName: string; readonly credential: string; readonly wsUrl: string; readonly updatedAt: string; } export function credentialFilePath(baseDir: string): string { return path.join(baseDir, 'local-agent-reconnect.json'); } export async function loadReconnectCredential(baseDir: string): Promise { try { const raw = await readFile(credentialFilePath(baseDir), 'utf8'); const parsed = JSON.parse(raw) as StoredReconnectCredential; if (!parsed?.projectName || !parsed?.credential || !parsed?.wsUrl) { return undefined; } return parsed; } catch { return undefined; } } export async function saveReconnectCredential( baseDir: string, value: StoredReconnectCredential, ): Promise { await mkdir(baseDir, { recursive: true }); await writeFile(credentialFilePath(baseDir), JSON.stringify(value, null, 2), 'utf8'); } export async function clearReconnectCredential(baseDir: string): Promise { try { await rm(credentialFilePath(baseDir)); } catch { /* already absent */ } }