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,276 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const os = require('os');
|
|
4
|
+
const { logger } = require('./logger.cjs');
|
|
5
|
+
const { getProjectRequirementStats } = require('./requirement-statistics');
|
|
6
|
+
const { getOrCreateRequirementsFilePath } = require('./requirement-file-management');
|
|
7
|
+
const { parseRequirementLine } = require('./requirement-text-utils');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Current requirement management and navigation utilities
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// Shared function to move to next requirement (used by both IPC and auto mode)
|
|
14
|
+
let isMovingToNextRequirement = false; // Prevent duplicate calls
|
|
15
|
+
let lastMoveTime = 0; // Track when last move happened
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Get current requirement being worked on
|
|
19
|
+
* @param {string} repoPath - Repository path
|
|
20
|
+
* @returns {Promise<Object|null>} Current requirement info
|
|
21
|
+
*/
|
|
22
|
+
async function getCurrentRequirement(repoPath) {
|
|
23
|
+
try {
|
|
24
|
+
const rPath = repoPath || process.cwd();
|
|
25
|
+
// Get the requirements file path (create if doesn't exist)
|
|
26
|
+
const reqPath = await getOrCreateRequirementsFilePath(rPath);
|
|
27
|
+
|
|
28
|
+
if (!(await fs.pathExists(reqPath))) {
|
|
29
|
+
logger.error('â Requirements file does not exist');
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const content = await fs.readFile(reqPath, 'utf-8');
|
|
34
|
+
const lines = content.split('\n');
|
|
35
|
+
|
|
36
|
+
let inProgressSection = false;
|
|
37
|
+
let currentRequirement = null;
|
|
38
|
+
|
|
39
|
+
for (const line of lines) {
|
|
40
|
+
if (line.includes('đ¨ Current In Progress Requirement')) {
|
|
41
|
+
inProgressSection = true;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (inProgressSection && line.startsWith('- ')) {
|
|
46
|
+
currentRequirement = parseRequirementLine(line);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (inProgressSection && line.startsWith('# ')) {
|
|
51
|
+
break; // End of section
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return currentRequirement ? { title: currentRequirement } : null;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
logger.error('â Error getting current requirement:', error);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Check if the current requirement status is DONE
|
|
64
|
+
* @param {string} repoPath - Repository path
|
|
65
|
+
* @returns {Promise<boolean>} True if status is DONE
|
|
66
|
+
*/
|
|
67
|
+
async function isCurrentRequirementDone(repoPath) {
|
|
68
|
+
try {
|
|
69
|
+
const rPath = repoPath || process.cwd();
|
|
70
|
+
const hostname = os.hostname();
|
|
71
|
+
const reqPath = await getOrCreateRequirementsFilePath(rPath);
|
|
72
|
+
|
|
73
|
+
if (!(await fs.pathExists(reqPath))) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const content = await fs.readFile(reqPath, 'utf-8');
|
|
78
|
+
const lines = content.split('\n');
|
|
79
|
+
|
|
80
|
+
let inStatusSection = false;
|
|
81
|
+
|
|
82
|
+
for (const line of lines) {
|
|
83
|
+
if (line.includes('đĻ Current Status')) {
|
|
84
|
+
inStatusSection = true;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (inStatusSection && line.trim()) {
|
|
89
|
+
const status = line.trim();
|
|
90
|
+
return status === 'DONE';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (inStatusSection && line.startsWith('# ')) {
|
|
94
|
+
break; // End of section
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return false;
|
|
99
|
+
} catch (error) {
|
|
100
|
+
logger.error('â Error checking if current requirement is done:', error);
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Move to next requirement in the list
|
|
107
|
+
* @param {string} repoPath - Repository path
|
|
108
|
+
* @returns {Promise<boolean>} Success status
|
|
109
|
+
*/
|
|
110
|
+
async function moveToNextRequirement(repoPath) {
|
|
111
|
+
const now = Date.now();
|
|
112
|
+
const rPath = repoPath || process.cwd();
|
|
113
|
+
|
|
114
|
+
// Prevent duplicate calls within 1 second
|
|
115
|
+
if (isMovingToNextRequirement || (now - lastMoveTime) < 1000) {
|
|
116
|
+
logger.log('âī¸ Skipping duplicate moveToNextRequirement call');
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
isMovingToNextRequirement = true;
|
|
121
|
+
lastMoveTime = now;
|
|
122
|
+
|
|
123
|
+
try {
|
|
124
|
+
const reqPath = await getOrCreateRequirementsFilePath(rPath);
|
|
125
|
+
|
|
126
|
+
if (!(await fs.pathExists(reqPath))) {
|
|
127
|
+
logger.error('â Requirements file does not exist');
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const content = await fs.readFile(reqPath, 'utf-8');
|
|
132
|
+
const lines = content.split('\n');
|
|
133
|
+
|
|
134
|
+
let inRequirementsSection = false;
|
|
135
|
+
let inProgressSection = false;
|
|
136
|
+
let nextRequirement = null;
|
|
137
|
+
let currentRequirementLine = -1;
|
|
138
|
+
let nextRequirementLine = -1;
|
|
139
|
+
|
|
140
|
+
// Find current and next requirement
|
|
141
|
+
for (let i = 0; i < lines.length; i++) {
|
|
142
|
+
const line = lines[i];
|
|
143
|
+
|
|
144
|
+
if (line.includes('Requirements not yet completed')) {
|
|
145
|
+
inRequirementsSection = true;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (line.includes('đ¨ Current In Progress Requirement')) {
|
|
150
|
+
inRequirementsSection = false;
|
|
151
|
+
inProgressSection = true;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (inProgressSection && line.startsWith('# ')) {
|
|
156
|
+
break; // End of current requirement section
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Find current requirement in progress section
|
|
160
|
+
if (inProgressSection && line.startsWith('- ')) {
|
|
161
|
+
currentRequirementLine = i;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Find next requirement in todo section
|
|
166
|
+
if (inRequirementsSection && line.startsWith('- ')) {
|
|
167
|
+
if (currentRequirementLine !== -1) {
|
|
168
|
+
nextRequirement = parseRequirementLine(line);
|
|
169
|
+
nextRequirementLine = i;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (!nextRequirement) {
|
|
176
|
+
logger.log('âšī¸ No next requirement found');
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Update the file
|
|
181
|
+
lines[currentRequirementLine] = `- ${nextRequirement}`;
|
|
182
|
+
lines.splice(nextRequirementLine, 1);
|
|
183
|
+
|
|
184
|
+
// Write back to file
|
|
185
|
+
await fs.writeFile(reqPath, lines.join('\n'));
|
|
186
|
+
|
|
187
|
+
logger.log(`â
Moved to next requirement: ${nextRequirement}`);
|
|
188
|
+
return true;
|
|
189
|
+
} catch (error) {
|
|
190
|
+
logger.error('â Error moving to next requirement:', error);
|
|
191
|
+
return false;
|
|
192
|
+
} finally {
|
|
193
|
+
isMovingToNextRequirement = false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Get current requirement progress numbers
|
|
199
|
+
* @param {string} repoPath - Repository path
|
|
200
|
+
* @returns {Promise<Object>} Progress information
|
|
201
|
+
*/
|
|
202
|
+
async function getCurrentRequirementProgress(repoPath) {
|
|
203
|
+
try {
|
|
204
|
+
const stats = await getProjectRequirementStats(repoPath);
|
|
205
|
+
if (!stats) {
|
|
206
|
+
return { current: 0, total: 0, percentage: 0 };
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const current = stats.completed;
|
|
210
|
+
const total = stats.total;
|
|
211
|
+
const percentage = total > 0 ? Math.round((current / total) * 100) : 0;
|
|
212
|
+
|
|
213
|
+
return { current, total, percentage };
|
|
214
|
+
} catch (error) {
|
|
215
|
+
logger.error('â Error getting current requirement progress:', error);
|
|
216
|
+
return { current: 0, total: 0, percentage: 0 };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Get current requirement name only (without "Working on:" prefix)
|
|
222
|
+
* @param {string} repoPath - Repository path
|
|
223
|
+
* @returns {Promise<string|null>} Requirement name
|
|
224
|
+
*/
|
|
225
|
+
async function getCurrentRequirementName(repoPath) {
|
|
226
|
+
try {
|
|
227
|
+
const rPath = repoPath || process.cwd();
|
|
228
|
+
const hostname = os.hostname();
|
|
229
|
+
const reqPath = await getOrCreateRequirementsFilePath(rPath);
|
|
230
|
+
|
|
231
|
+
if (!(await fs.pathExists(reqPath))) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
const content = await fs.readFile(reqPath, 'utf-8');
|
|
236
|
+
const lines = content.split('\n');
|
|
237
|
+
|
|
238
|
+
let inProgressSection = false;
|
|
239
|
+
|
|
240
|
+
for (const line of lines) {
|
|
241
|
+
if (line.includes('đ¨ Current In Progress Requirement')) {
|
|
242
|
+
inProgressSection = true;
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (inProgressSection && line.startsWith('- ')) {
|
|
247
|
+
let requirementText = parseRequirementLine(line);
|
|
248
|
+
|
|
249
|
+
// Remove "Working on:" prefix if present
|
|
250
|
+
if (requirementText.startsWith('Working on:')) {
|
|
251
|
+
requirementText = requirementText.substring('Working on:'.length).trim();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Remove any remaining markdown formatting
|
|
255
|
+
requirementText = requirementText.replace(/\*\*/g, '');
|
|
256
|
+
|
|
257
|
+
// Return the full requirement text without any prefix
|
|
258
|
+
return requirementText;
|
|
259
|
+
}
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
return null;
|
|
264
|
+
} catch (error) {
|
|
265
|
+
logger.error('â Error getting current requirement name:', error);
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
module.exports = {
|
|
271
|
+
getCurrentRequirement,
|
|
272
|
+
isCurrentRequirementDone,
|
|
273
|
+
moveToNextRequirement,
|
|
274
|
+
getCurrentRequirementProgress,
|
|
275
|
+
getCurrentRequirementName
|
|
276
|
+
};
|