@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/cjs/index.js CHANGED
@@ -236,15 +236,15 @@ var Logger = class _Logger {
236
236
  console.log(`${processMsg} ${timestampMsg} ${logLevelMsg} ${contextMsg} ${contentMsg} ${timeDiffMsg}
237
237
  `);
238
238
  }
239
- static rawLog(msg = "", method) {
239
+ static rawLog(msg = "", method, outputStream) {
240
240
  this.raw(`${msg}
241
- `, method);
241
+ `, method, outputStream);
242
242
  }
243
- static raw(msg = "", method) {
243
+ static raw(msg = "", method, outputStream) {
244
244
  if (typeof window === "undefined" && method !== "console" && global.process)
245
- global.process.stdout.write(msg);
245
+ global.process[outputStream === "error" ? "stderr" : "stdout"].write(msg);
246
246
  else
247
- console.log(msg.trim());
247
+ console[outputStream === "error" ? "error" : "log"](msg.trim());
248
248
  }
249
249
  };
250
250
 
@@ -3353,13 +3353,186 @@ var Target = {
3353
3353
  Dev: getTarget("dev")
3354
3354
  };
3355
3355
 
3356
+ // pkgs/@akanjs/devkit/src/commandDecorators/helpFormatter.ts
3357
+ var import_chalk4 = __toESM(require("chalk"));
3358
+ var camelToKebabCase = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
3359
+ var groupCommands = (commands) => {
3360
+ const groups = /* @__PURE__ */ new Map();
3361
+ for (const command of commands) {
3362
+ const className = command.name.replace("Command", "");
3363
+ const groupName = className;
3364
+ if (!groups.has(groupName)) {
3365
+ groups.set(groupName, { name: groupName, commands: [] });
3366
+ }
3367
+ const targetMetas = getTargetMetas(command);
3368
+ for (const targetMeta of targetMetas) {
3369
+ if (targetMeta.targetOption.devOnly)
3370
+ continue;
3371
+ const [allArgMetas] = getArgMetas(command, targetMeta.key);
3372
+ const args = allArgMetas.filter((arg) => arg.type !== "Option").map((arg) => {
3373
+ if (arg.type === "Workspace")
3374
+ return "";
3375
+ if (arg.type === "Module")
3376
+ return "[sys:module]";
3377
+ if (arg.type === "Argument") {
3378
+ return `[${arg.name}]`;
3379
+ }
3380
+ return `[${arg.type.toLowerCase()}]`;
3381
+ }).filter(Boolean);
3382
+ const group = groups.get(groupName);
3383
+ if (group) {
3384
+ group.commands.push({
3385
+ key: camelToKebabCase(targetMeta.key),
3386
+ args,
3387
+ desc: targetMeta.targetOption.desc
3388
+ });
3389
+ }
3390
+ }
3391
+ }
3392
+ return groups;
3393
+ };
3394
+ var formatHelp = (commands, version) => {
3395
+ const groups = groupCommands(commands);
3396
+ const lines = [];
3397
+ lines.push("");
3398
+ lines.push(import_chalk4.default.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"));
3399
+ lines.push(
3400
+ import_chalk4.default.bold.cyan(" \u2551") + import_chalk4.default.bold.white(" Akan.js Framework CLI ") + import_chalk4.default.bold.cyan(" \u2551")
3401
+ );
3402
+ lines.push(import_chalk4.default.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"));
3403
+ lines.push("");
3404
+ lines.push(import_chalk4.default.gray(` Version: ${version}`));
3405
+ lines.push("");
3406
+ lines.push(import_chalk4.default.bold.yellow(" USAGE"));
3407
+ lines.push("");
3408
+ lines.push(import_chalk4.default.gray(" $ ") + import_chalk4.default.white("akan") + import_chalk4.default.gray(" <command> [options]"));
3409
+ lines.push("");
3410
+ lines.push(import_chalk4.default.bold.yellow(" COMMANDS"));
3411
+ lines.push("");
3412
+ for (const [groupName, group] of groups) {
3413
+ if (group.commands.length === 0)
3414
+ continue;
3415
+ lines.push(import_chalk4.default.bold.magenta(` ${groupName}`));
3416
+ lines.push("");
3417
+ for (const cmd of group.commands) {
3418
+ const cmdName = import_chalk4.default.green(cmd.key);
3419
+ const cmdArgs = cmd.args.length > 0 ? import_chalk4.default.gray(` ${cmd.args.join(" ")}`) : "";
3420
+ if (cmd.desc) {
3421
+ const maxLineLength = 70;
3422
+ const cmdPrefix = ` ${cmdName}${cmdArgs}`;
3423
+ const indent = " ";
3424
+ if (cmdPrefix.length + cmd.desc.length + 3 < maxLineLength) {
3425
+ lines.push(`${cmdPrefix} ${import_chalk4.default.gray(cmd.desc)}`);
3426
+ } else {
3427
+ lines.push(cmdPrefix);
3428
+ lines.push(`${indent}${import_chalk4.default.gray(cmd.desc)}`);
3429
+ }
3430
+ } else {
3431
+ lines.push(` ${cmdName}${cmdArgs}`);
3432
+ }
3433
+ }
3434
+ lines.push("");
3435
+ }
3436
+ lines.push(import_chalk4.default.bold.yellow(" OPTIONS"));
3437
+ lines.push("");
3438
+ lines.push(` ${import_chalk4.default.green("-v, --verbose")} ${import_chalk4.default.gray("Enable verbose output")}`);
3439
+ lines.push(` ${import_chalk4.default.green("-h, --help")} ${import_chalk4.default.gray("Display this help message")}`);
3440
+ lines.push(` ${import_chalk4.default.green("-V, --version")} ${import_chalk4.default.gray("Output version number")}`);
3441
+ lines.push("");
3442
+ lines.push(import_chalk4.default.bold.yellow(" EXAMPLES"));
3443
+ lines.push("");
3444
+ lines.push(import_chalk4.default.gray(" # Create a new workspace"));
3445
+ lines.push(import_chalk4.default.white(" $ akan create-workspace myproject"));
3446
+ lines.push("");
3447
+ lines.push(import_chalk4.default.gray(" # Start development server"));
3448
+ lines.push(import_chalk4.default.white(" $ akan start myapp"));
3449
+ lines.push("");
3450
+ lines.push(import_chalk4.default.gray(" # Create a new module"));
3451
+ lines.push(import_chalk4.default.white(" $ akan create-module userProfile"));
3452
+ lines.push("");
3453
+ lines.push(import_chalk4.default.gray(" Documentation: ") + import_chalk4.default.cyan("https://akanjs.com/docs"));
3454
+ lines.push(import_chalk4.default.gray(" Report issues: ") + import_chalk4.default.cyan("https://github.com/akan-team/akanjs/issues"));
3455
+ lines.push("");
3456
+ return lines.join("\n");
3457
+ };
3458
+ var formatCommandHelp = (command, key) => {
3459
+ const [allArgMetas, argMetas] = getArgMetas(command, key);
3460
+ const kebabKey = camelToKebabCase(key);
3461
+ const lines = [];
3462
+ const targetMetas = getTargetMetas(command);
3463
+ const targetMeta = targetMetas.find((t) => t.key === key);
3464
+ const commandDesc = targetMeta?.targetOption.desc;
3465
+ lines.push("");
3466
+ lines.push(import_chalk4.default.bold.cyan(` Command: ${kebabKey}`));
3467
+ if (commandDesc) {
3468
+ lines.push(import_chalk4.default.gray(` ${commandDesc}`));
3469
+ }
3470
+ lines.push("");
3471
+ const args = allArgMetas.filter((arg) => arg.type !== "Option").map((arg) => {
3472
+ if (arg.type === "Workspace")
3473
+ return "";
3474
+ if (arg.type === "Module")
3475
+ return "[sys:module]";
3476
+ if (arg.type === "Argument") {
3477
+ return `[${camelToKebabCase(arg.name)}]`;
3478
+ }
3479
+ return `[${arg.type.toLowerCase()}]`;
3480
+ }).filter(Boolean).join(" ");
3481
+ lines.push(import_chalk4.default.bold.yellow(" USAGE"));
3482
+ lines.push("");
3483
+ lines.push(import_chalk4.default.gray(" $ ") + import_chalk4.default.white(`akan ${kebabKey}`) + (args ? import_chalk4.default.gray(` ${args}`) : ""));
3484
+ lines.push("");
3485
+ const nonOptionArgs = allArgMetas.filter((arg) => arg.type !== "Option");
3486
+ if (nonOptionArgs.length > 0) {
3487
+ lines.push(import_chalk4.default.bold.yellow(" ARGUMENTS"));
3488
+ lines.push("");
3489
+ for (const arg of nonOptionArgs) {
3490
+ if (arg.type === "Workspace")
3491
+ continue;
3492
+ let argName;
3493
+ let argDesc;
3494
+ let example = "";
3495
+ if (arg.type === "Argument") {
3496
+ argName = camelToKebabCase(arg.name);
3497
+ argDesc = arg.argsOption.desc ?? "";
3498
+ example = arg.argsOption.example ? import_chalk4.default.gray(` (e.g., ${String(arg.argsOption.example)})`) : "";
3499
+ } else if (arg.type === "Module") {
3500
+ argName = "sys:module";
3501
+ argDesc = "Module in format: app-name:module-name or lib-name:module-name";
3502
+ } else {
3503
+ argName = arg.type.toLowerCase();
3504
+ argDesc = `${arg.type} name in this workspace`;
3505
+ }
3506
+ lines.push(` ${import_chalk4.default.green(argName)} ${import_chalk4.default.gray(argDesc)}${example}`);
3507
+ }
3508
+ lines.push("");
3509
+ }
3510
+ const optionArgs = argMetas.filter((a) => a.type === "Option");
3511
+ if (optionArgs.length > 0) {
3512
+ lines.push(import_chalk4.default.bold.yellow(" OPTIONS"));
3513
+ lines.push("");
3514
+ for (const arg of optionArgs) {
3515
+ const opt = arg.argsOption;
3516
+ const flag = opt.flag ? `-${opt.flag}, ` : "";
3517
+ const kebabName = camelToKebabCase(arg.name);
3518
+ const optName = `${flag}--${kebabName}`;
3519
+ const optDesc = opt.desc ?? "";
3520
+ const defaultVal = opt.default !== void 0 ? import_chalk4.default.gray(` [default: ${String(opt.default)}]`) : "";
3521
+ const choices = opt.enum ? import_chalk4.default.gray(` (${opt.enum.join(", ")})`) : "";
3522
+ lines.push(` ${import_chalk4.default.green(optName)} ${import_chalk4.default.gray(optDesc)}${defaultVal}${choices}`);
3523
+ }
3524
+ lines.push("");
3525
+ }
3526
+ return lines.join("\n");
3527
+ };
3528
+
3356
3529
  // pkgs/@akanjs/devkit/src/commandDecorators/command.ts
3357
3530
  var import_prompts3 = require("@inquirer/prompts");
3358
- var import_chalk4 = __toESM(require("chalk"));
3531
+ var import_chalk5 = __toESM(require("chalk"));
3359
3532
  var import_commander = require("commander");
3360
3533
  var import_fs8 = __toESM(require("fs"));
3361
3534
  var import_meta3 = {};
3362
- var camelToKebabCase = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
3535
+ var camelToKebabCase2 = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
3363
3536
  var handleOption = (programCommand, argMeta) => {
3364
3537
  const {
3365
3538
  type,
@@ -3369,7 +3542,7 @@ var handleOption = (programCommand, argMeta) => {
3369
3542
  enum: enumChoices,
3370
3543
  ask
3371
3544
  } = argMeta.argsOption;
3372
- const kebabName = camelToKebabCase(argMeta.name);
3545
+ const kebabName = camelToKebabCase2(argMeta.name);
3373
3546
  const choices = enumChoices?.map(
3374
3547
  (choice) => typeof choice === "object" ? { value: choice.value, name: choice.label } : { value: choice, name: choice.toString() }
3375
3548
  );
@@ -3380,7 +3553,7 @@ var handleOption = (programCommand, argMeta) => {
3380
3553
  return programCommand;
3381
3554
  };
3382
3555
  var handleArgument = (programCommand, argMeta) => {
3383
- const kebabName = camelToKebabCase(argMeta.name);
3556
+ const kebabName = camelToKebabCase2(argMeta.name);
3384
3557
  if ((argMeta.argsOption.type ?? "string") !== "string")
3385
3558
  throw new Error(`Argument type must be string: ${argMeta.name}`);
3386
3559
  programCommand.argument(
@@ -3540,11 +3713,21 @@ var runCommands = async (...commands) => {
3540
3713
  const __dirname = getDirname(import_meta3.url);
3541
3714
  const hasPackageJson = import_fs8.default.existsSync(`${__dirname}/../package.json`);
3542
3715
  process.env.AKAN_VERSION = hasPackageJson ? JSON.parse(import_fs8.default.readFileSync(`${__dirname}/../package.json`, "utf8")).version : "0.0.1";
3543
- import_commander.program.version(process.env.AKAN_VERSION).description("Akan CLI");
3716
+ const hasHelpFlag = process.argv.includes("--help") || process.argv.includes("-h");
3717
+ const hasCommand = process.argv.length > 2 && !process.argv[2].startsWith("-");
3718
+ if (hasHelpFlag || !hasCommand) {
3719
+ if (process.argv.length === 2 || process.argv.length === 3 && hasHelpFlag) {
3720
+ Logger.rawLog(formatHelp(commands, process.env.AKAN_VERSION));
3721
+ process.exit(0);
3722
+ }
3723
+ }
3724
+ import_commander.program.version(process.env.AKAN_VERSION).description("Akan CLI").configureHelp({
3725
+ helpWidth: 100
3726
+ });
3544
3727
  const akanBasePackageJson = import_fs8.default.existsSync("./node_modules/@akanjs/base/package.json") ? JSON.parse(import_fs8.default.readFileSync("./node_modules/@akanjs/base/package.json", "utf8")) : null;
3545
3728
  if (akanBasePackageJson && akanBasePackageJson.version !== process.env.AKAN_VERSION) {
3546
3729
  Logger.rawLog(
3547
- import_chalk4.default.yellow(
3730
+ import_chalk5.default.yellow(
3548
3731
  `
3549
3732
  Akan CLI version is mismatch with installed package. ${process.env.AKAN_VERSION} (global) vs ${akanBasePackageJson.version} (base)
3550
3733
  It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
@@ -3554,7 +3737,7 @@ It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
3554
3737
  for (const command of commands) {
3555
3738
  const targetMetas = getTargetMetas(command);
3556
3739
  for (const targetMeta of targetMetas) {
3557
- const kebabKey = camelToKebabCase(targetMeta.key);
3740
+ const kebabKey = camelToKebabCase2(targetMeta.key);
3558
3741
  const commandNames = targetMeta.targetOption.short === true ? [
3559
3742
  kebabKey,
3560
3743
  typeof targetMeta.targetOption.short === "string" ? targetMeta.targetOption.short : kebabKey.split("-").map((s) => s.slice(0, 1)).join("")
@@ -3585,6 +3768,9 @@ It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
3585
3768
  }
3586
3769
  }
3587
3770
  programCommand = programCommand.option(`-v, --verbose [boolean]`, `verbose output`);
3771
+ programCommand.helpInformation = () => {
3772
+ return formatCommandHelp(command, targetMeta.key);
3773
+ };
3588
3774
  programCommand.action(async (...args) => {
3589
3775
  Logger.rawLog();
3590
3776
  const cmdArgs = args.slice(0, args.length - 2);
@@ -3614,7 +3800,7 @@ It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`
3614
3800
  } catch (e) {
3615
3801
  const errMsg = e instanceof Error ? e.message : typeof e === "string" ? e : JSON.stringify(e);
3616
3802
  Logger.rawLog(`
3617
- ${import_chalk4.default.red(errMsg)}`);
3803
+ ${import_chalk5.default.red(errMsg)}`);
3618
3804
  throw e;
3619
3805
  }
3620
3806
  });
@@ -3629,7 +3815,7 @@ var import_prompts4 = require("@inquirer/prompts");
3629
3815
  var import_messages = require("@langchain/core/messages");
3630
3816
  var import_deepseek = require("@langchain/deepseek");
3631
3817
  var import_openai2 = require("@langchain/openai");
3632
- var import_chalk5 = __toESM(require("chalk"));
3818
+ var import_chalk6 = __toESM(require("chalk"));
3633
3819
  var import_fs9 = __toESM(require("fs"));
3634
3820
  var MAX_ASK_TRY = 300;
3635
3821
  var supportedLlmModels = ["deepseek-chat", "deepseek-reasoner"];
@@ -3641,11 +3827,11 @@ var AiSession = class _AiSession {
3641
3827
  const llmConfig2 = this.getLlmConfig();
3642
3828
  if (llmConfig2) {
3643
3829
  this.#setChatModel(llmConfig2.model, llmConfig2.apiKey);
3644
- Logger.rawLog(import_chalk5.default.dim(`\u{1F916}akan editor uses existing LLM config (${llmConfig2.model})`));
3830
+ Logger.rawLog(import_chalk6.default.dim(`\u{1F916}akan editor uses existing LLM config (${llmConfig2.model})`));
3645
3831
  return this;
3646
3832
  }
3647
3833
  } else
3648
- Logger.rawLog(import_chalk5.default.yellow("\u{1F916}akan-editor is not initialized. LLM configuration should be set first."));
3834
+ Logger.rawLog(import_chalk6.default.yellow("\u{1F916}akan-editor is not initialized. LLM configuration should be set first."));
3649
3835
  const llmConfig = await this.#requestLlmConfig();
3650
3836
  const { model, apiKey } = llmConfig;
3651
3837
  await this.#validateApiKey(model, apiKey);
@@ -3689,7 +3875,7 @@ var AiSession = class _AiSession {
3689
3875
  return true;
3690
3876
  } catch (error) {
3691
3877
  spinner.fail(
3692
- import_chalk5.default.red(
3878
+ import_chalk6.default.red(
3693
3879
  `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"`
3694
3880
  )
3695
3881
  );
@@ -3726,7 +3912,7 @@ var AiSession = class _AiSession {
3726
3912
  }
3727
3913
  async ask(question, {
3728
3914
  onReasoning = (reasoning) => {
3729
- Logger.raw(import_chalk5.default.dim(reasoning));
3915
+ Logger.raw(import_chalk6.default.dim(reasoning));
3730
3916
  },
3731
3917
  onChunk = (chunk) => {
3732
3918
  Logger.raw(chunk);
@@ -5565,82 +5751,82 @@ var ApplicationCommand = class {
5565
5751
  }
5566
5752
  };
5567
5753
  __decorateClass([
5568
- Target.Public(),
5754
+ Target.Public({ desc: "Create a new application in the workspace" }),
5569
5755
  __decorateParam(0, Argument("appName", { desc: "name of application" })),
5570
5756
  __decorateParam(1, Option("start", { type: "boolean", desc: "start application", default: false })),
5571
5757
  __decorateParam(2, Workspace())
5572
5758
  ], ApplicationCommand.prototype, "createApplication", 1);
5573
5759
  __decorateClass([
5574
- Target.Public(),
5760
+ Target.Public({ desc: "Remove an application from the workspace" }),
5575
5761
  __decorateParam(0, App())
5576
5762
  ], ApplicationCommand.prototype, "removeApplication", 1);
5577
5763
  __decorateClass([
5578
- Target.Public(),
5764
+ Target.Public({ desc: "Sync dependencies and configuration for an app or library" }),
5579
5765
  __decorateParam(0, Sys())
5580
5766
  ], ApplicationCommand.prototype, "sync", 1);
5581
5767
  __decorateClass([
5582
- Target.Public(),
5768
+ Target.Public({ desc: "Run a custom script in the application" }),
5583
5769
  __decorateParam(0, App()),
5584
5770
  __decorateParam(1, Argument("filename", { desc: "name of script", nullable: true }))
5585
5771
  ], ApplicationCommand.prototype, "script", 1);
5586
5772
  __decorateClass([
5587
- Target.Public({ short: true }),
5773
+ Target.Public({ short: true, desc: "Build the application for production (frontend + backend)" }),
5588
5774
  __decorateParam(0, App())
5589
5775
  ], ApplicationCommand.prototype, "build", 1);
5590
5776
  __decorateClass([
5591
- Target.Public({ short: true }),
5777
+ Target.Public({ short: true, desc: "Build only the backend for production" }),
5592
5778
  __decorateParam(0, App())
5593
5779
  ], ApplicationCommand.prototype, "buildBackend", 1);
5594
5780
  __decorateClass([
5595
- Target.Public({ short: true }),
5781
+ Target.Public({ short: true, desc: "Build only the frontend (SSR) for production" }),
5596
5782
  __decorateParam(0, App())
5597
5783
  ], ApplicationCommand.prototype, "buildFrontend", 1);
5598
5784
  __decorateClass([
5599
- Target.Public({ short: true }),
5785
+ Target.Public({ short: true, desc: "Build the CSR (Client-Side Rendering) frontend" }),
5600
5786
  __decorateParam(0, App())
5601
5787
  ], ApplicationCommand.prototype, "buildCsr", 1);
5602
5788
  __decorateClass([
5603
- Target.Public({ short: true }),
5789
+ Target.Public({ short: true, desc: "Build iOS app with Capacitor" }),
5604
5790
  __decorateParam(0, App())
5605
5791
  ], ApplicationCommand.prototype, "buildIos", 1);
5606
5792
  __decorateClass([
5607
- Target.Public({ short: true }),
5793
+ Target.Public({ short: true, desc: "Build Android app with Capacitor" }),
5608
5794
  __decorateParam(0, App())
5609
5795
  ], ApplicationCommand.prototype, "buildAndroid", 1);
5610
5796
  __decorateClass([
5611
- Target.Public({ short: true }),
5797
+ Target.Public({ short: true, desc: "Start development server (frontend SSR + backend)" }),
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, "start", 1);
5616
5802
  __decorateClass([
5617
- Target.Public({ short: true }),
5803
+ Target.Public({ short: true, desc: "Start only the backend development server" }),
5618
5804
  __decorateParam(0, App()),
5619
5805
  __decorateParam(1, Option("open", { type: "boolean", desc: "open graphql playground", default: false })),
5620
5806
  __decorateParam(2, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5621
5807
  ], ApplicationCommand.prototype, "startBackend", 1);
5622
5808
  __decorateClass([
5623
- Target.Public({ short: true }),
5809
+ Target.Public({ short: true, desc: "Start only the frontend SSR development server" }),
5624
5810
  __decorateParam(0, App()),
5625
5811
  __decorateParam(1, Option("open", { type: "boolean", desc: "open web browser", default: false })),
5626
5812
  __decorateParam(2, Option("turbo", { type: "boolean", desc: "turbo", default: false })),
5627
5813
  __decorateParam(3, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5628
5814
  ], ApplicationCommand.prototype, "startFrontend", 1);
5629
5815
  __decorateClass([
5630
- Target.Public({ short: true }),
5816
+ Target.Public({ short: true, desc: "Start CSR (Client-Side Rendering) development server" }),
5631
5817
  __decorateParam(0, App()),
5632
5818
  __decorateParam(1, Option("open", { type: "boolean", desc: "open web browser", default: false })),
5633
5819
  __decorateParam(2, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5634
5820
  ], ApplicationCommand.prototype, "startCsr", 1);
5635
5821
  __decorateClass([
5636
- Target.Public({ short: true }),
5822
+ Target.Public({ short: true, desc: "Start iOS app in simulator or device" }),
5637
5823
  __decorateParam(0, App()),
5638
5824
  __decorateParam(1, Option("open", { type: "boolean", desc: "open ios simulator", default: false })),
5639
5825
  __decorateParam(2, Option("release", { type: "boolean", desc: "release mode", default: false })),
5640
5826
  __decorateParam(3, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5641
5827
  ], ApplicationCommand.prototype, "startIos", 1);
5642
5828
  __decorateClass([
5643
- Target.Public({ short: true }),
5829
+ Target.Public({ short: true, desc: "Start Android app in emulator or device" }),
5644
5830
  __decorateParam(0, App()),
5645
5831
  __decorateParam(1, Option("host", {
5646
5832
  type: "string",
@@ -5653,16 +5839,16 @@ __decorateClass([
5653
5839
  __decorateParam(4, Option("sync", { type: "boolean", desc: "sync application", default: true }))
5654
5840
  ], ApplicationCommand.prototype, "startAndroid", 1);
5655
5841
  __decorateClass([
5656
- Target.Public(),
5842
+ Target.Public({ desc: "Build and package iOS app for release (App Store)" }),
5657
5843
  __decorateParam(0, App())
5658
5844
  ], ApplicationCommand.prototype, "releaseIos", 1);
5659
5845
  __decorateClass([
5660
- Target.Public(),
5846
+ Target.Public({ desc: "Build and package Android app for release (Play Store)" }),
5661
5847
  __decorateParam(0, App()),
5662
5848
  __decorateParam(1, Option("assembleType", { type: "string", enum: ["apk", "aab"], default: "apk" }))
5663
5849
  ], ApplicationCommand.prototype, "releaseAndroid", 1);
5664
5850
  __decorateClass([
5665
- Target.Public(),
5851
+ Target.Public({ desc: "Release app source code with OTA update support" }),
5666
5852
  __decorateParam(0, App()),
5667
5853
  __decorateParam(1, Option("rebuild", { type: "boolean", desc: "rebuild", default: false })),
5668
5854
  __decorateParam(2, Option("buildNum", { desc: "build number", default: 0 })),
@@ -5670,11 +5856,11 @@ __decorateClass([
5670
5856
  __decorateParam(4, Option("local", { type: "boolean", desc: "local", default: true }))
5671
5857
  ], ApplicationCommand.prototype, "releaseSource", 1);
5672
5858
  __decorateClass([
5673
- Target.Public(),
5859
+ Target.Public({ desc: "Deploy over-the-air (OTA) update for mobile app" }),
5674
5860
  __decorateParam(0, App())
5675
5861
  ], ApplicationCommand.prototype, "codepush", 1);
5676
5862
  __decorateClass([
5677
- Target.Public(),
5863
+ Target.Public({ desc: "Dump application database to local file" }),
5678
5864
  __decorateParam(0, App()),
5679
5865
  __decorateParam(1, Option("environment", {
5680
5866
  desc: "environment",
@@ -5684,7 +5870,7 @@ __decorateClass([
5684
5870
  }))
5685
5871
  ], ApplicationCommand.prototype, "dumpDatabase", 1);
5686
5872
  __decorateClass([
5687
- Target.Public(),
5873
+ Target.Public({ desc: "Restore application database from local dump" }),
5688
5874
  __decorateParam(0, App()),
5689
5875
  __decorateParam(1, Option("source", {
5690
5876
  desc: "source environment",
@@ -5698,21 +5884,21 @@ __decorateClass([
5698
5884
  }))
5699
5885
  ], ApplicationCommand.prototype, "restoreDatabase", 1);
5700
5886
  __decorateClass([
5701
- Target.Public(),
5887
+ Target.Public({ desc: "Start local database services (MongoDB, Redis, Meilisearch)" }),
5702
5888
  __decorateParam(0, Workspace())
5703
5889
  ], ApplicationCommand.prototype, "dbup", 1);
5704
5890
  __decorateClass([
5705
- Target.Public(),
5891
+ Target.Public({ desc: "Stop local database services" }),
5706
5892
  __decorateParam(0, Workspace())
5707
5893
  ], ApplicationCommand.prototype, "dbdown", 1);
5708
5894
  __decorateClass([
5709
- Target.Public(),
5895
+ Target.Public({ desc: "Pull database from cloud to local" }),
5710
5896
  __decorateParam(0, App()),
5711
5897
  __decorateParam(1, Option("env", { default: "debug" })),
5712
5898
  __decorateParam(2, Option("dump", { default: true }))
5713
5899
  ], ApplicationCommand.prototype, "pullDatabase", 1);
5714
5900
  __decorateClass([
5715
- Target.Public(),
5901
+ Target.Public({ desc: "Configure application settings interactively" }),
5716
5902
  __decorateParam(0, App())
5717
5903
  ], ApplicationCommand.prototype, "configureApp", 1);
5718
5904
  ApplicationCommand = __decorateClass([
@@ -5803,7 +5989,7 @@ var PackageScript = class {
5803
5989
 
5804
5990
  // pkgs/@akanjs/cli/src/cloud/cloud.runner.ts
5805
5991
  var import_prompts9 = require("@inquirer/prompts");
5806
- var import_chalk6 = __toESM(require("chalk"), 1);
5992
+ var import_chalk7 = __toESM(require("chalk"), 1);
5807
5993
  var import_latest_version = __toESM(require("latest-version"), 1);
5808
5994
  var import_open2 = __toESM(require("open"), 1);
5809
5995
  var QRcode = __toESM(require("qrcode"), 1);
@@ -5813,17 +5999,17 @@ var CloudRunner = class {
5813
5999
  const config = getHostConfig();
5814
6000
  const self = config.auth ? await getSelf(config.auth.token) : null;
5815
6001
  if (self) {
5816
- Logger.rawLog(import_chalk6.default.green(`
6002
+ Logger.rawLog(import_chalk7.default.green(`
5817
6003
  \u2713 Already logged in akan cloud as ${self.nickname}
5818
6004
  `));
5819
6005
  return true;
5820
6006
  }
5821
6007
  const remoteId = (0, import_uuid.v4)();
5822
6008
  const signinUrl = `${akanCloudClientUrl}/signin?remoteId=${remoteId}`;
5823
- Logger.rawLog(import_chalk6.default.bold(`
5824
- ${import_chalk6.default.green("\u27A4")} Authentication Required`));
5825
- Logger.rawLog(import_chalk6.default.dim("Please visit or click the following URL:"));
5826
- Logger.rawLog(import_chalk6.default.cyan.underline(signinUrl) + "\n");
6009
+ Logger.rawLog(import_chalk7.default.bold(`
6010
+ ${import_chalk7.default.green("\u27A4")} Authentication Required`));
6011
+ Logger.rawLog(import_chalk7.default.dim("Please visit or click the following URL:"));
6012
+ Logger.rawLog(import_chalk7.default.cyan.underline(signinUrl) + "\n");
5827
6013
  try {
5828
6014
  const qrcode = await new Promise((resolve, reject) => {
5829
6015
  QRcode.toString(signinUrl, { type: "terminal", small: true }, (err, data) => {
@@ -5834,11 +6020,11 @@ ${import_chalk6.default.green("\u27A4")} Authentication Required`));
5834
6020
  });
5835
6021
  Logger.rawLog(qrcode);
5836
6022
  await (0, import_open2.default)(signinUrl);
5837
- Logger.rawLog(import_chalk6.default.dim("Opening browser..."));
6023
+ Logger.rawLog(import_chalk7.default.dim("Opening browser..."));
5838
6024
  } catch {
5839
- Logger.rawLog(import_chalk6.default.yellow("Could not open browser. Please visit the URL manually."));
6025
+ Logger.rawLog(import_chalk7.default.yellow("Could not open browser. Please visit the URL manually."));
5840
6026
  }
5841
- Logger.rawLog(import_chalk6.default.dim("Waiting for authentication..."));
6027
+ Logger.rawLog(import_chalk7.default.dim("Waiting for authentication..."));
5842
6028
  const MAX_RETRY = 300;
5843
6029
  for (let i = 0; i < MAX_RETRY; i++) {
5844
6030
  const res = await fetch(`${akanCloudBackendUrl}/user/getRemoteAuthToken/${remoteId}`);
@@ -5846,28 +6032,28 @@ ${import_chalk6.default.green("\u27A4")} Authentication Required`));
5846
6032
  const self2 = jwt ? await getSelf(jwt) : null;
5847
6033
  if (jwt && self2) {
5848
6034
  setHostConfig(akanCloudHost, { auth: { token: jwt, self: self2 } });
5849
- Logger.rawLog(import_chalk6.default.green(`\r\u2713 Authentication successful!`));
5850
- Logger.rawLog(import_chalk6.default.green.bold(`
6035
+ Logger.rawLog(import_chalk7.default.green(`\r\u2713 Authentication successful!`));
6036
+ Logger.rawLog(import_chalk7.default.green.bold(`
5851
6037
  \u2728 Welcome aboard, ${self2.nickname}!`));
5852
- Logger.rawLog(import_chalk6.default.dim("You're now ready to use Akan CLI!\n"));
6038
+ Logger.rawLog(import_chalk7.default.dim("You're now ready to use Akan CLI!\n"));
5853
6039
  return true;
5854
6040
  }
5855
6041
  await sleep(2e3);
5856
6042
  }
5857
- throw new Error(import_chalk6.default.red("\u2716 Authentication timed out after 10 minutes. Please try again."));
6043
+ throw new Error(import_chalk7.default.red("\u2716 Authentication timed out after 10 minutes. Please try again."));
5858
6044
  }
5859
6045
  logout() {
5860
6046
  const config = getHostConfig();
5861
6047
  if (config.auth) {
5862
6048
  setHostConfig(akanCloudHost, {});
5863
- Logger.rawLog(import_chalk6.default.magenta.bold(`
6049
+ Logger.rawLog(import_chalk7.default.magenta.bold(`
5864
6050
  \u{1F44B} Goodbye, ${config.auth.self.nickname}!`));
5865
- Logger.rawLog(import_chalk6.default.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"));
5866
- Logger.rawLog(import_chalk6.default.cyan("You have been successfully logged out."));
5867
- Logger.rawLog(import_chalk6.default.dim("Thank you for using Akan CLI. Come back soon! \u{1F31F}\n"));
6051
+ Logger.rawLog(import_chalk7.default.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"));
6052
+ Logger.rawLog(import_chalk7.default.cyan("You have been successfully logged out."));
6053
+ Logger.rawLog(import_chalk7.default.dim("Thank you for using Akan CLI. Come back soon! \u{1F31F}\n"));
5868
6054
  } else {
5869
- Logger.rawLog(import_chalk6.default.yellow.bold("\n\u26A0\uFE0F No active session found"));
5870
- Logger.rawLog(import_chalk6.default.dim("You were not logged in to begin with\n"));
6055
+ Logger.rawLog(import_chalk7.default.yellow.bold("\n\u26A0\uFE0F No active session found"));
6056
+ Logger.rawLog(import_chalk7.default.dim("You were not logged in to begin with\n"));
5871
6057
  }
5872
6058
  }
5873
6059
  async setLlm() {
@@ -5875,7 +6061,7 @@ ${import_chalk6.default.green("\u27A4")} Authentication Required`));
5875
6061
  }
5876
6062
  resetLlm() {
5877
6063
  AiSession.setLlmConfig(null);
5878
- Logger.rawLog(import_chalk6.default.green("\u2611\uFE0F LLM model config is cleared. Please run `akan set-llm` to set a new LLM model."));
6064
+ Logger.rawLog(import_chalk7.default.green("\u2611\uFE0F LLM model config is cleared. Please run `akan set-llm` to set a new LLM model."));
5879
6065
  }
5880
6066
  async getAkanPkgs(workspace) {
5881
6067
  const pkgs = await workspace.getPkgs();
@@ -6015,32 +6201,32 @@ var CloudCommand = class {
6015
6201
  }
6016
6202
  };
6017
6203
  __decorateClass([
6018
- Target.Public(),
6204
+ Target.Public({ desc: "Login to Akan Cloud services" }),
6019
6205
  __decorateParam(0, Workspace())
6020
6206
  ], CloudCommand.prototype, "login", 1);
6021
6207
  __decorateClass([
6022
- Target.Public(),
6208
+ Target.Public({ desc: "Logout from Akan Cloud services" }),
6023
6209
  __decorateParam(0, Workspace())
6024
6210
  ], CloudCommand.prototype, "logout", 1);
6025
6211
  __decorateClass([
6026
- Target.Public(),
6212
+ Target.Public({ desc: "Configure LLM (Large Language Model) API key" }),
6027
6213
  __decorateParam(0, Workspace())
6028
6214
  ], CloudCommand.prototype, "setLlm", 1);
6029
6215
  __decorateClass([
6030
- Target.Public(),
6216
+ Target.Public({ desc: "Reset LLM configuration to default" }),
6031
6217
  __decorateParam(0, Workspace())
6032
6218
  ], CloudCommand.prototype, "resetLlm", 1);
6033
6219
  __decorateClass([
6034
- Target.Public(),
6220
+ Target.Public({ desc: "Ask AI assistant a question about your project" }),
6035
6221
  __decorateParam(0, Option("question", { ask: "question to ask" })),
6036
6222
  __decorateParam(1, Workspace())
6037
6223
  ], CloudCommand.prototype, "ask", 1);
6038
6224
  __decorateClass([
6039
- Target.Public({ devOnly: true }),
6225
+ Target.Public({ devOnly: true, desc: "Deploy Akan.js framework to cloud (internal use)" }),
6040
6226
  __decorateParam(0, Workspace())
6041
6227
  ], CloudCommand.prototype, "deployAkan", 1);
6042
6228
  __decorateClass([
6043
- Target.Public(),
6229
+ Target.Public({ desc: "Update Akan.js framework to the latest version" }),
6044
6230
  __decorateParam(0, Workspace()),
6045
6231
  __decorateParam(1, Option("tag", {
6046
6232
  desc: "tag of the update",
@@ -6069,20 +6255,20 @@ var LibraryCommand = class {
6069
6255
  }
6070
6256
  };
6071
6257
  __decorateClass([
6072
- Target.Public(),
6258
+ Target.Public({ desc: "Create a new shared library in the workspace" }),
6073
6259
  __decorateParam(0, Argument("libName", { desc: "name of library" })),
6074
6260
  __decorateParam(1, Workspace())
6075
6261
  ], LibraryCommand.prototype, "createLibrary", 1);
6076
6262
  __decorateClass([
6077
- Target.Public(),
6263
+ Target.Public({ desc: "Remove a library from the workspace" }),
6078
6264
  __decorateParam(0, Lib())
6079
6265
  ], LibraryCommand.prototype, "removeLibrary", 1);
6080
6266
  __decorateClass([
6081
- Target.Public(),
6267
+ Target.Public({ desc: "Sync dependencies and configuration for a library" }),
6082
6268
  __decorateParam(0, Lib())
6083
6269
  ], LibraryCommand.prototype, "syncLibrary", 1);
6084
6270
  __decorateClass([
6085
- Target.Public(),
6271
+ Target.Public({ desc: "Install pre-built library templates (shared, util, etc.)" }),
6086
6272
  __decorateParam(0, Argument("libName", { desc: "name of library", nullable: true })),
6087
6273
  __decorateParam(1, Workspace())
6088
6274
  ], LibraryCommand.prototype, "installLibrary", 1);
@@ -6635,25 +6821,25 @@ var ModuleCommand = class {
6635
6821
  }
6636
6822
  };
6637
6823
  __decorateClass([
6638
- Target.Public(),
6824
+ Target.Public({ desc: "Create a new domain module (constant, service, signal, store, UI)" }),
6639
6825
  __decorateParam(0, Argument("moduleName", { desc: "name of module" })),
6640
6826
  __decorateParam(1, Sys()),
6641
6827
  __decorateParam(2, Option("page", { type: "boolean", desc: "create page", default: false }))
6642
6828
  ], ModuleCommand.prototype, "createModule", 1);
6643
6829
  __decorateClass([
6644
- Target.Public(),
6830
+ Target.Public({ desc: "Remove a module from an app or library" }),
6645
6831
  __decorateParam(0, Module())
6646
6832
  ], ModuleCommand.prototype, "removeModule", 1);
6647
6833
  __decorateClass([
6648
- Target.Public(),
6834
+ Target.Public({ desc: "Create a View component for a module (full page view)" }),
6649
6835
  __decorateParam(0, Module())
6650
6836
  ], ModuleCommand.prototype, "createView", 1);
6651
6837
  __decorateClass([
6652
- Target.Public(),
6838
+ Target.Public({ desc: "Create a Unit component for a module (list/card item)" }),
6653
6839
  __decorateParam(0, Module())
6654
6840
  ], ModuleCommand.prototype, "createUnit", 1);
6655
6841
  __decorateClass([
6656
- Target.Public(),
6842
+ Target.Public({ desc: "Create a Template component for a module (form)" }),
6657
6843
  __decorateParam(0, Module())
6658
6844
  ], ModuleCommand.prototype, "createTemplate", 1);
6659
6845
  ModuleCommand = __decorateClass([
@@ -6680,24 +6866,24 @@ var PackageCommand = class {
6680
6866
  }
6681
6867
  };
6682
6868
  __decorateClass([
6683
- Target.Public(),
6869
+ Target.Public({ desc: "Show version information for all packages" }),
6684
6870
  __decorateParam(0, Workspace())
6685
6871
  ], PackageCommand.prototype, "version", 1);
6686
6872
  __decorateClass([
6687
- Target.Public(),
6873
+ Target.Public({ desc: "Create a new package in pkgs/@akanjs/" }),
6688
6874
  __decorateParam(0, Option("name", { desc: "name of package" })),
6689
6875
  __decorateParam(1, Workspace())
6690
6876
  ], PackageCommand.prototype, "createPackage", 1);
6691
6877
  __decorateClass([
6692
- Target.Public(),
6878
+ Target.Public({ desc: "Remove a package from the workspace" }),
6693
6879
  __decorateParam(0, Pkg())
6694
6880
  ], PackageCommand.prototype, "removePackage", 1);
6695
6881
  __decorateClass([
6696
- Target.Public(),
6882
+ Target.Public({ desc: "Sync dependencies and configuration for a package" }),
6697
6883
  __decorateParam(0, Pkg())
6698
6884
  ], PackageCommand.prototype, "syncPackage", 1);
6699
6885
  __decorateClass([
6700
- Target.Public(),
6886
+ Target.Public({ desc: "Build a package for distribution" }),
6701
6887
  __decorateParam(0, Pkg())
6702
6888
  ], PackageCommand.prototype, "buildPackage", 1);
6703
6889
  PackageCommand = __decorateClass([
@@ -6712,7 +6898,7 @@ var PageCommand = class {
6712
6898
  }
6713
6899
  };
6714
6900
  __decorateClass([
6715
- Target.Public(),
6901
+ Target.Public({ desc: "Create CRUD pages for a module (list, detail, create, edit)" }),
6716
6902
  __decorateParam(0, App()),
6717
6903
  __decorateParam(1, Module()),
6718
6904
  __decorateParam(2, Option("basePath", { desc: "base path", nullable: true })),
@@ -6919,7 +7105,7 @@ var WorkspaceCommand = class {
6919
7105
  }
6920
7106
  };
6921
7107
  __decorateClass([
6922
- Target.Public(),
7108
+ Target.Public({ desc: "Create a new Akan.js workspace" }),
6923
7109
  __decorateParam(0, Argument("workspaceName", { desc: "what is the name of your organization?" })),
6924
7110
  __decorateParam(1, Option("app", { desc: "what is the codename of your first application? (e.g. myapp)" })),
6925
7111
  __decorateParam(2, Option("dir", { desc: "directory of workspace", default: process.env.USE_AKANJS_PKGS === "true" ? "local" : "." })),
@@ -6941,26 +7127,26 @@ __decorateClass([
6941
7127
  }))
6942
7128
  ], WorkspaceCommand.prototype, "createWorkspace", 1);
6943
7129
  __decorateClass([
6944
- Target.Public(),
7130
+ Target.Public({ desc: "Generate MongoDB types and schemas" }),
6945
7131
  __decorateParam(0, Workspace())
6946
7132
  ], WorkspaceCommand.prototype, "generateMongo", 1);
6947
7133
  __decorateClass([
6948
- Target.Public(),
7134
+ Target.Public({ desc: "Lint and fix code in a specific app/lib/pkg" }),
6949
7135
  __decorateParam(0, Exec()),
6950
7136
  __decorateParam(1, Option("fix", { type: "boolean", default: true })),
6951
7137
  __decorateParam(2, Workspace())
6952
7138
  ], WorkspaceCommand.prototype, "lint", 1);
6953
7139
  __decorateClass([
6954
- Target.Public(),
7140
+ Target.Public({ desc: "Lint and fix code in all apps and libraries" }),
6955
7141
  __decorateParam(0, Option("fix", { type: "boolean", default: true })),
6956
7142
  __decorateParam(1, Workspace())
6957
7143
  ], WorkspaceCommand.prototype, "lintAll", 1);
6958
7144
  __decorateClass([
6959
- Target.Public(),
7145
+ Target.Public({ desc: "Sync dependencies and configuration for all apps and libraries" }),
6960
7146
  __decorateParam(0, Workspace())
6961
7147
  ], WorkspaceCommand.prototype, "syncAll", 1);
6962
7148
  __decorateClass([
6963
- Target.Public(),
7149
+ Target.Public({ desc: "Dump all application databases to local files" }),
6964
7150
  __decorateParam(0, Option("environment", {
6965
7151
  desc: "environment",
6966
7152
  default: "debug",
@@ -6970,7 +7156,7 @@ __decorateClass([
6970
7156
  __decorateParam(1, Workspace())
6971
7157
  ], WorkspaceCommand.prototype, "dumpDatabaseAll", 1);
6972
7158
  __decorateClass([
6973
- Target.Public(),
7159
+ Target.Public({ desc: "Restore all application databases from local dump" }),
6974
7160
  __decorateParam(0, Option("source", {
6975
7161
  desc: "source environment",
6976
7162
  enum: ["debug", "develop", "main"],
@@ -7291,23 +7477,23 @@ var GuidelineCommand = class {
7291
7477
  }
7292
7478
  };
7293
7479
  __decorateClass([
7294
- Target.Public(),
7480
+ Target.Public({ devOnly: true, desc: "Generate AI development guideline/instruction for your project" }),
7295
7481
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7296
7482
  __decorateParam(1, Workspace())
7297
7483
  ], GuidelineCommand.prototype, "generateInstruction", 1);
7298
7484
  __decorateClass([
7299
- Target.Public(),
7485
+ Target.Public({ devOnly: true, desc: "Update existing AI guideline/instruction" }),
7300
7486
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7301
7487
  __decorateParam(1, Option("request", { ask: "What do you want to update?" })),
7302
7488
  __decorateParam(2, Workspace())
7303
7489
  ], GuidelineCommand.prototype, "updateInstruction", 1);
7304
7490
  __decorateClass([
7305
- Target.Public(),
7491
+ Target.Public({ devOnly: true, desc: "Generate documentation from guideline/instruction" }),
7306
7492
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7307
7493
  __decorateParam(1, Workspace())
7308
7494
  ], GuidelineCommand.prototype, "generateDocument", 1);
7309
7495
  __decorateClass([
7310
- Target.Public(),
7496
+ Target.Public({ devOnly: true, desc: "Re-apply guideline/instruction to codebase" }),
7311
7497
  __decorateParam(0, Argument("name", { ask: "name of the instruction", nullable: true })),
7312
7498
  __decorateParam(1, Workspace())
7313
7499
  ], GuidelineCommand.prototype, "reapplyInstruction", 1);
@@ -7504,13 +7690,13 @@ var ScalarCommand = class {
7504
7690
  }
7505
7691
  };
7506
7692
  __decorateClass([
7507
- Target.Public(),
7693
+ Target.Public({ desc: "Create a new scalar type (simple data model without DB)" }),
7508
7694
  __decorateParam(0, Argument("scalarName", { desc: "name of scalar" })),
7509
7695
  __decorateParam(1, Option("ai", { type: "boolean", default: false, desc: "use ai to create scalar" })),
7510
7696
  __decorateParam(2, Sys())
7511
7697
  ], ScalarCommand.prototype, "createScalar", 1);
7512
7698
  __decorateClass([
7513
- Target.Public(),
7699
+ Target.Public({ desc: "Remove a scalar type from an app or library" }),
7514
7700
  __decorateParam(0, Argument("scalarName", { desc: "name of scalar" })),
7515
7701
  __decorateParam(1, Sys())
7516
7702
  ], ScalarCommand.prototype, "removeScalar", 1);