@datachonk/cli 0.1.0 → 0.2.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 +45 -0
- package/README.md +103 -8
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +289 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +266 -49
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/projects.d.ts +3 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +414 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +174 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +300 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
DataChonk CLI - Proprietary License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DataChonk. All rights reserved.
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS
|
|
6
|
+
|
|
7
|
+
1. GRANT OF LICENSE
|
|
8
|
+
You are granted a non-exclusive, non-transferable license to use the
|
|
9
|
+
DataChonk CLI software ("Software") for personal or commercial purposes,
|
|
10
|
+
subject to the terms of this license.
|
|
11
|
+
|
|
12
|
+
2. RESTRICTIONS
|
|
13
|
+
You may NOT:
|
|
14
|
+
- Modify, adapt, or create derivative works of the Software
|
|
15
|
+
- Redistribute, sublicense, sell, or transfer the Software
|
|
16
|
+
- Reverse engineer, decompile, or disassemble the Software
|
|
17
|
+
- Remove or alter any proprietary notices or labels
|
|
18
|
+
- Use the Software to create a competing product or service
|
|
19
|
+
|
|
20
|
+
3. PERMITTED USE
|
|
21
|
+
You MAY:
|
|
22
|
+
- Install and use the Software for its intended purpose
|
|
23
|
+
- Use the Software in connection with DataChonk services
|
|
24
|
+
- Make copies solely for backup purposes
|
|
25
|
+
|
|
26
|
+
4. OWNERSHIP
|
|
27
|
+
The Software and all copies thereof are proprietary to DataChonk and
|
|
28
|
+
title thereto remains exclusively with DataChonk. All rights not
|
|
29
|
+
specifically granted in this license are reserved by DataChonk.
|
|
30
|
+
|
|
31
|
+
5. TERMINATION
|
|
32
|
+
This license is effective until terminated. It will terminate
|
|
33
|
+
automatically if you fail to comply with any term of this license.
|
|
34
|
+
Upon termination, you must destroy all copies of the Software.
|
|
35
|
+
|
|
36
|
+
6. DISCLAIMER OF WARRANTIES
|
|
37
|
+
THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
38
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
39
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
40
|
+
|
|
41
|
+
7. LIMITATION OF LIABILITY
|
|
42
|
+
IN NO EVENT SHALL DATACHONK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
43
|
+
LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
|
|
44
|
+
|
|
45
|
+
For questions about licensing, contact: legal@datachonk.dev
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @datachonk/cli
|
|
2
2
|
|
|
3
|
-
AI-powered dbt expert CLI - analyze, generate, and optimize your dbt projects.
|
|
3
|
+
AI-powered dbt expert CLI - analyze, generate, and optimize your dbt projects with Chonk, your data-sniffing corgi.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -13,22 +13,87 @@ npx @datachonk/cli
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
+
# Login to DataChonk
|
|
17
|
+
datachonk auth login
|
|
18
|
+
|
|
16
19
|
# Initialize DataChonk in your dbt project
|
|
17
20
|
cd your-dbt-project
|
|
18
21
|
datachonk init
|
|
19
22
|
|
|
23
|
+
# Chat with Chonk AI
|
|
24
|
+
datachonk chat
|
|
25
|
+
|
|
20
26
|
# Analyze your project for issues
|
|
21
27
|
datachonk analyze
|
|
22
28
|
|
|
23
29
|
# Generate a new staging model
|
|
24
30
|
datachonk generate staging --name customers --source raw.stripe.customers
|
|
25
|
-
|
|
26
|
-
# Review code before committing
|
|
27
|
-
datachonk review
|
|
28
31
|
```
|
|
29
32
|
|
|
30
33
|
## Commands
|
|
31
34
|
|
|
35
|
+
### Authentication
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
datachonk auth login # Login via browser or API key
|
|
39
|
+
datachonk auth logout # Logout and clear credentials
|
|
40
|
+
datachonk auth whoami # Show current user info
|
|
41
|
+
datachonk auth token # Display current API token
|
|
42
|
+
datachonk auth token --create # Create a new API token
|
|
43
|
+
datachonk auth token --revoke # Revoke current token
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Project Management
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
datachonk projects list # List all your projects
|
|
50
|
+
datachonk projects create # Create a new project (interactive)
|
|
51
|
+
datachonk projects show <id> # Show project details
|
|
52
|
+
datachonk projects delete <id> # Delete a project
|
|
53
|
+
datachonk projects export <id> # Export project as ZIP
|
|
54
|
+
datachonk projects export <id> --extract ./output # Extract to folder
|
|
55
|
+
datachonk projects clone <id> # Clone to local dbt project
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Sync & Pull
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
datachonk sync # Sync local dbt project to DataChonk
|
|
62
|
+
datachonk sync --project <id> # Sync to specific project
|
|
63
|
+
datachonk sync --watch # Watch for changes and auto-sync
|
|
64
|
+
datachonk pull # Pull changes from DataChonk
|
|
65
|
+
datachonk pull --project <id> # Pull from specific project
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Status & Dashboard
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
datachonk status # Show dashboard with usage stats
|
|
72
|
+
datachonk open # Open web dashboard in browser
|
|
73
|
+
datachonk open projects # Open projects page
|
|
74
|
+
datachonk open settings # Open settings page
|
|
75
|
+
datachonk version # Show version and check for updates
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### AI Chat (Chonk)
|
|
79
|
+
|
|
80
|
+
Interactive AI assistant for dbt help and code generation.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
datachonk chat # Start interactive chat
|
|
84
|
+
datachonk chat -c ./models # Include directory as context
|
|
85
|
+
datachonk chat -p <project-id> # Use project context
|
|
86
|
+
datachonk chat --no-stream # Disable streaming responses
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Chat Slash Commands:**
|
|
90
|
+
- `/help` - Show available commands
|
|
91
|
+
- `/clear` - Clear conversation history
|
|
92
|
+
- `/context <path>` - Load a file or directory as context
|
|
93
|
+
- `/save <file>` - Save the last code block to a file
|
|
94
|
+
- `/export` - Export conversation to markdown
|
|
95
|
+
- `/exit` - Exit chat
|
|
96
|
+
|
|
32
97
|
### `datachonk init`
|
|
33
98
|
|
|
34
99
|
Initialize DataChonk in your dbt project. Creates a `.datachonk.yml` configuration file.
|
|
@@ -83,6 +148,16 @@ datachonk review --strict # Enable strict mode
|
|
|
83
148
|
datachonk review --json # Output as JSON
|
|
84
149
|
```
|
|
85
150
|
|
|
151
|
+
### `datachonk scan`
|
|
152
|
+
|
|
153
|
+
Discover and analyze your data warehouse schema.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
datachonk scan # Interactive warehouse scan
|
|
157
|
+
datachonk scan --connection <name> # Use saved connection
|
|
158
|
+
datachonk scan --output schema.json # Export schema to file
|
|
159
|
+
```
|
|
160
|
+
|
|
86
161
|
### `datachonk lineage`
|
|
87
162
|
|
|
88
163
|
Analyze and visualize model lineage.
|
|
@@ -107,6 +182,25 @@ datachonk docs --missing-only # Only document undocumented models
|
|
|
107
182
|
datachonk docs --enhance # Use AI to improve descriptions
|
|
108
183
|
```
|
|
109
184
|
|
|
185
|
+
### `datachonk test`
|
|
186
|
+
|
|
187
|
+
Run and manage dbt tests.
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
datachonk test # Run all tests
|
|
191
|
+
datachonk test --model stg_users # Test specific model
|
|
192
|
+
datachonk test --generate # Generate missing tests
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### `datachonk migrate`
|
|
196
|
+
|
|
197
|
+
Convert raw SQL to dbt models.
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
datachonk migrate query.sql # Convert SQL file to dbt
|
|
201
|
+
datachonk migrate --interactive # Interactive migration wizard
|
|
202
|
+
```
|
|
203
|
+
|
|
110
204
|
### `datachonk config`
|
|
111
205
|
|
|
112
206
|
Manage DataChonk configuration.
|
|
@@ -115,6 +209,7 @@ Manage DataChonk configuration.
|
|
|
115
209
|
datachonk config list # Show all configuration
|
|
116
210
|
datachonk config get warehouse # Get specific value
|
|
117
211
|
datachonk config set warehouse bigquery # Set value
|
|
212
|
+
datachonk config set apiKey <key> # Set API key
|
|
118
213
|
datachonk config reset # Reset to defaults
|
|
119
214
|
```
|
|
120
215
|
|
|
@@ -160,11 +255,11 @@ jobs:
|
|
|
160
255
|
lint:
|
|
161
256
|
runs-on: ubuntu-latest
|
|
162
257
|
steps:
|
|
163
|
-
- uses: actions/checkout@
|
|
164
|
-
- uses: actions/setup-node@
|
|
258
|
+
- uses: actions/checkout@v4
|
|
259
|
+
- uses: actions/setup-node@v4
|
|
165
260
|
with:
|
|
166
|
-
node-version: '
|
|
167
|
-
- run: npm install -g datachonk
|
|
261
|
+
node-version: '20'
|
|
262
|
+
- run: npm install -g @datachonk/cli
|
|
168
263
|
- run: datachonk analyze --json > analysis.json
|
|
169
264
|
- run: datachonk review --strict
|
|
170
265
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,WAAW,SAC8B,CAAC"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import inquirer from "inquirer";
|
|
5
|
+
import open from "open";
|
|
6
|
+
import http from "http";
|
|
7
|
+
import { URL } from "url";
|
|
8
|
+
import { loadConfig, saveConfig, getApiUrl } from "../utils/config.js";
|
|
9
|
+
export const authCommand = new Command("auth")
|
|
10
|
+
.description("Manage authentication with DataChonk");
|
|
11
|
+
// Login command
|
|
12
|
+
authCommand
|
|
13
|
+
.command("login")
|
|
14
|
+
.description("Authenticate with DataChonk")
|
|
15
|
+
.option("--api-key <key>", "Use an API key directly instead of browser auth")
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
if (options.apiKey) {
|
|
18
|
+
// Direct API key authentication
|
|
19
|
+
const spinner = ora("Validating API key...").start();
|
|
20
|
+
try {
|
|
21
|
+
const apiUrl = getApiUrl();
|
|
22
|
+
const response = await fetch(`${apiUrl}/api/cli/auth/validate`, {
|
|
23
|
+
method: "POST",
|
|
24
|
+
headers: {
|
|
25
|
+
"Content-Type": "application/json",
|
|
26
|
+
"Authorization": `Bearer ${options.apiKey}`,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
spinner.fail("Invalid API key");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
// Save API key to config
|
|
35
|
+
const config = loadConfig();
|
|
36
|
+
config.ai.apiKey = options.apiKey;
|
|
37
|
+
config.ai.enabled = true;
|
|
38
|
+
saveConfig(config);
|
|
39
|
+
spinner.succeed("Logged in successfully!");
|
|
40
|
+
console.log(chalk.gray(`\n Logged in as: ${data.user.email}`));
|
|
41
|
+
console.log(chalk.gray(` Subscription: ${data.user.subscription_tier || "free"}`));
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
spinner.fail("Authentication failed");
|
|
45
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Browser-based authentication
|
|
51
|
+
console.log(chalk.cyan.bold("\n DataChonk Login\n"));
|
|
52
|
+
const apiUrl = getApiUrl();
|
|
53
|
+
const callbackPort = 9876;
|
|
54
|
+
const callbackUrl = `http://localhost:${callbackPort}/callback`;
|
|
55
|
+
// Create a one-time auth session
|
|
56
|
+
const spinner = ora("Preparing authentication...").start();
|
|
57
|
+
try {
|
|
58
|
+
const sessionResponse = await fetch(`${apiUrl}/api/cli/auth/session`, {
|
|
59
|
+
method: "POST",
|
|
60
|
+
headers: { "Content-Type": "application/json" },
|
|
61
|
+
body: JSON.stringify({ callbackUrl }),
|
|
62
|
+
});
|
|
63
|
+
if (!sessionResponse.ok) {
|
|
64
|
+
throw new Error("Failed to create auth session");
|
|
65
|
+
}
|
|
66
|
+
const { sessionId, authUrl } = await sessionResponse.json();
|
|
67
|
+
spinner.stop();
|
|
68
|
+
console.log(chalk.gray("Opening browser for authentication...\n"));
|
|
69
|
+
// Start local callback server
|
|
70
|
+
const apiKey = await new Promise((resolve, reject) => {
|
|
71
|
+
const server = http.createServer((req, res) => {
|
|
72
|
+
const url = new URL(req.url || "", `http://localhost:${callbackPort}`);
|
|
73
|
+
if (url.pathname === "/callback") {
|
|
74
|
+
const token = url.searchParams.get("token");
|
|
75
|
+
const error = url.searchParams.get("error");
|
|
76
|
+
if (error) {
|
|
77
|
+
res.writeHead(200, { "Content-Type": "text/html" });
|
|
78
|
+
res.end(`
|
|
79
|
+
<html>
|
|
80
|
+
<body style="font-family: system-ui; text-align: center; padding: 50px;">
|
|
81
|
+
<h1 style="color: #ef4444;">Authentication Failed</h1>
|
|
82
|
+
<p>${error}</p>
|
|
83
|
+
<p>You can close this window.</p>
|
|
84
|
+
</body>
|
|
85
|
+
</html>
|
|
86
|
+
`);
|
|
87
|
+
server.close();
|
|
88
|
+
reject(new Error(error));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (token) {
|
|
92
|
+
res.writeHead(200, { "Content-Type": "text/html" });
|
|
93
|
+
res.end(`
|
|
94
|
+
<html>
|
|
95
|
+
<body style="font-family: system-ui; text-align: center; padding: 50px; background: #0a0a0a; color: white;">
|
|
96
|
+
<h1 style="color: #E8A54B;">Authentication Successful!</h1>
|
|
97
|
+
<p>You can close this window and return to the CLI.</p>
|
|
98
|
+
</body>
|
|
99
|
+
</html>
|
|
100
|
+
`);
|
|
101
|
+
server.close();
|
|
102
|
+
resolve(token);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
server.listen(callbackPort, () => {
|
|
107
|
+
// Open browser to auth URL
|
|
108
|
+
open(authUrl).catch(() => {
|
|
109
|
+
console.log(chalk.yellow(`\nCouldn't open browser. Please visit:\n${authUrl}\n`));
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
// Timeout after 5 minutes
|
|
113
|
+
setTimeout(() => {
|
|
114
|
+
server.close();
|
|
115
|
+
reject(new Error("Authentication timed out"));
|
|
116
|
+
}, 5 * 60 * 1000);
|
|
117
|
+
});
|
|
118
|
+
// Save API key
|
|
119
|
+
const config = loadConfig();
|
|
120
|
+
config.ai.apiKey = apiKey;
|
|
121
|
+
config.ai.enabled = true;
|
|
122
|
+
saveConfig(config);
|
|
123
|
+
// Fetch user info
|
|
124
|
+
const userResponse = await fetch(`${apiUrl}/api/cli/auth/me`, {
|
|
125
|
+
headers: { "Authorization": `Bearer ${apiKey}` },
|
|
126
|
+
});
|
|
127
|
+
if (userResponse.ok) {
|
|
128
|
+
const userData = await userResponse.json();
|
|
129
|
+
console.log(chalk.green("\nLogged in successfully!"));
|
|
130
|
+
console.log(chalk.gray(` Email: ${userData.user.email}`));
|
|
131
|
+
console.log(chalk.gray(` Plan: ${userData.user.subscription_tier || "free"}`));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(chalk.green("\nLogged in successfully!"));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
spinner.fail("Authentication failed");
|
|
139
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
// Logout command
|
|
144
|
+
authCommand
|
|
145
|
+
.command("logout")
|
|
146
|
+
.description("Log out of DataChonk")
|
|
147
|
+
.action(async () => {
|
|
148
|
+
const config = loadConfig();
|
|
149
|
+
if (!config.ai.apiKey) {
|
|
150
|
+
console.log(chalk.yellow("You are not logged in."));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const { confirm } = await inquirer.prompt([
|
|
154
|
+
{
|
|
155
|
+
type: "confirm",
|
|
156
|
+
name: "confirm",
|
|
157
|
+
message: "Are you sure you want to log out?",
|
|
158
|
+
default: true,
|
|
159
|
+
},
|
|
160
|
+
]);
|
|
161
|
+
if (!confirm)
|
|
162
|
+
return;
|
|
163
|
+
// Revoke API key on server
|
|
164
|
+
const apiUrl = getApiUrl();
|
|
165
|
+
try {
|
|
166
|
+
await fetch(`${apiUrl}/api/cli/auth/revoke`, {
|
|
167
|
+
method: "POST",
|
|
168
|
+
headers: {
|
|
169
|
+
"Authorization": `Bearer ${config.ai.apiKey}`,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Ignore server errors during logout
|
|
175
|
+
}
|
|
176
|
+
// Clear local config
|
|
177
|
+
config.ai.apiKey = null;
|
|
178
|
+
config.ai.enabled = false;
|
|
179
|
+
saveConfig(config);
|
|
180
|
+
console.log(chalk.green("Logged out successfully."));
|
|
181
|
+
});
|
|
182
|
+
// Who am I command
|
|
183
|
+
authCommand
|
|
184
|
+
.command("whoami")
|
|
185
|
+
.description("Show current authenticated user")
|
|
186
|
+
.action(async () => {
|
|
187
|
+
const config = loadConfig();
|
|
188
|
+
if (!config.ai.apiKey) {
|
|
189
|
+
console.log(chalk.yellow("Not logged in. Run: datachonk auth login"));
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const spinner = ora("Fetching user info...").start();
|
|
193
|
+
try {
|
|
194
|
+
const apiUrl = getApiUrl();
|
|
195
|
+
const response = await fetch(`${apiUrl}/api/cli/auth/me`, {
|
|
196
|
+
headers: { "Authorization": `Bearer ${config.ai.apiKey}` },
|
|
197
|
+
});
|
|
198
|
+
if (!response.ok) {
|
|
199
|
+
spinner.fail("Session expired or invalid");
|
|
200
|
+
console.log(chalk.yellow("Run: datachonk auth login"));
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const data = await response.json();
|
|
204
|
+
spinner.stop();
|
|
205
|
+
console.log(chalk.bold("\n DataChonk Account\n"));
|
|
206
|
+
console.log(chalk.gray(" ─".repeat(20)));
|
|
207
|
+
console.log(` ${chalk.gray("Email:")} ${data.user.email}`);
|
|
208
|
+
console.log(` ${chalk.gray("Name:")} ${data.user.name || "Not set"}`);
|
|
209
|
+
console.log(` ${chalk.gray("Plan:")} ${chalk.cyan(data.user.subscription_tier || "free")}`);
|
|
210
|
+
if (data.usage) {
|
|
211
|
+
console.log(chalk.gray("\n Usage This Month:"));
|
|
212
|
+
console.log(` ${chalk.gray("Projects:")} ${data.usage.projects}`);
|
|
213
|
+
console.log(` ${chalk.gray("AI Requests:")} ${data.usage.aiRequests}`);
|
|
214
|
+
}
|
|
215
|
+
console.log();
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
spinner.fail("Failed to fetch user info");
|
|
219
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
// Token/API Key management
|
|
223
|
+
authCommand
|
|
224
|
+
.command("token")
|
|
225
|
+
.description("Manage API tokens")
|
|
226
|
+
.argument("<action>", "Action: show | create | revoke")
|
|
227
|
+
.action(async (action) => {
|
|
228
|
+
const config = loadConfig();
|
|
229
|
+
switch (action) {
|
|
230
|
+
case "show": {
|
|
231
|
+
if (!config.ai.apiKey) {
|
|
232
|
+
console.log(chalk.yellow("No API key configured."));
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
// Only show partial key for security
|
|
236
|
+
const key = config.ai.apiKey;
|
|
237
|
+
const masked = key.substring(0, 8) + "..." + key.substring(key.length - 4);
|
|
238
|
+
console.log(chalk.gray(`API Key: ${masked}`));
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
case "create": {
|
|
242
|
+
if (!config.ai.apiKey) {
|
|
243
|
+
console.log(chalk.yellow("Login first: datachonk auth login"));
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const { name } = await inquirer.prompt([
|
|
247
|
+
{
|
|
248
|
+
type: "input",
|
|
249
|
+
name: "name",
|
|
250
|
+
message: "Token name (for your reference):",
|
|
251
|
+
default: `cli-${new Date().toISOString().split("T")[0]}`,
|
|
252
|
+
},
|
|
253
|
+
]);
|
|
254
|
+
const spinner = ora("Creating API token...").start();
|
|
255
|
+
try {
|
|
256
|
+
const apiUrl = getApiUrl();
|
|
257
|
+
const response = await fetch(`${apiUrl}/api/cli/auth/token`, {
|
|
258
|
+
method: "POST",
|
|
259
|
+
headers: {
|
|
260
|
+
"Content-Type": "application/json",
|
|
261
|
+
"Authorization": `Bearer ${config.ai.apiKey}`,
|
|
262
|
+
},
|
|
263
|
+
body: JSON.stringify({ name }),
|
|
264
|
+
});
|
|
265
|
+
if (!response.ok) {
|
|
266
|
+
throw new Error("Failed to create token");
|
|
267
|
+
}
|
|
268
|
+
const data = await response.json();
|
|
269
|
+
spinner.succeed("Token created!");
|
|
270
|
+
console.log(chalk.yellow("\nStore this token securely - it won't be shown again:\n"));
|
|
271
|
+
console.log(chalk.cyan(data.token));
|
|
272
|
+
console.log();
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
spinner.fail("Failed to create token");
|
|
276
|
+
console.error(chalk.red(error instanceof Error ? error.message : "Unknown error"));
|
|
277
|
+
}
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
case "revoke": {
|
|
281
|
+
console.log(chalk.yellow("To revoke tokens, visit: https://datachonk.dev/app/settings/tokens"));
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
default:
|
|
285
|
+
console.log(chalk.red(`Unknown action: ${action}`));
|
|
286
|
+
console.log(chalk.gray("Valid actions: show, create, revoke"));
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
//# 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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkJpC,eAAO,MAAM,WAAW,SAqOpB,CAAC"}
|