agentic-qe 2.3.4 → 2.4.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.
Files changed (255) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +1 -1
  3. package/dist/agents/ApiContractValidatorAgent.d.ts +5 -0
  4. package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
  5. package/dist/agents/ApiContractValidatorAgent.js +41 -0
  6. package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
  7. package/dist/agents/BaseAgent.d.ts +56 -49
  8. package/dist/agents/BaseAgent.d.ts.map +1 -1
  9. package/dist/agents/BaseAgent.js +208 -604
  10. package/dist/agents/BaseAgent.js.map +1 -1
  11. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +5 -0
  12. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
  13. package/dist/agents/CodeComplexityAnalyzerAgent.js +47 -0
  14. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
  15. package/dist/agents/CoverageAnalyzerAgent.d.ts +26 -0
  16. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  17. package/dist/agents/CoverageAnalyzerAgent.js +149 -1
  18. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  19. package/dist/agents/DeploymentReadinessAgent.d.ts +5 -0
  20. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  21. package/dist/agents/DeploymentReadinessAgent.js +41 -0
  22. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  23. package/dist/agents/FlakyTestHunterAgent.d.ts +7 -2
  24. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  25. package/dist/agents/FlakyTestHunterAgent.js +48 -104
  26. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  27. package/dist/agents/FleetCommanderAgent.d.ts +5 -0
  28. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  29. package/dist/agents/FleetCommanderAgent.js +51 -0
  30. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  31. package/dist/agents/PerformanceTesterAgent.d.ts +5 -0
  32. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  33. package/dist/agents/PerformanceTesterAgent.js +44 -0
  34. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  35. package/dist/agents/ProductionIntelligenceAgent.d.ts +5 -0
  36. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  37. package/dist/agents/ProductionIntelligenceAgent.js +46 -0
  38. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  39. package/dist/agents/QXPartnerAgent.js +52 -0
  40. package/dist/agents/QXPartnerAgent.js.map +1 -1
  41. package/dist/agents/QualityAnalyzerAgent.d.ts +5 -0
  42. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  43. package/dist/agents/QualityAnalyzerAgent.js +45 -0
  44. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  45. package/dist/agents/QualityGateAgent.d.ts +40 -0
  46. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  47. package/dist/agents/QualityGateAgent.js +227 -1
  48. package/dist/agents/QualityGateAgent.js.map +1 -1
  49. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +5 -0
  50. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  51. package/dist/agents/RegressionRiskAnalyzerAgent.js +46 -0
  52. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  53. package/dist/agents/RequirementsValidatorAgent.d.ts +5 -0
  54. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  55. package/dist/agents/RequirementsValidatorAgent.js +42 -0
  56. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  57. package/dist/agents/SecurityScannerAgent.d.ts +5 -0
  58. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  59. package/dist/agents/SecurityScannerAgent.js +39 -0
  60. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  61. package/dist/agents/TestDataArchitectAgent.d.ts +5 -0
  62. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  63. package/dist/agents/TestDataArchitectAgent.js +46 -0
  64. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  65. package/dist/agents/TestExecutorAgent.d.ts +6 -1
  66. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  67. package/dist/agents/TestExecutorAgent.js +52 -46
  68. package/dist/agents/TestExecutorAgent.js.map +1 -1
  69. package/dist/agents/TestGeneratorAgent.d.ts +5 -0
  70. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  71. package/dist/agents/TestGeneratorAgent.js +51 -35
  72. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  73. package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
  74. package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
  75. package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
  76. package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
  77. package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
  78. package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
  79. package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
  80. package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
  81. package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
  82. package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
  83. package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
  84. package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
  85. package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
  86. package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
  87. package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
  88. package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
  89. package/dist/agents/adapters/index.d.ts +14 -0
  90. package/dist/agents/adapters/index.d.ts.map +1 -0
  91. package/dist/agents/adapters/index.js +25 -0
  92. package/dist/agents/adapters/index.js.map +1 -0
  93. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  94. package/dist/agents/lifecycle/AgentLifecycleManager.js +17 -8
  95. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  96. package/dist/cli/index.js +68 -0
  97. package/dist/cli/index.js.map +1 -1
  98. package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
  99. package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
  100. package/dist/core/cache/BinaryCacheBuilder.js +225 -0
  101. package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
  102. package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
  103. package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
  104. package/dist/core/cache/BinaryCacheManager.js +354 -0
  105. package/dist/core/cache/BinaryCacheManager.js.map +1 -0
  106. package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
  107. package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
  108. package/dist/core/cache/BinaryCacheReader.js +243 -0
  109. package/dist/core/cache/BinaryCacheReader.js.map +1 -0
  110. package/dist/core/cache/BinaryMetadataCache.d.ts +533 -0
  111. package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
  112. package/dist/core/cache/BinaryMetadataCache.js +142 -0
  113. package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
  114. package/dist/core/cache/CacheInvalidator.d.ts +103 -0
  115. package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
  116. package/dist/core/cache/CacheInvalidator.js +152 -0
  117. package/dist/core/cache/CacheInvalidator.js.map +1 -0
  118. package/dist/core/cache/CacheValidator.d.ts +69 -0
  119. package/dist/core/cache/CacheValidator.d.ts.map +1 -0
  120. package/dist/core/cache/CacheValidator.js +189 -0
  121. package/dist/core/cache/CacheValidator.js.map +1 -0
  122. package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
  123. package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
  124. package/dist/core/cache/MessagePackSerializer.js +274 -0
  125. package/dist/core/cache/MessagePackSerializer.js.map +1 -0
  126. package/dist/core/cache/index.d.ts +58 -0
  127. package/dist/core/cache/index.d.ts.map +1 -0
  128. package/dist/core/cache/index.js +102 -0
  129. package/dist/core/cache/index.js.map +1 -0
  130. package/dist/core/index.d.ts +2 -0
  131. package/dist/core/index.d.ts.map +1 -1
  132. package/dist/core/index.js +18 -0
  133. package/dist/core/index.js.map +1 -1
  134. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  135. package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
  136. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
  137. package/dist/core/memory/PatternStoreFactory.js +68 -3
  138. package/dist/core/memory/PatternStoreFactory.js.map +1 -1
  139. package/dist/core/platform/FileOperations.d.ts +124 -0
  140. package/dist/core/platform/FileOperations.d.ts.map +1 -0
  141. package/dist/core/platform/FileOperations.js +371 -0
  142. package/dist/core/platform/FileOperations.js.map +1 -0
  143. package/dist/core/platform/PlatformDetector.d.ts +53 -0
  144. package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
  145. package/dist/core/platform/PlatformDetector.js +251 -0
  146. package/dist/core/platform/PlatformDetector.js.map +1 -0
  147. package/dist/core/platform/index.d.ts +12 -0
  148. package/dist/core/platform/index.d.ts.map +1 -0
  149. package/dist/core/platform/index.js +28 -0
  150. package/dist/core/platform/index.js.map +1 -0
  151. package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
  152. package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
  153. package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
  154. package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
  155. package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
  156. package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
  157. package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
  158. package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
  159. package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
  160. package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
  161. package/dist/core/strategies/AgentLearningStrategy.js +13 -0
  162. package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
  163. package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
  164. package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
  165. package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
  166. package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
  167. package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
  168. package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
  169. package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
  170. package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
  171. package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
  172. package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
  173. package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
  174. package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
  175. package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
  176. package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
  177. package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
  178. package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
  179. package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
  180. package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
  181. package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
  182. package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
  183. package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
  184. package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
  185. package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
  186. package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
  187. package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
  188. package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
  189. package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
  190. package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
  191. package/dist/core/strategies/index.d.ts +95 -0
  192. package/dist/core/strategies/index.d.ts.map +1 -0
  193. package/dist/core/strategies/index.js +65 -0
  194. package/dist/core/strategies/index.js.map +1 -0
  195. package/dist/learning/PerformanceOptimizer.js +2 -2
  196. package/dist/learning/PerformanceOptimizer.js.map +1 -1
  197. package/dist/learning/capture/ExperienceExtractor.d.ts +219 -0
  198. package/dist/learning/capture/ExperienceExtractor.d.ts.map +1 -0
  199. package/dist/learning/capture/ExperienceExtractor.js +536 -0
  200. package/dist/learning/capture/ExperienceExtractor.js.map +1 -0
  201. package/dist/learning/capture/ExperienceStore.d.ts +196 -0
  202. package/dist/learning/capture/ExperienceStore.d.ts.map +1 -0
  203. package/dist/learning/capture/ExperienceStore.js +453 -0
  204. package/dist/learning/capture/ExperienceStore.js.map +1 -0
  205. package/dist/learning/scheduler/SleepScheduler.d.ts +2 -0
  206. package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -1
  207. package/dist/learning/scheduler/SleepScheduler.js +2 -0
  208. package/dist/learning/scheduler/SleepScheduler.js.map +1 -1
  209. package/dist/learning/synthesis/ClusteringEngine.d.ts +122 -0
  210. package/dist/learning/synthesis/ClusteringEngine.d.ts.map +1 -0
  211. package/dist/learning/synthesis/ClusteringEngine.js +356 -0
  212. package/dist/learning/synthesis/ClusteringEngine.js.map +1 -0
  213. package/dist/learning/transfer/TransferRegistry.d.ts +245 -0
  214. package/dist/learning/transfer/TransferRegistry.d.ts.map +1 -0
  215. package/dist/learning/transfer/TransferRegistry.js +410 -0
  216. package/dist/learning/transfer/TransferRegistry.js.map +1 -0
  217. package/dist/mcp/handlers/base-handler.d.ts +28 -1
  218. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  219. package/dist/mcp/handlers/base-handler.js +41 -0
  220. package/dist/mcp/handlers/base-handler.js.map +1 -1
  221. package/dist/mcp/handlers/task-orchestrate.d.ts +11 -0
  222. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  223. package/dist/mcp/handlers/task-orchestrate.js +297 -4
  224. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  225. package/dist/mcp/server-instructions.d.ts +1 -1
  226. package/dist/mcp/server-instructions.js +1 -1
  227. package/dist/mcp/services/AgentRegistry.d.ts +6 -1
  228. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  229. package/dist/mcp/services/AgentRegistry.js +34 -3
  230. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  231. package/dist/output/AIActionSuggester.d.ts +98 -0
  232. package/dist/output/AIActionSuggester.d.ts.map +1 -0
  233. package/dist/output/AIActionSuggester.js +499 -0
  234. package/dist/output/AIActionSuggester.js.map +1 -0
  235. package/dist/output/CLIOutputHelper.d.ts +169 -0
  236. package/dist/output/CLIOutputHelper.d.ts.map +1 -0
  237. package/dist/output/CLIOutputHelper.js +320 -0
  238. package/dist/output/CLIOutputHelper.js.map +1 -0
  239. package/dist/output/OutputFormatter.d.ts +764 -0
  240. package/dist/output/OutputFormatter.d.ts.map +1 -0
  241. package/dist/output/OutputFormatter.js +125 -0
  242. package/dist/output/OutputFormatter.js.map +1 -0
  243. package/dist/output/OutputFormatterImpl.d.ts +131 -0
  244. package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
  245. package/dist/output/OutputFormatterImpl.js +556 -0
  246. package/dist/output/OutputFormatterImpl.js.map +1 -0
  247. package/dist/output/examples.d.ts +38 -0
  248. package/dist/output/examples.d.ts.map +1 -0
  249. package/dist/output/examples.js +503 -0
  250. package/dist/output/examples.js.map +1 -0
  251. package/dist/output/index.d.ts +16 -0
  252. package/dist/output/index.d.ts.map +1 -0
  253. package/dist/output/index.js +58 -0
  254. package/dist/output/index.js.map +1 -0
  255. package/package.json +4 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Cache Invalidator - Lifecycle Management
3
+ *
4
+ * Manages cache lifecycle with:
5
+ * - Event-based invalidation
6
+ * - TTL-based expiration
7
+ * - Background rebuild scheduling
8
+ *
9
+ * @module core/cache/CacheInvalidator
10
+ * @version 1.0.0
11
+ */
12
+ import type { CacheInvalidator, CacheInvalidation } from './BinaryMetadataCache';
13
+ /**
14
+ * Implementation of CacheInvalidator interface
15
+ *
16
+ * Tracks cache staleness and schedules rebuilds based on:
17
+ * - Manual invalidation events
18
+ * - TTL expiration
19
+ * - Automatic rebuild triggers
20
+ */
21
+ export declare class BinaryCacheInvalidator implements CacheInvalidator {
22
+ private staleTimestamp;
23
+ private rebuildCallbacks;
24
+ /**
25
+ * Mark cache as stale
26
+ *
27
+ * Records invalidation event and schedules rebuild if required.
28
+ *
29
+ * @param event - Invalidation event
30
+ */
31
+ markStale(event: CacheInvalidation): void;
32
+ /**
33
+ * Check if cache is valid
34
+ *
35
+ * Cache is valid if:
36
+ * - Cache timestamp > stale timestamp
37
+ * - No invalidation events since cache generation
38
+ *
39
+ * @param cacheTimestamp - Cache generation timestamp
40
+ * @returns True if cache is valid and not stale
41
+ */
42
+ isCacheValid(cacheTimestamp: number): boolean;
43
+ /**
44
+ * Check if cache is fresh (within TTL)
45
+ *
46
+ * @param cacheTimestamp - Cache generation timestamp
47
+ * @param ttl - Time-to-live in milliseconds
48
+ * @returns True if cache age < TTL
49
+ */
50
+ isCacheFresh(cacheTimestamp: number, ttl: number): boolean;
51
+ /**
52
+ * Check if background rebuild should be triggered
53
+ *
54
+ * Triggers when cache age exceeds 80% of TTL to prevent
55
+ * cold start latency spikes.
56
+ *
57
+ * @param cacheTimestamp - Cache generation timestamp
58
+ * @param ttl - Time-to-live in milliseconds
59
+ * @returns True if background rebuild recommended
60
+ */
61
+ shouldBackgroundRebuild(cacheTimestamp: number, ttl: number): boolean;
62
+ /**
63
+ * Schedule cache rebuild
64
+ *
65
+ * Invokes registered rebuild callbacks.
66
+ *
67
+ * @param background - Whether to rebuild in background
68
+ */
69
+ scheduleCacheRebuild(background: boolean): void;
70
+ /**
71
+ * Register a rebuild callback
72
+ *
73
+ * Callback is invoked when cache rebuild is scheduled.
74
+ *
75
+ * @param callback - Rebuild callback function
76
+ */
77
+ onRebuild(callback: () => void): void;
78
+ /**
79
+ * Unregister a rebuild callback
80
+ *
81
+ * @param callback - Rebuild callback function
82
+ */
83
+ offRebuild(callback: () => void): void;
84
+ /**
85
+ * Get stale timestamp
86
+ *
87
+ * @returns Timestamp when cache was marked stale
88
+ */
89
+ getStaleTimestamp(): number;
90
+ /**
91
+ * Reset invalidator state
92
+ *
93
+ * Clears stale timestamp and callbacks.
94
+ */
95
+ reset(): void;
96
+ }
97
+ /**
98
+ * Create a new BinaryCacheInvalidator instance
99
+ *
100
+ * @returns BinaryCacheInvalidator instance
101
+ */
102
+ export declare function createCacheInvalidator(): BinaryCacheInvalidator;
103
+ //# sourceMappingURL=CacheInvalidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheInvalidator.d.ts","sourceRoot":"","sources":["../../../src/core/cache/CacheInvalidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;GAOG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,gBAAgB,CAA8B;IAEtD;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAgBzC;;;;;;;;;OASG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAI7C;;;;;;OAMG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAK1D;;;;;;;;;OASG;IACH,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAMrE;;;;;;OAMG;IACH,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAa/C;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIrC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC;;;;OAIG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,sBAAsB,CAE/D"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * Cache Invalidator - Lifecycle Management
4
+ *
5
+ * Manages cache lifecycle with:
6
+ * - Event-based invalidation
7
+ * - TTL-based expiration
8
+ * - Background rebuild scheduling
9
+ *
10
+ * @module core/cache/CacheInvalidator
11
+ * @version 1.0.0
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.BinaryCacheInvalidator = void 0;
15
+ exports.createCacheInvalidator = createCacheInvalidator;
16
+ /**
17
+ * Implementation of CacheInvalidator interface
18
+ *
19
+ * Tracks cache staleness and schedules rebuilds based on:
20
+ * - Manual invalidation events
21
+ * - TTL expiration
22
+ * - Automatic rebuild triggers
23
+ */
24
+ class BinaryCacheInvalidator {
25
+ constructor() {
26
+ this.staleTimestamp = 0;
27
+ this.rebuildCallbacks = new Set();
28
+ }
29
+ /**
30
+ * Mark cache as stale
31
+ *
32
+ * Records invalidation event and schedules rebuild if required.
33
+ *
34
+ * @param event - Invalidation event
35
+ */
36
+ markStale(event) {
37
+ this.staleTimestamp = event.timestamp;
38
+ if (event.requiresRebuild) {
39
+ this.scheduleCacheRebuild(false);
40
+ }
41
+ // Log invalidation event
42
+ console.log('[CacheInvalidator] Cache marked stale:', {
43
+ trigger: event.trigger,
44
+ timestamp: new Date(event.timestamp).toISOString(),
45
+ requiresRebuild: event.requiresRebuild,
46
+ metadata: event.metadata,
47
+ });
48
+ }
49
+ /**
50
+ * Check if cache is valid
51
+ *
52
+ * Cache is valid if:
53
+ * - Cache timestamp > stale timestamp
54
+ * - No invalidation events since cache generation
55
+ *
56
+ * @param cacheTimestamp - Cache generation timestamp
57
+ * @returns True if cache is valid and not stale
58
+ */
59
+ isCacheValid(cacheTimestamp) {
60
+ return cacheTimestamp > this.staleTimestamp;
61
+ }
62
+ /**
63
+ * Check if cache is fresh (within TTL)
64
+ *
65
+ * @param cacheTimestamp - Cache generation timestamp
66
+ * @param ttl - Time-to-live in milliseconds
67
+ * @returns True if cache age < TTL
68
+ */
69
+ isCacheFresh(cacheTimestamp, ttl) {
70
+ const age = Date.now() - cacheTimestamp;
71
+ return age < ttl;
72
+ }
73
+ /**
74
+ * Check if background rebuild should be triggered
75
+ *
76
+ * Triggers when cache age exceeds 80% of TTL to prevent
77
+ * cold start latency spikes.
78
+ *
79
+ * @param cacheTimestamp - Cache generation timestamp
80
+ * @param ttl - Time-to-live in milliseconds
81
+ * @returns True if background rebuild recommended
82
+ */
83
+ shouldBackgroundRebuild(cacheTimestamp, ttl) {
84
+ const age = Date.now() - cacheTimestamp;
85
+ const threshold = ttl * 0.8; // 80% of TTL
86
+ return age > threshold;
87
+ }
88
+ /**
89
+ * Schedule cache rebuild
90
+ *
91
+ * Invokes registered rebuild callbacks.
92
+ *
93
+ * @param background - Whether to rebuild in background
94
+ */
95
+ scheduleCacheRebuild(background) {
96
+ console.log(`[CacheInvalidator] Scheduling cache rebuild (background: ${background})`);
97
+ // Invoke rebuild callbacks
98
+ for (const callback of this.rebuildCallbacks) {
99
+ try {
100
+ callback();
101
+ }
102
+ catch (error) {
103
+ console.error('[CacheInvalidator] Rebuild callback failed:', error);
104
+ }
105
+ }
106
+ }
107
+ /**
108
+ * Register a rebuild callback
109
+ *
110
+ * Callback is invoked when cache rebuild is scheduled.
111
+ *
112
+ * @param callback - Rebuild callback function
113
+ */
114
+ onRebuild(callback) {
115
+ this.rebuildCallbacks.add(callback);
116
+ }
117
+ /**
118
+ * Unregister a rebuild callback
119
+ *
120
+ * @param callback - Rebuild callback function
121
+ */
122
+ offRebuild(callback) {
123
+ this.rebuildCallbacks.delete(callback);
124
+ }
125
+ /**
126
+ * Get stale timestamp
127
+ *
128
+ * @returns Timestamp when cache was marked stale
129
+ */
130
+ getStaleTimestamp() {
131
+ return this.staleTimestamp;
132
+ }
133
+ /**
134
+ * Reset invalidator state
135
+ *
136
+ * Clears stale timestamp and callbacks.
137
+ */
138
+ reset() {
139
+ this.staleTimestamp = 0;
140
+ this.rebuildCallbacks.clear();
141
+ }
142
+ }
143
+ exports.BinaryCacheInvalidator = BinaryCacheInvalidator;
144
+ /**
145
+ * Create a new BinaryCacheInvalidator instance
146
+ *
147
+ * @returns BinaryCacheInvalidator instance
148
+ */
149
+ function createCacheInvalidator() {
150
+ return new BinaryCacheInvalidator();
151
+ }
152
+ //# sourceMappingURL=CacheInvalidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheInvalidator.js","sourceRoot":"","sources":["../../../src/core/cache/CacheInvalidator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAqJH,wDAEC;AAhJD;;;;;;;GAOG;AACH,MAAa,sBAAsB;IAAnC;QACU,mBAAc,GAAW,CAAC,CAAC;QAC3B,qBAAgB,GAAoB,IAAI,GAAG,EAAE,CAAC;IA6HxD,CAAC;IA3HC;;;;;;OAMG;IACH,SAAS,CAAC,KAAwB;QAChC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;QAEtC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE;YACpD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAClD,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,YAAY,CAAC,cAAsB;QACjC,OAAO,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,cAAsB,EAAE,GAAW;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;QACxC,OAAO,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACH,uBAAuB,CAAC,cAAsB,EAAE,GAAW;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;QACxC,MAAM,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,aAAa;QAC1C,OAAO,GAAG,GAAG,SAAS,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,oBAAoB,CAAC,UAAmB;QACtC,OAAO,CAAC,GAAG,CAAC,4DAA4D,UAAU,GAAG,CAAC,CAAC;QAEvF,2BAA2B;QAC3B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,QAAoB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAAoB;QAC7B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF;AA/HD,wDA+HC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB;IACpC,OAAO,IAAI,sBAAsB,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Cache Validator - Integrity and Version Validation
3
+ *
4
+ * Validates binary cache integrity using:
5
+ * - SHA-256 checksum verification
6
+ * - Semantic version compatibility checks
7
+ * - Pattern entry validation
8
+ *
9
+ * @module core/cache/CacheValidator
10
+ * @version 1.0.0
11
+ */
12
+ import type { CacheValidator, CacheVersion, ValidationResult, PatternEntry } from './BinaryMetadataCache';
13
+ /**
14
+ * Implementation of CacheValidator interface
15
+ *
16
+ * Provides multi-level validation:
17
+ * 1. Checksum validation (SHA-256)
18
+ * 2. Version compatibility (semantic versioning)
19
+ * 3. Pattern entry validation (required fields)
20
+ */
21
+ export declare class BinaryCacheValidator implements CacheValidator {
22
+ private serializer;
23
+ constructor();
24
+ /**
25
+ * Validate cache integrity
26
+ *
27
+ * Performs comprehensive validation:
28
+ * - Checksum matches expected value
29
+ * - Version is compatible with current code
30
+ * - Buffer structure is valid
31
+ *
32
+ * @param buffer - Binary cache buffer
33
+ * @param expectedChecksum - Expected SHA-256 checksum
34
+ * @returns Validation result with detailed diagnostics
35
+ */
36
+ validate(buffer: Uint8Array, expectedChecksum: string): Promise<ValidationResult>;
37
+ /**
38
+ * Check version compatibility
39
+ *
40
+ * Rules:
41
+ * - Major version mismatch: INCOMPATIBLE (breaking changes)
42
+ * - Minor version mismatch: COMPATIBLE (backward compatible)
43
+ * - Patch version mismatch: COMPATIBLE (bug fixes)
44
+ *
45
+ * @param cacheVersion - Version from cache header
46
+ * @param codeVersion - Current code version
47
+ * @returns True if compatible
48
+ */
49
+ isVersionCompatible(cacheVersion: CacheVersion, codeVersion: CacheVersion): boolean;
50
+ /**
51
+ * Validate pattern entry
52
+ *
53
+ * Checks for:
54
+ * - Required fields present
55
+ * - Valid embedding dimensions
56
+ * - Valid metadata values
57
+ *
58
+ * @param entry - Pattern entry to validate
59
+ * @returns True if valid
60
+ */
61
+ isValidPatternEntry(entry: PatternEntry): boolean;
62
+ }
63
+ /**
64
+ * Create a new BinaryCacheValidator instance
65
+ *
66
+ * @returns BinaryCacheValidator instance
67
+ */
68
+ export declare function createCacheValidator(): BinaryCacheValidator;
69
+ //# sourceMappingURL=CacheValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheValidator.d.ts","sourceRoot":"","sources":["../../../src/core/cache/CacheValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAG/B;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,UAAU,CAAwB;;IAM1C;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqEvF;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,OAAO;IAgBnF;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;CAmDlD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAE3D"}
@@ -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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"}