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.
- package/README.md +240 -0
- package/package.json +10 -2
- package/src/agents/Agent.js +300 -0
- package/src/agents/AgentAdditionService.js +311 -0
- package/src/agents/AgentCheckService.js +690 -0
- package/src/agents/AgentInstallationService.js +140 -0
- package/src/agents/AgentSetupService.js +467 -0
- package/src/agents/AgentStatus.js +183 -0
- package/src/agents/AgentVerificationService.js +634 -0
- package/src/agents/ConfigurationSchemaValidator.js +543 -0
- package/src/agents/EnvironmentConfigurationManager.js +602 -0
- package/src/agents/InstallationErrorHandler.js +372 -0
- package/src/agents/InstallationLog.js +363 -0
- package/src/agents/InstallationMethod.js +510 -0
- package/src/agents/InstallationOrchestrator.js +352 -0
- package/src/agents/InstallationProgressReporter.js +372 -0
- package/src/agents/InstallationRetryManager.js +322 -0
- package/src/agents/InstallationType.js +254 -0
- package/src/agents/OperationTypes.js +310 -0
- package/src/agents/PerformanceMetricsCollector.js +493 -0
- package/src/agents/SecurityValidationService.js +534 -0
- package/src/agents/VerificationTest.js +354 -0
- package/src/agents/VerificationType.js +226 -0
- package/src/agents/WindowsPermissionHandler.js +518 -0
- package/src/agents/config/AgentConfigManager.js +393 -0
- package/src/agents/config/AgentDefaultsRegistry.js +373 -0
- package/src/agents/config/ConfigValidator.js +281 -0
- package/src/agents/discovery/AgentDiscoveryService.js +707 -0
- package/src/agents/logging/AgentLogger.js +511 -0
- package/src/agents/status/AgentStatusManager.js +481 -0
- package/src/agents/storage/FileManager.js +454 -0
- package/src/agents/verification/AgentCommunicationTester.js +474 -0
- package/src/agents/verification/BaseVerifier.js +430 -0
- package/src/agents/verification/CommandVerifier.js +480 -0
- package/src/agents/verification/FileOperationVerifier.js +453 -0
- package/src/agents/verification/ResultAnalyzer.js +707 -0
- package/src/agents/verification/TestRequirementManager.js +495 -0
- package/src/agents/verification/VerificationRunner.js +433 -0
- package/src/agents/windows/BaseWindowsInstaller.js +441 -0
- package/src/agents/windows/ChocolateyInstaller.js +509 -0
- package/src/agents/windows/DirectInstaller.js +443 -0
- package/src/agents/windows/InstallerFactory.js +391 -0
- package/src/agents/windows/NpmInstaller.js +505 -0
- package/src/agents/windows/PowerShellInstaller.js +458 -0
- package/src/agents/windows/WinGetInstaller.js +390 -0
- package/src/analysis/analysis-reporter.js +132 -0
- package/src/analysis/boundary-detector.js +712 -0
- package/src/analysis/categorizer.js +340 -0
- package/src/analysis/codebase-scanner.js +384 -0
- package/src/analysis/line-counter.js +513 -0
- package/src/analysis/priority-calculator.js +679 -0
- package/src/analysis/report/analysis-report.js +250 -0
- package/src/analysis/report/package-analyzer.js +278 -0
- package/src/analysis/report/recommendation-generator.js +382 -0
- package/src/analysis/report/statistics-generator.js +515 -0
- package/src/analysis/reports/analysis-report-model.js +101 -0
- package/src/analysis/reports/recommendation-generator.js +283 -0
- package/src/analysis/reports/report-generators.js +191 -0
- package/src/analysis/reports/statistics-calculator.js +231 -0
- package/src/analysis/reports/trend-analyzer.js +219 -0
- package/src/analysis/strategy-generator.js +814 -0
- package/src/auto-mode/AutoModeBusinessLogic.js +836 -0
- package/src/config/refactoring-config.js +307 -0
- package/src/health-tracking/json-storage.js +38 -2
- package/src/ide-integration/applescript-manager-core.js +233 -0
- package/src/ide-integration/applescript-manager.cjs +357 -28
- package/src/ide-integration/applescript-manager.js +89 -3599
- package/src/ide-integration/cdp-manager.js +306 -0
- package/src/ide-integration/claude-code-cli-manager.cjs +1 -1
- package/src/ide-integration/continuation-handler.js +337 -0
- package/src/ide-integration/ide-status-checker.js +292 -0
- package/src/ide-integration/macos-ide-manager.js +627 -0
- package/src/ide-integration/macos-text-sender.js +528 -0
- package/src/ide-integration/response-reader.js +548 -0
- package/src/ide-integration/windows-automation-manager.js +121 -0
- package/src/ide-integration/windows-ide-manager.js +373 -0
- package/src/index.cjs +25 -3
- package/src/index.js +15 -1
- package/src/llm/direct-llm-manager.cjs +90 -2
- package/src/models/compliance-report.js +538 -0
- package/src/models/file-analysis.js +681 -0
- package/src/models/refactoring-plan.js +770 -0
- package/src/monitoring/alert-system.js +834 -0
- package/src/monitoring/compliance-progress-tracker.js +437 -0
- package/src/monitoring/continuous-scan-notifications.js +661 -0
- package/src/monitoring/continuous-scanner.js +279 -0
- package/src/monitoring/file-monitor/file-analyzer.js +262 -0
- package/src/monitoring/file-monitor/file-monitor.js +237 -0
- package/src/monitoring/file-monitor/watcher.js +194 -0
- package/src/monitoring/file-monitor.js +17 -0
- package/src/monitoring/notification-manager.js +437 -0
- package/src/monitoring/scanner-core.js +368 -0
- package/src/monitoring/scanner-events.js +214 -0
- package/src/monitoring/violation-notification-system.js +515 -0
- package/src/refactoring/boundaries/cohesion-analyzer.js +316 -0
- package/src/refactoring/boundaries/extraction-result.js +285 -0
- package/src/refactoring/boundaries/extraction-strategies.js +392 -0
- package/src/refactoring/boundaries/module-boundary.js +209 -0
- package/src/refactoring/boundary/boundary-detector.js +741 -0
- package/src/refactoring/boundary/boundary-types.js +405 -0
- package/src/refactoring/boundary/extraction-strategies.js +554 -0
- package/src/refactoring/boundary-extraction-result.js +77 -0
- package/src/refactoring/boundary-extraction-strategies.js +330 -0
- package/src/refactoring/boundary-extractor.js +384 -0
- package/src/refactoring/boundary-types.js +46 -0
- package/src/refactoring/circular/circular-dependency.js +88 -0
- package/src/refactoring/circular/cycle-detection.js +147 -0
- package/src/refactoring/circular/dependency-node.js +82 -0
- package/src/refactoring/circular/dependency-result.js +107 -0
- package/src/refactoring/circular/dependency-types.js +58 -0
- package/src/refactoring/circular/graph-builder.js +213 -0
- package/src/refactoring/circular/resolution-strategy.js +72 -0
- package/src/refactoring/circular/strategy-generator.js +229 -0
- package/src/refactoring/circular-dependency-resolver-original.js +809 -0
- package/src/refactoring/circular-dependency-resolver.js +200 -0
- package/src/refactoring/code-mover.js +761 -0
- package/src/refactoring/file-splitter.js +696 -0
- package/src/refactoring/functionality-validator.js +816 -0
- package/src/refactoring/import-manager.js +774 -0
- package/src/refactoring/module-boundary.js +107 -0
- package/src/refactoring/refactoring-executor.js +672 -0
- package/src/refactoring/refactoring-rollback.js +614 -0
- package/src/refactoring/test-validator.js +631 -0
- package/src/requirement-management/default-requirement-manager.js +321 -0
- package/src/requirement-management/requirement-file-parser.js +159 -0
- package/src/requirement-management/requirement-sequencer.js +221 -0
- package/src/rui/commands/AgentCommandParser.js +600 -0
- package/src/rui/commands/AgentCommands.js +487 -0
- package/src/rui/commands/AgentResponseFormatter.js +832 -0
- package/src/scripts/verify-full-compliance.js +269 -0
- package/src/sync/sync-engine-core.js +1 -0
- package/src/sync/sync-engine-remote-handlers.js +135 -0
- package/src/task-generation/automated-task-generator.js +351 -0
- package/src/task-generation/prioritizer.js +287 -0
- package/src/task-generation/task-list-updater.js +215 -0
- package/src/task-generation/task-management-integration.js +480 -0
- package/src/task-generation/task-manager-integration.js +270 -0
- package/src/task-generation/violation-task-generator.js +474 -0
- package/src/task-management/continuous-scan-integration.js +342 -0
- package/src/timeout-management/index.js +12 -3
- package/src/timeout-management/response-time-tracker.js +167 -0
- package/src/timeout-management/timeout-calculator.js +159 -0
- package/src/timeout-management/timeout-config-manager.js +172 -0
- package/src/utils/ast-analyzer.js +417 -0
- package/src/utils/current-requirement-manager.js +276 -0
- package/src/utils/current-requirement-operations.js +472 -0
- package/src/utils/dependency-mapper.js +456 -0
- package/src/utils/download-with-progress.js +4 -2
- package/src/utils/electron-update-checker.js +4 -1
- package/src/utils/file-size-analyzer.js +272 -0
- package/src/utils/import-updater.js +280 -0
- package/src/utils/refactoring-tools.js +512 -0
- package/src/utils/report-generator.js +569 -0
- package/src/utils/reports/report-analysis.js +218 -0
- package/src/utils/reports/report-types.js +55 -0
- package/src/utils/reports/summary-generators.js +102 -0
- package/src/utils/requirement-file-management.js +157 -0
- package/src/utils/requirement-helpers/requirement-file-ops.js +392 -0
- package/src/utils/requirement-helpers/requirement-mover.js +414 -0
- package/src/utils/requirement-helpers/requirement-parser.js +326 -0
- package/src/utils/requirement-helpers/requirement-status.js +320 -0
- package/src/utils/requirement-helpers-new.js +55 -0
- package/src/utils/requirement-helpers-refactored.js +367 -0
- package/src/utils/requirement-helpers.js +291 -1191
- package/src/utils/requirement-movement-operations.js +450 -0
- package/src/utils/requirement-movement.js +312 -0
- package/src/utils/requirement-parsing-helpers.js +56 -0
- package/src/utils/requirement-statistics.js +200 -0
- package/src/utils/requirement-text-utils.js +58 -0
- package/src/utils/rollback/rollback-handlers.js +125 -0
- package/src/utils/rollback/rollback-operation.js +63 -0
- package/src/utils/rollback/rollback-recorder.js +166 -0
- package/src/utils/rollback/rollback-state-manager.js +175 -0
- package/src/utils/rollback/rollback-types.js +33 -0
- package/src/utils/rollback/rollback-utils.js +110 -0
- package/src/utils/rollback-manager-original.js +569 -0
- package/src/utils/rollback-manager.js +202 -0
- package/src/utils/smoke-test-cli.js +362 -0
- package/src/utils/smoke-test-gui.js +351 -0
- package/src/utils/smoke-test-orchestrator.js +321 -0
- package/src/utils/smoke-test-runner.js +60 -0
- package/src/utils/smoke-test-web.js +347 -0
- package/src/utils/specification-helpers.js +39 -13
- package/src/utils/specification-migration.js +97 -0
- package/src/utils/test-runner.js +579 -0
- package/src/utils/validation-framework.js +518 -0
- package/src/validation/compliance-analyzer.js +197 -0
- package/src/validation/compliance-report-generator.js +343 -0
- package/src/validation/compliance-reporter.js +711 -0
- package/src/validation/compliance-rules.js +127 -0
- package/src/validation/constitution-validator-new.js +196 -0
- package/src/validation/constitution-validator.js +17 -0
- package/src/validation/file-validators.js +170 -0
- package/src/validation/line-limit/file-analyzer.js +201 -0
- package/src/validation/line-limit/line-limit-validator.js +208 -0
- package/src/validation/line-limit/validation-result.js +144 -0
- package/src/validation/line-limit-core.js +225 -0
- package/src/validation/line-limit-reporter.js +134 -0
- package/src/validation/line-limit-result.js +125 -0
- package/src/validation/line-limit-validator.js +41 -0
- package/src/validation/metrics-calculator.js +660 -0
- 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;
|