@datachonk/cli 0.1.0 → 0.2.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.
@@ -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"}