@chimerai/cli 1.2.9 → 1.2.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/commands/list.js +8 -8
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +4 -3
- package/dist/utils.d.ts +20 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +40 -0
- package/package.json +1 -1
package/dist/commands/list.js
CHANGED
|
@@ -197,10 +197,10 @@ async function listCommand(options) {
|
|
|
197
197
|
console.log(chalk_1.default.gray(' Edition: Free — paid components are marked\n'));
|
|
198
198
|
}
|
|
199
199
|
else if (edition === 'enterprise') {
|
|
200
|
-
console.log(chalk_1.default.green(
|
|
200
|
+
console.log(chalk_1.default.green(` Edition: Enterprise ${utils_js_1.icons.check}\n`));
|
|
201
201
|
}
|
|
202
202
|
else {
|
|
203
|
-
console.log(chalk_1.default.magenta(
|
|
203
|
+
console.log(chalk_1.default.magenta(` Edition: Enterprise Pro ${utils_js_1.icons.check}\n`));
|
|
204
204
|
}
|
|
205
205
|
for (const [category, comps] of categories) {
|
|
206
206
|
console.log(chalk_1.default.bold.yellow(` ${category}:`));
|
|
@@ -212,9 +212,9 @@ async function listCommand(options) {
|
|
|
212
212
|
? edition === 'enterprise' || edition === 'enterprise-pro'
|
|
213
213
|
: edition === 'enterprise-pro');
|
|
214
214
|
const badge = required === 'enterprise-pro' && locked
|
|
215
|
-
? chalk_1.default.magenta(
|
|
215
|
+
? chalk_1.default.magenta(` ${utils_js_1.icons.lock} Ent.Pro`)
|
|
216
216
|
: required === 'enterprise' && locked
|
|
217
|
-
? chalk_1.default.yellow(
|
|
217
|
+
? chalk_1.default.yellow(` ${utils_js_1.icons.lock} Enterprise`)
|
|
218
218
|
: '';
|
|
219
219
|
console.log(` ○ ${chalk_1.default.white(comp.name.padEnd(22))} ${chalk_1.default.gray(comp.description)}${badge}`);
|
|
220
220
|
}
|
|
@@ -261,11 +261,11 @@ async function listCommand(options) {
|
|
|
261
261
|
: editionStatus === 'enterprise-pro');
|
|
262
262
|
const icon = locked
|
|
263
263
|
? required === 'enterprise-pro'
|
|
264
|
-
? chalk_1.default.magenta(
|
|
265
|
-
: chalk_1.default.yellow(
|
|
264
|
+
? chalk_1.default.magenta(utils_js_1.icons.lock)
|
|
265
|
+
: chalk_1.default.yellow(utils_js_1.icons.lock)
|
|
266
266
|
: comp.status === 'installed'
|
|
267
|
-
? chalk_1.default.green(
|
|
268
|
-
: chalk_1.default.gray('
|
|
267
|
+
? chalk_1.default.green(utils_js_1.icons.check)
|
|
268
|
+
: chalk_1.default.gray('o ');
|
|
269
269
|
const label = locked
|
|
270
270
|
? required === 'enterprise-pro'
|
|
271
271
|
? chalk_1.default.magenta('Ent.Pro')
|
package/dist/license.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAwBD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE5E;AAID,oDAAoD;AACpD,eAAO,MAAM,eAAe,aAQ1B,CAAC;AAEH,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWxD,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK5D,CAAC;AAIF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKpE;AAID,wBAAgB,WAAW,IAAI,WAAW,GAAG,IAAI,CAQhD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAGvD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAInC;AAID,wBAAgB,UAAU,IAAI,OAAO,CAcpC;AAED,oEAAoE;AACpE,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAWrD;AAED,wGAAwG;AACxG,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA8BjF;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAyD7D;AAUD,wBAAgB,kBAAkB,IAAI,IAAI,CAuBzC"}
|
package/dist/license.js
CHANGED
|
@@ -33,6 +33,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
33
33
|
const os_1 = __importDefault(require("os"));
|
|
34
34
|
const chalk_1 = __importDefault(require("chalk"));
|
|
35
35
|
const jose_1 = require("jose");
|
|
36
|
+
const utils_js_1 = require("./utils.js");
|
|
36
37
|
// ─── JWT Public Key (Ed25519) ─────────────────────────────────────────────────
|
|
37
38
|
// Private key lives only in Cloudflare Worker secret — never in binary.
|
|
38
39
|
// Public key is safe to embed: it can verify, but NOT sign.
|
|
@@ -201,7 +202,7 @@ function assertComponentAccess(component) {
|
|
|
201
202
|
// --- Blockiert: kontextuelle Upsell-Meldung ---
|
|
202
203
|
if (actual === 'enterprise' && required === 'enterprise-pro') {
|
|
203
204
|
// Enterprise-Kunde will Enterprise-Pro-Feature
|
|
204
|
-
console.log(chalk_1.default.red(`\n
|
|
205
|
+
console.log(chalk_1.default.red(`\n ${utils_js_1.icons.lock} "${component}" is an Enterprise Pro feature.\n`));
|
|
205
206
|
console.log(chalk_1.default.bold(' Exclusive to ChimerAI Enterprise Pro:\n'));
|
|
206
207
|
for (const [name, desc] of Object.entries(exports.ENTERPRISE_PRO_COMPONENTS)) {
|
|
207
208
|
console.log(` ${chalk_1.default.yellow('•')} ${chalk_1.default.white(name.padEnd(22))} ${chalk_1.default.gray(desc)}`);
|
|
@@ -214,7 +215,7 @@ function assertComponentAccess(component) {
|
|
|
214
215
|
else {
|
|
215
216
|
// Free-Kunde will Enterprise- oder Enterprise-Pro-Feature
|
|
216
217
|
const isEntPro = required === 'enterprise-pro';
|
|
217
|
-
console.log(chalk_1.default.red(`\n
|
|
218
|
+
console.log(chalk_1.default.red(`\n ${utils_js_1.icons.lock} "${component}" is an ${isEntPro ? 'Enterprise Pro' : 'Enterprise'} feature.\n`));
|
|
218
219
|
console.log(chalk_1.default.bold(' 🏢 ChimerAI Enterprise:\n'));
|
|
219
220
|
for (const [name, desc] of Object.entries(exports.ENTERPRISE_COMPONENTS)) {
|
|
220
221
|
console.log(` ${chalk_1.default.green('•')} ${chalk_1.default.white(name.padEnd(22))} ${chalk_1.default.gray(desc)}`);
|
|
@@ -250,7 +251,7 @@ function printLicenseStatus() {
|
|
|
250
251
|
? new Date(license.validUntil).toLocaleDateString('de-AT')
|
|
251
252
|
: 'unbegrenzt';
|
|
252
253
|
const color = edition === 'enterprise-pro' ? chalk_1.default.bold.magenta : chalk_1.default.bold.green;
|
|
253
|
-
console.log(color('\n 📋 Edition: ') + chalk_1.default.white(`${EDITION_LABELS[edition]}
|
|
254
|
+
console.log(color('\n 📋 Edition: ') + chalk_1.default.white(`${EDITION_LABELS[edition]} ${utils_js_1.icons.check}`));
|
|
254
255
|
if (license.email)
|
|
255
256
|
console.log(chalk_1.default.gray(` Licensed to: ${license.email}`));
|
|
256
257
|
console.log(chalk_1.default.gray(` Valid until: ${expiry}`));
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared CLI utilities - Validation, error handling, workspace checks, env file management
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Returns true when the current terminal can render emoji / full Unicode.
|
|
6
|
+
* Falls back to ASCII icons when running in plain Windows CMD.
|
|
7
|
+
*/
|
|
8
|
+
export declare function supportsUnicode(): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Emoji icons with ASCII fallbacks for CMD-hostile environments.
|
|
11
|
+
* Usage: icons.lock → '🔒' or '[x]'
|
|
12
|
+
*/
|
|
13
|
+
export declare const icons: {
|
|
14
|
+
readonly lock: "🔒" | "[locked]";
|
|
15
|
+
readonly check: "✅" | "[ok]";
|
|
16
|
+
readonly cross: "❌" | "[!]";
|
|
17
|
+
readonly warn: "[!]" | "⚠️";
|
|
18
|
+
readonly info: "💡" | "[i]";
|
|
19
|
+
readonly rocket: "🚀" | ">>";
|
|
20
|
+
readonly box: "📦" | "::";
|
|
21
|
+
readonly sparkle: "✨" | "*";
|
|
22
|
+
readonly arrow: "→" | "->";
|
|
23
|
+
};
|
|
4
24
|
/**
|
|
5
25
|
* Validates a project or plugin name.
|
|
6
26
|
* - lowercase alphanumeric + hyphens only
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAQzC;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AA8BF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA8B7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG,IAAI,CAKlE;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAY5D;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK,CAG/D;AAMD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAcf;AAMD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAgDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CActD;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAiCzD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAgCxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CASxD"}
|
package/dist/utils.js
CHANGED
|
@@ -6,6 +6,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.icons = void 0;
|
|
10
|
+
exports.supportsUnicode = supportsUnicode;
|
|
9
11
|
exports.validateName = validateName;
|
|
10
12
|
exports.assertValidName = assertValidName;
|
|
11
13
|
exports.validateWorkspace = validateWorkspace;
|
|
@@ -22,6 +24,44 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
|
22
24
|
const path_1 = __importDefault(require("path"));
|
|
23
25
|
const os_1 = __importDefault(require("os"));
|
|
24
26
|
/* ------------------------------------------------------------------ */
|
|
27
|
+
/* Unicode / Emoji support detection */
|
|
28
|
+
/* */
|
|
29
|
+
/* Windows CMD uses legacy code pages (CP850/CP1252) that cannot */
|
|
30
|
+
/* render emoji. VS Code Terminal, Windows Terminal (WT_SESSION) */
|
|
31
|
+
/* and most Unix terminals support Unicode fine. */
|
|
32
|
+
/* ------------------------------------------------------------------ */
|
|
33
|
+
/**
|
|
34
|
+
* Returns true when the current terminal can render emoji / full Unicode.
|
|
35
|
+
* Falls back to ASCII icons when running in plain Windows CMD.
|
|
36
|
+
*/
|
|
37
|
+
function supportsUnicode() {
|
|
38
|
+
// Windows Terminal sets WT_SESSION; VS Code sets TERM_PROGRAM=vscode
|
|
39
|
+
if (process.env.WT_SESSION)
|
|
40
|
+
return true;
|
|
41
|
+
if (process.env.TERM_PROGRAM)
|
|
42
|
+
return true;
|
|
43
|
+
// Unix / macOS — always fine
|
|
44
|
+
if (process.platform !== 'win32')
|
|
45
|
+
return true;
|
|
46
|
+
// Plain CMD / legacy PowerShell: no emoji support
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Emoji icons with ASCII fallbacks for CMD-hostile environments.
|
|
51
|
+
* Usage: icons.lock → '🔒' or '[x]'
|
|
52
|
+
*/
|
|
53
|
+
exports.icons = {
|
|
54
|
+
get lock() { return supportsUnicode() ? '🔒' : '[locked]'; },
|
|
55
|
+
get check() { return supportsUnicode() ? '✅' : '[ok]'; },
|
|
56
|
+
get cross() { return supportsUnicode() ? '❌' : '[!]'; },
|
|
57
|
+
get warn() { return supportsUnicode() ? '⚠️' : '[!]'; },
|
|
58
|
+
get info() { return supportsUnicode() ? '💡' : '[i]'; },
|
|
59
|
+
get rocket() { return supportsUnicode() ? '🚀' : '>>'; },
|
|
60
|
+
get box() { return supportsUnicode() ? '📦' : '::'; },
|
|
61
|
+
get sparkle() { return supportsUnicode() ? '✨' : '*'; },
|
|
62
|
+
get arrow() { return supportsUnicode() ? '→' : '->'; },
|
|
63
|
+
};
|
|
64
|
+
/* ------------------------------------------------------------------ */
|
|
25
65
|
/* Project name validation */
|
|
26
66
|
/* ------------------------------------------------------------------ */
|
|
27
67
|
const RESERVED_NAMES = new Set([
|
package/package.json
CHANGED