claudekit-cli 3.15.0 → 3.15.2

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.
Files changed (2) hide show
  1. package/dist/index.js +31 -30
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -18339,6 +18339,14 @@ class ReleaseFilter {
18339
18339
  return releaseDate >= cutoffDate;
18340
18340
  });
18341
18341
  }
18342
+ static getLatestStable(releases) {
18343
+ const stableReleases = releases.filter((r) => !r.prerelease && !r.draft).sort((a, b) => -VersionFormatter.compare(a.tag_name, b.tag_name));
18344
+ return stableReleases.length > 0 ? stableReleases[0] : null;
18345
+ }
18346
+ static getLatestPrerelease(releases) {
18347
+ const prereleases = releases.filter((r) => r.prerelease && !r.draft).sort((a, b) => -VersionFormatter.compare(a.tag_name, b.tag_name));
18348
+ return prereleases.length > 0 ? prereleases[0] : null;
18349
+ }
18342
18350
  }
18343
18351
 
18344
18352
  // src/domains/github/client/releases-api.ts
@@ -18369,37 +18377,30 @@ class ReleasesApi {
18369
18377
  }
18370
18378
  async getLatestRelease(kit, includePrereleases = false) {
18371
18379
  try {
18372
- const client = await this.getClient();
18380
+ logger.debug(`Fetching releases for ${kit.owner}/${kit.repo}`);
18381
+ const releases = await this.listReleases(kit, 100);
18373
18382
  if (includePrereleases) {
18374
- logger.debug(`Fetching latest prerelease for ${kit.owner}/${kit.repo}`);
18375
- const releases = await this.listReleases(kit, 100);
18376
- const prereleaseVersion = releases.find((r) => r.prerelease);
18377
- if (prereleaseVersion) {
18378
- logger.debug(`Found prerelease version: ${prereleaseVersion.tag_name}`);
18379
- return prereleaseVersion;
18383
+ const latestPrerelease = ReleaseFilter.getLatestPrerelease(releases);
18384
+ if (latestPrerelease) {
18385
+ logger.debug(`Found latest prerelease (by semver): ${latestPrerelease.tag_name}`);
18386
+ return latestPrerelease;
18380
18387
  }
18381
18388
  logger.warning("No prerelease versions found, falling back to latest stable release");
18382
18389
  }
18383
- logger.debug(`Fetching latest release for ${kit.owner}/${kit.repo}`);
18384
- try {
18385
- const { data } = await client.repos.getLatestRelease({
18386
- owner: kit.owner,
18387
- repo: kit.repo
18388
- });
18389
- return GitHubReleaseSchema.parse(data);
18390
- } catch (stableError) {
18391
- if (stableError?.status === 404) {
18392
- logger.debug("No stable release found, checking for prereleases...");
18393
- const releases = await this.listReleases(kit, 100);
18394
- const latestPrerelease = releases.find((r) => r.prerelease && !r.draft);
18395
- if (latestPrerelease) {
18396
- logger.warning(`No stable release available. Using latest prerelease: ${latestPrerelease.tag_name}`);
18397
- return latestPrerelease;
18398
- }
18399
- }
18400
- throw stableError;
18390
+ const latestStable = ReleaseFilter.getLatestStable(releases);
18391
+ if (latestStable) {
18392
+ logger.debug(`Found latest stable (by semver): ${latestStable.tag_name}`);
18393
+ return latestStable;
18401
18394
  }
18395
+ const anyPrerelease = ReleaseFilter.getLatestPrerelease(releases);
18396
+ if (anyPrerelease) {
18397
+ logger.warning(`No stable release available. Using latest prerelease: ${anyPrerelease.tag_name}`);
18398
+ return anyPrerelease;
18399
+ }
18400
+ throw new GitHubError(`No releases found for ${kit.name}`, 404);
18402
18401
  } catch (error) {
18402
+ if (error instanceof GitHubError)
18403
+ throw error;
18403
18404
  return handleHttpError(error, {
18404
18405
  kit,
18405
18406
  operation: "fetch release",
@@ -36503,7 +36504,7 @@ var import_picocolors19 = __toESM(require_picocolors(), 1);
36503
36504
  // package.json
36504
36505
  var package_default = {
36505
36506
  name: "claudekit-cli",
36506
- version: "3.15.0",
36507
+ version: "3.15.2",
36507
36508
  description: "CLI tool for bootstrapping and updating ClaudeKit projects",
36508
36509
  type: "module",
36509
36510
  repository: {
@@ -36632,21 +36633,21 @@ async function displayKitUpdateReminder() {
36632
36633
  lines.push("");
36633
36634
  lines.push("To update your ClaudeKit content (skills, commands, workflows):");
36634
36635
  if (hasLocal && localVersion) {
36635
- lines.push(` ${import_picocolors19.default.cyan(pad(cmdLocal))} Update local project (v${localVersion})`);
36636
+ lines.push(` ${import_picocolors19.default.cyan(pad(cmdLocal))} Update local project (${localVersion})`);
36636
36637
  const localCheck = versionCheckResults.get(localVersion);
36637
36638
  if (localCheck?.updateAvailable) {
36638
36639
  const indent = " ".repeat(maxCmdLen + 4);
36639
- lines.push(`${indent}${import_picocolors19.default.green(`→ v${localCheck.latestVersion} available!`)}`);
36640
+ lines.push(`${indent}${import_picocolors19.default.green(`→ ${localCheck.latestVersion} available!`)}`);
36640
36641
  }
36641
36642
  } else {
36642
36643
  lines.push(` ${import_picocolors19.default.cyan(pad(cmdLocal))} Initialize in current project`);
36643
36644
  }
36644
36645
  if (hasGlobal && globalVersion) {
36645
- lines.push(` ${import_picocolors19.default.cyan(pad(cmdGlobal))} Update global ~/.claude (v${globalVersion})`);
36646
+ lines.push(` ${import_picocolors19.default.cyan(pad(cmdGlobal))} Update global ~/.claude (${globalVersion})`);
36646
36647
  const globalCheck = versionCheckResults.get(globalVersion);
36647
36648
  if (globalCheck?.updateAvailable) {
36648
36649
  const indent = " ".repeat(maxCmdLen + 4);
36649
- lines.push(`${indent}${import_picocolors19.default.green(`→ v${globalCheck.latestVersion} available!`)}`);
36650
+ lines.push(`${indent}${import_picocolors19.default.green(`→ ${globalCheck.latestVersion} available!`)}`);
36650
36651
  }
36651
36652
  } else {
36652
36653
  lines.push(` ${import_picocolors19.default.cyan(pad(cmdGlobal))} Initialize global ~/.claude`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudekit-cli",
3
- "version": "3.15.0",
3
+ "version": "3.15.2",
4
4
  "description": "CLI tool for bootstrapping and updating ClaudeKit projects",
5
5
  "type": "module",
6
6
  "repository": {