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,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
+ };