import type { PromptTemplateService } from "@ai-kod/agent-service"; import type { Workflow } from "@ai-kod/common"; import type { WorkflowConfig } from "@ai-kod/config"; import type { LocalWorkflowConfig } from "./config/workflow.config.js"; import { type LoadOperation, type PerformanceMetrics } from "./performance-monitor.js"; /** * Интерфейс для кэшированного workflow (унифицированная версия) */ export interface CachedWorkflow { workflow: Workflow; timestamp: number; source: "file" | "cache"; filePath: string; directory: string; fileSize: number; mtime: number; folderPath?: string; stageCount?: number; validatedAt?: number; validatedWithAgentService?: boolean; } /** * Статистика кэша */ export interface CacheStats { size: number; maxSize: number; hits: number; misses: number; hitRate: number; invalidations: number; lastAccess?: number; lastMiss?: number; oldestEntry?: number; newestEntry?: number; } /** * События, которые может генерировать сервис */ export interface WorkflowServiceEvents { "cache:hit": { workflowId: string; timestamp: number; }; "cache:miss": { workflowId: string; timestamp: number; }; "cache:invalidate": { workflowId?: string; timestamp: number; }; "file:changed": { workflowId: string; filePath: string; timestamp: number; }; error: { error: Error; workflowId?: string; timestamp: number; }; } /** * Сервис кэшированной загрузки workflow с LRU кэшем */ export declare class CachedWorkflowService { private cache; private loader; private fileWatcher?; private cleanupTimer?; private performanceTimer?; private stats; private eventListeners; private performanceMonitor; private localConfig; private agentService?; constructor(config: WorkflowConfig | LocalWorkflowConfig, agentService?: PromptTemplateService); /** * Загружает workflow с кэшированием */ loadWorkflow(workflowId: string): Promise; /** * Регистрирует произвольный YAML-файл как workflow и подготавливает кэш. * Возвращает нормализованный workflow и фактический идентификатор, который * следует использовать при дальнейших обращениях. */ registerWorkflowFromPath(workflowPath: string, preferredId?: string): Promise<{ workflowId: string; workflow: Workflow; }>; /** * Получает список всех workflow */ listWorkflows(): Promise>; /** * Инвалидирует кэш */ invalidate(workflowId?: string): void; /** * Получает статистику кэша */ getCacheStats(): CacheStats; /** * Предварительно прогревает кэш популярными workflow */ warmCache(workflowIds?: string[]): Promise; /** * Настраивает инвалидацию кэша при изменении файлов */ private setupCacheInvalidation; private ensureWorkflowValidity; private validateReferencedWorkflows; /** * Настраивает периодическую очистку кэша */ private setupCleanupTimer; /** * Подписка на события */ on(event: K, listener: (data: WorkflowServiceEvents[K]) => void): void; /** * Отписка от событий */ off(event: K, listener: (data: WorkflowServiceEvents[K]) => void): void; /** * Генерирует событие */ private emit; /** * Освобождает ресурсы */ dispose(): void; /** * Получает performance метрики */ getPerformanceMetrics(): PerformanceMetrics; /** * Получает детальную статистику по workflow */ getWorkflowPerformanceStats(workflowId: string): { loadCount: number; avgLoadTime: number; lastAccess: number; recentOperations: LoadOperation[]; } | null; /** * Получает рекомендации по оптимизации */ getOptimizationRecommendations(): string[]; /** * Настраивает периодическое логирование performance метрик */ private setupPerformanceLogging; /** * Получает конфигурацию сервиса */ getConfig(): LocalWorkflowConfig; }