@conceptcraft/mindframes 0.1.9 → 0.1.10
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/index.js +143 -279
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,17 +1,46 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
3
|
+
|
|
4
|
+
// src/index.ts
|
|
5
|
+
import { Command as Command20 } from "commander";
|
|
6
|
+
import chalk13 from "chalk";
|
|
12
7
|
|
|
13
8
|
// src/lib/brand.ts
|
|
14
9
|
import path from "path";
|
|
10
|
+
var BRANDS = {
|
|
11
|
+
conceptcraft: {
|
|
12
|
+
id: "conceptcraft",
|
|
13
|
+
name: "conceptcraft",
|
|
14
|
+
displayName: "ConceptCraft",
|
|
15
|
+
description: "CLI tool for ConceptCraft presentation generation",
|
|
16
|
+
commands: ["cc", "conceptcraft"],
|
|
17
|
+
apiUrl: "https://conceptcraft.ai",
|
|
18
|
+
docsUrl: "https://docs.conceptcraft.ai",
|
|
19
|
+
packageName: "@conceptcraft/cli",
|
|
20
|
+
configDir: ".conceptcraft",
|
|
21
|
+
apiKeyEnvVar: "CONCEPTCRAFT_API_KEY",
|
|
22
|
+
apiUrlEnvVar: "CONCEPTCRAFT_API_URL"
|
|
23
|
+
},
|
|
24
|
+
mindframes: {
|
|
25
|
+
id: "mindframes",
|
|
26
|
+
name: "mindframes",
|
|
27
|
+
displayName: "Mindframes",
|
|
28
|
+
description: "CLI tool for Mindframes presentation generation",
|
|
29
|
+
commands: ["mf", "mindframes"],
|
|
30
|
+
apiUrl: "https://mindframes.app",
|
|
31
|
+
docsUrl: "https://docs.mindframes.app",
|
|
32
|
+
packageName: "@conceptcraft/mindframes",
|
|
33
|
+
configDir: ".mindframes",
|
|
34
|
+
apiKeyEnvVar: "MINDFRAMES_API_KEY",
|
|
35
|
+
apiUrlEnvVar: "MINDFRAMES_API_URL"
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var COMMAND_TO_BRAND = {
|
|
39
|
+
cc: "conceptcraft",
|
|
40
|
+
conceptcraft: "conceptcraft",
|
|
41
|
+
mf: "mindframes",
|
|
42
|
+
mindframes: "mindframes"
|
|
43
|
+
};
|
|
15
44
|
function detectBrand() {
|
|
16
45
|
const binaryPath = process.argv[1] || "";
|
|
17
46
|
const binaryName = path.basename(binaryPath).replace(/\.(js|ts)$/, "");
|
|
@@ -26,50 +55,52 @@ function detectBrand() {
|
|
|
26
55
|
}
|
|
27
56
|
return BRANDS.mindframes;
|
|
28
57
|
}
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
description: "CLI tool for ConceptCraft presentation generation",
|
|
39
|
-
commands: ["cc", "conceptcraft"],
|
|
40
|
-
apiUrl: "https://conceptcraft.ai",
|
|
41
|
-
docsUrl: "https://docs.conceptcraft.ai",
|
|
42
|
-
packageName: "@conceptcraft/cli",
|
|
43
|
-
configDir: ".conceptcraft",
|
|
44
|
-
apiKeyEnvVar: "CONCEPTCRAFT_API_KEY",
|
|
45
|
-
apiUrlEnvVar: "CONCEPTCRAFT_API_URL"
|
|
46
|
-
},
|
|
47
|
-
mindframes: {
|
|
48
|
-
id: "mindframes",
|
|
49
|
-
name: "mindframes",
|
|
50
|
-
displayName: "Mindframes",
|
|
51
|
-
description: "CLI tool for Mindframes presentation generation",
|
|
52
|
-
commands: ["mf", "mindframes"],
|
|
53
|
-
apiUrl: "https://mindframes.app",
|
|
54
|
-
docsUrl: "https://docs.mindframes.app",
|
|
55
|
-
packageName: "@conceptcraft/mindframes",
|
|
56
|
-
configDir: ".mindframes",
|
|
57
|
-
apiKeyEnvVar: "MINDFRAMES_API_KEY",
|
|
58
|
-
apiUrlEnvVar: "MINDFRAMES_API_URL"
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
COMMAND_TO_BRAND = {
|
|
62
|
-
cc: "conceptcraft",
|
|
63
|
-
conceptcraft: "conceptcraft",
|
|
64
|
-
mf: "mindframes",
|
|
65
|
-
mindframes: "mindframes"
|
|
66
|
-
};
|
|
67
|
-
brand = detectBrand();
|
|
68
|
-
}
|
|
69
|
-
});
|
|
58
|
+
var brand = detectBrand();
|
|
59
|
+
|
|
60
|
+
// src/commands/login.ts
|
|
61
|
+
import { Command } from "commander";
|
|
62
|
+
import chalk3 from "chalk";
|
|
63
|
+
import ora from "ora";
|
|
64
|
+
import http from "http";
|
|
65
|
+
import { randomBytes, createHash } from "crypto";
|
|
66
|
+
import open from "open";
|
|
70
67
|
|
|
71
68
|
// src/lib/config.ts
|
|
72
69
|
import Conf from "conf";
|
|
70
|
+
var DEFAULT_API_URL = "https://www.mindframes.app";
|
|
71
|
+
var schema = {
|
|
72
|
+
apiKey: {
|
|
73
|
+
type: "string"
|
|
74
|
+
},
|
|
75
|
+
apiUrl: {
|
|
76
|
+
type: "string",
|
|
77
|
+
default: DEFAULT_API_URL
|
|
78
|
+
},
|
|
79
|
+
defaultTeamId: {
|
|
80
|
+
type: "string"
|
|
81
|
+
},
|
|
82
|
+
// OAuth tokens (preferred over API key)
|
|
83
|
+
accessToken: {
|
|
84
|
+
type: "string"
|
|
85
|
+
},
|
|
86
|
+
refreshToken: {
|
|
87
|
+
type: "string"
|
|
88
|
+
},
|
|
89
|
+
tokenExpiresAt: {
|
|
90
|
+
type: "number"
|
|
91
|
+
},
|
|
92
|
+
// OAuth client registration (cached per-server)
|
|
93
|
+
clientId: {
|
|
94
|
+
type: "string"
|
|
95
|
+
},
|
|
96
|
+
clientSecret: {
|
|
97
|
+
type: "string"
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
var config = new Conf({
|
|
101
|
+
projectName: brand.name,
|
|
102
|
+
schema
|
|
103
|
+
});
|
|
73
104
|
function getConfig() {
|
|
74
105
|
return {
|
|
75
106
|
apiKey: getApiKey(),
|
|
@@ -151,47 +182,6 @@ function setOAuthClient(clientId, clientSecret) {
|
|
|
151
182
|
config.set("clientId", clientId);
|
|
152
183
|
config.set("clientSecret", clientSecret);
|
|
153
184
|
}
|
|
154
|
-
var DEFAULT_API_URL, schema, config;
|
|
155
|
-
var init_config = __esm({
|
|
156
|
-
"src/lib/config.ts"() {
|
|
157
|
-
"use strict";
|
|
158
|
-
init_brand();
|
|
159
|
-
DEFAULT_API_URL = "https://www.mindframes.app";
|
|
160
|
-
schema = {
|
|
161
|
-
apiKey: {
|
|
162
|
-
type: "string"
|
|
163
|
-
},
|
|
164
|
-
apiUrl: {
|
|
165
|
-
type: "string",
|
|
166
|
-
default: DEFAULT_API_URL
|
|
167
|
-
},
|
|
168
|
-
defaultTeamId: {
|
|
169
|
-
type: "string"
|
|
170
|
-
},
|
|
171
|
-
// OAuth tokens (preferred over API key)
|
|
172
|
-
accessToken: {
|
|
173
|
-
type: "string"
|
|
174
|
-
},
|
|
175
|
-
refreshToken: {
|
|
176
|
-
type: "string"
|
|
177
|
-
},
|
|
178
|
-
tokenExpiresAt: {
|
|
179
|
-
type: "number"
|
|
180
|
-
},
|
|
181
|
-
// OAuth client registration (cached per-server)
|
|
182
|
-
clientId: {
|
|
183
|
-
type: "string"
|
|
184
|
-
},
|
|
185
|
-
clientSecret: {
|
|
186
|
-
type: "string"
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
config = new Conf({
|
|
190
|
-
projectName: brand.name,
|
|
191
|
-
schema
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
185
|
|
|
196
186
|
// src/lib/output.ts
|
|
197
187
|
import chalk from "chalk";
|
|
@@ -358,40 +348,25 @@ function formatJson(data) {
|
|
|
358
348
|
function printJson(data) {
|
|
359
349
|
console.log(formatJson(data));
|
|
360
350
|
}
|
|
361
|
-
var init_output = __esm({
|
|
362
|
-
"src/lib/output.ts"() {
|
|
363
|
-
"use strict";
|
|
364
|
-
init_config();
|
|
365
|
-
}
|
|
366
|
-
});
|
|
367
351
|
|
|
368
|
-
// src/
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
});
|
|
352
|
+
// src/lib/feature-cache.ts
|
|
353
|
+
import Conf2 from "conf";
|
|
354
|
+
|
|
355
|
+
// src/lib/auth.ts
|
|
356
|
+
import chalk2 from "chalk";
|
|
374
357
|
|
|
375
358
|
// src/types/index.ts
|
|
376
|
-
var EXIT_CODES
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
NOT_FOUND: 3,
|
|
386
|
-
RATE_LIMIT: 4,
|
|
387
|
-
NETWORK_ERROR: 5,
|
|
388
|
-
INVALID_INPUT: 6
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
});
|
|
359
|
+
var EXIT_CODES = {
|
|
360
|
+
SUCCESS: 0,
|
|
361
|
+
GENERAL_ERROR: 1,
|
|
362
|
+
AUTH_ERROR: 2,
|
|
363
|
+
NOT_FOUND: 3,
|
|
364
|
+
RATE_LIMIT: 4,
|
|
365
|
+
NETWORK_ERROR: 5,
|
|
366
|
+
INVALID_INPUT: 6
|
|
367
|
+
};
|
|
392
368
|
|
|
393
369
|
// src/lib/auth.ts
|
|
394
|
-
import chalk2 from "chalk";
|
|
395
370
|
async function refreshAccessToken() {
|
|
396
371
|
const refreshToken = getRefreshToken();
|
|
397
372
|
const clientId = getClientId();
|
|
@@ -440,21 +415,15 @@ function hasAuth() {
|
|
|
440
415
|
}
|
|
441
416
|
async function requireAuth() {
|
|
442
417
|
if (!hasAuth()) {
|
|
443
|
-
const
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
}
|
|
453
|
-
const { runLoginFlow: runLoginFlow2 } = await Promise.resolve().then(() => (init_login(), login_exports));
|
|
454
|
-
await runLoginFlow2({ browser: true });
|
|
455
|
-
} catch {
|
|
456
|
-
process.exit(EXIT_CODES.AUTH_ERROR);
|
|
457
|
-
}
|
|
418
|
+
const cmd2 = brand.commands[0];
|
|
419
|
+
const envVar = brand.apiKeyEnvVar;
|
|
420
|
+
console.error(chalk2.red("\u2717 Not authenticated."));
|
|
421
|
+
console.error();
|
|
422
|
+
console.error(chalk2.bold("To authenticate, run:"));
|
|
423
|
+
console.error(chalk2.cyan(` ${cmd2} login`));
|
|
424
|
+
console.error();
|
|
425
|
+
console.error(chalk2.gray(`Or set ${envVar} environment variable.`));
|
|
426
|
+
process.exit(EXIT_CODES.AUTH_ERROR);
|
|
458
427
|
}
|
|
459
428
|
}
|
|
460
429
|
function maskApiKey(key) {
|
|
@@ -472,13 +441,6 @@ function isValidApiKeyFormat(key) {
|
|
|
472
441
|
const validPrefixes = ["cc_slides_", "mcp_", "cc_sk_", "sk_"];
|
|
473
442
|
return validPrefixes.some((prefix) => key.startsWith(prefix));
|
|
474
443
|
}
|
|
475
|
-
var init_auth = __esm({
|
|
476
|
-
"src/lib/auth.ts"() {
|
|
477
|
-
"use strict";
|
|
478
|
-
init_config();
|
|
479
|
-
init_types();
|
|
480
|
-
}
|
|
481
|
-
});
|
|
482
444
|
|
|
483
445
|
// src/lib/api.ts
|
|
484
446
|
import { readFileSync, statSync } from "fs";
|
|
@@ -495,6 +457,14 @@ async function getAuthHeaders() {
|
|
|
495
457
|
}
|
|
496
458
|
return {};
|
|
497
459
|
}
|
|
460
|
+
var ApiError = class extends Error {
|
|
461
|
+
constructor(message, statusCode, exitCode = 1) {
|
|
462
|
+
super(message);
|
|
463
|
+
this.statusCode = statusCode;
|
|
464
|
+
this.exitCode = exitCode;
|
|
465
|
+
this.name = "ApiError";
|
|
466
|
+
}
|
|
467
|
+
};
|
|
498
468
|
async function request(endpoint, options = {}) {
|
|
499
469
|
const apiUrl = getApiUrl();
|
|
500
470
|
if (!hasAuth()) {
|
|
@@ -1088,26 +1058,14 @@ async function pollForCompletion(checkFn, maxAttempts = 60, intervalMs = 2e3) {
|
|
|
1088
1058
|
}
|
|
1089
1059
|
throw new ApiError("Operation timed out", 408, 1);
|
|
1090
1060
|
}
|
|
1091
|
-
var ApiError;
|
|
1092
|
-
var init_api = __esm({
|
|
1093
|
-
"src/lib/api.ts"() {
|
|
1094
|
-
"use strict";
|
|
1095
|
-
init_config();
|
|
1096
|
-
init_auth();
|
|
1097
|
-
init_brand();
|
|
1098
|
-
ApiError = class extends Error {
|
|
1099
|
-
constructor(message, statusCode, exitCode = 1) {
|
|
1100
|
-
super(message);
|
|
1101
|
-
this.statusCode = statusCode;
|
|
1102
|
-
this.exitCode = exitCode;
|
|
1103
|
-
this.name = "ApiError";
|
|
1104
|
-
}
|
|
1105
|
-
};
|
|
1106
|
-
}
|
|
1107
|
-
});
|
|
1108
1061
|
|
|
1109
1062
|
// src/lib/feature-cache.ts
|
|
1110
|
-
|
|
1063
|
+
var cache = new Conf2({
|
|
1064
|
+
projectName: "conceptcraft",
|
|
1065
|
+
configName: "feature-cache"
|
|
1066
|
+
});
|
|
1067
|
+
var FRESH_TTL = 60 * 60 * 1e3;
|
|
1068
|
+
var STALE_TTL = 24 * 60 * 60 * 1e3;
|
|
1111
1069
|
function hashApiKey(key) {
|
|
1112
1070
|
let hash = 0;
|
|
1113
1071
|
for (let i = 0; i < key.length; i++) {
|
|
@@ -1153,33 +1111,11 @@ function invalidateCache() {
|
|
|
1153
1111
|
function getCachePath() {
|
|
1154
1112
|
return cache.path;
|
|
1155
1113
|
}
|
|
1156
|
-
var cache, FRESH_TTL, STALE_TTL;
|
|
1157
|
-
var init_feature_cache = __esm({
|
|
1158
|
-
"src/lib/feature-cache.ts"() {
|
|
1159
|
-
"use strict";
|
|
1160
|
-
init_api();
|
|
1161
|
-
init_config();
|
|
1162
|
-
cache = new Conf2({
|
|
1163
|
-
projectName: "conceptcraft",
|
|
1164
|
-
configName: "feature-cache"
|
|
1165
|
-
});
|
|
1166
|
-
FRESH_TTL = 60 * 60 * 1e3;
|
|
1167
|
-
STALE_TTL = 24 * 60 * 60 * 1e3;
|
|
1168
|
-
}
|
|
1169
|
-
});
|
|
1170
1114
|
|
|
1171
1115
|
// src/commands/login.ts
|
|
1172
|
-
var
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
runLoginFlow: () => runLoginFlow
|
|
1176
|
-
});
|
|
1177
|
-
import { Command } from "commander";
|
|
1178
|
-
import chalk3 from "chalk";
|
|
1179
|
-
import ora from "ora";
|
|
1180
|
-
import http from "http";
|
|
1181
|
-
import { randomBytes, createHash } from "crypto";
|
|
1182
|
-
import open from "open";
|
|
1116
|
+
var CLI_CLIENT_NAME = "ConceptCraft CLI";
|
|
1117
|
+
var CALLBACK_PORT_START = 8765;
|
|
1118
|
+
var CALLBACK_PORT_END = 8775;
|
|
1183
1119
|
function generateCodeVerifier() {
|
|
1184
1120
|
return randomBytes(32).toString("base64url");
|
|
1185
1121
|
}
|
|
@@ -1427,43 +1363,22 @@ async function runLoginFlow(options) {
|
|
|
1427
1363
|
throw err;
|
|
1428
1364
|
}
|
|
1429
1365
|
}
|
|
1430
|
-
var
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
"
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
if (hasOAuthTokens()) {
|
|
1443
|
-
warn("You are already logged in.");
|
|
1444
|
-
info("Run 'conceptcraft logout' to log out first, or continue to re-authenticate.");
|
|
1445
|
-
console.log();
|
|
1446
|
-
}
|
|
1447
|
-
try {
|
|
1448
|
-
await runLoginFlow(options);
|
|
1449
|
-
process.exit(0);
|
|
1450
|
-
} catch {
|
|
1451
|
-
process.exit(1);
|
|
1452
|
-
}
|
|
1453
|
-
});
|
|
1366
|
+
var loginCommand = new Command("login").description("Authenticate with ConceptCraft (opens browser)").option("--no-browser", "Print URL instead of opening browser").action(async (options) => {
|
|
1367
|
+
console.log();
|
|
1368
|
+
if (hasOAuthTokens()) {
|
|
1369
|
+
warn("You are already logged in.");
|
|
1370
|
+
info("Run 'conceptcraft logout' to log out first, or continue to re-authenticate.");
|
|
1371
|
+
console.log();
|
|
1372
|
+
}
|
|
1373
|
+
try {
|
|
1374
|
+
await runLoginFlow(options);
|
|
1375
|
+
process.exit(0);
|
|
1376
|
+
} catch {
|
|
1377
|
+
process.exit(1);
|
|
1454
1378
|
}
|
|
1455
1379
|
});
|
|
1456
1380
|
|
|
1457
|
-
// src/index.ts
|
|
1458
|
-
init_brand();
|
|
1459
|
-
init_login();
|
|
1460
|
-
import { Command as Command20 } from "commander";
|
|
1461
|
-
import chalk13 from "chalk";
|
|
1462
|
-
|
|
1463
1381
|
// src/commands/logout.ts
|
|
1464
|
-
init_config();
|
|
1465
|
-
init_feature_cache();
|
|
1466
|
-
init_output();
|
|
1467
1382
|
import { Command as Command2 } from "commander";
|
|
1468
1383
|
import { confirm } from "@inquirer/prompts";
|
|
1469
1384
|
var logoutCommand = new Command2("logout").description("Log out and clear authentication").option("--all", "Clear all config including API key").action(async (options) => {
|
|
@@ -1503,11 +1418,6 @@ var logoutCommand = new Command2("logout").description("Log out and clear authen
|
|
|
1503
1418
|
});
|
|
1504
1419
|
|
|
1505
1420
|
// src/commands/config.ts
|
|
1506
|
-
init_config();
|
|
1507
|
-
init_auth();
|
|
1508
|
-
init_api();
|
|
1509
|
-
init_feature_cache();
|
|
1510
|
-
init_output();
|
|
1511
1421
|
import { Command as Command3 } from "commander";
|
|
1512
1422
|
import chalk4 from "chalk";
|
|
1513
1423
|
import { input, password, confirm as confirm2, select } from "@inquirer/prompts";
|
|
@@ -1711,13 +1621,10 @@ var configCommand = new Command3("config").description("Manage CLI configuration
|
|
|
1711
1621
|
);
|
|
1712
1622
|
|
|
1713
1623
|
// src/commands/create.ts
|
|
1714
|
-
init_api();
|
|
1715
|
-
init_auth();
|
|
1716
1624
|
import { Command as Command4 } from "commander";
|
|
1717
1625
|
import chalk6 from "chalk";
|
|
1718
1626
|
|
|
1719
1627
|
// src/lib/streaming.ts
|
|
1720
|
-
init_output();
|
|
1721
1628
|
import { createParser } from "eventsource-parser";
|
|
1722
1629
|
import chalk5 from "chalk";
|
|
1723
1630
|
import ora3 from "ora";
|
|
@@ -1979,7 +1886,6 @@ async function streamTextContent(response, options = {}) {
|
|
|
1979
1886
|
}
|
|
1980
1887
|
|
|
1981
1888
|
// src/commands/create.ts
|
|
1982
|
-
init_output();
|
|
1983
1889
|
import { readFileSync as readFileSync2, existsSync } from "fs";
|
|
1984
1890
|
import { resolve } from "path";
|
|
1985
1891
|
var VALID_GOALS = [
|
|
@@ -2461,10 +2367,6 @@ function isUrl(str) {
|
|
|
2461
2367
|
}
|
|
2462
2368
|
|
|
2463
2369
|
// src/commands/list.ts
|
|
2464
|
-
init_api();
|
|
2465
|
-
init_auth();
|
|
2466
|
-
init_config();
|
|
2467
|
-
init_output();
|
|
2468
2370
|
import { Command as Command5 } from "commander";
|
|
2469
2371
|
var listCommand = new Command5("list").description("List presentations").option("-n, --limit <count>", "Number of results to return", "20").option(
|
|
2470
2372
|
"-f, --format <format>",
|
|
@@ -2528,9 +2430,6 @@ var listCommand = new Command5("list").description("List presentations").option(
|
|
|
2528
2430
|
});
|
|
2529
2431
|
|
|
2530
2432
|
// src/commands/get.ts
|
|
2531
|
-
init_api();
|
|
2532
|
-
init_auth();
|
|
2533
|
-
init_output();
|
|
2534
2433
|
import { Command as Command6 } from "commander";
|
|
2535
2434
|
import chalk7 from "chalk";
|
|
2536
2435
|
var getCommand = new Command6("get").description("Get presentation details").argument("<slug>", "Presentation slug (e.g., my-presentation-v1-abc123)").option(
|
|
@@ -2573,9 +2472,6 @@ var getCommand = new Command6("get").description("Get presentation details").arg
|
|
|
2573
2472
|
});
|
|
2574
2473
|
|
|
2575
2474
|
// src/commands/delete.ts
|
|
2576
|
-
init_api();
|
|
2577
|
-
init_auth();
|
|
2578
|
-
init_output();
|
|
2579
2475
|
import { Command as Command7 } from "commander";
|
|
2580
2476
|
import { confirm as confirm3 } from "@inquirer/prompts";
|
|
2581
2477
|
var deleteCommand = new Command7("delete").description("Delete a presentation").argument("<slug>", "Presentation slug (e.g., my-presentation-v1-abc123)").option("-f, --force", "Skip confirmation prompt").option("-q, --quiet", "Suppress output").action(async (slug, options) => {
|
|
@@ -2611,9 +2507,6 @@ var deleteCommand = new Command7("delete").description("Delete a presentation").
|
|
|
2611
2507
|
});
|
|
2612
2508
|
|
|
2613
2509
|
// src/commands/export.ts
|
|
2614
|
-
init_api();
|
|
2615
|
-
init_auth();
|
|
2616
|
-
init_output();
|
|
2617
2510
|
import { Command as Command8 } from "commander";
|
|
2618
2511
|
import { writeFile } from "fs/promises";
|
|
2619
2512
|
import { resolve as resolve2 } from "path";
|
|
@@ -2655,10 +2548,6 @@ function formatBytes(bytes) {
|
|
|
2655
2548
|
}
|
|
2656
2549
|
|
|
2657
2550
|
// src/commands/import.ts
|
|
2658
|
-
init_api();
|
|
2659
|
-
init_auth();
|
|
2660
|
-
init_output();
|
|
2661
|
-
init_config();
|
|
2662
2551
|
import { Command as Command9 } from "commander";
|
|
2663
2552
|
import { readFile } from "fs/promises";
|
|
2664
2553
|
import { resolve as resolve3, basename as basename2 } from "path";
|
|
@@ -2748,10 +2637,6 @@ var importCommand = cmd.option("--dry-run", "Validate without importing").option
|
|
|
2748
2637
|
});
|
|
2749
2638
|
|
|
2750
2639
|
// src/commands/branding.ts
|
|
2751
|
-
init_api();
|
|
2752
|
-
init_auth();
|
|
2753
|
-
init_config();
|
|
2754
|
-
init_output();
|
|
2755
2640
|
import { Command as Command10 } from "commander";
|
|
2756
2641
|
import chalk8 from "chalk";
|
|
2757
2642
|
import ora6 from "ora";
|
|
@@ -2925,13 +2810,9 @@ var brandingCommand = new Command10("branding").description("Manage brand profil
|
|
|
2925
2810
|
);
|
|
2926
2811
|
|
|
2927
2812
|
// src/commands/derive.ts
|
|
2928
|
-
init_api();
|
|
2929
|
-
init_auth();
|
|
2930
|
-
init_feature_cache();
|
|
2931
2813
|
import { Command as Command11 } from "commander";
|
|
2932
2814
|
import chalk9 from "chalk";
|
|
2933
2815
|
import ora7 from "ora";
|
|
2934
|
-
init_output();
|
|
2935
2816
|
function createBlogCommand() {
|
|
2936
2817
|
return new Command11("blog").description("Generate a blog post from a presentation").argument("<slug>", "Presentation slug").option("--words <count>", "Target word count (50-2000)", "300").option(
|
|
2937
2818
|
"--tone <tone>",
|
|
@@ -3055,8 +2936,6 @@ function buildDeriveCommand() {
|
|
|
3055
2936
|
}
|
|
3056
2937
|
|
|
3057
2938
|
// src/commands/ideas.ts
|
|
3058
|
-
init_auth();
|
|
3059
|
-
init_output();
|
|
3060
2939
|
import { Command as Command12 } from "commander";
|
|
3061
2940
|
import chalk10 from "chalk";
|
|
3062
2941
|
var ideasCommand = new Command12("ideas").description("Generate presentation topic ideas").option("--context <text>", "Custom context for idea generation").option("--count <n>", "Number of ideas to generate", "5").option("-f, --format <format>", "Output format (human, json)", "human").action(async (options) => {
|
|
@@ -3080,10 +2959,6 @@ var ideasCommand = new Command12("ideas").description("Generate presentation top
|
|
|
3080
2959
|
});
|
|
3081
2960
|
|
|
3082
2961
|
// src/commands/whoami.ts
|
|
3083
|
-
init_api();
|
|
3084
|
-
init_auth();
|
|
3085
|
-
init_feature_cache();
|
|
3086
|
-
init_output();
|
|
3087
2962
|
import { Command as Command13 } from "commander";
|
|
3088
2963
|
import chalk11 from "chalk";
|
|
3089
2964
|
var whoamiCommand = new Command13("whoami").description("Show current user and team information").option("-f, --format <format>", "Output format (human, json)", "human").action(async (options) => {
|
|
@@ -3139,8 +3014,6 @@ var whoamiCommand = new Command13("whoami").description("Show current user and t
|
|
|
3139
3014
|
});
|
|
3140
3015
|
|
|
3141
3016
|
// src/commands/skill/index.ts
|
|
3142
|
-
init_output();
|
|
3143
|
-
init_brand();
|
|
3144
3017
|
import { Command as Command14 } from "commander";
|
|
3145
3018
|
import chalk12 from "chalk";
|
|
3146
3019
|
|
|
@@ -3177,14 +3050,20 @@ A comprehensive CLI for AI-powered content creation. Generate presentations, vid
|
|
|
3177
3050
|
|
|
3178
3051
|
## Authentication
|
|
3179
3052
|
|
|
3053
|
+
**IMPORTANT:** Most commands require authentication. If a command fails with "Not authenticated", run:
|
|
3054
|
+
|
|
3180
3055
|
\`\`\`bash
|
|
3181
|
-
# Login via OAuth (recommended)
|
|
3182
3056
|
${cmd2} login
|
|
3057
|
+
\`\`\`
|
|
3058
|
+
|
|
3059
|
+
This opens a browser for OAuth login. Alternatively, set an API key:
|
|
3183
3060
|
|
|
3184
|
-
|
|
3061
|
+
\`\`\`bash
|
|
3185
3062
|
export ${envPrefix}_API_KEY="your-key-here"
|
|
3063
|
+
\`\`\`
|
|
3186
3064
|
|
|
3187
|
-
|
|
3065
|
+
**Verify authentication:**
|
|
3066
|
+
\`\`\`bash
|
|
3188
3067
|
${cmd2} whoami
|
|
3189
3068
|
\`\`\`
|
|
3190
3069
|
|
|
@@ -4953,9 +4832,6 @@ skillCommand.command("uninstall").description(`Remove ${brand.displayName} skill
|
|
|
4953
4832
|
});
|
|
4954
4833
|
|
|
4955
4834
|
// src/commands/tts.ts
|
|
4956
|
-
init_api();
|
|
4957
|
-
init_output();
|
|
4958
|
-
init_types();
|
|
4959
4835
|
import { Command as Command15 } from "commander";
|
|
4960
4836
|
import ora8 from "ora";
|
|
4961
4837
|
import { writeFile as writeFile2 } from "fs/promises";
|
|
@@ -5044,9 +4920,6 @@ var voicesCommand = new Command15("voices").description("List available voices")
|
|
|
5044
4920
|
var ttsCommand = new Command15("tts").description("Text-to-speech commands").addCommand(generateCommand).addCommand(voicesCommand);
|
|
5045
4921
|
|
|
5046
4922
|
// src/commands/music.ts
|
|
5047
|
-
init_api();
|
|
5048
|
-
init_output();
|
|
5049
|
-
init_types();
|
|
5050
4923
|
import { Command as Command16 } from "commander";
|
|
5051
4924
|
import ora9 from "ora";
|
|
5052
4925
|
import { writeFile as writeFile3 } from "fs/promises";
|
|
@@ -5166,9 +5039,6 @@ var statusCommand = new Command16("status").description("Check status of a music
|
|
|
5166
5039
|
var musicCommand = new Command16("music").description("Music generation commands").addCommand(generateCommand2).addCommand(statusCommand);
|
|
5167
5040
|
|
|
5168
5041
|
// src/commands/mix.ts
|
|
5169
|
-
init_api();
|
|
5170
|
-
init_output();
|
|
5171
|
-
init_types();
|
|
5172
5042
|
import { Command as Command17 } from "commander";
|
|
5173
5043
|
import ora10 from "ora";
|
|
5174
5044
|
import { writeFile as writeFile4 } from "fs/promises";
|
|
@@ -5292,9 +5162,6 @@ var statusCommand2 = new Command17("status").description("Check status of an aud
|
|
|
5292
5162
|
var mixAudioCommand = new Command17("mix").description("Audio mixing commands").addCommand(mixCommand).addCommand(statusCommand2);
|
|
5293
5163
|
|
|
5294
5164
|
// src/commands/image.ts
|
|
5295
|
-
init_api();
|
|
5296
|
-
init_output();
|
|
5297
|
-
init_types();
|
|
5298
5165
|
import { Command as Command18 } from "commander";
|
|
5299
5166
|
import ora11 from "ora";
|
|
5300
5167
|
var searchCommand = new Command18("search").description("Search for images").requiredOption("-q, --query <query>", "Search query").option("-n, --max-results <number>", "Maximum number of results (default: 10)").option("-s, --size <size>", "Image size: small, medium, large, any", "large").option("--safe-search", "Enable safe search (default: true)", true).option("--no-safe-search", "Disable safe search").option("-f, --format <format>", "Output format: human, json, quiet", "human").action(async (options) => {
|
|
@@ -5372,9 +5239,6 @@ var searchCommand = new Command18("search").description("Search for images").req
|
|
|
5372
5239
|
var imageCommand = new Command18("image").description("Image search commands").addCommand(searchCommand);
|
|
5373
5240
|
|
|
5374
5241
|
// src/commands/video.ts
|
|
5375
|
-
init_api();
|
|
5376
|
-
init_output();
|
|
5377
|
-
init_types();
|
|
5378
5242
|
import { Command as Command19 } from "commander";
|
|
5379
5243
|
import ora12 from "ora";
|
|
5380
5244
|
import { mkdir, writeFile as writeFile5, readFile as readFile2, access, rm, cp } from "fs/promises";
|
|
@@ -6121,7 +5985,7 @@ var thumbnailCommand = new Command19("thumbnail").description("Embed a thumbnail
|
|
|
6121
5985
|
var videoCommand = new Command19("video").description("Video asset generation commands").addCommand(initCommand).addCommand(createCommand2).addCommand(searchCommand2).addCommand(thumbnailCommand);
|
|
6122
5986
|
|
|
6123
5987
|
// src/index.ts
|
|
6124
|
-
var VERSION = "0.1.
|
|
5988
|
+
var VERSION = "0.1.10";
|
|
6125
5989
|
var program = new Command20();
|
|
6126
5990
|
var cmdName = brand.commands[0];
|
|
6127
5991
|
program.name(cmdName).description(brand.description).version(VERSION, "-v, --version", "Show version number").option("--debug", "Enable debug logging").option("--no-color", "Disable colored output").configureOutput({
|