claudekit-cli 3.42.2-dev.5 → 3.42.2-dev.6
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/cli-manifest.json +2 -2
- package/dist/index.js +70 -11
- package/package.json +1 -1
package/cli-manifest.json
CHANGED
package/dist/index.js
CHANGED
|
@@ -43804,6 +43804,26 @@ function repairClaudeNodeCommandPath(cmd, root) {
|
|
|
43804
43804
|
const command = formatCanonicalClaudeCommand(nodePrefix, root, relativePath, suffix);
|
|
43805
43805
|
return { command, changed: command !== cmd, issue: "invalid-format" };
|
|
43806
43806
|
}
|
|
43807
|
+
const absoluteMatch = cmd.match(/^(node\s+)"((?:[A-Za-z]:[/\\]|\/)[^"]*?[/\\]\.claude[/\\][^"]+)"(.*)$/) ?? cmd.match(/^(node\s+)((?:[A-Za-z]:[\\/]|\/)[^\s"]*?[\\/]\.claude[\\/][^\s"]+)(.*)$/);
|
|
43808
|
+
if (absoluteMatch) {
|
|
43809
|
+
const [, nodePrefix, absolutePath, suffix] = absoluteMatch;
|
|
43810
|
+
const normalizedAbsPath = absolutePath.replace(/\\/g, "/");
|
|
43811
|
+
const dotClaudeIdx = normalizedAbsPath.indexOf("/.claude/");
|
|
43812
|
+
if (dotClaudeIdx === -1) {
|
|
43813
|
+
return { command: cmd, changed: false, issue: null };
|
|
43814
|
+
}
|
|
43815
|
+
const isWin2 = process.platform === "win32";
|
|
43816
|
+
const cmp = (s) => isWin2 ? s.toLowerCase() : s;
|
|
43817
|
+
const globalRoots = [
|
|
43818
|
+
`${homedir11().replace(/\\/g, "/").replace(/\/+$/, "")}/.claude/`,
|
|
43819
|
+
`${PathResolver.getGlobalKitDir().replace(/\\/g, "/").replace(/\/+$/, "")}/`
|
|
43820
|
+
];
|
|
43821
|
+
const isUnderGlobal = globalRoots.some((g2) => cmp(normalizedAbsPath).startsWith(cmp(g2)));
|
|
43822
|
+
const resolvedRoot = isUnderGlobal ? "$HOME" : root;
|
|
43823
|
+
const relativePath = normalizedAbsPath.slice(dotClaudeIdx + 1);
|
|
43824
|
+
const command = formatCanonicalClaudeCommand(nodePrefix, resolvedRoot, relativePath, suffix);
|
|
43825
|
+
return { command, changed: command !== cmd, issue: "invalid-format" };
|
|
43826
|
+
}
|
|
43807
43827
|
return { command: cmd, changed: false, issue: null };
|
|
43808
43828
|
}
|
|
43809
43829
|
function normalizeCommand(cmd) {
|
|
@@ -62369,7 +62389,7 @@ var package_default;
|
|
|
62369
62389
|
var init_package = __esm(() => {
|
|
62370
62390
|
package_default = {
|
|
62371
62391
|
name: "claudekit-cli",
|
|
62372
|
-
version: "3.42.2-dev.
|
|
62392
|
+
version: "3.42.2-dev.6",
|
|
62373
62393
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
62374
62394
|
type: "module",
|
|
62375
62395
|
repository: {
|
|
@@ -104868,24 +104888,63 @@ import { mkdir as mkdir34 } from "node:fs/promises";
|
|
|
104868
104888
|
import { join as join135, resolve as resolve38 } from "node:path";
|
|
104869
104889
|
|
|
104870
104890
|
// src/domains/github/kit-access-checker.ts
|
|
104891
|
+
init_error2();
|
|
104871
104892
|
init_logger();
|
|
104872
104893
|
init_safe_spinner();
|
|
104873
104894
|
init_types3();
|
|
104895
|
+
init_types3();
|
|
104874
104896
|
init_github_client();
|
|
104897
|
+
function toGitHubError(error) {
|
|
104898
|
+
if (error instanceof GitHubError) {
|
|
104899
|
+
return error;
|
|
104900
|
+
}
|
|
104901
|
+
const classified = classifyGitHubError(error, "check repository access");
|
|
104902
|
+
const actions = suggestActions(classified.category);
|
|
104903
|
+
const formattedActions = formatActions(actions);
|
|
104904
|
+
const messageParts = [classified.message];
|
|
104905
|
+
if (classified.details) {
|
|
104906
|
+
messageParts.push(`
|
|
104907
|
+
${classified.details}`);
|
|
104908
|
+
}
|
|
104909
|
+
if (formattedActions) {
|
|
104910
|
+
messageParts.push(`
|
|
104911
|
+
Solutions:${formattedActions}`);
|
|
104912
|
+
}
|
|
104913
|
+
messageParts.push(`
|
|
104914
|
+
Need help? Run with: ck new --verbose`);
|
|
104915
|
+
return new GitHubError(messageParts.join(`
|
|
104916
|
+
`), classified.httpStatus);
|
|
104917
|
+
}
|
|
104875
104918
|
async function detectAccessibleKits() {
|
|
104876
104919
|
const spinner = createSpinner("Checking kit access...").start();
|
|
104877
104920
|
const github = new GitHubClient;
|
|
104878
|
-
const
|
|
104879
|
-
|
|
104880
|
-
|
|
104881
|
-
|
|
104882
|
-
return type;
|
|
104883
|
-
} catch {
|
|
104884
|
-
logger.debug(`No access to ${type}`);
|
|
104885
|
-
return null;
|
|
104886
|
-
}
|
|
104921
|
+
const settled = await Promise.allSettled(Object.entries(AVAILABLE_KITS).map(async ([type, config]) => {
|
|
104922
|
+
await github.checkAccess(config);
|
|
104923
|
+
logger.debug(`Access confirmed: ${type}`);
|
|
104924
|
+
return type;
|
|
104887
104925
|
}));
|
|
104888
|
-
const accessible =
|
|
104926
|
+
const accessible = [];
|
|
104927
|
+
const fatalErrors = [];
|
|
104928
|
+
for (const result of settled) {
|
|
104929
|
+
if (result.status === "fulfilled") {
|
|
104930
|
+
accessible.push(result.value);
|
|
104931
|
+
} else {
|
|
104932
|
+
const err = result.reason;
|
|
104933
|
+
const status = err?.statusCode ?? err?.status;
|
|
104934
|
+
if (status === 404) {
|
|
104935
|
+
logger.debug("No access to kit (404)");
|
|
104936
|
+
} else {
|
|
104937
|
+
fatalErrors.push(toGitHubError(err));
|
|
104938
|
+
}
|
|
104939
|
+
}
|
|
104940
|
+
}
|
|
104941
|
+
if (fatalErrors.length > 0) {
|
|
104942
|
+
spinner.fail("Kit access check failed");
|
|
104943
|
+
for (const extra of fatalErrors.slice(1)) {
|
|
104944
|
+
logger.debug(`Additional kit access error (suppressed): ${extra.message}`);
|
|
104945
|
+
}
|
|
104946
|
+
throw fatalErrors[0];
|
|
104947
|
+
}
|
|
104889
104948
|
if (accessible.length === 0) {
|
|
104890
104949
|
spinner.fail("No kit access found");
|
|
104891
104950
|
} else {
|