claudekit-cli 3.17.0 → 3.18.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/dist/index.js +81 -41
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6589,7 +6589,7 @@ var init_kit = __esm(() => {
|
|
|
6589
6589
|
name: "ClaudeKit Marketing",
|
|
6590
6590
|
repo: "claudekit-marketing",
|
|
6591
6591
|
owner: "claudekit",
|
|
6592
|
-
description: "
|
|
6592
|
+
description: "Marketing automation toolkit for Claude"
|
|
6593
6593
|
}
|
|
6594
6594
|
};
|
|
6595
6595
|
NEVER_COPY_PATTERNS = [
|
|
@@ -23905,13 +23905,14 @@ init_logger();
|
|
|
23905
23905
|
|
|
23906
23906
|
// src/domains/ui/prompts/kit-prompts.ts
|
|
23907
23907
|
init_types2();
|
|
23908
|
-
async function selectKit(defaultKit) {
|
|
23908
|
+
async function selectKit(defaultKit, accessibleKits) {
|
|
23909
|
+
const kits = accessibleKits ?? Object.keys(AVAILABLE_KITS);
|
|
23909
23910
|
const kit = await ie({
|
|
23910
23911
|
message: "Select a ClaudeKit:",
|
|
23911
|
-
options:
|
|
23912
|
+
options: kits.map((key) => ({
|
|
23912
23913
|
value: key,
|
|
23913
|
-
label:
|
|
23914
|
-
hint:
|
|
23914
|
+
label: AVAILABLE_KITS[key].name,
|
|
23915
|
+
hint: AVAILABLE_KITS[key].description
|
|
23915
23916
|
})),
|
|
23916
23917
|
initialValue: defaultKit
|
|
23917
23918
|
});
|
|
@@ -24443,8 +24444,8 @@ async function promptSkillsInstallation() {
|
|
|
24443
24444
|
}
|
|
24444
24445
|
// src/domains/ui/prompts.ts
|
|
24445
24446
|
class PromptsManager {
|
|
24446
|
-
async selectKit(defaultKit) {
|
|
24447
|
-
return selectKit(defaultKit);
|
|
24447
|
+
async selectKit(defaultKit, accessibleKits) {
|
|
24448
|
+
return selectKit(defaultKit, accessibleKits);
|
|
24448
24449
|
}
|
|
24449
24450
|
async selectVersion(versions, defaultVersion) {
|
|
24450
24451
|
return selectVersion(versions, defaultVersion);
|
|
@@ -39519,6 +39520,31 @@ Optional: DISCORD_WEBHOOK_URL, TELEGRAM_BOT_TOKEN`, "Configuration skipped");
|
|
|
39519
39520
|
import { mkdir as mkdir19 } from "node:fs/promises";
|
|
39520
39521
|
import { join as join62, resolve as resolve7 } from "node:path";
|
|
39521
39522
|
|
|
39523
|
+
// src/domains/github/kit-access-checker.ts
|
|
39524
|
+
init_logger();
|
|
39525
|
+
init_types2();
|
|
39526
|
+
async function detectAccessibleKits() {
|
|
39527
|
+
const spinner = createSpinner("Checking kit access...").start();
|
|
39528
|
+
const github = new GitHubClient;
|
|
39529
|
+
const results = await Promise.all(Object.entries(AVAILABLE_KITS).map(async ([type, config]) => {
|
|
39530
|
+
try {
|
|
39531
|
+
await github.checkAccess(config);
|
|
39532
|
+
logger.debug(`Access confirmed: ${type}`);
|
|
39533
|
+
return type;
|
|
39534
|
+
} catch {
|
|
39535
|
+
logger.debug(`No access to ${type}`);
|
|
39536
|
+
return null;
|
|
39537
|
+
}
|
|
39538
|
+
}));
|
|
39539
|
+
const accessible = results.filter((kit) => kit !== null);
|
|
39540
|
+
if (accessible.length === 0) {
|
|
39541
|
+
spinner.fail("No kit access found");
|
|
39542
|
+
} else {
|
|
39543
|
+
spinner.succeed(`Access verified: ${accessible.join(", ")}`);
|
|
39544
|
+
}
|
|
39545
|
+
return accessible;
|
|
39546
|
+
}
|
|
39547
|
+
|
|
39522
39548
|
// src/domains/installation/fresh-installer.ts
|
|
39523
39549
|
init_logger();
|
|
39524
39550
|
import { join as join61 } from "node:path";
|
|
@@ -39581,13 +39607,33 @@ async function handleSelection(ctx) {
|
|
|
39581
39607
|
};
|
|
39582
39608
|
}
|
|
39583
39609
|
const config = await ConfigManager.get();
|
|
39610
|
+
let accessibleKits;
|
|
39611
|
+
if (!ctx.options.useGit) {
|
|
39612
|
+
accessibleKits = await detectAccessibleKits();
|
|
39613
|
+
if (accessibleKits.length === 0) {
|
|
39614
|
+
logger.error("No ClaudeKit access found.");
|
|
39615
|
+
logger.info("Purchase at https://claudekit.cc");
|
|
39616
|
+
return { ...ctx, cancelled: true };
|
|
39617
|
+
}
|
|
39618
|
+
}
|
|
39584
39619
|
let kitType = ctx.options.kit || config.defaults?.kit;
|
|
39620
|
+
if (kitType && accessibleKits && !accessibleKits.includes(kitType)) {
|
|
39621
|
+
logger.error(`No access to ${AVAILABLE_KITS[kitType].name}`);
|
|
39622
|
+
logger.info("Purchase at https://claudekit.cc");
|
|
39623
|
+
return { ...ctx, cancelled: true };
|
|
39624
|
+
}
|
|
39585
39625
|
if (!kitType) {
|
|
39586
39626
|
if (ctx.isNonInteractive) {
|
|
39587
|
-
|
|
39588
|
-
|
|
39627
|
+
if (!accessibleKits || accessibleKits.length === 0) {
|
|
39628
|
+
throw new Error("Kit must be specified via --kit flag in non-interactive mode (no accessible kits detected)");
|
|
39629
|
+
}
|
|
39630
|
+
kitType = accessibleKits[0];
|
|
39631
|
+
logger.info(`Auto-selected: ${AVAILABLE_KITS[kitType].name}`);
|
|
39632
|
+
} else if (accessibleKits?.length === 1) {
|
|
39633
|
+
kitType = accessibleKits[0];
|
|
39634
|
+
logger.info(`Using ${AVAILABLE_KITS[kitType].name} (only accessible kit)`);
|
|
39589
39635
|
} else {
|
|
39590
|
-
kitType = await ctx.prompts.selectKit();
|
|
39636
|
+
kitType = await ctx.prompts.selectKit(undefined, accessibleKits);
|
|
39591
39637
|
}
|
|
39592
39638
|
}
|
|
39593
39639
|
const kit = AVAILABLE_KITS[kitType];
|
|
@@ -39662,20 +39708,6 @@ async function handleSelection(ctx) {
|
|
|
39662
39708
|
}
|
|
39663
39709
|
}
|
|
39664
39710
|
const github = new GitHubClient;
|
|
39665
|
-
if (!ctx.options.useGit) {
|
|
39666
|
-
const spinner = createSpinner("Checking repository access...").start();
|
|
39667
|
-
logger.verbose("GitHub API check", { repo: kit.repo, owner: kit.owner });
|
|
39668
|
-
try {
|
|
39669
|
-
await github.checkAccess(kit);
|
|
39670
|
-
spinner.succeed("Repository access verified");
|
|
39671
|
-
} catch (error) {
|
|
39672
|
-
spinner.fail("Access denied to repository");
|
|
39673
|
-
logger.error(error.message || `Cannot access ${kit.name}`);
|
|
39674
|
-
return { ...ctx, cancelled: true };
|
|
39675
|
-
}
|
|
39676
|
-
} else {
|
|
39677
|
-
logger.verbose("Skipping API access check (--use-git mode)");
|
|
39678
|
-
}
|
|
39679
39711
|
let selectedVersion = ctx.options.release;
|
|
39680
39712
|
if (!selectedVersion && ctx.isNonInteractive && !ctx.options.yes) {
|
|
39681
39713
|
throw new Error("Non-interactive mode requires either: --release <tag> OR --yes (uses latest)");
|
|
@@ -40683,12 +40715,34 @@ var import_fs_extra32 = __toESM(require_lib(), 1);
|
|
|
40683
40715
|
async function directorySetup(validOptions, prompts) {
|
|
40684
40716
|
const isNonInteractive2 = !process.stdin.isTTY || process.env.CI === "true" || process.env.NON_INTERACTIVE === "true";
|
|
40685
40717
|
const config = await ConfigManager.get();
|
|
40718
|
+
let accessibleKits;
|
|
40719
|
+
if (!validOptions.useGit) {
|
|
40720
|
+
accessibleKits = await detectAccessibleKits();
|
|
40721
|
+
if (accessibleKits.length === 0) {
|
|
40722
|
+
logger.error("No ClaudeKit access found.");
|
|
40723
|
+
logger.info("Purchase at https://claudekit.cc");
|
|
40724
|
+
return null;
|
|
40725
|
+
}
|
|
40726
|
+
}
|
|
40686
40727
|
let kit = validOptions.kit || config.defaults?.kit;
|
|
40728
|
+
if (kit && accessibleKits && !accessibleKits.includes(kit)) {
|
|
40729
|
+
logger.error(`No access to ${AVAILABLE_KITS[kit].name}`);
|
|
40730
|
+
logger.info("Purchase at https://claudekit.cc");
|
|
40731
|
+
return null;
|
|
40732
|
+
}
|
|
40687
40733
|
if (!kit) {
|
|
40688
40734
|
if (isNonInteractive2) {
|
|
40689
|
-
|
|
40735
|
+
kit = accessibleKits?.[0];
|
|
40736
|
+
if (!kit) {
|
|
40737
|
+
throw new Error("Kit must be specified via --kit flag in non-interactive mode");
|
|
40738
|
+
}
|
|
40739
|
+
logger.info(`Auto-selected: ${AVAILABLE_KITS[kit].name}`);
|
|
40740
|
+
} else if (accessibleKits?.length === 1) {
|
|
40741
|
+
kit = accessibleKits[0];
|
|
40742
|
+
logger.info(`Using ${AVAILABLE_KITS[kit].name} (only accessible kit)`);
|
|
40743
|
+
} else {
|
|
40744
|
+
kit = await prompts.selectKit(undefined, accessibleKits);
|
|
40690
40745
|
}
|
|
40691
|
-
kit = await prompts.selectKit();
|
|
40692
40746
|
}
|
|
40693
40747
|
const kitConfig = AVAILABLE_KITS[kit];
|
|
40694
40748
|
logger.info(`Selected kit: ${kitConfig.name}`);
|
|
@@ -40812,20 +40866,6 @@ async function selectVersion2(kit, options, isNonInteractive2, prompts, github)
|
|
|
40812
40866
|
async function projectCreation(kit, resolvedDir, validOptions, isNonInteractive2, prompts) {
|
|
40813
40867
|
const kitConfig = AVAILABLE_KITS[kit];
|
|
40814
40868
|
const github = new GitHubClient;
|
|
40815
|
-
if (!validOptions.useGit) {
|
|
40816
|
-
const spinner = createSpinner("Checking repository access...").start();
|
|
40817
|
-
logger.verbose("GitHub API check", { repo: kitConfig.repo, owner: kitConfig.owner });
|
|
40818
|
-
try {
|
|
40819
|
-
await github.checkAccess(kitConfig);
|
|
40820
|
-
spinner.succeed("Repository access verified");
|
|
40821
|
-
} catch (error) {
|
|
40822
|
-
spinner.fail("Access denied to repository");
|
|
40823
|
-
logger.error(error.message || `Cannot access ${kitConfig.name}`);
|
|
40824
|
-
return null;
|
|
40825
|
-
}
|
|
40826
|
-
} else {
|
|
40827
|
-
logger.verbose("Skipping API access check (--use-git mode)");
|
|
40828
|
-
}
|
|
40829
40869
|
const versionResult = await selectVersion2(kitConfig, validOptions, isNonInteractive2, prompts, github);
|
|
40830
40870
|
if (!versionResult) {
|
|
40831
40871
|
return null;
|
|
@@ -41726,7 +41766,7 @@ var import_picocolors24 = __toESM(require_picocolors(), 1);
|
|
|
41726
41766
|
// package.json
|
|
41727
41767
|
var package_default = {
|
|
41728
41768
|
name: "claudekit-cli",
|
|
41729
|
-
version: "3.
|
|
41769
|
+
version: "3.18.0",
|
|
41730
41770
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
41731
41771
|
type: "module",
|
|
41732
41772
|
repository: {
|