// @bun
import {
  gracefulShutdown,
  init_gracefulShutdown
} from "./chunk-e91vvygt.js";
import"./chunk-k60b56gr.js";
import"./chunk-14p6wvsq.js";
import"./chunk-n66h7gtd.js";
import"./chunk-28jd8qjx.js";
import {
  distRoot,
  init_distRoot
} from "./chunk-djt39ze3.js";
import"./chunk-9a9g5hbj.js";
import"./chunk-ptxteaeh.js";
import"./chunk-ftrj0crk.js";
import"./chunk-yrpthe2x.js";
import"./chunk-10fpzkhd.js";
import"./chunk-awz3dq2e.js";
import"./chunk-2tabctw9.js";
import"./chunk-z21x0z3h.js";
import"./chunk-9hn8e6h1.js";
import"./chunk-rgyzsbs3.js";
import"./chunk-qn6me9n1.js";
import"./chunk-9rwstxn3.js";
import"./chunk-td4ter5p.js";
import"./chunk-71sdcaq6.js";
import"./chunk-cb6yemrf.js";
import"./chunk-tj8te4np.js";
import"./chunk-jjh8y2m7.js";
import"./chunk-dr2x4ze7.js";
import"./chunk-8ad8jmrf.js";
import"./chunk-24kv69g3.js";
import"./chunk-68n1gfc7.js";
import"./chunk-1w7c5hws.js";
import"./chunk-4gyjc4jm.js";
import"./chunk-4spgkgr3.js";
import"./chunk-e8dhxycp.js";
import"./chunk-hf0jvnz1.js";
import"./chunk-9pygs2bc.js";
import"./chunk-60fkafk2.js";
import"./chunk-gaazk5m4.js";
import"./chunk-vgmsapsy.js";
import"./chunk-093ej2sf.js";
import"./chunk-7tfdhkpy.js";
import"./chunk-nde5ym6a.js";
import"./chunk-zypcr179.js";
import"./chunk-etcs82b2.js";
import"./chunk-7wy0nfkf.js";
import"./chunk-1emjj9xz.js";
import"./chunk-m1hz377a.js";
import"./chunk-4nctdw69.js";
import"./chunk-vhghhw4q.js";
import"./chunk-935nrvdb.js";
import"./chunk-8zz4z1q3.js";
import"./chunk-hdwp8fte.js";
import"./chunk-hqxp6b72.js";
import"./chunk-3cwfww0q.js";
import"./chunk-xqc9bbe3.js";
import"./chunk-w5hnghah.js";
import"./chunk-qm7pdcft.js";
import"./chunk-x59e8cv0.js";
import"./chunk-s76nvx50.js";
import"./chunk-7jyr5758.js";
import"./chunk-zrpa39fh.js";
import"./chunk-nkg1b3qw.js";
import"./chunk-c1kx8bry.js";
import"./chunk-epvbnq43.js";
import"./chunk-swgt1px0.js";
import"./chunk-8kf8h7xf.js";
import"./chunk-swz6krys.js";
import"./chunk-7eywm3ed.js";
import"./chunk-bgan4cpf.js";
import"./chunk-jmv7k0jn.js";
import"./chunk-25w7rxtr.js";
import"./chunk-5xfj4jkd.js";
import"./chunk-c1t99xmt.js";
import"./chunk-vwenx8ke.js";
import"./chunk-8thwr7p8.js";
import"./chunk-v4ypszbb.js";
import"./chunk-bk6ck5c2.js";
import"./chunk-ym6j0wv1.js";
import"./chunk-hjmatcgt.js";
import"./chunk-6mdh70q0.js";
import"./chunk-ch92ycde.js";
import"./chunk-e4dsy4g1.js";
import"./chunk-326zehp8.js";
import"./chunk-kc67kt75.js";
import"./chunk-40t1d75v.js";
import"./chunk-rt34thxn.js";
import"./chunk-e3abfxpy.js";
import"./chunk-q44zc68f.js";
import"./chunk-fejeqe61.js";
import"./chunk-kgkdmr0x.js";
import"./chunk-hn4w9pkj.js";
import {
  init_source,
  source_default
} from "./chunk-cswpvb8x.js";
import"./chunk-gxyx8b8w.js";
import"./chunk-j1mep9ck.js";
import"./chunk-6x35ffpx.js";
import"./chunk-1zbwhcbt.js";
import"./chunk-ddaxg4xh.js";
import"./chunk-vvh31np8.js";
import"./chunk-tywrrc1m.js";
import"./chunk-e3j7m7k2.js";
import {
  execFileNoThrowWithCwd,
  init_execFileNoThrow
} from "./chunk-4p0hxk2c.js";
import"./chunk-c4dyxsat.js";
import"./chunk-34rn09za.js";
import"./chunk-m28vg9w4.js";
import"./chunk-rk9fgqmg.js";
import"./chunk-nw4zt0y4.js";
import"./chunk-c1yc761e.js";
import"./chunk-c5g9shkw.js";
import {
  init_debug,
  logForDebugging
} from "./chunk-k9jzhhww.js";
import {
  init_process,
  writeToStdout
} from "./chunk-kb3758f7.js";
import"./chunk-xqs9r7pg.js";
import"./chunk-tj0dzck2.js";
import"./chunk-aeysytks.js";
import"./chunk-ns1htxgd.js";
import"./chunk-ztqzmfx1.js";
import"./chunk-6k1rsk85.js";
import"./chunk-nxzx0ey9.js";
import"./chunk-yes1my80.js";
import"./chunk-pecy49yr.js";
import"./chunk-azbab59e.js";
import"./chunk-3nk9q8dr.js";
import"./chunk-hhsxm2yr.js";

// src/cli/updateCCB.ts
init_source();
init_debug();
init_distRoot();
init_execFileNoThrow();
init_gracefulShutdown();
init_process();
import { execSync } from "child_process";
import { existsSync, readFileSync } from "fs";
import { homedir } from "os";
import { join } from "path";
var PACKAGE_NAME = "claude-code-best";
function getCurrentVersion() {
  try {
    const pkgPath = join(distRoot, "..", "package.json");
    if (existsSync(pkgPath)) {
      const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
      if (pkg.version)
        return pkg.version;
    }
  } catch {}
  return "2.6.8";
}
function isCommandAvailable(cmd) {
  try {
    execSync(`which ${cmd} 2>/dev/null`, { stdio: "pipe" });
    return true;
  } catch {
    return false;
  }
}
function isBunInstallation() {
  const execPath = process.execPath;
  if (execPath.includes("bun")) {
    return true;
  }
  const bunGlobalDir = join(homedir(), ".bun", "install", "global");
  if (existsSync(join(bunGlobalDir, "node_modules", PACKAGE_NAME))) {
    return true;
  }
  return false;
}
async function getLatestVersion() {
  const result = await execFileNoThrowWithCwd("npm", ["view", `${PACKAGE_NAME}@latest`, "version", "--prefer-online"], { abortSignal: AbortSignal.timeout(1e4), cwd: homedir() });
  if (result.code !== 0) {
    logForDebugging(`npm view failed: ${result.stderr}`);
    return null;
  }
  return result.stdout.trim();
}
function gte(a, b) {
  const parseVer = (v) => v.replace(/^\D/, "").split(".").map(Number);
  const pa = parseVer(a);
  const pb = parseVer(b);
  for (let i = 0;i < 3; i++) {
    if ((pa[i] ?? 0) > (pb[i] ?? 0))
      return true;
    if ((pa[i] ?? 0) < (pb[i] ?? 0))
      return false;
  }
  return true;
}
async function updateCCB() {
  const currentVersion = getCurrentVersion();
  writeToStdout(`Current version: ${currentVersion}
`);
  const hasBun = isCommandAvailable("bun");
  const useBun = isBunInstallation();
  const pkgManager = useBun && hasBun ? "bun" : "npm";
  writeToStdout(`Package manager: ${pkgManager}
`);
  writeToStdout(`Checking for updates...
`);
  const latestVersion = await getLatestVersion();
  if (!latestVersion) {
    process.stderr.write(source_default.red("Failed to check for updates") + `
`);
    process.stderr.write(`Unable to fetch latest version from npm registry.
`);
    await gracefulShutdown(1);
    return;
  }
  if (latestVersion === currentVersion || gte(currentVersion, latestVersion)) {
    writeToStdout(source_default.green(`ccb is up to date (${currentVersion})`) + `
`);
    await gracefulShutdown(0);
    return;
  }
  writeToStdout(`New version available: ${latestVersion} (current: ${currentVersion})
`);
  writeToStdout(`Installing update via ${pkgManager}...
`);
  try {
    if (pkgManager === "bun") {
      execSync(`bun install -g ${PACKAGE_NAME}@latest`, {
        stdio: "inherit",
        cwd: homedir(),
        timeout: 120000
      });
    } else {
      execSync(`npm install -g ${PACKAGE_NAME}@latest`, {
        stdio: "inherit",
        cwd: homedir(),
        timeout: 120000
      });
    }
    writeToStdout(source_default.green(`Successfully updated from ${currentVersion} to ${latestVersion}`) + `
`);
  } catch (error) {
    process.stderr.write(source_default.red("Update failed") + `
`);
    process.stderr.write(`${error}
`);
    process.stderr.write(`
`);
    process.stderr.write(`Try manually updating with:
`);
    if (pkgManager === "bun") {
      process.stderr.write(source_default.bold(`  bun install -g ${PACKAGE_NAME}@latest`) + `
`);
    } else {
      process.stderr.write(source_default.bold(`  npm install -g ${PACKAGE_NAME}@latest`) + `
`);
    }
    await gracefulShutdown(1);
  }
  await gracefulShutdown(0);
}
export {
  updateCCB
};

//# debugId=88FE49858FFCD93964756E2164756E21
//# sourceMappingURL=chunk-wcj97wae.js.map
