vibecodingmachine-cli 2026.2.26-1739 → 2026.3.9-850
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 -1
- package/bin/commands/agent-commands.js +150 -228
- package/bin/commands/command-aliases.js +68 -0
- package/bin/vibecodingmachine.js +1 -2
- package/package.json +2 -2
- package/src/commands/agents/list.js +71 -115
- package/src/commands/agents-check.js +16 -4
- package/src/commands/analyze-file-sizes.js +1 -1
- package/src/commands/auto-direct/auto-provider-manager.js +290 -0
- package/src/commands/auto-direct/auto-status-display.js +331 -0
- package/src/commands/auto-direct/auto-utils.js +439 -0
- package/src/commands/auto-direct/file-operations.js +110 -0
- package/src/commands/auto-direct/provider-config.js +1 -1
- package/src/commands/auto-direct/provider-manager.js +1 -1
- package/src/commands/auto-direct/status-display.js +1 -1
- package/src/commands/auto-direct/utils.js +24 -18
- package/src/commands/auto-direct-refactored.js +413 -0
- package/src/commands/auto-direct.js +594 -188
- package/src/commands/requirements/commands.js +353 -0
- package/src/commands/requirements/default-handlers.js +272 -0
- package/src/commands/requirements/disable.js +97 -0
- package/src/commands/requirements/enable.js +97 -0
- package/src/commands/requirements/utils.js +194 -0
- package/src/commands/requirements-refactored.js +60 -0
- package/src/commands/requirements.js +38 -771
- package/src/commands/specs/disable.js +96 -0
- package/src/commands/specs/enable.js +96 -0
- package/src/trui/TruiInterface.js +5 -11
- package/src/trui/agents/AgentInterface.js +24 -396
- package/src/trui/agents/handlers/CommandHandler.js +93 -0
- package/src/trui/agents/handlers/ContextManager.js +117 -0
- package/src/trui/agents/handlers/DisplayHandler.js +243 -0
- package/src/trui/agents/handlers/HelpHandler.js +51 -0
- package/src/utils/auth.js +13 -111
- package/src/utils/config.js +5 -1
- package/src/utils/interactive/requirements-navigation.js +17 -15
- package/src/utils/interactive-broken.js +2 -2
- package/src/utils/provider-checker/agent-runner.js +15 -1
- package/src/utils/provider-checker/cli-installer.js +149 -7
- package/src/utils/provider-checker/opencode-checker.js +588 -0
- package/src/utils/provider-checker/provider-validator.js +88 -3
- package/src/utils/provider-checker/time-formatter.js +3 -2
- package/src/utils/provider-manager.js +28 -20
- package/src/utils/provider-registry.js +35 -3
- package/src/utils/requirements-navigator/index.js +94 -0
- package/src/utils/requirements-navigator/input-handler.js +217 -0
- package/src/utils/requirements-navigator/section-loader.js +188 -0
- package/src/utils/requirements-navigator/tree-builder.js +105 -0
- package/src/utils/requirements-navigator/tree-renderer.js +50 -0
- package/src/utils/requirements-navigator.js +2 -583
- package/src/utils/trui-clarifications.js +188 -0
- package/src/utils/trui-feedback.js +54 -1
- package/src/utils/trui-kiro-integration.js +398 -0
- package/src/utils/trui-main-handlers.js +194 -0
- package/src/utils/trui-main-menu.js +235 -0
- package/src/utils/trui-nav-agents.js +178 -25
- package/src/utils/trui-nav-requirements.js +203 -27
- package/src/utils/trui-nav-settings.js +114 -1
- package/src/utils/trui-nav-specifications.js +44 -3
- package/src/utils/trui-navigation-backup.js +603 -0
- package/src/utils/trui-navigation.js +70 -228
- package/src/utils/trui-provider-health.js +274 -0
- package/src/utils/trui-provider-manager.js +376 -0
- package/src/utils/trui-quick-menu.js +25 -1
- package/src/utils/trui-req-actions-backup.js +507 -0
- package/src/utils/trui-req-actions.js +148 -216
- package/src/utils/trui-req-editor.js +170 -0
- package/src/utils/trui-req-file-ops.js +278 -0
- package/src/utils/trui-req-tree-old.js +719 -0
- package/src/utils/trui-req-tree.js +348 -627
- package/src/utils/trui-specifications.js +25 -7
- package/src/utils/trui-windsurf.js +231 -10
- package/src/utils/welcome-screen-extracted.js +2 -2
- package/src/utils/welcome-screen.js +2 -2
|
@@ -103,7 +103,13 @@ async function setupInteractiveAuth(dependencies) {
|
|
|
103
103
|
*/
|
|
104
104
|
async function setupCommandAuth(dependencies, command, args) {
|
|
105
105
|
const authCommands = ['auth:login', 'auth:logout', 'auth:status'];
|
|
106
|
-
|
|
106
|
+
// Commands that don't need database access
|
|
107
|
+
const localCommands = [
|
|
108
|
+
'auth:login', 'auth:logout', 'auth:status',
|
|
109
|
+
'list', 'get', 'enable', 'disable', 'en', 'di', 'agents',
|
|
110
|
+
'trui', 'help', '--help', '-h', 'version', '--version', '-v'
|
|
111
|
+
];
|
|
112
|
+
const skipAuthCheck = authCommands.includes(command) || localCommands.includes(command);
|
|
107
113
|
|
|
108
114
|
await checkAuthentication(dependencies, skipAuthCheck);
|
|
109
115
|
await checkCompliance(dependencies, skipAuthCheck);
|
|
@@ -4,89 +4,116 @@
|
|
|
4
4
|
|
|
5
5
|
const { program } = require('commander');
|
|
6
6
|
const chalk = require('chalk');
|
|
7
|
+
const { getProviderDefinitions, getProviderPreferences, saveProviderPreferences } = require('../../src/utils/provider-registry');
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Create agent commands instance with required dependencies
|
|
10
11
|
* @returns {Object} Agent commands instance
|
|
11
12
|
*/
|
|
12
13
|
function createAgentCommands() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
// Using provider registry instead of old agent system
|
|
15
|
+
return {
|
|
16
|
+
async executeCommand(verb, resource, options = {}) {
|
|
17
|
+
const definitions = getProviderDefinitions();
|
|
18
|
+
const prefs = await getProviderPreferences();
|
|
19
|
+
|
|
20
|
+
switch (verb) {
|
|
21
|
+
case 'LIST':
|
|
22
|
+
return await this.handleListAgents(options);
|
|
23
|
+
case 'GET':
|
|
24
|
+
return await this.handleGetAgent(resource, options);
|
|
25
|
+
case 'ENABLE':
|
|
26
|
+
return await this.handleEnableAgent(resource);
|
|
27
|
+
case 'DISABLE':
|
|
28
|
+
return await this.handleDisableAgent(resource);
|
|
29
|
+
default:
|
|
30
|
+
throw new Error(`Unknown command: ${verb} ${resource}`);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
async handleListAgents(options = {}) {
|
|
35
|
+
const definitions = getProviderDefinitions();
|
|
36
|
+
const prefs = await getProviderPreferences();
|
|
37
|
+
|
|
38
|
+
const agents = definitions.map(def => ({
|
|
39
|
+
id: def.id,
|
|
40
|
+
name: def.name,
|
|
41
|
+
enabled: prefs.enabled[def.id] !== false,
|
|
42
|
+
type: def.type,
|
|
43
|
+
status: 'Not installed',
|
|
44
|
+
lastChecked: 'Never'
|
|
45
|
+
}));
|
|
46
|
+
|
|
47
|
+
return { success: true, agents };
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
async handleGetAgent(agentId, options = {}) {
|
|
51
|
+
const definitions = getProviderDefinitions();
|
|
52
|
+
const prefs = await getProviderPreferences();
|
|
53
|
+
const agent = definitions.find(d => d.id === agentId);
|
|
54
|
+
|
|
55
|
+
if (!agent) {
|
|
56
|
+
return { success: false, error: `Agent '${agentId}' not found` };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
agent: {
|
|
62
|
+
...agent,
|
|
63
|
+
enabled: prefs.enabled[agentId] !== false
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
async handleEnableAgent(agentId) {
|
|
69
|
+
const definitions = getProviderDefinitions();
|
|
70
|
+
const prefs = await getProviderPreferences();
|
|
71
|
+
|
|
72
|
+
if (!definitions.find(d => d.id === agentId)) {
|
|
73
|
+
return { success: false, error: `Agent '${agentId}' not found` };
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const newEnabled = { ...prefs.enabled, [agentId]: true };
|
|
77
|
+
await saveProviderPreferences(prefs.order, newEnabled);
|
|
78
|
+
|
|
79
|
+
return { success: true, message: `Agent '${agentId}' enabled` };
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
async handleDisableAgent(agentId) {
|
|
83
|
+
const definitions = getProviderDefinitions();
|
|
84
|
+
const prefs = await getProviderPreferences();
|
|
85
|
+
|
|
86
|
+
if (!definitions.find(d => d.id === agentId)) {
|
|
87
|
+
return { success: false, error: `Agent '${agentId}' not found` };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const newEnabled = { ...prefs.enabled, [agentId]: false };
|
|
91
|
+
await saveProviderPreferences(prefs.order, newEnabled);
|
|
92
|
+
|
|
93
|
+
return { success: true, message: `Agent '${agentId}' disabled` };
|
|
94
|
+
}
|
|
95
|
+
};
|
|
32
96
|
}
|
|
33
97
|
|
|
34
98
|
/**
|
|
35
99
|
* Setup agent management commands
|
|
36
100
|
*/
|
|
37
101
|
function setupAgentCommands() {
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
.command('list agents')
|
|
41
|
-
.description('List all available agents')
|
|
42
|
-
.option('--format <format>', 'Output format (table, json, csv)')
|
|
43
|
-
.option('--include-disabled', 'Include disabled agents in list')
|
|
44
|
-
.option('--include-status', 'Include agent status information')
|
|
45
|
-
.option('--sort <field>', 'Sort by field (name, status, type)')
|
|
46
|
-
.option('--status <status>', 'Filter by agent status')
|
|
47
|
-
.action(async (options) => {
|
|
48
|
-
const { ListAgentsCommand } = require('../../src/commands/agents/list');
|
|
49
|
-
const listCommand = new ListAgentsCommand(options);
|
|
50
|
-
await listCommand.execute();
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
// Get agent details command
|
|
54
|
-
program
|
|
55
|
-
.command('get agents <agent-id>')
|
|
56
|
-
.description('Get detailed information about a specific agent')
|
|
57
|
-
.option('--include-status', 'Include agent status information')
|
|
58
|
-
.option('--include-logs', 'Include agent logs')
|
|
59
|
-
.action(async (agentId, options) => {
|
|
60
|
-
const { agentCommands, responseFormatter } = createAgentCommands();
|
|
61
|
-
|
|
62
|
-
try {
|
|
63
|
-
const result = await agentCommands.executeCommand('GET', agentId, options);
|
|
64
|
-
const formattedResponse = responseFormatter.format(result, 'cli', options);
|
|
65
|
-
|
|
66
|
-
if (options.format === 'json') {
|
|
67
|
-
console.log(JSON.stringify(formattedResponse.data || formattedResponse, null, 2));
|
|
68
|
-
} else {
|
|
69
|
-
console.log(JSON.stringify(formattedResponse.data || formattedResponse, null, 2));
|
|
70
|
-
}
|
|
71
|
-
} catch (error) {
|
|
72
|
-
console.error(`Error getting agent ${agentId}:`, error.message);
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
102
|
+
// Create agent commands once and reuse
|
|
103
|
+
const agentCommands = createAgentCommands();
|
|
76
104
|
|
|
77
105
|
// Enable agent command
|
|
78
106
|
program
|
|
79
107
|
.command('enable agents <agent-id>')
|
|
80
108
|
.description('Enable a specific agent')
|
|
81
109
|
.action(async (agentId) => {
|
|
82
|
-
const { agentCommands } = createAgentCommands();
|
|
83
|
-
|
|
84
110
|
try {
|
|
85
|
-
const result = await agentCommands.executeCommand('
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
console.error(
|
|
111
|
+
const result = await agentCommands.executeCommand('ENABLE', agentId);
|
|
112
|
+
if (result.success) {
|
|
113
|
+
console.log(chalk.green(result.message));
|
|
114
|
+
} else {
|
|
115
|
+
console.error(chalk.red(result.error));
|
|
116
|
+
process.exit(1);
|
|
90
117
|
}
|
|
91
118
|
} catch (error) {
|
|
92
119
|
console.error(`Error enabling agent ${agentId}:`, error.message);
|
|
@@ -99,14 +126,13 @@ function setupAgentCommands() {
|
|
|
99
126
|
.command('disable agents <agent-id>')
|
|
100
127
|
.description('Disable a specific agent')
|
|
101
128
|
.action(async (agentId) => {
|
|
102
|
-
const { agentCommands } = createAgentCommands();
|
|
103
|
-
|
|
104
129
|
try {
|
|
105
|
-
const result = await agentCommands.executeCommand('
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
console.error(
|
|
130
|
+
const result = await agentCommands.executeCommand('DISABLE', agentId);
|
|
131
|
+
if (result.success) {
|
|
132
|
+
console.log(chalk.green(result.message));
|
|
133
|
+
} else {
|
|
134
|
+
console.error(chalk.red(result.error));
|
|
135
|
+
process.exit(1);
|
|
110
136
|
}
|
|
111
137
|
} catch (error) {
|
|
112
138
|
console.error(`Error disabling agent ${agentId}:`, error.message);
|
|
@@ -114,197 +140,93 @@ function setupAgentCommands() {
|
|
|
114
140
|
}
|
|
115
141
|
});
|
|
116
142
|
|
|
117
|
-
//
|
|
143
|
+
// Add aliases for agent commands
|
|
118
144
|
program
|
|
119
|
-
.command('
|
|
120
|
-
.description('
|
|
121
|
-
.
|
|
122
|
-
.action(async (agentId, options) => {
|
|
123
|
-
const { agentCommands } = createAgentCommands();
|
|
124
|
-
|
|
125
|
-
try {
|
|
126
|
-
const result = await agentCommands.executeCommand('DELETE', agentId, { confirm: options.confirm });
|
|
127
|
-
console.log(`Agent ${agentId} removed successfully`);
|
|
128
|
-
|
|
129
|
-
if (!result.success) {
|
|
130
|
-
console.error('Error:', result.error);
|
|
131
|
-
}
|
|
132
|
-
} catch (error) {
|
|
133
|
-
console.error(`Error removing agent ${agentId}:`, error.message);
|
|
134
|
-
process.exit(1);
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// View agent logs command
|
|
139
|
-
program
|
|
140
|
-
.command('logs agents <agent-id>')
|
|
141
|
-
.description('View logs for a specific agent')
|
|
142
|
-
.option('--limit <number>', 'Limit number of log entries')
|
|
143
|
-
.action(async (agentId, options) => {
|
|
144
|
-
const { agentCommands } = createAgentCommands();
|
|
145
|
-
|
|
145
|
+
.command('en <agent-id>')
|
|
146
|
+
.description('Alias for enable agents')
|
|
147
|
+
.action(async (agentId) => {
|
|
146
148
|
try {
|
|
147
|
-
const result = await agentCommands.executeCommand('
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
console.log(`Logs for agent ${agentId}:`);
|
|
151
|
-
result.data.logs.forEach(log => {
|
|
152
|
-
console.log(`${log.timestamp} [${log.level.toUpperCase()}] ${log.message}`);
|
|
153
|
-
});
|
|
149
|
+
const result = await agentCommands.executeCommand('ENABLE', agentId);
|
|
150
|
+
if (result.success) {
|
|
151
|
+
console.log(chalk.green(result.message));
|
|
154
152
|
} else {
|
|
155
|
-
console.
|
|
153
|
+
console.error(chalk.red(result.error));
|
|
154
|
+
process.exit(1);
|
|
156
155
|
}
|
|
157
156
|
} catch (error) {
|
|
158
|
-
console.error(`Error
|
|
157
|
+
console.error(`Error enabling agent ${agentId}:`, error.message);
|
|
159
158
|
process.exit(1);
|
|
160
159
|
}
|
|
161
160
|
});
|
|
162
161
|
|
|
163
|
-
// Check agents command
|
|
164
162
|
program
|
|
165
|
-
.command('
|
|
166
|
-
.description('
|
|
167
|
-
.
|
|
168
|
-
.action(async (options) => {
|
|
169
|
-
const { checkAgents } = require('../../src/commands/agents-check');
|
|
170
|
-
await checkAgents(options);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Setup agent command aliases
|
|
176
|
-
*/
|
|
177
|
-
function setupAgentAliases() {
|
|
178
|
-
// List aliases
|
|
179
|
-
program
|
|
180
|
-
.command('la')
|
|
181
|
-
.description('Alias for "list agents"')
|
|
182
|
-
.action(async (options) => {
|
|
183
|
-
const { ListAgentsCommand } = require('../../src/commands/agents/list');
|
|
184
|
-
const listCommand = new ListAgentsCommand(options);
|
|
185
|
-
await listCommand.execute();
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
program
|
|
189
|
-
.command('li')
|
|
190
|
-
.description('Alias for "list agents"')
|
|
191
|
-
.action(async (options) => {
|
|
192
|
-
const { ListAgentsCommand } = require('../../src/commands/agents/list');
|
|
193
|
-
const listCommand = new ListAgentsCommand(options);
|
|
194
|
-
await listCommand.execute();
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
// Check aliases
|
|
198
|
-
program
|
|
199
|
-
.command('ch')
|
|
200
|
-
.description('Alias for "check agents"')
|
|
201
|
-
.action(async (options) => {
|
|
202
|
-
const { checkAgents } = require('../../src/commands/agents-check');
|
|
203
|
-
await checkAgents(options);
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
program
|
|
207
|
-
.command('ca')
|
|
208
|
-
.description('Alias for "check agents"')
|
|
209
|
-
.action(async (options) => {
|
|
210
|
-
const { checkAgents } = require('../../src/commands/agents-check');
|
|
211
|
-
await checkAgents(options);
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
program
|
|
215
|
-
.command('!/1')
|
|
216
|
-
.description('Check agents (shortcut for first agent)')
|
|
217
|
-
.action(async (options) => {
|
|
218
|
-
const { checkAgents } = require('../../src/commands/agents-check');
|
|
219
|
-
await checkAgents(options);
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
// Get alias
|
|
223
|
-
program
|
|
224
|
-
.command('ge <agent-id>')
|
|
225
|
-
.description('Alias for "get agents"')
|
|
226
|
-
.action(async (agentId, options) => {
|
|
227
|
-
const { agentCommands, responseFormatter } = createAgentCommands();
|
|
228
|
-
|
|
163
|
+
.command('di <agent-id>')
|
|
164
|
+
.description('Alias for disable agents')
|
|
165
|
+
.action(async (agentId) => {
|
|
229
166
|
try {
|
|
230
|
-
const result = await agentCommands.executeCommand('
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if (options.format === 'json') {
|
|
234
|
-
console.log(JSON.stringify(formattedResponse.data || formattedResponse, null, 2));
|
|
167
|
+
const result = await agentCommands.executeCommand('DISABLE', agentId);
|
|
168
|
+
if (result.success) {
|
|
169
|
+
console.log(chalk.green(result.message));
|
|
235
170
|
} else {
|
|
236
|
-
console.
|
|
171
|
+
console.error(chalk.red(result.error));
|
|
172
|
+
process.exit(1);
|
|
237
173
|
}
|
|
238
174
|
} catch (error) {
|
|
239
|
-
console.error(`Error
|
|
175
|
+
console.error(`Error disabling agent ${agentId}:`, error.message);
|
|
240
176
|
process.exit(1);
|
|
241
177
|
}
|
|
242
178
|
});
|
|
243
179
|
|
|
244
|
-
//
|
|
180
|
+
// Add agents subcommand structure
|
|
245
181
|
program
|
|
246
|
-
.command('
|
|
247
|
-
.description('
|
|
248
|
-
.action(async (agentId) => {
|
|
249
|
-
const { agentCommands } = createAgentCommands();
|
|
250
|
-
|
|
182
|
+
.command('agents <agent-id> <action>')
|
|
183
|
+
.description('Manage agent (enable/disable)')
|
|
184
|
+
.action(async (agentId, action) => {
|
|
251
185
|
try {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
if (
|
|
256
|
-
|
|
186
|
+
let result;
|
|
187
|
+
if (action === 'enable') {
|
|
188
|
+
result = await agentCommands.executeCommand('ENABLE', agentId);
|
|
189
|
+
} else if (action === 'disable') {
|
|
190
|
+
result = await agentCommands.executeCommand('DISABLE', agentId);
|
|
191
|
+
} else {
|
|
192
|
+
console.error(chalk.red(`Unknown action: ${action}. Use 'enable' or 'disable'`));
|
|
193
|
+
process.exit(1);
|
|
257
194
|
}
|
|
258
|
-
} catch (error) {
|
|
259
|
-
console.error(`Error enabling agent ${agentId}:`, error.message);
|
|
260
|
-
process.exit(1);
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
// Disable alias
|
|
265
|
-
program
|
|
266
|
-
.command('di <agent-id>')
|
|
267
|
-
.description('Alias for "disable agents"')
|
|
268
|
-
.action(async (agentId) => {
|
|
269
|
-
const { agentCommands } = createAgentCommands();
|
|
270
|
-
|
|
271
|
-
try {
|
|
272
|
-
const result = await agentCommands.executeCommand('PUT', agentId, { enabled: false });
|
|
273
|
-
console.log(`Agent ${agentId} disabled successfully`);
|
|
274
195
|
|
|
275
|
-
if (
|
|
276
|
-
console.
|
|
196
|
+
if (result.success) {
|
|
197
|
+
console.log(chalk.green(result.message));
|
|
198
|
+
} else {
|
|
199
|
+
console.error(chalk.red(result.error));
|
|
200
|
+
process.exit(1);
|
|
277
201
|
}
|
|
278
202
|
} catch (error) {
|
|
279
|
-
console.error(`Error
|
|
203
|
+
console.error(`Error ${action}ing agent ${agentId}:`, error.message);
|
|
280
204
|
process.exit(1);
|
|
281
205
|
}
|
|
282
206
|
});
|
|
283
207
|
|
|
284
|
-
//
|
|
208
|
+
// Add agents list command
|
|
285
209
|
program
|
|
286
|
-
.command('
|
|
287
|
-
.description('
|
|
288
|
-
.
|
|
289
|
-
.action(async (agentId, options) => {
|
|
290
|
-
const { agentCommands } = createAgentCommands();
|
|
291
|
-
|
|
210
|
+
.command('agents list')
|
|
211
|
+
.description('List all agents')
|
|
212
|
+
.action(async () => {
|
|
292
213
|
try {
|
|
293
|
-
const result = await agentCommands.executeCommand('
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
214
|
+
const result = await agentCommands.executeCommand('LIST', 'agents');
|
|
215
|
+
if (result.success && result.agents) {
|
|
216
|
+
console.log(chalk.blue('=== AGENTS ==='));
|
|
217
|
+
result.agents.forEach(agent => {
|
|
218
|
+
const status = agent.enabled ? '✓' : '✗';
|
|
219
|
+
console.log(`${status} ${agent.id.padEnd(12)} ${agent.name}`);
|
|
220
|
+
});
|
|
221
|
+
} else {
|
|
222
|
+
console.error(chalk.red('Failed to list agents'));
|
|
223
|
+
process.exit(1);
|
|
298
224
|
}
|
|
299
225
|
} catch (error) {
|
|
300
|
-
console.error(
|
|
226
|
+
console.error('Error listing agents:', error.message);
|
|
301
227
|
process.exit(1);
|
|
302
228
|
}
|
|
303
229
|
});
|
|
304
230
|
}
|
|
305
231
|
|
|
306
|
-
module.exports = {
|
|
307
|
-
setupAgentCommands,
|
|
308
|
-
setupAgentAliases,
|
|
309
|
-
createAgentCommands
|
|
310
|
-
};
|
|
232
|
+
module.exports = { setupAgentCommands, createAgentCommands };
|
|
@@ -111,6 +111,74 @@ function setupCommandAliases() {
|
|
|
111
111
|
|
|
112
112
|
await agentCommands.disableAgent(agentId);
|
|
113
113
|
});
|
|
114
|
+
|
|
115
|
+
// Spec enable alias
|
|
116
|
+
program
|
|
117
|
+
.command('se <spec-id>')
|
|
118
|
+
.description('Alias for "specs:enable"')
|
|
119
|
+
.action(async (specId) => {
|
|
120
|
+
const EnableSpecCommand = require('../../src/commands/specs/enable');
|
|
121
|
+
const enableCommand = new EnableSpecCommand();
|
|
122
|
+
const result = await enableCommand.execute([specId]);
|
|
123
|
+
|
|
124
|
+
if (result.success) {
|
|
125
|
+
console.log(`✅ ${result.message}`);
|
|
126
|
+
} else {
|
|
127
|
+
console.error(`❌ ${result.error}`);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Spec disable alias
|
|
133
|
+
program
|
|
134
|
+
.command('sd <spec-id>')
|
|
135
|
+
.description('Alias for "specs:disable"')
|
|
136
|
+
.action(async (specId) => {
|
|
137
|
+
const DisableSpecCommand = require('../../src/commands/specs/disable');
|
|
138
|
+
const disableCommand = new DisableSpecCommand();
|
|
139
|
+
const result = await disableCommand.execute([specId]);
|
|
140
|
+
|
|
141
|
+
if (result.success) {
|
|
142
|
+
console.log(`✅ ${result.message}`);
|
|
143
|
+
} else {
|
|
144
|
+
console.error(`❌ ${result.error}`);
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Requirement enable alias
|
|
150
|
+
program
|
|
151
|
+
.command('re <requirement-text...>')
|
|
152
|
+
.description('Alias for "requirements:enable"')
|
|
153
|
+
.action(async (requirementText) => {
|
|
154
|
+
const EnableRequirementCommand = require('../../src/commands/requirements/enable');
|
|
155
|
+
const enableCommand = new EnableRequirementCommand();
|
|
156
|
+
const result = await enableCommand.execute(requirementText);
|
|
157
|
+
|
|
158
|
+
if (result.success) {
|
|
159
|
+
console.log(`✅ ${result.message}`);
|
|
160
|
+
} else {
|
|
161
|
+
console.error(`❌ ${result.error}`);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Requirement disable alias
|
|
167
|
+
program
|
|
168
|
+
.command('rd <requirement-text...>')
|
|
169
|
+
.description('Alias for "requirements:disable"')
|
|
170
|
+
.action(async (requirementText) => {
|
|
171
|
+
const DisableRequirementCommand = require('../../src/commands/requirements/disable');
|
|
172
|
+
const disableCommand = new DisableRequirementCommand();
|
|
173
|
+
const result = await disableCommand.execute(requirementText);
|
|
174
|
+
|
|
175
|
+
if (result.success) {
|
|
176
|
+
console.log(`✅ ${result.message}`);
|
|
177
|
+
} else {
|
|
178
|
+
console.error(`❌ ${result.error}`);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
114
182
|
}
|
|
115
183
|
|
|
116
184
|
module.exports = {
|
package/bin/vibecodingmachine.js
CHANGED
|
@@ -21,7 +21,7 @@ const { promptWithDefaultsOnce } = require('../src/utils/prompt-helper');
|
|
|
21
21
|
// Import modular components
|
|
22
22
|
const { initializeEnvironment } = require('./init/environment-setup');
|
|
23
23
|
const { configureCli, setupBasicCommands, setupRequirementsCommands, setupFeatureAndIdeCommands, setupStatusCommands, setupAuthCommands, setupComputerCommands, setupSyncCommands } = require('./config/cli-config');
|
|
24
|
-
const { setupAgentCommands
|
|
24
|
+
const { setupAgentCommands } = require('./commands/agent-commands');
|
|
25
25
|
const { setupRuiCommands } = require('./commands/rui-commands');
|
|
26
26
|
const { checkForUpdates } = require('./update/update-checker');
|
|
27
27
|
const { setupInteractiveAuth, setupCommandAuth } = require('./auth/auth-compliance');
|
|
@@ -36,7 +36,6 @@ setupAuthCommands({ t });
|
|
|
36
36
|
setupComputerCommands({ t });
|
|
37
37
|
setupSyncCommands({ t });
|
|
38
38
|
setupAgentCommands({ t });
|
|
39
|
-
setupAgentAliases({ t });
|
|
40
39
|
setupRuiCommands({ t });
|
|
41
40
|
|
|
42
41
|
// Start interactive mode if no command provided (check BEFORE parsing)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibecodingmachine-cli",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.03.09-0850",
|
|
4
4
|
"description": "Command-line interface for Vibe Coding Machine - Autonomous development",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"react": "^19.2.0",
|
|
60
60
|
"screenshot-desktop": "^1.15.3",
|
|
61
61
|
"table": "^6.8.1",
|
|
62
|
-
"vibecodingmachine-core": "^2026.
|
|
62
|
+
"vibecodingmachine-core": "^2026.03.09-0850"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"eslint": "^8.57.0",
|