@usenaive-sdk/cli 0.12.2 → 0.12.5

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.
Files changed (83) hide show
  1. package/README.md +22 -0
  2. package/dist/client.d.ts +26 -1
  3. package/dist/client.js +167 -5
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/aeo.js +13 -6
  6. package/dist/commands/aeo.js.map +1 -1
  7. package/dist/commands/auth.d.ts +30 -0
  8. package/dist/commands/auth.js +400 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/billing.js +9 -9
  11. package/dist/commands/billing.js.map +1 -1
  12. package/dist/commands/brain.d.ts +2 -0
  13. package/dist/commands/brain.js +509 -0
  14. package/dist/commands/brain.js.map +1 -0
  15. package/dist/commands/browser.js +28 -1
  16. package/dist/commands/browser.js.map +1 -1
  17. package/dist/commands/clone.d.ts +2 -0
  18. package/dist/commands/clone.js +199 -0
  19. package/dist/commands/clone.js.map +1 -0
  20. package/dist/commands/config.d.ts +2 -0
  21. package/dist/commands/config.js +36 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/env.d.ts +3 -3
  24. package/dist/commands/env.js +68 -4
  25. package/dist/commands/env.js.map +1 -1
  26. package/dist/commands/images.js +2 -2
  27. package/dist/commands/keys.js +26 -3
  28. package/dist/commands/keys.js.map +1 -1
  29. package/dist/commands/loops.d.ts +2 -0
  30. package/dist/commands/loops.js +260 -0
  31. package/dist/commands/loops.js.map +1 -0
  32. package/dist/commands/mobile.d.ts +2 -0
  33. package/dist/commands/mobile.js +341 -0
  34. package/dist/commands/mobile.js.map +1 -0
  35. package/dist/commands/payments.d.ts +2 -0
  36. package/dist/commands/payments.js +131 -0
  37. package/dist/commands/payments.js.map +1 -0
  38. package/dist/commands/phone.js +77 -2
  39. package/dist/commands/phone.js.map +1 -1
  40. package/dist/commands/register.js +4 -4
  41. package/dist/commands/register.js.map +1 -1
  42. package/dist/commands/usage.js +4 -4
  43. package/dist/commands/video.js +94 -273
  44. package/dist/commands/video.js.map +1 -1
  45. package/dist/commands/voice.d.ts +2 -0
  46. package/dist/commands/voice.js +516 -0
  47. package/dist/commands/voice.js.map +1 -0
  48. package/dist/commands/wallet.d.ts +2 -0
  49. package/dist/commands/wallet.js +244 -0
  50. package/dist/commands/wallet.js.map +1 -0
  51. package/dist/config.d.ts +15 -0
  52. package/dist/config.js +35 -6
  53. package/dist/config.js.map +1 -1
  54. package/dist/index.js +70 -4
  55. package/dist/index.js.map +1 -1
  56. package/dist/lib/unknown-command.d.ts +17 -0
  57. package/dist/lib/unknown-command.js +19 -0
  58. package/dist/lib/unknown-command.js.map +1 -0
  59. package/dist/lib/version-check.d.ts +26 -0
  60. package/dist/lib/version-check.js +21 -0
  61. package/dist/lib/version-check.js.map +1 -0
  62. package/dist/output.d.ts +20 -5
  63. package/dist/output.js +150 -5
  64. package/dist/output.js.map +1 -1
  65. package/dist/prompt.d.ts +17 -0
  66. package/dist/prompt.js +70 -0
  67. package/dist/prompt.js.map +1 -0
  68. package/package.json +9 -4
  69. package/dist/commands/billing-client.d.ts +0 -2
  70. package/dist/commands/billing-client.js +0 -271
  71. package/dist/commands/billing-client.js.map +0 -1
  72. package/dist/commands/crm-app.d.ts +0 -2
  73. package/dist/commands/crm-app.js +0 -306
  74. package/dist/commands/crm-app.js.map +0 -1
  75. package/dist/commands/crm.d.ts +0 -2
  76. package/dist/commands/crm.js +0 -319
  77. package/dist/commands/crm.js.map +0 -1
  78. package/dist/commands/integrations.d.ts +0 -2
  79. package/dist/commands/integrations.js +0 -199
  80. package/dist/commands/integrations.js.map +0 -1
  81. package/dist/commands/operators.d.ts +0 -11
  82. package/dist/commands/operators.js +0 -120
  83. package/dist/commands/operators.js.map +0 -1
@@ -0,0 +1,400 @@
1
+ import { Command } from "commander";
2
+ import http from "node:http";
3
+ import { randomBytes } from "node:crypto";
4
+ import { spawn } from "node:child_process";
5
+ import { apiRequest, sessionLogin, sessionRequest } from "../client.js";
6
+ import { loadConfig, saveConfig, clearSession } from "../config.js";
7
+ import { agentError, agentOutput } from "../output.js";
8
+ /**
9
+ * Build the server authorize URL for the CLI loopback Google flow.
10
+ *
11
+ * The `redirect` value is the bare loopback origin `http://127.0.0.1:<port>` with
12
+ * NO trailing slash and NO query — the server re-validates this exact shape
13
+ * (`isLoopbackRedirect`) before it will hand a code back, so any drift here is
14
+ * rejected server-side. `URLSearchParams` percent-encodes the redirect and leaves
15
+ * the base64url `cliState` untouched (it only uses `A-Za-z0-9-_`).
16
+ */
17
+ export function buildAuthorizeUrl(baseUrl, port, cliState) {
18
+ const redirect = `http://127.0.0.1:${port}`;
19
+ const params = new URLSearchParams({ mode: "cli", redirect, cli_state: cliState });
20
+ return `${baseUrl.replace(/\/+$/, "")}/v1/auth/oauth/google?${params.toString()}`;
21
+ }
22
+ /**
23
+ * Parse the request the server bounced back to our loopback listener.
24
+ *
25
+ * Order matters: the server's ERROR redirect carries `?error=...` with NO
26
+ * `cli_state`, so `error` must be checked first or every error would surface as a
27
+ * spurious `state_mismatch`. The `cli_state` check is the CSRF guard [D8] — a
28
+ * mismatch means the callback wasn't initiated by this process, so we abort
29
+ * without saving anything.
30
+ */
31
+ export function parseLoopbackRequest(reqUrl, expectedState) {
32
+ let params;
33
+ try {
34
+ params = new URL(reqUrl, "http://127.0.0.1").searchParams;
35
+ }
36
+ catch {
37
+ return { ok: false, reason: "invalid_request" };
38
+ }
39
+ const error = params.get("error");
40
+ if (error)
41
+ return { ok: false, reason: error };
42
+ if (params.get("cli_state") !== expectedState)
43
+ return { ok: false, reason: "state_mismatch" };
44
+ const code = params.get("code");
45
+ if (!code)
46
+ return { ok: false, reason: "missing_code" };
47
+ return { ok: true, code };
48
+ }
49
+ const TIMEOUT_MS = 180_000;
50
+ const SUCCESS_PAGE = `<!doctype html><html lang="en"><head><meta charset="utf-8">` +
51
+ `<meta name="viewport" content="width=device-width,initial-scale=1">` +
52
+ `<meta name="referrer" content="no-referrer"><title>Naive CLI</title></head>` +
53
+ `<body style="font-family:system-ui,-apple-system,sans-serif;text-align:center;padding:3rem;color:#111">` +
54
+ `<h1>Signed in</h1><p>Signed in &mdash; you can close this tab and return to your terminal.</p></body></html>`;
55
+ const FAILURE_PAGE = `<!doctype html><html lang="en"><head><meta charset="utf-8">` +
56
+ `<meta name="viewport" content="width=device-width,initial-scale=1">` +
57
+ `<meta name="referrer" content="no-referrer"><title>Naive CLI</title></head>` +
58
+ `<body style="font-family:system-ui,-apple-system,sans-serif;text-align:center;padding:3rem;color:#111">` +
59
+ `<h1>Sign-in failed</h1><p>Something went wrong. Return to your terminal for details.</p></body></html>`;
60
+ /** Map an internal/raw reason to a human-facing message. */
61
+ function describeReason(reason) {
62
+ switch (reason) {
63
+ case "state_mismatch":
64
+ return "Sign-in state did not match the request that started this flow (possible CSRF). Aborted without saving.";
65
+ case "missing_code":
66
+ return "Sign-in did not return an authorization code.";
67
+ case "invalid_request":
68
+ return "The browser callback could not be parsed.";
69
+ default:
70
+ // A message the server bounced back (e.g. "access_denied").
71
+ return reason;
72
+ }
73
+ }
74
+ /**
75
+ * Shared browser-loopback login used by BOTH `auth google` and `auth email`:
76
+ * 1. start a one-shot loopback listener on a random 127.0.0.1 port,
77
+ * 2. let the flow turn (port, cliState) into a URL to open (or an emailed-link
78
+ * message, or an error),
79
+ * 3. accept the single callback, exchange the one-time code for an API key at
80
+ * POST /v1/auth/cli/exchange (identical for both flows),
81
+ * 4. persist the key and print structured success — or fail loudly.
82
+ *
83
+ * The raw API key and the one-time code are NEVER written to stdout/stderr.
84
+ */
85
+ async function runLoopbackLogin(action, start) {
86
+ const cliState = randomBytes(32).toString("base64url");
87
+ await new Promise((resolve) => {
88
+ let settled = false;
89
+ let port = 0;
90
+ let timer;
91
+ const server = http.createServer(handler);
92
+ function teardown() {
93
+ clearTimeout(timer);
94
+ server.close();
95
+ server.closeAllConnections?.();
96
+ }
97
+ function succeed(data) {
98
+ if (settled)
99
+ return;
100
+ settled = true;
101
+ teardown();
102
+ const companies = data.companies ?? [];
103
+ const hasMultiple = companies.length > 1;
104
+ agentOutput({
105
+ action,
106
+ result: {
107
+ agent_id: data.agent_id,
108
+ company_id: data.company_id,
109
+ company_name: data.company_name,
110
+ credentials_saved: "~/.naive/config.json",
111
+ companies,
112
+ },
113
+ next_steps: [
114
+ { command: "naive status", description: "Check current credits and resources" },
115
+ { command: "naive identity", description: "View available resources for this company" },
116
+ ...(hasMultiple
117
+ ? [{ command: "naive companies select <id>", description: "Switch to a different company", when: "You want to operate under a different company" }]
118
+ : []),
119
+ ],
120
+ hints: [
121
+ "Signed in — API key saved to ~/.naive/config.json for automatic auth",
122
+ ...(hasMultiple
123
+ ? [`You have ${companies.length} companies. Currently using "${data.company_name}". Use 'naive companies' to see all.`]
124
+ : []),
125
+ ],
126
+ related_commands: ["naive whoami", "naive companies", "naive status", "naive keys list"],
127
+ });
128
+ resolve();
129
+ }
130
+ function fail(error) {
131
+ if (settled)
132
+ return;
133
+ settled = true;
134
+ teardown();
135
+ agentError({
136
+ action,
137
+ error,
138
+ recovery_steps: [
139
+ { command: "naive auth google", description: "Sign in with Google in the browser" },
140
+ { command: "naive auth email <email>", description: "Sign in with an email magic link" },
141
+ { command: "naive login --email <email> --password <pw>", description: "Sign in with email and password instead" },
142
+ ],
143
+ });
144
+ }
145
+ function writePage(res, status, body, onDone) {
146
+ res.writeHead(status, {
147
+ "Content-Type": "text/html; charset=utf-8",
148
+ "Referrer-Policy": "no-referrer",
149
+ Connection: "close",
150
+ });
151
+ res.end(body, onDone);
152
+ }
153
+ async function exchange(code, res) {
154
+ let resp;
155
+ try {
156
+ resp = await apiRequest("POST", "/v1/auth/cli/exchange", { code }, { noAuth: true });
157
+ }
158
+ catch {
159
+ writePage(res, 502, FAILURE_PAGE, () => fail({ code: "network_error", message: "Could not reach the Naive API to complete sign-in." }));
160
+ return;
161
+ }
162
+ if (resp.status !== 200) {
163
+ const err = resp.data?.error;
164
+ writePage(res, 401, FAILURE_PAGE, () => fail({ code: err?.code ?? "unauthorized", message: err?.message ?? "Sign-in code exchange failed." }));
165
+ return;
166
+ }
167
+ const data = resp.data;
168
+ saveConfig({
169
+ api_key: data.api_key,
170
+ agent_id: data.agent_id,
171
+ company_id: data.company_id,
172
+ company_name: data.company_name,
173
+ });
174
+ writePage(res, 200, SUCCESS_PAGE, () => succeed(data));
175
+ }
176
+ function handler(req, res) {
177
+ // Anti-DNS-rebind: a real browser hitting our loopback sends
178
+ // `Host: 127.0.0.1:<port>`. Anything else is a rebind attempt [SEC-4].
179
+ if (req.headers.host !== `127.0.0.1:${port}`) {
180
+ writePage(res, 404, FAILURE_PAGE, () => { });
181
+ return;
182
+ }
183
+ const path = (req.url ?? "").split("?")[0];
184
+ if (path !== "/") {
185
+ // Ignore incidental requests (favicon, etc.) without settling the flow.
186
+ writePage(res, 404, FAILURE_PAGE, () => { });
187
+ return;
188
+ }
189
+ const parsed = parseLoopbackRequest(req.url ?? "", cliState);
190
+ if (!parsed.ok) {
191
+ writePage(res, 400, FAILURE_PAGE, () => fail({ code: "oauth_failed", message: describeReason(parsed.reason) }));
192
+ return;
193
+ }
194
+ void exchange(parsed.code, res);
195
+ }
196
+ server.listen(0, "127.0.0.1", () => {
197
+ // The port is only known once listening, so the URL and browser open must
198
+ // happen inside this callback [FAL-4/SEC-4].
199
+ port = server.address().port;
200
+ start(port, cliState)
201
+ .then((result) => {
202
+ if ("error" in result) {
203
+ fail({ code: "start_failed", message: result.error });
204
+ return;
205
+ }
206
+ if ("url" in result) {
207
+ openBrowser(result.url);
208
+ const copied = copyToClipboard(result.url);
209
+ // ALWAYS surface the URL so a headless/locked-down environment can finish
210
+ // the flow manually. Printed to stderr to keep stdout a single JSON doc.
211
+ process.stderr.write(`Opening your browser to sign in...\nIf it didn't open${copied ? " (the link is also copied to your clipboard)" : ""}, visit:\n${result.url}\n`);
212
+ }
213
+ else {
214
+ // No URL to open here (e.g. prod emailed the link) — tell the user.
215
+ process.stderr.write(`${result.message}\n`);
216
+ }
217
+ })
218
+ .catch((e) => fail({ code: "start_failed", message: e instanceof Error ? e.message : "Failed to start sign-in" }));
219
+ });
220
+ server.on("error", (err) => {
221
+ fail({ code: "listen_failed", message: `Could not start the local sign-in listener: ${err.message}` });
222
+ });
223
+ timer = setTimeout(() => {
224
+ fail({ code: "timeout", message: `Timed out after ${TIMEOUT_MS / 1000}s waiting for sign-in. Please try again.` });
225
+ }, TIMEOUT_MS);
226
+ });
227
+ }
228
+ /**
229
+ * Open the system browser at `url`. Uses an argv array (never a shell string) so
230
+ * the URL can't be interpreted as a shell command [SEC-5]. Best-effort: any failure
231
+ * is swallowed because the URL is always printed as a fallback.
232
+ */
233
+ function openBrowser(url) {
234
+ try {
235
+ const { command, args } = process.platform === "darwin"
236
+ ? { command: "open", args: [url] }
237
+ : process.platform === "win32"
238
+ ? { command: "cmd", args: ["/c", "start", "", url] }
239
+ : { command: "xdg-open", args: [url] };
240
+ const child = spawn(command, args, { stdio: "ignore", detached: true });
241
+ child.on("error", () => { });
242
+ child.unref();
243
+ }
244
+ catch {
245
+ // Ignore — the URL was/will be printed as a manual fallback.
246
+ }
247
+ }
248
+ /**
249
+ * Best-effort copy of `text` to the system clipboard (argv array, never a shell
250
+ * string). Returns whether the copy was attempted; failures are swallowed because
251
+ * the URL is always printed too.
252
+ */
253
+ function copyToClipboard(text) {
254
+ try {
255
+ const { command, args } = process.platform === "darwin"
256
+ ? { command: "pbcopy", args: [] }
257
+ : process.platform === "win32"
258
+ ? { command: "clip", args: [] }
259
+ : { command: "xclip", args: ["-selection", "clipboard"] };
260
+ const child = spawn(command, args, { stdio: ["pipe", "ignore", "ignore"] });
261
+ child.on("error", () => { });
262
+ child.stdin?.end(text);
263
+ return true;
264
+ }
265
+ catch {
266
+ return false;
267
+ }
268
+ }
269
+ export const authCmd = new Command("auth")
270
+ .description("Browser-based authentication (Google / email magic-link sign-in)")
271
+ .addHelpText("after", `
272
+ Subcommands:
273
+ google Sign in or sign up with Google in your browser
274
+ email <email> Sign in or sign up with an email magic link
275
+
276
+ Examples:
277
+ $ naive auth google
278
+ $ naive auth email you@example.com
279
+ `);
280
+ authCmd
281
+ .command("google")
282
+ .description("Sign in or sign up with Google via your browser (no password)")
283
+ .addHelpText("after", `
284
+ What this does:
285
+ 1. Opens your browser to Google's consent screen
286
+ 2. Google redirects back to a one-time local listener on 127.0.0.1
287
+ 3. Exchanges the returned code for an API key (signup provisions a new account)
288
+ 4. Saves credentials to ~/.naive/config.json (mode 0600)
289
+ `)
290
+ .action(async () => {
291
+ await runLoopbackLogin("auth_google", async (port, cliState) => ({
292
+ url: buildAuthorizeUrl(loadConfig().base_url, port, cliState),
293
+ }));
294
+ });
295
+ authCmd
296
+ .command("email")
297
+ .argument("<email>", "Email address to sign in / sign up with")
298
+ .description("Sign in or sign up with an email magic link (no password)")
299
+ .addHelpText("after", `
300
+ What this does:
301
+ 1. Asks the API for a one-time sign-in link for <email>
302
+ 2. In dev the link is returned and opened automatically (and copied to your clipboard);
303
+ in production it is emailed to you to click
304
+ 3. Opening the link bounces a one-time code back to a local listener on 127.0.0.1
305
+ 4. Exchanges it for an API key and saves it to ~/.naive/config.json (mode 0600)
306
+
307
+ Notes:
308
+ - New emails are provisioned a fresh account automatically; existing ones sign in
309
+ - Respects NAIVE_BASE_URL for local/staging targets
310
+ `)
311
+ .action(async (email) => {
312
+ await runLoopbackLogin("auth_email", async (port, cliState) => {
313
+ let resp;
314
+ try {
315
+ resp = await apiRequest("POST", "/v1/auth/magic/start", { email, redirect: `http://127.0.0.1:${port}`, cli_state: cliState }, { noAuth: true });
316
+ }
317
+ catch {
318
+ return { error: "Could not reach the Naive API to start email sign-in." };
319
+ }
320
+ if (resp.status !== 200) {
321
+ const err = resp.data?.error;
322
+ return { error: err?.message ?? "Could not start email sign-in." };
323
+ }
324
+ const data = resp.data;
325
+ if (data.magic_url)
326
+ return { url: data.magic_url };
327
+ return { message: data.message ?? "Check your email for the sign-in link, then return here." };
328
+ });
329
+ });
330
+ // ── Human session auth (session-login / logout) — from the clone/voice branch ──
331
+ // Distinct from the agent api_key and the browser sign-in above; needed for
332
+ // human-only ops like `naive voice clone`/`revoke`.
333
+ authCmd
334
+ .command("session-login")
335
+ .description("Log in as a human (session cookie) — needed for `naive voice clone`/`revoke`")
336
+ .requiredOption("--email <email>", "Account email (same as the Studio dashboard)")
337
+ .requiredOption("--password <password>", "Account password")
338
+ .addHelpText("after", `
339
+ What this does:
340
+ 1. Authenticates as a HUMAN (not an agent key) and stores a session token (~/.naive/config.json, 0600)
341
+ 2. Unlocks human-only commands: naive voice clone / naive voice revoke
342
+ 3. The agent api_key (from 'naive login') is unaffected and still used for agent commands
343
+
344
+ Note: this is separate from 'naive login'. Cloning a voice is a human-only action by design.
345
+ `)
346
+ .action(async (opts) => {
347
+ const { token, data } = await sessionLogin(opts.email, opts.password);
348
+ const user = (data.user ?? {});
349
+ const company = (data.company ?? {});
350
+ saveConfig({
351
+ session_token: token,
352
+ user_email: user.email,
353
+ session_company_id: company.id,
354
+ session_company_name: company.name,
355
+ });
356
+ agentOutput({
357
+ action: "auth.session-login",
358
+ result: {
359
+ // deliberately NOT returning the token
360
+ user_email: user.email,
361
+ company_id: company.id,
362
+ company_name: company.name,
363
+ session_saved: "~/.naive/config.json (0600)",
364
+ },
365
+ next_steps: [
366
+ { command: "naive voice clone <file> --name <name> --consent-type self --i-affirm --consenter-name <you> --attestation <text>", description: "Clone a voice you have consent for" },
367
+ { command: "naive auth logout", description: "End the human session" },
368
+ ],
369
+ hints: ["Human session active — voice clone/revoke are now available."],
370
+ });
371
+ });
372
+ authCmd
373
+ .command("logout")
374
+ .description("End the human session (server-side + local)")
375
+ .action(async () => {
376
+ const cfg = loadConfig();
377
+ if (!cfg.session_token) {
378
+ agentOutput({
379
+ action: "auth.logout",
380
+ result: { status: "no_session" },
381
+ next_steps: [{ command: "naive auth session-login --email <e> --password <p>", description: "Start a human session" }],
382
+ });
383
+ return;
384
+ }
385
+ // Invalidate server-side first; clearing only the local file would leave the token
386
+ // live for its full 30-day TTL.
387
+ try {
388
+ await sessionRequest("POST", "/v1/auth/session/logout");
389
+ }
390
+ catch {
391
+ // even if the server call fails, still clear local state below
392
+ }
393
+ clearSession();
394
+ agentOutput({
395
+ action: "auth.logout",
396
+ result: { status: "logged_out" },
397
+ next_steps: [{ command: "naive auth session-login --email <e> --password <p>", description: "Start a new human session" }],
398
+ });
399
+ });
400
+ //# 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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"}
@@ -14,16 +14,16 @@ Subcommands:
14
14
  naive billing topup Buy a credit pack (returns checkout URL)
15
15
 
16
16
  Plans:
17
- Starter $49/mo 50 credits/month All primitives, system email domain
18
- Pro $149/mo 200 credits/month All primitives, custom domains, priority support
17
+ Starter $49/mo 500 credits/month All primitives, system email domain
18
+ Pro $149/mo 2000 credits/month All primitives, custom domains, priority support
19
19
 
20
20
  Credit Packs (one-time purchase):
21
- small 20 credits $10
22
- medium 50 credits $23 (Popular)
23
- large 100 credits $44 (Best Value)
24
- xl 250 credits $100
21
+ small 200 credits $10
22
+ medium 500 credits $23 (Popular)
23
+ large 1000 credits $44 (Best Value)
24
+ xl 2500 credits $100
25
25
 
26
- New accounts start with 1 free credit — buy more anytime with a credit pack or a plan.
26
+ New accounts start with 20 free credits — buy more anytime with a credit pack or a plan.
27
27
 
28
28
  Examples:
29
29
  $ naive billing plans
@@ -168,8 +168,8 @@ billingCmd
168
168
  action: "billing.packs",
169
169
  result: resp.data,
170
170
  next_steps: [
171
- { command: "naive billing topup --pack medium", description: "Buy 50 credits for $23 (Popular)" },
172
- { command: "naive billing topup --pack large", description: "Buy 100 credits for $44 (Best Value)" },
171
+ { command: "naive billing topup --pack medium", description: "Buy 500 credits for $23 (Popular)" },
172
+ { command: "naive billing topup --pack large", description: "Buy 1000 credits for $44 (Best Value)" },
173
173
  ],
174
174
  hints: [
175
175
  `Credits remaining: ${data.credits_remaining}`,
@@ -1 +1 @@
1
- {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const brainCmd: Command;