@arinova-ai/cli 0.0.4 → 0.0.7

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 (60) 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/setup-openclaw.d.ts +3 -0
  31. package/dist/commands/setup-openclaw.d.ts.map +1 -0
  32. package/dist/commands/setup-openclaw.js +186 -0
  33. package/dist/commands/setup-openclaw.js.map +1 -0
  34. package/dist/commands/space.d.ts +3 -0
  35. package/dist/commands/space.d.ts.map +1 -0
  36. package/dist/commands/space.js +134 -0
  37. package/dist/commands/space.js.map +1 -0
  38. package/dist/commands/stats.d.ts +3 -0
  39. package/dist/commands/stats.d.ts.map +1 -0
  40. package/dist/commands/stats.js +31 -0
  41. package/dist/commands/stats.js.map +1 -0
  42. package/dist/commands/sticker.d.ts +3 -0
  43. package/dist/commands/sticker.d.ts.map +1 -0
  44. package/dist/commands/sticker.js +142 -0
  45. package/dist/commands/sticker.js.map +1 -0
  46. package/dist/commands/theme.d.ts +3 -0
  47. package/dist/commands/theme.d.ts.map +1 -0
  48. package/dist/commands/theme.js +547 -0
  49. package/dist/commands/theme.js.map +1 -0
  50. package/dist/config.d.ts +10 -0
  51. package/dist/config.d.ts.map +1 -0
  52. package/dist/config.js +39 -0
  53. package/dist/config.js.map +1 -0
  54. package/dist/index.js +42 -4
  55. package/dist/index.js.map +1 -1
  56. package/dist/output.d.ts +10 -0
  57. package/dist/output.d.ts.map +1 -0
  58. package/dist/output.js +99 -0
  59. package/dist/output.js.map +1 -0
  60. package/package.json +2 -2
@@ -0,0 +1,547 @@
1
+ import { get, del, patch, uploadMultipart } from "../client.js";
2
+ import { printResult, printError, printSuccess, table } from "../output.js";
3
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync, watch, } from "node:fs";
4
+ import { join, extname, resolve } from "node:path";
5
+ import { createServer } from "node:http";
6
+ import { execSync } from "node:child_process";
7
+ export function registerTheme(program) {
8
+ const theme = program.command("theme").description("Theme management");
9
+ // ── Existing commands ─────────────────────────────────────
10
+ theme
11
+ .command("list")
12
+ .description("List your themes")
13
+ .action(async () => {
14
+ try {
15
+ const data = await get("/api/creator/themes");
16
+ const themes = data.themes ?? data;
17
+ if (Array.isArray(themes)) {
18
+ table(themes, [
19
+ { key: "id", label: "ID" },
20
+ { key: "name", label: "Name" },
21
+ { key: "price", label: "Price" },
22
+ { key: "status", label: "Status" },
23
+ ]);
24
+ }
25
+ else {
26
+ printResult(data);
27
+ }
28
+ }
29
+ catch (err) {
30
+ printError(err);
31
+ }
32
+ });
33
+ theme
34
+ .command("upload <manifestFile> [bundleFile]")
35
+ .description("Upload a theme (manifest JSON + optional zip bundle)")
36
+ .action(async (manifestFile, bundleFile) => {
37
+ try {
38
+ if (!existsSync(manifestFile)) {
39
+ printError(new Error(`File not found: ${manifestFile}`));
40
+ return;
41
+ }
42
+ if (bundleFile && !existsSync(bundleFile)) {
43
+ printError(new Error(`File not found: ${bundleFile}`));
44
+ return;
45
+ }
46
+ const manifestData = readFileSync(manifestFile);
47
+ const fields = {
48
+ manifest: new Blob([manifestData], { type: "application/json" }),
49
+ };
50
+ if (bundleFile) {
51
+ const bundleData = readFileSync(bundleFile);
52
+ fields.bundle = new Blob([bundleData], { type: "application/zip" });
53
+ }
54
+ const data = await uploadMultipart("/api/themes/upload", fields);
55
+ printResult(data);
56
+ }
57
+ catch (err) {
58
+ printError(err);
59
+ }
60
+ });
61
+ theme
62
+ .command("update <id> <manifestFile> [bundleFile]")
63
+ .description("Update a theme")
64
+ .action(async (id, manifestFile, bundleFile) => {
65
+ try {
66
+ if (!existsSync(manifestFile)) {
67
+ printError(new Error(`File not found: ${manifestFile}`));
68
+ return;
69
+ }
70
+ if (bundleFile && !existsSync(bundleFile)) {
71
+ printError(new Error(`File not found: ${bundleFile}`));
72
+ return;
73
+ }
74
+ const manifestData = readFileSync(manifestFile);
75
+ const fields = {
76
+ manifest: new Blob([manifestData], { type: "application/json" }),
77
+ };
78
+ if (bundleFile) {
79
+ const bundleData = readFileSync(bundleFile);
80
+ fields.bundle = new Blob([bundleData], { type: "application/zip" });
81
+ }
82
+ const data = await uploadMultipart(`/api/themes/${id}`, fields, "PUT");
83
+ printResult(data);
84
+ }
85
+ catch (err) {
86
+ printError(err);
87
+ }
88
+ });
89
+ theme
90
+ .command("delete <id>")
91
+ .description("Delete a theme")
92
+ .action(async (id) => {
93
+ try {
94
+ await del(`/api/themes/${id}`);
95
+ printSuccess(`Theme ${id} deleted.`);
96
+ }
97
+ catch (err) {
98
+ printError(err);
99
+ }
100
+ });
101
+ theme
102
+ .command("publish <id>")
103
+ .description("Publish a theme")
104
+ .action(async (id) => {
105
+ try {
106
+ const data = await patch(`/api/themes/${id}/status`, { status: "published" });
107
+ printResult(data);
108
+ }
109
+ catch (err) {
110
+ printError(err);
111
+ }
112
+ });
113
+ theme
114
+ .command("unpublish <id>")
115
+ .description("Unpublish a theme")
116
+ .action(async (id) => {
117
+ try {
118
+ const data = await patch(`/api/themes/${id}/status`, { status: "draft" });
119
+ printResult(data);
120
+ }
121
+ catch (err) {
122
+ printError(err);
123
+ }
124
+ });
125
+ theme
126
+ .command("info <id>")
127
+ .description("Show detailed info about a theme")
128
+ .action(async (id) => {
129
+ try {
130
+ const data = await get(`/api/themes/${id}`);
131
+ printResult(data);
132
+ }
133
+ catch (err) {
134
+ printError(err);
135
+ }
136
+ });
137
+ // ── New SDK v2 commands ───────────────────────────────────
138
+ theme
139
+ .command("init <name>")
140
+ .description("Scaffold a new SDK v2 theme project")
141
+ .action(async (name) => {
142
+ try {
143
+ const dir = resolve(name);
144
+ if (existsSync(dir)) {
145
+ printError(new Error(`Directory already exists: ${name}`));
146
+ return;
147
+ }
148
+ mkdirSync(dir, { recursive: true });
149
+ mkdirSync(join(dir, "assets"), { recursive: true });
150
+ const themeJson = {
151
+ name,
152
+ version: "1.0.0",
153
+ renderer: "iframe",
154
+ description: "",
155
+ entry: "theme.js",
156
+ };
157
+ writeFileSync(join(dir, "theme.json"), JSON.stringify(themeJson, null, 2) + "\n");
158
+ writeFileSync(join(dir, "theme.js"), `// ${name} — Arinova Office SDK v2 Theme
159
+ // Docs: https://docs.arinova.ai/themes/sdk-v2
160
+
161
+ export default {
162
+ async init(sdk, container) {
163
+ const style = document.createElement("style");
164
+ style.textContent = \`
165
+ #grid {
166
+ display: grid;
167
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
168
+ gap: 12px;
169
+ padding: 16px;
170
+ height: 100%;
171
+ align-content: start;
172
+ }
173
+ .agent-card {
174
+ background: #1e293b;
175
+ border-radius: 12px;
176
+ padding: 16px;
177
+ cursor: pointer;
178
+ transition: transform 0.2s, box-shadow 0.2s;
179
+ border: 2px solid transparent;
180
+ }
181
+ .agent-card:hover { transform: scale(1.04); }
182
+ .agent-card.working { border-color: #4ade80; box-shadow: 0 0 12px #4ade8040; }
183
+ .agent-card.idle { border-color: #64748b; }
184
+ .agent-card.blocked { border-color: #f87171; }
185
+ .agent-card.collaborating { border-color: #60a5fa; }
186
+ .agent-name { font-size: 16px; font-weight: 600; color: #f1f5f9; }
187
+ .agent-role { font-size: 13px; color: #94a3b8; margin-top: 2px; }
188
+ .agent-task { font-size: 12px; color: #4ade80; margin-top: 8px; }
189
+ \`;
190
+ container.appendChild(style);
191
+ container.innerHTML += '<div id="grid"></div>';
192
+
193
+ const grid = container.querySelector("#grid");
194
+
195
+ function render(agents) {
196
+ grid.innerHTML = agents.map(function (a) {
197
+ return '<div class="agent-card ' + a.status + '" data-id="' + a.id + '">'
198
+ + '<div class="agent-name">' + a.emoji + ' ' + a.name + '</div>'
199
+ + '<div class="agent-role">' + a.role + '</div>'
200
+ + (a.currentTask ? '<div class="agent-task">' + a.currentTask.title + '</div>' : '')
201
+ + '</div>';
202
+ }).join("");
203
+
204
+ grid.querySelectorAll(".agent-card").forEach(function (card) {
205
+ card.addEventListener("click", function () {
206
+ sdk.selectAgent(card.dataset.id);
207
+ });
208
+ });
209
+ }
210
+
211
+ render(sdk.agents);
212
+ sdk.onAgentsChange(render);
213
+ },
214
+
215
+ resize(w, h) {},
216
+ destroy() {},
217
+ };
218
+ `);
219
+ printSuccess(`Theme scaffolded in ./${name}/`);
220
+ console.log(" theme.json — metadata");
221
+ console.log(" theme.js — entry point");
222
+ console.log(" assets/ — static resources");
223
+ console.log("");
224
+ console.log("Next steps:");
225
+ console.log(` cd ${name}`);
226
+ console.log(" arinova theme dev");
227
+ }
228
+ catch (err) {
229
+ printError(err);
230
+ }
231
+ });
232
+ theme
233
+ .command("dev")
234
+ .description("Start local dev server for theme development")
235
+ .option("-p, --port <port>", "Port number", "3100")
236
+ .action(async (opts) => {
237
+ try {
238
+ const cwd = process.cwd();
239
+ const manifestPath = join(cwd, "theme.json");
240
+ if (!existsSync(manifestPath)) {
241
+ printError(new Error("theme.json not found. Run this inside a theme directory."));
242
+ return;
243
+ }
244
+ const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
245
+ const themeName = manifest.name || "dev-theme";
246
+ const port = parseInt(opts.port, 10);
247
+ const MOCK_BRIDGE = generateMockBridge(themeName);
248
+ const RUNTIME_HTML = generateDevHtml(themeName);
249
+ const MIME = {
250
+ ".html": "text/html",
251
+ ".js": "text/javascript",
252
+ ".mjs": "text/javascript",
253
+ ".css": "text/css",
254
+ ".json": "application/json",
255
+ ".png": "image/png",
256
+ ".jpg": "image/jpeg",
257
+ ".jpeg": "image/jpeg",
258
+ ".gif": "image/gif",
259
+ ".svg": "image/svg+xml",
260
+ ".webp": "image/webp",
261
+ ".woff": "font/woff",
262
+ ".woff2": "font/woff2",
263
+ ".ttf": "font/ttf",
264
+ ".mp3": "audio/mpeg",
265
+ ".ogg": "audio/ogg",
266
+ ".wav": "audio/wav",
267
+ ".glb": "model/gltf-binary",
268
+ };
269
+ const server = createServer((req, res) => {
270
+ const url = req.url || "/";
271
+ if (url === "/" || url === "/index.html") {
272
+ res.writeHead(200, { "Content-Type": "text/html" });
273
+ res.end(RUNTIME_HTML);
274
+ return;
275
+ }
276
+ if (url === "/bridge.js") {
277
+ res.writeHead(200, { "Content-Type": "text/javascript" });
278
+ res.end(MOCK_BRIDGE);
279
+ return;
280
+ }
281
+ if (url === "/theme.js") {
282
+ const entry = manifest.entry || "theme.js";
283
+ const filePath = join(cwd, entry);
284
+ if (!existsSync(filePath)) {
285
+ res.writeHead(404);
286
+ res.end("Not found");
287
+ return;
288
+ }
289
+ res.writeHead(200, { "Content-Type": "text/javascript" });
290
+ res.end(readFileSync(filePath));
291
+ return;
292
+ }
293
+ // Serve assets
294
+ if (url.startsWith("/assets/")) {
295
+ const relPath = url.slice("/assets/".length);
296
+ const filePath = join(cwd, "assets", relPath);
297
+ if (existsSync(filePath) && statSync(filePath).isFile()) {
298
+ const ext = extname(filePath).toLowerCase();
299
+ const ct = MIME[ext] || "application/octet-stream";
300
+ res.writeHead(200, { "Content-Type": ct });
301
+ res.end(readFileSync(filePath));
302
+ return;
303
+ }
304
+ }
305
+ // Live reload event stream
306
+ if (url === "/__reload") {
307
+ res.writeHead(200, {
308
+ "Content-Type": "text/event-stream",
309
+ "Cache-Control": "no-cache",
310
+ Connection: "keep-alive",
311
+ });
312
+ res.write("data: connected\n\n");
313
+ const watcher = watch(cwd, { recursive: true }, (_event, filename) => {
314
+ if (filename && !filename.startsWith(".") && !filename.includes("node_modules")) {
315
+ res.write("data: reload\n\n");
316
+ }
317
+ });
318
+ req.on("close", () => watcher.close());
319
+ return;
320
+ }
321
+ res.writeHead(404);
322
+ res.end("Not found");
323
+ });
324
+ server.listen(port, () => {
325
+ console.log(`\n Arinova Theme Dev Server`);
326
+ console.log(` Theme: ${themeName}`);
327
+ console.log(` URL: http://localhost:${port}`);
328
+ console.log(` Press Ctrl+C to stop\n`);
329
+ });
330
+ }
331
+ catch (err) {
332
+ printError(err);
333
+ }
334
+ });
335
+ theme
336
+ .command("build")
337
+ .description("Package theme as a ZIP for upload")
338
+ .action(async () => {
339
+ try {
340
+ const cwd = process.cwd();
341
+ const manifestPath = join(cwd, "theme.json");
342
+ if (!existsSync(manifestPath)) {
343
+ printError(new Error("theme.json not found. Run this inside a theme directory."));
344
+ return;
345
+ }
346
+ const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
347
+ if (!manifest.name) {
348
+ printError(new Error("theme.json is missing 'name' field."));
349
+ return;
350
+ }
351
+ if (!manifest.entry) {
352
+ printError(new Error("theme.json is missing 'entry' field."));
353
+ return;
354
+ }
355
+ const entry = manifest.entry || "theme.js";
356
+ if (!existsSync(join(cwd, entry))) {
357
+ printError(new Error(`Entry file not found: ${entry}`));
358
+ return;
359
+ }
360
+ const outFile = `${manifest.name}.zip`;
361
+ // Collect files to include
362
+ const files = ["theme.json", entry];
363
+ const assetsDir = join(cwd, "assets");
364
+ if (existsSync(assetsDir) && statSync(assetsDir).isDirectory()) {
365
+ collectFiles(assetsDir, "assets", files);
366
+ }
367
+ // Use system zip command
368
+ const fileList = files.join(" ");
369
+ execSync(`zip -r "${outFile}" ${fileList}`, { cwd, stdio: "pipe" });
370
+ const size = statSync(join(cwd, outFile)).size;
371
+ printSuccess(`Built ${outFile} (${(size / 1024).toFixed(1)} KB, ${files.length} files)`);
372
+ console.log("\nUpload with:");
373
+ console.log(` arinova theme upload theme.json ${outFile}`);
374
+ }
375
+ catch (err) {
376
+ printError(err);
377
+ }
378
+ });
379
+ }
380
+ // ── Helpers ─────────────────────────────────────────────────
381
+ function collectFiles(dir, prefix, out) {
382
+ for (const entry of readdirSync(dir)) {
383
+ if (entry.startsWith("."))
384
+ continue;
385
+ const full = join(dir, entry);
386
+ const rel = prefix + "/" + entry;
387
+ if (statSync(full).isDirectory()) {
388
+ collectFiles(full, rel, out);
389
+ }
390
+ else {
391
+ out.push(rel);
392
+ }
393
+ }
394
+ }
395
+ function generateDevHtml(themeName) {
396
+ return `<!DOCTYPE html>
397
+ <html>
398
+ <head>
399
+ <meta charset="utf-8">
400
+ <meta name="viewport" content="width=device-width,initial-scale=1">
401
+ <title>${themeName} — Dev</title>
402
+ <style>
403
+ html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: #0f172a; }
404
+ #container { width: 100%; height: 100%; }
405
+ </style>
406
+ </head>
407
+ <body>
408
+ <div id="container"></div>
409
+ <script src="/bridge.js"></script>
410
+ <script type="module">
411
+ import theme from "/theme.js";
412
+ window.__ARINOVA_REGISTER_THEME__(theme);
413
+ </script>
414
+ <script>
415
+ var es = new EventSource("/__reload");
416
+ es.onmessage = function(e) { if (e.data === "reload") location.reload(); };
417
+ </script>
418
+ </body>
419
+ </html>`;
420
+ }
421
+ function generateMockBridge(themeName) {
422
+ return `(function() {
423
+ "use strict";
424
+
425
+ var THEME_ID = "${themeName}";
426
+ var ASSETS_BASE = "/assets";
427
+
428
+ var MOCK_NAMES = ["Alice", "Bob", "Charlie", "Diana", "Eve"];
429
+ var MOCK_ROLES = ["Engineer", "Designer", "PM", "QA", "Writer"];
430
+ var MOCK_EMOJIS = ["\\u{1F469}\\u200D\\u{1F4BB}", "\\u{1F468}\\u200D\\u{1F527}", "\\u{1F9D1}\\u200D\\u{1F3A8}", "\\u{1F9D1}\\u200D\\u{1F52C}", "\\u270D\\uFE0F"];
431
+ var MOCK_COLORS = ["#f472b6", "#60a5fa", "#4ade80", "#fbbf24", "#a78bfa"];
432
+ var STATUSES = ["working", "idle", "blocked", "collaborating"];
433
+
434
+ function makeMockAgents() {
435
+ return MOCK_NAMES.map(function(name, i) {
436
+ var status = STATUSES[Math.floor(Math.random() * STATUSES.length)];
437
+ return {
438
+ id: "agent-" + (i + 1),
439
+ name: name,
440
+ role: MOCK_ROLES[i],
441
+ emoji: MOCK_EMOJIS[i],
442
+ color: MOCK_COLORS[i],
443
+ status: status,
444
+ online: true,
445
+ collaboratingWith: status === "collaborating" ? ["agent-" + (((i + 1) % 5) + 1)] : [],
446
+ currentTask: status === "working" ? { title: "Task #" + (i + 1), priority: "medium", progress: Math.floor(Math.random() * 100), subtasks: [] } : null,
447
+ recentActivity: [{ time: new Date().toISOString(), text: "Updated status to " + status }],
448
+ model: "claude-sonnet-4",
449
+ tokenUsage: { input: 1000 + i * 500, output: 500 + i * 200, total: 1500 + i * 700 },
450
+ sessionDurationMs: 60000 * (i + 1),
451
+ currentToolDetail: status === "working" ? "edit_file" : null,
452
+ };
453
+ });
454
+ }
455
+
456
+ var _agents = makeMockAgents();
457
+ var _agentListeners = [];
458
+ var _user = { id: "dev-user", name: "Developer", username: "dev" };
459
+ var _themeVersion = "0.0.0";
460
+ var _width = window.innerWidth;
461
+ var _height = window.innerHeight;
462
+ var _isMobile = window.innerWidth < 768;
463
+ var _pixelRatio = window.devicePixelRatio || 1;
464
+ var _initialized = false;
465
+ var _themeModule = null;
466
+ var _container = null;
467
+
468
+ function notifyAgentListeners() {
469
+ for (var i = 0; i < _agentListeners.length; i++) {
470
+ try { _agentListeners[i](_agents); } catch (e) { console.error("[MockSDK]", e); }
471
+ }
472
+ }
473
+
474
+ var sdk = {
475
+ get agents() { return _agents; },
476
+ onAgentsChange: function(cb) {
477
+ _agentListeners.push(cb);
478
+ return function() {
479
+ var idx = _agentListeners.indexOf(cb);
480
+ if (idx !== -1) _agentListeners.splice(idx, 1);
481
+ };
482
+ },
483
+ getAgent: function(id) { return _agents.find(function(a) { return a.id === id; }); },
484
+ assetUrl: function(rel) {
485
+ if (!rel) return "";
486
+ if (rel.charAt(0) === "/") rel = rel.slice(1);
487
+ return ASSETS_BASE + "/" + rel;
488
+ },
489
+ loadJSON: function(rel) {
490
+ return fetch(sdk.assetUrl(rel)).then(function(r) {
491
+ if (!r.ok) throw new Error("Failed to load " + rel);
492
+ return r.json();
493
+ });
494
+ },
495
+ loadFont: function(name, rel) {
496
+ var face = new FontFace(name, "url(" + sdk.assetUrl(rel) + ")");
497
+ return face.load().then(function(f) { document.fonts.add(f); });
498
+ },
499
+ selectAgent: function(id) { console.log("[MockSDK] selectAgent:", id); },
500
+ openChat: function(id) { console.log("[MockSDK] openChat:", id); },
501
+ navigate: function(path) { console.log("[MockSDK] navigate:", path); },
502
+ emit: function(event, data) { console.log("[MockSDK] emit:", event, data); },
503
+ get width() { return _width; },
504
+ get height() { return _height; },
505
+ get isMobile() { return _isMobile; },
506
+ get pixelRatio() { return _pixelRatio; },
507
+ get user() { return _user; },
508
+ get themeId() { return THEME_ID; },
509
+ get themeVersion() { return _themeVersion; },
510
+ };
511
+
512
+ window.__ARINOVA_SDK__ = sdk;
513
+
514
+ window.__ARINOVA_REGISTER_THEME__ = function(mod) {
515
+ _themeModule = mod;
516
+ _container = document.getElementById("container");
517
+ if (!_container) return;
518
+ _initialized = true;
519
+ var m = mod.default || mod;
520
+ if (typeof m.init === "function") {
521
+ try {
522
+ var result = m.init(sdk, _container);
523
+ if (result && typeof result.catch === "function") result.catch(function(e) { console.error("[MockSDK] init error:", e); });
524
+ } catch (e) { console.error("[MockSDK] init error:", e); }
525
+ }
526
+ };
527
+
528
+ // Simulate agent updates every 5 seconds
529
+ setInterval(function() {
530
+ _agents = makeMockAgents();
531
+ notifyAgentListeners();
532
+ }, 5000);
533
+
534
+ window.addEventListener("resize", function() {
535
+ _width = window.innerWidth;
536
+ _height = window.innerHeight;
537
+ if (_themeModule) {
538
+ var m = _themeModule.default || _themeModule;
539
+ if (typeof m.resize === "function") {
540
+ try { m.resize(_width, _height); } catch (e) { console.error("[MockSDK] resize error:", e); }
541
+ }
542
+ }
543
+ });
544
+ })();
545
+ `;
546
+ }
547
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/commands/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface CliConfig {
2
+ apiKey?: string;
3
+ endpoint?: string;
4
+ }
5
+ export declare function loadConfig(): CliConfig;
6
+ export declare function saveConfig(config: CliConfig): void;
7
+ export declare function getEndpoint(): string;
8
+ export declare function getStagingEndpoint(): string;
9
+ export declare function getApiKey(): string | undefined;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAgB,UAAU,IAAI,SAAS,CAOtC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIlD;AAID,wBAAgB,WAAW,IAAI,MAAM,CAMpC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C"}
package/dist/config.js ADDED
@@ -0,0 +1,39 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ const CONFIG_DIR = join(homedir(), ".arinova-cli");
5
+ const CONFIG_FILE = join(CONFIG_DIR, "config");
6
+ function ensureDir() {
7
+ if (!existsSync(CONFIG_DIR)) {
8
+ mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
9
+ }
10
+ }
11
+ export function loadConfig() {
12
+ try {
13
+ const raw = readFileSync(CONFIG_FILE, "utf-8");
14
+ return JSON.parse(raw);
15
+ }
16
+ catch {
17
+ return {};
18
+ }
19
+ }
20
+ export function saveConfig(config) {
21
+ ensureDir();
22
+ writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), { encoding: "utf-8", mode: 0o600 });
23
+ chmodSync(CONFIG_FILE, 0o600);
24
+ }
25
+ const STAGING_ENDPOINT = "https://chat-staging.arinova.ai";
26
+ export function getEndpoint() {
27
+ // Priority: env var > config file > default
28
+ if (process.env.ARINOVA_ENDPOINT) {
29
+ return process.env.ARINOVA_ENDPOINT.replace(/\/+$/, "");
30
+ }
31
+ return loadConfig().endpoint ?? "https://chat.arinova.ai";
32
+ }
33
+ export function getStagingEndpoint() {
34
+ return STAGING_ENDPOINT;
35
+ }
36
+ export function getApiKey() {
37
+ return loadConfig().apiKey;
38
+ }
39
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACnD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE/C,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,EAAE,CAAC;IACZ,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAE3D,MAAM,UAAU,WAAW;IACzB,4CAA4C;IAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,UAAU,EAAE,CAAC,QAAQ,IAAI,yBAAyB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC;AAC7B,CAAC"}