vigthoria-cli 1.0.0
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/README.md +413 -0
- package/dist/commands/auth.d.ts +24 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +194 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/chat.d.ts +64 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +596 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts +25 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +291 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/edit.d.ts +28 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +257 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/explain.d.ts +21 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +98 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/generate.d.ts +25 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +155 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/review.d.ts +24 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +153 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +205 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/api.d.ts +88 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +431 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/config.d.ts +57 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +167 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/files.d.ts +31 -0
- package/dist/utils/files.d.ts.map +1 -0
- package/dist/utils/files.js +217 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/logger.d.ts +23 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +104 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/session.d.ts +61 -0
- package/dist/utils/session.d.ts.map +1 -0
- package/dist/utils/session.js +172 -0
- package/dist/utils/session.js.map +1 -0
- package/dist/utils/tools.d.ts +145 -0
- package/dist/utils/tools.d.ts.map +1 -0
- package/dist/utils/tools.js +781 -0
- package/dist/utils/tools.js.map +1 -0
- package/install.sh +248 -0
- package/package.json +52 -0
- package/src/commands/auth.ts +225 -0
- package/src/commands/chat.ts +690 -0
- package/src/commands/config.ts +297 -0
- package/src/commands/edit.ts +310 -0
- package/src/commands/explain.ts +115 -0
- package/src/commands/generate.ts +177 -0
- package/src/commands/review.ts +186 -0
- package/src/index.ts +221 -0
- package/src/types/marked-terminal.d.ts +31 -0
- package/src/utils/api.ts +531 -0
- package/src/utils/config.ts +224 -0
- package/src/utils/files.ts +212 -0
- package/src/utils/logger.ts +125 -0
- package/src/utils/session.ts +167 -0
- package/src/utils/tools.ts +933 -0
- package/tsconfig.json +20 -0
package/README.md
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
# Vigthoria CLI
|
|
2
|
+
|
|
3
|
+
AI-powered terminal coding assistant for Vigthoria Coder subscribers.
|
|
4
|
+
|
|
5
|
+
Similar to Claude Code, but integrated with Vigthoria's AI models and subscription system.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
╔═══════════════════════════════════════════════════════════╗
|
|
9
|
+
║ ║
|
|
10
|
+
║ VIGTHORIA CLI - AI-Powered Coding Assistant ║
|
|
11
|
+
║ ║
|
|
12
|
+
╚═══════════════════════════════════════════════════════════╝
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- 🤖 **Interactive Chat** - Natural language coding assistance
|
|
18
|
+
- ✏️ **File Editing** - AI-powered code modifications with diff preview
|
|
19
|
+
- 🔧 **Code Generation** - Generate code from descriptions
|
|
20
|
+
- 📖 **Code Explanation** - Understand complex code
|
|
21
|
+
- 🐛 **Bug Fixing** - Automatic issue detection and fixing
|
|
22
|
+
- 📊 **Code Review** - Quality analysis and suggestions
|
|
23
|
+
- 🔐 **Secure Auth** - Integration with Vigthoria accounts
|
|
24
|
+
- 📦 **Project Context** - Understands your codebase
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
### Quick Install (Recommended)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
curl -fsSL https://cli.vigthoria.io/install.sh | bash
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Manual Install
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Clone from Vigthoria Market
|
|
38
|
+
git clone https://market.vigthoria.io/vigthoria/vigthoria-cli.git
|
|
39
|
+
cd vigthoria-cli
|
|
40
|
+
|
|
41
|
+
# Or from Vigthoria Community
|
|
42
|
+
git clone https://community.vigthoria.io/repos/vigthoria-cli.git
|
|
43
|
+
cd vigthoria-cli
|
|
44
|
+
|
|
45
|
+
# Install dependencies
|
|
46
|
+
npm install
|
|
47
|
+
|
|
48
|
+
# Build
|
|
49
|
+
npm run build
|
|
50
|
+
|
|
51
|
+
# Link globally
|
|
52
|
+
npm link
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### npm Install
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm install -g vigthoria-cli
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Quick Start
|
|
62
|
+
|
|
63
|
+
### 1. Login
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
vigthoria login
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Options:
|
|
70
|
+
- Email & Password
|
|
71
|
+
- API Token
|
|
72
|
+
- Browser OAuth
|
|
73
|
+
|
|
74
|
+
### 2. Start Chatting
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
vigthoria chat
|
|
78
|
+
# or
|
|
79
|
+
vig c
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Edit Files
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
vigthoria edit src/index.ts
|
|
86
|
+
# or
|
|
87
|
+
vig e src/index.ts
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Commands
|
|
91
|
+
|
|
92
|
+
### Chat Mode
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
vigthoria chat [options]
|
|
96
|
+
|
|
97
|
+
Options:
|
|
98
|
+
-m, --model <model> Select AI model (fast, mini, code, creative, pro, ultra)
|
|
99
|
+
-p, --project <path> Set project context path
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
In chat mode, you can use these special commands:
|
|
103
|
+
- `/file <path>` - Add file to context
|
|
104
|
+
- `/edit <path>` - Switch to edit mode
|
|
105
|
+
- `/diff` - Show pending changes
|
|
106
|
+
- `/apply` - Apply pending changes
|
|
107
|
+
- `/model <name>` - Switch AI model
|
|
108
|
+
- `/clear` - Clear conversation
|
|
109
|
+
- `/help` - Show commands
|
|
110
|
+
- `/exit` - Exit chat
|
|
111
|
+
|
|
112
|
+
### Edit File
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
vigthoria edit <file> [options]
|
|
116
|
+
|
|
117
|
+
Options:
|
|
118
|
+
-i, --instruction <text> Editing instruction
|
|
119
|
+
-m, --model <model> Select AI model
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Example:
|
|
123
|
+
```bash
|
|
124
|
+
vigthoria edit src/api.ts -i "Add error handling to all endpoints"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Generate Code
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
vigthoria generate <description> [options]
|
|
131
|
+
|
|
132
|
+
Options:
|
|
133
|
+
-l, --language <lang> Target language (default: typescript)
|
|
134
|
+
-o, --output <file> Output file path
|
|
135
|
+
-m, --model <model> Select AI model
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Example:
|
|
139
|
+
```bash
|
|
140
|
+
vigthoria generate "REST API endpoint for user authentication" -l typescript -o src/auth.ts
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Explain Code
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
vigthoria explain <file> [options]
|
|
147
|
+
|
|
148
|
+
Options:
|
|
149
|
+
-l, --lines <range> Line range (e.g., 1-50)
|
|
150
|
+
-d, --detail <level> Detail level (brief, normal, detailed)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Example:
|
|
154
|
+
```bash
|
|
155
|
+
vigthoria explain src/complex.ts -l 50-100 -d detailed
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Fix Code
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
vigthoria fix <file> [options]
|
|
162
|
+
|
|
163
|
+
Options:
|
|
164
|
+
-t, --type <type> Fix type (bugs, style, security, performance)
|
|
165
|
+
--apply Auto-apply fixes
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Example:
|
|
169
|
+
```bash
|
|
170
|
+
vigthoria fix src/index.ts -t security --apply
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Code Review
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
vigthoria review <file> [options]
|
|
177
|
+
|
|
178
|
+
Options:
|
|
179
|
+
-f, --format <format> Output format (text, json, markdown)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Example:
|
|
183
|
+
```bash
|
|
184
|
+
vigthoria review src/app.ts -f markdown > review.md
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Configuration
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Interactive configuration
|
|
191
|
+
vigthoria config
|
|
192
|
+
|
|
193
|
+
# Set value
|
|
194
|
+
vigthoria config --set model=vigthoria-code
|
|
195
|
+
|
|
196
|
+
# Get value
|
|
197
|
+
vigthoria config --get model
|
|
198
|
+
|
|
199
|
+
# List all settings
|
|
200
|
+
vigthoria config --list
|
|
201
|
+
|
|
202
|
+
# Reset to defaults
|
|
203
|
+
vigthoria config --reset
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Initialize Project
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
vigthoria init
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Creates a `.vigthoria.json` file with project-specific settings.
|
|
213
|
+
|
|
214
|
+
## Available Models
|
|
215
|
+
|
|
216
|
+
| Model | Size | Best For | Plans |
|
|
217
|
+
|-------|------|----------|-------|
|
|
218
|
+
| `vigthoria-fast` | 1.1B | Quick responses | Free, Pro, Ultra |
|
|
219
|
+
| `vigthoria-mini` | 3.8B | Balanced tasks | Free, Pro, Ultra |
|
|
220
|
+
| `vigthoria-code` | 8B | Code generation | Pro, Ultra |
|
|
221
|
+
| `vigthoria-creative` | 9B | Creative writing | Pro, Ultra |
|
|
222
|
+
| `vigthoria-pro` | 32B | Advanced tasks | Ultra |
|
|
223
|
+
| `vigthoria-ultra` | 70B | Maximum capability | Ultra |
|
|
224
|
+
|
|
225
|
+
## Configuration File
|
|
226
|
+
|
|
227
|
+
### Global Config
|
|
228
|
+
|
|
229
|
+
Located at `~/.config/vigthoria-cli/config.json`:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"apiUrl": "https://api.vigthoria.io",
|
|
234
|
+
"preferences": {
|
|
235
|
+
"defaultModel": "vigthoria-code",
|
|
236
|
+
"theme": "dark",
|
|
237
|
+
"autoApplyFixes": false,
|
|
238
|
+
"showDiffs": true,
|
|
239
|
+
"maxTokens": 4096
|
|
240
|
+
},
|
|
241
|
+
"project": {
|
|
242
|
+
"ignorePatterns": [
|
|
243
|
+
"node_modules",
|
|
244
|
+
".git",
|
|
245
|
+
"dist"
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Project Config
|
|
252
|
+
|
|
253
|
+
Create `.vigthoria.json` in your project root:
|
|
254
|
+
|
|
255
|
+
```json
|
|
256
|
+
{
|
|
257
|
+
"defaultModel": "vigthoria-code",
|
|
258
|
+
"ignorePatterns": ["build", "coverage"],
|
|
259
|
+
"autoApplyFixes": false
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Shortcuts
|
|
264
|
+
|
|
265
|
+
For faster access, use the `vig` command:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
vig c # vigthoria chat
|
|
269
|
+
vig e <file> # vigthoria edit
|
|
270
|
+
vig g <desc> # vigthoria generate
|
|
271
|
+
vig x <file> # vigthoria explain
|
|
272
|
+
vig f <file> # vigthoria fix
|
|
273
|
+
vig r <file> # vigthoria review
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Shell Completion
|
|
277
|
+
|
|
278
|
+
### Bash
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
source ~/.bash_completion.d/vigthoria
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Zsh
|
|
285
|
+
|
|
286
|
+
Add to `~/.zshrc`:
|
|
287
|
+
```bash
|
|
288
|
+
fpath=(~/.zsh/completion $fpath)
|
|
289
|
+
autoload -Uz compinit && compinit
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Environment Variables
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# Custom API endpoint
|
|
296
|
+
export VIGTHORIA_API_URL="https://custom.api.vigthoria.io"
|
|
297
|
+
|
|
298
|
+
# Default model
|
|
299
|
+
export VIGTHORIA_DEFAULT_MODEL="vigthoria-code"
|
|
300
|
+
|
|
301
|
+
# API token (alternative to login)
|
|
302
|
+
export VIGTHORIA_TOKEN="your-api-token"
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Examples
|
|
306
|
+
|
|
307
|
+
### Interactive Coding Session
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
$ vigthoria chat
|
|
311
|
+
|
|
312
|
+
╔═══════════════════════════════════════════════════════════╗
|
|
313
|
+
║ VIGTHORIA CLI - AI-Powered Coding Assistant ║
|
|
314
|
+
╚═══════════════════════════════════════════════════════════╝
|
|
315
|
+
|
|
316
|
+
you › /file src/api.ts
|
|
317
|
+
✓ Added src/api.ts to context (150 lines)
|
|
318
|
+
|
|
319
|
+
you › Add rate limiting to the authentication endpoint
|
|
320
|
+
|
|
321
|
+
vigthoria ›
|
|
322
|
+
I'll add rate limiting using express-rate-limit. Here's the implementation:
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
import rateLimit from 'express-rate-limit';
|
|
326
|
+
|
|
327
|
+
const authLimiter = rateLimit({
|
|
328
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
329
|
+
max: 5, // 5 attempts
|
|
330
|
+
message: 'Too many login attempts, please try again later'
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
app.post('/auth/login', authLimiter, authController.login);
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
you › /edit src/api.ts
|
|
337
|
+
What changes would you like to make?
|
|
338
|
+
> Add the rate limiting code you showed
|
|
339
|
+
|
|
340
|
+
[Diff preview shown]
|
|
341
|
+
Apply changes? (Y/n) y
|
|
342
|
+
✓ Changes applied to src/api.ts
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Batch Code Review
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# Review all TypeScript files
|
|
349
|
+
for file in src/**/*.ts; do
|
|
350
|
+
vigthoria review "$file" -f markdown >> review-report.md
|
|
351
|
+
done
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Git Pre-commit Hook
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
#!/bin/bash
|
|
358
|
+
# .git/hooks/pre-commit
|
|
359
|
+
|
|
360
|
+
changed_files=$(git diff --cached --name-only --diff-filter=ACM | grep '\.ts$')
|
|
361
|
+
|
|
362
|
+
for file in $changed_files; do
|
|
363
|
+
vigthoria fix "$file" -t style --apply
|
|
364
|
+
done
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Troubleshooting
|
|
368
|
+
|
|
369
|
+
### "Not authenticated" Error
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
vigthoria login
|
|
373
|
+
# or
|
|
374
|
+
export VIGTHORIA_TOKEN="your-token"
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### "Subscription expired" Warning
|
|
378
|
+
|
|
379
|
+
Your Vigthoria Coder subscription has expired. Visit https://coder.vigthoria.io to renew.
|
|
380
|
+
|
|
381
|
+
### Connection Issues
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
# Check API status
|
|
385
|
+
vigthoria status
|
|
386
|
+
|
|
387
|
+
# Use different API endpoint
|
|
388
|
+
vigthoria config --set apiUrl=https://backup.api.vigthoria.io
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Reset Configuration
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
vigthoria config --reset
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Support
|
|
398
|
+
|
|
399
|
+
- **User Handbook (EN)**: [VIGTHORIA_CLI_USER_HANDBOOK_EN.md](../docs/VIGTHORIA_CLI_USER_HANDBOOK_EN.md)
|
|
400
|
+
- **Benutzerhandbuch (DE)**: [VIGTHORIA_CLI_USER_HANDBOOK_DE.md](../docs/VIGTHORIA_CLI_USER_HANDBOOK_DE.md)
|
|
401
|
+
- **PDF Handbooks**: [Download EN](https://landing.vigthoria.io/docs/pdf/VIGTHORIA_CLI_USER_HANDBOOK_EN.pdf) | [Download DE](https://landing.vigthoria.io/docs/pdf/VIGTHORIA_CLI_USER_HANDBOOK_DE.pdf)
|
|
402
|
+
- Documentation: https://docs.vigthoria.io/cli
|
|
403
|
+
- Issues: https://community.vigthoria.io/forums/cli-support
|
|
404
|
+
- Discord: https://discord.gg/vigthoria
|
|
405
|
+
- Email: support@vigthoria.io
|
|
406
|
+
|
|
407
|
+
## License
|
|
408
|
+
|
|
409
|
+
MIT License - See [LICENSE](LICENSE) for details.
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
Built with ❤️ by Vigthoria GmbH
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Command - Authentication management
|
|
3
|
+
*/
|
|
4
|
+
import { Config } from '../utils/config.js';
|
|
5
|
+
import { Logger } from '../utils/logger.js';
|
|
6
|
+
interface LoginOptions {
|
|
7
|
+
token?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class AuthCommand {
|
|
10
|
+
private config;
|
|
11
|
+
private logger;
|
|
12
|
+
private api;
|
|
13
|
+
constructor(config: Config, logger: Logger);
|
|
14
|
+
login(options: LoginOptions): Promise<void>;
|
|
15
|
+
private loginWithCredentials;
|
|
16
|
+
private loginWithTokenPrompt;
|
|
17
|
+
private loginWithToken;
|
|
18
|
+
private loginWithBrowser;
|
|
19
|
+
logout(): Promise<void>;
|
|
20
|
+
status(): Promise<void>;
|
|
21
|
+
private printLoginSuccess;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAY;gBAEX,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMpC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAsCnC,oBAAoB;YAiCpB,oBAAoB;YAcpB,cAAc;YAcd,gBAAgB;IAWxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD7B,OAAO,CAAC,iBAAiB;CAgB1B"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Command - Authentication management
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AuthCommand = void 0;
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
12
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
13
|
+
const api_js_1 = require("../utils/api.js");
|
|
14
|
+
class AuthCommand {
|
|
15
|
+
config;
|
|
16
|
+
logger;
|
|
17
|
+
api;
|
|
18
|
+
constructor(config, logger) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.logger = logger;
|
|
21
|
+
this.api = new api_js_1.APIClient(config, logger);
|
|
22
|
+
}
|
|
23
|
+
async login(options) {
|
|
24
|
+
// If token provided, use token auth
|
|
25
|
+
if (options.token) {
|
|
26
|
+
await this.loginWithToken(options.token);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk_1.default.cyan('═══ Vigthoria Login ═══'));
|
|
31
|
+
console.log();
|
|
32
|
+
// Prompt for credentials
|
|
33
|
+
const answers = await inquirer_1.default.prompt([
|
|
34
|
+
{
|
|
35
|
+
type: 'list',
|
|
36
|
+
name: 'method',
|
|
37
|
+
message: 'Choose login method:',
|
|
38
|
+
choices: [
|
|
39
|
+
{ name: 'Email & Password', value: 'credentials' },
|
|
40
|
+
{ name: 'API Token', value: 'token' },
|
|
41
|
+
{ name: 'Browser Login', value: 'browser' },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
]);
|
|
45
|
+
switch (answers.method) {
|
|
46
|
+
case 'credentials':
|
|
47
|
+
await this.loginWithCredentials();
|
|
48
|
+
break;
|
|
49
|
+
case 'token':
|
|
50
|
+
await this.loginWithTokenPrompt();
|
|
51
|
+
break;
|
|
52
|
+
case 'browser':
|
|
53
|
+
await this.loginWithBrowser();
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async loginWithCredentials() {
|
|
58
|
+
const credentials = await inquirer_1.default.prompt([
|
|
59
|
+
{
|
|
60
|
+
type: 'input',
|
|
61
|
+
name: 'email',
|
|
62
|
+
message: 'Email:',
|
|
63
|
+
validate: (input) => {
|
|
64
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
65
|
+
return emailRegex.test(input) || 'Please enter a valid email';
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'password',
|
|
70
|
+
name: 'password',
|
|
71
|
+
message: 'Password:',
|
|
72
|
+
mask: '*',
|
|
73
|
+
validate: (input) => input.length >= 6 || 'Password must be at least 6 characters',
|
|
74
|
+
},
|
|
75
|
+
]);
|
|
76
|
+
const spinner = (0, ora_1.default)('Logging in...').start();
|
|
77
|
+
const success = await this.api.login(credentials.email, credentials.password);
|
|
78
|
+
spinner.stop();
|
|
79
|
+
if (success) {
|
|
80
|
+
this.printLoginSuccess();
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.logger.error('Login failed. Please check your credentials.');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async loginWithTokenPrompt() {
|
|
87
|
+
const { token } = await inquirer_1.default.prompt([
|
|
88
|
+
{
|
|
89
|
+
type: 'password',
|
|
90
|
+
name: 'token',
|
|
91
|
+
message: 'API Token:',
|
|
92
|
+
mask: '*',
|
|
93
|
+
validate: (input) => input.length > 0 || 'Please enter your API token',
|
|
94
|
+
},
|
|
95
|
+
]);
|
|
96
|
+
await this.loginWithToken(token);
|
|
97
|
+
}
|
|
98
|
+
async loginWithToken(token) {
|
|
99
|
+
const spinner = (0, ora_1.default)('Validating token...').start();
|
|
100
|
+
const success = await this.api.loginWithToken(token);
|
|
101
|
+
spinner.stop();
|
|
102
|
+
if (success) {
|
|
103
|
+
this.printLoginSuccess();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.logger.error('Invalid token. Please check and try again.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async loginWithBrowser() {
|
|
110
|
+
console.log();
|
|
111
|
+
console.log(chalk_1.default.gray('Opening browser for authentication...'));
|
|
112
|
+
console.log();
|
|
113
|
+
console.log(chalk_1.default.cyan('Visit: https://coder.vigthoria.io/cli-auth'));
|
|
114
|
+
console.log();
|
|
115
|
+
console.log(chalk_1.default.gray('After authenticating, copy the token and run:'));
|
|
116
|
+
console.log(chalk_1.default.white(' vigthoria login --token YOUR_TOKEN'));
|
|
117
|
+
console.log();
|
|
118
|
+
}
|
|
119
|
+
async logout() {
|
|
120
|
+
const { confirm } = await inquirer_1.default.prompt([
|
|
121
|
+
{
|
|
122
|
+
type: 'confirm',
|
|
123
|
+
name: 'confirm',
|
|
124
|
+
message: 'Are you sure you want to logout?',
|
|
125
|
+
default: false,
|
|
126
|
+
},
|
|
127
|
+
]);
|
|
128
|
+
if (confirm) {
|
|
129
|
+
this.config.clearAuth();
|
|
130
|
+
this.logger.success('Logged out successfully');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async status() {
|
|
134
|
+
console.log();
|
|
135
|
+
console.log(chalk_1.default.cyan('═══ Account Status ═══'));
|
|
136
|
+
console.log();
|
|
137
|
+
if (!this.config.isAuthenticated()) {
|
|
138
|
+
this.logger.warn('Not logged in');
|
|
139
|
+
console.log();
|
|
140
|
+
console.log(chalk_1.default.gray('Run `vigthoria login` to authenticate'));
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const email = this.config.get('email');
|
|
144
|
+
const sub = this.config.get('subscription');
|
|
145
|
+
// Account info
|
|
146
|
+
console.log(chalk_1.default.white('Account:'));
|
|
147
|
+
console.log(chalk_1.default.gray(' Email: ') + chalk_1.default.cyan(email));
|
|
148
|
+
console.log(chalk_1.default.gray(' User ID: ') + chalk_1.default.gray(this.config.get('userId')));
|
|
149
|
+
console.log();
|
|
150
|
+
// Subscription info
|
|
151
|
+
console.log(chalk_1.default.white('Subscription:'));
|
|
152
|
+
const planDisplay = sub.plan ? chalk_1.default.green(sub.plan.toUpperCase()) : chalk_1.default.yellow('FREE');
|
|
153
|
+
const statusDisplay = sub.status === 'active' ? chalk_1.default.green('Active') : chalk_1.default.red(sub.status || 'N/A');
|
|
154
|
+
console.log(chalk_1.default.gray(' Plan: ') + planDisplay);
|
|
155
|
+
console.log(chalk_1.default.gray(' Status: ') + statusDisplay);
|
|
156
|
+
if (sub.expiresAt) {
|
|
157
|
+
const expiresDate = new Date(sub.expiresAt);
|
|
158
|
+
const daysLeft = Math.ceil((expiresDate.getTime() - Date.now()) / (1000 * 60 * 60 * 24));
|
|
159
|
+
const expiresColor = daysLeft > 7 ? chalk_1.default.green : daysLeft > 0 ? chalk_1.default.yellow : chalk_1.default.red;
|
|
160
|
+
console.log(chalk_1.default.gray(' Expires: ') + expiresColor(`${expiresDate.toLocaleDateString()} (${daysLeft} days)`));
|
|
161
|
+
}
|
|
162
|
+
console.log();
|
|
163
|
+
// Available models
|
|
164
|
+
console.log(chalk_1.default.white('Available Models:'));
|
|
165
|
+
const models = this.config.getAvailableModels();
|
|
166
|
+
models.forEach(m => {
|
|
167
|
+
console.log(chalk_1.default.gray(' • ') + chalk_1.default.cyan(m.id) + chalk_1.default.gray(` - ${m.description}`));
|
|
168
|
+
});
|
|
169
|
+
console.log();
|
|
170
|
+
// API status
|
|
171
|
+
const spinner = (0, ora_1.default)('Checking API status...').start();
|
|
172
|
+
const apiOk = await this.api.healthCheck();
|
|
173
|
+
spinner.stop();
|
|
174
|
+
console.log(chalk_1.default.white('API Status:'));
|
|
175
|
+
console.log(chalk_1.default.gray(' Server: ') + (apiOk ? chalk_1.default.green('Online') : chalk_1.default.red('Offline')));
|
|
176
|
+
console.log(chalk_1.default.gray(' Endpoint: ') + chalk_1.default.gray(this.config.get('apiUrl')));
|
|
177
|
+
console.log();
|
|
178
|
+
}
|
|
179
|
+
printLoginSuccess() {
|
|
180
|
+
const email = this.config.get('email');
|
|
181
|
+
const sub = this.config.get('subscription');
|
|
182
|
+
console.log();
|
|
183
|
+
this.logger.success(`Logged in as ${chalk_1.default.cyan(email)}`);
|
|
184
|
+
if (sub.plan) {
|
|
185
|
+
console.log(chalk_1.default.gray(` Plan: ${chalk_1.default.green(sub.plan.toUpperCase())}`));
|
|
186
|
+
}
|
|
187
|
+
console.log();
|
|
188
|
+
console.log(chalk_1.default.gray('You can now use all Vigthoria CLI features.'));
|
|
189
|
+
console.log(chalk_1.default.gray('Run `vigthoria chat` to start coding with AI!'));
|
|
190
|
+
console.log();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.AuthCommand = AuthCommand;
|
|
194
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|