import { existsSync, rmSync } from "node:fs"; import { resolve } from "node:path"; export interface ResetDevCacheOptions { rootDir?: string; cacheDir?: string; enabled?: boolean; } export function resetDevCache(options: ResetDevCacheOptions = {}): string { const rootDir = resolve(options.rootDir ?? process.cwd()); const cacheDir = resolve(rootDir, options.cacheDir ?? ".wrnexus"); if (options.enabled === false) { return cacheDir; } // Safety: never allow deleting the project root. if (cacheDir === rootDir) { throw new Error("Refusing to remove the project root as the WRNexus cache directory."); } if (existsSync(cacheDir)) { rmSync(cacheDir, { recursive: true, force: true, maxRetries: 3, retryDelay: 100, }); console.log(`[wrnexus] cleared generated cache: ${cacheDir}`); } return cacheDir; }