vibecodingmachine-cli 2026.2.26-1752 → 2026.3.9-1621

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 (74) hide show
  1. package/bin/auth/auth-compliance.js +7 -1
  2. package/bin/commands/agent-commands.js +150 -228
  3. package/bin/commands/command-aliases.js +68 -0
  4. package/bin/vibecodingmachine.js +1 -2
  5. package/package.json +2 -2
  6. package/src/commands/agents/list.js +71 -115
  7. package/src/commands/agents-check.js +16 -4
  8. package/src/commands/analyze-file-sizes.js +1 -1
  9. package/src/commands/auto-direct/auto-provider-manager.js +290 -0
  10. package/src/commands/auto-direct/auto-status-display.js +331 -0
  11. package/src/commands/auto-direct/auto-utils.js +439 -0
  12. package/src/commands/auto-direct/file-operations.js +110 -0
  13. package/src/commands/auto-direct/provider-config.js +1 -1
  14. package/src/commands/auto-direct/provider-manager.js +1 -1
  15. package/src/commands/auto-direct/status-display.js +1 -1
  16. package/src/commands/auto-direct/utils.js +24 -18
  17. package/src/commands/auto-direct-refactored.js +413 -0
  18. package/src/commands/auto-direct.js +594 -188
  19. package/src/commands/requirements/commands.js +353 -0
  20. package/src/commands/requirements/default-handlers.js +272 -0
  21. package/src/commands/requirements/disable.js +97 -0
  22. package/src/commands/requirements/enable.js +97 -0
  23. package/src/commands/requirements/utils.js +194 -0
  24. package/src/commands/requirements-refactored.js +60 -0
  25. package/src/commands/requirements.js +38 -771
  26. package/src/commands/specs/disable.js +96 -0
  27. package/src/commands/specs/enable.js +96 -0
  28. package/src/trui/TruiInterface.js +5 -11
  29. package/src/trui/agents/AgentInterface.js +24 -396
  30. package/src/trui/agents/handlers/CommandHandler.js +93 -0
  31. package/src/trui/agents/handlers/ContextManager.js +117 -0
  32. package/src/trui/agents/handlers/DisplayHandler.js +243 -0
  33. package/src/trui/agents/handlers/HelpHandler.js +51 -0
  34. package/src/utils/auth.js +13 -111
  35. package/src/utils/config.js +4 -0
  36. package/src/utils/interactive/requirements-navigation.js +17 -15
  37. package/src/utils/interactive-broken.js +2 -2
  38. package/src/utils/provider-checker/agent-runner.js +15 -1
  39. package/src/utils/provider-checker/cli-installer.js +149 -7
  40. package/src/utils/provider-checker/opencode-checker.js +588 -0
  41. package/src/utils/provider-checker/provider-validator.js +88 -3
  42. package/src/utils/provider-checker/time-formatter.js +3 -2
  43. package/src/utils/provider-manager.js +28 -20
  44. package/src/utils/provider-registry.js +35 -3
  45. package/src/utils/requirements-navigator/index.js +94 -0
  46. package/src/utils/requirements-navigator/input-handler.js +217 -0
  47. package/src/utils/requirements-navigator/section-loader.js +188 -0
  48. package/src/utils/requirements-navigator/tree-builder.js +105 -0
  49. package/src/utils/requirements-navigator/tree-renderer.js +50 -0
  50. package/src/utils/requirements-navigator.js +2 -583
  51. package/src/utils/trui-clarifications.js +188 -0
  52. package/src/utils/trui-feedback.js +54 -1
  53. package/src/utils/trui-kiro-integration.js +398 -0
  54. package/src/utils/trui-main-handlers.js +194 -0
  55. package/src/utils/trui-main-menu.js +235 -0
  56. package/src/utils/trui-nav-agents.js +178 -25
  57. package/src/utils/trui-nav-requirements.js +203 -27
  58. package/src/utils/trui-nav-settings.js +114 -1
  59. package/src/utils/trui-nav-specifications.js +44 -3
  60. package/src/utils/trui-navigation-backup.js +603 -0
  61. package/src/utils/trui-navigation.js +70 -228
  62. package/src/utils/trui-provider-health.js +274 -0
  63. package/src/utils/trui-provider-manager.js +376 -0
  64. package/src/utils/trui-quick-menu.js +25 -1
  65. package/src/utils/trui-req-actions-backup.js +507 -0
  66. package/src/utils/trui-req-actions.js +148 -216
  67. package/src/utils/trui-req-editor.js +170 -0
  68. package/src/utils/trui-req-file-ops.js +278 -0
  69. package/src/utils/trui-req-tree-old.js +719 -0
  70. package/src/utils/trui-req-tree.js +348 -627
  71. package/src/utils/trui-specifications.js +25 -7
  72. package/src/utils/trui-windsurf.js +231 -10
  73. package/src/utils/welcome-screen-extracted.js +2 -2
  74. package/src/utils/welcome-screen.js +2 -2
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Auto Mode Status Display
3
+ *
4
+ * Handles status display and UI components for auto mode
5
+ */
6
+
7
+ const chalk = require('chalk');
8
+ const { getStages, DEFAULT_STAGES } = require('../../../utils/config');
9
+ const { stripAnsi, padToVisualWidth } = require('./auto-utils');
10
+
11
+ // Global status mode tracking
12
+ let currentStatusMode = 'active';
13
+
14
+ /**
15
+ * Print status card with current workflow information
16
+ */
17
+ function printStatusCard(currentTitle, currentStatus, mode = 'active') {
18
+ currentStatusMode = mode; // Update global mode tracking
19
+
20
+ const stages = configuredStages || DEFAULT_STAGES;
21
+ const currentStageIndex = stages.indexOf(currentStatus);
22
+
23
+ // Build status card
24
+ const width = 60;
25
+ const border = '─'.repeat(width);
26
+
27
+ console.log(chalk.cyan(`┌─ ${border} ─┐`));
28
+ console.log(chalk.cyan('│') + padToVisualWidth(` 🤖 Auto Mode Status`, width - 4) + chalk.cyan('│'));
29
+ console.log(chalk.cyan(`├─ ${border} ─┤`));
30
+
31
+ // Current requirement
32
+ if (currentTitle) {
33
+ const titleLine = ` 📋 ${currentTitle}`;
34
+ console.log(chalk.cyan('│') + padToVisualWidth(titleLine, width - 4) + chalk.cyan('│'));
35
+ }
36
+
37
+ // Current stage
38
+ const statusIcon = getStatusIcon(currentStatus, mode);
39
+ const statusLine = ` ${statusIcon} ${currentStatus}`;
40
+ console.log(chalk.cyan('│') + padToVisualWidth(statusLine, width - 4) + chalk.cyan('│'));
41
+
42
+ // Progress bar
43
+ if (currentStageIndex >= 0) {
44
+ const progress = ((currentStageIndex + 1) / stages.length) * 100;
45
+ const progressBar = createProgressBar(progress, width - 8);
46
+ console.log(chalk.cyan('│') + padToVisualWidth(` ${progressBar}`, width - 4) + chalk.cyan('│'));
47
+ }
48
+
49
+ console.log(chalk.cyan(`└─ ${border} ─┘`));
50
+ }
51
+
52
+ /**
53
+ * Get status icon based on status and mode
54
+ */
55
+ function getStatusIcon(status, mode) {
56
+ const statusIcons = {
57
+ 'PREPARE': '🔧',
58
+ 'REPRODUCE': '🔄',
59
+ 'ACT': '⚡',
60
+ 'CLEAN UP': '🧹',
61
+ 'VERIFY': '✅',
62
+ 'DONE': '🎉'
63
+ };
64
+
65
+ const baseIcon = statusIcons[status] || '❓';
66
+
67
+ if (mode === 'waiting') {
68
+ return '⏳';
69
+ } else if (mode === 'stopped') {
70
+ return '⏹️';
71
+ }
72
+
73
+ return baseIcon;
74
+ }
75
+
76
+ /**
77
+ * Create progress bar
78
+ */
79
+ function createProgressBar(percentage, width) {
80
+ const filled = Math.round((percentage / 100) * width);
81
+ const empty = width - filled;
82
+
83
+ const filledBar = '█'.repeat(filled);
84
+ const emptyBar = '░'.repeat(empty);
85
+
86
+ return chalk.green(filledBar) + chalk.gray(emptyBar) + ` ${Math.round(percentage)}%`;
87
+ }
88
+
89
+ /**
90
+ * Print workflow stages with current stage highlighted
91
+ */
92
+ function printWorkflowStages(currentStatus) {
93
+ const stages = configuredStages || DEFAULT_STAGES;
94
+ const currentIndex = stages.indexOf(currentStatus);
95
+
96
+ console.log(chalk.blue('\n🔄 Workflow Stages:'));
97
+
98
+ stages.forEach((stage, index) => {
99
+ const isCurrent = index === currentIndex;
100
+ const isCompleted = index < currentIndex;
101
+ const isPending = index > currentIndex;
102
+
103
+ let icon = '⭕';
104
+ let color = chalk.gray;
105
+
106
+ if (isCurrent) {
107
+ icon = '🔵';
108
+ color = chalk.blue;
109
+ } else if (isCompleted) {
110
+ icon = '✅';
111
+ color = chalk.green;
112
+ } else if (isPending) {
113
+ icon = '⭕';
114
+ color = chalk.gray;
115
+ }
116
+
117
+ const stageText = `${icon} ${stage}`;
118
+ console.log(color(` ${stageText}`));
119
+ });
120
+
121
+ console.log();
122
+ }
123
+
124
+ /**
125
+ * Print provider information
126
+ */
127
+ function printProviderInfo(providerName, providerConfig) {
128
+ console.log(chalk.blue('\n🔌 Provider Information:'));
129
+ console.log(chalk.cyan(` Provider: ${providerName}`));
130
+
131
+ if (providerConfig.model) {
132
+ console.log(chalk.cyan(` Model: ${providerConfig.model}`));
133
+ }
134
+
135
+ if (providerConfig.baseUrl) {
136
+ console.log(chalk.cyan(` Base URL: ${providerConfig.baseUrl}`));
137
+ }
138
+
139
+ if (providerConfig.region) {
140
+ console.log(chalk.cyan(` Region: ${providerConfig.region}`));
141
+ }
142
+
143
+ console.log();
144
+ }
145
+
146
+ /**
147
+ * Print rate limit warning
148
+ */
149
+ function printRateLimitWarning(providerName, waitTime) {
150
+ const waitMinutes = Math.ceil(waitTime / 60000);
151
+ console.log(chalk.yellow(`\n⚠️ Rate limit detected for ${providerName}`));
152
+ console.log(chalk.yellow(` Waiting ${waitMinutes} minute(s) before retry...`));
153
+ console.log();
154
+ }
155
+
156
+ /**
157
+ * Print error information
158
+ */
159
+ function printError(error, context = '') {
160
+ console.log(chalk.red(`\n❌ Error${context ? ` (${context})` : ''}:`));
161
+ console.log(chalk.red(` ${error.message}`));
162
+
163
+ if (error.stack && process.env.DEBUG) {
164
+ console.log(chalk.gray(` Stack trace:\n${error.stack}`));
165
+ }
166
+
167
+ console.log();
168
+ }
169
+
170
+ /**
171
+ * Print success message
172
+ */
173
+ function printSuccess(message) {
174
+ console.log(chalk.green(`\n✅ ${message}`));
175
+ console.log();
176
+ }
177
+
178
+ /**
179
+ * Print warning message
180
+ */
181
+ function printWarning(message) {
182
+ console.log(chalk.yellow(`\n⚠️ ${message}`));
183
+ console.log();
184
+ }
185
+
186
+ /**
187
+ * Print info message
188
+ */
189
+ function printInfo(message) {
190
+ console.log(chalk.blue(`\nℹ️ ${message}`));
191
+ console.log();
192
+ }
193
+
194
+ /**
195
+ * Print debug message (only in debug mode)
196
+ */
197
+ function printDebug(message) {
198
+ if (process.env.DEBUG || process.env.VERBOSE) {
199
+ console.log(chalk.gray(`🐛 DEBUG: ${message}`));
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Create spinner animation
205
+ */
206
+ function createSpinner(text) {
207
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
208
+ let index = 0;
209
+
210
+ return {
211
+ start: () => {
212
+ process.stdout.write(`\r${frames[index]} ${text}`);
213
+ index = (index + 1) % frames.length;
214
+ },
215
+ stop: (finalText = text) => {
216
+ process.stdout.write(`\r✅ ${finalText}\n`);
217
+ }
218
+ };
219
+ }
220
+
221
+ /**
222
+ * Print file change summary
223
+ */
224
+ function printFileChangeSummary(changes) {
225
+ if (!changes || changes.length === 0) {
226
+ return;
227
+ }
228
+
229
+ console.log(chalk.blue('\n📁 File Changes:'));
230
+
231
+ changes.forEach(change => {
232
+ const icon = getFileChangeIcon(change.type);
233
+ const color = getFileChangeColor(change.type);
234
+ console.log(color(` ${icon} ${change.path}`));
235
+
236
+ if (change.type === 'modify' && change.linesAdded) {
237
+ console.log(chalk.gray(` +${change.linesAdded} -${change.linesRemoved || 0} lines`));
238
+ }
239
+ });
240
+
241
+ console.log();
242
+ }
243
+
244
+ /**
245
+ * Get file change icon
246
+ */
247
+ function getFileChangeIcon(type) {
248
+ const icons = {
249
+ 'create': '📝',
250
+ 'modify': '✏️',
251
+ 'delete': '🗑️',
252
+ 'move': '📂',
253
+ 'copy': '📋'
254
+ };
255
+
256
+ return icons[type] || '📄';
257
+ }
258
+
259
+ /**
260
+ * Get file change color
261
+ */
262
+ function getFileChangeColor(type) {
263
+ const colors = {
264
+ 'create': chalk.green,
265
+ 'modify': chalk.yellow,
266
+ 'delete': chalk.red,
267
+ 'move': chalk.blue,
268
+ 'copy': chalk.cyan
269
+ };
270
+
271
+ return colors[type] || chalk.gray;
272
+ }
273
+
274
+ /**
275
+ * Print iteration summary
276
+ */
277
+ function printIterationSummary(iteration, total, title, status) {
278
+ const percentage = Math.round((iteration / total) * 100);
279
+ const icon = status === 'completed' ? '✅' : '🔄';
280
+
281
+ console.log(chalk.blue(`${icon} Iteration ${iteration}/${total} (${percentage}%) - ${title}`));
282
+ }
283
+
284
+ /**
285
+ * Print timing information
286
+ */
287
+ function printTiming(startTime, endTime) {
288
+ const duration = endTime - startTime;
289
+ const seconds = Math.round(duration / 1000);
290
+ const minutes = Math.floor(seconds / 60);
291
+ const remainingSeconds = seconds % 60;
292
+
293
+ if (minutes > 0) {
294
+ console.log(chalk.gray(`⏱️ Duration: ${minutes}m ${remainingSeconds}s`));
295
+ } else {
296
+ console.log(chalk.gray(`⏱️ Duration: ${seconds}s`));
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Clear current line (for spinner updates)
302
+ */
303
+ function clearLine() {
304
+ process.stdout.write('\r\x1b[K');
305
+ }
306
+
307
+ // Export configured stages (will be set by main module)
308
+ let configuredStages = null;
309
+
310
+ function setConfiguredStages(stages) {
311
+ configuredStages = stages;
312
+ }
313
+
314
+ module.exports = {
315
+ printStatusCard,
316
+ printWorkflowStages,
317
+ printProviderInfo,
318
+ printRateLimitWarning,
319
+ printError,
320
+ printSuccess,
321
+ printWarning,
322
+ printInfo,
323
+ printDebug,
324
+ createSpinner,
325
+ printFileChangeSummary,
326
+ printIterationSummary,
327
+ printTiming,
328
+ clearLine,
329
+ setConfiguredStages,
330
+ currentStatusMode
331
+ };