@qazuor/claude-code-config 0.3.0 → 0.4.0

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/README.md CHANGED
@@ -45,7 +45,8 @@ A comprehensive CLI tool to install and manage Claude Code configurations in you
45
45
 
46
46
  ### Core Capabilities
47
47
 
48
- - **Interactive Wizard**: Step-by-step configuration with intelligent defaults
48
+ - **Interactive Wizard**: Step-by-step configuration with intelligent defaults and **back navigation**
49
+ - **Back Navigation**: Return to previous steps at any time to modify your choices
49
50
  - **Auto-Detection**: Automatically detects project type, package manager, and tech stack
50
51
  - **23 Bundles**: Pre-grouped module sets organized by category (stacks, testing, quality, etc.)
51
52
  - **Bundle Categories**: Stack bundles (React+TanStack, Astro, Next.js), API bundles (Hono, Express), testing, quality, and more
@@ -169,6 +170,8 @@ The wizard will guide you through:
169
170
  8. **Code Style** - EditorConfig, Biome, Prettier, Commitlint
170
171
  9. **Template Configuration** - Auto-detected command/path/target values
171
172
 
173
+ > **Tip**: You can go back to any previous step using the "← Back" option to modify your choices.
174
+
172
175
  ### Bundle-based Setup
173
176
 
174
177
  ```bash
package/dist/bin.cjs CHANGED
@@ -30,10 +30,10 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  mod
31
31
  ));
32
32
 
33
- // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
33
+ // node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
34
34
  var getImportMetaUrl, importMetaUrl;
35
35
  var init_cjs_shims = __esm({
36
- "node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"() {
36
+ "node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"() {
37
37
  "use strict";
38
38
  getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
39
39
  importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
@@ -226,6 +226,7 @@ var init_fs = __esm({
226
226
 
227
227
  // src/bin.ts
228
228
  init_cjs_shims();
229
+ var import_node_module = require("module");
229
230
 
230
231
  // src/cli/index.ts
231
232
  init_cjs_shims();
@@ -4823,9 +4824,9 @@ async function readPackageJson(projectPath) {
4823
4824
  return null;
4824
4825
  }
4825
4826
  }
4826
- async function writePackageJson(projectPath, packageJson) {
4827
+ async function writePackageJson(projectPath, packageJson2) {
4827
4828
  const packageJsonPath = joinPath(projectPath, "package.json");
4828
- const content = `${JSON.stringify(packageJson, null, 2)}
4829
+ const content = `${JSON.stringify(packageJson2, null, 2)}
4829
4830
  `;
4830
4831
  await writeFile(packageJsonPath, content);
4831
4832
  }
@@ -4905,13 +4906,13 @@ async function updatePackageJson(projectPath, changes, options = {}) {
4905
4906
  skippedDevDependencies: []
4906
4907
  };
4907
4908
  try {
4908
- let packageJson = await readPackageJson(projectPath);
4909
- if (!packageJson) {
4909
+ let packageJson2 = await readPackageJson(projectPath);
4910
+ if (!packageJson2) {
4910
4911
  if (!createIfMissing) {
4911
4912
  result.error = "package.json not found and createIfMissing is false";
4912
4913
  return result;
4913
4914
  }
4914
- packageJson = createMinimalPackageJson({
4915
+ packageJson2 = createMinimalPackageJson({
4915
4916
  name: changes.metadata?.name,
4916
4917
  description: changes.metadata?.description,
4917
4918
  author: typeof changes.metadata?.author === "string" ? changes.metadata.author : void 0,
@@ -4921,46 +4922,46 @@ async function updatePackageJson(projectPath, changes, options = {}) {
4921
4922
  }
4922
4923
  if (backup2 && !dryRun && !result.created) {
4923
4924
  const backupPath = joinPath(projectPath, "package.json.backup");
4924
- await writeFile(backupPath, JSON.stringify(packageJson, null, 2));
4925
+ await writeFile(backupPath, JSON.stringify(packageJson2, null, 2));
4925
4926
  }
4926
4927
  if (changes.metadata) {
4927
- if (changes.metadata.name && !packageJson.name) {
4928
- packageJson.name = changes.metadata.name;
4928
+ if (changes.metadata.name && !packageJson2.name) {
4929
+ packageJson2.name = changes.metadata.name;
4929
4930
  result.modified = true;
4930
4931
  }
4931
- if (changes.metadata.description && !packageJson.description) {
4932
- packageJson.description = changes.metadata.description;
4932
+ if (changes.metadata.description && !packageJson2.description) {
4933
+ packageJson2.description = changes.metadata.description;
4933
4934
  result.modified = true;
4934
4935
  }
4935
- if (changes.metadata.author && !packageJson.author) {
4936
- packageJson.author = changes.metadata.author;
4936
+ if (changes.metadata.author && !packageJson2.author) {
4937
+ packageJson2.author = changes.metadata.author;
4937
4938
  result.modified = true;
4938
4939
  }
4939
- if (changes.metadata.license && !packageJson.license) {
4940
- packageJson.license = changes.metadata.license;
4940
+ if (changes.metadata.license && !packageJson2.license) {
4941
+ packageJson2.license = changes.metadata.license;
4941
4942
  result.modified = true;
4942
4943
  }
4943
- if (changes.metadata.repository && !packageJson.repository) {
4944
- packageJson.repository = changes.metadata.repository;
4944
+ if (changes.metadata.repository && !packageJson2.repository) {
4945
+ packageJson2.repository = changes.metadata.repository;
4945
4946
  result.modified = true;
4946
4947
  }
4947
- if (changes.metadata.type && !packageJson.type) {
4948
- packageJson.type = changes.metadata.type;
4948
+ if (changes.metadata.type && !packageJson2.type) {
4949
+ packageJson2.type = changes.metadata.type;
4949
4950
  result.modified = true;
4950
4951
  }
4951
- if (changes.metadata.engines && !packageJson.engines) {
4952
- packageJson.engines = changes.metadata.engines;
4952
+ if (changes.metadata.engines && !packageJson2.engines) {
4953
+ packageJson2.engines = changes.metadata.engines;
4953
4954
  result.modified = true;
4954
4955
  }
4955
- if (changes.metadata.packageManager && !packageJson.packageManager) {
4956
- packageJson.packageManager = changes.metadata.packageManager;
4956
+ if (changes.metadata.packageManager && !packageJson2.packageManager) {
4957
+ packageJson2.packageManager = changes.metadata.packageManager;
4957
4958
  result.modified = true;
4958
4959
  }
4959
4960
  }
4960
4961
  if (changes.scripts) {
4961
- packageJson.scripts = packageJson.scripts || {};
4962
+ packageJson2.scripts = packageJson2.scripts || {};
4962
4963
  for (const [name, command] of Object.entries(changes.scripts)) {
4963
- const exists = name in packageJson.scripts;
4964
+ const exists = name in packageJson2.scripts;
4964
4965
  if (exists) {
4965
4966
  if (scriptsMerge === "skip-existing") {
4966
4967
  result.skippedScripts.push(name);
@@ -4971,15 +4972,15 @@ async function updatePackageJson(projectPath, changes, options = {}) {
4971
4972
  continue;
4972
4973
  }
4973
4974
  }
4974
- packageJson.scripts[name] = command;
4975
+ packageJson2.scripts[name] = command;
4975
4976
  result.addedScripts.push(name);
4976
4977
  result.modified = true;
4977
4978
  }
4978
4979
  }
4979
4980
  if (changes.dependencies) {
4980
- packageJson.dependencies = packageJson.dependencies || {};
4981
+ packageJson2.dependencies = packageJson2.dependencies || {};
4981
4982
  for (const [name, version] of Object.entries(changes.dependencies)) {
4982
- const exists = name in packageJson.dependencies;
4983
+ const exists = name in packageJson2.dependencies;
4983
4984
  if (exists) {
4984
4985
  if (dependenciesMerge === "skip-existing") {
4985
4986
  result.skippedDependencies.push(name);
@@ -4990,15 +4991,15 @@ async function updatePackageJson(projectPath, changes, options = {}) {
4990
4991
  continue;
4991
4992
  }
4992
4993
  }
4993
- packageJson.dependencies[name] = version;
4994
+ packageJson2.dependencies[name] = version;
4994
4995
  result.addedDependencies.push(name);
4995
4996
  result.modified = true;
4996
4997
  }
4997
4998
  }
4998
4999
  if (changes.devDependencies) {
4999
- packageJson.devDependencies = packageJson.devDependencies || {};
5000
+ packageJson2.devDependencies = packageJson2.devDependencies || {};
5000
5001
  for (const [name, version] of Object.entries(changes.devDependencies)) {
5001
- const exists = name in packageJson.devDependencies;
5002
+ const exists = name in packageJson2.devDependencies;
5002
5003
  if (exists) {
5003
5004
  if (dependenciesMerge === "skip-existing") {
5004
5005
  result.skippedDevDependencies.push(name);
@@ -5009,13 +5010,13 @@ async function updatePackageJson(projectPath, changes, options = {}) {
5009
5010
  continue;
5010
5011
  }
5011
5012
  }
5012
- packageJson.devDependencies[name] = version;
5013
+ packageJson2.devDependencies[name] = version;
5013
5014
  result.addedDevDependencies.push(name);
5014
5015
  result.modified = true;
5015
5016
  }
5016
5017
  }
5017
5018
  if (!dryRun && (result.created || result.modified)) {
5018
- await writePackageJson(projectPath, packageJson);
5019
+ await writePackageJson(projectPath, packageJson2);
5019
5020
  }
5020
5021
  result.success = true;
5021
5022
  return result;
@@ -5959,7 +5960,7 @@ async function detectProject(projectPath) {
5959
5960
  };
5960
5961
  }
5961
5962
  signals.push({ file: "package.json", exists: true, indicates: "Node.js project" });
5962
- const packageJson = await readJson(packageJsonPath).catch(() => ({}));
5963
+ const packageJson2 = await readJson(packageJsonPath).catch(() => ({}));
5963
5964
  const packageManager = await detectPackageManager(projectPath);
5964
5965
  if (packageManager) {
5965
5966
  signals.push({
@@ -5968,11 +5969,11 @@ async function detectProject(projectPath) {
5968
5969
  indicates: `${packageManager} package manager`
5969
5970
  });
5970
5971
  }
5971
- const typeResult = await detectProjectType(projectPath, packageJson);
5972
+ const typeResult = await detectProjectType(projectPath, packageJson2);
5972
5973
  const projectType = typeResult.type;
5973
5974
  signals.push(...typeResult.signals);
5974
5975
  const confidence = projectType && packageManager ? "high" : projectType || packageManager ? "medium" : "low";
5975
- const suggestedBundles = suggestBundles(projectType, packageJson);
5976
+ const suggestedBundles = suggestBundles(projectType, packageJson2);
5976
5977
  return {
5977
5978
  detected: true,
5978
5979
  projectType,
@@ -5996,10 +5997,10 @@ async function detectPackageManager(projectPath) {
5996
5997
  }
5997
5998
  return void 0;
5998
5999
  }
5999
- async function detectProjectType(projectPath, packageJson) {
6000
+ async function detectProjectType(projectPath, packageJson2) {
6000
6001
  const signals = [];
6001
- const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
6002
- if (await pathExists(joinPath(projectPath, "turbo.json")) || await pathExists(joinPath(projectPath, "pnpm-workspace.yaml")) || packageJson.workspaces) {
6002
+ const deps = { ...packageJson2.dependencies, ...packageJson2.devDependencies };
6003
+ if (await pathExists(joinPath(projectPath, "turbo.json")) || await pathExists(joinPath(projectPath, "pnpm-workspace.yaml")) || packageJson2.workspaces) {
6003
6004
  signals.push({ file: "turbo.json/pnpm-workspace.yaml", exists: true, indicates: "monorepo" });
6004
6005
  return { type: "monorepo", signals };
6005
6006
  }
@@ -6026,8 +6027,8 @@ async function detectProjectType(projectPath, packageJson) {
6026
6027
  }
6027
6028
  return { type: "node", signals };
6028
6029
  }
6029
- function suggestBundles(projectType, packageJson) {
6030
- const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
6030
+ function suggestBundles(projectType, packageJson2) {
6031
+ const deps = { ...packageJson2.dependencies, ...packageJson2.devDependencies };
6031
6032
  const suggestedBundles = [];
6032
6033
  const hasHono = deps.hono || deps["@hono/node-server"];
6033
6034
  const hasExpress = deps.express;
@@ -6110,8 +6111,8 @@ function suggestBundles(projectType, packageJson) {
6110
6111
  }
6111
6112
  async function getProjectName(projectPath) {
6112
6113
  try {
6113
- const packageJson = await readJson(joinPath(projectPath, "package.json"));
6114
- return packageJson.name;
6114
+ const packageJson2 = await readJson(joinPath(projectPath, "package.json"));
6115
+ return packageJson2.name;
6115
6116
  } catch {
6116
6117
  const parts = projectPath.split("/");
6117
6118
  return parts[parts.length - 1];
@@ -6119,8 +6120,8 @@ async function getProjectName(projectPath) {
6119
6120
  }
6120
6121
  async function getProjectDescription(projectPath) {
6121
6122
  try {
6122
- const packageJson = await readJson(joinPath(projectPath, "package.json"));
6123
- return packageJson.description;
6123
+ const packageJson2 = await readJson(joinPath(projectPath, "package.json"));
6124
+ return packageJson2.description;
6124
6125
  } catch {
6125
6126
  return void 0;
6126
6127
  }
@@ -9694,6 +9695,10 @@ async function promptMcpConfig(options) {
9694
9695
  skippedConfigs: []
9695
9696
  };
9696
9697
  }
9698
+ const projectPath = options?.projectPath || process.cwd();
9699
+ const installedServers = await getInstalledMcpServers(projectPath);
9700
+ const userInstalledSet = new Set(installedServers.user);
9701
+ const projectInstalledSet = new Set(installedServers.project);
9697
9702
  const level = await select({
9698
9703
  message: "Where should MCP servers be configured?",
9699
9704
  choices: [
@@ -9714,13 +9719,44 @@ async function promptMcpConfig(options) {
9714
9719
  const selectedServerIds = [];
9715
9720
  logger.newline();
9716
9721
  logger.info("Select MCP servers to install:");
9722
+ const totalInstalled = userInstalledSet.size + projectInstalledSet.size;
9723
+ if (totalInstalled > 0) {
9724
+ const parts = [];
9725
+ if (userInstalledSet.size > 0) {
9726
+ parts.push(`${userInstalledSet.size} at user level`);
9727
+ }
9728
+ if (projectInstalledSet.size > 0) {
9729
+ parts.push(`${projectInstalledSet.size} at project level`);
9730
+ }
9731
+ logger.info(colors.muted(` (${parts.join(", ")} already installed)`));
9732
+ }
9717
9733
  logger.newline();
9718
9734
  for (const [category, servers] of Object.entries(serversByCategory)) {
9719
- const choices = servers.map((s) => ({
9720
- name: `${s.name} - ${s.description}`,
9721
- value: s.id,
9722
- checked: options?.defaults?.servers?.some((i) => i.serverId === s.id) ?? false
9723
- }));
9735
+ const choices = servers.map((s) => {
9736
+ const isInstalledAtUserLevel = userInstalledSet.has(s.id);
9737
+ const isInstalledAtProjectLevel = projectInstalledSet.has(s.id);
9738
+ if (isInstalledAtUserLevel) {
9739
+ return {
9740
+ name: `${s.name} - ${s.description} ${colors.muted("(already installed at user level)")}`,
9741
+ value: s.id,
9742
+ checked: false,
9743
+ disabled: "already installed at user level"
9744
+ };
9745
+ }
9746
+ if (isInstalledAtProjectLevel) {
9747
+ return {
9748
+ name: `${s.name} - ${s.description} ${colors.muted("(already installed at project level)")}`,
9749
+ value: s.id,
9750
+ checked: false,
9751
+ disabled: "already installed at project level"
9752
+ };
9753
+ }
9754
+ return {
9755
+ name: `${s.name} - ${s.description}`,
9756
+ value: s.id,
9757
+ checked: options?.defaults?.servers?.some((i) => i.serverId === s.id) ?? false
9758
+ };
9759
+ });
9724
9760
  const categoryLabel = formatCategory(category);
9725
9761
  const selected = await checkbox({
9726
9762
  message: `${categoryLabel}:`,
@@ -10127,7 +10163,7 @@ async function promptBashPermissions(defaults) {
10127
10163
  async function promptWebPermissions(defaults) {
10128
10164
  logger.newline();
10129
10165
  logger.info(colors.bold("\u{1F310} Web Operations"));
10130
- const fetch = await confirm({
10166
+ const fetch2 = await confirm({
10131
10167
  message: "Allow WebFetch (fetch web pages)?",
10132
10168
  default: defaults?.fetch ?? true
10133
10169
  });
@@ -10136,7 +10172,7 @@ async function promptWebPermissions(defaults) {
10136
10172
  default: defaults?.search ?? true
10137
10173
  });
10138
10174
  return {
10139
- fetch,
10175
+ fetch: fetch2,
10140
10176
  search
10141
10177
  };
10142
10178
  }
@@ -11218,7 +11254,7 @@ function createMcpConfigStep() {
11218
11254
  required: false
11219
11255
  },
11220
11256
  computeDefaults: (ctx) => ctx.mcpConfig,
11221
- execute: async (_ctx, defaults) => {
11257
+ execute: async (ctx, defaults) => {
11222
11258
  const goBack = await promptBackOption(5, "Configure MCP servers or go back?");
11223
11259
  if (goBack) {
11224
11260
  return createResult(
@@ -11226,7 +11262,7 @@ function createMcpConfigStep() {
11226
11262
  "back"
11227
11263
  );
11228
11264
  }
11229
- const result = await promptMcpConfig();
11265
+ const result = await promptMcpConfig({ projectPath: ctx.projectPath });
11230
11266
  return createResult(result, "next");
11231
11267
  }
11232
11268
  };
@@ -12935,7 +12971,8 @@ async function handleConfigUpdates(projectPath, config, _options) {
12935
12971
  }
12936
12972
  if (reconfigureOptions.includes("mcp")) {
12937
12973
  const mcpResult = await promptMcpConfig({
12938
- defaults: config.mcp
12974
+ defaults: config.mcp,
12975
+ projectPath
12939
12976
  });
12940
12977
  config.mcp = mcpResult.config;
12941
12978
  await installMcpServers(projectPath, mcpResult.config);
@@ -13276,7 +13313,7 @@ program.addCommand(createConfigureCommand());
13276
13313
  init_cjs_shims();
13277
13314
  var import_chalk3 = __toESM(require("chalk"), 1);
13278
13315
  var import_figlet = __toESM(require("figlet"), 1);
13279
- function showBanner() {
13316
+ function showBanner(version) {
13280
13317
  const bannerText = import_figlet.default.textSync("Qazuor", {
13281
13318
  font: "Standard",
13282
13319
  horizontalLayout: "default",
@@ -13302,18 +13339,105 @@ function showBanner() {
13302
13339
  return colors2[colorIndex](line);
13303
13340
  }).join("\n");
13304
13341
  console.log(coloredBanner);
13305
- console.log(import_chalk3.default.gray(" Claude Code Configuration & Project Setup"));
13342
+ const versionText = version ? import_chalk3.default.cyan(` v${version}`) : "";
13343
+ console.log(import_chalk3.default.gray(" Claude Code Configuration & Project Setup") + versionText);
13306
13344
  console.log(import_chalk3.default.gray(" \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"));
13307
13345
  console.log();
13308
13346
  }
13309
13347
 
13348
+ // src/lib/utils/version-check.ts
13349
+ init_cjs_shims();
13350
+ var import_chalk4 = __toESM(require("chalk"), 1);
13351
+ var PACKAGE_NAME = "@qazuor/claude-code-config";
13352
+ var NPM_REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
13353
+ var CHECK_TIMEOUT_MS = 3e3;
13354
+ function compareVersions(a, b) {
13355
+ const partsA = a.replace(/^v/, "").split(".").map(Number);
13356
+ const partsB = b.replace(/^v/, "").split(".").map(Number);
13357
+ for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
13358
+ const numA = partsA[i] || 0;
13359
+ const numB = partsB[i] || 0;
13360
+ if (numA > numB) return 1;
13361
+ if (numA < numB) return -1;
13362
+ }
13363
+ return 0;
13364
+ }
13365
+ async function fetchLatestVersion() {
13366
+ try {
13367
+ const controller = new AbortController();
13368
+ const timeoutId = setTimeout(() => controller.abort(), CHECK_TIMEOUT_MS);
13369
+ const response = await fetch(NPM_REGISTRY_URL, {
13370
+ signal: controller.signal,
13371
+ headers: {
13372
+ Accept: "application/json"
13373
+ }
13374
+ });
13375
+ clearTimeout(timeoutId);
13376
+ if (!response.ok) {
13377
+ return null;
13378
+ }
13379
+ const data = await response.json();
13380
+ return data.version || null;
13381
+ } catch {
13382
+ return null;
13383
+ }
13384
+ }
13385
+ async function checkForUpdates(currentVersion) {
13386
+ try {
13387
+ const latestVersion = await fetchLatestVersion();
13388
+ if (!latestVersion) {
13389
+ return;
13390
+ }
13391
+ if (compareVersions(latestVersion, currentVersion) > 0) {
13392
+ displayUpdateNotification(currentVersion, latestVersion);
13393
+ }
13394
+ } catch {
13395
+ }
13396
+ }
13397
+ function displayUpdateNotification(currentVersion, latestVersion) {
13398
+ const boxWidth = 50;
13399
+ const border = import_chalk4.default.yellow("\u2502");
13400
+ const topBorder = import_chalk4.default.yellow(`\u256D${"\u2500".repeat(boxWidth)}\u256E`);
13401
+ const bottomBorder = import_chalk4.default.yellow(`\u2570${"\u2500".repeat(boxWidth)}\u256F`);
13402
+ const padLine = (text, rawLength) => {
13403
+ const padding = boxWidth - rawLength;
13404
+ const leftPad = Math.floor(padding / 2);
13405
+ const rightPad = padding - leftPad;
13406
+ return border + " ".repeat(leftPad) + text + " ".repeat(rightPad) + border;
13407
+ };
13408
+ const emptyLine = border + " ".repeat(boxWidth) + border;
13409
+ const updateText = "Update available!";
13410
+ const versionText = `${import_chalk4.default.gray(currentVersion)} \u2192 ${import_chalk4.default.green(latestVersion)}`;
13411
+ const versionRawLength = currentVersion.length + " \u2192 ".length + latestVersion.length;
13412
+ const commandText = `npm i -g ${PACKAGE_NAME}`;
13413
+ const runText = `Run: ${import_chalk4.default.cyan(commandText)}`;
13414
+ const runRawLength = "Run: ".length + commandText.length;
13415
+ console.log();
13416
+ console.log(topBorder);
13417
+ console.log(emptyLine);
13418
+ console.log(padLine(import_chalk4.default.yellow.bold(updateText), updateText.length));
13419
+ console.log(padLine(versionText, versionRawLength));
13420
+ console.log(emptyLine);
13421
+ console.log(padLine(runText, runRawLength));
13422
+ console.log(emptyLine);
13423
+ console.log(bottomBorder);
13424
+ console.log();
13425
+ }
13426
+ function startBackgroundVersionCheck(currentVersion) {
13427
+ return checkForUpdates(currentVersion);
13428
+ }
13429
+
13310
13430
  // src/bin.ts
13431
+ var require2 = (0, import_node_module.createRequire)(importMetaUrl);
13432
+ var packageJson = require2("../package.json");
13433
+ var VERSION3 = packageJson.version;
13311
13434
  setupGracefulCancellation();
13312
13435
  var args = process.argv.slice(2);
13313
13436
  var showBannerCommands = ["init", "help", "--help", "-h", ""];
13314
13437
  var shouldShowBanner = args.length === 0 || showBannerCommands.includes(args[0] || "");
13315
13438
  if (shouldShowBanner) {
13316
- showBanner();
13439
+ showBanner(VERSION3);
13440
+ void startBackgroundVersionCheck(VERSION3);
13317
13441
  }
13318
13442
  program.parse(process.argv);
13319
13443
  //# sourceMappingURL=bin.cjs.map