vibecodingmachine-cli 2026.3.14-1537 โ 2026.6.17-1956
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/bin/auth/auth-compliance.js +7 -7
- package/bin/commands/agent-commands.js +15 -15
- package/bin/commands/auto-commands.js +3 -3
- package/bin/commands/command-aliases.js +13 -4
- package/bin/config/cli-config.js +15 -5
- package/bin/update/update-checker.js +5 -5
- package/bin/vibecodingmachine.js +2 -2
- package/package.json +2 -2
- package/src/commands/agents/add.js +5 -5
- package/src/commands/agents/check.js +19 -19
- package/src/commands/agents/list.js +24 -24
- package/src/commands/agents/remove.js +4 -4
- package/src/commands/agents-check.js +1 -1
- package/src/commands/analyze-file-sizes.js +43 -43
- package/src/commands/auto-direct/auto-provider-manager.js +19 -19
- package/src/commands/auto-direct/auto-start-phases.js +493 -0
- package/src/commands/auto-direct/auto-status-display.js +35 -35
- package/src/commands/auto-direct/auto-utils.js +50 -50
- package/src/commands/auto-direct/cline-installer.js +56 -0
- package/src/commands/auto-direct/code-processor.js +27 -27
- package/src/commands/auto-direct/file-scanner.js +19 -19
- package/src/commands/auto-direct/ide-completion-waiter.js +485 -0
- package/src/commands/auto-direct/ide-fallback-runner.js +226 -0
- package/src/commands/auto-direct/ide-provider-runner.js +103 -0
- package/src/commands/auto-direct/iteration-handlers.js +189 -0
- package/src/commands/auto-direct/iteration-runner.js +485 -0
- package/src/commands/auto-direct/provider-config.js +38 -7
- package/src/commands/auto-direct/provider-manager.js +132 -6
- package/src/commands/auto-direct/requirement-manager.js +169 -104
- package/src/commands/auto-direct/requirement-mover.js +350 -0
- package/src/commands/auto-direct/spec-handlers.js +155 -0
- package/src/commands/auto-direct/spec-ide-runner.js +318 -0
- package/src/commands/auto-direct/spec-processing.js +203 -0
- package/src/commands/auto-direct/status-display.js +9 -9
- package/src/commands/auto-direct/utils.js +83 -1
- package/src/commands/auto-direct-refactored.js +1 -413
- package/src/commands/auto-direct.js +127 -4119
- package/src/commands/auto-execution.js +21 -21
- package/src/commands/auto-status-helpers.js +0 -2
- package/src/commands/auto.js +22 -22
- package/src/commands/check-compliance.js +65 -65
- package/src/commands/computers.js +39 -39
- package/src/commands/continuous-scan.js +19 -19
- package/src/commands/ide.js +4 -4
- package/src/commands/locale.js +7 -7
- package/src/commands/refactor-file.js +59 -59
- package/src/commands/requirements/commands.js +17 -17
- package/src/commands/requirements/default-handlers.js +30 -30
- package/src/commands/requirements/disable.js +3 -3
- package/src/commands/requirements/enable.js +3 -3
- package/src/commands/requirements/utils.js +6 -6
- package/src/commands/requirements-refactored.js +3 -3
- package/src/commands/requirements-remote.js +38 -38
- package/src/commands/requirements.js +3 -3
- package/src/commands/settings.js +111 -0
- package/src/commands/specs/count.js +60 -0
- package/src/commands/specs/disable.js +3 -3
- package/src/commands/specs/enable.js +3 -3
- package/src/commands/status.js +10 -10
- package/src/commands/sync.js +25 -25
- package/src/commands/timeout.js +35 -35
- package/src/trui/TruiInterface.js +2 -2
- package/src/trui/agents/AgentInterface.js +4 -4
- package/src/trui/agents/handlers/CommandHandler.js +4 -4
- package/src/trui/agents/handlers/ContextManager.js +1 -1
- package/src/trui/agents/handlers/DisplayHandler.js +11 -11
- package/src/trui/agents/handlers/HelpHandler.js +1 -1
- package/src/utils/agent-selector.js +6 -6
- package/src/utils/antigravity-installer.js +4 -4
- package/src/utils/asset-cleanup.js +1 -1
- package/src/utils/auth.js +9 -12
- package/src/utils/clarification-actions.js +4 -4
- package/src/utils/cline-js-handler.js +5 -5
- package/src/utils/compliance-check.js +6 -6
- package/src/utils/config.js +12 -12
- package/src/utils/display-formatters-complete.js +2 -2
- package/src/utils/display-formatters-extracted.js +2 -2
- package/src/utils/display-formatters.js +2 -2
- package/src/utils/feedback-handler.js +2 -2
- package/src/utils/first-run.js +7 -7
- package/src/utils/ide-detection.js +1 -1
- package/src/utils/ide-handlers.js +6 -6
- package/src/utils/interactive/clarification-actions.js +3 -3
- package/src/utils/interactive/core-ui.js +7 -7
- package/src/utils/interactive/file-backup.js +6 -6
- package/src/utils/interactive/file-import-export.js +49 -49
- package/src/utils/interactive/file-operations.js +3 -3
- package/src/utils/interactive/file-validation.js +41 -41
- package/src/utils/interactive/interactive-prompts.js +41 -41
- package/src/utils/interactive/requirement-actions.js +5 -5
- package/src/utils/interactive/requirement-crud.js +4 -4
- package/src/utils/interactive/requirements-navigation.js +10 -10
- package/src/utils/interactive-broken.js +6 -6
- package/src/utils/interactive.js +37 -37
- package/src/utils/keyboard-handler.js +4 -4
- package/src/utils/prompt-helper.js +6 -6
- package/src/utils/provider-checker/agent-checker.js +1 -1
- package/src/utils/provider-checker/agent-runner.js +203 -314
- package/src/utils/provider-checker/agents-file-lock.js +134 -0
- package/src/utils/provider-checker/agents-manager.js +224 -36
- package/src/utils/provider-checker/cli-installer.js +28 -28
- package/src/utils/provider-checker/cli-utils.js +2 -2
- package/src/utils/provider-checker/cursor-approval-clicker.js +108 -0
- package/src/utils/provider-checker/format-utils.js +4 -4
- package/src/utils/provider-checker/ide-installer-helper.js +96 -0
- package/src/utils/provider-checker/ide-manager.js +19 -8
- package/src/utils/provider-checker/ide-quota-checker.js +120 -0
- package/src/utils/provider-checker/ide-utils.js +2 -2
- package/src/utils/provider-checker/node-detector.js +4 -4
- package/src/utils/provider-checker/node-utils.js +5 -5
- package/src/utils/provider-checker/opencode-checker.js +107 -73
- package/src/utils/provider-checker/process-utils.js +1 -1
- package/src/utils/provider-checker/provider-validator.js +11 -11
- package/src/utils/provider-checker/quota-checker.js +5 -5
- package/src/utils/provider-checker/quota-detector.js +5 -5
- package/src/utils/provider-checker/requirements-manager.js +6 -6
- package/src/utils/provider-checker/test-requirements.js +1 -1
- package/src/utils/provider-checker/vscode-approval-clicker.js +328 -0
- package/src/utils/provider-checker-new.js +6 -6
- package/src/utils/provider-checker.js +6 -6
- package/src/utils/provider-checkers/ide-manager.js +13 -13
- package/src/utils/provider-checkers/node-executable-finder.js +4 -4
- package/src/utils/provider-checkers/provider-checker-core.js +5 -5
- package/src/utils/provider-checkers/provider-checker-main.js +17 -17
- package/src/utils/provider-registry.js +5 -6
- package/src/utils/provider-utils.js +12 -12
- package/src/utils/quota-detectors.js +32 -32
- package/src/utils/requirement-action-handlers.js +12 -12
- package/src/utils/requirement-actions/requirement-operations.js +3 -3
- package/src/utils/requirement-actions.js +1 -1
- package/src/utils/requirement-file-operations.js +5 -5
- package/src/utils/requirement-helpers.js +1 -1
- package/src/utils/requirement-management.js +5 -5
- package/src/utils/requirement-navigation.js +2 -2
- package/src/utils/requirement-organization.js +3 -3
- package/src/utils/rui-trui-adapter.js +14 -14
- package/src/utils/simple-trui.js +3 -3
- package/src/utils/status-helpers-extracted.js +3 -3
- package/src/utils/trui-clarifications.js +11 -11
- package/src/utils/trui-debug.js +3 -2
- package/src/utils/trui-devin.js +217 -0
- package/src/utils/trui-feedback.js +7 -7
- package/src/utils/trui-kiro-integration.js +34 -34
- package/src/utils/trui-main-handlers.js +20 -21
- package/src/utils/trui-main-menu.js +19 -19
- package/src/utils/trui-nav-agents.js +59 -8
- package/src/utils/trui-nav-requirements.js +3 -3
- package/src/utils/trui-nav-settings.js +10 -10
- package/src/utils/trui-nav-specifications.js +1 -1
- package/src/utils/trui-navigation-backup.js +11 -11
- package/src/utils/trui-navigation.js +9 -9
- package/src/utils/trui-provider-health.js +25 -25
- package/src/utils/trui-provider-manager.js +28 -28
- package/src/utils/trui-quick-menu.js +2 -2
- package/src/utils/trui-req-actions-backup.js +21 -21
- package/src/utils/trui-req-actions.js +20 -20
- package/src/utils/trui-req-editor.js +10 -10
- package/src/utils/trui-req-file-ops.js +3 -3
- package/src/utils/trui-req-tree.js +7 -7
- package/src/utils/trui-windsurf.js +103 -103
- package/src/utils/user-tracking.js +15 -15
- package/src/utils/trui-req-tree-old.js +0 -719
|
@@ -8,34 +8,34 @@ const { t } = require('vibecodingmachine-core');
|
|
|
8
8
|
*/
|
|
9
9
|
async function listComputers(options = {}) {
|
|
10
10
|
const syncEngine = new SyncEngine();
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
try {
|
|
13
13
|
await syncEngine.initialize();
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
// Fetch all computers from DynamoDB
|
|
16
16
|
const computers = await fetchAllComputers(syncEngine);
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
if (computers.length === 0) {
|
|
19
19
|
console.log(chalk.yellow(`\n${t('computers.no.computers')}\n`));
|
|
20
20
|
console.log(chalk.gray(`${t('computers.will.appear')}\n`));
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
// Filter by focus area if specified
|
|
25
25
|
let filteredComputers = computers;
|
|
26
26
|
if (options.focus) {
|
|
27
|
-
filteredComputers = computers.filter(c =>
|
|
27
|
+
filteredComputers = computers.filter(c =>
|
|
28
28
|
c.focusArea && c.focusArea.toLowerCase().includes(options.focus.toLowerCase())
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
// Filter by status if specified
|
|
33
33
|
if (options.status) {
|
|
34
|
-
filteredComputers = filteredComputers.filter(c =>
|
|
34
|
+
filteredComputers = filteredComputers.filter(c =>
|
|
35
35
|
c.status && c.status.toLowerCase() === options.status.toLowerCase()
|
|
36
36
|
);
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
// Create table
|
|
40
40
|
const table = new Table({
|
|
41
41
|
head: [
|
|
@@ -48,7 +48,7 @@ async function listComputers(options = {}) {
|
|
|
48
48
|
],
|
|
49
49
|
colWidths: [25, 30, 12, 35, 10, 15]
|
|
50
50
|
});
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
// Add rows
|
|
53
53
|
for (const computer of filteredComputers) {
|
|
54
54
|
const statusIcon = getStatusIcon(computer.status);
|
|
@@ -58,7 +58,7 @@ async function listComputers(options = {}) {
|
|
|
58
58
|
const lastSync = computer.lastSyncTime
|
|
59
59
|
? formatTimeSince(computer.lastSyncTime)
|
|
60
60
|
: t('computers.never');
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
table.push([
|
|
63
63
|
computer.hostname || computer.computerId,
|
|
64
64
|
computer.focusArea || '-',
|
|
@@ -68,9 +68,9 @@ async function listComputers(options = {}) {
|
|
|
68
68
|
lastSync
|
|
69
69
|
]);
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
console.log('\n' + table.toString() + '\n');
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
// Show summary
|
|
75
75
|
const activeCount = computers.filter(c => c.status === 'active').length;
|
|
76
76
|
const idleCount = computers.filter(c => c.status === 'idle').length;
|
|
@@ -83,7 +83,7 @@ async function listComputers(options = {}) {
|
|
|
83
83
|
console.log(chalk.red(` ${t('computers.error', { count: errorCount })}`));
|
|
84
84
|
}
|
|
85
85
|
console.log('');
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
} catch (error) {
|
|
88
88
|
console.error(chalk.red(`\nโ ${t('computers.fetch.failed')}`), error.message);
|
|
89
89
|
await errorReporter.reportError(error, {
|
|
@@ -102,17 +102,17 @@ async function listComputers(options = {}) {
|
|
|
102
102
|
*/
|
|
103
103
|
async function showComputerStatus(computerId) {
|
|
104
104
|
const syncEngine = new SyncEngine();
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
try {
|
|
107
107
|
await syncEngine.initialize();
|
|
108
|
-
|
|
108
|
+
|
|
109
109
|
const computer = await fetchComputer(syncEngine, computerId);
|
|
110
|
-
|
|
110
|
+
|
|
111
111
|
if (!computer) {
|
|
112
112
|
console.log(chalk.red(`\nโ ${t('computers.not.found', { id: computerId })}\n`));
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
// Display computer details
|
|
117
117
|
console.log('\n' + chalk.bold.cyan(t('computers.details.title')));
|
|
118
118
|
console.log(chalk.gray('โ'.repeat(60)));
|
|
@@ -124,7 +124,7 @@ async function showComputerStatus(computerId) {
|
|
|
124
124
|
console.log(chalk.white(t('computers.details.status').padEnd(17)) + getStatusIcon(computer.status) + ' ' + t(statusKey));
|
|
125
125
|
console.log(chalk.white(t('computers.details.last.sync').padEnd(17)) + (computer.lastSyncTime ? formatTimeSince(computer.lastSyncTime) : t('computers.never')));
|
|
126
126
|
console.log('');
|
|
127
|
-
|
|
127
|
+
|
|
128
128
|
// Current work
|
|
129
129
|
console.log(chalk.bold.cyan(t('computers.work.title')));
|
|
130
130
|
console.log(chalk.gray('โ'.repeat(60)));
|
|
@@ -133,7 +133,7 @@ async function showComputerStatus(computerId) {
|
|
|
133
133
|
console.log(chalk.white(t('computers.work.time.active').padEnd(17)) + (computer.timeActive || '-'));
|
|
134
134
|
console.log(chalk.white(t('computers.work.ide').padEnd(17)) + (computer.ide || '-'));
|
|
135
135
|
console.log('');
|
|
136
|
-
|
|
136
|
+
|
|
137
137
|
// Statistics
|
|
138
138
|
if (computer.stats) {
|
|
139
139
|
console.log(chalk.bold.cyan(t('computers.stats.title')));
|
|
@@ -145,7 +145,7 @@ async function showComputerStatus(computerId) {
|
|
|
145
145
|
console.log(chalk.white(t('computers.stats.completion.rate').padEnd(21)) + (computer.stats.completionRate || '0%'));
|
|
146
146
|
console.log('');
|
|
147
147
|
}
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
} catch (error) {
|
|
150
150
|
console.error(chalk.red(`\nโ ${t('computers.status.fetch.failed')}`), error.message);
|
|
151
151
|
throw error;
|
|
@@ -159,10 +159,10 @@ async function showComputerStatus(computerId) {
|
|
|
159
159
|
*/
|
|
160
160
|
async function registerComputer(focusArea) {
|
|
161
161
|
const syncEngine = new SyncEngine();
|
|
162
|
-
|
|
162
|
+
|
|
163
163
|
try {
|
|
164
164
|
await syncEngine.initialize();
|
|
165
|
-
|
|
165
|
+
|
|
166
166
|
const os = require('os');
|
|
167
167
|
const computerData = {
|
|
168
168
|
computerId: syncEngine.computerId,
|
|
@@ -173,7 +173,7 @@ async function registerComputer(focusArea) {
|
|
|
173
173
|
lastSyncTime: Date.now(),
|
|
174
174
|
status: 'idle'
|
|
175
175
|
};
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
await saveComputer(syncEngine, computerData);
|
|
178
178
|
|
|
179
179
|
console.log(chalk.green(`\nโ ${t('computers.register.success')}\n`));
|
|
@@ -181,7 +181,7 @@ async function registerComputer(focusArea) {
|
|
|
181
181
|
console.log(chalk.white(t('computers.register.hostname').padEnd(14)) + computerData.hostname);
|
|
182
182
|
console.log(chalk.white(t('computers.register.focus').padEnd(14)) + computerData.focusArea);
|
|
183
183
|
console.log('');
|
|
184
|
-
|
|
184
|
+
|
|
185
185
|
} catch (error) {
|
|
186
186
|
console.error(chalk.red(`\nโ ${t('computers.register.failed')}`), error.message);
|
|
187
187
|
await errorReporter.reportError(error, {
|
|
@@ -199,28 +199,28 @@ async function registerComputer(focusArea) {
|
|
|
199
199
|
*/
|
|
200
200
|
async function updateFocus(newFocusArea) {
|
|
201
201
|
const syncEngine = new SyncEngine();
|
|
202
|
-
|
|
202
|
+
|
|
203
203
|
try {
|
|
204
204
|
await syncEngine.initialize();
|
|
205
|
-
|
|
205
|
+
|
|
206
206
|
const computer = await fetchComputer(syncEngine, syncEngine.computerId);
|
|
207
|
-
|
|
207
|
+
|
|
208
208
|
if (!computer) {
|
|
209
209
|
console.log(chalk.yellow(`\nโ ${t('computers.not.registered')}\n`));
|
|
210
210
|
await registerComputer(newFocusArea);
|
|
211
211
|
return;
|
|
212
212
|
}
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
computer.focusArea = newFocusArea;
|
|
215
215
|
computer.lastSyncTime = Date.now();
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
await saveComputer(syncEngine, computer);
|
|
218
218
|
|
|
219
219
|
console.log(chalk.green(`\nโ ${t('computers.focus.updated')}\n`));
|
|
220
220
|
console.log(chalk.white(t('computers.focus.computer').padEnd(14)) + computer.hostname);
|
|
221
221
|
console.log(chalk.white(t('computers.focus.new').padEnd(14)) + newFocusArea);
|
|
222
222
|
console.log('');
|
|
223
|
-
|
|
223
|
+
|
|
224
224
|
} catch (error) {
|
|
225
225
|
console.error(chalk.red(`\nโ ${t('computers.focus.update.failed')}`), error.message);
|
|
226
226
|
throw error;
|
|
@@ -263,14 +263,14 @@ function truncate(str, maxLength) {
|
|
|
263
263
|
|
|
264
264
|
async function fetchAllComputers(syncEngine) {
|
|
265
265
|
const { ScanCommand } = require('@aws-sdk/lib-dynamodb');
|
|
266
|
-
|
|
266
|
+
|
|
267
267
|
const tableName = 'vibecodingmachine-computers';
|
|
268
|
-
|
|
268
|
+
|
|
269
269
|
try {
|
|
270
270
|
const command = new ScanCommand({
|
|
271
271
|
TableName: tableName
|
|
272
272
|
});
|
|
273
|
-
|
|
273
|
+
|
|
274
274
|
const response = await syncEngine.dynamoClient.send(command);
|
|
275
275
|
return response.Items || [];
|
|
276
276
|
} catch (error) {
|
|
@@ -281,15 +281,15 @@ async function fetchAllComputers(syncEngine) {
|
|
|
281
281
|
|
|
282
282
|
async function fetchComputer(syncEngine, computerId) {
|
|
283
283
|
const { GetCommand } = require('@aws-sdk/lib-dynamodb');
|
|
284
|
-
|
|
284
|
+
|
|
285
285
|
const tableName = 'vibecodingmachine-computers';
|
|
286
|
-
|
|
286
|
+
|
|
287
287
|
try {
|
|
288
288
|
const command = new GetCommand({
|
|
289
289
|
TableName: tableName,
|
|
290
290
|
Key: { computerId }
|
|
291
291
|
});
|
|
292
|
-
|
|
292
|
+
|
|
293
293
|
const response = await syncEngine.dynamoClient.send(command);
|
|
294
294
|
return response.Item;
|
|
295
295
|
} catch (error) {
|
|
@@ -299,14 +299,14 @@ async function fetchComputer(syncEngine, computerId) {
|
|
|
299
299
|
|
|
300
300
|
async function saveComputer(syncEngine, computerData) {
|
|
301
301
|
const { PutCommand } = require('@aws-sdk/lib-dynamodb');
|
|
302
|
-
|
|
302
|
+
|
|
303
303
|
const tableName = 'vibecodingmachine-computers';
|
|
304
|
-
|
|
304
|
+
|
|
305
305
|
const command = new PutCommand({
|
|
306
306
|
TableName: tableName,
|
|
307
307
|
Item: computerData
|
|
308
308
|
});
|
|
309
|
-
|
|
309
|
+
|
|
310
310
|
await syncEngine.dynamoClient.send(command);
|
|
311
311
|
}
|
|
312
312
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Continuous Scan CLI Command
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
6
|
* This command runs continuous compliance scanning to identify files
|
|
7
7
|
* exceeding the 555-line limit and generates refactoring tasks.
|
|
8
8
|
*/
|
|
@@ -24,44 +24,44 @@ program
|
|
|
24
24
|
.action(async (options) => {
|
|
25
25
|
try {
|
|
26
26
|
console.log(chalk.blue('๐ Starting continuous compliance scan...'));
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
// Initialize scanner
|
|
29
29
|
const scanner = new ContinuousScanner({
|
|
30
30
|
maxFileSize: parseInt(options.threshold),
|
|
31
31
|
enableFileWatching: options.watch
|
|
32
32
|
});
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
// Set up event handlers
|
|
35
35
|
scanner.events.on('scan_completed', (data) => {
|
|
36
36
|
const violations = data.violations || [];
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
if (violations.length === 0) {
|
|
39
39
|
console.log(chalk.green('โ
No file size violations found!'));
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
console.log(chalk.yellow(`โ ๏ธ Found ${violations.length} files exceeding ${options.threshold} lines:`));
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
// Display violations
|
|
46
46
|
violations.forEach((violation, index) => {
|
|
47
|
-
const severity = violation.lineCount > 1000 ? chalk.red('CRITICAL') :
|
|
48
|
-
violation.lineCount > 750 ? chalk.orange('HIGH') :
|
|
47
|
+
const severity = violation.lineCount > 1000 ? chalk.red('CRITICAL') :
|
|
48
|
+
violation.lineCount > 750 ? chalk.orange('HIGH') :
|
|
49
49
|
chalk.yellow('MEDIUM');
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
console.log(`${index + 1}. ${violation.filePath} - ${violation.lineCount} lines ${severity}`);
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
if (options.verbose) {
|
|
54
54
|
console.log(` File size: ${(violation.fileSize / 1024).toFixed(2)} KB`);
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
// Generate tasks if requested
|
|
59
59
|
if (options.tasks) {
|
|
60
60
|
console.log(chalk.blue('\n๐ Generating refactoring tasks...'));
|
|
61
61
|
// Task generation would be implemented here
|
|
62
62
|
console.log(chalk.yellow('โ ๏ธ Task generation not yet implemented'));
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
// Generate report
|
|
66
66
|
if (options.output) {
|
|
67
67
|
const report = {
|
|
@@ -72,7 +72,7 @@ program
|
|
|
72
72
|
require('fs').writeFileSync(options.output, JSON.stringify(report, null, 2));
|
|
73
73
|
console.log(chalk.blue(`๐ Report saved to: ${options.output}`));
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
// Summary statistics
|
|
77
77
|
console.log(chalk.blue('\n๐ Scan Summary:'));
|
|
78
78
|
console.log(`Violations found: ${violations.length}`);
|
|
@@ -81,18 +81,18 @@ program
|
|
|
81
81
|
console.log(`Compliance rate: ${((data.stats.filesScanned - violations.length) / data.stats.filesScanned * 100).toFixed(1)}%`);
|
|
82
82
|
}
|
|
83
83
|
});
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
// Start scanning
|
|
86
86
|
scanner.start();
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
if (options.watch) {
|
|
89
89
|
console.log(chalk.green('๐ Watching for file changes... Press Ctrl+C to stop'));
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
// Set up additional event handlers for continuous monitoring
|
|
92
92
|
scanner.events.on('violations_found', ({ count, violations }) => {
|
|
93
93
|
console.log(chalk.yellow(`\n๐จ Violations found: ${count}`));
|
|
94
94
|
});
|
|
95
|
-
|
|
95
|
+
|
|
96
96
|
// Handle graceful shutdown
|
|
97
97
|
process.on('SIGINT', () => {
|
|
98
98
|
console.log(chalk.yellow('\n๐ Stopping continuous scan...'));
|
|
@@ -100,7 +100,7 @@ program
|
|
|
100
100
|
console.log(chalk.green('โ
Continuous scan stopped'));
|
|
101
101
|
process.exit(0);
|
|
102
102
|
});
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
// Keep process running
|
|
105
105
|
// The scanner will continue running in the background
|
|
106
106
|
} else {
|
|
@@ -109,7 +109,7 @@ program
|
|
|
109
109
|
scanner.stop();
|
|
110
110
|
}, 5000);
|
|
111
111
|
}
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
} catch (error) {
|
|
114
114
|
console.error(chalk.red('โ Error during continuous scan:'), error.message);
|
|
115
115
|
process.exit(1);
|
package/src/commands/ide.js
CHANGED
|
@@ -4,7 +4,7 @@ const ora = require('ora');
|
|
|
4
4
|
const { AppleScriptManager, IDEHealthTracker } = require('vibecodingmachine-core');
|
|
5
5
|
const { getRepoPath } = require('../utils/config');
|
|
6
6
|
|
|
7
|
-
const IDES = ['cursor', 'vscode', '
|
|
7
|
+
const IDES = ['cursor', 'vscode', 'devin', 'antigravity', 'cline', 'github-copilot', 'amazon-q', 'replit', 'kiro'];
|
|
8
8
|
|
|
9
9
|
async function list() {
|
|
10
10
|
console.log(chalk.bold('\nAvailable IDEs'));
|
|
@@ -76,7 +76,7 @@ async function health(options = {}) {
|
|
|
76
76
|
try {
|
|
77
77
|
// Test basic connectivity by attempting to get IDE status
|
|
78
78
|
const appleScriptManager = new AppleScriptManager();
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
// For web-based IDEs, we'll simulate a basic check
|
|
81
81
|
if (['replit', 'antigravity', 'kiro'].includes(ide)) {
|
|
82
82
|
// Simulate health check for web-based IDEs
|
|
@@ -87,7 +87,7 @@ async function health(options = {}) {
|
|
|
87
87
|
// For desktop IDEs, try to get basic status
|
|
88
88
|
await appleScriptManager.getIDEStatus(ide);
|
|
89
89
|
const responseTime = Date.now() - startTime;
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
spinner.succeed(chalk.green(`${ide} - Connected (${responseTime}ms)`));
|
|
92
92
|
results.push({ ide, status: 'success', responseTime });
|
|
93
93
|
}
|
|
@@ -100,7 +100,7 @@ async function health(options = {}) {
|
|
|
100
100
|
|
|
101
101
|
} catch (error) {
|
|
102
102
|
const responseTime = Date.now() - startTime;
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
// Check if it timed out (2 minute limit)
|
|
105
105
|
if (responseTime >= 120000) {
|
|
106
106
|
spinner.fail(chalk.red(`${ide} - Timeout (${Math.floor(responseTime / 1000)}s)`));
|
package/src/commands/locale.js
CHANGED
|
@@ -13,7 +13,7 @@ async function show() {
|
|
|
13
13
|
console.log(chalk.gray('Current locale:'), chalk.cyan(current));
|
|
14
14
|
console.log(chalk.gray('Detected locale:'), chalk.cyan(detected));
|
|
15
15
|
console.log(chalk.gray('Available locales:'), chalk.cyan(available.join(', ')));
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
// Test some translations
|
|
18
18
|
console.log(chalk.bold('\n๐ Sample Translations:'));
|
|
19
19
|
console.log(` ${t('auth.login')}`);
|
|
@@ -28,7 +28,7 @@ async function show() {
|
|
|
28
28
|
*/
|
|
29
29
|
async function set(locale) {
|
|
30
30
|
const available = getAvailableLocales();
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
if (!available.includes(locale)) {
|
|
33
33
|
console.log(chalk.red(`\nโ Unsupported locale: ${locale}`));
|
|
34
34
|
console.log(chalk.gray('Available locales:'), chalk.cyan(available.join(', ')));
|
|
@@ -37,7 +37,7 @@ async function set(locale) {
|
|
|
37
37
|
|
|
38
38
|
setLocale(locale);
|
|
39
39
|
console.log(chalk.green(`\nโ Locale set to: ${chalk.cyan(locale)}`));
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
// Show sample translation
|
|
42
42
|
console.log(chalk.gray('Sample:'), t('app.name'));
|
|
43
43
|
console.log();
|
|
@@ -48,19 +48,19 @@ async function set(locale) {
|
|
|
48
48
|
*/
|
|
49
49
|
async function test() {
|
|
50
50
|
console.log(chalk.bold(`\n๐งช Testing Locale System`));
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
const available = getAvailableLocales();
|
|
53
|
-
|
|
53
|
+
|
|
54
54
|
for (const locale of available) {
|
|
55
55
|
console.log(chalk.bold(`\n--- ${locale.toUpperCase()} ---`));
|
|
56
56
|
setLocale(locale);
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
console.log(`${t('app.name')}`);
|
|
59
59
|
console.log(`${t('auth.login')}`);
|
|
60
60
|
console.log(`${t('status.title')}`);
|
|
61
61
|
console.log(`${t('setup.title')}`);
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
// Reset to detected locale
|
|
65
65
|
setLocale(detectLocale());
|
|
66
66
|
console.log();
|