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,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Requirement Helpers (Refactored)
|
|
3
|
+
* Main entry point for all requirement-related operations
|
|
4
|
+
* Original file was 1,267 lines, now split into focused modules under 555 lines each
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Import all sub-modules
|
|
8
|
+
const requirementParser = require('./requirement-helpers/requirement-parser.js');
|
|
9
|
+
const requirementMover = require('./requirement-helpers/requirement-mover.js');
|
|
10
|
+
const requirementStatus = require('./requirement-helpers/requirement-status.js');
|
|
11
|
+
const requirementFileOps = require('./requirement-helpers/requirement-file-ops.js');
|
|
12
|
+
|
|
13
|
+
// Re-export parser utilities
|
|
14
|
+
const {
|
|
15
|
+
DEFAULT_INSTRUCTION_TEXT,
|
|
16
|
+
getOrdinalSuffix,
|
|
17
|
+
addTryAgainPrefix,
|
|
18
|
+
parseRequirementLine,
|
|
19
|
+
extractRequirementTitle,
|
|
20
|
+
isRequirementMatch,
|
|
21
|
+
parseRequirementBlock,
|
|
22
|
+
findRequirementBlock,
|
|
23
|
+
findAllRequirementsInSection,
|
|
24
|
+
validateRequirementFormat,
|
|
25
|
+
formatRequirementForDisplay
|
|
26
|
+
} = requirementParser;
|
|
27
|
+
|
|
28
|
+
// Re-export movement operations
|
|
29
|
+
const {
|
|
30
|
+
promoteToVerified,
|
|
31
|
+
demoteFromVerifiedToTodo,
|
|
32
|
+
promoteTodoToVerify,
|
|
33
|
+
demoteFromVerifyToTodo,
|
|
34
|
+
moveToCurrent,
|
|
35
|
+
getRequirementsInSection,
|
|
36
|
+
getRequirementStatistics
|
|
37
|
+
} = requirementMover;
|
|
38
|
+
|
|
39
|
+
// Re-export status management
|
|
40
|
+
const {
|
|
41
|
+
extractCurrentStatus,
|
|
42
|
+
updateCurrentStatus,
|
|
43
|
+
getCurrentStatus,
|
|
44
|
+
isStatusDone,
|
|
45
|
+
isStatusInProgress,
|
|
46
|
+
getStatusStage,
|
|
47
|
+
validateStatus,
|
|
48
|
+
getNextStatus,
|
|
49
|
+
getPreviousStatus,
|
|
50
|
+
isValidStatusTransition,
|
|
51
|
+
getStatusHistory,
|
|
52
|
+
formatStatusForDisplay,
|
|
53
|
+
getStatusSummary
|
|
54
|
+
} = requirementStatus;
|
|
55
|
+
|
|
56
|
+
// Re-export file operations
|
|
57
|
+
const {
|
|
58
|
+
getRequirementsFilePath,
|
|
59
|
+
requirementsFileExists,
|
|
60
|
+
createRequirementsFile,
|
|
61
|
+
readRequirementsFile,
|
|
62
|
+
writeRequirementsFile,
|
|
63
|
+
backupRequirementsFile,
|
|
64
|
+
getRequirementsFileStats,
|
|
65
|
+
validateRequirementsFile,
|
|
66
|
+
getAllRequirementsFiles,
|
|
67
|
+
cleanupBackupFiles
|
|
68
|
+
} = requirementFileOps;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Get comprehensive requirement system information
|
|
72
|
+
* @param {string} repoPath - Repository path (optional)
|
|
73
|
+
* @returns {Promise<Object>} System information
|
|
74
|
+
*/
|
|
75
|
+
async function getRequirementSystemInfo(repoPath = null) {
|
|
76
|
+
try {
|
|
77
|
+
const fileStats = await getRequirementsFileStats(repoPath);
|
|
78
|
+
const validation = await validateRequirementsFile(repoPath);
|
|
79
|
+
const statusSummary = await getStatusSummary(getRequirementsFilePath(repoPath));
|
|
80
|
+
const requirementStats = await getRequirementStatistics(getRequirementsFilePath(repoPath));
|
|
81
|
+
const allFiles = await getAllRequirementsFiles(repoPath || process.cwd());
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
file: fileStats,
|
|
85
|
+
validation,
|
|
86
|
+
status: statusSummary,
|
|
87
|
+
statistics: requirementStats,
|
|
88
|
+
allFiles,
|
|
89
|
+
timestamp: new Date().toISOString()
|
|
90
|
+
};
|
|
91
|
+
} catch (error) {
|
|
92
|
+
return {
|
|
93
|
+
error: error.message,
|
|
94
|
+
timestamp: new Date().toISOString()
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Initialize requirements system
|
|
101
|
+
* @param {string} repoPath - Repository path
|
|
102
|
+
* @returns {Promise<Object>} Initialization result
|
|
103
|
+
*/
|
|
104
|
+
async function initializeRequirementsSystem(repoPath) {
|
|
105
|
+
try {
|
|
106
|
+
const result = {
|
|
107
|
+
success: false,
|
|
108
|
+
actions: [],
|
|
109
|
+
warnings: [],
|
|
110
|
+
errors: []
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// Check if requirements file exists
|
|
114
|
+
if (!requirementsFileExists(repoPath)) {
|
|
115
|
+
result.actions.push('Creating requirements file...');
|
|
116
|
+
const created = await createRequirementsFile(repoPath);
|
|
117
|
+
if (created) {
|
|
118
|
+
result.actions.push('✅ Requirements file created');
|
|
119
|
+
} else {
|
|
120
|
+
result.errors.push('❌ Failed to create requirements file');
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
} else {
|
|
124
|
+
result.actions.push('✅ Requirements file already exists');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Validate existing file
|
|
128
|
+
const validation = await validateRequirementsFile(repoPath);
|
|
129
|
+
if (!validation.isValid) {
|
|
130
|
+
result.warnings.push('⚠️ Requirements file has validation issues');
|
|
131
|
+
result.warnings.push(...validation.errors);
|
|
132
|
+
}
|
|
133
|
+
if (validation.warnings.length > 0) {
|
|
134
|
+
result.warnings.push('⚠️ Requirements file has warnings');
|
|
135
|
+
result.warnings.push(...validation.warnings);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Create backup
|
|
139
|
+
const backupPath = await backupRequirementsFile(repoPath);
|
|
140
|
+
if (backupPath) {
|
|
141
|
+
result.actions.push(`✅ Backup created: ${backupPath}`);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Clean up old backups
|
|
145
|
+
const cleanedCount = await cleanupBackupFiles(repoPath);
|
|
146
|
+
if (cleanedCount > 0) {
|
|
147
|
+
result.actions.push(`🗑️ Cleaned up ${cleanedCount} old backup files`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
result.success = true;
|
|
151
|
+
return result;
|
|
152
|
+
|
|
153
|
+
} catch (error) {
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
actions: [],
|
|
157
|
+
warnings: [],
|
|
158
|
+
errors: [`Initialization failed: ${error.message}`]
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Get requirement workflow status
|
|
165
|
+
* @param {string} repoPath - Repository path (optional)
|
|
166
|
+
* @returns {Promise<Object>} Workflow status
|
|
167
|
+
*/
|
|
168
|
+
async function getWorkflowStatus(repoPath = null) {
|
|
169
|
+
try {
|
|
170
|
+
const status = await getCurrentStatus(repoPath);
|
|
171
|
+
const stage = getStatusStage(status);
|
|
172
|
+
const isDone = isStatusDone(status);
|
|
173
|
+
const nextStatus = getNextStatus(status);
|
|
174
|
+
const stats = await getRequirementStatistics(getRequirementsFilePath(repoPath));
|
|
175
|
+
|
|
176
|
+
return {
|
|
177
|
+
current: status,
|
|
178
|
+
stage,
|
|
179
|
+
isDone,
|
|
180
|
+
nextStatus,
|
|
181
|
+
canProceed: !isDone && nextStatus !== null,
|
|
182
|
+
requirementsCount: stats.total,
|
|
183
|
+
todoCount: stats.todo,
|
|
184
|
+
verifyCount: stats.verify,
|
|
185
|
+
currentCount: stats.current,
|
|
186
|
+
timestamp: new Date().toISOString()
|
|
187
|
+
};
|
|
188
|
+
} catch (error) {
|
|
189
|
+
return {
|
|
190
|
+
error: error.message,
|
|
191
|
+
timestamp: new Date().toISOString()
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Advance requirement workflow to next status
|
|
198
|
+
* @param {string} repoPath - Repository path (optional)
|
|
199
|
+
* @returns {Promise<Object>} Result of advancement
|
|
200
|
+
*/
|
|
201
|
+
async function advanceWorkflow(repoPath = null) {
|
|
202
|
+
try {
|
|
203
|
+
const currentStatus = await getCurrentStatus(repoPath);
|
|
204
|
+
const nextStatus = getNextStatus(currentStatus);
|
|
205
|
+
|
|
206
|
+
if (!nextStatus) {
|
|
207
|
+
return {
|
|
208
|
+
success: false,
|
|
209
|
+
message: 'Already at DONE status or invalid current status',
|
|
210
|
+
currentStatus,
|
|
211
|
+
nextStatus: null
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const updated = await updateCurrentStatus(repoPath, nextStatus);
|
|
216
|
+
|
|
217
|
+
return {
|
|
218
|
+
success: updated,
|
|
219
|
+
message: updated ? `Status advanced from ${currentStatus} to ${nextStatus}` : 'Failed to update status',
|
|
220
|
+
previousStatus: currentStatus,
|
|
221
|
+
currentStatus: nextStatus
|
|
222
|
+
};
|
|
223
|
+
} catch (error) {
|
|
224
|
+
return {
|
|
225
|
+
success: false,
|
|
226
|
+
message: `Error advancing workflow: ${error.message}`,
|
|
227
|
+
error: error.message
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Get requirement health check
|
|
234
|
+
* @param {string} repoPath - Repository path (optional)
|
|
235
|
+
* @returns {Promise<Object>} Health check results
|
|
236
|
+
*/
|
|
237
|
+
async function getHealthCheck(repoPath = null) {
|
|
238
|
+
try {
|
|
239
|
+
const fileStats = await getRequirementsFileStats(repoPath);
|
|
240
|
+
const validation = await validateRequirementsFile(repoPath);
|
|
241
|
+
const statusSummary = await getStatusSummary(getRequirementsFilePath(repoPath));
|
|
242
|
+
const stats = await getRequirementStatistics(getRequirementsFilePath(repoPath));
|
|
243
|
+
|
|
244
|
+
const health = {
|
|
245
|
+
status: 'healthy',
|
|
246
|
+
issues: [],
|
|
247
|
+
recommendations: [],
|
|
248
|
+
score: 100
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
// Check file existence
|
|
252
|
+
if (!fileStats.exists) {
|
|
253
|
+
health.status = 'critical';
|
|
254
|
+
health.issues.push('Requirements file does not exist');
|
|
255
|
+
health.recommendations.push('Create a requirements file');
|
|
256
|
+
health.score -= 50;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Check validation
|
|
260
|
+
if (!validation.isValid) {
|
|
261
|
+
health.status = 'warning';
|
|
262
|
+
health.issues.push('Requirements file has validation errors');
|
|
263
|
+
health.recommendations.push('Fix validation errors');
|
|
264
|
+
health.score -= 20;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Check status
|
|
268
|
+
if (!statusSummary.current) {
|
|
269
|
+
health.issues.push('No current status set');
|
|
270
|
+
health.recommendations.push('Set a current status');
|
|
271
|
+
health.score -= 10;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Check for stuck requirements
|
|
275
|
+
if (stats.verify > 10) {
|
|
276
|
+
health.issues.push('Many requirements waiting for verification');
|
|
277
|
+
health.recommendations.push('Review and verify pending requirements');
|
|
278
|
+
health.score -= 5;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Check file size
|
|
282
|
+
if (fileStats.size > 50000) { // 50KB
|
|
283
|
+
health.issues.push('Requirements file is large');
|
|
284
|
+
health.recommendations.push('Consider archiving old requirements');
|
|
285
|
+
health.score -= 5;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// Determine final status
|
|
289
|
+
if (health.score >= 90) {
|
|
290
|
+
health.status = 'healthy';
|
|
291
|
+
} else if (health.score >= 70) {
|
|
292
|
+
health.status = 'warning';
|
|
293
|
+
} else {
|
|
294
|
+
health.status = 'critical';
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return health;
|
|
298
|
+
|
|
299
|
+
} catch (error) {
|
|
300
|
+
return {
|
|
301
|
+
status: 'error',
|
|
302
|
+
issues: [`Health check failed: ${error.message}`],
|
|
303
|
+
recommendations: ['Check file permissions and paths'],
|
|
304
|
+
score: 0,
|
|
305
|
+
error: error.message
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Export everything
|
|
311
|
+
module.exports = {
|
|
312
|
+
// Parser utilities
|
|
313
|
+
DEFAULT_INSTRUCTION_TEXT,
|
|
314
|
+
getOrdinalSuffix,
|
|
315
|
+
addTryAgainPrefix,
|
|
316
|
+
parseRequirementLine,
|
|
317
|
+
extractRequirementTitle,
|
|
318
|
+
isRequirementMatch,
|
|
319
|
+
parseRequirementBlock,
|
|
320
|
+
findRequirementBlock,
|
|
321
|
+
findAllRequirementsInSection,
|
|
322
|
+
validateRequirementFormat,
|
|
323
|
+
formatRequirementForDisplay,
|
|
324
|
+
|
|
325
|
+
// Movement operations
|
|
326
|
+
promoteToVerified,
|
|
327
|
+
demoteFromVerifiedToTodo,
|
|
328
|
+
promoteTodoToVerify,
|
|
329
|
+
demoteFromVerifyToTodo,
|
|
330
|
+
moveToCurrent,
|
|
331
|
+
getRequirementsInSection,
|
|
332
|
+
getRequirementStatistics,
|
|
333
|
+
|
|
334
|
+
// Status management
|
|
335
|
+
extractCurrentStatus,
|
|
336
|
+
updateCurrentStatus,
|
|
337
|
+
getCurrentStatus,
|
|
338
|
+
isStatusDone,
|
|
339
|
+
isStatusInProgress,
|
|
340
|
+
getStatusStage,
|
|
341
|
+
validateStatus,
|
|
342
|
+
getNextStatus,
|
|
343
|
+
getPreviousStatus,
|
|
344
|
+
isValidStatusTransition,
|
|
345
|
+
getStatusHistory,
|
|
346
|
+
formatStatusForDisplay,
|
|
347
|
+
getStatusSummary,
|
|
348
|
+
|
|
349
|
+
// File operations
|
|
350
|
+
getRequirementsFilePath,
|
|
351
|
+
requirementsFileExists,
|
|
352
|
+
createRequirementsFile,
|
|
353
|
+
readRequirementsFile,
|
|
354
|
+
writeRequirementsFile,
|
|
355
|
+
backupRequirementsFile,
|
|
356
|
+
getRequirementsFileStats,
|
|
357
|
+
validateRequirementsFile,
|
|
358
|
+
getAllRequirementsFiles,
|
|
359
|
+
cleanupBackupFiles,
|
|
360
|
+
|
|
361
|
+
// High-level operations
|
|
362
|
+
getRequirementSystemInfo,
|
|
363
|
+
initializeRequirementsSystem,
|
|
364
|
+
getWorkflowStatus,
|
|
365
|
+
advanceWorkflow,
|
|
366
|
+
getHealthCheck
|
|
367
|
+
};
|