claudekit-cli 3.15.1 → 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 +27 -26
  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.1",
36507
+ version: "3.15.2",
36507
36508
  description: "CLI tool for bootstrapping and updating ClaudeKit projects",
36508
36509
  type: "module",
36509
36510
  repository: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudekit-cli",
3
- "version": "3.15.1",
3
+ "version": "3.15.2",
4
4
  "description": "CLI tool for bootstrapping and updating ClaudeKit projects",
5
5
  "type": "module",
6
6
  "repository": {