@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.
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +12 -4
- package/dist/api.js.map +1 -1
- package/dist/client.d.ts +13 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +104 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/app.d.ts +3 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +104 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +151 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/community.d.ts +3 -0
- package/dist/commands/community.d.ts.map +1 -0
- package/dist/commands/community.js +155 -0
- package/dist/commands/community.js.map +1 -0
- package/dist/commands/expert.d.ts +3 -0
- package/dist/commands/expert.d.ts.map +1 -0
- package/dist/commands/expert.js +140 -0
- package/dist/commands/expert.js.map +1 -0
- package/dist/commands/kanban.js +3 -3
- package/dist/commands/kanban.js.map +1 -1
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +93 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/space.d.ts +3 -0
- package/dist/commands/space.d.ts.map +1 -0
- package/dist/commands/space.js +134 -0
- package/dist/commands/space.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +31 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sticker.d.ts +3 -0
- package/dist/commands/sticker.d.ts.map +1 -0
- package/dist/commands/sticker.js +142 -0
- package/dist/commands/sticker.js.map +1 -0
- package/dist/commands/theme.d.ts +3 -0
- package/dist/commands/theme.d.ts.map +1 -0
- package/dist/commands/theme.js +547 -0
- package/dist/commands/theme.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +39 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +40 -4
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +10 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +99 -0
- package/dist/output.js.map +1 -0
- 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;
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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":"
|
|
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"}
|
package/dist/client.d.ts
ADDED
|
@@ -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 @@
|
|
|
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":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAEvE,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAI,IAAgC,CAAC,IAAI,IAAI,IAAI,CAAC;YAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAiC,EAAE;oBACvC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC1B,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC9B,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAClC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mDAAmD,CAAC;SAChE,cAAc,CAAC,eAAe,EAAE,UAAU,CAAC;SAC3C,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC;SAC9C,MAAM,CAAC,sBAAsB,EAAE,aAAa,CAAC;SAC7C,MAAM,CAAC,kBAAkB,EAAE,qCAAqC,EAAE,OAAO,CAAC;SAC1E,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE;gBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,IAA+B,CAAC;YAC1C,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CACF,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC;SACnC,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;SAClD,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC;SAC1C,MAAM,CACL,KAAK,EACH,EAAU,EACV,IAKC,EACD,EAAE;QACF,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrC,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1D,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1D,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,uBAAuB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1D,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CACF,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YACvC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|