codevf 1.0.0 ā 1.0.2
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 +7 -2
- 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 +263 -207
- 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/projects.d.ts +32 -0
- package/dist/lib/api/projects.d.ts.map +1 -0
- package/dist/lib/api/projects.js +61 -0
- package/dist/lib/api/projects.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 +160 -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 +38 -0
- package/dist/mcp/tools/instant.d.ts.map +1 -0
- package/dist/mcp/tools/instant.js +106 -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 +328 -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 +218 -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 -26
- package/ARCHITECTURE.md +0 -285
- package/BUILD_SUMMARY.md +0 -340
- package/QUICKSTART.md +0 -180
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Welcome screen for first-time users
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import { setupCommand } from './setup.js';
|
|
7
|
+
import { ConfigManager } from '../lib/config/manager.js';
|
|
8
|
+
const WELCOME_ART = `
|
|
9
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
10
|
+
ā ā
|
|
11
|
+
ā āāāāāā āāāāāāā āāāāāāā āāāāāāāāāāā āāāāāāāāāāā ā
|
|
12
|
+
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāā ā
|
|
13
|
+
ā āāā āāāāāā āāāāāā āāāāāāāāā āāāā āāāāāāāāāā ā
|
|
14
|
+
ā āāā āāāāāā āāāāāā āāāāāāāāā āāāāāāā āāāāāā ā
|
|
15
|
+
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāā āāā ā
|
|
16
|
+
ā āāāāāā āāāāāāā āāāāāāā āāāāāāāā āāā āāā ā
|
|
17
|
+
ā ā
|
|
18
|
+
ā Live Debugging with Vetted Engineers ā
|
|
19
|
+
ā ā
|
|
20
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
21
|
+
`;
|
|
22
|
+
export async function welcomeCommand() {
|
|
23
|
+
console.clear();
|
|
24
|
+
console.log(chalk.cyan(WELCOME_ART));
|
|
25
|
+
console.log(chalk.bold('\nš Welcome to CodeVF!\n'));
|
|
26
|
+
console.log('Get help from expert engineers when you need it most.\n');
|
|
27
|
+
const { setupType } = await prompts({
|
|
28
|
+
type: 'select',
|
|
29
|
+
name: 'setupType',
|
|
30
|
+
message: 'How would you like to use CodeVF?',
|
|
31
|
+
choices: [
|
|
32
|
+
{
|
|
33
|
+
title: chalk.bold.green('š¤ Claude Code Integration') + chalk.dim(' (Recommended)'),
|
|
34
|
+
description: 'Add CodeVF tools to Claude Code - ask Claude to consult engineers',
|
|
35
|
+
value: 'mcp',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: chalk.bold.blue('š» Standalone CLI') + chalk.dim(' (Beta)'),
|
|
39
|
+
description: 'Use CodeVF directly from your terminal for live debugging sessions',
|
|
40
|
+
value: 'cli',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: chalk.dim('ā¹ļø Learn More'),
|
|
44
|
+
description: 'Show me what CodeVF can do',
|
|
45
|
+
value: 'info',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: chalk.dim('ā Exit'),
|
|
49
|
+
description: 'Exit setup',
|
|
50
|
+
value: 'exit',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
initial: 0,
|
|
54
|
+
});
|
|
55
|
+
if (!setupType || setupType === 'exit') {
|
|
56
|
+
console.log(chalk.dim('\nš Run `codevf` anytime to get started!\n'));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
switch (setupType) {
|
|
60
|
+
case 'mcp':
|
|
61
|
+
await setupMCPFlow();
|
|
62
|
+
break;
|
|
63
|
+
case 'cli':
|
|
64
|
+
await setupCLIFlow();
|
|
65
|
+
break;
|
|
66
|
+
case 'info':
|
|
67
|
+
await showInfo();
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function setupMCPFlow() {
|
|
72
|
+
console.log(chalk.bold.cyan('\nš¤ Claude Code Integration Setup\n'));
|
|
73
|
+
console.log(chalk.dim('This will:'));
|
|
74
|
+
console.log(chalk.dim(' 1. Authenticate with CodeVF'));
|
|
75
|
+
console.log(chalk.dim(' 2. Configure Claude Code to use CodeVF tools'));
|
|
76
|
+
console.log(chalk.dim(' 3. Enable codevf-instant and codevf-chat commands\n'));
|
|
77
|
+
const { proceed } = await prompts({
|
|
78
|
+
type: 'confirm',
|
|
79
|
+
name: 'proceed',
|
|
80
|
+
message: 'Ready to set up?',
|
|
81
|
+
initial: true,
|
|
82
|
+
});
|
|
83
|
+
if (!proceed) {
|
|
84
|
+
console.log(chalk.dim('\nš Run `codevf setup` anytime to configure!\n'));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Run the setup command
|
|
88
|
+
await setupCommand();
|
|
89
|
+
console.log(chalk.bold.green('\n⨠All set! Here\'s what you can do:\n'));
|
|
90
|
+
console.log(chalk.cyan('In Claude Code, you can now ask:\n'));
|
|
91
|
+
console.log(chalk.dim(' "Use codevf-instant to ask an engineer if this fix works"'));
|
|
92
|
+
console.log(chalk.dim(' "Use codevf-chat to debug this complex issue with an engineer"\n'));
|
|
93
|
+
console.log(chalk.bold('Available Tools:'));
|
|
94
|
+
console.log(chalk.green(' ⢠codevf-instant') + chalk.dim(' - Quick validation (1-10 credits, ~2 min)'));
|
|
95
|
+
console.log(chalk.green(' ⢠codevf-chat') + chalk.dim(' - Extended session (4-1920 credits, up to 16 hours)\n'));
|
|
96
|
+
}
|
|
97
|
+
async function setupCLIFlow() {
|
|
98
|
+
console.log(chalk.bold.blue('\nš» Standalone CLI Setup\n'));
|
|
99
|
+
console.log(chalk.yellow('ā ļø The CLI is currently in beta. For the best experience, we recommend'));
|
|
100
|
+
console.log(chalk.yellow(' using Claude Code integration instead.\n'));
|
|
101
|
+
console.log(chalk.dim('CLI Features:'));
|
|
102
|
+
console.log(chalk.dim(' ⢠Live debugging sessions with engineers'));
|
|
103
|
+
console.log(chalk.dim(' ⢠Real-time chat and screen sharing'));
|
|
104
|
+
console.log(chalk.dim(' ⢠Project initialization and sync\n'));
|
|
105
|
+
const { proceed } = await prompts({
|
|
106
|
+
type: 'confirm',
|
|
107
|
+
name: 'proceed',
|
|
108
|
+
message: 'Continue with CLI setup?',
|
|
109
|
+
initial: false,
|
|
110
|
+
});
|
|
111
|
+
if (!proceed) {
|
|
112
|
+
console.log(chalk.dim('\nš” Tip: Try `codevf` again and choose Claude Code Integration!\n'));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
console.log(chalk.bold('\nš CLI Commands:\n'));
|
|
116
|
+
console.log(chalk.cyan(' codevf login') + chalk.dim(' - Authenticate with CodeVF'));
|
|
117
|
+
console.log(chalk.cyan(' codevf init') + chalk.dim(' - Initialize project'));
|
|
118
|
+
console.log(chalk.cyan(' codevf fix') + chalk.dim(' - Start live debugging session'));
|
|
119
|
+
console.log(chalk.cyan(' codevf sync') + chalk.dim(' - Sync your code\n'));
|
|
120
|
+
const { startLogin } = await prompts({
|
|
121
|
+
type: 'confirm',
|
|
122
|
+
name: 'startLogin',
|
|
123
|
+
message: 'Start with login?',
|
|
124
|
+
initial: true,
|
|
125
|
+
});
|
|
126
|
+
if (startLogin) {
|
|
127
|
+
console.log(chalk.dim('\nRun: codevf login\n'));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async function showInfo() {
|
|
131
|
+
console.log(chalk.bold.cyan('\nš What is CodeVF?\n'));
|
|
132
|
+
console.log('CodeVF connects you with vetted software engineers for live debugging');
|
|
133
|
+
console.log('and code review. Get expert help when you need it most.\n');
|
|
134
|
+
console.log(chalk.bold('šÆ Use Cases:\n'));
|
|
135
|
+
console.log(chalk.green(' ā ') + 'Complex bugs that AI can\'t solve alone');
|
|
136
|
+
console.log(chalk.green(' ā ') + 'Architecture and design decisions');
|
|
137
|
+
console.log(chalk.green(' ā ') + 'Code review and security audits');
|
|
138
|
+
console.log(chalk.green(' ā ') + 'Performance optimization');
|
|
139
|
+
console.log(chalk.green(' ā ') + 'Learning from experienced developers\n');
|
|
140
|
+
console.log(chalk.bold('š° Credit-Based Pricing:\n'));
|
|
141
|
+
console.log(chalk.dim(' ⢠Quick questions: 1-10 credits (~$0.10-$1.00)'));
|
|
142
|
+
console.log(chalk.dim(' ⢠Extended sessions: 2 credits/minute (~$0.20/min)\n'));
|
|
143
|
+
console.log(chalk.bold('š Security:\n'));
|
|
144
|
+
console.log(chalk.dim(' ⢠Engineers only see what you share'));
|
|
145
|
+
console.log(chalk.dim(' ⢠All sessions are private and secure'));
|
|
146
|
+
console.log(chalk.dim(' ⢠No code is stored after sessions\n'));
|
|
147
|
+
const { next } = await prompts({
|
|
148
|
+
type: 'select',
|
|
149
|
+
name: 'next',
|
|
150
|
+
message: 'What would you like to do?',
|
|
151
|
+
choices: [
|
|
152
|
+
{ title: 'Set up Claude Code Integration', value: 'mcp' },
|
|
153
|
+
{ title: 'Set up Standalone CLI', value: 'cli' },
|
|
154
|
+
{ title: 'Exit', value: 'exit' },
|
|
155
|
+
],
|
|
156
|
+
});
|
|
157
|
+
switch (next) {
|
|
158
|
+
case 'mcp':
|
|
159
|
+
await setupMCPFlow();
|
|
160
|
+
break;
|
|
161
|
+
case 'cli':
|
|
162
|
+
await setupCLIFlow();
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if this is the first run
|
|
168
|
+
*/
|
|
169
|
+
export function isFirstRun() {
|
|
170
|
+
const mcpConfig = new ConfigManager('mcp-config.json');
|
|
171
|
+
const cliConfig = new ConfigManager('config.json');
|
|
172
|
+
// First run if neither config exists
|
|
173
|
+
return !mcpConfig.exists() && !cliConfig.exists();
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=welcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"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"}
|