/** * SkillManager - Refactored to extend BaseElementManager for shared CRUD logic. * Maintains skill-specific behaviors such as trigger validation, import/export, * and creation workflows while eliminating duplicated file handling code. */ import { BaseElementManager } from '../base/BaseElementManager.js'; import { Skill, SkillMetadata } from './Skill.js'; import { FileLockManager } from '../../security/fileLockManager.js'; import { PortfolioManager } from '../../portfolio/PortfolioManager.js'; import { ValidationRegistry } from '../../services/validation/ValidationRegistry.js'; import { SerializationService } from '../../services/SerializationService.js'; import { MetadataService } from '../../services/MetadataService.js'; import { FileOperationsService } from '../../services/FileOperationsService.js'; import { FileWatchService } from '../../services/FileWatchService.js'; export declare class SkillManager extends BaseElementManager { private metadataService; private triggerValidationService; private validationService; private serializationService; private activeSkillNames; constructor(portfolioManager: PortfolioManager, fileLockManager: FileLockManager, fileOperationsService: FileOperationsService, validationRegistry: ValidationRegistry, serializationService: SerializationService, metadataService: MetadataService, fileWatchService?: FileWatchService, memoryBudget?: import('../../cache/CacheMemoryBudget.js').CacheMemoryBudget, backupService?: import('../../services/BackupService.js').BackupService); protected getElementLabel(): string; /** * Create a new skill element and persist it to disk. * FIX: Issue #20 - Add duplicate name checking */ create(data: Partial & { content?: string; instructions?: string; }): Promise; /** * Import a skill from YAML or JSON input formats. */ importElement(data: string, format?: 'yaml' | 'json'): Promise; /** * Export a skill to YAML or JSON. */ exportElement(element: Skill, format?: 'yaml' | 'json'): Promise; getFileExtension(): string; /** * Validate and normalize metadata parsed from frontmatter. */ protected parseMetadata(data: any): Promise; /** * Create skill instance from metadata/content. * Dual-field: detects v2 format (instructions in YAML frontmatter) vs v1 (body = instructions). */ protected createElement(metadata: SkillMetadata, bodyContent: string): Skill; /** * Serialize a skill to markdown with frontmatter. * v2.0 format: instructions in YAML frontmatter, content as body. */ protected serializeElement(element: Skill): Promise; private buildDefaultBody; /** * Override list() to apply active status to skills */ list(): Promise; /** * Activate a skill by name or identifier * * Issue #24 (LOW PRIORITY): Performance optimization using findByName() * Issue #24 (LOW PRIORITY): Consistent error messages using ElementMessages * Issue #24 (LOW PRIORITY): Cleanup trigger for memory leak prevention */ activateSkill(identifier: string): Promise<{ success: boolean; message: string; skill?: Skill; }>; /** * Deactivate a skill by name or identifier * * Issue #24 (LOW PRIORITY): Performance optimization using findByName() * Issue #24 (LOW PRIORITY): Consistent error messages using ElementMessages */ deactivateSkill(identifier: string): Promise<{ success: boolean; message: string; }>; /** * Get all active skills */ getActiveSkills(): Promise; /** * Check if active set cleanup is needed and perform cleanup if necessary * * Issue #24 (LOW PRIORITY): Memory leak prevention * * CLEANUP STRATEGY: * - Triggers when set reaches 90% of maximum capacity * - Validates that all active skills still exist in portfolio * - Removes stale references (skills that were deleted) * - Logs cleanup operations for monitoring * * PERFORMANCE NOTES: * - Only runs when threshold is reached (not on every activation) * - Uses efficient Set operations * - Minimal impact on activation performance * * @private */ private checkAndCleanupActiveSet; /** * Clean up stale entries from active skills set * * Issue #24 (LOW PRIORITY): Memory leak prevention * * Validates that all active skills still exist and removes orphaned references. * This prevents memory leaks from deleted skills that weren't properly deactivated. * * @private */ private cleanupStaleActiveSkills; /** * Normalize and validate skill triggers. */ private validateAndProcessTriggers; } //# sourceMappingURL=SkillManager.d.ts.map