@jvittechs/j 1.0.59 → 1.0.60

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/cli.js CHANGED
@@ -8,19 +8,19 @@ import {
8
8
  } from "./chunk-XZ7VS36G.js";
9
9
  import {
10
10
  createSettingsShowCommand
11
- } from "./chunk-3MKBSVAL.js";
11
+ } from "./chunk-5RDBJYO2.js";
12
12
  import {
13
13
  BLOCKED_ICON,
14
- ConfigService,
15
14
  PRIORITY_ICONS,
16
15
  PRIORITY_LABELS,
17
16
  STATUS_ICONS,
18
17
  TaskService,
19
18
  createTaskSummaryCommand
20
- } from "./chunk-SDYQQ4ZY.js";
19
+ } from "./chunk-22FXNN76.js";
21
20
  import {
21
+ ConfigService,
22
22
  SettingsService
23
- } from "./chunk-BMDRQFY7.js";
23
+ } from "./chunk-OJYJGHQX.js";
24
24
 
25
25
  // src/utils/node-version-check.ts
26
26
  import chalk from "chalk";
@@ -156,7 +156,7 @@ import { basename as basename5 } from "path";
156
156
  // package.json
157
157
  var package_default = {
158
158
  name: "@jvittechs/j",
159
- version: "1.0.59",
159
+ version: "1.0.60",
160
160
  description: "A unified CLI tool for JV-IT TECHS developers to manage Jai1 Framework. Supports both `j` and `jai1` commands. Please contact TeamAI for usage instructions.",
161
161
  type: "module",
162
162
  bin: {
@@ -11361,17 +11361,85 @@ import { Command as Command61 } from "commander";
11361
11361
  // src/commands/settings/init.ts
11362
11362
  import { Command as Command58 } from "commander";
11363
11363
  import chalk31 from "chalk";
11364
+ import { confirm as confirm11 } from "@inquirer/prompts";
11365
+ async function checkAuthStatus() {
11366
+ try {
11367
+ const config = await new ConfigService().load();
11368
+ if (config?.apiUrl && config?.accessKey) {
11369
+ return { ok: true, apiUrl: config.apiUrl, accessKey: config.accessKey };
11370
+ }
11371
+ return { ok: false };
11372
+ } catch {
11373
+ return { ok: false };
11374
+ }
11375
+ }
11364
11376
  function createSettingsInitCommand() {
11365
- return new Command58("init").description("T\u1EA1o .jai1/settings.yaml v\u1EDBi defaults").option("-f, --force", "Ghi \u0111\xE8 file c\u0169 n\u1EBFu \u0111\xE3 t\u1ED3n t\u1EA1i").option("-j, --json", "Output JSON").action(async (options) => {
11377
+ return new Command58("init").description("Kh\u1EDFi t\u1EA1o .jai1/settings.yaml").option("-f, --force", "Ghi \u0111\xE8 file c\u0169 n\u1EBFu \u0111\xE3 t\u1ED3n t\u1EA1i").option("--cloud", "Enable cloud task sync (non-interactive)").option("--no-interactive", "Kh\xF4ng h\u1ECFi, d\xF9ng flags/defaults").option("-j, --json", "Output JSON").action(async (options) => {
11366
11378
  try {
11367
11379
  const service = new SettingsService();
11368
- const settings = await service.init(options.force);
11380
+ if (service.exists() && !options.force) {
11381
+ throw new Error("Settings file \u0111\xE3 t\u1ED3n t\u1EA1i. D\xF9ng --force \u0111\u1EC3 ghi \u0111\xE8.");
11382
+ }
11383
+ let enableCloud = options.cloud || false;
11384
+ if (options.interactive !== false && !options.json) {
11385
+ const repoUrl = service.resolveGitRepoUrl();
11386
+ console.log(chalk31.bold("\u{1F4CB} Kh\u1EDFi t\u1EA1o Project Settings"));
11387
+ console.log("");
11388
+ if (repoUrl) {
11389
+ console.log(` ${chalk31.dim("Repo:")} ${repoUrl}`);
11390
+ console.log("");
11391
+ }
11392
+ enableCloud = await confirm11({
11393
+ message: "B\u1EADt cloud task sync? (\u0111\u1ED3ng b\u1ED9 tasks qua server)",
11394
+ default: false
11395
+ });
11396
+ if (enableCloud) {
11397
+ const auth = await checkAuthStatus();
11398
+ if (!auth.ok) {
11399
+ console.log("");
11400
+ console.log(chalk31.yellow("\u26A0\uFE0F Ch\u01B0a \u0111\u0103ng nh\u1EADp Jai1."));
11401
+ console.log(chalk31.dim(" Ch\u1EA1y: j auth"));
11402
+ console.log("");
11403
+ const proceed = await confirm11({
11404
+ message: "V\u1EABn b\u1EADt cloud? (c\u1EA7n j auth tr\u01B0\u1EDBc khi d\xF9ng tasks)",
11405
+ default: false
11406
+ });
11407
+ if (!proceed) enableCloud = false;
11408
+ } else {
11409
+ console.log(chalk31.green(" \u2713 Auth OK"));
11410
+ }
11411
+ }
11412
+ } else if (enableCloud && !options.json) {
11413
+ const auth = await checkAuthStatus();
11414
+ if (!auth.ok) {
11415
+ console.log(chalk31.yellow("\u26A0\uFE0F Ch\u01B0a \u0111\u0103ng nh\u1EADp. Ch\u1EA1y j auth tr\u01B0\u1EDBc khi d\xF9ng cloud tasks."));
11416
+ }
11417
+ }
11418
+ const settings = await service.init(true);
11419
+ if (enableCloud) {
11420
+ await service.set("tasks.cloud", true);
11421
+ }
11422
+ const finalSettings = service.load();
11369
11423
  if (options.json) {
11370
- console.log(JSON.stringify({ success: true, path: service.getSettingsPath(), settings }, null, 2));
11424
+ console.log(JSON.stringify({
11425
+ success: true,
11426
+ path: service.getSettingsPath(),
11427
+ settings: finalSettings
11428
+ }, null, 2));
11371
11429
  return;
11372
11430
  }
11431
+ console.log("");
11373
11432
  console.log(chalk31.green("\u2705 Settings initialized"));
11374
11433
  console.log(` ${chalk31.dim("Path:")} ${service.getSettingsPath()}`);
11434
+ console.log(` ${chalk31.dim("Cloud:")} ${enableCloud ? chalk31.green("enabled") : chalk31.dim("disabled")}`);
11435
+ if (enableCloud) {
11436
+ const projectId = service.getProjectId();
11437
+ if (projectId) {
11438
+ console.log(` ${chalk31.dim("Project ID:")} ${projectId}`);
11439
+ }
11440
+ console.log("");
11441
+ console.log(chalk31.dim(" Cloud tasks s\u1EBD t\u1EF1 \u0111\u0103ng k\xFD project khi ch\u1EA1y l\u1EC7nh task \u0111\u1EA7u ti\xEAn."));
11442
+ }
11375
11443
  } catch (error) {
11376
11444
  if (options.json) {
11377
11445
  console.log(JSON.stringify({ success: false, error: error instanceof Error ? error.message : String(error) }));
@@ -11391,7 +11459,10 @@ function createSettingsSetCommand() {
11391
11459
  try {
11392
11460
  const service = new SettingsService();
11393
11461
  if (!service.exists()) {
11394
- throw new Error("Settings file not found. Run `j settings init` first.");
11462
+ await service.init(false);
11463
+ if (!options.json) {
11464
+ console.log(chalk32.dim("\u{1F4CB} Auto-created settings.yaml"));
11465
+ }
11395
11466
  }
11396
11467
  const settings = await service.set(key, value);
11397
11468
  if (options.json) {
@@ -11399,6 +11470,18 @@ function createSettingsSetCommand() {
11399
11470
  return;
11400
11471
  }
11401
11472
  console.log(chalk32.green(`\u2705 ${key} = ${JSON.stringify(service.get(key))}`));
11473
+ if (key === "tasks.cloud" && service.get(key) === true) {
11474
+ const config = await new ConfigService().load();
11475
+ if (!config?.apiUrl || !config?.accessKey) {
11476
+ console.log(chalk32.yellow("\u26A0\uFE0F Ch\u01B0a \u0111\u0103ng nh\u1EADp. Ch\u1EA1y j auth tr\u01B0\u1EDBc khi d\xF9ng cloud tasks."));
11477
+ } else {
11478
+ console.log(chalk32.dim(" Auth: \u2713 OK"));
11479
+ const projectId = service.getProjectId();
11480
+ if (projectId) {
11481
+ console.log(chalk32.dim(` Project: ${projectId}`));
11482
+ }
11483
+ }
11484
+ }
11402
11485
  } catch (error) {
11403
11486
  if (options.json) {
11404
11487
  console.log(JSON.stringify({ success: false, error: error instanceof Error ? error.message : String(error) }));
@@ -11446,7 +11529,7 @@ function createSettingsCommand() {
11446
11529
  cmd.addCommand(createSettingsSetCommand());
11447
11530
  cmd.addCommand(createSettingsGetCommand());
11448
11531
  cmd.action(async () => {
11449
- const { createSettingsShowCommand: showCmd } = await import("./show-FGCDTIU7.js");
11532
+ const { createSettingsShowCommand: showCmd } = await import("./show-LDL5KXZ6.js");
11450
11533
  const show = showCmd();
11451
11534
  await show.parseAsync([], { from: "user" });
11452
11535
  });
@@ -11711,7 +11794,7 @@ function createTaskShowCommand() {
11711
11794
  // src/commands/tasks/pick.ts
11712
11795
  import { Command as Command67 } from "commander";
11713
11796
  import chalk39 from "chalk";
11714
- import { confirm as confirm11 } from "@inquirer/prompts";
11797
+ import { confirm as confirm12 } from "@inquirer/prompts";
11715
11798
  function createTaskPickCommand() {
11716
11799
  return new Command67("pick").description("Claim the next available task").option("-j, --json", "Output JSON").action(async (options) => {
11717
11800
  const service = new TaskService();
@@ -11741,7 +11824,7 @@ function createTaskPickCommand() {
11741
11824
  console.log(chalk39.dim(`
11742
11825
  +${ready.length - 1} more tasks ready`));
11743
11826
  }
11744
- const proceed = await confirm11({
11827
+ const proceed = await confirm12({
11745
11828
  message: "Claim this task?",
11746
11829
  default: true
11747
11830
  });
@@ -12035,7 +12118,7 @@ function createTaskParentsCommand() {
12035
12118
  // src/commands/tasks/cancel.ts
12036
12119
  import { Command as Command73 } from "commander";
12037
12120
  import chalk45 from "chalk";
12038
- import { confirm as confirm12 } from "@inquirer/prompts";
12121
+ import { confirm as confirm13 } from "@inquirer/prompts";
12039
12122
  function createTaskCancelCommand() {
12040
12123
  return new Command73("cancel").description("Cancel a task (with dependency impact check)").argument("<id>", "Task ID (e.g. T-001)").option("-y, --yes", "Skip confirmation").option("-j, --json", "Output JSON").action(async (id, options) => {
12041
12124
  const service = new TaskService();
@@ -12076,7 +12159,7 @@ function createTaskCancelCommand() {
12076
12159
  console.log();
12077
12160
  }
12078
12161
  if (!options.yes) {
12079
- const proceed = await confirm12({
12162
+ const proceed = await confirm13({
12080
12163
  message: `Cancel task ${id}?`,
12081
12164
  default: false
12082
12165
  });
@@ -12103,7 +12186,7 @@ function createTaskCancelCommand() {
12103
12186
  // src/commands/tasks/delete.ts
12104
12187
  import { Command as Command74 } from "commander";
12105
12188
  import chalk46 from "chalk";
12106
- import { confirm as confirm13 } from "@inquirer/prompts";
12189
+ import { confirm as confirm14 } from "@inquirer/prompts";
12107
12190
  function printTaskList(tasks, indent = " ") {
12108
12191
  for (const t of tasks) {
12109
12192
  const icon = STATUS_ICONS[t.status] || "\u{1F4CB}";
@@ -12199,7 +12282,7 @@ function createTaskDeleteCommand() {
12199
12282
  printImpactSummary(tasksToDelete, allDependents);
12200
12283
  if (!options.yes) {
12201
12284
  const label = options.group ? `Xo\xE1 v\u0129nh vi\u1EC5n group "${options.group}" (${tasksToDelete.length} tasks)?` : tasksToDelete.length === 1 ? `Xo\xE1 v\u0129nh vi\u1EC5n task ${tasksToDelete[0].id}?` : `Xo\xE1 v\u0129nh vi\u1EC5n ${tasksToDelete.length} task(s)?`;
12202
- const proceed = await confirm13({
12285
+ const proceed = await confirm14({
12203
12286
  message: label,
12204
12287
  default: false
12205
12288
  });
@@ -12264,7 +12347,7 @@ function createTasksCommand() {
12264
12347
  cmd.addCommand(createTaskDeleteCommand());
12265
12348
  cmd.addCommand(createTaskGuideCommand());
12266
12349
  cmd.action(async () => {
12267
- const { handleTaskSummary } = await import("./summary-FIUGSB65.js");
12350
+ const { handleTaskSummary } = await import("./summary-4ZVFN4XV.js");
12268
12351
  await handleTaskSummary({ json: false });
12269
12352
  });
12270
12353
  return cmd;
@@ -12788,7 +12871,7 @@ function createRulesListCommand() {
12788
12871
  import { Command as Command81 } from "commander";
12789
12872
  import { promises as fs21 } from "fs";
12790
12873
  import { join as join12 } from "path";
12791
- import { select as select4, confirm as confirm14 } from "@inquirer/prompts";
12874
+ import { select as select4, confirm as confirm15 } from "@inquirer/prompts";
12792
12875
 
12793
12876
  // src/services/project-config.service.ts
12794
12877
  import { promises as fs20 } from "fs";
@@ -12972,7 +13055,7 @@ function createRulesInitCommand() {
12972
13055
  });
12973
13056
  }
12974
13057
  if (!options.yes) {
12975
- const proceed = await confirm14({
13058
+ const proceed = await confirm15({
12976
13059
  message: `Apply preset '${bundle.preset.name}' to current directory?`,
12977
13060
  default: true
12978
13061
  });
@@ -13045,7 +13128,7 @@ async function applyAgentsMdFormat(bundle) {
13045
13128
  import { Command as Command82 } from "commander";
13046
13129
  import { promises as fs23 } from "fs";
13047
13130
  import { join as join14 } from "path";
13048
- import { search, confirm as confirm15, checkbox as checkbox5 } from "@inquirer/prompts";
13131
+ import { search, confirm as confirm16, checkbox as checkbox5 } from "@inquirer/prompts";
13049
13132
 
13050
13133
  // src/services/rules-generator.service.ts
13051
13134
  var RulesGeneratorService = class {
@@ -13712,7 +13795,7 @@ function createRulesApplyCommand() {
13712
13795
  if (backupPath) {
13713
13796
  console.log(` Backup: ${backupPath}`);
13714
13797
  }
13715
- const proceed = await confirm15({
13798
+ const proceed = await confirm16({
13716
13799
  message: "Apply these rules to the current directory?",
13717
13800
  default: true
13718
13801
  });
@@ -13853,7 +13936,7 @@ function createRulesApplyCommand() {
13853
13936
  // src/commands/rules/restore.ts
13854
13937
  import { Command as Command83 } from "commander";
13855
13938
  import { join as join15 } from "path";
13856
- import { select as select5, confirm as confirm16 } from "@inquirer/prompts";
13939
+ import { select as select5, confirm as confirm17 } from "@inquirer/prompts";
13857
13940
  function createRulesRestoreCommand() {
13858
13941
  return new Command83("restore").description("Restore rules from a backup").option("--latest", "Restore the most recent backup").option("-y, --yes", "Skip confirmation").action(async (options) => {
13859
13942
  const backupService = new BackupService();
@@ -13888,7 +13971,7 @@ function createRulesRestoreCommand() {
13888
13971
  console.log(` IDEs: ${selectedBackup.ides.join(", ")}`);
13889
13972
  console.log(` Files: ${selectedBackup.files.length}`);
13890
13973
  if (!options.yes) {
13891
- const proceed = await confirm16({
13974
+ const proceed = await confirm17({
13892
13975
  message: "This will overwrite current rules. Continue?",
13893
13976
  default: false
13894
13977
  });
@@ -13927,7 +14010,7 @@ function formatTimestamp(timestamp) {
13927
14010
  import { Command as Command84 } from "commander";
13928
14011
  import { promises as fs24 } from "fs";
13929
14012
  import { join as join16 } from "path";
13930
- import { checkbox as checkbox6, confirm as confirm17, Separator } from "@inquirer/prompts";
14013
+ import { checkbox as checkbox6, confirm as confirm18, Separator } from "@inquirer/prompts";
13931
14014
  function createRulesSyncCommand() {
13932
14015
  return new Command84("sync").description("Regenerate rule outputs for all configured IDEs").option("--ides <ides>", "Comma-separated list of IDEs to sync (default: all configured)").option("--detect", "Auto-detect active IDEs instead of using config").option("-y, --yes", "Skip confirmations").action(async (options) => {
13933
14016
  const rulePresetDir = join16(process.cwd(), ".jai1", "rule-preset");
@@ -13978,7 +14061,7 @@ Detected ${detected.length} active IDE(s):
13978
14061
  console.log(` ${confidence} ${d.name} - ${d.ruleCount} rules`);
13979
14062
  });
13980
14063
  if (!options.yes) {
13981
- const proceed = await confirm17({
14064
+ const proceed = await confirm18({
13982
14065
  message: "\nSync these detected IDEs?",
13983
14066
  default: true
13984
14067
  });
@@ -14860,7 +14943,7 @@ function createSkillsInfoCommand() {
14860
14943
  // src/commands/skills/sync.ts
14861
14944
  import { Command as Command91 } from "commander";
14862
14945
  import chalk55 from "chalk";
14863
- import { confirm as confirm19, checkbox as checkbox8 } from "@inquirer/prompts";
14946
+ import { confirm as confirm20, checkbox as checkbox8 } from "@inquirer/prompts";
14864
14947
  function createSkillsSyncCommand() {
14865
14948
  return new Command91("sync").description("Sync skills from .jai1/skills/ to IDE directories").option("--ides <ides...>", "Target IDEs (cursor, windsurf, antigravity, claudecode, opencode)").option("--skills <skills...>", "Specific skill slugs to sync (default: all)").option("--all", "Select all available IDEs").option("--dry-run", "Preview changes without writing files").option("-y, --yes", "Headless mode (skip all prompts)").action(async (options) => {
14866
14949
  const skillsService = new SkillsService();
@@ -14921,7 +15004,7 @@ function createSkillsSyncCommand() {
14921
15004
  return;
14922
15005
  }
14923
15006
  if (!headless) {
14924
- const confirmed = await confirm19({
15007
+ const confirmed = await confirm20({
14925
15008
  message: "Ti\u1EBFp t\u1EE5c sync?",
14926
15009
  default: true
14927
15010
  });
@@ -14990,7 +15073,7 @@ function createSkillsCommand() {
14990
15073
 
14991
15074
  // src/commands/upgrade.ts
14992
15075
  import { Command as Command93 } from "commander";
14993
- import { confirm as confirm20 } from "@inquirer/prompts";
15076
+ import { confirm as confirm21 } from "@inquirer/prompts";
14994
15077
  import { execSync as execSync5 } from "child_process";
14995
15078
  var colors2 = {
14996
15079
  yellow: "\x1B[33m",
@@ -15050,7 +15133,7 @@ ${colors2.bold}Current version:${colors2.reset} ${currentVersion}`);
15050
15133
  return;
15051
15134
  }
15052
15135
  if (!options.force) {
15053
- const shouldUpdate = await confirm20({
15136
+ const shouldUpdate = await confirm21({
15054
15137
  message: "Update to the latest version now?",
15055
15138
  default: true
15056
15139
  });
@@ -15155,7 +15238,7 @@ function getInstallCommand(packageManager2) {
15155
15238
 
15156
15239
  // src/commands/clean.ts
15157
15240
  import { Command as Command94 } from "commander";
15158
- import { confirm as confirm21, select as select6 } from "@inquirer/prompts";
15241
+ import { confirm as confirm22, select as select6 } from "@inquirer/prompts";
15159
15242
  import { promises as fs27 } from "fs";
15160
15243
  import { join as join20 } from "path";
15161
15244
  import { existsSync as existsSync4 } from "fs";
@@ -15302,7 +15385,7 @@ async function cleanTarget(target, skipConfirm) {
15302
15385
  }
15303
15386
  const countStr = info.count ? ` (${info.count} items)` : "";
15304
15387
  if (!skipConfirm) {
15305
- const confirmed = await confirm21({
15388
+ const confirmed = await confirm22({
15306
15389
  message: `Delete ${target.name}${countStr}?`,
15307
15390
  default: false
15308
15391
  });
@@ -16270,7 +16353,7 @@ async function getProjectStatus2() {
16270
16353
 
16271
16354
  // src/commands/self-update.ts
16272
16355
  import { Command as Command99 } from "commander";
16273
- import { confirm as confirm22 } from "@inquirer/prompts";
16356
+ import { confirm as confirm23 } from "@inquirer/prompts";
16274
16357
  import { execSync as execSync6 } from "child_process";
16275
16358
  var colors3 = {
16276
16359
  yellow: "\x1B[33m",
@@ -16325,7 +16408,7 @@ ${colors3.bold}Current version:${colors3.reset} ${currentVersion}`);
16325
16408
  return;
16326
16409
  }
16327
16410
  if (!options.force) {
16328
- const shouldUpdate = await confirm22({
16411
+ const shouldUpdate = await confirm23({
16329
16412
  message: "Update to the latest version now?",
16330
16413
  default: true
16331
16414
  });
@@ -16422,7 +16505,7 @@ function getInstallCommand2(packageManager2) {
16422
16505
 
16423
16506
  // src/commands/clear-backups.ts
16424
16507
  import { Command as Command100 } from "commander";
16425
- import { confirm as confirm23 } from "@inquirer/prompts";
16508
+ import { confirm as confirm24 } from "@inquirer/prompts";
16426
16509
  function createClearBackupsCommand() {
16427
16510
  return new Command100("clear-backups").description("Clear backup files").option("-y, --yes", "Skip confirmation").action(async (options) => {
16428
16511
  const service = new ComponentsService();
@@ -16440,7 +16523,7 @@ function createClearBackupsCommand() {
16440
16523
  }
16441
16524
  console.log();
16442
16525
  if (!options.yes) {
16443
- const ok = await confirm23({ message: "Delete all backups?", default: false });
16526
+ const ok = await confirm24({ message: "Delete all backups?", default: false });
16444
16527
  if (!ok) return;
16445
16528
  }
16446
16529
  await service.clearBackups(process.cwd());
@@ -16450,7 +16533,7 @@ function createClearBackupsCommand() {
16450
16533
 
16451
16534
  // src/commands/vscode/index.ts
16452
16535
  import { Command as Command101 } from "commander";
16453
- import { checkbox as checkbox9, confirm as confirm24, select as select7 } from "@inquirer/prompts";
16536
+ import { checkbox as checkbox9, confirm as confirm25, select as select7 } from "@inquirer/prompts";
16454
16537
  import fs29 from "fs/promises";
16455
16538
  import path12 from "path";
16456
16539
  import { existsSync as existsSync5 } from "fs";
@@ -16695,7 +16778,7 @@ async function applyGroups2(groupKeys, action) {
16695
16778
  console.log("\u{1F4C4} \u0110\xE3 \u0111\u1ECDc c\xE0i \u0111\u1EB7t hi\u1EC7n t\u1EA1i t\u1EEB settings.json");
16696
16779
  } catch {
16697
16780
  console.warn("\u26A0\uFE0F Kh\xF4ng th\u1EC3 \u0111\u1ECDc settings.json (c\xF3 th\u1EC3 ch\u1EE9a comments).");
16698
- const confirmOverwrite = await confirm24({
16781
+ const confirmOverwrite = await confirm25({
16699
16782
  message: "Ghi \u0111\xE8 file settings.json hi\u1EC7n t\u1EA1i?",
16700
16783
  default: false
16701
16784
  });
@@ -16742,7 +16825,7 @@ async function resetSettings2(groupKeys) {
16742
16825
  console.log("\n\u26A0\uFE0F Kh\xF4ng t\xECm th\u1EA5y file settings.json");
16743
16826
  return;
16744
16827
  }
16745
- const confirmReset = await confirm24({
16828
+ const confirmReset = await confirm25({
16746
16829
  message: groupKeys.length === 0 ? "Reset T\u1EA4T C\u1EA2 settings v\u1EC1 m\u1EB7c \u0111\u1ECBnh (x\xF3a to\xE0n b\u1ED9 file)?" : `Reset c\xE1c nh\xF3m: ${groupKeys.join(", ")}?`,
16747
16830
  default: false
16748
16831
  });
@@ -16761,7 +16844,7 @@ async function resetSettings2(groupKeys) {
16761
16844
 
16762
16845
  // src/commands/migrate-ide.ts
16763
16846
  import { Command as Command102 } from "commander";
16764
- import { checkbox as checkbox10, confirm as confirm25 } from "@inquirer/prompts";
16847
+ import { checkbox as checkbox10, confirm as confirm26 } from "@inquirer/prompts";
16765
16848
  function createMigrateIdeCommand() {
16766
16849
  const cmd = new Command102("migrate-ide").description("Migrate .jai1 rules v\xE0 workflows sang IDEs (Cursor, Windsurf, Claude Code, etc.)").option("--ide <ides...>", "Target IDEs (cursor, windsurf, antigravity, claudecode, opencode)").option("--type <types...>", "Content types (rules, workflows, commands)").option("--dry-run", "Preview changes without writing files").action(async (options) => {
16767
16850
  await runMigrateIde(options);
@@ -16834,7 +16917,7 @@ async function runMigrateIde(options) {
16834
16917
  if (options.dryRun) {
16835
16918
  console.log("\u{1F50D} DRY RUN - No files will be written\n");
16836
16919
  }
16837
- const confirmed = await confirm25({
16920
+ const confirmed = await confirm26({
16838
16921
  message: "Proceed with migration?",
16839
16922
  default: true
16840
16923
  });