agentic-qe 2.3.5 → 2.5.0
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/.claude/agents/qe-a11y-ally.md +751 -0
- package/.claude/agents/qx-partner.md +120 -4
- package/.claude/skills/testability-scoring/SKILL.md +107 -6
- package/CHANGELOG.md +133 -0
- package/README.md +7 -6
- package/dist/agents/AccessibilityAllyAgent.d.ts +168 -0
- package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -0
- package/dist/agents/AccessibilityAllyAgent.js +462 -0
- package/dist/agents/AccessibilityAllyAgent.js.map +1 -0
- package/dist/agents/BaseAgent.d.ts +56 -49
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +208 -604
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +2 -2
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +8 -104
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/SONAIntegration.d.ts +109 -0
- package/dist/agents/SONAIntegration.d.ts.map +1 -0
- package/dist/agents/SONAIntegration.js +167 -0
- package/dist/agents/SONAIntegration.js.map +1 -0
- package/dist/agents/TestExecutorAgent.d.ts +1 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +4 -46
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +15 -35
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
- package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +14 -0
- package/dist/agents/adapters/index.d.ts.map +1 -0
- package/dist/agents/adapters/index.js +25 -0
- package/dist/agents/adapters/index.js.map +1 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +93 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +12 -6
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/init/agents.js +1 -1
- package/dist/cli/init/claude-config.js +2 -2
- package/dist/cli/init/database-init.js +1 -1
- package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
- package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheBuilder.js +225 -0
- package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
- package/dist/core/cache/BinaryCacheImpl.d.ts +161 -0
- package/dist/core/cache/BinaryCacheImpl.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheImpl.js +685 -0
- package/dist/core/cache/BinaryCacheImpl.js.map +1 -0
- package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
- package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheManager.js +354 -0
- package/dist/core/cache/BinaryCacheManager.js.map +1 -0
- package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
- package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheReader.js +243 -0
- package/dist/core/cache/BinaryCacheReader.js.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts +777 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.js +204 -0
- package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
- package/dist/core/cache/CacheInvalidator.d.ts +103 -0
- package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
- package/dist/core/cache/CacheInvalidator.js +152 -0
- package/dist/core/cache/CacheInvalidator.js.map +1 -0
- package/dist/core/cache/CacheValidator.d.ts +69 -0
- package/dist/core/cache/CacheValidator.d.ts.map +1 -0
- package/dist/core/cache/CacheValidator.js +189 -0
- package/dist/core/cache/CacheValidator.js.map +1 -0
- package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
- package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
- package/dist/core/cache/MessagePackSerializer.js +274 -0
- package/dist/core/cache/MessagePackSerializer.js.map +1 -0
- package/dist/core/cache/index.d.ts +59 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +111 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/AgentDBService.d.ts +30 -4
- package/dist/core/memory/AgentDBService.d.ts.map +1 -1
- package/dist/core/memory/AgentDBService.js +122 -12
- package/dist/core/memory/AgentDBService.js.map +1 -1
- package/dist/core/memory/CachedHNSWVectorMemory.d.ts +153 -0
- package/dist/core/memory/CachedHNSWVectorMemory.d.ts.map +1 -0
- package/dist/core/memory/CachedHNSWVectorMemory.js +329 -0
- package/dist/core/memory/CachedHNSWVectorMemory.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
- package/dist/core/memory/PatternStoreFactory.js +68 -3
- package/dist/core/memory/PatternStoreFactory.js.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +8 -2
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +50 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.js +206 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -1
- package/dist/core/memory/index.d.ts +2 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +8 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/optimization/RecursiveOptimizer.d.ts +233 -0
- package/dist/core/optimization/RecursiveOptimizer.d.ts.map +1 -0
- package/dist/core/optimization/RecursiveOptimizer.js +509 -0
- package/dist/core/optimization/RecursiveOptimizer.js.map +1 -0
- package/dist/core/platform/FileOperations.d.ts +124 -0
- package/dist/core/platform/FileOperations.d.ts.map +1 -0
- package/dist/core/platform/FileOperations.js +371 -0
- package/dist/core/platform/FileOperations.js.map +1 -0
- package/dist/core/platform/PlatformDetector.d.ts +53 -0
- package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
- package/dist/core/platform/PlatformDetector.js +251 -0
- package/dist/core/platform/PlatformDetector.js.map +1 -0
- package/dist/core/platform/index.d.ts +12 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +28 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.js +13 -0
- package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
- package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
- package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/SONALearningStrategy.d.ts +115 -0
- package/dist/core/strategies/SONALearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/SONALearningStrategy.js +656 -0
- package/dist/core/strategies/SONALearningStrategy.js.map +1 -0
- package/dist/core/strategies/TRMLearningStrategy.d.ts +162 -0
- package/dist/core/strategies/TRMLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/TRMLearningStrategy.js +670 -0
- package/dist/core/strategies/TRMLearningStrategy.js.map +1 -0
- package/dist/core/strategies/index.d.ts +104 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +68 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +2 -2
- package/dist/learning/PerformanceOptimizer.js.map +1 -1
- package/dist/learning/SONAFeedbackLoop.d.ts +168 -0
- package/dist/learning/SONAFeedbackLoop.d.ts.map +1 -0
- package/dist/learning/SONAFeedbackLoop.js +344 -0
- package/dist/learning/SONAFeedbackLoop.js.map +1 -0
- package/dist/learning/baselines/BaselineCollector.d.ts +1 -1
- package/dist/learning/baselines/BaselineCollector.js +1 -1
- package/dist/learning/baselines/StandardTaskSuite.d.ts +1 -1
- package/dist/learning/baselines/StandardTaskSuite.js +1 -1
- package/dist/learning/index.d.ts +2 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +6 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/mcp/handlers/base-handler.d.ts +28 -1
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +41 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +23 -16
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +6 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts +114 -0
- package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/accname-computation.js +566 -0
- package/dist/mcp/tools/qe/accessibility/accname-computation.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts +103 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.js +1028 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts +48 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js +565 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts +117 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js +571 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts +23 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.js +1152 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/index.d.ts +22 -0
- package/dist/mcp/tools/qe/accessibility/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/index.js +38 -0
- package/dist/mcp/tools/qe/accessibility/index.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts +18 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js +549 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts +139 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js +1300 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts +138 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js +1326 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts +50 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js +469 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts +193 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.js +511 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.js.map +1 -0
- package/dist/mcp/tools.d.ts +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +61 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/output/AIActionSuggester.d.ts +98 -0
- package/dist/output/AIActionSuggester.d.ts.map +1 -0
- package/dist/output/AIActionSuggester.js +499 -0
- package/dist/output/AIActionSuggester.js.map +1 -0
- package/dist/output/CLIOutputHelper.d.ts +169 -0
- package/dist/output/CLIOutputHelper.d.ts.map +1 -0
- package/dist/output/CLIOutputHelper.js +320 -0
- package/dist/output/CLIOutputHelper.js.map +1 -0
- package/dist/output/OutputFormatter.d.ts +764 -0
- package/dist/output/OutputFormatter.d.ts.map +1 -0
- package/dist/output/OutputFormatter.js +125 -0
- package/dist/output/OutputFormatter.js.map +1 -0
- package/dist/output/OutputFormatterImpl.d.ts +131 -0
- package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
- package/dist/output/OutputFormatterImpl.js +556 -0
- package/dist/output/OutputFormatterImpl.js.map +1 -0
- package/dist/output/examples.d.ts +38 -0
- package/dist/output/examples.d.ts.map +1 -0
- package/dist/output/examples.js +503 -0
- package/dist/output/examples.js.map +1 -0
- package/dist/output/index.d.ts +16 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +58 -0
- package/dist/output/index.js.map +1 -0
- package/dist/providers/HybridRouter.d.ts +34 -3
- package/dist/providers/HybridRouter.d.ts.map +1 -1
- package/dist/providers/HybridRouter.js +69 -4
- package/dist/providers/HybridRouter.js.map +1 -1
- package/dist/providers/LLMProviderFactory.d.ts +68 -1
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
- package/dist/providers/LLMProviderFactory.js +173 -6
- package/dist/providers/LLMProviderFactory.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts +150 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/providers/OpenRouterProvider.js +545 -0
- package/dist/providers/OpenRouterProvider.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +130 -16
- package/dist/providers/RuvllmProvider.d.ts.map +1 -1
- package/dist/providers/RuvllmProvider.js +399 -83
- package/dist/providers/RuvllmProvider.js.map +1 -1
- package/dist/providers/index.d.ts +33 -4
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +72 -21
- package/dist/providers/index.js.map +1 -1
- package/dist/telemetry/instrumentation/agent.d.ts +1 -1
- package/dist/telemetry/instrumentation/agent.js +1 -1
- package/dist/telemetry/instrumentation/index.d.ts +1 -1
- package/dist/telemetry/instrumentation/index.js +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/ruvllm.d.ts +97 -0
- package/dist/types/ruvllm.d.ts.map +1 -0
- package/dist/types/ruvllm.js +46 -0
- package/dist/types/ruvllm.js.map +1 -0
- package/dist/utils/ruvllm-loader.d.ts +94 -0
- package/dist/utils/ruvllm-loader.d.ts.map +1 -0
- package/dist/utils/ruvllm-loader.js +87 -0
- package/dist/utils/ruvllm-loader.js.map +1 -0
- package/docs/reference/agents.md +36 -1
- package/package.json +7 -2
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cache Validator - Integrity and Version Validation
|
|
4
|
+
*
|
|
5
|
+
* Validates binary cache integrity using:
|
|
6
|
+
* - SHA-256 checksum verification
|
|
7
|
+
* - Semantic version compatibility checks
|
|
8
|
+
* - Pattern entry validation
|
|
9
|
+
*
|
|
10
|
+
* @module core/cache/CacheValidator
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.BinaryCacheValidator = void 0;
|
|
15
|
+
exports.createCacheValidator = createCacheValidator;
|
|
16
|
+
const MessagePackSerializer_1 = require("./MessagePackSerializer");
|
|
17
|
+
/**
|
|
18
|
+
* Implementation of CacheValidator interface
|
|
19
|
+
*
|
|
20
|
+
* Provides multi-level validation:
|
|
21
|
+
* 1. Checksum validation (SHA-256)
|
|
22
|
+
* 2. Version compatibility (semantic versioning)
|
|
23
|
+
* 3. Pattern entry validation (required fields)
|
|
24
|
+
*/
|
|
25
|
+
class BinaryCacheValidator {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.serializer = new MessagePackSerializer_1.MessagePackSerializer();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate cache integrity
|
|
31
|
+
*
|
|
32
|
+
* Performs comprehensive validation:
|
|
33
|
+
* - Checksum matches expected value
|
|
34
|
+
* - Version is compatible with current code
|
|
35
|
+
* - Buffer structure is valid
|
|
36
|
+
*
|
|
37
|
+
* @param buffer - Binary cache buffer
|
|
38
|
+
* @param expectedChecksum - Expected SHA-256 checksum
|
|
39
|
+
* @returns Validation result with detailed diagnostics
|
|
40
|
+
*/
|
|
41
|
+
async validate(buffer, expectedChecksum) {
|
|
42
|
+
try {
|
|
43
|
+
// 1. Compute actual checksum
|
|
44
|
+
const computedChecksum = await this.serializer.computeChecksum(buffer);
|
|
45
|
+
const checksumValid = computedChecksum === expectedChecksum;
|
|
46
|
+
if (!checksumValid) {
|
|
47
|
+
return {
|
|
48
|
+
valid: false,
|
|
49
|
+
checksumValid: false,
|
|
50
|
+
versionCompatible: false,
|
|
51
|
+
error: `Checksum mismatch: expected ${expectedChecksum}, got ${computedChecksum}`,
|
|
52
|
+
computedChecksum,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// 2. Decode cache to check structure
|
|
56
|
+
const cache = this.serializer.decode(buffer);
|
|
57
|
+
// 3. Decode version
|
|
58
|
+
const cacheVersion = this.serializer.decodeVersion(cache.version);
|
|
59
|
+
// 4. Check version compatibility (assuming current version is 1.0.0)
|
|
60
|
+
const currentVersion = { major: 1, minor: 0, patch: 0 };
|
|
61
|
+
const versionCompatible = this.isVersionCompatible(cacheVersion, currentVersion);
|
|
62
|
+
if (!versionCompatible) {
|
|
63
|
+
return {
|
|
64
|
+
valid: false,
|
|
65
|
+
checksumValid: true,
|
|
66
|
+
versionCompatible: false,
|
|
67
|
+
error: `Version incompatible: cache version ${cacheVersion.major}.${cacheVersion.minor}.${cacheVersion.patch}, code version ${currentVersion.major}.${currentVersion.minor}.${currentVersion.patch}`,
|
|
68
|
+
computedChecksum,
|
|
69
|
+
cacheVersion,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// 5. Validate pattern entries
|
|
73
|
+
for (const pattern of cache.patterns) {
|
|
74
|
+
if (!this.isValidPatternEntry(pattern)) {
|
|
75
|
+
return {
|
|
76
|
+
valid: false,
|
|
77
|
+
checksumValid: true,
|
|
78
|
+
versionCompatible: true,
|
|
79
|
+
error: `Invalid pattern entry: ${pattern.id}`,
|
|
80
|
+
computedChecksum,
|
|
81
|
+
cacheVersion,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// All validations passed
|
|
86
|
+
return {
|
|
87
|
+
valid: true,
|
|
88
|
+
checksumValid: true,
|
|
89
|
+
versionCompatible: true,
|
|
90
|
+
computedChecksum,
|
|
91
|
+
cacheVersion,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return {
|
|
96
|
+
valid: false,
|
|
97
|
+
checksumValid: false,
|
|
98
|
+
versionCompatible: false,
|
|
99
|
+
error: `Validation failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check version compatibility
|
|
105
|
+
*
|
|
106
|
+
* Rules:
|
|
107
|
+
* - Major version mismatch: INCOMPATIBLE (breaking changes)
|
|
108
|
+
* - Minor version mismatch: COMPATIBLE (backward compatible)
|
|
109
|
+
* - Patch version mismatch: COMPATIBLE (bug fixes)
|
|
110
|
+
*
|
|
111
|
+
* @param cacheVersion - Version from cache header
|
|
112
|
+
* @param codeVersion - Current code version
|
|
113
|
+
* @returns True if compatible
|
|
114
|
+
*/
|
|
115
|
+
isVersionCompatible(cacheVersion, codeVersion) {
|
|
116
|
+
// Major version must match exactly
|
|
117
|
+
if (cacheVersion.major !== codeVersion.major) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
// Cache minor version can be less than or equal to code version
|
|
121
|
+
// (newer code can read older cache)
|
|
122
|
+
if (cacheVersion.minor > codeVersion.minor) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// Patch version is always compatible within same major.minor
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Validate pattern entry
|
|
130
|
+
*
|
|
131
|
+
* Checks for:
|
|
132
|
+
* - Required fields present
|
|
133
|
+
* - Valid embedding dimensions
|
|
134
|
+
* - Valid metadata values
|
|
135
|
+
*
|
|
136
|
+
* @param entry - Pattern entry to validate
|
|
137
|
+
* @returns True if valid
|
|
138
|
+
*/
|
|
139
|
+
isValidPatternEntry(entry) {
|
|
140
|
+
// Check required fields
|
|
141
|
+
if (!entry.id || typeof entry.id !== 'string') {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
if (!entry.type || typeof entry.type !== 'string') {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (!entry.domain || typeof entry.domain !== 'string') {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
if (!entry.framework || typeof entry.framework !== 'string') {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
if (!entry.content || typeof entry.content !== 'string') {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
// Validate embedding
|
|
157
|
+
if (!(entry.embedding instanceof Float32Array)) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
if (entry.embedding.length === 0) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
// Validate metadata
|
|
164
|
+
if (!entry.metadata) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
if (typeof entry.metadata.coverage !== 'number' || entry.metadata.coverage < 0 || entry.metadata.coverage > 1) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
if (typeof entry.metadata.flakinessScore !== 'number' || entry.metadata.flakinessScore < 0 || entry.metadata.flakinessScore > 1) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
const validVerdicts = ['success', 'failure', 'flaky', 'unknown'];
|
|
174
|
+
if (!validVerdicts.includes(entry.metadata.verdict)) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.BinaryCacheValidator = BinaryCacheValidator;
|
|
181
|
+
/**
|
|
182
|
+
* Create a new BinaryCacheValidator instance
|
|
183
|
+
*
|
|
184
|
+
* @returns BinaryCacheValidator instance
|
|
185
|
+
*/
|
|
186
|
+
function createCacheValidator() {
|
|
187
|
+
return new BinaryCacheValidator();
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=CacheValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheValidator.js","sourceRoot":"","sources":["../../../src/core/cache/CacheValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MessagePack Serializer - Binary Serialization for Pattern Metadata
|
|
3
|
+
*
|
|
4
|
+
* High-performance binary serialization using MessagePack format.
|
|
5
|
+
* Provides encoding/decoding, checksum computation, and version management.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Fast binary serialization (2-3x faster than JSON)
|
|
9
|
+
* - Compact format (smaller than JSON)
|
|
10
|
+
* - SHA-256 checksum validation
|
|
11
|
+
* - Semantic version encoding/decoding
|
|
12
|
+
* - Float32Array support for embeddings
|
|
13
|
+
*
|
|
14
|
+
* Performance:
|
|
15
|
+
* - Encoding: ~40-50ms for 1000 patterns
|
|
16
|
+
* - Decoding: ~60-70ms for 1000 patterns
|
|
17
|
+
* - Checksum: ~1-2ms for 4MB cache
|
|
18
|
+
*
|
|
19
|
+
* @module core/cache/MessagePackSerializer
|
|
20
|
+
* @version 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
import { BinaryCache, CacheSerializer, CacheVersion } from './BinaryMetadataCache';
|
|
23
|
+
/**
|
|
24
|
+
* MessagePack implementation of CacheSerializer
|
|
25
|
+
*
|
|
26
|
+
* Uses MessagePack for fast binary serialization with custom handling
|
|
27
|
+
* for Float32Array embeddings and Map-based indexes.
|
|
28
|
+
*/
|
|
29
|
+
export declare class MessagePackSerializer implements CacheSerializer {
|
|
30
|
+
/**
|
|
31
|
+
* Encode cache data to binary buffer
|
|
32
|
+
*
|
|
33
|
+
* Converts BinaryCache to MessagePack format with:
|
|
34
|
+
* - Float32Array embeddings converted to regular arrays
|
|
35
|
+
* - Map indexes converted to plain objects
|
|
36
|
+
* - Metadata fields preserved
|
|
37
|
+
*
|
|
38
|
+
* @param cache - Cache data to serialize
|
|
39
|
+
* @returns Binary buffer (Uint8Array)
|
|
40
|
+
* @throws {SerializationError} If encoding fails
|
|
41
|
+
*/
|
|
42
|
+
encode(cache: BinaryCache): Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* Decode binary buffer to cache data
|
|
45
|
+
*
|
|
46
|
+
* Parses MessagePack format and reconstructs:
|
|
47
|
+
* - Float32Array embeddings from regular arrays
|
|
48
|
+
* - Map-based indexes from plain objects
|
|
49
|
+
* - All metadata fields
|
|
50
|
+
*
|
|
51
|
+
* @param buffer - Binary buffer from disk read
|
|
52
|
+
* @returns Decoded cache data
|
|
53
|
+
* @throws {DeserializationError} If decoding fails
|
|
54
|
+
*/
|
|
55
|
+
decode(buffer: Uint8Array): BinaryCache;
|
|
56
|
+
/**
|
|
57
|
+
* Compute SHA-256 checksum of cache data
|
|
58
|
+
*
|
|
59
|
+
* Excludes the checksum field itself from computation to avoid
|
|
60
|
+
* circular dependency.
|
|
61
|
+
*
|
|
62
|
+
* @param buffer - Binary buffer to checksum
|
|
63
|
+
* @returns SHA-256 hash as hex string
|
|
64
|
+
*/
|
|
65
|
+
computeChecksum(buffer: Uint8Array): Promise<string>;
|
|
66
|
+
/**
|
|
67
|
+
* Encode cache version to uint32
|
|
68
|
+
*
|
|
69
|
+
* Format: (major << 16) | (minor << 8) | patch
|
|
70
|
+
* Example: v1.2.3 → 0x00010203 (66051)
|
|
71
|
+
*
|
|
72
|
+
* @param version - Semantic version
|
|
73
|
+
* @returns Encoded version as uint32
|
|
74
|
+
*/
|
|
75
|
+
encodeVersion(version: CacheVersion): number;
|
|
76
|
+
/**
|
|
77
|
+
* Decode uint32 to cache version
|
|
78
|
+
*
|
|
79
|
+
* @param encoded - Encoded version uint32
|
|
80
|
+
* @returns Semantic version
|
|
81
|
+
*/
|
|
82
|
+
decodeVersion(encoded: number): CacheVersion;
|
|
83
|
+
/**
|
|
84
|
+
* Convert BinaryCache to MessagePack-serializable format
|
|
85
|
+
*
|
|
86
|
+
* Transforms:
|
|
87
|
+
* - Float32Array → number[]
|
|
88
|
+
* - Map<K, V> → Record<K, V>
|
|
89
|
+
*
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
private cacheToSerializable;
|
|
93
|
+
/**
|
|
94
|
+
* Convert PatternEntry to MessagePack-serializable format
|
|
95
|
+
*
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private patternToSerializable;
|
|
99
|
+
/**
|
|
100
|
+
* Convert CacheIndexData to MessagePack-serializable format
|
|
101
|
+
*
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
private indexesToSerializable;
|
|
105
|
+
/**
|
|
106
|
+
* Convert MessagePack data to BinaryCache format
|
|
107
|
+
*
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
private serializableToCache;
|
|
111
|
+
/**
|
|
112
|
+
* Convert serializable data to PatternEntry
|
|
113
|
+
*
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
private serializableToPattern;
|
|
117
|
+
/**
|
|
118
|
+
* Convert serializable data to CacheIndexData
|
|
119
|
+
*
|
|
120
|
+
* @private
|
|
121
|
+
*/
|
|
122
|
+
private serializableToIndexes;
|
|
123
|
+
/**
|
|
124
|
+
* Convert Map to plain object
|
|
125
|
+
*
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
private mapToObject;
|
|
129
|
+
/**
|
|
130
|
+
* Convert plain object to Map
|
|
131
|
+
*
|
|
132
|
+
* @private
|
|
133
|
+
*/
|
|
134
|
+
private objectToMap;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create a new MessagePackSerializer instance
|
|
138
|
+
*
|
|
139
|
+
* @returns MessagePackSerializer instance
|
|
140
|
+
*/
|
|
141
|
+
export declare function createMessagePackSerializer(): MessagePackSerializer;
|
|
142
|
+
/**
|
|
143
|
+
* Serialize cache data to binary buffer (convenience function)
|
|
144
|
+
*
|
|
145
|
+
* @param cache - Cache data to serialize
|
|
146
|
+
* @returns Binary buffer
|
|
147
|
+
*/
|
|
148
|
+
export declare function serializeCache(cache: BinaryCache): Uint8Array;
|
|
149
|
+
/**
|
|
150
|
+
* Deserialize binary buffer to cache data (convenience function)
|
|
151
|
+
*
|
|
152
|
+
* @param buffer - Binary buffer to deserialize
|
|
153
|
+
* @returns Cache data
|
|
154
|
+
*/
|
|
155
|
+
export declare function deserializeCache(buffer: Uint8Array): BinaryCache;
|
|
156
|
+
/**
|
|
157
|
+
* Compute cache checksum (convenience function)
|
|
158
|
+
*
|
|
159
|
+
* @param buffer - Binary buffer to checksum
|
|
160
|
+
* @returns SHA-256 hash as hex string
|
|
161
|
+
*/
|
|
162
|
+
export declare function computeCacheChecksum(buffer: Uint8Array): Promise<string>;
|
|
163
|
+
//# sourceMappingURL=MessagePackSerializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessagePackSerializer.d.ts","sourceRoot":"","sources":["../../../src/core/cache/MessagePackSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EACL,WAAW,EACX,eAAe,EACf,YAAY,EAMb,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU;IAiBtC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW;IAevC;;;;;;;;OAQG;IACG,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D;;;;;;;;OAQG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAI5C;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAQ5C;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAOpB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAG7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAGhE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9E"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MessagePack Serializer - Binary Serialization for Pattern Metadata
|
|
4
|
+
*
|
|
5
|
+
* High-performance binary serialization using MessagePack format.
|
|
6
|
+
* Provides encoding/decoding, checksum computation, and version management.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Fast binary serialization (2-3x faster than JSON)
|
|
10
|
+
* - Compact format (smaller than JSON)
|
|
11
|
+
* - SHA-256 checksum validation
|
|
12
|
+
* - Semantic version encoding/decoding
|
|
13
|
+
* - Float32Array support for embeddings
|
|
14
|
+
*
|
|
15
|
+
* Performance:
|
|
16
|
+
* - Encoding: ~40-50ms for 1000 patterns
|
|
17
|
+
* - Decoding: ~60-70ms for 1000 patterns
|
|
18
|
+
* - Checksum: ~1-2ms for 4MB cache
|
|
19
|
+
*
|
|
20
|
+
* @module core/cache/MessagePackSerializer
|
|
21
|
+
* @version 1.0.0
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.MessagePackSerializer = void 0;
|
|
25
|
+
exports.createMessagePackSerializer = createMessagePackSerializer;
|
|
26
|
+
exports.serializeCache = serializeCache;
|
|
27
|
+
exports.deserializeCache = deserializeCache;
|
|
28
|
+
exports.computeCacheChecksum = computeCacheChecksum;
|
|
29
|
+
const msgpack_1 = require("@msgpack/msgpack");
|
|
30
|
+
const crypto_1 = require("crypto");
|
|
31
|
+
const BinaryMetadataCache_1 = require("./BinaryMetadataCache");
|
|
32
|
+
/**
|
|
33
|
+
* MessagePack implementation of CacheSerializer
|
|
34
|
+
*
|
|
35
|
+
* Uses MessagePack for fast binary serialization with custom handling
|
|
36
|
+
* for Float32Array embeddings and Map-based indexes.
|
|
37
|
+
*/
|
|
38
|
+
class MessagePackSerializer {
|
|
39
|
+
/**
|
|
40
|
+
* Encode cache data to binary buffer
|
|
41
|
+
*
|
|
42
|
+
* Converts BinaryCache to MessagePack format with:
|
|
43
|
+
* - Float32Array embeddings converted to regular arrays
|
|
44
|
+
* - Map indexes converted to plain objects
|
|
45
|
+
* - Metadata fields preserved
|
|
46
|
+
*
|
|
47
|
+
* @param cache - Cache data to serialize
|
|
48
|
+
* @returns Binary buffer (Uint8Array)
|
|
49
|
+
* @throws {SerializationError} If encoding fails
|
|
50
|
+
*/
|
|
51
|
+
encode(cache) {
|
|
52
|
+
try {
|
|
53
|
+
// Convert cache to MessagePack-compatible format
|
|
54
|
+
const serializable = this.cacheToSerializable(cache);
|
|
55
|
+
// Encode to MessagePack
|
|
56
|
+
const buffer = (0, msgpack_1.encode)(serializable);
|
|
57
|
+
return new Uint8Array(buffer);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
throw new BinaryMetadataCache_1.SerializationError(`MessagePack encoding failed: ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Decode binary buffer to cache data
|
|
65
|
+
*
|
|
66
|
+
* Parses MessagePack format and reconstructs:
|
|
67
|
+
* - Float32Array embeddings from regular arrays
|
|
68
|
+
* - Map-based indexes from plain objects
|
|
69
|
+
* - All metadata fields
|
|
70
|
+
*
|
|
71
|
+
* @param buffer - Binary buffer from disk read
|
|
72
|
+
* @returns Decoded cache data
|
|
73
|
+
* @throws {DeserializationError} If decoding fails
|
|
74
|
+
*/
|
|
75
|
+
decode(buffer) {
|
|
76
|
+
try {
|
|
77
|
+
// Decode from MessagePack
|
|
78
|
+
const decoded = (0, msgpack_1.decode)(buffer);
|
|
79
|
+
// Convert to BinaryCache format
|
|
80
|
+
return this.serializableToCache(decoded);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw new BinaryMetadataCache_1.DeserializationError(`MessagePack decoding failed: ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Compute SHA-256 checksum of cache data
|
|
88
|
+
*
|
|
89
|
+
* Excludes the checksum field itself from computation to avoid
|
|
90
|
+
* circular dependency.
|
|
91
|
+
*
|
|
92
|
+
* @param buffer - Binary buffer to checksum
|
|
93
|
+
* @returns SHA-256 hash as hex string
|
|
94
|
+
*/
|
|
95
|
+
async computeChecksum(buffer) {
|
|
96
|
+
try {
|
|
97
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
98
|
+
hash.update(buffer);
|
|
99
|
+
return hash.digest('hex');
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
throw new Error(`Checksum computation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Encode cache version to uint32
|
|
107
|
+
*
|
|
108
|
+
* Format: (major << 16) | (minor << 8) | patch
|
|
109
|
+
* Example: v1.2.3 → 0x00010203 (66051)
|
|
110
|
+
*
|
|
111
|
+
* @param version - Semantic version
|
|
112
|
+
* @returns Encoded version as uint32
|
|
113
|
+
*/
|
|
114
|
+
encodeVersion(version) {
|
|
115
|
+
return (version.major << 16) | (version.minor << 8) | version.patch;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Decode uint32 to cache version
|
|
119
|
+
*
|
|
120
|
+
* @param encoded - Encoded version uint32
|
|
121
|
+
* @returns Semantic version
|
|
122
|
+
*/
|
|
123
|
+
decodeVersion(encoded) {
|
|
124
|
+
return {
|
|
125
|
+
major: (encoded >> 16) & 0xff,
|
|
126
|
+
minor: (encoded >> 8) & 0xff,
|
|
127
|
+
patch: encoded & 0xff,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Convert BinaryCache to MessagePack-serializable format
|
|
132
|
+
*
|
|
133
|
+
* Transforms:
|
|
134
|
+
* - Float32Array → number[]
|
|
135
|
+
* - Map<K, V> → Record<K, V>
|
|
136
|
+
*
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
cacheToSerializable(cache) {
|
|
140
|
+
return {
|
|
141
|
+
version: cache.version,
|
|
142
|
+
timestamp: cache.timestamp,
|
|
143
|
+
checksum: cache.checksum,
|
|
144
|
+
patterns: cache.patterns.map((p) => this.patternToSerializable(p)),
|
|
145
|
+
agentConfigs: cache.agentConfigs,
|
|
146
|
+
indexes: this.indexesToSerializable(cache.indexes),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Convert PatternEntry to MessagePack-serializable format
|
|
151
|
+
*
|
|
152
|
+
* @private
|
|
153
|
+
*/
|
|
154
|
+
patternToSerializable(pattern) {
|
|
155
|
+
return {
|
|
156
|
+
...pattern,
|
|
157
|
+
embedding: Array.from(pattern.embedding), // Float32Array → number[]
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Convert CacheIndexData to MessagePack-serializable format
|
|
162
|
+
*
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
indexesToSerializable(indexes) {
|
|
166
|
+
return {
|
|
167
|
+
domainIndex: this.mapToObject(indexes.domainIndex),
|
|
168
|
+
typeIndex: this.mapToObject(indexes.typeIndex),
|
|
169
|
+
frameworkIndex: this.mapToObject(indexes.frameworkIndex),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Convert MessagePack data to BinaryCache format
|
|
174
|
+
*
|
|
175
|
+
* @private
|
|
176
|
+
*/
|
|
177
|
+
serializableToCache(data) {
|
|
178
|
+
return {
|
|
179
|
+
version: data.version,
|
|
180
|
+
timestamp: data.timestamp,
|
|
181
|
+
checksum: data.checksum,
|
|
182
|
+
patterns: data.patterns.map((p) => this.serializableToPattern(p)),
|
|
183
|
+
agentConfigs: data.agentConfigs,
|
|
184
|
+
indexes: this.serializableToIndexes(data.indexes),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Convert serializable data to PatternEntry
|
|
189
|
+
*
|
|
190
|
+
* @private
|
|
191
|
+
*/
|
|
192
|
+
serializableToPattern(data) {
|
|
193
|
+
return {
|
|
194
|
+
...data,
|
|
195
|
+
embedding: new Float32Array(data.embedding), // number[] → Float32Array
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Convert serializable data to CacheIndexData
|
|
200
|
+
*
|
|
201
|
+
* @private
|
|
202
|
+
*/
|
|
203
|
+
serializableToIndexes(data) {
|
|
204
|
+
return {
|
|
205
|
+
domainIndex: this.objectToMap(data.domainIndex),
|
|
206
|
+
typeIndex: this.objectToMap(data.typeIndex),
|
|
207
|
+
frameworkIndex: this.objectToMap(data.frameworkIndex),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Convert Map to plain object
|
|
212
|
+
*
|
|
213
|
+
* @private
|
|
214
|
+
*/
|
|
215
|
+
mapToObject(map) {
|
|
216
|
+
const obj = {};
|
|
217
|
+
for (const [key, value] of map.entries()) {
|
|
218
|
+
obj[key] = value;
|
|
219
|
+
}
|
|
220
|
+
return obj;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Convert plain object to Map
|
|
224
|
+
*
|
|
225
|
+
* @private
|
|
226
|
+
*/
|
|
227
|
+
objectToMap(obj) {
|
|
228
|
+
const map = new Map();
|
|
229
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
230
|
+
map.set(key, value);
|
|
231
|
+
}
|
|
232
|
+
return map;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.MessagePackSerializer = MessagePackSerializer;
|
|
236
|
+
/**
|
|
237
|
+
* Create a new MessagePackSerializer instance
|
|
238
|
+
*
|
|
239
|
+
* @returns MessagePackSerializer instance
|
|
240
|
+
*/
|
|
241
|
+
function createMessagePackSerializer() {
|
|
242
|
+
return new MessagePackSerializer();
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Serialize cache data to binary buffer (convenience function)
|
|
246
|
+
*
|
|
247
|
+
* @param cache - Cache data to serialize
|
|
248
|
+
* @returns Binary buffer
|
|
249
|
+
*/
|
|
250
|
+
function serializeCache(cache) {
|
|
251
|
+
const serializer = createMessagePackSerializer();
|
|
252
|
+
return serializer.encode(cache);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Deserialize binary buffer to cache data (convenience function)
|
|
256
|
+
*
|
|
257
|
+
* @param buffer - Binary buffer to deserialize
|
|
258
|
+
* @returns Cache data
|
|
259
|
+
*/
|
|
260
|
+
function deserializeCache(buffer) {
|
|
261
|
+
const serializer = createMessagePackSerializer();
|
|
262
|
+
return serializer.decode(buffer);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Compute cache checksum (convenience function)
|
|
266
|
+
*
|
|
267
|
+
* @param buffer - Binary buffer to checksum
|
|
268
|
+
* @returns SHA-256 hash as hex string
|
|
269
|
+
*/
|
|
270
|
+
async function computeCacheChecksum(buffer) {
|
|
271
|
+
const serializer = createMessagePackSerializer();
|
|
272
|
+
return serializer.computeChecksum(buffer);
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=MessagePackSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessagePackSerializer.js","sourceRoot":"","sources":["../../../src/core/cache/MessagePackSerializer.ts"],"names":[],"mappings":"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"}
|