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,371 @@
1
+ "use strict";
2
+ /**
3
+ * FileOperations - Platform-optimized file operations
4
+ *
5
+ * Provides file copy/clone operations that leverage platform-specific
6
+ * features like APFS clonefile (macOS) and reflink (Linux btrfs/xfs)
7
+ * for 50-100x performance improvements.
8
+ *
9
+ * @module core/platform/FileOperations
10
+ * @version 1.0.0
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.CopyStrategy = void 0;
47
+ exports.copyFile = copyFile;
48
+ exports.copyDirectory = copyDirectory;
49
+ exports.cloneForIsolation = cloneForIsolation;
50
+ exports.linkFixture = linkFixture;
51
+ exports.getCopyCapabilities = getCopyCapabilities;
52
+ exports.benchmarkCopy = benchmarkCopy;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const PlatformDetector_1 = require("./PlatformDetector");
56
+ /**
57
+ * Copy strategy used for a file operation
58
+ */
59
+ var CopyStrategy;
60
+ (function (CopyStrategy) {
61
+ /** Copy-on-write clone (fastest) */
62
+ CopyStrategy["REFLINK"] = "reflink";
63
+ /** Filesystem hardlink (instant, shares data) */
64
+ CopyStrategy["HARDLINK"] = "hardlink";
65
+ /** Kernel-space copy (fast) */
66
+ CopyStrategy["KERNEL"] = "kernel";
67
+ /** Userspace copy (fallback) */
68
+ CopyStrategy["USERSPACE"] = "userspace";
69
+ })(CopyStrategy || (exports.CopyStrategy = CopyStrategy = {}));
70
+ /**
71
+ * Copy a file using the optimal strategy for the platform
72
+ *
73
+ * Priority: reflink > kernel copy > userspace copy
74
+ *
75
+ * @param source - Source file path
76
+ * @param destination - Destination file path
77
+ * @param options - Copy options
78
+ * @returns Copy result with strategy and timing info
79
+ */
80
+ async function copyFile(source, destination, options = {}) {
81
+ const startTime = performance.now();
82
+ const sourcePath = path.resolve(source);
83
+ const destPath = path.resolve(destination);
84
+ // Check source exists
85
+ let stats;
86
+ try {
87
+ stats = await fs.promises.stat(sourcePath);
88
+ if (!stats.isFile()) {
89
+ throw new Error(`Source is not a file: ${sourcePath}`);
90
+ }
91
+ }
92
+ catch (err) {
93
+ return {
94
+ source: sourcePath,
95
+ destination: destPath,
96
+ strategy: CopyStrategy.USERSPACE,
97
+ duration: performance.now() - startTime,
98
+ size: 0,
99
+ success: false,
100
+ error: err.message,
101
+ };
102
+ }
103
+ // Create parent directory if needed
104
+ if (options.recursive) {
105
+ await fs.promises.mkdir(path.dirname(destPath), { recursive: true });
106
+ }
107
+ // Handle overwrite
108
+ if (!options.overwrite) {
109
+ try {
110
+ await fs.promises.access(destPath);
111
+ return {
112
+ source: sourcePath,
113
+ destination: destPath,
114
+ strategy: CopyStrategy.USERSPACE,
115
+ duration: performance.now() - startTime,
116
+ size: stats.size,
117
+ success: false,
118
+ error: 'Destination already exists',
119
+ };
120
+ }
121
+ catch {
122
+ // File doesn't exist, continue
123
+ }
124
+ }
125
+ // Determine strategy
126
+ let strategy = options.strategy;
127
+ if (!strategy) {
128
+ const caps = await (0, PlatformDetector_1.detectCapabilities)(sourcePath);
129
+ strategy = caps.supportsReflink ? CopyStrategy.REFLINK : CopyStrategy.KERNEL;
130
+ }
131
+ // Execute copy with fallback chain
132
+ let usedStrategy = strategy;
133
+ let error;
134
+ try {
135
+ switch (strategy) {
136
+ case CopyStrategy.REFLINK:
137
+ try {
138
+ await fs.promises.copyFile(sourcePath, destPath, fs.constants.COPYFILE_FICLONE_FORCE);
139
+ }
140
+ catch {
141
+ // Reflink failed, try kernel copy
142
+ usedStrategy = CopyStrategy.KERNEL;
143
+ await fs.promises.copyFile(sourcePath, destPath, fs.constants.COPYFILE_FICLONE);
144
+ }
145
+ break;
146
+ case CopyStrategy.HARDLINK:
147
+ try {
148
+ await fs.promises.link(sourcePath, destPath);
149
+ }
150
+ catch {
151
+ // Hardlink failed, fallback to copy
152
+ usedStrategy = CopyStrategy.KERNEL;
153
+ await fs.promises.copyFile(sourcePath, destPath, fs.constants.COPYFILE_FICLONE);
154
+ }
155
+ break;
156
+ case CopyStrategy.KERNEL:
157
+ await fs.promises.copyFile(sourcePath, destPath, fs.constants.COPYFILE_FICLONE);
158
+ break;
159
+ case CopyStrategy.USERSPACE:
160
+ default:
161
+ await fs.promises.copyFile(sourcePath, destPath);
162
+ break;
163
+ }
164
+ // Preserve timestamps if requested
165
+ if (options.preserveTimestamps) {
166
+ const srcStats = await fs.promises.stat(sourcePath);
167
+ await fs.promises.utimes(destPath, srcStats.atime, srcStats.mtime);
168
+ }
169
+ }
170
+ catch (err) {
171
+ error = err.message;
172
+ }
173
+ return {
174
+ source: sourcePath,
175
+ destination: destPath,
176
+ strategy: usedStrategy,
177
+ duration: performance.now() - startTime,
178
+ size: stats.size,
179
+ success: !error,
180
+ error,
181
+ };
182
+ }
183
+ /**
184
+ * Copy a directory recursively using optimal strategies
185
+ *
186
+ * @param source - Source directory path
187
+ * @param destination - Destination directory path
188
+ * @param options - Copy options
189
+ * @returns Array of copy results for all files
190
+ */
191
+ async function copyDirectory(source, destination, options = {}) {
192
+ const sourcePath = path.resolve(source);
193
+ const destPath = path.resolve(destination);
194
+ // Check source is a directory
195
+ const stats = await fs.promises.stat(sourcePath);
196
+ if (!stats.isDirectory()) {
197
+ throw new Error(`Source is not a directory: ${sourcePath}`);
198
+ }
199
+ // Create destination directory
200
+ await fs.promises.mkdir(destPath, { recursive: true });
201
+ // Get all entries
202
+ const entries = await fs.promises.readdir(sourcePath, { withFileTypes: true });
203
+ const results = [];
204
+ // Process entries in parallel with concurrency limit
205
+ const CONCURRENCY = 10;
206
+ const chunks = [];
207
+ for (let i = 0; i < entries.length; i += CONCURRENCY) {
208
+ chunks.push(entries.slice(i, i + CONCURRENCY));
209
+ }
210
+ for (const chunk of chunks) {
211
+ const chunkResults = await Promise.all(chunk.map(async (entry) => {
212
+ const srcEntryPath = path.join(sourcePath, entry.name);
213
+ const destEntryPath = path.join(destPath, entry.name);
214
+ if (entry.isDirectory()) {
215
+ return copyDirectory(srcEntryPath, destEntryPath, options);
216
+ }
217
+ else if (entry.isFile()) {
218
+ return [await copyFile(srcEntryPath, destEntryPath, options)];
219
+ }
220
+ else {
221
+ // Symlinks, etc. - skip for now
222
+ return [];
223
+ }
224
+ }));
225
+ results.push(...chunkResults.flat());
226
+ }
227
+ return results;
228
+ }
229
+ /**
230
+ * Clone a directory for test isolation
231
+ *
232
+ * Optimized for creating isolated test workspaces with COW cloning.
233
+ *
234
+ * @param source - Source directory path
235
+ * @param destination - Destination directory path
236
+ * @returns Clone result summary
237
+ */
238
+ async function cloneForIsolation(source, destination) {
239
+ const startTime = performance.now();
240
+ const results = await copyDirectory(source, destination, {
241
+ overwrite: true,
242
+ recursive: true,
243
+ });
244
+ const errors = results.filter(r => !r.success).map(r => r.error || 'Unknown error');
245
+ const successResults = results.filter(r => r.success);
246
+ // Determine predominant strategy used
247
+ const strategyCount = new Map();
248
+ for (const r of successResults) {
249
+ strategyCount.set(r.strategy, (strategyCount.get(r.strategy) || 0) + 1);
250
+ }
251
+ let predominantStrategy = CopyStrategy.USERSPACE;
252
+ let maxCount = 0;
253
+ for (const [strategy, count] of strategyCount) {
254
+ if (count > maxCount) {
255
+ maxCount = count;
256
+ predominantStrategy = strategy;
257
+ }
258
+ }
259
+ return {
260
+ success: errors.length === 0,
261
+ filesCloned: successResults.length,
262
+ totalSize: successResults.reduce((sum, r) => sum + r.size, 0),
263
+ duration: performance.now() - startTime,
264
+ strategy: predominantStrategy,
265
+ errors,
266
+ };
267
+ }
268
+ /**
269
+ * Create a read-only fixture copy using hardlinks
270
+ *
271
+ * Useful for test fixtures that won't be modified.
272
+ *
273
+ * @param source - Source file path
274
+ * @param destination - Destination file path
275
+ * @returns Copy result
276
+ */
277
+ async function linkFixture(source, destination) {
278
+ return copyFile(source, destination, {
279
+ strategy: CopyStrategy.HARDLINK,
280
+ recursive: true,
281
+ });
282
+ }
283
+ /**
284
+ * Get platform copy capabilities summary
285
+ */
286
+ async function getCopyCapabilities() {
287
+ const caps = await (0, PlatformDetector_1.detectCapabilities)();
288
+ let optimalStrategy;
289
+ let expectedSpeedup;
290
+ if (caps.supportsReflink) {
291
+ optimalStrategy = CopyStrategy.REFLINK;
292
+ expectedSpeedup = '100-1000x';
293
+ }
294
+ else if (caps.supportsCopyFileRange) {
295
+ optimalStrategy = CopyStrategy.KERNEL;
296
+ expectedSpeedup = '2-5x';
297
+ }
298
+ else {
299
+ optimalStrategy = CopyStrategy.USERSPACE;
300
+ expectedSpeedup = '1x (baseline)';
301
+ }
302
+ return {
303
+ platform: caps.platform,
304
+ filesystem: caps.filesystem,
305
+ optimalStrategy,
306
+ expectedSpeedup,
307
+ };
308
+ }
309
+ /**
310
+ * Benchmark copy operations for the current platform
311
+ *
312
+ * @param testPath - Path to run benchmark in
313
+ * @returns Benchmark results
314
+ */
315
+ async function benchmarkCopy(testPath = '/tmp') {
316
+ const testDir = path.join(testPath, '.copy-benchmark');
317
+ const testData = Buffer.alloc(1024 * 1024, 'x'); // 1MB test file
318
+ try {
319
+ await fs.promises.mkdir(testDir, { recursive: true });
320
+ const srcFile = path.join(testDir, 'src.tmp');
321
+ await fs.promises.writeFile(srcFile, testData);
322
+ const results = {
323
+ reflink: null,
324
+ kernel: null,
325
+ userspace: 0,
326
+ };
327
+ // Benchmark reflink
328
+ try {
329
+ const destReflink = path.join(testDir, 'dest-reflink.tmp');
330
+ const startReflink = performance.now();
331
+ await fs.promises.copyFile(srcFile, destReflink, fs.constants.COPYFILE_FICLONE_FORCE);
332
+ results.reflink = performance.now() - startReflink;
333
+ await fs.promises.unlink(destReflink);
334
+ }
335
+ catch {
336
+ // Reflink not supported
337
+ }
338
+ // Benchmark kernel copy
339
+ const destKernel = path.join(testDir, 'dest-kernel.tmp');
340
+ const startKernel = performance.now();
341
+ await fs.promises.copyFile(srcFile, destKernel, fs.constants.COPYFILE_FICLONE);
342
+ results.kernel = performance.now() - startKernel;
343
+ await fs.promises.unlink(destKernel);
344
+ // Benchmark userspace copy
345
+ const destUser = path.join(testDir, 'dest-user.tmp');
346
+ const startUser = performance.now();
347
+ await fs.promises.copyFile(srcFile, destUser);
348
+ results.userspace = performance.now() - startUser;
349
+ await fs.promises.unlink(destUser);
350
+ // Calculate improvement
351
+ let improvement = '1x';
352
+ if (results.reflink !== null) {
353
+ const factor = Math.round(results.userspace / results.reflink);
354
+ improvement = `${factor}x (reflink)`;
355
+ }
356
+ else if (results.kernel !== null && results.kernel < results.userspace) {
357
+ const factor = Math.round(results.userspace / results.kernel);
358
+ improvement = `${factor}x (kernel)`;
359
+ }
360
+ return { ...results, improvement };
361
+ }
362
+ finally {
363
+ try {
364
+ await fs.promises.rm(testDir, { recursive: true, force: true });
365
+ }
366
+ catch {
367
+ // Ignore cleanup errors
368
+ }
369
+ }
370
+ }
371
+ //# sourceMappingURL=FileOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileOperations.js","sourceRoot":"","sources":["../../../src/core/platform/FileOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * PlatformDetector - Detects platform capabilities for optimized file operations
3
+ *
4
+ * Identifies filesystem features like reflink (copy-on-write) support
5
+ * to enable 100x+ performance improvements for file operations.
6
+ *
7
+ * @module core/platform/PlatformDetector
8
+ * @version 1.0.0
9
+ */
10
+ /**
11
+ * Platform capabilities for file operations
12
+ */
13
+ export interface PlatformCapabilities {
14
+ /** Platform identifier (darwin, linux, win32, etc.) */
15
+ platform: NodeJS.Platform;
16
+ /** Detected filesystem type */
17
+ filesystem: string;
18
+ /** Whether reflink/clonefile is supported */
19
+ supportsReflink: boolean;
20
+ /** Whether hardlinks are supported */
21
+ supportsHardlinks: boolean;
22
+ /** Whether copy_file_range is available */
23
+ supportsCopyFileRange: boolean;
24
+ /** Node.js copyFile flags to use */
25
+ recommendedCopyFlags: number;
26
+ /** Human-readable capability summary */
27
+ summary: string;
28
+ }
29
+ /**
30
+ * Detect platform capabilities for a given path
31
+ *
32
+ * @param targetPath - Path to check capabilities for (uses tmpdir if not specified)
33
+ * @returns Platform capabilities object
34
+ */
35
+ export declare function detectCapabilities(targetPath?: string): Promise<PlatformCapabilities>;
36
+ /**
37
+ * Test if reflink actually works for a given path
38
+ *
39
+ * This performs an actual file clone test to verify capabilities.
40
+ *
41
+ * @param targetPath - Path to test
42
+ * @returns True if reflink works
43
+ */
44
+ export declare function testReflinkSupport(targetPath: string): Promise<boolean>;
45
+ /**
46
+ * Clear the capabilities cache
47
+ */
48
+ export declare function clearCapabilitiesCache(): void;
49
+ /**
50
+ * Get a quick summary of current platform capabilities
51
+ */
52
+ export declare function getQuickSummary(): Promise<string>;
53
+ //# sourceMappingURL=PlatformDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformDetector.d.ts","sourceRoot":"","sources":["../../../src/core/platform/PlatformDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oCAAoC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,GAAE,MAAoB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA0D/B;AAuGD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAGvD"}