/** * Server startup utilities including migration * * ARCHITECTURE NOTES - Memory Auto-Load Implementation: * * There are two valid architectural approaches for memory auto-load: * * 1. MemoryManager.loadAndActivateAutoLoadMemories() (CURRENT IMPLEMENTATION) * - Auto-load logic lives in MemoryManager * - Called directly from Container.preparePortfolio() * - Follows DI pattern: managers own all operations for their element type * - Pros: Better encapsulation, clearer ownership, no duplicated responsibility * - Used by: Container.preparePortfolio() (current production approach) * * 2. ServerStartup.initializeAutoLoadMemories() (ALTERNATIVE APPROACH) * - Auto-load orchestrated by ServerStartup * - ServerStartup delegates to MemoryManager for actual operations * - Useful for: Complex startup sequences with multiple coordinated steps * - Pros: Centralizes startup concerns, easier to add cross-cutting features * - Used by: This class (kept for future use and alternative workflows) * * Both approaches are valid and maintained. Choose based on your needs: * - Use MemoryManager directly for simple, focused auto-load * - Use ServerStartup for complex orchestration with multiple startup phases * * See docs/architecture/memory-autoload-architectures.md for detailed comparison. */ import { PortfolioManager, ElementType } from '../portfolio/PortfolioManager.js'; import { MigrationManager } from '../portfolio/MigrationManager.js'; import { FileLockManager } from '../security/fileLockManager.js'; import { MemoryManager } from '../elements/memories/MemoryManager.js'; import { ConfigManager } from '../config/ConfigManager.js'; import { OperationalTelemetry } from '../telemetry/OperationalTelemetry.js'; export interface StartupOptions { skipMigration?: boolean; autoBackup?: boolean; } export declare class ServerStartup { private portfolioManager; private migrationManager; private fileLockManager; private memoryManager; private configManager; private operationalTelemetry; constructor(portfolioManager: PortfolioManager, fileLockManager: FileLockManager, configManager: ConfigManager, migrationManager: MigrationManager, memoryManager: MemoryManager, operationalTelemetry: OperationalTelemetry); /** * Initialize server with migration check */ initialize(options?: StartupOptions): Promise; /** * Process a single auto-load memory * FIX (SonarCloud): Extracted to reduce cognitive complexity * FIX (SonarCloud): Reduced parameter count by using options object * @private */ private processAutoLoadMemory; /** * Handle errors during auto-load memory processing * FIX (SonarCloud): Extracted to reduce cognitive complexity * @private */ private handleAutoLoadMemoryError; /** * Check and log size warnings for a memory * @private */ private checkMemorySizeWarnings; /** * Check if memory should be skipped due to budget limits * @private */ private shouldSkipMemory; /** * Log error recovery suggestions based on error type * @private */ private logAutoLoadErrorSuggestions; /** * Initialize auto-load memories * Issue #1430: Automatically load baseline memories on server startup * @private */ private initializeAutoLoadMemories; /** * Get migration status without performing migration */ getMigrationStatus(): Promise<{ hasLegacyPersonas: boolean; legacyPersonaCount: number; portfolioExists: boolean; portfolioStats: Record; }>; /** * Get the personas directory path for legacy compatibility */ getPersonasDir(): string; /** * Dispose of resources and cleanup * Cleans up managers and telemetry to prevent open handles */ dispose(): Promise; } //# sourceMappingURL=startup.d.ts.map