snes-disassembler
Version:
A Super Nintendo (SNES) ROM disassembler for 65816 assembly
232 lines • 7.62 kB
TypeScript
/**
* 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