vibecodingmachine-core 2026.2.20-438 → 2026.2.26-1642

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,269 @@
1
+ /**
2
+ * 100% File Size Compliance Verification
3
+ *
4
+ * Verifies that all source files in the repository comply with the 555-line limit.
5
+ * This is Task T065 from the 555 Max File Size Refactoring specification.
6
+ */
7
+
8
+ const path = require('path');
9
+ const { validateDirectory } = require('../validation/line-limit-validator');
10
+
11
+ class ComplianceVerifier {
12
+ constructor() {
13
+ this.rootDir = path.resolve(__dirname, '../../../..'); // Go up to repo root
14
+ this.packagesDir = path.join(this.rootDir, 'packages');
15
+ this.totalFiles = 0;
16
+ this.compliantFiles = 0;
17
+ this.violationFiles = [];
18
+ this.violationDetails = [];
19
+ }
20
+
21
+ /**
22
+ * Verify 100% file size compliance across all source files
23
+ */
24
+ async verifyFullCompliance() {
25
+ console.log('🔍 Starting 100% file size compliance verification...');
26
+ console.log(`📁 Scanning directory: ${this.rootDir}`);
27
+
28
+ try {
29
+ // Validate all packages directories
30
+ const packages = this.getPackageDirectories();
31
+
32
+ for (const packageDir of packages) {
33
+ await this.verifyPackage(packageDir);
34
+ }
35
+
36
+ // Generate compliance report
37
+ const complianceReport = this.generateComplianceReport();
38
+
39
+ // Log results
40
+ this.logResults(complianceReport);
41
+
42
+ return complianceReport;
43
+
44
+ } catch (error) {
45
+ console.error('❌ Compliance verification failed:', error.message);
46
+ throw error;
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Get all package directories to scan
52
+ */
53
+ getPackageDirectories() {
54
+ const packages = [];
55
+
56
+ // Core packages that should always be scanned
57
+ const corePackages = [
58
+ 'packages/core',
59
+ 'packages/cli',
60
+ 'packages/electron-app',
61
+ 'packages/web',
62
+ 'packages/mobile',
63
+ 'packages/vscode-extension',
64
+ 'packages/chrome-extension',
65
+ 'packages/admin',
66
+ 'packages/api-server'
67
+ ];
68
+
69
+ for (const pkg of corePackages) {
70
+ const fullPath = path.join(this.rootDir, pkg);
71
+ if (this.directoryExists(fullPath)) {
72
+ packages.push(fullPath);
73
+ }
74
+ }
75
+
76
+ return packages;
77
+ }
78
+
79
+ /**
80
+ * Verify a specific package directory
81
+ */
82
+ async verifyPackage(packageDir) {
83
+ console.log(`\n📦 Verifying package: ${path.basename(packageDir)}`);
84
+
85
+ try {
86
+ const results = validateDirectory(packageDir, {
87
+ limit: 555,
88
+ warningThreshold: 500,
89
+ criticalThreshold: 800
90
+ });
91
+
92
+ this.processValidationResults(results, packageDir);
93
+
94
+ } catch (error) {
95
+ console.warn(`⚠️ Could not validate package ${packageDir}: ${error.message}`);
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Process validation results
101
+ */
102
+ processValidationResults(results, packageDir) {
103
+ for (const result of results) {
104
+ this.totalFiles++;
105
+
106
+ if (result.isViolation()) {
107
+ this.violationFiles.push(result.filePath);
108
+ this.violationDetails.push({
109
+ filePath: result.filePath,
110
+ lineCount: result.lineCount,
111
+ limit: result.limit,
112
+ excess: result.lineCount - result.limit,
113
+ severity: result.getComplianceStatus(),
114
+ package: path.basename(packageDir)
115
+ });
116
+ } else {
117
+ this.compliantFiles++;
118
+ }
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Generate comprehensive compliance report
124
+ */
125
+ generateComplianceReport() {
126
+ const compliancePercentage = this.totalFiles > 0 ?
127
+ (this.compliantFiles / this.totalFiles) * 100 : 0;
128
+
129
+ const isFullyCompliant = this.violationFiles.length === 0;
130
+
131
+ return {
132
+ summary: {
133
+ totalFiles: this.totalFiles,
134
+ compliantFiles: this.compliantFiles,
135
+ violationFiles: this.violationFiles.length,
136
+ compliancePercentage: compliancePercentage.toFixed(2),
137
+ isFullyCompliant: isFullyCompliant,
138
+ verifiedAt: new Date().toISOString()
139
+ },
140
+ violations: this.violationDetails,
141
+ status: isFullyCompliant ? 'COMPLIANT' : 'NON_COMPLIANT',
142
+ message: isFullyCompliant ?
143
+ '✅ All files comply with the 555-line limit!' :
144
+ `❌ ${this.violationFiles.length} files exceed the 555-line limit`
145
+ };
146
+ }
147
+
148
+ /**
149
+ * Log detailed results
150
+ */
151
+ logResults(report) {
152
+ console.log('\n' + '='.repeat(80));
153
+ console.log('📊 COMPLIANCE VERIFICATION RESULTS');
154
+ console.log('='.repeat(80));
155
+
156
+ console.log(`\n📈 SUMMARY:`);
157
+ console.log(` Total files scanned: ${report.summary.totalFiles}`);
158
+ console.log(` Compliant files: ${report.summary.compliantFiles}`);
159
+ console.log(` Violation files: ${report.summary.violationFiles}`);
160
+ console.log(` Compliance rate: ${report.summary.compliancePercentage}%`);
161
+ console.log(` Status: ${report.status}`);
162
+
163
+ if (report.violations.length > 0) {
164
+ console.log(`\n❌ VIOLATIONS (${report.violations.length}):`);
165
+
166
+ // Group violations by package
167
+ const violationsByPackage = {};
168
+ for (const violation of report.violations) {
169
+ if (!violationsByPackage[violation.package]) {
170
+ violationsByPackage[violation.package] = [];
171
+ }
172
+ violationsByPackage[violation.package].push(violation);
173
+ }
174
+
175
+ for (const [pkg, pkgViolations] of Object.entries(violationsByPackage)) {
176
+ console.log(`\n📦 ${pkg} (${pkgViolations.length} violations):`);
177
+
178
+ for (const violation of pkgViolations.sort((a, b) => b.lineCount - a.lineCount)) {
179
+ console.log(` ❌ ${violation.lineCount} lines (+${violation.excess}) - ${violation.filePath}`);
180
+ }
181
+ }
182
+
183
+ console.log(`\n🎯 RECOMMENDATIONS:`);
184
+ console.log(` 1. Prioritize files with highest line counts`);
185
+ console.log(` 2. Use existing refactoring tools in packages/core/src/refactoring/`);
186
+ console.log(` 3. Run 'npm run check-compliance' after each refactoring`);
187
+ console.log(` 4. Update tasks.md to mark completed refactoring tasks`);
188
+
189
+ } else {
190
+ console.log(`\n🎉 EXCELLENT! All files are within the 555-line limit.`);
191
+ console.log(` The codebase is fully compliant with constitutional requirements.`);
192
+ }
193
+
194
+ console.log('\n' + '='.repeat(80));
195
+ }
196
+
197
+ /**
198
+ * Check if directory exists
199
+ */
200
+ directoryExists(dirPath) {
201
+ try {
202
+ const stats = require('fs').statSync(dirPath);
203
+ return stats.isDirectory();
204
+ } catch {
205
+ return false;
206
+ }
207
+ }
208
+
209
+ /**
210
+ * Get violations by severity
211
+ */
212
+ getViolationsBySeverity() {
213
+ const bySeverity = {
214
+ critical: [],
215
+ warning: [],
216
+ info: []
217
+ };
218
+
219
+ for (const violation of this.violationDetails) {
220
+ const severity = this.getSeverityFromLineCount(violation.lineCount);
221
+ bySeverity[severity].push(violation);
222
+ }
223
+
224
+ return bySeverity;
225
+ }
226
+
227
+ /**
228
+ * Get severity from line count
229
+ */
230
+ getSeverityFromLineCount(lineCount) {
231
+ if (lineCount > 800) return 'critical';
232
+ if (lineCount > 555) return 'warning';
233
+ return 'info';
234
+ }
235
+ }
236
+
237
+ /**
238
+ * Main execution function
239
+ */
240
+ async function runComplianceVerification() {
241
+ const verifier = new ComplianceVerifier();
242
+
243
+ try {
244
+ const report = await verifier.verifyFullCompliance();
245
+
246
+ // Exit with appropriate code
247
+ if (report.summary.isFullyCompliant) {
248
+ console.log('\n✅ Compliance verification PASSED');
249
+ process.exit(0);
250
+ } else {
251
+ console.log('\n❌ Compliance verification FAILED');
252
+ process.exit(1);
253
+ }
254
+
255
+ } catch (error) {
256
+ console.error('💥 Verification failed:', error);
257
+ process.exit(2);
258
+ }
259
+ }
260
+
261
+ // Run if called directly
262
+ if (require.main === module) {
263
+ runComplianceVerification();
264
+ }
265
+
266
+ module.exports = {
267
+ ComplianceVerifier,
268
+ runComplianceVerification
269
+ };
@@ -6,6 +6,7 @@
6
6
  const fs = require('fs-extra');
7
7
  const path = require('path');
8
8
  const crypto = require('crypto');
9
+ const os = require('os');
9
10
  const EventEmitter = require('events');
10
11
 
11
12
  class SyncEngineCore extends EventEmitter {
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Sync Engine Remote Control Handlers
3
+ * Extracted from sync-engine-backup.js for 555-line compliance
4
+ * Handles remote control commands for the sync engine
5
+ */
6
+
7
+ /**
8
+ * Setup remote control event handlers
9
+ * @param {Object} syncEngine - The sync engine instance
10
+ */
11
+ function setupRemoteControlHandlers(syncEngine) {
12
+ if (!syncEngine.remoteControlServer) return;
13
+
14
+ // Handle remote control commands
15
+ syncEngine.remoteControlServer.on('command', async (command) => {
16
+ console.log('🎮 Remote control command received:', command);
17
+
18
+ try {
19
+ switch (command.type) {
20
+ case 'start-auto':
21
+ await handleStartAutoCommand(syncEngine, command);
22
+ break;
23
+ case 'stop-auto':
24
+ await handleStopAutoCommand(syncEngine, command);
25
+ break;
26
+ case 'get-status':
27
+ await handleGetStatusCommand(syncEngine, command);
28
+ break;
29
+ default:
30
+ console.log('❌ Unknown remote control command:', command.type);
31
+ syncEngine.remoteControlServer.sendToClientById(command.clientId, 'command-error', {
32
+ command: command.type,
33
+ error: 'Unknown command type'
34
+ });
35
+ }
36
+ } catch (error) {
37
+ console.error('❌ Error handling remote control command:', error);
38
+ syncEngine.remoteControlServer.sendToClientById(command.clientId, 'command-error', {
39
+ command: command.type,
40
+ error: error.message
41
+ });
42
+ }
43
+ });
44
+
45
+ // Handle client authentication
46
+ syncEngine.remoteControlServer.on('client-authenticated', (data) => {
47
+ console.log('🔐 Remote control client authenticated:', data.userInfo.username);
48
+ syncEngine.emit('remote-client-authenticated', data);
49
+ });
50
+
51
+ // Handle client disconnection
52
+ syncEngine.remoteControlServer.on('client-disconnected', (data) => {
53
+ console.log('🔌 Remote control client disconnected:', data.clientId);
54
+ syncEngine.emit('remote-client-disconnected', data);
55
+ });
56
+
57
+ console.log('✅ Remote control handlers setup complete');
58
+ }
59
+
60
+ /**
61
+ * Handle start-auto command
62
+ * @param {Object} syncEngine - The sync engine instance
63
+ * @param {Object} command - The command object
64
+ */
65
+ async function handleStartAutoCommand(syncEngine, command) {
66
+ console.log('🚀 Starting auto mode via remote control');
67
+
68
+ // Emit event for main application to handle
69
+ syncEngine.emit('remote-start-auto', {
70
+ clientId: command.clientId,
71
+ userInfo: command.userInfo,
72
+ data: command.data
73
+ });
74
+
75
+ // Send confirmation back to client
76
+ syncEngine.remoteControlServer.sendToClientById(command.clientId, 'command-success', {
77
+ command: 'start-auto',
78
+ message: 'Auto mode started successfully'
79
+ });
80
+ }
81
+
82
+ /**
83
+ * Handle stop-auto command
84
+ * @param {Object} syncEngine - The sync engine instance
85
+ * @param {Object} command - The command object
86
+ */
87
+ async function handleStopAutoCommand(syncEngine, command) {
88
+ console.log('🛑 Stopping auto mode via remote control');
89
+
90
+ // Emit event for main application to handle
91
+ syncEngine.emit('remote-stop-auto', {
92
+ clientId: command.clientId,
93
+ userInfo: command.userInfo,
94
+ data: command.data
95
+ });
96
+
97
+ // Send confirmation back to client
98
+ syncEngine.remoteControlServer.sendToClientById(command.clientId, 'command-success', {
99
+ command: 'stop-auto',
100
+ message: 'Auto mode stopped successfully'
101
+ });
102
+ }
103
+
104
+ /**
105
+ * Handle get-status command
106
+ * @param {Object} syncEngine - The sync engine instance
107
+ * @param {Object} command - The command object
108
+ */
109
+ async function handleGetStatusCommand(syncEngine, command) {
110
+ console.log('📊 Getting status via remote control');
111
+
112
+ // Get current status
113
+ const status = {
114
+ computerId: syncEngine.computerId,
115
+ isOnline: syncEngine.isOnline,
116
+ isSyncing: syncEngine.isSyncing,
117
+ lastSyncTime: syncEngine.lastSyncTime,
118
+ offlineQueueSize: syncEngine.offlineQueue?.length || 0,
119
+ changeHistorySize: syncEngine.changeHistory?.length || 0,
120
+ syncEngineStatus: 'running'
121
+ };
122
+
123
+ // Send status back to client
124
+ syncEngine.remoteControlServer.sendToClientById(command.clientId, 'status-response', {
125
+ command: 'get-status',
126
+ status
127
+ });
128
+ }
129
+
130
+ module.exports = {
131
+ setupRemoteControlHandlers,
132
+ handleStartAutoCommand,
133
+ handleStopAutoCommand,
134
+ handleGetStatusCommand
135
+ };