@arinova-ai/cli 0.0.4 → 0.0.6

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 (56) hide show
  1. package/dist/api.d.ts.map +1 -1
  2. package/dist/api.js +12 -4
  3. package/dist/api.js.map +1 -1
  4. package/dist/client.d.ts +13 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +104 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/commands/app.d.ts +3 -0
  9. package/dist/commands/app.d.ts.map +1 -0
  10. package/dist/commands/app.js +104 -0
  11. package/dist/commands/app.js.map +1 -0
  12. package/dist/commands/auth.d.ts +3 -0
  13. package/dist/commands/auth.d.ts.map +1 -0
  14. package/dist/commands/auth.js +151 -0
  15. package/dist/commands/auth.js.map +1 -0
  16. package/dist/commands/community.d.ts +3 -0
  17. package/dist/commands/community.d.ts.map +1 -0
  18. package/dist/commands/community.js +155 -0
  19. package/dist/commands/community.js.map +1 -0
  20. package/dist/commands/expert.d.ts +3 -0
  21. package/dist/commands/expert.d.ts.map +1 -0
  22. package/dist/commands/expert.js +140 -0
  23. package/dist/commands/expert.js.map +1 -0
  24. package/dist/commands/kanban.js +3 -3
  25. package/dist/commands/kanban.js.map +1 -1
  26. package/dist/commands/list.d.ts +3 -0
  27. package/dist/commands/list.d.ts.map +1 -0
  28. package/dist/commands/list.js +93 -0
  29. package/dist/commands/list.js.map +1 -0
  30. package/dist/commands/space.d.ts +3 -0
  31. package/dist/commands/space.d.ts.map +1 -0
  32. package/dist/commands/space.js +134 -0
  33. package/dist/commands/space.js.map +1 -0
  34. package/dist/commands/stats.d.ts +3 -0
  35. package/dist/commands/stats.d.ts.map +1 -0
  36. package/dist/commands/stats.js +31 -0
  37. package/dist/commands/stats.js.map +1 -0
  38. package/dist/commands/sticker.d.ts +3 -0
  39. package/dist/commands/sticker.d.ts.map +1 -0
  40. package/dist/commands/sticker.js +142 -0
  41. package/dist/commands/sticker.js.map +1 -0
  42. package/dist/commands/theme.d.ts +3 -0
  43. package/dist/commands/theme.d.ts.map +1 -0
  44. package/dist/commands/theme.js +547 -0
  45. package/dist/commands/theme.js.map +1 -0
  46. package/dist/config.d.ts +10 -0
  47. package/dist/config.d.ts.map +1 -0
  48. package/dist/config.js +39 -0
  49. package/dist/config.js.map +1 -0
  50. package/dist/index.js +40 -4
  51. package/dist/index.js.map +1 -1
  52. package/dist/output.d.ts +10 -0
  53. package/dist/output.d.ts.map +1 -0
  54. package/dist/output.js +99 -0
  55. package/dist/output.js.map +1 -0
  56. package/package.json +2 -2
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAMvE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBnB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE1C"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgBvE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBnB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE1C"}
package/dist/api.js CHANGED
@@ -1,9 +1,17 @@
1
+ import { getApiKey } from "./config.js";
1
2
  export function getOpts(cmd) {
2
3
  const opts = cmd.optsWithGlobals();
3
- return {
4
- token: opts.token,
5
- apiUrl: opts.apiUrl ?? "https://api.chat.arinova.ai",
6
- };
4
+ // Priority: --token flag > config file apiKey > error
5
+ let token = opts.token;
6
+ if (!token) {
7
+ token = getApiKey();
8
+ }
9
+ if (!token) {
10
+ console.error("Error: No token provided. Use --token flag or run: arinova auth set-key <key>");
11
+ process.exit(1);
12
+ }
13
+ const apiUrl = opts.apiUrl ?? "https://api.chat.arinova.ai";
14
+ return { token, apiUrl };
7
15
  }
8
16
  export async function apiCall(opts) {
9
17
  const headers = {
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IACnC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAe;QAC3B,MAAM,EAAG,IAAI,CAAC,MAAiB,IAAI,6BAA6B;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;KACtC,CAAC;IACF,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAE3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAa;IAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IAEnC,sDAAsD;IACtD,IAAI,KAAK,GAAG,IAAI,CAAC,KAA2B,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,SAAS,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAI,IAAI,CAAC,MAAiB,IAAI,6BAA6B,CAAC;IAExE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;KACtC,CAAC;IACF,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAE3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAa;IAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare class ApiError extends Error {
2
+ status: number;
3
+ body: unknown;
4
+ constructor(status: number, body: unknown);
5
+ }
6
+ export declare function get(path: string): Promise<unknown>;
7
+ export declare function post(path: string, body?: unknown): Promise<unknown>;
8
+ export declare function patch(path: string, body?: unknown): Promise<unknown>;
9
+ export declare function put(path: string, body?: unknown): Promise<unknown>;
10
+ export declare function del(path: string): Promise<unknown>;
11
+ export declare function upload(path: string, filePath: string, fieldName?: string): Promise<unknown>;
12
+ export declare function uploadMultipart(path: string, fields: Record<string, string | Blob>, method?: "POST" | "PUT"): Promise<unknown>;
13
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,OAAO;gBADb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO;CAIvB;AA+BD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO1E;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxE;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxD;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,EACrC,MAAM,GAAE,MAAM,GAAG,KAAc,GAC9B,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
package/dist/client.js ADDED
@@ -0,0 +1,104 @@
1
+ import { getApiKey, getEndpoint } from "./config.js";
2
+ import { readFileSync } from "node:fs";
3
+ import { basename } from "node:path";
4
+ export class ApiError extends Error {
5
+ status;
6
+ body;
7
+ constructor(status, body) {
8
+ super(`API error ${status}: ${typeof body === "string" ? body : JSON.stringify(body)}`);
9
+ this.status = status;
10
+ this.body = body;
11
+ }
12
+ }
13
+ function headers() {
14
+ const key = getApiKey();
15
+ if (!key) {
16
+ throw new Error("No API key configured. Run: arinova auth set-key <key>");
17
+ }
18
+ return {
19
+ Authorization: `Bearer ${key}`,
20
+ "Content-Type": "application/json",
21
+ };
22
+ }
23
+ function url(path) {
24
+ return `${getEndpoint()}${path}`;
25
+ }
26
+ async function handleResponse(res) {
27
+ const body = await res.text();
28
+ let parsed;
29
+ try {
30
+ parsed = JSON.parse(body);
31
+ }
32
+ catch {
33
+ parsed = body;
34
+ }
35
+ if (!res.ok) {
36
+ throw new ApiError(res.status, parsed);
37
+ }
38
+ return parsed;
39
+ }
40
+ export async function get(path) {
41
+ const res = await fetch(url(path), { method: "GET", headers: headers() });
42
+ return handleResponse(res);
43
+ }
44
+ export async function post(path, body) {
45
+ const res = await fetch(url(path), {
46
+ method: "POST",
47
+ headers: headers(),
48
+ body: body != null ? JSON.stringify(body) : undefined,
49
+ });
50
+ return handleResponse(res);
51
+ }
52
+ export async function patch(path, body) {
53
+ const res = await fetch(url(path), {
54
+ method: "PATCH",
55
+ headers: headers(),
56
+ body: body != null ? JSON.stringify(body) : undefined,
57
+ });
58
+ return handleResponse(res);
59
+ }
60
+ export async function put(path, body) {
61
+ const res = await fetch(url(path), {
62
+ method: "PUT",
63
+ headers: headers(),
64
+ body: body != null ? JSON.stringify(body) : undefined,
65
+ });
66
+ return handleResponse(res);
67
+ }
68
+ export async function del(path) {
69
+ const res = await fetch(url(path), { method: "DELETE", headers: headers() });
70
+ return handleResponse(res);
71
+ }
72
+ export async function upload(path, filePath, fieldName = "file") {
73
+ const key = getApiKey();
74
+ if (!key) {
75
+ throw new Error("No API key configured. Run: arinova auth set-key <key>");
76
+ }
77
+ const fileData = readFileSync(filePath);
78
+ const blob = new Blob([fileData]);
79
+ const form = new FormData();
80
+ form.append(fieldName, blob, basename(filePath));
81
+ const res = await fetch(url(path), {
82
+ method: "POST",
83
+ headers: { Authorization: `Bearer ${key}` },
84
+ body: form,
85
+ });
86
+ return handleResponse(res);
87
+ }
88
+ export async function uploadMultipart(path, fields, method = "POST") {
89
+ const key = getApiKey();
90
+ if (!key) {
91
+ throw new Error("No API key configured. Run: arinova auth set-key <key>");
92
+ }
93
+ const form = new FormData();
94
+ for (const [k, v] of Object.entries(fields)) {
95
+ form.append(k, v);
96
+ }
97
+ const res = await fetch(url(path), {
98
+ method,
99
+ headers: { Authorization: `Bearer ${key}` },
100
+ body: form,
101
+ });
102
+ return handleResponse(res);
103
+ }
104
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerApp(program: Command): void;
3
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgHlD"}
@@ -0,0 +1,104 @@
1
+ import { get, post, put, del } from "../client.js";
2
+ import { printResult, printError, printSuccess, table } from "../output.js";
3
+ export function registerApp(program) {
4
+ const app = program.command("app").description("OAuth App management");
5
+ app
6
+ .command("list")
7
+ .description("List your OAuth apps")
8
+ .action(async () => {
9
+ try {
10
+ const data = await get("/api/developer/apps");
11
+ const apps = data.apps ?? data;
12
+ if (Array.isArray(apps)) {
13
+ table(apps, [
14
+ { key: "id", label: "ID" },
15
+ { key: "name", label: "Name" },
16
+ { key: "status", label: "Status" },
17
+ { key: "category", label: "Category" },
18
+ ]);
19
+ }
20
+ else {
21
+ printResult(data);
22
+ }
23
+ }
24
+ catch (err) {
25
+ printError(err);
26
+ }
27
+ });
28
+ app
29
+ .command("create")
30
+ .description("Create a new OAuth app (public client, uses PKCE)")
31
+ .requiredOption("--name <name>", "App name")
32
+ .option("--redirect-uri <uri>", "Redirect URI")
33
+ .option("--description <desc>", "Description")
34
+ .option("--category <cat>", "Category (game, tool, social, etc.)", "other")
35
+ .action(async (opts) => {
36
+ try {
37
+ const data = await post("/api/developer/apps", {
38
+ name: opts.name,
39
+ description: opts.description,
40
+ category: opts.category,
41
+ externalUrl: opts.redirectUri,
42
+ });
43
+ printResult(data);
44
+ const d = data;
45
+ if (d.clientId) {
46
+ console.log(`\n Client ID: ${d.clientId}`);
47
+ console.log(" Type: Public (PKCE) — no client_secret needed");
48
+ }
49
+ }
50
+ catch (err) {
51
+ printError(err);
52
+ }
53
+ });
54
+ app
55
+ .command("show <id>")
56
+ .description("Show OAuth app details")
57
+ .action(async (id) => {
58
+ try {
59
+ const data = await get(`/api/developer/apps/${id}`);
60
+ printResult(data);
61
+ }
62
+ catch (err) {
63
+ printError(err);
64
+ }
65
+ });
66
+ app
67
+ .command("update <id>")
68
+ .description("Update an OAuth app")
69
+ .option("--name <name>", "New name")
70
+ .option("--redirect-uri <uri>", "New redirect URI")
71
+ .option("--description <desc>", "New description")
72
+ .option("--category <cat>", "New category")
73
+ .action(async (id, opts) => {
74
+ try {
75
+ const body = {};
76
+ if (opts.name)
77
+ body.name = opts.name;
78
+ if (opts.redirectUri)
79
+ body.externalUrl = opts.redirectUri;
80
+ if (opts.description)
81
+ body.description = opts.description;
82
+ if (opts.category)
83
+ body.category = opts.category;
84
+ const data = await put(`/api/developer/apps/${id}`, body);
85
+ printResult(data);
86
+ }
87
+ catch (err) {
88
+ printError(err);
89
+ }
90
+ });
91
+ app
92
+ .command("delete <id>")
93
+ .description("Delete an OAuth app")
94
+ .action(async (id) => {
95
+ try {
96
+ await del(`/api/developer/apps/${id}`);
97
+ printSuccess(`App ${id} deleted.`);
98
+ }
99
+ catch (err) {
100
+ printError(err);
101
+ }
102
+ });
103
+ }
104
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAuth(program: Command): void;
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;AAKpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwJnD"}
@@ -0,0 +1,151 @@
1
+ import { createServer } from "node:http";
2
+ import { loadConfig, saveConfig, getApiKey, getEndpoint } from "../config.js";
3
+ import { printResult, printError, printSuccess } from "../output.js";
4
+ export function registerAuth(program) {
5
+ const auth = program.command("auth").description("Authentication commands");
6
+ auth
7
+ .command("login")
8
+ .description("Log in via browser (opens Arinova to generate a CLI key)")
9
+ .option("-p, --port <port>", "Local callback port", "9876")
10
+ .action(async (opts) => {
11
+ const port = parseInt(opts.port, 10);
12
+ const endpoint = getEndpoint();
13
+ console.log("Opening browser for authentication...");
14
+ console.log(`Waiting for callback on http://localhost:${port} ...\n`);
15
+ const keyPromise = new Promise((resolve, reject) => {
16
+ const server = createServer((req, res) => {
17
+ const url = new URL(req.url || "/", `http://localhost:${port}`);
18
+ if (url.pathname === "/callback") {
19
+ const key = url.searchParams.get("key");
20
+ if (key && key.startsWith("ari_")) {
21
+ res.writeHead(200, { "Content-Type": "text/html" });
22
+ res.end("<html><body><h2>Authentication successful!</h2><p>You can close this tab.</p></body></html>");
23
+ server.close();
24
+ resolve(key);
25
+ }
26
+ else {
27
+ res.writeHead(400, { "Content-Type": "text/html" });
28
+ res.end("<html><body><h2>Invalid key</h2></body></html>");
29
+ server.close();
30
+ reject(new Error("Received invalid key from browser"));
31
+ }
32
+ }
33
+ else {
34
+ res.writeHead(404);
35
+ res.end("Not found");
36
+ }
37
+ });
38
+ server.listen(port, () => {
39
+ const loginUrl = `${endpoint}/creator/cli-auth?callback=http://localhost:${port}/callback`;
40
+ // Open browser
41
+ const open = process.platform === "darwin" ? "open" :
42
+ process.platform === "win32" ? "start" : "xdg-open";
43
+ import("node:child_process").then(({ exec }) => {
44
+ exec(`${open} "${loginUrl}"`);
45
+ });
46
+ console.log(`If the browser didn't open, visit:\n ${loginUrl}\n`);
47
+ });
48
+ setTimeout(() => {
49
+ server.close();
50
+ reject(new Error("Login timed out after 120 seconds"));
51
+ }, 120_000);
52
+ });
53
+ try {
54
+ const key = await keyPromise;
55
+ const config = loadConfig();
56
+ config.apiKey = key;
57
+ saveConfig(config);
58
+ printSuccess(`Logged in! API key saved (prefix: ${key.slice(0, 12)}...)`);
59
+ }
60
+ catch (err) {
61
+ printError(err);
62
+ }
63
+ });
64
+ auth
65
+ .command("logout")
66
+ .description("Remove stored API key")
67
+ .action(() => {
68
+ const config = loadConfig();
69
+ if (!config.apiKey) {
70
+ console.log("No API key configured. Already logged out.");
71
+ return;
72
+ }
73
+ delete config.apiKey;
74
+ saveConfig(config);
75
+ printSuccess("Logged out. API key removed.");
76
+ });
77
+ auth
78
+ .command("set-key <key>")
79
+ .description("Set your API key")
80
+ .action((key) => {
81
+ if (!key.startsWith("ari_")) {
82
+ printError(new Error("Invalid key format. Expected key starting with ari_"));
83
+ return;
84
+ }
85
+ const config = loadConfig();
86
+ config.apiKey = key;
87
+ saveConfig(config);
88
+ printSuccess(`API key saved (prefix: ${key.slice(0, 12)}...)`);
89
+ });
90
+ auth
91
+ .command("whoami")
92
+ .description("Show current user info")
93
+ .action(async () => {
94
+ try {
95
+ const key = getApiKey();
96
+ if (!key) {
97
+ printError(new Error("No API key configured. Run: arinova auth login"));
98
+ return;
99
+ }
100
+ const res = await fetch(`${getEndpoint()}/api/creator/api-keys/whoami`, {
101
+ headers: { Authorization: `Bearer ${key}` },
102
+ });
103
+ if (!res.ok) {
104
+ const body = await res.text();
105
+ printError(new Error(`API error ${res.status}: ${body}`));
106
+ return;
107
+ }
108
+ const data = await res.json();
109
+ printResult(data);
110
+ }
111
+ catch (err) {
112
+ printError(err);
113
+ }
114
+ });
115
+ const config = program.command("config").description("Configuration commands");
116
+ config
117
+ .command("set <key> <value>")
118
+ .description("Set a config value (endpoint)")
119
+ .action((key, value) => {
120
+ if (key !== "endpoint") {
121
+ printError(new Error(`Unknown config key: ${key}. Supported: endpoint`));
122
+ return;
123
+ }
124
+ try {
125
+ new URL(value);
126
+ }
127
+ catch {
128
+ printError(new Error("Invalid URL format"));
129
+ return;
130
+ }
131
+ if (!value.startsWith("https://") && !value.startsWith("http://localhost")) {
132
+ printError(new Error("Endpoint must use HTTPS (or http://localhost for dev)"));
133
+ return;
134
+ }
135
+ const cfg = loadConfig();
136
+ cfg.endpoint = value.replace(/\/+$/, "");
137
+ saveConfig(cfg);
138
+ printSuccess(`endpoint set to ${cfg.endpoint}`);
139
+ });
140
+ config
141
+ .command("show")
142
+ .description("Show current configuration")
143
+ .action(() => {
144
+ const cfg = loadConfig();
145
+ printResult({
146
+ endpoint: cfg.endpoint ?? "https://chat.arinova.ai (default)",
147
+ apiKey: cfg.apiKey ? `${cfg.apiKey.slice(0, 12)}...(set)` : "(not set)",
148
+ });
149
+ });
150
+ }
151
+ //# 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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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerCommunity(program: Command): void;
3
+ //# sourceMappingURL=community.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community.d.ts","sourceRoot":"","sources":["../../src/commands/community.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsJxD"}
@@ -0,0 +1,155 @@
1
+ import { get, post, patch, del } from "../client.js";
2
+ import { printResult, printError, printSuccess, table } from "../output.js";
3
+ export function registerCommunity(program) {
4
+ const community = program.command("community").description("Community management");
5
+ community
6
+ .command("list")
7
+ .description("List your communities")
8
+ .action(async () => {
9
+ try {
10
+ const data = await get("/api/creator/community");
11
+ const communities = data.communities ?? data;
12
+ if (Array.isArray(communities)) {
13
+ table(communities, [
14
+ { key: "id", label: "ID" },
15
+ { key: "name", label: "Name" },
16
+ { key: "type", label: "Type" },
17
+ { key: "member_count", label: "Members" },
18
+ ]);
19
+ }
20
+ else {
21
+ printResult(data);
22
+ }
23
+ }
24
+ catch (err) {
25
+ printError(err);
26
+ }
27
+ });
28
+ community
29
+ .command("create")
30
+ .description("Create a new community")
31
+ .requiredOption("--name <name>", "Community name")
32
+ .option("--type <type>", "Type (community or lounge)", "community")
33
+ .option("--description <desc>", "Description")
34
+ .action(async (opts) => {
35
+ try {
36
+ const data = await post("/api/communities", {
37
+ name: opts.name,
38
+ type: opts.type,
39
+ description: opts.description ?? "",
40
+ });
41
+ printResult(data);
42
+ }
43
+ catch (err) {
44
+ printError(err);
45
+ }
46
+ });
47
+ community
48
+ .command("update <id>")
49
+ .description("Update a community")
50
+ .option("--name <name>", "New name")
51
+ .option("--description <desc>", "New description")
52
+ .action(async (id, opts) => {
53
+ try {
54
+ const body = {};
55
+ if (opts.name)
56
+ body.name = opts.name;
57
+ if (opts.description)
58
+ body.description = opts.description;
59
+ const data = await patch(`/api/communities/${id}`, body);
60
+ printResult(data);
61
+ }
62
+ catch (err) {
63
+ printError(err);
64
+ }
65
+ });
66
+ community
67
+ .command("delete <id>")
68
+ .description("Delete a community")
69
+ .action(async (id) => {
70
+ try {
71
+ await del(`/api/communities/${id}`);
72
+ printSuccess(`Community ${id} deleted.`);
73
+ }
74
+ catch (err) {
75
+ printError(err);
76
+ }
77
+ });
78
+ community
79
+ .command("add-agent <communityId> <agentId>")
80
+ .description("Add an agent to a community")
81
+ .action(async (communityId, agentId) => {
82
+ try {
83
+ const data = await post(`/api/communities/${communityId}/agents`, {
84
+ agent_id: agentId,
85
+ });
86
+ printResult(data);
87
+ }
88
+ catch (err) {
89
+ printError(err);
90
+ }
91
+ });
92
+ community
93
+ .command("remove-agent <communityId> <agentId>")
94
+ .description("Remove an agent from a community")
95
+ .action(async (communityId, agentId) => {
96
+ try {
97
+ await del(`/api/communities/${communityId}/agents/${agentId}`);
98
+ printSuccess(`Agent ${agentId} removed from community ${communityId}.`);
99
+ }
100
+ catch (err) {
101
+ printError(err);
102
+ }
103
+ });
104
+ community
105
+ .command("list-members <communityId>")
106
+ .description("List members of a community")
107
+ .action(async (communityId) => {
108
+ try {
109
+ const data = await get(`/api/communities/${communityId}/members`);
110
+ printResult(data);
111
+ }
112
+ catch (err) {
113
+ printError(err);
114
+ }
115
+ });
116
+ community
117
+ .command("list-agents <communityId>")
118
+ .description("List agents in a community")
119
+ .action(async (communityId) => {
120
+ try {
121
+ const data = await get(`/api/communities/${communityId}/agents`);
122
+ printResult(data);
123
+ }
124
+ catch (err) {
125
+ printError(err);
126
+ }
127
+ });
128
+ community
129
+ .command("unpublish <id>")
130
+ .description("Unpublish a community")
131
+ .action(async (id) => {
132
+ try {
133
+ const data = await patch(`/api/communities/${id}`, { status: "draft" });
134
+ printResult(data);
135
+ }
136
+ catch (err) {
137
+ printError(err);
138
+ }
139
+ });
140
+ // ── Lounge shortcut ──────────────────────────────────────────
141
+ const lounge = program.command("lounge").description("Lounge management");
142
+ lounge
143
+ .command("unpublish <id>")
144
+ .description("Unpublish a lounge")
145
+ .action(async (id) => {
146
+ try {
147
+ const data = await patch(`/api/communities/${id}`, { status: "draft" });
148
+ printResult(data);
149
+ }
150
+ catch (err) {
151
+ printError(err);
152
+ }
153
+ });
154
+ }
155
+ //# sourceMappingURL=community.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community.js","sourceRoot":"","sources":["../../src/commands/community.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerExpert(program: Command): void;
3
+ //# sourceMappingURL=expert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expert.d.ts","sourceRoot":"","sources":["../../src/commands/expert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyJrD"}