@akanjs/cli 1.0.7 → 1.0.8

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/esm/index.js CHANGED
@@ -216,15 +216,15 @@ var Logger = class _Logger {
216
216
  console.log(`${processMsg} ${timestampMsg} ${logLevelMsg} ${contextMsg} ${contentMsg} ${timeDiffMsg}
217
217
  `);
218
218
  }
219
- static rawLog(msg = "", method) {
219
+ static rawLog(msg = "", method, outputStream) {
220
220
  this.raw(`${msg}
221
- `, method);
221
+ `, method, outputStream);
222
222
  }
223
- static raw(msg = "", method) {
223
+ static raw(msg = "", method, outputStream) {
224
224
  if (typeof window === "undefined" && method !== "console" && global.process)
225
- global.process.stdout.write(msg);
225
+ global.process[outputStream === "error" ? "stderr" : "stdout"].write(msg);
226
226
  else
227
- console.log(msg.trim());
227
+ console[outputStream === "error" ? "error" : "log"](msg.trim());
228
228
  }
229
229
  };
230
230
 
@@ -3331,12 +3331,185 @@ var Target = {
3331
3331
  Dev: getTarget("dev")
3332
3332
  };
3333
3333
 
3334
+ // pkgs/@akanjs/devkit/src/commandDecorators/helpFormatter.ts
3335
+ import chalk4 from "chalk";
3336
+ var camelToKebabCase = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
3337
+ var groupCommands = (commands) => {
3338
+ const groups = /* @__PURE__ */ new Map();
3339
+ for (const command of commands) {
3340
+ const className = command.name.replace("Command", "");
3341
+ const groupName = className;
3342
+ if (!groups.has(groupName)) {
3343
+ groups.set(groupName, { name: groupName, commands: [] });
3344
+ }
3345
+ const targetMetas = getTargetMetas(command);
3346
+ for (const targetMeta of targetMetas) {
3347
+ if (targetMeta.targetOption.devOnly)
3348
+ continue;
3349
+ const [allArgMetas] = getArgMetas(command, targetMeta.key);
3350
+ const args = allArgMetas.filter((arg) => arg.type !== "Option").map((arg) => {
3351
+ if (arg.type === "Workspace")
3352
+ return "";
3353
+ if (arg.type === "Module")
3354
+ return "[sys:module]";
3355
+ if (arg.type === "Argument") {
3356
+ return `[${arg.name}]`;
3357
+ }
3358
+ return `[${arg.type.toLowerCase()}]`;
3359
+ }).filter(Boolean);
3360
+ const group = groups.get(groupName);
3361
+ if (group) {
3362
+ group.commands.push({
3363
+ key: camelToKebabCase(targetMeta.key),
3364
+ args,
3365
+ desc: targetMeta.targetOption.desc
3366
+ });
3367
+ }
3368
+ }
3369
+ }
3370
+ return groups;
3371
+ };
3372
+ var formatHelp = (commands, version) => {
3373
+ const groups = groupCommands(commands);
3374
+ const lines = [];
3375
+ lines.push("");
3376
+ lines.push(chalk4.bold.cyan(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
3377
+ lines.push(
3378
+ chalk4.bold.cyan(" \u2551") + chalk4.bold.white(" Akan.js Framework CLI ") + chalk4.bold.cyan(" \u2551")
3379
+ );
3380
+ lines.push(chalk4.bold.cyan(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
3381
+ lines.push("");
3382
+ lines.push(chalk4.gray(` Version: ${version}`));
3383
+ lines.push("");
3384
+ lines.push(chalk4.bold.yellow(" USAGE"));
3385
+ lines.push("");
3386
+ lines.push(chalk4.gray(" $ ") + chalk4.white("akan") + chalk4.gray(" <command> [options]"));
3387
+ lines.push("");
3388
+ lines.push(chalk4.bold.yellow(" COMMANDS"));
3389
+ lines.push("");
3390
+ for (const [groupName, group] of groups) {
3391
+ if (group.commands.length === 0)
3392
+ continue;
3393
+ lines.push(chalk4.bold.magenta(` ${groupName}`));
3394
+ lines.push("");
3395
+ for (const cmd of group.commands) {
3396
+ const cmdName = chalk4.green(cmd.key);
3397
+ const cmdArgs = cmd.args.length > 0 ? chalk4.gray(` ${cmd.args.join(" ")}`) : "";
3398
+ if (cmd.desc) {
3399
+ const maxLineLength = 70;
3400
+ const cmdPrefix = ` ${cmdName}${cmdArgs}`;
3401
+ const indent = " ";
3402
+ if (cmdPrefix.length + cmd.desc.length + 3 < maxLineLength) {
3403
+ lines.push(`${cmdPrefix} ${chalk4.gray(cmd.desc)}`);
3404
+ } else {
3405
+ lines.push(cmdPrefix);
3406
+ lines.push(`${indent}${chalk4.gray(cmd.desc)}`);
3407
+ }
3408
+ } else {
3409
+ lines.push(` ${cmdName}${cmdArgs}`);
3410
+ }
3411
+ }
3412
+ lines.push("");
3413
+ }
3414
+ lines.push(chalk4.bold.yellow(" OPTIONS"));
3415
+ lines.push("");
3416
+ lines.push(` ${chalk4.green("-v, --verbose")} ${chalk4.gray("Enable verbose output")}`);
3417
+ lines.push(` ${chalk4.green("-h, --help")} ${chalk4.gray("Display this help message")}`);
3418
+ lines.push(` ${chalk4.green("-V, --version")} ${chalk4.gray("Output version number")}`);
3419
+ lines.push("");
3420
+ lines.push(chalk4.bold.yellow(" EXAMPLES"));
3421
+ lines.push("");
3422
+ lines.push(chalk4.gray(" # Create a new workspace"));
3423
+ lines.push(chalk4.white(" $ akan create-workspace myproject"));
3424
+ lines.push("");
3425
+ lines.push(chalk4.gray(" # Start development server"));
3426
+ lines.push(chalk4.white(" $ akan start myapp"));
3427
+ lines.push("");
3428
+ lines.push(chalk4.gray(" # Create a new module"));
3429
+ lines.push(chalk4.white(" $ akan create-module userProfile"));
3430
+ lines.push("");
3431
+ lines.push(chalk4.gray(" Documentation: ") + chalk4.cyan("https://akanjs.com/docs"));
3432
+ lines.push(chalk4.gray(" Report issues: ") + chalk4.cyan("https://github.com/akan-team/akanjs/issues"));
3433
+ lines.push("");
3434
+ return lines.join("\n");
3435
+ };
3436
+ var formatCommandHelp = (command, key) => {
3437
+ const [allArgMetas, argMetas] = getArgMetas(command, key);
3438
+ const kebabKey = camelToKebabCase(key);
3439
+ const lines = [];
3440
+ const targetMetas = getTargetMetas(command);
3441
+ const targetMeta = targetMetas.find((t) => t.key === key);
3442
+ const commandDesc = targetMeta?.targetOption.desc;
3443
+ lines.push("");
3444
+ lines.push(chalk4.bold.cyan(` Command: ${kebabKey}`));
3445
+ if (commandDesc) {
3446
+ lines.push(chalk4.gray(` ${commandDesc}`));
3447
+ }
3448
+ lines.push("");
3449
+ const args = allArgMetas.filter((arg) => arg.type !== "Option").map((arg) => {
3450
+ if (arg.type === "Workspace")
3451
+ return "";
3452
+ if (arg.type === "Module")
3453
+ return "[sys:module]";
3454
+ if (arg.type === "Argument") {
3455
+ return `[${camelToKebabCase(arg.name)}]`;
3456
+ }
3457
+ return `[${arg.type.toLowerCase()}]`;
3458
+ }).filter(Boolean).join(" ");
3459
+ lines.push(chalk4.bold.yellow(" USAGE"));
3460
+ lines.push("");
3461
+ lines.push(chalk4.gray(" $ ") + chalk4.white(`akan ${kebabKey}`) + (args ? chalk4.gray(` ${args}`) : ""));
3462
+ lines.push("");
3463
+ const nonOptionArgs = allArgMetas.filter((arg) => arg.type !== "Option");
3464
+ if (nonOptionArgs.length > 0) {
3465
+ lines.push(chalk4.bold.yellow(" ARGUMENTS"));
3466
+ lines.push("");
3467
+ for (const arg of nonOptionArgs) {
3468
+ if (arg.type === "Workspace")
3469
+ continue;
3470
+ let argName;
3471
+ let argDesc;
3472
+ let example = "";
3473
+ if (arg.type === "Argument") {
3474
+ argName = camelToKebabCase(arg.name);
3475
+ argDesc = arg.argsOption.desc ?? "";
3476
+ example = arg.argsOption.example ? chalk4.gray(` (e.g., ${String(arg.argsOption.example)})`) : "";
3477
+ } else if (arg.type === "Module") {
3478
+ argName = "sys:module";
3479
+ argDesc = "Module in format: app-name:module-name or lib-name:module-name";
3480
+ } else {
3481
+ argName = arg.type.toLowerCase();
3482
+ argDesc = `${arg.type} name in this workspace`;
3483
+ }
3484
+ lines.push(` ${chalk4.green(argName)} ${chalk4.gray(argDesc)}${example}`);
3485
+ }
3486
+ lines.push("");
3487
+ }
3488
+ const optionArgs = argMetas.filter((a) => a.type === "Option");
3489
+ if (optionArgs.length > 0) {
3490
+ lines.push(chalk4.bold.yellow(" OPTIONS"));
3491
+ lines.push("");
3492
+ for (const arg of optionArgs) {
3493
+ const opt = arg.argsOption;
3494
+ const flag = opt.flag ? `-${opt.flag}, ` : "";
3495
+ const kebabName = camelToKebabCase(arg.name);
3496
+ const optName = `${flag}--${kebabName}`;
3497
+ const optDesc = opt.desc ?? "";
3498
+ const defaultVal = opt.default !== void 0 ? chalk4.gray(` [default: ${String(opt.default)}]`) : "";
3499
+ const choices = opt.enum ? chalk4.gray(` (${opt.enum.join(", ")})`) : "";
3500
+ lines.push(` ${chalk4.green(optName)} ${chalk4.gray(optDesc)}${defaultVal}${choices}`);
3501
+ }
3502
+ lines.push("");
3503
+ }
3504
+ return lines.join("\n");
3505
+ };
3506
+
3334
3507
  // pkgs/@akanjs/devkit/src/commandDecorators/command.ts
3335
3508
  import { confirm, input, select as select2 } from "@inquirer/prompts";
3336
- import chalk4 from "chalk";
3509
+ import chalk5 from "chalk";
3337
3510
  import { program } from "commander";
3338
3511
  import fs12 from "fs";
3339
- var camelToKebabCase = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
3512
+ var camelToKebabCase2 = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
3340
3513
  var handleOption = (programCommand, argMeta) => {
3341
3514
  const {
3342
3515
  type,
@@ -3346,7 +3519,7 @@ var handleOption = (programCommand, argMeta) => {
3346
3519
  enum: enumChoices,
3347
3520
  ask
3348
3521
  } = argMeta.argsOption;
3349
- const kebabName = camelToKebabCase(argMeta.name);
3522
+ const kebabName = camelToKebabCase2(argMeta.name);
3350
3523
  const choices = enumChoices?.map(
3351
3524
  (choice) => typeof choice === "object" ? { value: choice.value, name: choice.label } : { value: choice, name: choice.toString() }
3352
3525
  );
@@ -3357,7 +3530,7 @@ var handleOption = (programCommand, argMeta) => {
3357
3530
  return programCommand;
3358
3531
  };
3359
3532
  var handleArgument = (programCommand, argMeta) => {
3360
- const kebabName = camelToKebabCase(argMeta.name);
3533
+ const kebabName = camelToKebabCase2(argMeta.name);
3361
3534
  if ((argMeta.argsOption.type ?? "string") !== "string")
3362
3535
  throw new Error(`Argument type must be string: ${argMeta.name}`);
3363
3536
  programCommand.argument(
@@ -3517,11 +3690,21 @@ var runCommands = async (...commands) => {
3517
3690
  const __dirname = getDirname(import.meta.url);
3518
3691
  const hasPackageJson = fs12.existsSync(`${__dirname}/../package.json`);
3519
3692
  process.env.AKAN_VERSION = hasPackageJson ? JSON.parse(fs12.readFileSync(`${__dirname}/../package.json`, "utf8")).version : "0.0.1";
3520
- program.version(process.env.AKAN_VERSION).description("Akan CLI");
3693
+ const hasHelpFlag = process.argv.includes("--help") || process.argv.includes("-h");
3694
+ const hasCommand = process.argv.length > 2 && !process.argv[2].startsWith("-");
3695
+ if (hasHelpFlag || !hasCommand) {
3696
+ if (process.argv.length === 2 || process.argv.length === 3 && hasHelpFlag) {
3697
+ Logger.rawLog(formatHelp(commands, process.env.AKAN_VERSION));
3698
+ process.exit(0);
3699
+ }
3700
+ }
3701
+ program.version(process.env.AKAN_VERSION).description("Akan CLI").configureHelp({
3702
+ helpWidth: 100
3703
+ });
3521
3704
  const akanBasePackageJson = fs12.existsSync("./node_modules/@akanjs/base/package.json") ? JSON.parse(fs12.readFileSync("./node_modules/@akanjs/base/package.json", "utf8")) : null;
3522
3705
  if (akanBasePackageJson && akanBasePackageJson.version !== process.env.AKAN_VERSION) {
3523
3706
  Logger.rawLog(
3524
- chalk4.yellow(
3707
+ chalk5.yellow(
3525
3708
  `
3526
3709
  Akan CLI version is mismatch with installed package. ${process.env.AKAN_VERSION} (global) vs ${akanBasePackageJson.version} (base)
3527
3710
  It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
@@ -3531,7 +3714,7 @@ It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
3531
3714
  for (const command of commands) {
3532
3715
  const targetMetas = getTargetMetas(command);
3533
3716
  for (const targetMeta of targetMetas) {
3534
- const kebabKey = camelToKebabCase(targetMeta.key);
3717
+ const kebabKey = camelToKebabCase2(targetMeta.key);
3535
3718
  const commandNames = targetMeta.targetOption.short === true ? [
3536
3719
  kebabKey,
3537
3720
  typeof targetMeta.targetOption.short === "string" ? targetMeta.targetOption.short : kebabKey.split("-").map((s) => s.slice(0, 1)).join("")
@@ -3562,6 +3745,9 @@ It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
3562
3745
  }
3563
3746
  }
3564
3747
  programCommand = programCommand.option(`-v, --verbose [boolean]`, `verbose output`);
3748
+ programCommand.helpInformation = () => {
3749
+ return formatCommandHelp(command, targetMeta.key);
3750
+ };
3565
3751
  programCommand.action(async (...args) => {
3566
3752
  Logger.rawLog();
3567
3753
  const cmdArgs = args.slice(0, args.length - 2);
@@ -3591,7 +3777,7 @@ It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
3591
3777
  } catch (e) {
3592
3778
  const errMsg = e instanceof Error ? e.message : typeof e === "string" ? e : JSON.stringify(e);
3593
3779
  Logger.rawLog(`
3594
- ${chalk4.red(errMsg)}`);
3780
+ ${chalk5.red(errMsg)}`);
3595
3781
  throw e;
3596
3782
  }
3597
3783
  });
@@ -3611,7 +3797,7 @@ import {
3611
3797
  } from "@langchain/core/messages";
3612
3798
  import { ChatDeepSeek } from "@langchain/deepseek";
3613
3799
  import { ChatOpenAI as ChatOpenAI2 } from "@langchain/openai";
3614
- import chalk5 from "chalk";
3800
+ import chalk6 from "chalk";
3615
3801
  import fs13 from "fs";
3616
3802
  var MAX_ASK_TRY = 300;
3617
3803
  var supportedLlmModels = ["deepseek-chat", "deepseek-reasoner"];
@@ -3623,11 +3809,11 @@ var AiSession = class _AiSession {
3623
3809
  const llmConfig2 = this.getLlmConfig();
3624
3810
  if (llmConfig2) {
3625
3811
  this.#setChatModel(llmConfig2.model, llmConfig2.apiKey);
3626
- Logger.rawLog(chalk5.dim(`\u{1F916}akan editor uses existing LLM config (${llmConfig2.model})`));
3812
+ Logger.rawLog(chalk6.dim(`\u{1F916}akan editor uses existing LLM config (${llmConfig2.model})`));
3627
3813
  return this;
3628
3814
  }
3629
3815
  } else
3630
- Logger.rawLog(chalk5.yellow("\u{1F916}akan-editor is not initialized. LLM configuration should be set first."));
3816
+ Logger.rawLog(chalk6.yellow("\u{1F916}akan-editor is not initialized. LLM configuration should be set first."));
3631
3817
  const llmConfig = await this.#requestLlmConfig();
3632
3818
  const { model, apiKey } = llmConfig;
3633
3819
  await this.#validateApiKey(model, apiKey);
@@ -3671,7 +3857,7 @@ var AiSession = class _AiSession {
3671
3857
  return true;
3672
3858
  } catch (error) {
3673
3859
  spinner.fail(
3674
- chalk5.red(
3860
+ chalk6.red(
3675
3861
  `LLM API key is invalid. Please check your API key and try again. You can set it again by running "akan set-llm" or reset by running "akan reset-llm"`
3676
3862
  )
3677
3863
  );
@@ -3708,7 +3894,7 @@ var AiSession = class _AiSession {
3708
3894
  }
3709
3895
  async ask(question, {
3710
3896
  onReasoning = (reasoning) => {
3711
- Logger.raw(chalk5.dim(reasoning));
3897
+ Logger.raw(chalk6.dim(reasoning));
3712
3898
  },
3713
3899
  onChunk = (chunk) => {
3714
3900
  Logger.raw(chunk);
@@ -5546,82 +5732,82 @@ var ApplicationCommand = class {
5546
5732
  }
5547
5733
  };
5548
5734
  __decorateClass([
5549
- Target.Public(),
5735
+ Target.Public({ desc: "Create a new application in the workspace" }),
5550
5736
  __decorateParam(0, Argument("appName", { desc: "name of application" })),
5551
5737
  __decorateParam(1, Option("start", { type: "boolean", desc: "start application", default: false })),
5552
5738
  __decorateParam(2, Workspace())
5553
5739
  ], ApplicationCommand.prototype, "createApplication", 1);
5554
5740
  __decorateClass([
5555
- Target.Public(),
5741
+ Target.Public({ desc: "Remove an application from the workspace" }),
5556
5742
  __decorateParam(0, App())
5557
5743
  ], ApplicationCommand.prototype, "removeApplication", 1);
5558
5744
  __decorateClass([
5559
- Target.Public(),
5745
+ Target.Public({ desc: "Sync dependencies and configuration for an app or library" }),
5560
5746
  __decorateParam(0, Sys())
5561
5747
  ], ApplicationCommand.prototype, "sync", 1);
5562
5748
  __decorateClass([
5563
- Target.Public(),
5749
+ Target.Public({ desc: "Run a custom script in the application" }),
5564
5750
  __decorateParam(0, App()),
5565
5751
  __decorateParam(1, Argument("filename", { desc: "name of script", nullable: true }))
5566
5752
  ], ApplicationCommand.prototype, "script", 1);
5567
5753
  __decorateClass([
5568
- Target.Public({ short: true }),
5754
+ Target.Public({ short: true, desc: "Build the application for production (frontend + backend)" }),
5569
5755
  __decorateParam(0, App())
5570
5756
  ], ApplicationCommand.prototype, "build", 1);
5571
5757
  __decorateClass([
5572
- Target.Public({ short: true }),
5758
+ Target.Public({ short: true, desc: "Build only the backend for production" }),
5573
5759
  __decorateParam(0, App())
5574
5760
  ], ApplicationCommand.prototype, "buildBackend", 1);
5575
5761
  __decorateClass([
5576
- Target.Public({ short: true }),
5762
+ Target.Public({ short: true, desc: "Build only the frontend (SSR) for production" }),
5577
5763
  __decorateParam(0, App())
5578
5764
  ], ApplicationCommand.prototype, "buildFrontend", 1);
5579
5765
  __decorateClass([
5580
- Target.Public({ short: true }),
5766
+ Target.Public({ short: true, desc: "Build the CSR (Client-Side Rendering) frontend" }),
5581
5767
  __decorateParam(0, App())
5582
5768
  ], ApplicationCommand.prototype, "buildCsr", 1);
5583
5769
  __decorateClass([
5584
- Target.Public({ short: true }),
5770
+ Target.Public({ short: true, desc: "Build iOS app with Capacitor" }),
5585
5771
  __decorateParam(0, App())
5586
5772
  ], ApplicationCommand.prototype, "buildIos", 1);
5587
5773
  __decorateClass([
5588
- Target.Public({ short: true }),
5774
+ Target.Public({ short: true, desc: "Build Android app with Capacitor" }),
5589
5775
  __decorateParam(0, App())
5590
5776
  ], ApplicationCommand.prototype, "buildAndroid", 1);
5591
5777
  __decorateClass([
5592
- Target.Public({ short: true }),
5778
+ Target.Public({ short: true, desc: "Start development server (frontend SSR + backend)" }),
5593
5779
  __decorateParam(0, App()),
5594
5780
  __decorateParam(1, Option("open", { type: "boolean", desc: "open web browser?", default: false })),
5595
5781
  __decorateParam(2, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5596
5782
  ], ApplicationCommand.prototype, "start", 1);
5597
5783
  __decorateClass([
5598
- Target.Public({ short: true }),
5784
+ Target.Public({ short: true, desc: "Start only the backend development server" }),
5599
5785
  __decorateParam(0, App()),
5600
5786
  __decorateParam(1, Option("open", { type: "boolean", desc: "open graphql playground", default: false })),
5601
5787
  __decorateParam(2, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5602
5788
  ], ApplicationCommand.prototype, "startBackend", 1);
5603
5789
  __decorateClass([
5604
- Target.Public({ short: true }),
5790
+ Target.Public({ short: true, desc: "Start only the frontend SSR development server" }),
5605
5791
  __decorateParam(0, App()),
5606
5792
  __decorateParam(1, Option("open", { type: "boolean", desc: "open web browser", default: false })),
5607
5793
  __decorateParam(2, Option("turbo", { type: "boolean", desc: "turbo", default: false })),
5608
5794
  __decorateParam(3, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5609
5795
  ], ApplicationCommand.prototype, "startFrontend", 1);
5610
5796
  __decorateClass([
5611
- Target.Public({ short: true }),
5797
+ Target.Public({ short: true, desc: "Start CSR (Client-Side Rendering) development server" }),
5612
5798
  __decorateParam(0, App()),
5613
5799
  __decorateParam(1, Option("open", { type: "boolean", desc: "open web browser", default: false })),
5614
5800
  __decorateParam(2, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5615
5801
  ], ApplicationCommand.prototype, "startCsr", 1);
5616
5802
  __decorateClass([
5617
- Target.Public({ short: true }),
5803
+ Target.Public({ short: true, desc: "Start iOS app in simulator or device" }),
5618
5804
  __decorateParam(0, App()),
5619
5805
  __decorateParam(1, Option("open", { type: "boolean", desc: "open ios simulator", default: false })),
5620
5806
  __decorateParam(2, Option("release", { type: "boolean", desc: "release mode", default: false })),
5621
5807
  __decorateParam(3, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5622
5808
  ], ApplicationCommand.prototype, "startIos", 1);
5623
5809
  __decorateClass([
5624
- Target.Public({ short: true }),
5810
+ Target.Public({ short: true, desc: "Start Android app in emulator or device" }),
5625
5811
  __decorateParam(0, App()),
5626
5812
  __decorateParam(1, Option("host", {
5627
5813
  type: "string",
@@ -5634,16 +5820,16 @@ __decorateClass([
5634
5820
  __decorateParam(4, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5635
5821
  ], ApplicationCommand.prototype, "startAndroid", 1);
5636
5822
  __decorateClass([
5637
- Target.Public(),
5823
+ Target.Public({ desc: "Build and package iOS app for release (App Store)" }),
5638
5824
  __decorateParam(0, App())
5639
5825
  ], ApplicationCommand.prototype, "releaseIos", 1);
5640
5826
  __decorateClass([
5641
- Target.Public(),
5827
+ Target.Public({ desc: "Build and package Android app for release (Play Store)" }),
5642
5828
  __decorateParam(0, App()),
5643
5829
  __decorateParam(1, Option("assembleType", { type: "string", enum: ["apk", "aab"], default: "apk" }))
5644
5830
  ], ApplicationCommand.prototype, "releaseAndroid", 1);
5645
5831
  __decorateClass([
5646
- Target.Public(),
5832
+ Target.Public({ desc: "Release app source code with OTA update support" }),
5647
5833
  __decorateParam(0, App()),
5648
5834
  __decorateParam(1, Option("rebuild", { type: "boolean", desc: "rebuild", default: false })),
5649
5835
  __decorateParam(2, Option("buildNum", { desc: "build number", default: 0 })),
@@ -5651,11 +5837,11 @@ __decorateClass([
5651
5837
  __decorateParam(4, Option("local", { type: "boolean", desc: "local", default: true }))
5652
5838
  ], ApplicationCommand.prototype, "releaseSource", 1);
5653
5839
  __decorateClass([
5654
- Target.Public(),
5840
+ Target.Public({ desc: "Deploy over-the-air (OTA) update for mobile app" }),
5655
5841
  __decorateParam(0, App())
5656
5842
  ], ApplicationCommand.prototype, "codepush", 1);
5657
5843
  __decorateClass([
5658
- Target.Public(),
5844
+ Target.Public({ desc: "Dump application database to local file" }),
5659
5845
  __decorateParam(0, App()),
5660
5846
  __decorateParam(1, Option("environment", {
5661
5847
  desc: "environment",
@@ -5665,7 +5851,7 @@ __decorateClass([
5665
5851
  }))
5666
5852
  ], ApplicationCommand.prototype, "dumpDatabase", 1);
5667
5853
  __decorateClass([
5668
- Target.Public(),
5854
+ Target.Public({ desc: "Restore application database from local dump" }),
5669
5855
  __decorateParam(0, App()),
5670
5856
  __decorateParam(1, Option("source", {
5671
5857
  desc: "source environment",
@@ -5679,21 +5865,21 @@ __decorateClass([
5679
5865
  }))
5680
5866
  ], ApplicationCommand.prototype, "restoreDatabase", 1);
5681
5867
  __decorateClass([
5682
- Target.Public(),
5868
+ Target.Public({ desc: "Start local database services (MongoDB, Redis, Meilisearch)" }),
5683
5869
  __decorateParam(0, Workspace())
5684
5870
  ], ApplicationCommand.prototype, "dbup", 1);
5685
5871
  __decorateClass([
5686
- Target.Public(),
5872
+ Target.Public({ desc: "Stop local database services" }),
5687
5873
  __decorateParam(0, Workspace())
5688
5874
  ], ApplicationCommand.prototype, "dbdown", 1);
5689
5875
  __decorateClass([
5690
- Target.Public(),
5876
+ Target.Public({ desc: "Pull database from cloud to local" }),
5691
5877
  __decorateParam(0, App()),
5692
5878
  __decorateParam(1, Option("env", { default: "debug" })),
5693
5879
  __decorateParam(2, Option("dump", { default: true }))
5694
5880
  ], ApplicationCommand.prototype, "pullDatabase", 1);
5695
5881
  __decorateClass([
5696
- Target.Public(),
5882
+ Target.Public({ desc: "Configure application settings interactively" }),
5697
5883
  __decorateParam(0, App())
5698
5884
  ], ApplicationCommand.prototype, "configureApp", 1);
5699
5885
  ApplicationCommand = __decorateClass([
@@ -5784,7 +5970,7 @@ var PackageScript = class {
5784
5970
 
5785
5971
  // pkgs/@akanjs/cli/src/cloud/cloud.runner.ts
5786
5972
  import { confirm as confirm3 } from "@inquirer/prompts";
5787
- import chalk6 from "chalk";
5973
+ import chalk7 from "chalk";
5788
5974
  import latestVersion from "latest-version";
5789
5975
  import open from "open";
5790
5976
  import * as QRcode from "qrcode";
@@ -5794,17 +5980,17 @@ var CloudRunner = class {
5794
5980
  const config = getHostConfig();
5795
5981
  const self = config.auth ? await getSelf(config.auth.token) : null;
5796
5982
  if (self) {
5797
- Logger.rawLog(chalk6.green(`
5983
+ Logger.rawLog(chalk7.green(`
5798
5984
  \u2713 Already logged in akan cloud as ${self.nickname}
5799
5985
  `));
5800
5986
  return true;
5801
5987
  }
5802
5988
  const remoteId = uuidv4();
5803
5989
  const signinUrl = `${akanCloudClientUrl}/signin?remoteId=${remoteId}`;
5804
- Logger.rawLog(chalk6.bold(`
5805
- ${chalk6.green("\u27A4")} Authentication Required`));
5806
- Logger.rawLog(chalk6.dim("Please visit or click the following URL:"));
5807
- Logger.rawLog(chalk6.cyan.underline(signinUrl) + "\n");
5990
+ Logger.rawLog(chalk7.bold(`
5991
+ ${chalk7.green("\u27A4")} Authentication Required`));
5992
+ Logger.rawLog(chalk7.dim("Please visit or click the following URL:"));
5993
+ Logger.rawLog(chalk7.cyan.underline(signinUrl) + "\n");
5808
5994
  try {
5809
5995
  const qrcode = await new Promise((resolve, reject) => {
5810
5996
  QRcode.toString(signinUrl, { type: "terminal", small: true }, (err, data) => {
@@ -5815,11 +6001,11 @@ ${chalk6.green("\u27A4")} Authentication Required`));
5815
6001
  });
5816
6002
  Logger.rawLog(qrcode);
5817
6003
  await open(signinUrl);
5818
- Logger.rawLog(chalk6.dim("Opening browser..."));
6004
+ Logger.rawLog(chalk7.dim("Opening browser..."));
5819
6005
  } catch {
5820
- Logger.rawLog(chalk6.yellow("Could not open browser. Please visit the URL manually."));
6006
+ Logger.rawLog(chalk7.yellow("Could not open browser. Please visit the URL manually."));
5821
6007
  }
5822
- Logger.rawLog(chalk6.dim("Waiting for authentication..."));
6008
+ Logger.rawLog(chalk7.dim("Waiting for authentication..."));
5823
6009
  const MAX_RETRY = 300;
5824
6010
  for (let i = 0; i < MAX_RETRY; i++) {
5825
6011
  const res = await fetch(`${akanCloudBackendUrl}/user/getRemoteAuthToken/${remoteId}`);
@@ -5827,28 +6013,28 @@ ${chalk6.green("\u27A4")} Authentication Required`));
5827
6013
  const self2 = jwt ? await getSelf(jwt) : null;
5828
6014
  if (jwt && self2) {
5829
6015
  setHostConfig(akanCloudHost, { auth: { token: jwt, self: self2 } });
5830
- Logger.rawLog(chalk6.green(`\r\u2713 Authentication successful!`));
5831
- Logger.rawLog(chalk6.green.bold(`
6016
+ Logger.rawLog(chalk7.green(`\r\u2713 Authentication successful!`));
6017
+ Logger.rawLog(chalk7.green.bold(`
5832
6018
  \u2728 Welcome aboard, ${self2.nickname}!`));
5833
- Logger.rawLog(chalk6.dim("You're now ready to use Akan CLI!\n"));
6019
+ Logger.rawLog(chalk7.dim("You're now ready to use Akan CLI!\n"));
5834
6020
  return true;
5835
6021
  }
5836
6022
  await sleep(2e3);
5837
6023
  }
5838
- throw new Error(chalk6.red("\u2716 Authentication timed out after 10 minutes. Please try again."));
6024
+ throw new Error(chalk7.red("\u2716 Authentication timed out after 10 minutes. Please try again."));
5839
6025
  }
5840
6026
  logout() {
5841
6027
  const config = getHostConfig();
5842
6028
  if (config.auth) {
5843
6029
  setHostConfig(akanCloudHost, {});
5844
- Logger.rawLog(chalk6.magenta.bold(`
6030
+ Logger.rawLog(chalk7.magenta.bold(`
5845
6031
  \u{1F44B} Goodbye, ${config.auth.self.nickname}!`));
5846
- Logger.rawLog(chalk6.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n"));
5847
- Logger.rawLog(chalk6.cyan("You have been successfully logged out."));
5848
- Logger.rawLog(chalk6.dim("Thank you for using Akan CLI. Come back soon! \u{1F31F}\n"));
6032
+ Logger.rawLog(chalk7.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n"));
6033
+ Logger.rawLog(chalk7.cyan("You have been successfully logged out."));
6034
+ Logger.rawLog(chalk7.dim("Thank you for using Akan CLI. Come back soon! \u{1F31F}\n"));
5849
6035
  } else {
5850
- Logger.rawLog(chalk6.yellow.bold("\n\u26A0\uFE0F No active session found"));
5851
- Logger.rawLog(chalk6.dim("You were not logged in to begin with\n"));
6036
+ Logger.rawLog(chalk7.yellow.bold("\n\u26A0\uFE0F No active session found"));
6037
+ Logger.rawLog(chalk7.dim("You were not logged in to begin with\n"));
5852
6038
  }
5853
6039
  }
5854
6040
  async setLlm() {
@@ -5856,7 +6042,7 @@ ${chalk6.green("\u27A4")} Authentication Required`));
5856
6042
  }
5857
6043
  resetLlm() {
5858
6044
  AiSession.setLlmConfig(null);
5859
- Logger.rawLog(chalk6.green("\u2611\uFE0F LLM model config is cleared. Please run `akan set-llm` to set a new LLM model."));
6045
+ Logger.rawLog(chalk7.green("\u2611\uFE0F LLM model config is cleared. Please run `akan set-llm` to set a new LLM model."));
5860
6046
  }
5861
6047
  async getAkanPkgs(workspace) {
5862
6048
  const pkgs = await workspace.getPkgs();
@@ -5996,32 +6182,32 @@ var CloudCommand = class {
5996
6182
  }
5997
6183
  };
5998
6184
  __decorateClass([
5999
- Target.Public(),
6185
+ Target.Public({ desc: "Login to Akan Cloud services" }),
6000
6186
  __decorateParam(0, Workspace())
6001
6187
  ], CloudCommand.prototype, "login", 1);
6002
6188
  __decorateClass([
6003
- Target.Public(),
6189
+ Target.Public({ desc: "Logout from Akan Cloud services" }),
6004
6190
  __decorateParam(0, Workspace())
6005
6191
  ], CloudCommand.prototype, "logout", 1);
6006
6192
  __decorateClass([
6007
- Target.Public(),
6193
+ Target.Public({ desc: "Configure LLM (Large Language Model) API key" }),
6008
6194
  __decorateParam(0, Workspace())
6009
6195
  ], CloudCommand.prototype, "setLlm", 1);
6010
6196
  __decorateClass([
6011
- Target.Public(),
6197
+ Target.Public({ desc: "Reset LLM configuration to default" }),
6012
6198
  __decorateParam(0, Workspace())
6013
6199
  ], CloudCommand.prototype, "resetLlm", 1);
6014
6200
  __decorateClass([
6015
- Target.Public(),
6201
+ Target.Public({ desc: "Ask AI assistant a question about your project" }),
6016
6202
  __decorateParam(0, Option("question", { ask: "question to ask" })),
6017
6203
  __decorateParam(1, Workspace())
6018
6204
  ], CloudCommand.prototype, "ask", 1);
6019
6205
  __decorateClass([
6020
- Target.Public({ devOnly: true }),
6206
+ Target.Public({ devOnly: true, desc: "Deploy Akan.js framework to cloud (internal use)" }),
6021
6207
  __decorateParam(0, Workspace())
6022
6208
  ], CloudCommand.prototype, "deployAkan", 1);
6023
6209
  __decorateClass([
6024
- Target.Public(),
6210
+ Target.Public({ desc: "Update Akan.js framework to the latest version" }),
6025
6211
  __decorateParam(0, Workspace()),
6026
6212
  __decorateParam(1, Option("tag", {
6027
6213
  desc: "tag of the update",
@@ -6050,20 +6236,20 @@ var LibraryCommand = class {
6050
6236
  }
6051
6237
  };
6052
6238
  __decorateClass([
6053
- Target.Public(),
6239
+ Target.Public({ desc: "Create a new shared library in the workspace" }),
6054
6240
  __decorateParam(0, Argument("libName", { desc: "name of library" })),
6055
6241
  __decorateParam(1, Workspace())
6056
6242
  ], LibraryCommand.prototype, "createLibrary", 1);
6057
6243
  __decorateClass([
6058
- Target.Public(),
6244
+ Target.Public({ desc: "Remove a library from the workspace" }),
6059
6245
  __decorateParam(0, Lib())
6060
6246
  ], LibraryCommand.prototype, "removeLibrary", 1);
6061
6247
  __decorateClass([
6062
- Target.Public(),
6248
+ Target.Public({ desc: "Sync dependencies and configuration for a library" }),
6063
6249
  __decorateParam(0, Lib())
6064
6250
  ], LibraryCommand.prototype, "syncLibrary", 1);
6065
6251
  __decorateClass([
6066
- Target.Public(),
6252
+ Target.Public({ desc: "Install pre-built library templates (shared, util, etc.)" }),
6067
6253
  __decorateParam(0, Argument("libName", { desc: "name of library", nullable: true })),
6068
6254
  __decorateParam(1, Workspace())
6069
6255
  ], LibraryCommand.prototype, "installLibrary", 1);
@@ -6616,25 +6802,25 @@ var ModuleCommand = class {
6616
6802
  }
6617
6803
  };
6618
6804
  __decorateClass([
6619
- Target.Public(),
6805
+ Target.Public({ desc: "Create a new domain module (constant, service, signal, store, UI)" }),
6620
6806
  __decorateParam(0, Argument("moduleName", { desc: "name of module" })),
6621
6807
  __decorateParam(1, Sys()),
6622
6808
  __decorateParam(2, Option("page", { type: "boolean", desc: "create page", default: false }))
6623
6809
  ], ModuleCommand.prototype, "createModule", 1);
6624
6810
  __decorateClass([
6625
- Target.Public(),
6811
+ Target.Public({ desc: "Remove a module from an app or library" }),
6626
6812
  __decorateParam(0, Module())
6627
6813
  ], ModuleCommand.prototype, "removeModule", 1);
6628
6814
  __decorateClass([
6629
- Target.Public(),
6815
+ Target.Public({ desc: "Create a View component for a module (full page view)" }),
6630
6816
  __decorateParam(0, Module())
6631
6817
  ], ModuleCommand.prototype, "createView", 1);
6632
6818
  __decorateClass([
6633
- Target.Public(),
6819
+ Target.Public({ desc: "Create a Unit component for a module (list/card item)" }),
6634
6820
  __decorateParam(0, Module())
6635
6821
  ], ModuleCommand.prototype, "createUnit", 1);
6636
6822
  __decorateClass([
6637
- Target.Public(),
6823
+ Target.Public({ desc: "Create a Template component for a module (form)" }),
6638
6824
  __decorateParam(0, Module())
6639
6825
  ], ModuleCommand.prototype, "createTemplate", 1);
6640
6826
  ModuleCommand = __decorateClass([
@@ -6661,24 +6847,24 @@ var PackageCommand = class {
6661
6847
  }
6662
6848
  };
6663
6849
  __decorateClass([
6664
- Target.Public(),
6850
+ Target.Public({ desc: "Show version information for all packages" }),
6665
6851
  __decorateParam(0, Workspace())
6666
6852
  ], PackageCommand.prototype, "version", 1);
6667
6853
  __decorateClass([
6668
- Target.Public(),
6854
+ Target.Public({ desc: "Create a new package in pkgs/@akanjs/" }),
6669
6855
  __decorateParam(0, Option("name", { desc: "name of package" })),
6670
6856
  __decorateParam(1, Workspace())
6671
6857
  ], PackageCommand.prototype, "createPackage", 1);
6672
6858
  __decorateClass([
6673
- Target.Public(),
6859
+ Target.Public({ desc: "Remove a package from the workspace" }),
6674
6860
  __decorateParam(0, Pkg())
6675
6861
  ], PackageCommand.prototype, "removePackage", 1);
6676
6862
  __decorateClass([
6677
- Target.Public(),
6863
+ Target.Public({ desc: "Sync dependencies and configuration for a package" }),
6678
6864
  __decorateParam(0, Pkg())
6679
6865
  ], PackageCommand.prototype, "syncPackage", 1);
6680
6866
  __decorateClass([
6681
- Target.Public(),
6867
+ Target.Public({ desc: "Build a package for distribution" }),
6682
6868
  __decorateParam(0, Pkg())
6683
6869
  ], PackageCommand.prototype, "buildPackage", 1);
6684
6870
  PackageCommand = __decorateClass([
@@ -6693,7 +6879,7 @@ var PageCommand = class {
6693
6879
  }
6694
6880
  };
6695
6881
  __decorateClass([
6696
- Target.Public(),
6882
+ Target.Public({ desc: "Create CRUD pages for a module (list, detail, create, edit)" }),
6697
6883
  __decorateParam(0, App()),
6698
6884
  __decorateParam(1, Module()),
6699
6885
  __decorateParam(2, Option("basePath", { desc: "base path", nullable: true })),
@@ -6900,7 +7086,7 @@ var WorkspaceCommand = class {
6900
7086
  }
6901
7087
  };
6902
7088
  __decorateClass([
6903
- Target.Public(),
7089
+ Target.Public({ desc: "Create a new Akan.js workspace" }),
6904
7090
  __decorateParam(0, Argument("workspaceName", { desc: "what is the name of your organization?" })),
6905
7091
  __decorateParam(1, Option("app", { desc: "what is the codename of your first application? (e.g. myapp)" })),
6906
7092
  __decorateParam(2, Option("dir", { desc: "directory of workspace", default: process.env.USE_AKANJS_PKGS === "true" ? "local" : "." })),
@@ -6922,26 +7108,26 @@ __decorateClass([
6922
7108
  }))
6923
7109
  ], WorkspaceCommand.prototype, "createWorkspace", 1);
6924
7110
  __decorateClass([
6925
- Target.Public(),
7111
+ Target.Public({ desc: "Generate MongoDB types and schemas" }),
6926
7112
  __decorateParam(0, Workspace())
6927
7113
  ], WorkspaceCommand.prototype, "generateMongo", 1);
6928
7114
  __decorateClass([
6929
- Target.Public(),
7115
+ Target.Public({ desc: "Lint and fix code in a specific app/lib/pkg" }),
6930
7116
  __decorateParam(0, Exec()),
6931
7117
  __decorateParam(1, Option("fix", { type: "boolean", default: true })),
6932
7118
  __decorateParam(2, Workspace())
6933
7119
  ], WorkspaceCommand.prototype, "lint", 1);
6934
7120
  __decorateClass([
6935
- Target.Public(),
7121
+ Target.Public({ desc: "Lint and fix code in all apps and libraries" }),
6936
7122
  __decorateParam(0, Option("fix", { type: "boolean", default: true })),
6937
7123
  __decorateParam(1, Workspace())
6938
7124
  ], WorkspaceCommand.prototype, "lintAll", 1);
6939
7125
  __decorateClass([
6940
- Target.Public(),
7126
+ Target.Public({ desc: "Sync dependencies and configuration for all apps and libraries" }),
6941
7127
  __decorateParam(0, Workspace())
6942
7128
  ], WorkspaceCommand.prototype, "syncAll", 1);
6943
7129
  __decorateClass([
6944
- Target.Public(),
7130
+ Target.Public({ desc: "Dump all application databases to local files" }),
6945
7131
  __decorateParam(0, Option("environment", {
6946
7132
  desc: "environment",
6947
7133
  default: "debug",
@@ -6951,7 +7137,7 @@ __decorateClass([
6951
7137
  __decorateParam(1, Workspace())
6952
7138
  ], WorkspaceCommand.prototype, "dumpDatabaseAll", 1);
6953
7139
  __decorateClass([
6954
- Target.Public(),
7140
+ Target.Public({ desc: "Restore all application databases from local dump" }),
6955
7141
  __decorateParam(0, Option("source", {
6956
7142
  desc: "source environment",
6957
7143
  enum: ["debug", "develop", "main"],
@@ -7271,23 +7457,23 @@ var GuidelineCommand = class {
7271
7457
  }
7272
7458
  };
7273
7459
  __decorateClass([
7274
- Target.Public(),
7460
+ Target.Public({ devOnly: true, desc: "Generate AI development guideline/instruction for your project" }),
7275
7461
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7276
7462
  __decorateParam(1, Workspace())
7277
7463
  ], GuidelineCommand.prototype, "generateInstruction", 1);
7278
7464
  __decorateClass([
7279
- Target.Public(),
7465
+ Target.Public({ devOnly: true, desc: "Update existing AI guideline/instruction" }),
7280
7466
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7281
7467
  __decorateParam(1, Option("request", { ask: "What do you want to update?" })),
7282
7468
  __decorateParam(2, Workspace())
7283
7469
  ], GuidelineCommand.prototype, "updateInstruction", 1);
7284
7470
  __decorateClass([
7285
- Target.Public(),
7471
+ Target.Public({ devOnly: true, desc: "Generate documentation from guideline/instruction" }),
7286
7472
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7287
7473
  __decorateParam(1, Workspace())
7288
7474
  ], GuidelineCommand.prototype, "generateDocument", 1);
7289
7475
  __decorateClass([
7290
- Target.Public(),
7476
+ Target.Public({ devOnly: true, desc: "Re-apply guideline/instruction to codebase" }),
7291
7477
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7292
7478
  __decorateParam(1, Workspace())
7293
7479
  ], GuidelineCommand.prototype, "reapplyInstruction", 1);
@@ -7484,13 +7670,13 @@ var ScalarCommand = class {
7484
7670
  }
7485
7671
  };
7486
7672
  __decorateClass([
7487
- Target.Public(),
7673
+ Target.Public({ desc: "Create a new scalar type (simple data model without DB)" }),
7488
7674
  __decorateParam(0, Argument("scalarName", { desc: "name of scalar" })),
7489
7675
  __decorateParam(1, Option("ai", { type: "boolean", default: false, desc: "use ai to create scalar" })),
7490
7676
  __decorateParam(2, Sys())
7491
7677
  ], ScalarCommand.prototype, "createScalar", 1);
7492
7678
  __decorateClass([
7493
- Target.Public(),
7679
+ Target.Public({ desc: "Remove a scalar type from an app or library" }),
7494
7680
  __decorateParam(0, Argument("scalarName", { desc: "name of scalar" })),
7495
7681
  __decorateParam(1, Sys())
7496
7682
  ], ScalarCommand.prototype, "removeScalar", 1);