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,372 @@
1
+ /**
2
+ * Installation Error Handler
3
+ *
4
+ * Provides comprehensive error messages and resolution suggestions
5
+ * for all installation failure scenarios.
6
+ * Follows constitutional requirements: <555 lines, test-first approach.
7
+ */
8
+
9
+ /**
10
+ * Installation Error Handler class
11
+ */
12
+ class InstallationErrorHandler {
13
+ /**
14
+ * Create error handler instance
15
+ * @param {Object} options - Handler options
16
+ */
17
+ constructor(options = {}) {
18
+ this.logger = options.logger || null;
19
+ this.platform = options.platform || process.platform;
20
+ this.arch = options.arch || process.arch;
21
+ }
22
+
23
+ /**
24
+ * Handle installation error and provide comprehensive message
25
+ * @param {Error} error - Original error
26
+ * @param {Object} context - Installation context
27
+ * @returns {Object} - Enhanced error information
28
+ */
29
+ handleError(error, context = {}) {
30
+ const { agentId, installerType, command, phase } = context;
31
+
32
+ const errorInfo = {
33
+ originalError: error,
34
+ agentId,
35
+ installerType,
36
+ command,
37
+ phase,
38
+ timestamp: new Date().toISOString(),
39
+ platform: this.platform,
40
+ arch: this.arch
41
+ };
42
+
43
+ // Categorize error and provide specific guidance
44
+ const categorizedError = this.categorizeError(error, context);
45
+
46
+ return {
47
+ ...errorInfo,
48
+ ...categorizedError,
49
+ userMessage: categorizedError.message,
50
+ technicalDetails: error.message,
51
+ resolutionSteps: categorizedError.resolutionSteps,
52
+ severity: categorizedError.severity,
53
+ category: categorizedError.category
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Categorize error and provide specific resolution steps
59
+ * @param {Error} error - Error to categorize
60
+ * @param {Object} context - Installation context
61
+ * @returns {Object} - Categorized error information
62
+ */
63
+ categorizeError(error, context) {
64
+ const errorMessage = error.message.toLowerCase();
65
+ const { installerType, agentId } = context;
66
+
67
+ // Network-related errors
68
+ if (this.isNetworkError(errorMessage)) {
69
+ return {
70
+ category: 'NETWORK',
71
+ severity: 'MEDIUM',
72
+ message: `Network connection failed while installing ${agentId}. Please check your internet connection and try again.`,
73
+ resolutionSteps: [
74
+ 'Check internet connection',
75
+ 'Verify firewall allows package manager access',
76
+ 'Try using VPN if network is restricted',
77
+ 'Wait a few minutes and retry (rate limiting)',
78
+ 'Consider alternative installation method'
79
+ ]
80
+ };
81
+ }
82
+
83
+ // Permission errors
84
+ if (this.isPermissionError(errorMessage)) {
85
+ return {
86
+ category: 'PERMISSION',
87
+ severity: 'HIGH',
88
+ message: `Permission denied while installing ${agentId}. Administrator privileges may be required.`,
89
+ resolutionSteps: [
90
+ 'Run command prompt as Administrator',
91
+ 'Check User Account Control (UAC) settings',
92
+ 'Verify write permissions to installation directory',
93
+ 'Temporarily disable antivirus software',
94
+ 'Consider installing in user directory instead'
95
+ ]
96
+ };
97
+ }
98
+
99
+ // Package manager not found
100
+ if (this.isPackageManagerError(errorMessage, installerType)) {
101
+ return this.getPackageManagerError(installerType, agentId);
102
+ }
103
+
104
+ // Disk space errors
105
+ if (this.isDiskSpaceError(errorMessage)) {
106
+ return {
107
+ category: 'DISK_SPACE',
108
+ severity: 'HIGH',
109
+ message: `Insufficient disk space to install ${agentId}. Please free up disk space and try again.`,
110
+ resolutionSteps: [
111
+ 'Run Disk Cleanup utility',
112
+ 'Delete temporary files',
113
+ 'Uninstall unused applications',
114
+ 'Move files to external storage',
115
+ 'Consider installing on different drive'
116
+ ]
117
+ };
118
+ }
119
+
120
+ // Dependency errors
121
+ if (this.isDependencyError(errorMessage)) {
122
+ return {
123
+ category: 'DEPENDENCY',
124
+ severity: 'MEDIUM',
125
+ message: `Missing dependencies required for ${agentId} installation.`,
126
+ resolutionSteps: [
127
+ 'Install Node.js from nodejs.org',
128
+ 'Install Windows Package Manager (winget)',
129
+ 'Install Git for Windows',
130
+ 'Install Visual Studio Build Tools',
131
+ 'Check system requirements documentation'
132
+ ]
133
+ };
134
+ }
135
+
136
+ // Timeout errors
137
+ if (this.isTimeoutError(errorMessage)) {
138
+ return {
139
+ category: 'TIMEOUT',
140
+ severity: 'MEDIUM',
141
+ message: `Installation of ${agentId} timed out. The installation may be stuck or very slow.`,
142
+ resolutionSteps: [
143
+ 'Check internet connection speed',
144
+ 'Temporarily disable antivirus software',
145
+ 'Close other applications to free resources',
146
+ 'Increase timeout value in configuration',
147
+ 'Try installation during off-peak hours'
148
+ ]
149
+ };
150
+ }
151
+
152
+ // Version conflicts
153
+ if (this.isVersionConflictError(errorMessage)) {
154
+ return {
155
+ category: 'VERSION_CONFLICT',
156
+ severity: 'MEDIUM',
157
+ message: `Version conflict detected while installing ${agentId}. An existing version may interfere.`,
158
+ resolutionSteps: [
159
+ 'Uninstall existing version first',
160
+ 'Use --force flag to override',
161
+ 'Clear package manager cache',
162
+ 'Restart computer before retrying',
163
+ 'Check for multiple installations'
164
+ ]
165
+ };
166
+ }
167
+
168
+ // Default/unknown errors
169
+ return {
170
+ category: 'UNKNOWN',
171
+ severity: 'MEDIUM',
172
+ message: `An unexpected error occurred while installing ${agentId}: ${error.message}`,
173
+ resolutionSteps: [
174
+ 'Check system requirements',
175
+ 'Verify all dependencies are installed',
176
+ 'Try alternative installation method',
177
+ 'Check installation logs for details',
178
+ 'Contact support with error details'
179
+ ]
180
+ };
181
+ }
182
+
183
+ /**
184
+ * Check if error is network-related
185
+ * @param {string} errorMessage - Error message to check
186
+ * @returns {boolean} - Whether error is network-related
187
+ */
188
+ isNetworkError(errorMessage) {
189
+ const networkKeywords = [
190
+ 'network', 'connection', 'timeout', 'unreachable', 'dns',
191
+ 'proxy', 'firewall', 'internet', 'offline', 'host not found',
192
+ 'connection refused', 'socket', 'etimedout', 'enotfound'
193
+ ];
194
+
195
+ return networkKeywords.some(keyword => errorMessage.includes(keyword));
196
+ }
197
+
198
+ /**
199
+ * Check if error is permission-related
200
+ * @param {string} errorMessage - Error message to check
201
+ * @returns {boolean} - Whether error is permission-related
202
+ */
203
+ isPermissionError(errorMessage) {
204
+ const permissionKeywords = [
205
+ 'permission denied', 'access denied', 'eacces', 'eperm',
206
+ 'administrator', 'privilege', 'unauthorized', 'forbidden',
207
+ 'write protected', 'read-only', 'uid', 'gid'
208
+ ];
209
+
210
+ return permissionKeywords.some(keyword => errorMessage.includes(keyword));
211
+ }
212
+
213
+ /**
214
+ * Check if error is package manager related
215
+ * @param {string} errorMessage - Error message to check
216
+ * @param {string} installerType - Type of installer
217
+ * @returns {boolean} - Whether error is package manager related
218
+ */
219
+ isPackageManagerError(errorMessage, installerType) {
220
+ const pmErrors = {
221
+ 'WINGET': ['winget not found', 'command not found: winget', 'not recognized as an internal or external command'],
222
+ 'NPM': ['npm not found', 'command not found: npm', 'not recognized as an internal or external command'],
223
+ 'POWERSHELL': ['powershell not found', 'execution policy', 'cannot be loaded'],
224
+ 'CHOCOLATEY': ['choco not found', 'chocolatey not found', 'command not found: choco']
225
+ };
226
+
227
+ const errors = pmErrors[installerType] || [];
228
+ return errors.some(error => errorMessage.includes(error));
229
+ }
230
+
231
+ /**
232
+ * Get package manager specific error
233
+ * @param {string} installerType - Type of installer
234
+ * @param {string} agentId - Agent ID
235
+ * @returns {Object} - Package manager error information
236
+ */
237
+ getPackageManagerError(installerType, agentId) {
238
+ const pmErrors = {
239
+ 'WINGET': {
240
+ message: `Windows Package Manager (winget) is not installed or not in PATH. Cannot install ${agentId}.`,
241
+ resolutionSteps: [
242
+ 'Install Windows Package Manager from Microsoft Store',
243
+ 'Update Windows to version 1709 or later',
244
+ 'Install winget from GitHub releases',
245
+ 'Add winget to system PATH',
246
+ 'Restart command prompt after installation'
247
+ ]
248
+ },
249
+ 'NPM': {
250
+ message: `Node Package Manager (npm) is not installed or not in PATH. Cannot install ${agentId}.`,
251
+ resolutionSteps: [
252
+ 'Install Node.js from nodejs.org (includes npm)',
253
+ 'Download Node.js LTS version',
254
+ 'Add Node.js to system PATH',
255
+ 'Restart command prompt after installation',
256
+ 'Verify installation with "npm --version"'
257
+ ]
258
+ },
259
+ 'POWERSHELL': {
260
+ message: `PowerShell execution policy prevents installation. Cannot install ${agentId}.`,
261
+ resolutionSteps: [
262
+ 'Run PowerShell as Administrator',
263
+ 'Set execution policy: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser',
264
+ 'Use -ExecutionPolicy Bypass flag',
265
+ 'Check PowerShell security settings',
266
+ 'Consider using alternative installation method'
267
+ ]
268
+ },
269
+ 'CHOCOLATEY': {
270
+ message: `Chocolatey Package Manager is not installed. Cannot install ${agentId}.`,
271
+ resolutionSteps: [
272
+ 'Install Chocolatey from chocolatey.org',
273
+ 'Run PowerShell as Administrator',
274
+ 'Execute installation command from chocolatey.org',
275
+ 'Add Chocolatey to system PATH',
276
+ 'Restart command prompt after installation'
277
+ ]
278
+ }
279
+ };
280
+
281
+ const errorInfo = pmErrors[installerType] || pmErrors['WINGET'];
282
+
283
+ return {
284
+ category: 'PACKAGE_MANAGER',
285
+ severity: 'HIGH',
286
+ ...errorInfo
287
+ };
288
+ }
289
+
290
+ /**
291
+ * Check if error is disk space related
292
+ * @param {string} errorMessage - Error message to check
293
+ * @returns {boolean} - Whether error is disk space related
294
+ */
295
+ isDiskSpaceError(errorMessage) {
296
+ const diskKeywords = [
297
+ 'disk space', 'insufficient space', 'no space left', 'disk full',
298
+ 'enospace', 'not enough space', 'storage', 'drive full'
299
+ ];
300
+
301
+ return diskKeywords.some(keyword => errorMessage.includes(keyword));
302
+ }
303
+
304
+ /**
305
+ * Check if error is dependency related
306
+ * @param {string} errorMessage - Error message to check
307
+ * @returns {boolean} - Whether error is dependency related
308
+ */
309
+ isDependencyError(errorMessage) {
310
+ const dependencyKeywords = [
311
+ 'dependency', 'missing', 'required', 'not found', 'module not found',
312
+ 'cannot find module', 'dependency not satisfied', 'requires'
313
+ ];
314
+
315
+ return dependencyKeywords.some(keyword => errorMessage.includes(keyword));
316
+ }
317
+
318
+ /**
319
+ * Check if error is timeout related
320
+ * @param {string} errorMessage - Error message to check
321
+ * @returns {boolean} - Whether error is timeout related
322
+ */
323
+ isTimeoutError(errorMessage) {
324
+ const timeoutKeywords = [
325
+ 'timeout', 'timed out', 'time out', 'etimedout', 'timeout exceeded',
326
+ 'operation timed out', 'connection timeout'
327
+ ];
328
+
329
+ return timeoutKeywords.some(keyword => errorMessage.includes(keyword));
330
+ }
331
+
332
+ /**
333
+ * Check if error is version conflict related
334
+ * @param {string} errorMessage - Error message to check
335
+ * @returns {boolean} - Whether error is version conflict related
336
+ */
337
+ isVersionConflictError(errorMessage) {
338
+ const conflictKeywords = [
339
+ 'version conflict', 'already installed', 'exists', 'conflict',
340
+ 'version mismatch', 'incompatible version', 'already exists'
341
+ ];
342
+
343
+ return conflictKeywords.some(keyword => errorMessage.includes(keyword));
344
+ }
345
+
346
+ /**
347
+ * Get success message with additional context
348
+ * @param {Object} context - Installation context
349
+ * @returns {Object} - Success information
350
+ */
351
+ getSuccessMessage(context) {
352
+ const { agentId, installerType, duration, version } = context;
353
+
354
+ return {
355
+ category: 'SUCCESS',
356
+ severity: 'INFO',
357
+ message: `Successfully installed ${agentId} using ${installerType} in ${Math.round(duration / 1000)}s`,
358
+ agentId,
359
+ installerType,
360
+ duration,
361
+ version,
362
+ nextSteps: [
363
+ 'Run verification tests to confirm functionality',
364
+ 'Check agent documentation for configuration',
365
+ 'Test basic agent commands',
366
+ 'Consider enabling auto-updates'
367
+ ]
368
+ };
369
+ }
370
+ }
371
+
372
+ module.exports = InstallationErrorHandler;