@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 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@v3
164
- - uses: actions/setup-node@v3
258
+ - uses: actions/checkout@v4
259
+ - uses: actions/setup-node@v4
165
260
  with:
166
- node-version: '18'
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,3 @@
1
+ import { Command } from "commander";
2
+ export declare const authCommand: Command;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -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;AAWpC,eAAO,MAAM,WAAW,SAwHpB,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"}