UNPKG

snes-disassembler

Version:

A Super Nintendo (SNES) ROM disassembler for 65816 assembly

232 lines 7.62 kB
/** * CLI Session Manager * * Handles session state persistence, recent files, and user preferences */ import { CLIOptions } from '../disassembly-handler'; export interface RecentFile { path: string; name: string; size: string; lastUsed: string; romInfo?: { title?: string; type?: string; size?: number; }; } export interface UserPreferences { defaultOutputDir?: string; globalOutputDir?: string; defaultFormat?: string; showHelp?: boolean; confirmActions?: boolean; maxRecentFiles?: number; advancedOptions?: { analysis?: boolean; enhancedDisasm?: boolean; bankAware?: boolean; detectFunctions?: boolean; generateDocs?: boolean; extractAssets?: boolean; quality?: boolean; disableAI?: boolean; }; assetPreferences?: { defaultAssetTypes?: string[]; defaultAssetFormats?: string[]; defaultAssetOutputDir?: string; }; brrPreferences?: { defaultSampleRate?: number; enableLooping?: boolean; maxSamples?: number; defaultOutputFormat?: string; }; analysisPreferences?: { defaultAnalysisTypes?: string[]; defaultAnalysisOutputDir?: string; generateHtmlReports?: boolean; includeQualityMetrics?: boolean; }; formatPreferences?: { includeComments?: boolean; prettyPrint?: boolean; generateSymbols?: boolean; useCustomLabels?: boolean; }; uiPreferences?: { preferInteractiveMode?: boolean; showProgressBars?: boolean; colorOutput?: boolean; compactOutput?: boolean; autoSaveResults?: boolean; }; aiPreferences?: { enableAIFeatures?: boolean; preferredAIModels?: Record<string, string>; aiConfidenceThreshold?: number; useContextualNaming?: boolean; generateAIDocumentation?: boolean; }; } export interface ProjectConfig { name: string; romFile: string; operations: string[]; settings: CLIOptions; createdAt: string; lastModified: string; } export interface CLISession { currentROM?: string; recentFiles: RecentFile[]; preferences: UserPreferences; projects: ProjectConfig[]; } export declare class SessionManager { private sessionFile; private session; constructor(); private getDefaultSession; load(): Promise<CLISession>; save(): Promise<void>; addRecentFile(filePath: string, romInfo?: { title?: string; type?: string; size?: number; }): Promise<void>; getRecentFiles(): RecentFile[]; addProject(project: ProjectConfig): Promise<void>; getProjects(): ProjectConfig[]; updatePreferences(preferences: Partial<UserPreferences>): void; getPreferences(): UserPreferences; setCurrentROM(romFile: string): void; getCurrentROM(): string | undefined; private formatFileSize; clearRecentFiles(): Promise<void>; removeRecentFile(filePath: string): Promise<void>; cleanupRecentFiles(): Promise<void>; /** * Set the global default output directory for the current session * @param outputDir - The directory path to set as global default */ setGlobalOutputDir(outputDir: string): Promise<void>; /** * Get the global default output directory for the current session * @returns The global output directory path, or undefined if not set */ getGlobalOutputDir(): string | undefined; /** * Clear the global default output directory setting */ clearGlobalOutputDir(): Promise<void>; /** * Get the effective output directory - global if set, otherwise default * @param specificDir - Optional specific directory that takes precedence * @returns The output directory to use */ getEffectiveOutputDir(specificDir?: string): string; /** * Check if a global output directory is currently set * @returns True if global output directory is set, false otherwise */ hasGlobalOutputDir(): boolean; /** * Update advanced analysis options preferences * @param options - Advanced options to update */ updateAdvancedOptions(options: Partial<UserPreferences['advancedOptions']>): Promise<void>; /** * Get advanced analysis options preferences * @returns Current advanced options preferences */ getAdvancedOptions(): UserPreferences['advancedOptions']; /** * Update asset extraction preferences * @param preferences - Asset preferences to update */ updateAssetPreferences(preferences: Partial<UserPreferences['assetPreferences']>): Promise<void>; /** * Get asset extraction preferences * @returns Current asset preferences */ getAssetPreferences(): UserPreferences['assetPreferences']; /** * Update BRR audio preferences * @param preferences - BRR preferences to update */ updateBRRPreferences(preferences: Partial<UserPreferences['brrPreferences']>): Promise<void>; /** * Get BRR audio preferences * @returns Current BRR preferences */ getBRRPreferences(): UserPreferences['brrPreferences']; /** * Update analysis preferences * @param preferences - Analysis preferences to update */ updateAnalysisPreferences(preferences: Partial<UserPreferences['analysisPreferences']>): Promise<void>; /** * Get analysis preferences * @returns Current analysis preferences */ getAnalysisPreferences(): UserPreferences['analysisPreferences']; /** * Update output format preferences * @param preferences - Format preferences to update */ updateFormatPreferences(preferences: Partial<UserPreferences['formatPreferences']>): Promise<void>; /** * Get output format preferences * @returns Current format preferences */ getFormatPreferences(): UserPreferences['formatPreferences']; /** * Update UI/UX preferences * @param preferences - UI preferences to update */ updateUIPreferences(preferences: Partial<UserPreferences['uiPreferences']>): Promise<void>; /** * Get UI/UX preferences * @returns Current UI preferences */ getUIPreferences(): UserPreferences['uiPreferences']; /** * Update AI feature preferences * @param preferences - AI preferences to update */ updateAIPreferences(preferences: Partial<UserPreferences['aiPreferences']>): Promise<void>; /** * Get AI feature preferences * @returns Current AI preferences */ getAIPreferences(): UserPreferences['aiPreferences']; /** * Apply saved preferences to CLI options * @param baseOptions - Base CLI options to extend * @returns CLI options with preferences applied */ applyPreferencesToOptions(baseOptions?: CLIOptions): CLIOptions; /** * Get preferences summary for display * @returns Human-readable summary of current preferences */ getPreferencesSummary(): string; /** * Reset all preferences to defaults */ resetPreferences(): Promise<void>; /** * Export preferences to a JSON file * @param filePath - Path to export preferences to */ exportPreferences(filePath: string): Promise<void>; /** * Import preferences from a JSON file * @param filePath - Path to import preferences from */ importPreferences(filePath: string): Promise<void>; } export declare const sessionManager: SessionManager; //# sourceMappingURL=session-manager.d.ts.map