codevf 1.0.0 → 1.0.1
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/LICENSE +30 -21
- package/README.md +6 -1
- package/bin/codevf-mcp.js +11 -0
- package/dist/commands/fix.d.ts +5 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +170 -13
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +72 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp-tools.d.ts +17 -0
- package/dist/commands/mcp-tools.d.ts.map +1 -0
- package/dist/commands/mcp-tools.js +237 -0
- package/dist/commands/mcp-tools.js.map +1 -0
- package/dist/commands/setup.d.ts +8 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +250 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/welcome.d.ts +9 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +175 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/index.js +194 -149
- package/dist/index.js.map +1 -1
- package/dist/lib/api/client.d.ts +28 -0
- package/dist/lib/api/client.d.ts.map +1 -0
- package/dist/lib/api/client.js +66 -0
- package/dist/lib/api/client.js.map +1 -0
- package/dist/lib/api/tasks.d.ts +36 -0
- package/dist/lib/api/tasks.d.ts.map +1 -0
- package/dist/lib/api/tasks.js +62 -0
- package/dist/lib/api/tasks.js.map +1 -0
- package/dist/lib/api/websocket.d.ts +50 -0
- package/dist/lib/api/websocket.d.ts.map +1 -0
- package/dist/lib/api/websocket.js +153 -0
- package/dist/lib/api/websocket.js.map +1 -0
- package/dist/lib/auth/oauth-flow.d.ts +37 -0
- package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
- package/dist/lib/auth/oauth-flow.js +119 -0
- package/dist/lib/auth/oauth-flow.js.map +1 -0
- package/dist/lib/auth/token-manager.d.ts +26 -0
- package/dist/lib/auth/token-manager.d.ts.map +1 -0
- package/dist/lib/auth/token-manager.js +87 -0
- package/dist/lib/auth/token-manager.js.map +1 -0
- package/dist/lib/config/manager.d.ts +50 -0
- package/dist/lib/config/manager.d.ts.map +1 -0
- package/dist/lib/config/manager.js +84 -0
- package/dist/lib/config/manager.js.map +1 -0
- package/dist/lib/utils/errors.d.ts +28 -0
- package/dist/lib/utils/errors.d.ts.map +1 -0
- package/dist/lib/utils/errors.js +44 -0
- package/dist/lib/utils/errors.js.map +1 -0
- package/dist/lib/utils/logger.d.ts +20 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger.js +40 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/mcp/index.d.ts +7 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +158 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools/chat.d.ts +30 -0
- package/dist/mcp/tools/chat.d.ts.map +1 -0
- package/dist/mcp/tools/chat.js +82 -0
- package/dist/mcp/tools/chat.js.map +1 -0
- package/dist/mcp/tools/instant.d.ts +36 -0
- package/dist/mcp/tools/instant.d.ts.map +1 -0
- package/dist/mcp/tools/instant.js +100 -0
- package/dist/mcp/tools/instant.js.map +1 -0
- package/dist/modules/aiAgent.d.ts +75 -0
- package/dist/modules/aiAgent.d.ts.map +1 -0
- package/dist/modules/aiAgent.js +707 -0
- package/dist/modules/aiAgent.js.map +1 -0
- package/dist/modules/api.d.ts +7 -0
- package/dist/modules/api.d.ts.map +1 -1
- package/dist/modules/api.js +13 -4
- package/dist/modules/api.js.map +1 -1
- package/dist/modules/commandHandler.d.ts +40 -0
- package/dist/modules/commandHandler.d.ts.map +1 -0
- package/dist/modules/commandHandler.js +345 -0
- package/dist/modules/commandHandler.js.map +1 -0
- package/dist/modules/config.d.ts +2 -0
- package/dist/modules/config.d.ts.map +1 -1
- package/dist/modules/config.js +9 -0
- package/dist/modules/config.js.map +1 -1
- package/dist/modules/constants.d.ts +83 -0
- package/dist/modules/constants.d.ts.map +1 -0
- package/dist/modules/constants.js +75 -0
- package/dist/modules/constants.js.map +1 -0
- package/dist/modules/permissions.d.ts +14 -0
- package/dist/modules/permissions.d.ts.map +1 -1
- package/dist/modules/permissions.js +94 -0
- package/dist/modules/permissions.js.map +1 -1
- package/dist/modules/toolRegistry.d.ts +50 -0
- package/dist/modules/toolRegistry.d.ts.map +1 -0
- package/dist/modules/toolRegistry.js +114 -0
- package/dist/modules/toolRegistry.js.map +1 -0
- package/dist/modules/tunnel.d.ts +33 -0
- package/dist/modules/tunnel.d.ts.map +1 -0
- package/dist/modules/tunnel.js +79 -0
- package/dist/modules/tunnel.js.map +1 -0
- package/dist/modules/vibeHelper.d.ts +16 -0
- package/dist/modules/vibeHelper.d.ts.map +1 -0
- package/dist/modules/vibeHelper.js +38 -0
- package/dist/modules/vibeHelper.js.map +1 -0
- package/dist/modules/websocket.d.ts +9 -0
- package/dist/modules/websocket.d.ts.map +1 -1
- package/dist/modules/websocket.js +70 -0
- package/dist/modules/websocket.js.map +1 -1
- package/dist/tools/consultEngineer.d.ts +13 -0
- package/dist/tools/consultEngineer.d.ts.map +1 -0
- package/dist/tools/consultEngineer.js +161 -0
- package/dist/tools/consultEngineer.js.map +1 -0
- package/dist/tools/realtimeChat.d.ts +9 -0
- package/dist/tools/realtimeChat.d.ts.map +1 -0
- package/dist/tools/realtimeChat.js +101 -0
- package/dist/tools/realtimeChat.js.map +1 -0
- package/dist/types/index.d.ts +183 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/ui/InteractiveApp.d.ts +13 -0
- package/dist/ui/InteractiveApp.d.ts.map +1 -0
- package/dist/ui/InteractiveApp.js +84 -0
- package/dist/ui/InteractiveApp.js.map +1 -0
- package/dist/ui/InteractivePrompt.d.ts +53 -0
- package/dist/ui/InteractivePrompt.d.ts.map +1 -0
- package/dist/ui/InteractivePrompt.js +422 -0
- package/dist/ui/InteractivePrompt.js.map +1 -0
- package/dist/ui/LiveSession.d.ts +2 -0
- package/dist/ui/LiveSession.d.ts.map +1 -1
- package/dist/ui/LiveSession.js +461 -180
- package/dist/ui/LiveSession.js.map +1 -1
- package/dist/ui/PromptInput.d.ts +14 -0
- package/dist/ui/PromptInput.d.ts.map +1 -0
- package/dist/ui/PromptInput.js +206 -0
- package/dist/ui/PromptInput.js.map +1 -0
- package/dist/ui/SessionUI.d.ts +40 -0
- package/dist/ui/SessionUI.d.ts.map +1 -0
- package/dist/ui/SessionUI.js +227 -0
- package/dist/ui/SessionUI.js.map +1 -0
- package/dist/ui/input/Command.d.ts +22 -0
- package/dist/ui/input/Command.d.ts.map +1 -0
- package/dist/ui/input/Command.js +30 -0
- package/dist/ui/input/Command.js.map +1 -0
- package/dist/ui/input/CustomInput.d.ts +15 -0
- package/dist/ui/input/CustomInput.d.ts.map +1 -0
- package/dist/ui/input/CustomInput.js +182 -0
- package/dist/ui/input/CustomInput.js.map +1 -0
- package/dist/ui/input/handlers/handleCursor.d.ts +22 -0
- package/dist/ui/input/handlers/handleCursor.d.ts.map +1 -0
- package/dist/ui/input/handlers/handleCursor.js +53 -0
- package/dist/ui/input/handlers/handleCursor.js.map +1 -0
- package/dist/ui/input/handlers/handleEdit.d.ts +18 -0
- package/dist/ui/input/handlers/handleEdit.d.ts.map +1 -0
- package/dist/ui/input/handlers/handleEdit.js +55 -0
- package/dist/ui/input/handlers/handleEdit.js.map +1 -0
- package/dist/ui/input/handlers/handleHistory.d.ts +18 -0
- package/dist/ui/input/handlers/handleHistory.d.ts.map +1 -0
- package/dist/ui/input/handlers/handleHistory.js +85 -0
- package/dist/ui/input/handlers/handleHistory.js.map +1 -0
- package/dist/ui/input/handlers/handlePaste.d.ts +19 -0
- package/dist/ui/input/handlers/handlePaste.d.ts.map +1 -0
- package/dist/ui/input/handlers/handlePaste.js +49 -0
- package/dist/ui/input/handlers/handlePaste.js.map +1 -0
- package/dist/ui/input/handlers/handleSubmit.d.ts +18 -0
- package/dist/ui/input/handlers/handleSubmit.d.ts.map +1 -0
- package/dist/ui/input/handlers/handleSubmit.js +39 -0
- package/dist/ui/input/handlers/handleSubmit.js.map +1 -0
- package/dist/ui/input/helpers.d.ts +4 -0
- package/dist/ui/input/helpers.d.ts.map +1 -0
- package/dist/ui/input/helpers.js +13 -0
- package/dist/ui/input/helpers.js.map +1 -0
- package/dist/ui/input/keyMatchers.d.ts +14 -0
- package/dist/ui/input/keyMatchers.d.ts.map +1 -0
- package/dist/ui/input/keyMatchers.js +49 -0
- package/dist/ui/input/keyMatchers.js.map +1 -0
- package/dist/ui/input/types.d.ts +33 -0
- package/dist/ui/input/types.d.ts.map +1 -0
- package/dist/ui/input/types.js +2 -0
- package/dist/ui/input/types.js.map +1 -0
- package/dist/ui/promptWithModes.d.ts +12 -0
- package/dist/ui/promptWithModes.d.ts.map +1 -0
- package/dist/ui/promptWithModes.js +24 -0
- package/dist/ui/promptWithModes.js.map +1 -0
- package/dist/ui/renderPrompt.d.ts +12 -0
- package/dist/ui/renderPrompt.d.ts.map +1 -0
- package/dist/ui/renderPrompt.js +14 -0
- package/dist/ui/renderPrompt.js.map +1 -0
- package/dist/ui/simplePrompt.d.ts +7 -0
- package/dist/ui/simplePrompt.d.ts.map +1 -0
- package/dist/ui/simplePrompt.js +38 -0
- package/dist/ui/simplePrompt.js.map +1 -0
- package/dist/ui/spinner.d.ts +7 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +13 -0
- package/dist/ui/spinner.js.map +1 -0
- package/package.json +36 -25
- package/ARCHITECTURE.md +0 -285
- package/BUILD_SUMMARY.md +0 -340
- package/QUICKSTART.md +0 -180
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool commands for interactive mode
|
|
3
|
+
* Provides /cvf, /cvf-instant and /cvf-chat slash commands
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import prompts from 'prompts';
|
|
7
|
+
import { ConfigManager } from '../lib/config/manager.js';
|
|
8
|
+
import { TokenManager } from '../lib/auth/token-manager.js';
|
|
9
|
+
import { ApiClient } from '../lib/api/client.js';
|
|
10
|
+
import { TasksApi } from '../lib/api/tasks.js';
|
|
11
|
+
import { WebSocketClient } from '../lib/api/websocket.js';
|
|
12
|
+
import { logger } from '../lib/utils/logger.js';
|
|
13
|
+
/**
|
|
14
|
+
* Check if MCP is configured
|
|
15
|
+
*/
|
|
16
|
+
function checkMcpConfig() {
|
|
17
|
+
const configManager = new ConfigManager('mcp-config.json');
|
|
18
|
+
if (!configManager.exists()) {
|
|
19
|
+
console.log(chalk.yellow(' [!] MCP not configured'));
|
|
20
|
+
console.log(chalk.dim(' Run: ') + chalk.white('codevf setup') + chalk.dim(' to configure'));
|
|
21
|
+
return { configured: false };
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const config = configManager.load();
|
|
25
|
+
return { configured: true, config, configManager };
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.log(chalk.red(' [✗] Failed to load MCP config'));
|
|
29
|
+
return { configured: false };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Handle /cvf-instant command
|
|
34
|
+
*/
|
|
35
|
+
export async function handleCvfInstant(message) {
|
|
36
|
+
// Check MCP configuration
|
|
37
|
+
const { configured, config, configManager } = checkMcpConfig();
|
|
38
|
+
if (!configured || !config || !configManager) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Get message if not provided
|
|
42
|
+
let finalMessage = message;
|
|
43
|
+
if (!finalMessage) {
|
|
44
|
+
const response = await prompts({
|
|
45
|
+
type: 'text',
|
|
46
|
+
name: 'message',
|
|
47
|
+
message: chalk.cyan(' Question for engineer:'),
|
|
48
|
+
});
|
|
49
|
+
if (!response.message) {
|
|
50
|
+
console.log(chalk.dim(' Cancelled'));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
finalMessage = response.message;
|
|
54
|
+
}
|
|
55
|
+
// Get max credits
|
|
56
|
+
const { maxCredits } = await prompts({
|
|
57
|
+
type: 'number',
|
|
58
|
+
name: 'maxCredits',
|
|
59
|
+
message: chalk.cyan(' Max credits (1-10):'),
|
|
60
|
+
initial: 10,
|
|
61
|
+
min: 1,
|
|
62
|
+
max: 10,
|
|
63
|
+
});
|
|
64
|
+
if (!maxCredits) {
|
|
65
|
+
console.log(chalk.dim(' Cancelled'));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
// Initialize components
|
|
70
|
+
const tokenManager = new TokenManager(configManager);
|
|
71
|
+
const apiClient = new ApiClient(config.baseUrl, tokenManager);
|
|
72
|
+
const defaultProjectId = config.defaults?.projectId || '1';
|
|
73
|
+
const tasksApi = new TasksApi(apiClient, config.baseUrl, defaultProjectId);
|
|
74
|
+
console.log(chalk.cyan(' [→] Creating instant query...'));
|
|
75
|
+
// Create task
|
|
76
|
+
const task = await tasksApi.create({
|
|
77
|
+
message: finalMessage,
|
|
78
|
+
taskMode: 'realtime_answer',
|
|
79
|
+
maxCredits,
|
|
80
|
+
});
|
|
81
|
+
if (task.warning) {
|
|
82
|
+
console.log(chalk.yellow(` [!] ${task.warning}`));
|
|
83
|
+
}
|
|
84
|
+
console.log(chalk.cyan(` [→] Connecting to engineer (Task ${task.taskId})...`));
|
|
85
|
+
// Connect WebSocket
|
|
86
|
+
const token = await tokenManager.getValidToken();
|
|
87
|
+
const wsProtocol = config.baseUrl.startsWith('https://') ? 'wss://' : 'ws://';
|
|
88
|
+
const host = config.baseUrl.replace(/^https?:\/\//, '');
|
|
89
|
+
const wsUrl = `${wsProtocol}${host}/ws?taskId=${task.taskId}&userType=customer&token=${token}`;
|
|
90
|
+
const ws = new WebSocketClient(wsUrl);
|
|
91
|
+
await ws.connect();
|
|
92
|
+
console.log(chalk.cyan(' [→] Waiting for engineer response...'));
|
|
93
|
+
// Wait for response (5 min timeout)
|
|
94
|
+
const response = await ws.waitForResponse(300000);
|
|
95
|
+
// Disconnect
|
|
96
|
+
ws.disconnect();
|
|
97
|
+
// Display response
|
|
98
|
+
console.log();
|
|
99
|
+
console.log(chalk.bold.green(' ✓ Engineer Response:'));
|
|
100
|
+
console.log();
|
|
101
|
+
console.log(chalk.white(' ' + response.text.split('\n').join('\n ')));
|
|
102
|
+
console.log();
|
|
103
|
+
console.log(chalk.dim(' ───────────────'));
|
|
104
|
+
console.log(chalk.dim(` Credits used: ${response.creditsUsed}`));
|
|
105
|
+
console.log(chalk.dim(` Session time: ${response.duration}`));
|
|
106
|
+
console.log();
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.log(chalk.red(` [✗] Error: ${error.message || error}`));
|
|
110
|
+
logger.error('cvf-instant failed', error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Handle /cvf-chat command
|
|
115
|
+
*/
|
|
116
|
+
export async function handleCvfChat(message) {
|
|
117
|
+
// Check MCP configuration
|
|
118
|
+
const { configured, config, configManager } = checkMcpConfig();
|
|
119
|
+
if (!configured || !config || !configManager) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// Get message if not provided
|
|
123
|
+
let finalMessage = message;
|
|
124
|
+
if (!finalMessage) {
|
|
125
|
+
const response = await prompts({
|
|
126
|
+
type: 'text',
|
|
127
|
+
name: 'message',
|
|
128
|
+
message: chalk.cyan(' Problem description:'),
|
|
129
|
+
});
|
|
130
|
+
if (!response.message) {
|
|
131
|
+
console.log(chalk.dim(' Cancelled'));
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
finalMessage = response.message;
|
|
135
|
+
}
|
|
136
|
+
// Get max credits
|
|
137
|
+
const { maxCredits } = await prompts({
|
|
138
|
+
type: 'number',
|
|
139
|
+
name: 'maxCredits',
|
|
140
|
+
message: chalk.cyan(' Max credits (4-1920):'),
|
|
141
|
+
initial: 240,
|
|
142
|
+
min: 4,
|
|
143
|
+
max: 1920,
|
|
144
|
+
});
|
|
145
|
+
if (!maxCredits) {
|
|
146
|
+
console.log(chalk.dim(' Cancelled'));
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
// Initialize components
|
|
151
|
+
const tokenManager = new TokenManager(configManager);
|
|
152
|
+
const apiClient = new ApiClient(config.baseUrl, tokenManager);
|
|
153
|
+
const defaultProjectId = config.defaults?.projectId || '1';
|
|
154
|
+
const tasksApi = new TasksApi(apiClient, config.baseUrl, defaultProjectId);
|
|
155
|
+
console.log(chalk.cyan(' [→] Starting chat session...'));
|
|
156
|
+
// Create task
|
|
157
|
+
const task = await tasksApi.create({
|
|
158
|
+
message: finalMessage,
|
|
159
|
+
taskMode: 'realtime_chat',
|
|
160
|
+
maxCredits,
|
|
161
|
+
});
|
|
162
|
+
if (task.warning) {
|
|
163
|
+
console.log(chalk.yellow(` [!] ${task.warning}`));
|
|
164
|
+
}
|
|
165
|
+
// Display session info
|
|
166
|
+
const sessionUrl = `${config.baseUrl}/session/${task.actionId}`;
|
|
167
|
+
const estimatedMinutes = Math.floor(maxCredits / 2);
|
|
168
|
+
console.log();
|
|
169
|
+
console.log(chalk.bold.green(' ✓ Chat session started!'));
|
|
170
|
+
console.log();
|
|
171
|
+
console.log(chalk.white(' Session URL: ') + chalk.cyan.underline(sessionUrl));
|
|
172
|
+
console.log();
|
|
173
|
+
console.log(chalk.dim(' ───────────────'));
|
|
174
|
+
console.log(chalk.dim(` Max credits: ${maxCredits}`));
|
|
175
|
+
console.log(chalk.dim(` Rate: 2 credits/minute`));
|
|
176
|
+
console.log(chalk.dim(` Estimated duration: ~${estimatedMinutes} minutes`));
|
|
177
|
+
console.log(chalk.dim(` Credits remaining: ${task.creditsRemaining}`));
|
|
178
|
+
console.log();
|
|
179
|
+
console.log(chalk.white(' Open the URL above to monitor the conversation.'));
|
|
180
|
+
console.log();
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
console.log(chalk.red(` [✗] Error: ${error.message || error}`));
|
|
184
|
+
logger.error('cvf-chat failed', error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Handle /cvf command - interactive menu
|
|
189
|
+
*/
|
|
190
|
+
export async function handleCvf(message) {
|
|
191
|
+
// Check MCP configuration
|
|
192
|
+
const { configured } = checkMcpConfig();
|
|
193
|
+
if (!configured) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
// If message provided, use instant by default
|
|
197
|
+
if (message) {
|
|
198
|
+
await handleCvfInstant(message);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
// Show menu
|
|
202
|
+
console.log();
|
|
203
|
+
console.log(chalk.bold.cyan(' 🤝 CodeVF Engineer Tools'));
|
|
204
|
+
console.log();
|
|
205
|
+
const { choice } = await prompts({
|
|
206
|
+
type: 'select',
|
|
207
|
+
name: 'choice',
|
|
208
|
+
message: 'Choose tool:',
|
|
209
|
+
choices: [
|
|
210
|
+
{
|
|
211
|
+
title: chalk.cyan('⚡ Instant') + chalk.dim(' - Quick validation (1-10 credits, ~2 min)'),
|
|
212
|
+
value: 'instant',
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
title: chalk.blue('💬 Chat') + chalk.dim(' - Extended session (4-1920 credits, up to 16 hours)'),
|
|
216
|
+
value: 'chat',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
title: chalk.dim('Cancel'),
|
|
220
|
+
value: 'cancel',
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
initial: 0,
|
|
224
|
+
});
|
|
225
|
+
if (!choice || choice === 'cancel') {
|
|
226
|
+
console.log(chalk.dim(' Cancelled'));
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
console.log();
|
|
230
|
+
if (choice === 'instant') {
|
|
231
|
+
await handleCvfInstant();
|
|
232
|
+
}
|
|
233
|
+
else if (choice === 'chat') {
|
|
234
|
+
await handleCvfChat();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=mcp-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/commands/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAE3D,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7F,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IACrD,0BAA0B;IAC1B,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/D,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,IAAI,YAAY,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,kBAAkB;IAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC;QACnC,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAC5C,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,EAAE;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,GAAG,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAE3D,cAAc;QACd,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACjC,OAAO,EAAE,YAAa;YACtB,QAAQ,EAAE,iBAAiB;YAC3B,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;QAEjF,oBAAoB;QACpB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,UAAU,GAAG,IAAI,cAAc,IAAI,CAAC,MAAM,4BAA4B,KAAK,EAAE,CAAC;QAE/F,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;QAEnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAElE,oCAAoC;QACpC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAElD,aAAa;QACb,EAAE,CAAC,UAAU,EAAE,CAAC;QAEhB,mBAAmB;QACnB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAgB;IAClD,0BAA0B;IAC1B,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/D,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,IAAI,YAAY,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,kBAAkB;IAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC;QACnC,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAC9C,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,GAAG,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAE1D,cAAc;QACd,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACjC,OAAO,EAAE,YAAa;YACtB,QAAQ,EAAE,eAAe;YACzB,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,OAAO,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAEpD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,gBAAgB,UAAU,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC9C,0BAA0B;IAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,YAAY;IACZ,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC;gBACxF,KAAK,EAAE,SAAS;aACjB;YACD;gBACE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC;gBAChG,KAAK,EAAE,MAAM;aACd;YACD;gBACE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC1B,KAAK,EAAE,QAAQ;aAChB;SACF;QACD,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0LH;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA2FlD"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup command for CodeVF MCP Server configuration
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import fs from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import os from 'os';
|
|
10
|
+
import { ConfigManager } from '../lib/config/manager.js';
|
|
11
|
+
import { OAuthFlow } from '../lib/auth/oauth-flow.js';
|
|
12
|
+
/**
|
|
13
|
+
* Get Claude Code config path based on platform
|
|
14
|
+
*/
|
|
15
|
+
function getClaudeCodeConfigPath() {
|
|
16
|
+
const platform = os.platform();
|
|
17
|
+
const homeDir = os.homedir();
|
|
18
|
+
if (platform === 'darwin' || platform === 'linux') {
|
|
19
|
+
return path.join(homeDir, '.claude.json');
|
|
20
|
+
}
|
|
21
|
+
else if (platform === 'win32') {
|
|
22
|
+
return path.join(homeDir, '.claude.json');
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create /cvf slash command for Claude Code
|
|
28
|
+
*/
|
|
29
|
+
function createCvfSlashCommand() {
|
|
30
|
+
try {
|
|
31
|
+
const homeDir = os.homedir();
|
|
32
|
+
const commandsDir = path.join(homeDir, '.claude', 'commands');
|
|
33
|
+
const cvfCommandPath = path.join(commandsDir, 'cvf.md');
|
|
34
|
+
// Create commands directory if it doesn't exist
|
|
35
|
+
if (!fs.existsSync(commandsDir)) {
|
|
36
|
+
fs.mkdirSync(commandsDir, { recursive: true, mode: 0o755 });
|
|
37
|
+
}
|
|
38
|
+
// Check if cvf.md already exists
|
|
39
|
+
if (fs.existsSync(cvfCommandPath)) {
|
|
40
|
+
console.log(chalk.green('✅ /cvf slash command already exists'));
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
// Create the slash command file
|
|
44
|
+
const commandContent = `---
|
|
45
|
+
description: Ask a CodeVF engineer for help with code validation, debugging, or technical questions
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
# CodeVF Engineer Assistance
|
|
49
|
+
|
|
50
|
+
Please help me with the following question or task by consulting a CodeVF engineer using the appropriate MCP tool:
|
|
51
|
+
|
|
52
|
+
**My request:**
|
|
53
|
+
{{PROMPT}}
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Instructions for Claude:**
|
|
58
|
+
|
|
59
|
+
1. **Analyze the request** to determine which CodeVF tool is most appropriate:
|
|
60
|
+
- Use \`codevf-instant\` for:
|
|
61
|
+
- Quick validation questions (1-10 credits, ~2 min response)
|
|
62
|
+
- "Does this fix work?"
|
|
63
|
+
- "Is this approach correct?"
|
|
64
|
+
- "Can you identify the error?"
|
|
65
|
+
- Simple technical questions
|
|
66
|
+
|
|
67
|
+
- Use \`codevf-chat\` for:
|
|
68
|
+
- Complex debugging requiring back-and-forth (4-1920 credits, 2 credits/min)
|
|
69
|
+
- Multi-step troubleshooting
|
|
70
|
+
- Architecture discussions
|
|
71
|
+
- Extended collaboration
|
|
72
|
+
|
|
73
|
+
2. **Use the appropriate tool:**
|
|
74
|
+
- For instant queries: Call \`codevf-instant\` with the message and appropriate maxCredits (1-10)
|
|
75
|
+
- For extended sessions: Call \`codevf-chat\` with the message and appropriate maxCredits (suggest 240 for ~2 hours)
|
|
76
|
+
|
|
77
|
+
3. **Present the response:**
|
|
78
|
+
- For instant queries: Share the engineer's response directly
|
|
79
|
+
- For chat sessions: Provide the session URL so the user can monitor the conversation
|
|
80
|
+
|
|
81
|
+
**Credit Guidelines:**
|
|
82
|
+
- Instant validation: 1-10 credits (typically 3-5 credits per question)
|
|
83
|
+
- Extended chat: 2 credits per minute (240 credits = 2 hours)
|
|
84
|
+
|
|
85
|
+
**Example Usage:**
|
|
86
|
+
- \`/cvf Does this authentication fix prevent the timing attack?\` → Use codevf-instant
|
|
87
|
+
- \`/cvf Complex race condition in WebSocket reconnection needs debugging\` → Use codevf-chat
|
|
88
|
+
`;
|
|
89
|
+
fs.writeFileSync(cvfCommandPath, commandContent, { mode: 0o644 });
|
|
90
|
+
console.log(chalk.green('✅ Created /cvf slash command for Claude Code'));
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.log(chalk.yellow('⚠️ Could not create /cvf slash command:'), error.message);
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Auto-configure Claude Code with MCP server
|
|
100
|
+
*/
|
|
101
|
+
async function autoConfigureClaudeCode() {
|
|
102
|
+
console.log(chalk.bold('\n📋 Claude Code Configuration\n'));
|
|
103
|
+
const configPath = getClaudeCodeConfigPath();
|
|
104
|
+
if (!configPath) {
|
|
105
|
+
console.log(chalk.yellow('⚠️ Could not detect Claude Code config path'));
|
|
106
|
+
console.log(chalk.dim(' Please configure manually'));
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
// Ask user if they want auto-config
|
|
110
|
+
const { shouldConfigure } = await prompts({
|
|
111
|
+
type: 'confirm',
|
|
112
|
+
name: 'shouldConfigure',
|
|
113
|
+
message: 'Configure Claude Code to use CodeVF MCP server?',
|
|
114
|
+
initial: true,
|
|
115
|
+
});
|
|
116
|
+
if (!shouldConfigure) {
|
|
117
|
+
console.log(chalk.dim('\n💡 To configure manually, add to ~/.claude.json:'));
|
|
118
|
+
console.log(chalk.dim(' {'));
|
|
119
|
+
console.log(chalk.dim(' "mcpServers": {'));
|
|
120
|
+
console.log(chalk.dim(' "codevf": {'));
|
|
121
|
+
console.log(chalk.dim(' "command": "node",'));
|
|
122
|
+
console.log(chalk.dim(' "args": ["<path>/dist/mcp/index.js"]'));
|
|
123
|
+
console.log(chalk.dim(' }'));
|
|
124
|
+
console.log(chalk.dim(' }'));
|
|
125
|
+
console.log(chalk.dim(' }'));
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
// Backup existing config
|
|
130
|
+
if (fs.existsSync(configPath)) {
|
|
131
|
+
const backupPath = `${configPath}.backup`;
|
|
132
|
+
console.log(chalk.dim('\n📋 Backing up existing config...'));
|
|
133
|
+
fs.copyFileSync(configPath, backupPath);
|
|
134
|
+
console.log(chalk.dim(` Backup: ${backupPath}`));
|
|
135
|
+
}
|
|
136
|
+
// Read or create config
|
|
137
|
+
let config = {};
|
|
138
|
+
if (fs.existsSync(configPath)) {
|
|
139
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
140
|
+
config = JSON.parse(content);
|
|
141
|
+
}
|
|
142
|
+
// Get the installed codevf path
|
|
143
|
+
const codevfPath = process.argv[1]; // Path to codevf binary
|
|
144
|
+
const packageDir = path.dirname(path.dirname(codevfPath)); // Go up from dist/index.js
|
|
145
|
+
const mcpServerPath = path.join(packageDir, 'dist', 'mcp', 'index.js');
|
|
146
|
+
// Add or update codevf server
|
|
147
|
+
if (!config.mcpServers) {
|
|
148
|
+
config.mcpServers = {};
|
|
149
|
+
}
|
|
150
|
+
if (config.mcpServers.codevf) {
|
|
151
|
+
console.log(chalk.green('✅ CodeVF MCP server already configured!'));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
config.mcpServers.codevf = {
|
|
155
|
+
command: 'node',
|
|
156
|
+
args: [mcpServerPath],
|
|
157
|
+
};
|
|
158
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
159
|
+
console.log(chalk.green('✅ Claude Code configured successfully!'));
|
|
160
|
+
}
|
|
161
|
+
// Create /cvf slash command
|
|
162
|
+
createCvfSlashCommand();
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.error(chalk.red('\n❌ Auto-config failed:'), error.message);
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Setup command - configures MCP server for Claude Code
|
|
172
|
+
*/
|
|
173
|
+
export async function setupCommand() {
|
|
174
|
+
console.log(chalk.bold.blue('\n╔═══════════════════════════════════════╗'));
|
|
175
|
+
console.log(chalk.bold.blue('║ CodeVF MCP Server Setup ║'));
|
|
176
|
+
console.log(chalk.bold.blue('╚═══════════════════════════════════════╝\n'));
|
|
177
|
+
const mcpConfigManager = new ConfigManager('mcp-config.json');
|
|
178
|
+
// Check if already configured and reuse base URL if present
|
|
179
|
+
let baseUrl = process.env.CODEVF_API_URL || 'https://app.codevf.com';
|
|
180
|
+
if (mcpConfigManager.exists()) {
|
|
181
|
+
const existingConfig = mcpConfigManager.load();
|
|
182
|
+
console.log(chalk.yellow('⚠️ MCP configuration already exists'));
|
|
183
|
+
console.log(chalk.dim(` User ID: ${existingConfig.auth?.userId || 'unknown'}`));
|
|
184
|
+
console.log(chalk.dim(` Base URL: ${existingConfig.baseUrl}\n`));
|
|
185
|
+
const { reconfigure } = await prompts({
|
|
186
|
+
type: 'confirm',
|
|
187
|
+
name: 'reconfigure',
|
|
188
|
+
message: 'Reconfigure authentication?',
|
|
189
|
+
initial: false,
|
|
190
|
+
});
|
|
191
|
+
if (!reconfigure) {
|
|
192
|
+
// Just update Claude Code config
|
|
193
|
+
await autoConfigureClaudeCode();
|
|
194
|
+
console.log(chalk.green('\n🎉 Setup complete!\n'));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// Reuse existing base URL when reconfiguring (unless env override)
|
|
198
|
+
if (!process.env.CODEVF_API_URL && existingConfig.baseUrl) {
|
|
199
|
+
baseUrl = existingConfig.baseUrl;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
console.log(chalk.dim(`Using CodeVF at: ${baseUrl}\n`));
|
|
203
|
+
const spinner = ora('Initializing authentication...').start();
|
|
204
|
+
try {
|
|
205
|
+
// Run OAuth flow with MCP type
|
|
206
|
+
spinner.text = 'Opening browser for authentication...';
|
|
207
|
+
const oauthFlow = new OAuthFlow(baseUrl, 'mcp');
|
|
208
|
+
const authResult = await oauthFlow.authenticate();
|
|
209
|
+
spinner.succeed('Authentication successful!');
|
|
210
|
+
// Prompt for default project ID
|
|
211
|
+
const { projectId } = await prompts({
|
|
212
|
+
type: 'text',
|
|
213
|
+
name: 'projectId',
|
|
214
|
+
message: 'Default project ID (optional):',
|
|
215
|
+
initial: '1',
|
|
216
|
+
});
|
|
217
|
+
// Save MCP configuration
|
|
218
|
+
mcpConfigManager.save({
|
|
219
|
+
baseUrl,
|
|
220
|
+
auth: {
|
|
221
|
+
accessToken: authResult.accessToken,
|
|
222
|
+
refreshToken: authResult.refreshToken,
|
|
223
|
+
expiresAt: authResult.expiresAt,
|
|
224
|
+
userId: authResult.userId,
|
|
225
|
+
},
|
|
226
|
+
defaults: {
|
|
227
|
+
maxCredits: 240,
|
|
228
|
+
projectId: projectId || undefined,
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
console.log(chalk.green('\n✅ Authentication complete!'));
|
|
232
|
+
console.log(chalk.dim('Configuration saved to:'), mcpConfigManager.getPath());
|
|
233
|
+
// Configure Claude Code
|
|
234
|
+
const configured = await autoConfigureClaudeCode();
|
|
235
|
+
console.log(chalk.bold.green('\n🎉 Setup complete!\n'));
|
|
236
|
+
if (configured) {
|
|
237
|
+
console.log(chalk.bold('Next steps:'));
|
|
238
|
+
console.log(chalk.dim('1. Restart Claude Code to load the MCP server'));
|
|
239
|
+
console.log(chalk.dim('2. Use the /cvf slash command in Claude Code:'));
|
|
240
|
+
console.log(chalk.dim(' Example: ') + chalk.white('/cvf Does this fix work?'));
|
|
241
|
+
console.log(chalk.dim('3. Or ask Claude to use codevf-instant or codevf-chat tools\n'));
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
spinner.fail('Setup failed');
|
|
246
|
+
console.error(chalk.red('\n❌ Error:'), error.message);
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDpD;AAuHD;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAMpC"}
|