@pcircle/claude-code-buddy-mcp 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +599 -0
- package/README.zh-TW.md +577 -0
- package/dist/__benchmarks__/performance-fixes.bench.d.ts +8 -0
- package/dist/__benchmarks__/performance-fixes.bench.d.ts.map +1 -0
- package/dist/__benchmarks__/performance-fixes.bench.js +213 -0
- package/dist/__benchmarks__/performance-fixes.bench.js.map +1 -0
- package/dist/agents/DevelopmentButler.d.ts +80 -0
- package/dist/agents/DevelopmentButler.d.ts.map +1 -0
- package/dist/agents/DevelopmentButler.js +328 -0
- package/dist/agents/DevelopmentButler.js.map +1 -0
- package/dist/agents/E2EHealingAgent.d.ts +30 -0
- package/dist/agents/E2EHealingAgent.d.ts.map +1 -0
- package/dist/agents/E2EHealingAgent.js +162 -0
- package/dist/agents/E2EHealingAgent.js.map +1 -0
- package/dist/agents/TestWriterAgent.d.ts +26 -0
- package/dist/agents/TestWriterAgent.d.ts.map +1 -0
- package/dist/agents/TestWriterAgent.js +139 -0
- package/dist/agents/TestWriterAgent.js.map +1 -0
- package/dist/agents/base/AgentExecutor.d.ts +7 -0
- package/dist/agents/base/AgentExecutor.d.ts.map +1 -0
- package/dist/agents/base/AgentExecutor.js +13 -0
- package/dist/agents/base/AgentExecutor.js.map +1 -0
- package/dist/agents/base/index.d.ts +2 -0
- package/dist/agents/base/index.d.ts.map +1 -0
- package/dist/agents/base/index.js +2 -0
- package/dist/agents/base/index.js.map +1 -0
- package/dist/agents/e2e-healing/analyzers/EvidenceCollector.d.ts +24 -0
- package/dist/agents/e2e-healing/analyzers/EvidenceCollector.d.ts.map +1 -0
- package/dist/agents/e2e-healing/analyzers/EvidenceCollector.js +55 -0
- package/dist/agents/e2e-healing/analyzers/EvidenceCollector.js.map +1 -0
- package/dist/agents/e2e-healing/analyzers/FailureAnalyzer.d.ts +22 -0
- package/dist/agents/e2e-healing/analyzers/FailureAnalyzer.d.ts.map +1 -0
- package/dist/agents/e2e-healing/analyzers/FailureAnalyzer.js +36 -0
- package/dist/agents/e2e-healing/analyzers/FailureAnalyzer.js.map +1 -0
- package/dist/agents/e2e-healing/config.d.ts +4 -0
- package/dist/agents/e2e-healing/config.d.ts.map +1 -0
- package/dist/agents/e2e-healing/config.js +28 -0
- package/dist/agents/e2e-healing/config.js.map +1 -0
- package/dist/agents/e2e-healing/generators/FixGenerator.d.ts +21 -0
- package/dist/agents/e2e-healing/generators/FixGenerator.d.ts.map +1 -0
- package/dist/agents/e2e-healing/generators/FixGenerator.js +33 -0
- package/dist/agents/e2e-healing/generators/FixGenerator.js.map +1 -0
- package/dist/agents/e2e-healing/orchestrator/TestOrchestrator.d.ts +29 -0
- package/dist/agents/e2e-healing/orchestrator/TestOrchestrator.d.ts.map +1 -0
- package/dist/agents/e2e-healing/orchestrator/TestOrchestrator.js +70 -0
- package/dist/agents/e2e-healing/orchestrator/TestOrchestrator.js.map +1 -0
- package/dist/agents/e2e-healing/policy/GraduatedAutonomyPolicy.d.ts +30 -0
- package/dist/agents/e2e-healing/policy/GraduatedAutonomyPolicy.d.ts.map +1 -0
- package/dist/agents/e2e-healing/policy/GraduatedAutonomyPolicy.js +115 -0
- package/dist/agents/e2e-healing/policy/GraduatedAutonomyPolicy.js.map +1 -0
- package/dist/agents/e2e-healing/runners/PlaywrightRunner.d.ts +19 -0
- package/dist/agents/e2e-healing/runners/PlaywrightRunner.d.ts.map +1 -0
- package/dist/agents/e2e-healing/runners/PlaywrightRunner.js +79 -0
- package/dist/agents/e2e-healing/runners/PlaywrightRunner.js.map +1 -0
- package/dist/agents/e2e-healing/safety/CircuitBreaker.d.ts +26 -0
- package/dist/agents/e2e-healing/safety/CircuitBreaker.d.ts.map +1 -0
- package/dist/agents/e2e-healing/safety/CircuitBreaker.js +75 -0
- package/dist/agents/e2e-healing/safety/CircuitBreaker.js.map +1 -0
- package/dist/agents/e2e-healing/safety/RollbackManager.d.ts +31 -0
- package/dist/agents/e2e-healing/safety/RollbackManager.d.ts.map +1 -0
- package/dist/agents/e2e-healing/safety/RollbackManager.js +130 -0
- package/dist/agents/e2e-healing/safety/RollbackManager.js.map +1 -0
- package/dist/agents/e2e-healing/safety/SafetyGate.d.ts +21 -0
- package/dist/agents/e2e-healing/safety/SafetyGate.d.ts.map +1 -0
- package/dist/agents/e2e-healing/safety/SafetyGate.js +62 -0
- package/dist/agents/e2e-healing/safety/SafetyGate.js.map +1 -0
- package/dist/agents/e2e-healing/safety/ScopeLimiter.d.ts +14 -0
- package/dist/agents/e2e-healing/safety/ScopeLimiter.d.ts.map +1 -0
- package/dist/agents/e2e-healing/safety/ScopeLimiter.js +36 -0
- package/dist/agents/e2e-healing/safety/ScopeLimiter.js.map +1 -0
- package/dist/agents/e2e-healing/sdk/AgentSDKAdapter.d.ts +29 -0
- package/dist/agents/e2e-healing/sdk/AgentSDKAdapter.d.ts.map +1 -0
- package/dist/agents/e2e-healing/sdk/AgentSDKAdapter.js +86 -0
- package/dist/agents/e2e-healing/sdk/AgentSDKAdapter.js.map +1 -0
- package/dist/agents/e2e-healing/types.d.ts +46 -0
- package/dist/agents/e2e-healing/types.d.ts.map +1 -0
- package/dist/agents/e2e-healing/types.js +2 -0
- package/dist/agents/e2e-healing/types.js.map +1 -0
- package/dist/agents/knowledge/KnowledgeGraph.d.ts +26 -0
- package/dist/agents/knowledge/KnowledgeGraph.d.ts.map +1 -0
- package/dist/agents/knowledge/KnowledgeGraph.js +106 -0
- package/dist/agents/knowledge/KnowledgeGraph.js.map +1 -0
- package/dist/agents/knowledge/KnowledgeGraphSQLite.d.ts +42 -0
- package/dist/agents/knowledge/KnowledgeGraphSQLite.d.ts.map +1 -0
- package/dist/agents/knowledge/KnowledgeGraphSQLite.js +349 -0
- package/dist/agents/knowledge/KnowledgeGraphSQLite.js.map +1 -0
- package/dist/agents/knowledge/index.d.ts +94 -0
- package/dist/agents/knowledge/index.d.ts.map +1 -0
- package/dist/agents/knowledge/index.js +296 -0
- package/dist/agents/knowledge/index.js.map +1 -0
- package/dist/agents/knowledge/storage/KnowledgeGraphStore.d.ts +25 -0
- package/dist/agents/knowledge/storage/KnowledgeGraphStore.d.ts.map +1 -0
- package/dist/agents/knowledge/storage/KnowledgeGraphStore.js +342 -0
- package/dist/agents/knowledge/storage/KnowledgeGraphStore.js.map +1 -0
- package/dist/agents/knowledge/types.d.ts +21 -0
- package/dist/agents/knowledge/types.d.ts.map +1 -0
- package/dist/agents/knowledge/types.js +2 -0
- package/dist/agents/knowledge/types.js.map +1 -0
- package/dist/agents/templates/ci-templates.d.ts +8 -0
- package/dist/agents/templates/ci-templates.d.ts.map +1 -0
- package/dist/agents/templates/ci-templates.js +119 -0
- package/dist/agents/templates/ci-templates.js.map +1 -0
- package/dist/agents/templates/test-templates.d.ts +18 -0
- package/dist/agents/templates/test-templates.d.ts.map +1 -0
- package/dist/agents/templates/test-templates.js +22 -0
- package/dist/agents/templates/test-templates.js.map +1 -0
- package/dist/config/index.d.ts +51 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +96 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/models.d.ts +47 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +57 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/simple-config.d.ts +32 -0
- package/dist/config/simple-config.d.ts.map +1 -0
- package/dist/config/simple-config.js +225 -0
- package/dist/config/simple-config.js.map +1 -0
- package/dist/core/AgentRegistry.d.ts +32 -0
- package/dist/core/AgentRegistry.d.ts.map +1 -0
- package/dist/core/AgentRegistry.js +281 -0
- package/dist/core/AgentRegistry.js.map +1 -0
- package/dist/core/BackgroundExecutor.d.ts +56 -0
- package/dist/core/BackgroundExecutor.d.ts.map +1 -0
- package/dist/core/BackgroundExecutor.js +492 -0
- package/dist/core/BackgroundExecutor.js.map +1 -0
- package/dist/core/BackgroundExecutorConstants.d.ts +8 -0
- package/dist/core/BackgroundExecutorConstants.d.ts.map +1 -0
- package/dist/core/BackgroundExecutorConstants.js +8 -0
- package/dist/core/BackgroundExecutorConstants.js.map +1 -0
- package/dist/core/CheckpointDetector.d.ts +25 -0
- package/dist/core/CheckpointDetector.d.ts.map +1 -0
- package/dist/core/CheckpointDetector.js +67 -0
- package/dist/core/CheckpointDetector.js.map +1 -0
- package/dist/core/ExecutionMonitor.d.ts +29 -0
- package/dist/core/ExecutionMonitor.d.ts.map +1 -0
- package/dist/core/ExecutionMonitor.js +124 -0
- package/dist/core/ExecutionMonitor.js.map +1 -0
- package/dist/core/ExecutionQueue.d.ts +21 -0
- package/dist/core/ExecutionQueue.d.ts.map +1 -0
- package/dist/core/ExecutionQueue.js +104 -0
- package/dist/core/ExecutionQueue.js.map +1 -0
- package/dist/core/HealthCheck.d.ts +39 -0
- package/dist/core/HealthCheck.d.ts.map +1 -0
- package/dist/core/HealthCheck.js +219 -0
- package/dist/core/HealthCheck.js.map +1 -0
- package/dist/core/HookIntegration.d.ts +45 -0
- package/dist/core/HookIntegration.d.ts.map +1 -0
- package/dist/core/HookIntegration.js +241 -0
- package/dist/core/HookIntegration.js.map +1 -0
- package/dist/core/MCPToolInterface.d.ts +120 -0
- package/dist/core/MCPToolInterface.d.ts.map +1 -0
- package/dist/core/MCPToolInterface.js +376 -0
- package/dist/core/MCPToolInterface.js.map +1 -0
- package/dist/core/PromptEnhancer.d.ts +13 -0
- package/dist/core/PromptEnhancer.d.ts.map +1 -0
- package/dist/core/PromptEnhancer.js +112 -0
- package/dist/core/PromptEnhancer.js.map +1 -0
- package/dist/core/ResourceMonitor.d.ts +32 -0
- package/dist/core/ResourceMonitor.d.ts.map +1 -0
- package/dist/core/ResourceMonitor.js +181 -0
- package/dist/core/ResourceMonitor.js.map +1 -0
- package/dist/core/ResultHandler.d.ts +9 -0
- package/dist/core/ResultHandler.d.ts.map +1 -0
- package/dist/core/ResultHandler.js +60 -0
- package/dist/core/ResultHandler.js.map +1 -0
- package/dist/core/ServiceLocator.d.ts +10 -0
- package/dist/core/ServiceLocator.d.ts.map +1 -0
- package/dist/core/ServiceLocator.js +29 -0
- package/dist/core/ServiceLocator.js.map +1 -0
- package/dist/core/SessionContextMonitor.d.ts +41 -0
- package/dist/core/SessionContextMonitor.d.ts.map +1 -0
- package/dist/core/SessionContextMonitor.js +156 -0
- package/dist/core/SessionContextMonitor.js.map +1 -0
- package/dist/core/SessionTokenTracker.d.ts +43 -0
- package/dist/core/SessionTokenTracker.d.ts.map +1 -0
- package/dist/core/SessionTokenTracker.js +76 -0
- package/dist/core/SessionTokenTracker.js.map +1 -0
- package/dist/core/TaskScheduler.d.ts +19 -0
- package/dist/core/TaskScheduler.d.ts.map +1 -0
- package/dist/core/TaskScheduler.js +59 -0
- package/dist/core/TaskScheduler.js.map +1 -0
- package/dist/core/WorkflowGuidanceEngine.d.ts +35 -0
- package/dist/core/WorkflowGuidanceEngine.d.ts.map +1 -0
- package/dist/core/WorkflowGuidanceEngine.js +104 -0
- package/dist/core/WorkflowGuidanceEngine.js.map +1 -0
- package/dist/core/types.d.ts +66 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +11 -0
- package/dist/core/types.js.map +1 -0
- package/dist/db/ConnectionPool.d.ts +47 -0
- package/dist/db/ConnectionPool.d.ts.map +1 -0
- package/dist/db/ConnectionPool.js +432 -0
- package/dist/db/ConnectionPool.js.map +1 -0
- package/dist/db/QueryCache.d.ts +46 -0
- package/dist/db/QueryCache.d.ts.map +1 -0
- package/dist/db/QueryCache.js +229 -0
- package/dist/db/QueryCache.js.map +1 -0
- package/dist/errors/index.d.ts +62 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +124 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/evolution/ABTestManager.d.ts +21 -0
- package/dist/evolution/ABTestManager.d.ts.map +1 -0
- package/dist/evolution/ABTestManager.js +183 -0
- package/dist/evolution/ABTestManager.js.map +1 -0
- package/dist/evolution/AdaptationEngine.d.ts +60 -0
- package/dist/evolution/AdaptationEngine.d.ts.map +1 -0
- package/dist/evolution/AdaptationEngine.js +313 -0
- package/dist/evolution/AdaptationEngine.js.map +1 -0
- package/dist/evolution/AgentEvolutionConfig.d.ts +32 -0
- package/dist/evolution/AgentEvolutionConfig.d.ts.map +1 -0
- package/dist/evolution/AgentEvolutionConfig.js +329 -0
- package/dist/evolution/AgentEvolutionConfig.js.map +1 -0
- package/dist/evolution/ContextMatcher.d.ts +24 -0
- package/dist/evolution/ContextMatcher.d.ts.map +1 -0
- package/dist/evolution/ContextMatcher.js +85 -0
- package/dist/evolution/ContextMatcher.js.map +1 -0
- package/dist/evolution/EvolutionBootstrap.d.ts +69 -0
- package/dist/evolution/EvolutionBootstrap.d.ts.map +1 -0
- package/dist/evolution/EvolutionBootstrap.js +332 -0
- package/dist/evolution/EvolutionBootstrap.js.map +1 -0
- package/dist/evolution/EvolutionMonitor.d.ts +111 -0
- package/dist/evolution/EvolutionMonitor.d.ts.map +1 -0
- package/dist/evolution/EvolutionMonitor.js +540 -0
- package/dist/evolution/EvolutionMonitor.js.map +1 -0
- package/dist/evolution/FeedbackCollector.d.ts +26 -0
- package/dist/evolution/FeedbackCollector.d.ts.map +1 -0
- package/dist/evolution/FeedbackCollector.js +93 -0
- package/dist/evolution/FeedbackCollector.js.map +1 -0
- package/dist/evolution/KnowledgeTransferManager.d.ts +16 -0
- package/dist/evolution/KnowledgeTransferManager.d.ts.map +1 -0
- package/dist/evolution/KnowledgeTransferManager.js +34 -0
- package/dist/evolution/KnowledgeTransferManager.js.map +1 -0
- package/dist/evolution/LearningManager.d.ts +79 -0
- package/dist/evolution/LearningManager.d.ts.map +1 -0
- package/dist/evolution/LearningManager.js +582 -0
- package/dist/evolution/LearningManager.js.map +1 -0
- package/dist/evolution/LearningManagerConstants.d.ts +55 -0
- package/dist/evolution/LearningManagerConstants.d.ts.map +1 -0
- package/dist/evolution/LearningManagerConstants.js +55 -0
- package/dist/evolution/LearningManagerConstants.js.map +1 -0
- package/dist/evolution/MultiObjectiveOptimizer.d.ts +9 -0
- package/dist/evolution/MultiObjectiveOptimizer.d.ts.map +1 -0
- package/dist/evolution/MultiObjectiveOptimizer.js +92 -0
- package/dist/evolution/MultiObjectiveOptimizer.js.map +1 -0
- package/dist/evolution/PatternExplainer.d.ts +14 -0
- package/dist/evolution/PatternExplainer.d.ts.map +1 -0
- package/dist/evolution/PatternExplainer.js +113 -0
- package/dist/evolution/PatternExplainer.js.map +1 -0
- package/dist/evolution/PerformanceTracker.d.ts +43 -0
- package/dist/evolution/PerformanceTracker.d.ts.map +1 -0
- package/dist/evolution/PerformanceTracker.js +453 -0
- package/dist/evolution/PerformanceTracker.js.map +1 -0
- package/dist/evolution/PerformanceTrackerConstants.d.ts +5 -0
- package/dist/evolution/PerformanceTrackerConstants.d.ts.map +1 -0
- package/dist/evolution/PerformanceTrackerConstants.js +5 -0
- package/dist/evolution/PerformanceTrackerConstants.js.map +1 -0
- package/dist/evolution/StatisticalAnalyzer.d.ts +20 -0
- package/dist/evolution/StatisticalAnalyzer.d.ts.map +1 -0
- package/dist/evolution/StatisticalAnalyzer.js +154 -0
- package/dist/evolution/StatisticalAnalyzer.js.map +1 -0
- package/dist/evolution/TransferabilityChecker.d.ts +11 -0
- package/dist/evolution/TransferabilityChecker.d.ts.map +1 -0
- package/dist/evolution/TransferabilityChecker.js +78 -0
- package/dist/evolution/TransferabilityChecker.js.map +1 -0
- package/dist/evolution/index.d.ts +11 -0
- package/dist/evolution/index.d.ts.map +1 -0
- package/dist/evolution/index.js +9 -0
- package/dist/evolution/index.js.map +1 -0
- package/dist/evolution/instrumentation/SpanTracker.d.ts +64 -0
- package/dist/evolution/instrumentation/SpanTracker.d.ts.map +1 -0
- package/dist/evolution/instrumentation/SpanTracker.js +229 -0
- package/dist/evolution/instrumentation/SpanTracker.js.map +1 -0
- package/dist/evolution/instrumentation/withEvolutionTracking.d.ts +19 -0
- package/dist/evolution/instrumentation/withEvolutionTracking.d.ts.map +1 -0
- package/dist/evolution/instrumentation/withEvolutionTracking.js +256 -0
- package/dist/evolution/instrumentation/withEvolutionTracking.js.map +1 -0
- package/dist/evolution/integration-test-scenarios.d.ts +56 -0
- package/dist/evolution/integration-test-scenarios.d.ts.map +1 -0
- package/dist/evolution/integration-test-scenarios.js +131 -0
- package/dist/evolution/integration-test-scenarios.js.map +1 -0
- package/dist/evolution/links/LinkManager.d.ts +17 -0
- package/dist/evolution/links/LinkManager.d.ts.map +1 -0
- package/dist/evolution/links/LinkManager.js +41 -0
- package/dist/evolution/links/LinkManager.js.map +1 -0
- package/dist/evolution/storage/EvolutionStore.d.ts +87 -0
- package/dist/evolution/storage/EvolutionStore.d.ts.map +1 -0
- package/dist/evolution/storage/EvolutionStore.js +2 -0
- package/dist/evolution/storage/EvolutionStore.js.map +1 -0
- package/dist/evolution/storage/IEvolutionStore.d.ts +87 -0
- package/dist/evolution/storage/IEvolutionStore.d.ts.map +1 -0
- package/dist/evolution/storage/IEvolutionStore.js +2 -0
- package/dist/evolution/storage/IEvolutionStore.js.map +1 -0
- package/dist/evolution/storage/SQLiteStore.d.ts +115 -0
- package/dist/evolution/storage/SQLiteStore.d.ts.map +1 -0
- package/dist/evolution/storage/SQLiteStore.enhanced.d.ts +35 -0
- package/dist/evolution/storage/SQLiteStore.enhanced.d.ts.map +1 -0
- package/dist/evolution/storage/SQLiteStore.enhanced.js +514 -0
- package/dist/evolution/storage/SQLiteStore.enhanced.js.map +1 -0
- package/dist/evolution/storage/SQLiteStore.js +915 -0
- package/dist/evolution/storage/SQLiteStore.js.map +1 -0
- package/dist/evolution/storage/deprecated/SQLiteStore.basic.d.ts +109 -0
- package/dist/evolution/storage/deprecated/SQLiteStore.basic.d.ts.map +1 -0
- package/dist/evolution/storage/deprecated/SQLiteStore.basic.js +1033 -0
- package/dist/evolution/storage/deprecated/SQLiteStore.basic.js.map +1 -0
- package/dist/evolution/storage/index.d.ts +6 -0
- package/dist/evolution/storage/index.d.ts.map +1 -0
- package/dist/evolution/storage/index.js +3 -0
- package/dist/evolution/storage/index.js.map +1 -0
- package/dist/evolution/storage/migrations/MigrationManager.d.ts +17 -0
- package/dist/evolution/storage/migrations/MigrationManager.d.ts.map +1 -0
- package/dist/evolution/storage/migrations/MigrationManager.js +242 -0
- package/dist/evolution/storage/migrations/MigrationManager.js.map +1 -0
- package/dist/evolution/storage/repositories/AdaptationRepository.d.ts +17 -0
- package/dist/evolution/storage/repositories/AdaptationRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/AdaptationRepository.js +82 -0
- package/dist/evolution/storage/repositories/AdaptationRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/CostRecordsRepository.d.ts +43 -0
- package/dist/evolution/storage/repositories/CostRecordsRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/CostRecordsRepository.js +157 -0
- package/dist/evolution/storage/repositories/CostRecordsRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/ExecutionRepository.d.ts +12 -0
- package/dist/evolution/storage/repositories/ExecutionRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/ExecutionRepository.js +87 -0
- package/dist/evolution/storage/repositories/ExecutionRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/PatternRepository.d.ts +12 -0
- package/dist/evolution/storage/repositories/PatternRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/PatternRepository.js +150 -0
- package/dist/evolution/storage/repositories/PatternRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/PerformanceMetricsRepository.d.ts +39 -0
- package/dist/evolution/storage/repositories/PerformanceMetricsRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/PerformanceMetricsRepository.js +130 -0
- package/dist/evolution/storage/repositories/PerformanceMetricsRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/RewardRepository.d.ts +17 -0
- package/dist/evolution/storage/repositories/RewardRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/RewardRepository.js +82 -0
- package/dist/evolution/storage/repositories/RewardRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/SpanRepository.d.ts +14 -0
- package/dist/evolution/storage/repositories/SpanRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/SpanRepository.js +191 -0
- package/dist/evolution/storage/repositories/SpanRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/StatsRepository.d.ts +16 -0
- package/dist/evolution/storage/repositories/StatsRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/StatsRepository.js +271 -0
- package/dist/evolution/storage/repositories/StatsRepository.js.map +1 -0
- package/dist/evolution/storage/repositories/TaskRepository.d.ts +16 -0
- package/dist/evolution/storage/repositories/TaskRepository.d.ts.map +1 -0
- package/dist/evolution/storage/repositories/TaskRepository.js +93 -0
- package/dist/evolution/storage/repositories/TaskRepository.js.map +1 -0
- package/dist/evolution/storage/schema.d.ts +81 -0
- package/dist/evolution/storage/schema.d.ts.map +1 -0
- package/dist/evolution/storage/schema.js +241 -0
- package/dist/evolution/storage/schema.js.map +1 -0
- package/dist/evolution/storage/types.d.ts +402 -0
- package/dist/evolution/storage/types.d.ts.map +1 -0
- package/dist/evolution/storage/types.js +2 -0
- package/dist/evolution/storage/types.js.map +1 -0
- package/dist/evolution/storage/validation.d.ts +12 -0
- package/dist/evolution/storage/validation.d.ts.map +1 -0
- package/dist/evolution/storage/validation.js +88 -0
- package/dist/evolution/storage/validation.js.map +1 -0
- package/dist/evolution/types.d.ts +214 -0
- package/dist/evolution/types.d.ts.map +1 -0
- package/dist/evolution/types.js +2 -0
- package/dist/evolution/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge-graph/index.d.ts +27 -0
- package/dist/knowledge-graph/index.d.ts.map +1 -0
- package/dist/knowledge-graph/index.js +353 -0
- package/dist/knowledge-graph/index.js.map +1 -0
- package/dist/knowledge-graph/types.d.ts +37 -0
- package/dist/knowledge-graph/types.d.ts.map +1 -0
- package/dist/knowledge-graph/types.js +2 -0
- package/dist/knowledge-graph/types.js.map +1 -0
- package/dist/management/UninstallManager.d.ts +23 -0
- package/dist/management/UninstallManager.d.ts.map +1 -0
- package/dist/management/UninstallManager.js +186 -0
- package/dist/management/UninstallManager.js.map +1 -0
- package/dist/management/index.d.ts +3 -0
- package/dist/management/index.d.ts.map +1 -0
- package/dist/management/index.js +2 -0
- package/dist/management/index.js.map +1 -0
- package/dist/mcp/BuddyCommands.d.ts +13 -0
- package/dist/mcp/BuddyCommands.d.ts.map +1 -0
- package/dist/mcp/BuddyCommands.js +110 -0
- package/dist/mcp/BuddyCommands.js.map +1 -0
- package/dist/mcp/ClaudeMdReloader.d.ts +37 -0
- package/dist/mcp/ClaudeMdReloader.d.ts.map +1 -0
- package/dist/mcp/ClaudeMdReloader.js +92 -0
- package/dist/mcp/ClaudeMdReloader.js.map +1 -0
- package/dist/mcp/HumanInLoopUI.d.ts +23 -0
- package/dist/mcp/HumanInLoopUI.d.ts.map +1 -0
- package/dist/mcp/HumanInLoopUI.js +92 -0
- package/dist/mcp/HumanInLoopUI.js.map +1 -0
- package/dist/mcp/ServerInitializer.d.ts +47 -0
- package/dist/mcp/ServerInitializer.d.ts.map +1 -0
- package/dist/mcp/ServerInitializer.js +89 -0
- package/dist/mcp/ServerInitializer.js.map +1 -0
- package/dist/mcp/SessionBootstrapper.d.ts +11 -0
- package/dist/mcp/SessionBootstrapper.d.ts.map +1 -0
- package/dist/mcp/SessionBootstrapper.js +67 -0
- package/dist/mcp/SessionBootstrapper.js.map +1 -0
- package/dist/mcp/ToolDefinitions.d.ts +42 -0
- package/dist/mcp/ToolDefinitions.d.ts.map +1 -0
- package/dist/mcp/ToolDefinitions.js +234 -0
- package/dist/mcp/ToolDefinitions.js.map +1 -0
- package/dist/mcp/ToolRouter.d.ts +22 -0
- package/dist/mcp/ToolRouter.d.ts.map +1 -0
- package/dist/mcp/ToolRouter.js +102 -0
- package/dist/mcp/ToolRouter.js.map +1 -0
- package/dist/mcp/handlers/BuddyHandlers.d.ts +14 -0
- package/dist/mcp/handlers/BuddyHandlers.d.ts.map +1 -0
- package/dist/mcp/handlers/BuddyHandlers.js +152 -0
- package/dist/mcp/handlers/BuddyHandlers.js.map +1 -0
- package/dist/mcp/handlers/ResourceHandlers.d.ts +3 -0
- package/dist/mcp/handlers/ResourceHandlers.d.ts.map +1 -0
- package/dist/mcp/handlers/ResourceHandlers.js +86 -0
- package/dist/mcp/handlers/ResourceHandlers.js.map +1 -0
- package/dist/mcp/handlers/ToolHandlers.d.ts +52 -0
- package/dist/mcp/handlers/ToolHandlers.d.ts.map +1 -0
- package/dist/mcp/handlers/ToolHandlers.js +914 -0
- package/dist/mcp/handlers/ToolHandlers.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +4 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +4 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/schemas/OutputSchemas.d.ts +368 -0
- package/dist/mcp/schemas/OutputSchemas.d.ts.map +1 -0
- package/dist/mcp/schemas/OutputSchemas.js +191 -0
- package/dist/mcp/schemas/OutputSchemas.js.map +1 -0
- package/dist/mcp/server.d.ts +17 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +184 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/add-observations.d.ts +48 -0
- package/dist/mcp/tools/add-observations.d.ts.map +1 -0
- package/dist/mcp/tools/add-observations.js +64 -0
- package/dist/mcp/tools/add-observations.js.map +1 -0
- package/dist/mcp/tools/buddy-do.d.ts +14 -0
- package/dist/mcp/tools/buddy-do.d.ts.map +1 -0
- package/dist/mcp/tools/buddy-do.js +77 -0
- package/dist/mcp/tools/buddy-do.js.map +1 -0
- package/dist/mcp/tools/buddy-help.d.ts +13 -0
- package/dist/mcp/tools/buddy-help.d.ts.map +1 -0
- package/dist/mcp/tools/buddy-help.js +52 -0
- package/dist/mcp/tools/buddy-help.js.map +1 -0
- package/dist/mcp/tools/buddy-remember.d.ts +15 -0
- package/dist/mcp/tools/buddy-remember.d.ts.map +1 -0
- package/dist/mcp/tools/buddy-remember.js +77 -0
- package/dist/mcp/tools/buddy-remember.js.map +1 -0
- package/dist/mcp/tools/create-entities.d.ts +57 -0
- package/dist/mcp/tools/create-entities.d.ts.map +1 -0
- package/dist/mcp/tools/create-entities.js +64 -0
- package/dist/mcp/tools/create-entities.js.map +1 -0
- package/dist/mcp/tools/create-relations.d.ts +60 -0
- package/dist/mcp/tools/create-relations.d.ts.map +1 -0
- package/dist/mcp/tools/create-relations.js +84 -0
- package/dist/mcp/tools/create-relations.js.map +1 -0
- package/dist/mcp/tools/health-check.d.ts +10 -0
- package/dist/mcp/tools/health-check.d.ts.map +1 -0
- package/dist/mcp/tools/health-check.js +37 -0
- package/dist/mcp/tools/health-check.js.map +1 -0
- package/dist/mcp/tools/recall-memory.d.ts +31 -0
- package/dist/mcp/tools/recall-memory.d.ts.map +1 -0
- package/dist/mcp/tools/recall-memory.js +31 -0
- package/dist/mcp/tools/recall-memory.js.map +1 -0
- package/dist/mcp/validation.d.ts +88 -0
- package/dist/mcp/validation.d.ts.map +1 -0
- package/dist/mcp/validation.js +119 -0
- package/dist/mcp/validation.js.map +1 -0
- package/dist/memory/ProjectAutoTracker.d.ts +36 -0
- package/dist/memory/ProjectAutoTracker.d.ts.map +1 -0
- package/dist/memory/ProjectAutoTracker.js +200 -0
- package/dist/memory/ProjectAutoTracker.js.map +1 -0
- package/dist/memory/ProjectMemoryCleanup.d.ts +17 -0
- package/dist/memory/ProjectMemoryCleanup.d.ts.map +1 -0
- package/dist/memory/ProjectMemoryCleanup.js +57 -0
- package/dist/memory/ProjectMemoryCleanup.js.map +1 -0
- package/dist/memory/ProjectMemoryManager.d.ts +15 -0
- package/dist/memory/ProjectMemoryManager.d.ts.map +1 -0
- package/dist/memory/ProjectMemoryManager.js +36 -0
- package/dist/memory/ProjectMemoryManager.js.map +1 -0
- package/dist/orchestrator/AgentRouter.d.ts +20 -0
- package/dist/orchestrator/AgentRouter.d.ts.map +1 -0
- package/dist/orchestrator/AgentRouter.js +274 -0
- package/dist/orchestrator/AgentRouter.js.map +1 -0
- package/dist/orchestrator/CostTracker.d.ts +25 -0
- package/dist/orchestrator/CostTracker.d.ts.map +1 -0
- package/dist/orchestrator/CostTracker.js +199 -0
- package/dist/orchestrator/CostTracker.js.map +1 -0
- package/dist/orchestrator/GlobalResourcePool.d.ts +59 -0
- package/dist/orchestrator/GlobalResourcePool.d.ts.map +1 -0
- package/dist/orchestrator/GlobalResourcePool.js +224 -0
- package/dist/orchestrator/GlobalResourcePool.js.map +1 -0
- package/dist/orchestrator/GlobalResourcePoolConstants.d.ts +22 -0
- package/dist/orchestrator/GlobalResourcePoolConstants.d.ts.map +1 -0
- package/dist/orchestrator/GlobalResourcePoolConstants.js +22 -0
- package/dist/orchestrator/GlobalResourcePoolConstants.js.map +1 -0
- package/dist/orchestrator/TaskAnalyzer.d.ts +15 -0
- package/dist/orchestrator/TaskAnalyzer.d.ts.map +1 -0
- package/dist/orchestrator/TaskAnalyzer.js +234 -0
- package/dist/orchestrator/TaskAnalyzer.js.map +1 -0
- package/dist/orchestrator/TaskAnalyzerConstants.d.ts +16 -0
- package/dist/orchestrator/TaskAnalyzerConstants.d.ts.map +1 -0
- package/dist/orchestrator/TaskAnalyzerConstants.js +16 -0
- package/dist/orchestrator/TaskAnalyzerConstants.js.map +1 -0
- package/dist/orchestrator/example.d.ts +2 -0
- package/dist/orchestrator/example.d.ts.map +1 -0
- package/dist/orchestrator/example.js +118 -0
- package/dist/orchestrator/example.js.map +1 -0
- package/dist/orchestrator/index.d.ts +82 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +364 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/router.d.ts +48 -0
- package/dist/orchestrator/router.d.ts.map +1 -0
- package/dist/orchestrator/router.js +126 -0
- package/dist/orchestrator/router.js.map +1 -0
- package/dist/orchestrator/types.d.ts +60 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +2 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/planning/PlanningEngine.d.ts +52 -0
- package/dist/planning/PlanningEngine.d.ts.map +1 -0
- package/dist/planning/PlanningEngine.js +271 -0
- package/dist/planning/PlanningEngine.js.map +1 -0
- package/dist/planning/TaskDecomposer.d.ts +32 -0
- package/dist/planning/TaskDecomposer.d.ts.map +1 -0
- package/dist/planning/TaskDecomposer.js +152 -0
- package/dist/planning/TaskDecomposer.js.map +1 -0
- package/dist/prompts/templates/PromptTemplates.d.ts +11 -0
- package/dist/prompts/templates/PromptTemplates.d.ts.map +1 -0
- package/dist/prompts/templates/PromptTemplates.js +942 -0
- package/dist/prompts/templates/PromptTemplates.js.map +1 -0
- package/dist/prompts/templates/index.d.ts +2 -0
- package/dist/prompts/templates/index.d.ts.map +1 -0
- package/dist/prompts/templates/index.js +2 -0
- package/dist/prompts/templates/index.js.map +1 -0
- package/dist/skills/SkillManager.d.ts +33 -0
- package/dist/skills/SkillManager.d.ts.map +1 -0
- package/dist/skills/SkillManager.js +153 -0
- package/dist/skills/SkillManager.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +2 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/telemetry/TelemetryCollector.d.ts +19 -0
- package/dist/telemetry/TelemetryCollector.d.ts.map +1 -0
- package/dist/telemetry/TelemetryCollector.js +62 -0
- package/dist/telemetry/TelemetryCollector.js.map +1 -0
- package/dist/telemetry/TelemetryStore.d.ts +20 -0
- package/dist/telemetry/TelemetryStore.d.ts.map +1 -0
- package/dist/telemetry/TelemetryStore.js +126 -0
- package/dist/telemetry/TelemetryStore.js.map +1 -0
- package/dist/telemetry/index.d.ts +8 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +33 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/sanitization.d.ts +6 -0
- package/dist/telemetry/sanitization.d.ts.map +1 -0
- package/dist/telemetry/sanitization.js +180 -0
- package/dist/telemetry/sanitization.js.map +1 -0
- package/dist/telemetry/types.d.ts +73 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +16 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/templates/git-education-templates.d.ts +26 -0
- package/dist/templates/git-education-templates.d.ts.map +1 -0
- package/dist/templates/git-education-templates.js +455 -0
- package/dist/templates/git-education-templates.js.map +1 -0
- package/dist/types/AgentClassification.d.ts +6 -0
- package/dist/types/AgentClassification.d.ts.map +1 -0
- package/dist/types/AgentClassification.js +7 -0
- package/dist/types/AgentClassification.js.map +1 -0
- package/dist/types/Checkpoint.d.ts +12 -0
- package/dist/types/Checkpoint.d.ts.map +1 -0
- package/dist/types/Checkpoint.js +13 -0
- package/dist/types/Checkpoint.js.map +1 -0
- package/dist/types/toonify.d.ts +91 -0
- package/dist/types/toonify.d.ts.map +1 -0
- package/dist/types/toonify.js +18 -0
- package/dist/types/toonify.js.map +1 -0
- package/dist/ui/AsciiProgressBar.d.ts +29 -0
- package/dist/ui/AsciiProgressBar.d.ts.map +1 -0
- package/dist/ui/AsciiProgressBar.js +131 -0
- package/dist/ui/AsciiProgressBar.js.map +1 -0
- package/dist/ui/AttributionManager.d.ts +19 -0
- package/dist/ui/AttributionManager.d.ts.map +1 -0
- package/dist/ui/AttributionManager.js +107 -0
- package/dist/ui/AttributionManager.js.map +1 -0
- package/dist/ui/Dashboard.d.ts +24 -0
- package/dist/ui/Dashboard.d.ts.map +1 -0
- package/dist/ui/Dashboard.js +135 -0
- package/dist/ui/Dashboard.js.map +1 -0
- package/dist/ui/LoadingIndicator.d.ts +53 -0
- package/dist/ui/LoadingIndicator.d.ts.map +1 -0
- package/dist/ui/LoadingIndicator.js +174 -0
- package/dist/ui/LoadingIndicator.js.map +1 -0
- package/dist/ui/MetricsStore.d.ts +15 -0
- package/dist/ui/MetricsStore.d.ts.map +1 -0
- package/dist/ui/MetricsStore.js +111 -0
- package/dist/ui/MetricsStore.js.map +1 -0
- package/dist/ui/ProgressRenderer.d.ts +24 -0
- package/dist/ui/ProgressRenderer.d.ts.map +1 -0
- package/dist/ui/ProgressRenderer.js +121 -0
- package/dist/ui/ProgressRenderer.js.map +1 -0
- package/dist/ui/ResponseFormatter.d.ts +42 -0
- package/dist/ui/ResponseFormatter.d.ts.map +1 -0
- package/dist/ui/ResponseFormatter.js +243 -0
- package/dist/ui/ResponseFormatter.js.map +1 -0
- package/dist/ui/UIEventBus.d.ts +38 -0
- package/dist/ui/UIEventBus.d.ts.map +1 -0
- package/dist/ui/UIEventBus.js +173 -0
- package/dist/ui/UIEventBus.js.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/theme.d.ts +292 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +153 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/types.d.ts +146 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +16 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils/ILogger.d.ts +7 -0
- package/dist/utils/ILogger.d.ts.map +1 -0
- package/dist/utils/ILogger.js +2 -0
- package/dist/utils/ILogger.js.map +1 -0
- package/dist/utils/MinHeap.d.ts +15 -0
- package/dist/utils/MinHeap.d.ts.map +1 -0
- package/dist/utils/MinHeap.js +69 -0
- package/dist/utils/MinHeap.js.map +1 -0
- package/dist/utils/RateLimiter.d.ts +28 -0
- package/dist/utils/RateLimiter.d.ts.map +1 -0
- package/dist/utils/RateLimiter.js +115 -0
- package/dist/utils/RateLimiter.js.map +1 -0
- package/dist/utils/SecureKeyStore.d.ts +10 -0
- package/dist/utils/SecureKeyStore.d.ts.map +1 -0
- package/dist/utils/SecureKeyStore.js +32 -0
- package/dist/utils/SecureKeyStore.js.map +1 -0
- package/dist/utils/SystemResources.d.ts +40 -0
- package/dist/utils/SystemResources.d.ts.map +1 -0
- package/dist/utils/SystemResources.js +221 -0
- package/dist/utils/SystemResources.js.map +1 -0
- package/dist/utils/cost-tracker.d.ts +34 -0
- package/dist/utils/cost-tracker.d.ts.map +1 -0
- package/dist/utils/cost-tracker.js +92 -0
- package/dist/utils/cost-tracker.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +28 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +206 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/json.d.ts +13 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +85 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +57 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/lru-cache.d.ts +40 -0
- package/dist/utils/lru-cache.d.ts.map +1 -0
- package/dist/utils/lru-cache.js +209 -0
- package/dist/utils/lru-cache.js.map +1 -0
- package/dist/utils/memory.d.ts +20 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +53 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/money.d.ts +10 -0
- package/dist/utils/money.d.ts.map +1 -0
- package/dist/utils/money.js +25 -0
- package/dist/utils/money.js.map +1 -0
- package/dist/utils/pathValidation.d.ts +2 -0
- package/dist/utils/pathValidation.d.ts.map +1 -0
- package/dist/utils/pathValidation.js +62 -0
- package/dist/utils/pathValidation.js.map +1 -0
- package/dist/utils/paths.d.ts +4 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +28 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/requestId.d.ts +4 -0
- package/dist/utils/requestId.d.ts.map +1 -0
- package/dist/utils/requestId.js +17 -0
- package/dist/utils/requestId.js.map +1 -0
- package/dist/utils/retry.d.ts +20 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +226 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/toonify-adapter.d.ts +77 -0
- package/dist/utils/toonify-adapter.d.ts.map +1 -0
- package/dist/utils/toonify-adapter.js +283 -0
- package/dist/utils/toonify-adapter.js.map +1 -0
- package/dist/utils/validation.d.ts +7 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +62 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +116 -0
- package/plugin.json +21 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
export class QueryCache {
|
|
4
|
+
cache;
|
|
5
|
+
maxSize;
|
|
6
|
+
defaultTTL;
|
|
7
|
+
debug;
|
|
8
|
+
hits = 0;
|
|
9
|
+
misses = 0;
|
|
10
|
+
cleanupInterval;
|
|
11
|
+
cleanupErrorCount = 0;
|
|
12
|
+
MAX_CONSECUTIVE_CLEANUP_ERRORS = 5;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.maxSize = options.maxSize || 1000;
|
|
15
|
+
this.defaultTTL = options.defaultTTL || 5 * 60 * 1000;
|
|
16
|
+
this.debug = options.debug || false;
|
|
17
|
+
this.cache = new Map();
|
|
18
|
+
this.cleanupInterval = setInterval(() => {
|
|
19
|
+
try {
|
|
20
|
+
this.cleanup();
|
|
21
|
+
this.cleanupErrorCount = 0;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
this.cleanupErrorCount++;
|
|
25
|
+
logger.error('[QueryCache] Cleanup error:', {
|
|
26
|
+
error: error instanceof Error ? error.message : String(error),
|
|
27
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
28
|
+
consecutiveErrors: this.cleanupErrorCount,
|
|
29
|
+
});
|
|
30
|
+
if (this.cleanupErrorCount >= this.MAX_CONSECUTIVE_CLEANUP_ERRORS) {
|
|
31
|
+
logger.error(`[QueryCache] Cleanup failed ${this.cleanupErrorCount} times consecutively - destroying cache`, {
|
|
32
|
+
maxErrors: this.MAX_CONSECUTIVE_CLEANUP_ERRORS,
|
|
33
|
+
cacheSize: this.cache.size,
|
|
34
|
+
});
|
|
35
|
+
if (this.cleanupInterval) {
|
|
36
|
+
clearInterval(this.cleanupInterval);
|
|
37
|
+
this.cleanupInterval = undefined;
|
|
38
|
+
}
|
|
39
|
+
this.destroy();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, 60 * 1000);
|
|
43
|
+
if (this.debug) {
|
|
44
|
+
logger.debug('[QueryCache] Initialized', {
|
|
45
|
+
maxSize: this.maxSize,
|
|
46
|
+
defaultTTL: this.defaultTTL,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
get(key) {
|
|
51
|
+
const entry = this.cache.get(key);
|
|
52
|
+
if (!entry) {
|
|
53
|
+
this.misses++;
|
|
54
|
+
if (this.debug) {
|
|
55
|
+
logger.debug('[QueryCache] Miss', { key });
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
if (Date.now() > entry.expiresAt) {
|
|
60
|
+
this.cache.delete(key);
|
|
61
|
+
this.misses++;
|
|
62
|
+
if (this.debug) {
|
|
63
|
+
logger.debug('[QueryCache] Expired', { key });
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
entry.lastAccessed = Date.now();
|
|
68
|
+
this.hits++;
|
|
69
|
+
if (this.debug) {
|
|
70
|
+
logger.debug('[QueryCache] Hit', { key });
|
|
71
|
+
}
|
|
72
|
+
return entry.value;
|
|
73
|
+
}
|
|
74
|
+
set(key, value, ttl) {
|
|
75
|
+
if (this.cache.size >= this.maxSize) {
|
|
76
|
+
this.evictLRU();
|
|
77
|
+
}
|
|
78
|
+
const expiresAt = Date.now() + (ttl || this.defaultTTL);
|
|
79
|
+
const size = this.estimateSize(value);
|
|
80
|
+
this.cache.set(key, {
|
|
81
|
+
value,
|
|
82
|
+
expiresAt,
|
|
83
|
+
lastAccessed: Date.now(),
|
|
84
|
+
size,
|
|
85
|
+
});
|
|
86
|
+
if (this.debug) {
|
|
87
|
+
logger.debug('[QueryCache] Set', { key, ttl: ttl || this.defaultTTL, size });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
delete(key) {
|
|
91
|
+
const deleted = this.cache.delete(key);
|
|
92
|
+
if (this.debug && deleted) {
|
|
93
|
+
logger.debug('[QueryCache] Delete', { key });
|
|
94
|
+
}
|
|
95
|
+
return deleted;
|
|
96
|
+
}
|
|
97
|
+
clear() {
|
|
98
|
+
const prevSize = this.cache.size;
|
|
99
|
+
this.cache.clear();
|
|
100
|
+
this.hits = 0;
|
|
101
|
+
this.misses = 0;
|
|
102
|
+
if (this.debug) {
|
|
103
|
+
logger.debug('[QueryCache] Clear', { entriesCleared: prevSize });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
invalidatePattern(pattern) {
|
|
107
|
+
let count = 0;
|
|
108
|
+
for (const key of this.cache.keys()) {
|
|
109
|
+
const keyStr = String(key);
|
|
110
|
+
if (pattern.test(keyStr)) {
|
|
111
|
+
this.cache.delete(key);
|
|
112
|
+
count++;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (this.debug) {
|
|
116
|
+
logger.debug('[QueryCache] Pattern invalidation', {
|
|
117
|
+
pattern: pattern.source,
|
|
118
|
+
invalidated: count,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return count;
|
|
122
|
+
}
|
|
123
|
+
has(key) {
|
|
124
|
+
const entry = this.cache.get(key);
|
|
125
|
+
if (!entry)
|
|
126
|
+
return false;
|
|
127
|
+
if (Date.now() > entry.expiresAt) {
|
|
128
|
+
this.cache.delete(key);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
getStats() {
|
|
134
|
+
const totalAccesses = this.hits + this.misses;
|
|
135
|
+
const hitRate = totalAccesses > 0 ? (this.hits / totalAccesses) * 100 : 0;
|
|
136
|
+
const entries = Array.from(this.cache.values());
|
|
137
|
+
const memoryUsage = entries.reduce((sum, entry) => sum + entry.size, 0);
|
|
138
|
+
const accessTimes = entries.map(entry => entry.lastAccessed);
|
|
139
|
+
return {
|
|
140
|
+
hits: this.hits,
|
|
141
|
+
misses: this.misses,
|
|
142
|
+
hitRate: Math.round(hitRate * 100) / 100,
|
|
143
|
+
size: this.cache.size,
|
|
144
|
+
maxSize: this.maxSize,
|
|
145
|
+
memoryUsage,
|
|
146
|
+
oldestEntry: accessTimes.length > 0 ? Math.min(...accessTimes) : null,
|
|
147
|
+
newestEntry: accessTimes.length > 0 ? Math.max(...accessTimes) : null,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
get size() {
|
|
151
|
+
return this.cache.size;
|
|
152
|
+
}
|
|
153
|
+
cleanup() {
|
|
154
|
+
const now = Date.now();
|
|
155
|
+
let removed = 0;
|
|
156
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
157
|
+
if (now > entry.expiresAt) {
|
|
158
|
+
this.cache.delete(key);
|
|
159
|
+
removed++;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (this.debug && removed > 0) {
|
|
163
|
+
logger.debug('[QueryCache] Cleanup', { removed });
|
|
164
|
+
}
|
|
165
|
+
return removed;
|
|
166
|
+
}
|
|
167
|
+
destroy() {
|
|
168
|
+
if (this.cleanupInterval) {
|
|
169
|
+
clearInterval(this.cleanupInterval);
|
|
170
|
+
this.cleanupInterval = undefined;
|
|
171
|
+
}
|
|
172
|
+
this.clear();
|
|
173
|
+
if (this.debug) {
|
|
174
|
+
logger.debug('[QueryCache] Destroyed');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
dispose() {
|
|
178
|
+
this.destroy();
|
|
179
|
+
}
|
|
180
|
+
static generateKey(query, params) {
|
|
181
|
+
const serialized = JSON.stringify({ query, params: params || [] });
|
|
182
|
+
return createHash('sha256').update(serialized).digest('hex').slice(0, 16);
|
|
183
|
+
}
|
|
184
|
+
evictLRU() {
|
|
185
|
+
let lruKey = null;
|
|
186
|
+
let lruTime = Infinity;
|
|
187
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
188
|
+
if (entry.lastAccessed < lruTime) {
|
|
189
|
+
lruTime = entry.lastAccessed;
|
|
190
|
+
lruKey = key;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (lruKey !== null) {
|
|
194
|
+
this.cache.delete(lruKey);
|
|
195
|
+
if (this.debug) {
|
|
196
|
+
logger.debug('[QueryCache] LRU eviction', { key: lruKey });
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
estimateSize(value) {
|
|
201
|
+
try {
|
|
202
|
+
const json = JSON.stringify(value);
|
|
203
|
+
return json.length * 2;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return 1024;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
export class DatabaseQueryCache extends QueryCache {
|
|
211
|
+
constructor(options = {}) {
|
|
212
|
+
super({
|
|
213
|
+
maxSize: options.maxSize || 1000,
|
|
214
|
+
defaultTTL: options.defaultTTL || 5 * 60 * 1000,
|
|
215
|
+
debug: options.debug || false,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
async cachedQuery(query, params, executor, ttl) {
|
|
219
|
+
const key = QueryCache.generateKey(query, params);
|
|
220
|
+
const cached = this.get(key);
|
|
221
|
+
if (cached !== undefined) {
|
|
222
|
+
return cached;
|
|
223
|
+
}
|
|
224
|
+
const result = await executor();
|
|
225
|
+
this.set(key, result, ttl);
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=QueryCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryCache.js","sourceRoot":"","sources":["../../src/db/QueryCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare enum ErrorCode {
|
|
2
|
+
VALIDATION_FAILED = "VALIDATION_FAILED",
|
|
3
|
+
INVALID_INPUT = "INVALID_INPUT",
|
|
4
|
+
INVALID_RANGE = "INVALID_RANGE",
|
|
5
|
+
INVALID_FORMAT = "INVALID_FORMAT",
|
|
6
|
+
REQUIRED_FIELD_MISSING = "REQUIRED_FIELD_MISSING",
|
|
7
|
+
NOT_INITIALIZED = "NOT_INITIALIZED",
|
|
8
|
+
ALREADY_INITIALIZED = "ALREADY_INITIALIZED",
|
|
9
|
+
INVALID_STATE = "INVALID_STATE",
|
|
10
|
+
OPERATION_NOT_ALLOWED = "OPERATION_NOT_ALLOWED",
|
|
11
|
+
RESOURCE_NOT_FOUND = "RESOURCE_NOT_FOUND",
|
|
12
|
+
ENTITY_NOT_FOUND = "ENTITY_NOT_FOUND",
|
|
13
|
+
TASK_NOT_FOUND = "TASK_NOT_FOUND",
|
|
14
|
+
TOOL_NOT_FOUND = "TOOL_NOT_FOUND",
|
|
15
|
+
CONFIGURATION_INVALID = "CONFIGURATION_INVALID",
|
|
16
|
+
CONFIGURATION_MISSING = "CONFIGURATION_MISSING",
|
|
17
|
+
API_KEY_MISSING = "API_KEY_MISSING",
|
|
18
|
+
UNSUPPORTED_OPTION = "UNSUPPORTED_OPTION",
|
|
19
|
+
OPERATION_FAILED = "OPERATION_FAILED",
|
|
20
|
+
INITIALIZATION_FAILED = "INITIALIZATION_FAILED",
|
|
21
|
+
EXECUTION_FAILED = "EXECUTION_FAILED",
|
|
22
|
+
DIMENSION_MISMATCH = "DIMENSION_MISMATCH",
|
|
23
|
+
EXTERNAL_SERVICE_ERROR = "EXTERNAL_SERVICE_ERROR",
|
|
24
|
+
API_REQUEST_FAILED = "API_REQUEST_FAILED",
|
|
25
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
26
|
+
TIMEOUT_ERROR = "TIMEOUT_ERROR"
|
|
27
|
+
}
|
|
28
|
+
export declare class BaseError extends Error {
|
|
29
|
+
readonly code: ErrorCode;
|
|
30
|
+
readonly context?: Record<string, unknown>;
|
|
31
|
+
readonly timestamp: Date;
|
|
32
|
+
constructor(message: string, code: ErrorCode, context?: Record<string, unknown>);
|
|
33
|
+
toJSON(): Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
export declare class ValidationError extends BaseError {
|
|
36
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
37
|
+
}
|
|
38
|
+
export declare class StateError extends BaseError {
|
|
39
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
40
|
+
}
|
|
41
|
+
export declare class NotFoundError extends BaseError {
|
|
42
|
+
constructor(message: string, resourceType?: string, resourceId?: string, context?: Record<string, unknown>);
|
|
43
|
+
}
|
|
44
|
+
export declare class ConfigurationError extends BaseError {
|
|
45
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
46
|
+
}
|
|
47
|
+
export declare class OperationError extends BaseError {
|
|
48
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
49
|
+
}
|
|
50
|
+
export declare class ExternalServiceError extends BaseError {
|
|
51
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
52
|
+
}
|
|
53
|
+
export declare function isBaseError(error: unknown): error is BaseError;
|
|
54
|
+
export declare function isValidationError(error: unknown): error is ValidationError;
|
|
55
|
+
export declare function isStateError(error: unknown): error is StateError;
|
|
56
|
+
export declare function isNotFoundError(error: unknown): error is NotFoundError;
|
|
57
|
+
export declare function isConfigurationError(error: unknown): error is ConfigurationError;
|
|
58
|
+
export declare function isOperationError(error: unknown): error is OperationError;
|
|
59
|
+
export declare function isExternalServiceError(error: unknown): error is ExternalServiceError;
|
|
60
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
61
|
+
export declare function getErrorCode(error: unknown): ErrorCode | undefined;
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAUA,oBAAY,SAAS;IAEnB,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,sBAAsB,2BAA2B;IAGjD,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,qBAAqB,0BAA0B;IAG/C,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IAGjC,qBAAqB,0BAA0B;IAC/C,qBAAqB,0BAA0B;IAC/C,eAAe,oBAAoB;IACnC,kBAAkB,uBAAuB;IAGzC,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IAGzC,sBAAsB,2BAA2B;IACjD,kBAAkB,uBAAuB;IACzC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAMD,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,SAAgB,SAAS,EAAE,IAAI,CAAC;gBAG9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAiBnC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAUlC;AAcD,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAeD,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAaD,qBAAa,aAAc,SAAQ,SAAS;gBAExC,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQpC;AAaD,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAcD,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAeD,qBAAa,oBAAqB,SAAQ,SAAS;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/D;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQtD;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAKlE"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
export var ErrorCode;
|
|
2
|
+
(function (ErrorCode) {
|
|
3
|
+
ErrorCode["VALIDATION_FAILED"] = "VALIDATION_FAILED";
|
|
4
|
+
ErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
|
|
5
|
+
ErrorCode["INVALID_RANGE"] = "INVALID_RANGE";
|
|
6
|
+
ErrorCode["INVALID_FORMAT"] = "INVALID_FORMAT";
|
|
7
|
+
ErrorCode["REQUIRED_FIELD_MISSING"] = "REQUIRED_FIELD_MISSING";
|
|
8
|
+
ErrorCode["NOT_INITIALIZED"] = "NOT_INITIALIZED";
|
|
9
|
+
ErrorCode["ALREADY_INITIALIZED"] = "ALREADY_INITIALIZED";
|
|
10
|
+
ErrorCode["INVALID_STATE"] = "INVALID_STATE";
|
|
11
|
+
ErrorCode["OPERATION_NOT_ALLOWED"] = "OPERATION_NOT_ALLOWED";
|
|
12
|
+
ErrorCode["RESOURCE_NOT_FOUND"] = "RESOURCE_NOT_FOUND";
|
|
13
|
+
ErrorCode["ENTITY_NOT_FOUND"] = "ENTITY_NOT_FOUND";
|
|
14
|
+
ErrorCode["TASK_NOT_FOUND"] = "TASK_NOT_FOUND";
|
|
15
|
+
ErrorCode["TOOL_NOT_FOUND"] = "TOOL_NOT_FOUND";
|
|
16
|
+
ErrorCode["CONFIGURATION_INVALID"] = "CONFIGURATION_INVALID";
|
|
17
|
+
ErrorCode["CONFIGURATION_MISSING"] = "CONFIGURATION_MISSING";
|
|
18
|
+
ErrorCode["API_KEY_MISSING"] = "API_KEY_MISSING";
|
|
19
|
+
ErrorCode["UNSUPPORTED_OPTION"] = "UNSUPPORTED_OPTION";
|
|
20
|
+
ErrorCode["OPERATION_FAILED"] = "OPERATION_FAILED";
|
|
21
|
+
ErrorCode["INITIALIZATION_FAILED"] = "INITIALIZATION_FAILED";
|
|
22
|
+
ErrorCode["EXECUTION_FAILED"] = "EXECUTION_FAILED";
|
|
23
|
+
ErrorCode["DIMENSION_MISMATCH"] = "DIMENSION_MISMATCH";
|
|
24
|
+
ErrorCode["EXTERNAL_SERVICE_ERROR"] = "EXTERNAL_SERVICE_ERROR";
|
|
25
|
+
ErrorCode["API_REQUEST_FAILED"] = "API_REQUEST_FAILED";
|
|
26
|
+
ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
27
|
+
ErrorCode["TIMEOUT_ERROR"] = "TIMEOUT_ERROR";
|
|
28
|
+
})(ErrorCode || (ErrorCode = {}));
|
|
29
|
+
export class BaseError extends Error {
|
|
30
|
+
code;
|
|
31
|
+
context;
|
|
32
|
+
timestamp;
|
|
33
|
+
constructor(message, code, context) {
|
|
34
|
+
super(message);
|
|
35
|
+
this.name = this.constructor.name;
|
|
36
|
+
this.code = code;
|
|
37
|
+
this.context = context;
|
|
38
|
+
this.timestamp = new Date();
|
|
39
|
+
if (Error.captureStackTrace) {
|
|
40
|
+
Error.captureStackTrace(this, this.constructor);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
toJSON() {
|
|
44
|
+
return {
|
|
45
|
+
name: this.name,
|
|
46
|
+
message: this.message,
|
|
47
|
+
code: this.code,
|
|
48
|
+
context: this.context,
|
|
49
|
+
timestamp: this.timestamp.toISOString(),
|
|
50
|
+
stack: this.stack,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class ValidationError extends BaseError {
|
|
55
|
+
constructor(message, context) {
|
|
56
|
+
super(message, ErrorCode.VALIDATION_FAILED, context);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export class StateError extends BaseError {
|
|
60
|
+
constructor(message, context) {
|
|
61
|
+
super(message, ErrorCode.INVALID_STATE, context);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class NotFoundError extends BaseError {
|
|
65
|
+
constructor(message, resourceType, resourceId, context) {
|
|
66
|
+
super(message, ErrorCode.RESOURCE_NOT_FOUND, {
|
|
67
|
+
resourceType,
|
|
68
|
+
resourceId,
|
|
69
|
+
...context,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export class ConfigurationError extends BaseError {
|
|
74
|
+
constructor(message, context) {
|
|
75
|
+
super(message, ErrorCode.CONFIGURATION_INVALID, context);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export class OperationError extends BaseError {
|
|
79
|
+
constructor(message, context) {
|
|
80
|
+
super(message, ErrorCode.OPERATION_FAILED, context);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export class ExternalServiceError extends BaseError {
|
|
84
|
+
constructor(message, context) {
|
|
85
|
+
super(message, ErrorCode.EXTERNAL_SERVICE_ERROR, context);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function isBaseError(error) {
|
|
89
|
+
return error instanceof BaseError;
|
|
90
|
+
}
|
|
91
|
+
export function isValidationError(error) {
|
|
92
|
+
return error instanceof ValidationError;
|
|
93
|
+
}
|
|
94
|
+
export function isStateError(error) {
|
|
95
|
+
return error instanceof StateError;
|
|
96
|
+
}
|
|
97
|
+
export function isNotFoundError(error) {
|
|
98
|
+
return error instanceof NotFoundError;
|
|
99
|
+
}
|
|
100
|
+
export function isConfigurationError(error) {
|
|
101
|
+
return error instanceof ConfigurationError;
|
|
102
|
+
}
|
|
103
|
+
export function isOperationError(error) {
|
|
104
|
+
return error instanceof OperationError;
|
|
105
|
+
}
|
|
106
|
+
export function isExternalServiceError(error) {
|
|
107
|
+
return error instanceof ExternalServiceError;
|
|
108
|
+
}
|
|
109
|
+
export function getErrorMessage(error) {
|
|
110
|
+
if (error instanceof Error) {
|
|
111
|
+
return error.message;
|
|
112
|
+
}
|
|
113
|
+
if (typeof error === 'string') {
|
|
114
|
+
return error;
|
|
115
|
+
}
|
|
116
|
+
return String(error);
|
|
117
|
+
}
|
|
118
|
+
export function getErrorCode(error) {
|
|
119
|
+
if (isBaseError(error)) {
|
|
120
|
+
return error.code;
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ABTestExperiment, ABTestVariant, ABTestAssignment, ABTestResults } from './types.js';
|
|
2
|
+
export interface CreateExperimentOptions {
|
|
3
|
+
durationDays?: number;
|
|
4
|
+
minSampleSize?: number;
|
|
5
|
+
significanceLevel?: number;
|
|
6
|
+
secondaryMetrics?: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare class ABTestManager {
|
|
9
|
+
private experiments;
|
|
10
|
+
private assignments;
|
|
11
|
+
private metrics;
|
|
12
|
+
private analyzer;
|
|
13
|
+
createExperiment(id: string, name: string, variants: ABTestVariant[], trafficSplit: number[], successMetric: 'quality_score' | 'cost' | 'duration' | 'user_satisfaction', options?: CreateExperimentOptions): ABTestExperiment;
|
|
14
|
+
startExperiment(experimentId: string): void;
|
|
15
|
+
assignVariant(experimentId: string, agentId: string): ABTestAssignment;
|
|
16
|
+
private hashToVariant;
|
|
17
|
+
addMetric(experimentId: string, variantName: string, metrics: Record<string, number>): void;
|
|
18
|
+
analyzeResults(experimentId: string): ABTestResults;
|
|
19
|
+
getExperiment(experimentId: string): ABTestExperiment | undefined;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ABTestManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ABTestManager.d.ts","sourceRoot":"","sources":["../../src/evolution/ABTestManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,EAEd,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,uBAAuB;IAKtC,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAK3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAOD,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,OAAO,CAAiE;IAChF,OAAO,CAAC,QAAQ,CAAkD;IAalE,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EAAE,EACzB,YAAY,EAAE,MAAM,EAAE,EACtB,aAAa,EAAE,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,mBAAmB,EAC1E,OAAO,GAAE,uBAA4B,GACpC,gBAAgB;IAgDnB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAsB3C,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB;IA4CtE,OAAO,CAAC,aAAa;IAyBrB,SAAS,CACP,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,IAAI;IAoBP,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa;IAyHnD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;CAGlE"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
import { StatisticalAnalyzer } from './StatisticalAnalyzer.js';
|
|
3
|
+
import { ValidationError, NotFoundError } from '../errors/index.js';
|
|
4
|
+
export class ABTestManager {
|
|
5
|
+
experiments = new Map();
|
|
6
|
+
assignments = new Map();
|
|
7
|
+
metrics = new Map();
|
|
8
|
+
analyzer = new StatisticalAnalyzer();
|
|
9
|
+
createExperiment(id, name, variants, trafficSplit, successMetric, options = {}) {
|
|
10
|
+
if (variants.length !== trafficSplit.length) {
|
|
11
|
+
throw new ValidationError('Variants and traffic split must have same length', {
|
|
12
|
+
component: 'ABTestManager',
|
|
13
|
+
method: 'createExperiment',
|
|
14
|
+
variantsLength: variants.length,
|
|
15
|
+
trafficSplitLength: trafficSplit.length,
|
|
16
|
+
constraint: 'variants.length === trafficSplit.length',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const sum = trafficSplit.reduce((acc, val) => acc + val, 0);
|
|
20
|
+
if (Math.abs(sum - 1.0) > 0.001) {
|
|
21
|
+
throw new ValidationError('Traffic split must sum to 1.0', {
|
|
22
|
+
component: 'ABTestManager',
|
|
23
|
+
method: 'createExperiment',
|
|
24
|
+
actualSum: sum,
|
|
25
|
+
constraint: 'sum(trafficSplit) === 1.0',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const experiment = {
|
|
29
|
+
id,
|
|
30
|
+
name,
|
|
31
|
+
description: name,
|
|
32
|
+
variants,
|
|
33
|
+
trafficSplit,
|
|
34
|
+
successMetric,
|
|
35
|
+
secondaryMetrics: options.secondaryMetrics,
|
|
36
|
+
durationDays: options.durationDays ?? 7,
|
|
37
|
+
minSampleSize: options.minSampleSize ?? 30,
|
|
38
|
+
significanceLevel: options.significanceLevel ?? 0.05,
|
|
39
|
+
status: 'draft',
|
|
40
|
+
};
|
|
41
|
+
this.experiments.set(id, experiment);
|
|
42
|
+
this.assignments.set(id, []);
|
|
43
|
+
this.metrics.set(id, new Map());
|
|
44
|
+
return experiment;
|
|
45
|
+
}
|
|
46
|
+
startExperiment(experimentId) {
|
|
47
|
+
const experiment = this.experiments.get(experimentId);
|
|
48
|
+
if (!experiment) {
|
|
49
|
+
throw new NotFoundError(`Experiment ${experimentId} not found`, 'experiment', experimentId, { availableExperiments: Array.from(this.experiments.keys()) });
|
|
50
|
+
}
|
|
51
|
+
experiment.status = 'running';
|
|
52
|
+
experiment.startedAt = new Date();
|
|
53
|
+
}
|
|
54
|
+
assignVariant(experimentId, agentId) {
|
|
55
|
+
const experiment = this.experiments.get(experimentId);
|
|
56
|
+
if (!experiment) {
|
|
57
|
+
throw new NotFoundError(`Experiment ${experimentId} not found`, 'experiment', experimentId, { availableExperiments: Array.from(this.experiments.keys()) });
|
|
58
|
+
}
|
|
59
|
+
const assignments = this.assignments.get(experimentId);
|
|
60
|
+
const existing = assignments.find((a) => a.agentId === agentId);
|
|
61
|
+
if (existing) {
|
|
62
|
+
return existing;
|
|
63
|
+
}
|
|
64
|
+
const variantIndex = this.hashToVariant(`${experimentId}:${agentId}`, experiment.trafficSplit);
|
|
65
|
+
const assignment = {
|
|
66
|
+
id: `${experimentId}:${agentId}`,
|
|
67
|
+
experimentId,
|
|
68
|
+
agentId,
|
|
69
|
+
variantName: experiment.variants[variantIndex].name,
|
|
70
|
+
assignedAt: new Date(),
|
|
71
|
+
};
|
|
72
|
+
assignments.push(assignment);
|
|
73
|
+
return assignment;
|
|
74
|
+
}
|
|
75
|
+
hashToVariant(key, trafficSplit) {
|
|
76
|
+
const hash = crypto.createHash('md5').update(key).digest('hex');
|
|
77
|
+
const hashInt = parseInt(hash.substring(0, 8), 16);
|
|
78
|
+
const normalizedHash = (hashInt % 100000) / 100000;
|
|
79
|
+
let cumulative = 0;
|
|
80
|
+
for (let i = 0; i < trafficSplit.length; i++) {
|
|
81
|
+
cumulative += trafficSplit[i];
|
|
82
|
+
if (normalizedHash < cumulative) {
|
|
83
|
+
return i;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return trafficSplit.length - 1;
|
|
87
|
+
}
|
|
88
|
+
addMetric(experimentId, variantName, metrics) {
|
|
89
|
+
if (!this.metrics.has(experimentId)) {
|
|
90
|
+
this.metrics.set(experimentId, new Map());
|
|
91
|
+
}
|
|
92
|
+
const experimentMetrics = this.metrics.get(experimentId);
|
|
93
|
+
if (!experimentMetrics.has(variantName)) {
|
|
94
|
+
experimentMetrics.set(variantName, []);
|
|
95
|
+
}
|
|
96
|
+
experimentMetrics.get(variantName).push(metrics);
|
|
97
|
+
}
|
|
98
|
+
analyzeResults(experimentId) {
|
|
99
|
+
const experiment = this.experiments.get(experimentId);
|
|
100
|
+
if (!experiment) {
|
|
101
|
+
throw new NotFoundError(`Experiment ${experimentId} not found`, 'experiment', experimentId, { availableExperiments: Array.from(this.experiments.keys()) });
|
|
102
|
+
}
|
|
103
|
+
const experimentMetrics = this.metrics.get(experimentId);
|
|
104
|
+
if (!experimentMetrics) {
|
|
105
|
+
throw new NotFoundError(`No metrics found for experiment ${experimentId}`, 'experimentMetrics', experimentId, {
|
|
106
|
+
experiment: experimentId,
|
|
107
|
+
availableMetrics: Array.from(this.metrics.keys())
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
const variantStats = {};
|
|
111
|
+
for (const variant of experiment.variants) {
|
|
112
|
+
const metrics = experimentMetrics.get(variant.name) || [];
|
|
113
|
+
const successMetricValues = metrics.map((m) => m[experiment.successMetric] || 0);
|
|
114
|
+
if (successMetricValues.length === 0) {
|
|
115
|
+
variantStats[variant.name] = {
|
|
116
|
+
variantName: variant.name,
|
|
117
|
+
sampleSize: 0,
|
|
118
|
+
successRate: 0,
|
|
119
|
+
mean: 0,
|
|
120
|
+
stdDev: 0,
|
|
121
|
+
confidenceInterval: [0, 0],
|
|
122
|
+
};
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const mean = this.analyzer.calculateMean(successMetricValues);
|
|
126
|
+
const stdDev = this.analyzer.calculateStdDev(successMetricValues);
|
|
127
|
+
const ci = this.analyzer.calculateConfidenceInterval(successMetricValues);
|
|
128
|
+
variantStats[variant.name] = {
|
|
129
|
+
variantName: variant.name,
|
|
130
|
+
sampleSize: successMetricValues.length,
|
|
131
|
+
successRate: mean,
|
|
132
|
+
mean,
|
|
133
|
+
stdDev,
|
|
134
|
+
confidenceInterval: ci,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const variantNames = experiment.variants.map((v) => v.name);
|
|
138
|
+
const control = experimentMetrics.get(variantNames[0]) || [];
|
|
139
|
+
const treatment = experimentMetrics.get(variantNames[1]) || [];
|
|
140
|
+
const controlValues = control.map((m) => m[experiment.successMetric] || 0);
|
|
141
|
+
const treatmentValues = treatment.map((m) => m[experiment.successMetric] || 0);
|
|
142
|
+
let pValue = 1.0;
|
|
143
|
+
let effectSize = 0;
|
|
144
|
+
let winner = null;
|
|
145
|
+
let recommendation = '';
|
|
146
|
+
if (controlValues.length >= experiment.minSampleSize &&
|
|
147
|
+
treatmentValues.length >= experiment.minSampleSize) {
|
|
148
|
+
const tTest = this.analyzer.welchTTest(controlValues, treatmentValues);
|
|
149
|
+
effectSize = this.analyzer.calculateEffectSize(controlValues, treatmentValues);
|
|
150
|
+
pValue = tTest.pValue;
|
|
151
|
+
if (pValue < experiment.significanceLevel) {
|
|
152
|
+
const controlMean = this.analyzer.calculateMean(controlValues);
|
|
153
|
+
const treatmentMean = this.analyzer.calculateMean(treatmentValues);
|
|
154
|
+
winner = treatmentMean > controlMean ? variantNames[1] : variantNames[0];
|
|
155
|
+
recommendation = `Statistically significant difference detected (p=${pValue.toFixed(4)}). Winner: ${winner}`;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
recommendation = 'No statistically significant difference detected';
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
recommendation = `Insufficient data. Need at least ${experiment.minSampleSize} samples per variant.`;
|
|
163
|
+
}
|
|
164
|
+
const results = {
|
|
165
|
+
experimentId,
|
|
166
|
+
winner,
|
|
167
|
+
confidence: 1 - pValue,
|
|
168
|
+
variantStats,
|
|
169
|
+
statisticalTests: {
|
|
170
|
+
testType: 't-test',
|
|
171
|
+
pValue,
|
|
172
|
+
effectSize,
|
|
173
|
+
confidenceInterval: [0, 0],
|
|
174
|
+
},
|
|
175
|
+
recommendation,
|
|
176
|
+
};
|
|
177
|
+
return results;
|
|
178
|
+
}
|
|
179
|
+
getExperiment(experimentId) {
|
|
180
|
+
return this.experiments.get(experimentId);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=ABTestManager.js.map
|