vibecodingmachine-core 2026.2.20-438 → 2026.2.26-1739

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 (202) hide show
  1. package/README.md +240 -0
  2. package/package.json +10 -2
  3. package/src/agents/Agent.js +300 -0
  4. package/src/agents/AgentAdditionService.js +311 -0
  5. package/src/agents/AgentCheckService.js +690 -0
  6. package/src/agents/AgentInstallationService.js +140 -0
  7. package/src/agents/AgentSetupService.js +467 -0
  8. package/src/agents/AgentStatus.js +183 -0
  9. package/src/agents/AgentVerificationService.js +634 -0
  10. package/src/agents/ConfigurationSchemaValidator.js +543 -0
  11. package/src/agents/EnvironmentConfigurationManager.js +602 -0
  12. package/src/agents/InstallationErrorHandler.js +372 -0
  13. package/src/agents/InstallationLog.js +363 -0
  14. package/src/agents/InstallationMethod.js +510 -0
  15. package/src/agents/InstallationOrchestrator.js +352 -0
  16. package/src/agents/InstallationProgressReporter.js +372 -0
  17. package/src/agents/InstallationRetryManager.js +322 -0
  18. package/src/agents/InstallationType.js +254 -0
  19. package/src/agents/OperationTypes.js +310 -0
  20. package/src/agents/PerformanceMetricsCollector.js +493 -0
  21. package/src/agents/SecurityValidationService.js +534 -0
  22. package/src/agents/VerificationTest.js +354 -0
  23. package/src/agents/VerificationType.js +226 -0
  24. package/src/agents/WindowsPermissionHandler.js +518 -0
  25. package/src/agents/config/AgentConfigManager.js +393 -0
  26. package/src/agents/config/AgentDefaultsRegistry.js +373 -0
  27. package/src/agents/config/ConfigValidator.js +281 -0
  28. package/src/agents/discovery/AgentDiscoveryService.js +707 -0
  29. package/src/agents/logging/AgentLogger.js +511 -0
  30. package/src/agents/status/AgentStatusManager.js +481 -0
  31. package/src/agents/storage/FileManager.js +454 -0
  32. package/src/agents/verification/AgentCommunicationTester.js +474 -0
  33. package/src/agents/verification/BaseVerifier.js +430 -0
  34. package/src/agents/verification/CommandVerifier.js +480 -0
  35. package/src/agents/verification/FileOperationVerifier.js +453 -0
  36. package/src/agents/verification/ResultAnalyzer.js +707 -0
  37. package/src/agents/verification/TestRequirementManager.js +495 -0
  38. package/src/agents/verification/VerificationRunner.js +433 -0
  39. package/src/agents/windows/BaseWindowsInstaller.js +441 -0
  40. package/src/agents/windows/ChocolateyInstaller.js +509 -0
  41. package/src/agents/windows/DirectInstaller.js +443 -0
  42. package/src/agents/windows/InstallerFactory.js +391 -0
  43. package/src/agents/windows/NpmInstaller.js +505 -0
  44. package/src/agents/windows/PowerShellInstaller.js +458 -0
  45. package/src/agents/windows/WinGetInstaller.js +390 -0
  46. package/src/analysis/analysis-reporter.js +132 -0
  47. package/src/analysis/boundary-detector.js +712 -0
  48. package/src/analysis/categorizer.js +340 -0
  49. package/src/analysis/codebase-scanner.js +384 -0
  50. package/src/analysis/line-counter.js +513 -0
  51. package/src/analysis/priority-calculator.js +679 -0
  52. package/src/analysis/report/analysis-report.js +250 -0
  53. package/src/analysis/report/package-analyzer.js +278 -0
  54. package/src/analysis/report/recommendation-generator.js +382 -0
  55. package/src/analysis/report/statistics-generator.js +515 -0
  56. package/src/analysis/reports/analysis-report-model.js +101 -0
  57. package/src/analysis/reports/recommendation-generator.js +283 -0
  58. package/src/analysis/reports/report-generators.js +191 -0
  59. package/src/analysis/reports/statistics-calculator.js +231 -0
  60. package/src/analysis/reports/trend-analyzer.js +219 -0
  61. package/src/analysis/strategy-generator.js +814 -0
  62. package/src/auto-mode/AutoModeBusinessLogic.js +836 -0
  63. package/src/config/refactoring-config.js +307 -0
  64. package/src/health-tracking/json-storage.js +38 -2
  65. package/src/ide-integration/applescript-manager-core.js +233 -0
  66. package/src/ide-integration/applescript-manager.cjs +357 -28
  67. package/src/ide-integration/applescript-manager.js +89 -3599
  68. package/src/ide-integration/cdp-manager.js +306 -0
  69. package/src/ide-integration/claude-code-cli-manager.cjs +1 -1
  70. package/src/ide-integration/continuation-handler.js +337 -0
  71. package/src/ide-integration/ide-status-checker.js +292 -0
  72. package/src/ide-integration/macos-ide-manager.js +627 -0
  73. package/src/ide-integration/macos-text-sender.js +528 -0
  74. package/src/ide-integration/response-reader.js +548 -0
  75. package/src/ide-integration/windows-automation-manager.js +121 -0
  76. package/src/ide-integration/windows-ide-manager.js +373 -0
  77. package/src/index.cjs +25 -3
  78. package/src/index.js +15 -1
  79. package/src/llm/direct-llm-manager.cjs +90 -2
  80. package/src/models/compliance-report.js +538 -0
  81. package/src/models/file-analysis.js +681 -0
  82. package/src/models/refactoring-plan.js +770 -0
  83. package/src/monitoring/alert-system.js +834 -0
  84. package/src/monitoring/compliance-progress-tracker.js +437 -0
  85. package/src/monitoring/continuous-scan-notifications.js +661 -0
  86. package/src/monitoring/continuous-scanner.js +279 -0
  87. package/src/monitoring/file-monitor/file-analyzer.js +262 -0
  88. package/src/monitoring/file-monitor/file-monitor.js +237 -0
  89. package/src/monitoring/file-monitor/watcher.js +194 -0
  90. package/src/monitoring/file-monitor.js +17 -0
  91. package/src/monitoring/notification-manager.js +437 -0
  92. package/src/monitoring/scanner-core.js +368 -0
  93. package/src/monitoring/scanner-events.js +214 -0
  94. package/src/monitoring/violation-notification-system.js +515 -0
  95. package/src/refactoring/boundaries/cohesion-analyzer.js +316 -0
  96. package/src/refactoring/boundaries/extraction-result.js +285 -0
  97. package/src/refactoring/boundaries/extraction-strategies.js +392 -0
  98. package/src/refactoring/boundaries/module-boundary.js +209 -0
  99. package/src/refactoring/boundary/boundary-detector.js +741 -0
  100. package/src/refactoring/boundary/boundary-types.js +405 -0
  101. package/src/refactoring/boundary/extraction-strategies.js +554 -0
  102. package/src/refactoring/boundary-extraction-result.js +77 -0
  103. package/src/refactoring/boundary-extraction-strategies.js +330 -0
  104. package/src/refactoring/boundary-extractor.js +384 -0
  105. package/src/refactoring/boundary-types.js +46 -0
  106. package/src/refactoring/circular/circular-dependency.js +88 -0
  107. package/src/refactoring/circular/cycle-detection.js +147 -0
  108. package/src/refactoring/circular/dependency-node.js +82 -0
  109. package/src/refactoring/circular/dependency-result.js +107 -0
  110. package/src/refactoring/circular/dependency-types.js +58 -0
  111. package/src/refactoring/circular/graph-builder.js +213 -0
  112. package/src/refactoring/circular/resolution-strategy.js +72 -0
  113. package/src/refactoring/circular/strategy-generator.js +229 -0
  114. package/src/refactoring/circular-dependency-resolver-original.js +809 -0
  115. package/src/refactoring/circular-dependency-resolver.js +200 -0
  116. package/src/refactoring/code-mover.js +761 -0
  117. package/src/refactoring/file-splitter.js +696 -0
  118. package/src/refactoring/functionality-validator.js +816 -0
  119. package/src/refactoring/import-manager.js +774 -0
  120. package/src/refactoring/module-boundary.js +107 -0
  121. package/src/refactoring/refactoring-executor.js +672 -0
  122. package/src/refactoring/refactoring-rollback.js +614 -0
  123. package/src/refactoring/test-validator.js +631 -0
  124. package/src/requirement-management/default-requirement-manager.js +321 -0
  125. package/src/requirement-management/requirement-file-parser.js +159 -0
  126. package/src/requirement-management/requirement-sequencer.js +221 -0
  127. package/src/rui/commands/AgentCommandParser.js +600 -0
  128. package/src/rui/commands/AgentCommands.js +487 -0
  129. package/src/rui/commands/AgentResponseFormatter.js +832 -0
  130. package/src/scripts/verify-full-compliance.js +269 -0
  131. package/src/sync/sync-engine-core.js +1 -0
  132. package/src/sync/sync-engine-remote-handlers.js +135 -0
  133. package/src/task-generation/automated-task-generator.js +351 -0
  134. package/src/task-generation/prioritizer.js +287 -0
  135. package/src/task-generation/task-list-updater.js +215 -0
  136. package/src/task-generation/task-management-integration.js +480 -0
  137. package/src/task-generation/task-manager-integration.js +270 -0
  138. package/src/task-generation/violation-task-generator.js +474 -0
  139. package/src/task-management/continuous-scan-integration.js +342 -0
  140. package/src/timeout-management/index.js +12 -3
  141. package/src/timeout-management/response-time-tracker.js +167 -0
  142. package/src/timeout-management/timeout-calculator.js +159 -0
  143. package/src/timeout-management/timeout-config-manager.js +172 -0
  144. package/src/utils/ast-analyzer.js +417 -0
  145. package/src/utils/current-requirement-manager.js +276 -0
  146. package/src/utils/current-requirement-operations.js +472 -0
  147. package/src/utils/dependency-mapper.js +456 -0
  148. package/src/utils/download-with-progress.js +4 -2
  149. package/src/utils/electron-update-checker.js +4 -1
  150. package/src/utils/file-size-analyzer.js +272 -0
  151. package/src/utils/import-updater.js +280 -0
  152. package/src/utils/refactoring-tools.js +512 -0
  153. package/src/utils/report-generator.js +569 -0
  154. package/src/utils/reports/report-analysis.js +218 -0
  155. package/src/utils/reports/report-types.js +55 -0
  156. package/src/utils/reports/summary-generators.js +102 -0
  157. package/src/utils/requirement-file-management.js +157 -0
  158. package/src/utils/requirement-helpers/requirement-file-ops.js +392 -0
  159. package/src/utils/requirement-helpers/requirement-mover.js +414 -0
  160. package/src/utils/requirement-helpers/requirement-parser.js +326 -0
  161. package/src/utils/requirement-helpers/requirement-status.js +320 -0
  162. package/src/utils/requirement-helpers-new.js +55 -0
  163. package/src/utils/requirement-helpers-refactored.js +367 -0
  164. package/src/utils/requirement-helpers.js +291 -1191
  165. package/src/utils/requirement-movement-operations.js +450 -0
  166. package/src/utils/requirement-movement.js +312 -0
  167. package/src/utils/requirement-parsing-helpers.js +56 -0
  168. package/src/utils/requirement-statistics.js +200 -0
  169. package/src/utils/requirement-text-utils.js +58 -0
  170. package/src/utils/rollback/rollback-handlers.js +125 -0
  171. package/src/utils/rollback/rollback-operation.js +63 -0
  172. package/src/utils/rollback/rollback-recorder.js +166 -0
  173. package/src/utils/rollback/rollback-state-manager.js +175 -0
  174. package/src/utils/rollback/rollback-types.js +33 -0
  175. package/src/utils/rollback/rollback-utils.js +110 -0
  176. package/src/utils/rollback-manager-original.js +569 -0
  177. package/src/utils/rollback-manager.js +202 -0
  178. package/src/utils/smoke-test-cli.js +362 -0
  179. package/src/utils/smoke-test-gui.js +351 -0
  180. package/src/utils/smoke-test-orchestrator.js +321 -0
  181. package/src/utils/smoke-test-runner.js +60 -0
  182. package/src/utils/smoke-test-web.js +347 -0
  183. package/src/utils/specification-helpers.js +39 -13
  184. package/src/utils/specification-migration.js +97 -0
  185. package/src/utils/test-runner.js +579 -0
  186. package/src/utils/validation-framework.js +518 -0
  187. package/src/validation/compliance-analyzer.js +197 -0
  188. package/src/validation/compliance-report-generator.js +343 -0
  189. package/src/validation/compliance-reporter.js +711 -0
  190. package/src/validation/compliance-rules.js +127 -0
  191. package/src/validation/constitution-validator-new.js +196 -0
  192. package/src/validation/constitution-validator.js +17 -0
  193. package/src/validation/file-validators.js +170 -0
  194. package/src/validation/line-limit/file-analyzer.js +201 -0
  195. package/src/validation/line-limit/line-limit-validator.js +208 -0
  196. package/src/validation/line-limit/validation-result.js +144 -0
  197. package/src/validation/line-limit-core.js +225 -0
  198. package/src/validation/line-limit-reporter.js +134 -0
  199. package/src/validation/line-limit-result.js +125 -0
  200. package/src/validation/line-limit-validator.js +41 -0
  201. package/src/validation/metrics-calculator.js +660 -0
  202. package/src/sync/sync-engine-backup.js +0 -559
@@ -0,0 +1,237 @@
1
+ /**
2
+ * File Monitor - Main Module
3
+ *
4
+ * Main orchestrator for file monitoring functionality.
5
+ * This file imports and coordinates the modular monitoring components.
6
+ */
7
+
8
+ const { FileSystemWatcher } = require('./watcher');
9
+ const { MonitoringFileAnalyzer } = require('./file-analyzer');
10
+ const EventEmitter = require('events');
11
+
12
+ /**
13
+ * File monitoring daemon
14
+ */
15
+ class FileMonitor extends EventEmitter {
16
+ constructor(options = {}) {
17
+ super();
18
+
19
+ this.options = {
20
+ lineLimit: 555,
21
+ checkConstitutional: true,
22
+ checkCommonIssues: true,
23
+ cacheTimeout: 30000,
24
+ ...options
25
+ };
26
+
27
+ this.watcher = new FileSystemWatcher(options);
28
+ this.analyzer = new MonitoringFileAnalyzer(this.options);
29
+ this.isRunning = false;
30
+ this.monitoredPaths = new Set();
31
+
32
+ this.setupWatcherEvents();
33
+ }
34
+
35
+ /**
36
+ * Start monitoring the specified paths
37
+ */
38
+ async start(watchPaths) {
39
+ if (this.isRunning) {
40
+ throw new Error('Monitor is already running');
41
+ }
42
+
43
+ try {
44
+ await this.watcher.start(watchPaths);
45
+ this.isRunning = true;
46
+ watchPaths.forEach(p => this.monitoredPaths.add(p));
47
+
48
+ this.emit('started', {
49
+ paths: this.monitoredPaths,
50
+ options: this.options
51
+ });
52
+
53
+ } catch (error) {
54
+ throw new Error(`Failed to start file monitor: ${error.message}`);
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Stop monitoring
60
+ */
61
+ async stop() {
62
+ if (!this.isRunning) {
63
+ return;
64
+ }
65
+
66
+ try {
67
+ await this.watcher.stop();
68
+ this.isRunning = false;
69
+ this.monitoredPaths.clear();
70
+
71
+ this.emit('stopped');
72
+ } catch (error) {
73
+ throw new Error(`Failed to stop file monitor: ${error.message}`);
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Add a path to monitor
79
+ */
80
+ async addPath(watchPath) {
81
+ if (!this.isRunning) {
82
+ throw new Error('Monitor is not running');
83
+ }
84
+
85
+ try {
86
+ await this.watcher.addPath(watchPath);
87
+ this.monitoredPaths.add(watchPath);
88
+
89
+ this.emit('pathAdded', { path: watchPath });
90
+ } catch (error) {
91
+ throw new Error(`Failed to add path ${watchPath}: ${error.message}`);
92
+ }
93
+ }
94
+
95
+ /**
96
+ * Remove a path from monitoring
97
+ */
98
+ async removePath(watchPath) {
99
+ if (!this.isRunning) {
100
+ return;
101
+ }
102
+
103
+ try {
104
+ await this.watcher.removePath(watchPath);
105
+ this.monitoredPaths.delete(watchPath);
106
+
107
+ this.emit('pathRemoved', { path: watchPath });
108
+ } catch (error) {
109
+ throw new Error(`Failed to remove path ${watchPath}: ${error.message}`);
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Get current monitoring status
115
+ */
116
+ getStatus() {
117
+ return {
118
+ isRunning: this.isRunning,
119
+ monitoredPaths: Array.from(this.monitoredPaths),
120
+ options: this.options,
121
+ watcherStatus: this.watcher.getStatus(),
122
+ analyzerStats: this.analyzer.getCacheStats()
123
+ };
124
+ }
125
+
126
+ /**
127
+ * Setup event handlers for the watcher
128
+ */
129
+ setupWatcherEvents() {
130
+ // Handle file changes
131
+ this.watcher.on('fileChanged', async (event) => {
132
+ try {
133
+ const analysis = await this.analyzer.analyzeFile(event.path, 'change');
134
+
135
+ this.emit('fileAnalyzed', {
136
+ ...event,
137
+ analysis
138
+ });
139
+
140
+ // Emit specific events for issues
141
+ if (!analysis.compliant) {
142
+ this.emit('complianceIssue', {
143
+ ...event,
144
+ analysis
145
+ });
146
+ }
147
+
148
+ } catch (error) {
149
+ this.emit('analysisError', {
150
+ ...event,
151
+ error: error.message
152
+ });
153
+ }
154
+ });
155
+
156
+ // Handle new files
157
+ this.watcher.on('fileAdded', async (event) => {
158
+ try {
159
+ const analysis = await this.analyzer.analyzeFile(event.path, 'add');
160
+
161
+ this.emit('fileAnalyzed', {
162
+ ...event,
163
+ analysis
164
+ });
165
+
166
+ if (!analysis.compliant) {
167
+ this.emit('complianceIssue', {
168
+ ...event,
169
+ analysis
170
+ });
171
+ }
172
+
173
+ } catch (error) {
174
+ this.emit('analysisError', {
175
+ ...event,
176
+ error: error.message
177
+ });
178
+ }
179
+ });
180
+
181
+ // Handle file removal
182
+ this.watcher.on('fileRemoved', (event) => {
183
+ this.emit('fileRemoved', event);
184
+
185
+ // Clear analysis cache for removed file
186
+ this.analyzer.clearCache();
187
+ });
188
+
189
+ // Handle watcher errors
190
+ this.watcher.on('error', (error) => {
191
+ this.emit('error', error);
192
+ });
193
+
194
+ // Handle watcher lifecycle events
195
+ this.watcher.on('started', (event) => {
196
+ this.emit('watcherStarted', event);
197
+ });
198
+
199
+ this.watcher.on('stopped', () => {
200
+ this.emit('watcherStopped');
201
+ });
202
+ }
203
+
204
+ /**
205
+ * Analyze a specific file on demand
206
+ */
207
+ async analyzeFile(filePath) {
208
+ try {
209
+ const analysis = await this.analyzer.analyzeFile(filePath, 'manual');
210
+
211
+ this.emit('fileAnalyzed', {
212
+ path: filePath,
213
+ stats: null,
214
+ type: 'file',
215
+ analysis
216
+ });
217
+
218
+ return analysis;
219
+ } catch (error) {
220
+ this.emit('analysisError', {
221
+ path: filePath,
222
+ error: error.message
223
+ });
224
+ throw error;
225
+ }
226
+ }
227
+
228
+ /**
229
+ * Clear the analysis cache
230
+ */
231
+ clearCache() {
232
+ this.analyzer.clearCache();
233
+ this.emit('cacheCleared');
234
+ }
235
+ }
236
+
237
+ module.exports = FileMonitor;
@@ -0,0 +1,194 @@
1
+ /**
2
+ * File System Watcher
3
+ *
4
+ * Handles the core file system watching functionality using chokidar.
5
+ */
6
+
7
+ const chokidar = require('chokidar');
8
+ const EventEmitter = require('events');
9
+ const path = require('path');
10
+
11
+ /**
12
+ * File system watcher class
13
+ */
14
+ class FileSystemWatcher extends EventEmitter {
15
+ constructor(options = {}) {
16
+ super();
17
+
18
+ this.options = {
19
+ ignored: [
20
+ '**/node_modules/**',
21
+ '**/.git/**',
22
+ '**/dist/**',
23
+ '**/build/**',
24
+ '**/coverage/**',
25
+ '**/.nyc_output/**',
26
+ '**/*.log',
27
+ '**/*.tmp',
28
+ '**/*.cache'
29
+ ],
30
+ persistent: true,
31
+ ignoreInitial: false,
32
+ followSymlinks: false,
33
+ cwd: options.cwd || process.cwd(),
34
+ ...options
35
+ };
36
+
37
+ this.watcher = null;
38
+ this.isWatching = false;
39
+ this.watchedPaths = new Set();
40
+ }
41
+
42
+ /**
43
+ * Start watching the specified paths
44
+ */
45
+ async start(watchPaths) {
46
+ if (this.isWatching) {
47
+ throw new Error('Watcher is already running');
48
+ }
49
+
50
+ const paths = Array.isArray(watchPaths) ? watchPaths : [watchPaths];
51
+
52
+ try {
53
+ this.watcher = chokidar.watch(paths, this.options);
54
+
55
+ this.setupEventHandlers();
56
+
57
+ await new Promise((resolve, reject) => {
58
+ this.watcher.on('ready', () => {
59
+ this.isWatching = true;
60
+ paths.forEach(p => this.watchedPaths.add(path.resolve(p)));
61
+ this.emit('started', { paths: this.watchedPaths });
62
+ resolve();
63
+ });
64
+
65
+ this.watcher.on('error', reject);
66
+ });
67
+
68
+ } catch (error) {
69
+ throw new Error(`Failed to start watcher: ${error.message}`);
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Stop watching
75
+ */
76
+ async stop() {
77
+ if (!this.isWatching || !this.watcher) {
78
+ return;
79
+ }
80
+
81
+ try {
82
+ await this.watcher.close();
83
+ this.isWatching = false;
84
+ this.watchedPaths.clear();
85
+ this.emit('stopped');
86
+ } catch (error) {
87
+ throw new Error(`Failed to stop watcher: ${error.message}`);
88
+ }
89
+ }
90
+
91
+ /**
92
+ * Add a path to watch
93
+ */
94
+ async addPath(watchPath) {
95
+ if (!this.isWatching) {
96
+ throw new Error('Watcher is not running');
97
+ }
98
+
99
+ const resolvedPath = path.resolve(watchPath);
100
+
101
+ if (this.watchedPaths.has(resolvedPath)) {
102
+ return;
103
+ }
104
+
105
+ try {
106
+ await this.watcher.add(resolvedPath);
107
+ this.watchedPaths.add(resolvedPath);
108
+ this.emit('pathAdded', { path: resolvedPath });
109
+ } catch (error) {
110
+ throw new Error(`Failed to add path ${watchPath}: ${error.message}`);
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Remove a path from watching
116
+ */
117
+ async removePath(watchPath) {
118
+ if (!this.isWatching) {
119
+ return;
120
+ }
121
+
122
+ const resolvedPath = path.resolve(watchPath);
123
+
124
+ if (!this.watchedPaths.has(resolvedPath)) {
125
+ return;
126
+ }
127
+
128
+ try {
129
+ await this.watcher.unwatch(resolvedPath);
130
+ this.watchedPaths.delete(resolvedPath);
131
+ this.emit('pathRemoved', { path: resolvedPath });
132
+ } catch (error) {
133
+ throw new Error(`Failed to remove path ${watchPath}: ${error.message}`);
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Get current watch status
139
+ */
140
+ getStatus() {
141
+ return {
142
+ isWatching: this.isWatching,
143
+ watchedPaths: Array.from(this.watchedPaths),
144
+ options: this.options
145
+ };
146
+ }
147
+
148
+ /**
149
+ * Setup event handlers for the chokidar watcher
150
+ */
151
+ setupEventHandlers() {
152
+ this.watcher
153
+ .on('add', (filePath, stats) => {
154
+ this.emit('fileAdded', {
155
+ path: filePath,
156
+ stats,
157
+ type: 'file'
158
+ });
159
+ })
160
+ .on('addDir', (dirPath, stats) => {
161
+ this.emit('directoryAdded', {
162
+ path: dirPath,
163
+ stats,
164
+ type: 'directory'
165
+ });
166
+ })
167
+ .on('change', (filePath, stats) => {
168
+ this.emit('fileChanged', {
169
+ path: filePath,
170
+ stats,
171
+ type: 'file'
172
+ });
173
+ })
174
+ .on('unlink', (filePath) => {
175
+ this.emit('fileRemoved', {
176
+ path: filePath,
177
+ type: 'file'
178
+ });
179
+ })
180
+ .on('unlinkDir', (dirPath) => {
181
+ this.emit('directoryRemoved', {
182
+ path: dirPath,
183
+ type: 'directory'
184
+ });
185
+ })
186
+ .on('error', (error) => {
187
+ this.emit('error', error);
188
+ });
189
+ }
190
+ }
191
+
192
+ module.exports = {
193
+ FileSystemWatcher
194
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * File Monitor - Main Module
3
+ *
4
+ * Main orchestrator for file monitoring functionality.
5
+ * This file imports and coordinates the modular monitoring components.
6
+ */
7
+
8
+ const FileMonitor = require('./file-monitor/file-monitor');
9
+ const { FileSystemWatcher } = require('./file-monitor/watcher');
10
+ const { MonitoringFileAnalyzer } = require('./file-monitor/file-analyzer');
11
+
12
+ // Re-export all classes for backward compatibility
13
+ module.exports = FileMonitor;
14
+
15
+ // Also export individual components for advanced usage
16
+ module.exports.FileSystemWatcher = FileSystemWatcher;
17
+ module.exports.MonitoringFileAnalyzer = MonitoringFileAnalyzer;