ccjk 12.0.0 → 12.0.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.
- package/dist/chunks/agent-teams.mjs +17 -18
- package/dist/chunks/agent.mjs +105 -102
- package/dist/chunks/agents.mjs +87 -77
- package/dist/chunks/api-cli.mjs +41 -27
- package/dist/chunks/api-providers.mjs +2 -4
- package/dist/chunks/api.mjs +22 -11
- package/dist/chunks/auto-bootstrap.mjs +3 -5
- package/dist/chunks/auto-init.mjs +3 -4
- package/dist/chunks/auto-updater.mjs +103 -91
- package/dist/chunks/banner.mjs +41 -42
- package/dist/chunks/boost.mjs +30 -31
- package/dist/chunks/ccjk-agents.mjs +6 -9
- package/dist/chunks/ccjk-all.mjs +703 -85
- package/dist/chunks/ccjk-config.mjs +6 -6
- package/dist/chunks/ccjk-hooks.mjs +20 -9
- package/dist/chunks/ccjk-mcp.mjs +64 -52
- package/dist/chunks/ccjk-setup.mjs +35 -25
- package/dist/chunks/ccjk-skills.mjs +51 -41
- package/dist/chunks/ccr.mjs +42 -32
- package/dist/chunks/ccu.mjs +16 -12
- package/dist/chunks/check-updates.mjs +30 -19
- package/dist/chunks/claude-code-config-manager.mjs +25 -10
- package/dist/chunks/claude-code-incremental-manager.mjs +65 -51
- package/dist/chunks/claude-config.mjs +2 -2
- package/dist/chunks/claude-wrapper.mjs +9 -6
- package/dist/chunks/cleanup-migration.mjs +1 -1
- package/dist/chunks/cli-hook.mjs +10 -3
- package/dist/chunks/cloud-sync.mjs +1 -1
- package/dist/chunks/codex-config-switch.mjs +58 -45
- package/dist/chunks/codex-provider-manager.mjs +29 -16
- package/dist/chunks/codex-uninstaller.mjs +5 -6
- package/dist/chunks/codex.mjs +89 -89
- package/dist/chunks/commands.mjs +28 -29
- package/dist/chunks/commands2.mjs +4 -3
- package/dist/chunks/commit.mjs +42 -23
- package/dist/chunks/completion.mjs +46 -47
- package/dist/chunks/config-consolidator.mjs +12 -13
- package/dist/chunks/config-switch.mjs +66 -53
- package/dist/chunks/config.mjs +10 -10
- package/dist/chunks/config2.mjs +53 -42
- package/dist/chunks/config3.mjs +107 -93
- package/dist/chunks/constants.mjs +2 -4
- package/dist/chunks/context-loader.mjs +5 -4
- package/dist/chunks/context.mjs +77 -76
- package/dist/chunks/convoy-manager.mjs +4 -4
- package/dist/chunks/dashboard.mjs +28 -29
- package/dist/chunks/doctor.mjs +68 -54
- package/dist/chunks/evolution.mjs +37 -38
- package/dist/chunks/features.mjs +103 -92
- package/dist/chunks/fs-operations.mjs +1 -1
- package/dist/chunks/health-alerts.mjs +1 -1
- package/dist/chunks/health-check.mjs +1 -1
- package/dist/chunks/help.mjs +117 -116
- package/dist/chunks/hook-installer.mjs +3 -2
- package/dist/chunks/index.mjs +20 -6
- package/dist/chunks/index10.mjs +1171 -0
- package/dist/chunks/index11.mjs +1008 -0
- package/dist/chunks/index12.mjs +193 -0
- package/dist/chunks/index13.mjs +218 -0
- package/dist/chunks/index14.mjs +663 -0
- package/dist/chunks/index2.mjs +19 -10
- package/dist/chunks/index3.mjs +19079 -164
- package/dist/chunks/index4.mjs +8 -1171
- package/dist/chunks/index5.mjs +7479 -884
- package/dist/chunks/index6.mjs +160 -184
- package/dist/chunks/index7.mjs +3573 -653
- package/dist/chunks/index8.mjs +19 -0
- package/dist/chunks/index9.mjs +616 -0
- package/dist/chunks/init.mjs +173 -173
- package/dist/chunks/installer.mjs +92 -82
- package/dist/chunks/installer2.mjs +3 -2
- package/dist/chunks/interview.mjs +118 -107
- package/dist/chunks/json-config.mjs +3 -2
- package/dist/chunks/linux.mjs +3863 -0
- package/dist/chunks/macos.mjs +69 -0
- package/dist/chunks/main.mjs +635 -0
- package/dist/chunks/marketplace.mjs +69 -66
- package/dist/chunks/mcp-cli.mjs +61 -48
- package/dist/chunks/mcp.mjs +140 -127
- package/dist/chunks/menu.mjs +85 -85
- package/dist/chunks/metrics-display.mjs +41 -40
- package/dist/chunks/migrator.mjs +4 -5
- package/dist/chunks/monitor.mjs +95 -95
- package/dist/chunks/notification.mjs +151 -141
- package/dist/chunks/onboarding.mjs +26 -15
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/paradigm.mjs +24 -23
- package/dist/chunks/permission-manager.mjs +10 -11
- package/dist/chunks/permissions.mjs +72 -57
- package/dist/chunks/persistence-manager.mjs +97 -84
- package/dist/chunks/persistence.mjs +1 -1
- package/dist/chunks/platform.mjs +29 -29
- package/dist/chunks/plugin.mjs +104 -105
- package/dist/chunks/prompts.mjs +36 -25
- package/dist/chunks/providers.mjs +68 -69
- package/dist/chunks/quick-actions.mjs +71 -72
- package/dist/chunks/quick-provider.mjs +56 -40
- package/dist/chunks/quick-setup.mjs +71 -60
- package/dist/chunks/remote.mjs +21 -12
- package/dist/chunks/session.mjs +116 -103
- package/dist/chunks/sessions.mjs +29 -28
- package/dist/chunks/silent-updater.mjs +8 -10
- package/dist/chunks/simple-config.mjs +13 -10
- package/dist/chunks/skill.mjs +8560 -103
- package/dist/chunks/skills-sync.mjs +5212 -79
- package/dist/chunks/skills.mjs +105 -94
- package/dist/chunks/slash-commands.mjs +36 -37
- package/dist/chunks/smart-defaults.mjs +7 -3
- package/dist/chunks/smart-guide.mjs +1 -1
- package/dist/chunks/startup.mjs +2 -4
- package/dist/chunks/stats.mjs +41 -42
- package/dist/chunks/status.mjs +49 -50
- package/dist/chunks/team.mjs +24 -12
- package/dist/chunks/thinking.mjs +74 -63
- package/dist/chunks/trace.mjs +20 -19
- package/dist/chunks/uninstall.mjs +69 -56
- package/dist/chunks/update.mjs +39 -28
- package/dist/chunks/upgrade-manager.mjs +24 -18
- package/dist/chunks/version-checker.mjs +45 -41
- package/dist/chunks/vim.mjs +81 -69
- package/dist/chunks/windows.mjs +14 -0
- package/dist/chunks/workflows.mjs +15 -15
- package/dist/chunks/wsl.mjs +129 -0
- package/dist/chunks/zero-config.mjs +45 -34
- package/dist/cli.mjs +20 -20
- package/dist/index.mjs +41 -31
- package/dist/shared/ccjk.BAGoDD49.mjs +36 -0
- package/dist/shared/ccjk.BBtCGd_g.mjs +899 -0
- package/dist/shared/{ccjk.CGcy7cNM.mjs → ccjk.BDKUdmLk.mjs} +1 -1
- package/dist/shared/{ccjk.DtMBiwVG.mjs → ccjk.BFxsJM0k.mjs} +1 -1
- package/dist/shared/{ccjk.j4uut26D.mjs → ccjk.BIxuVL3_.mjs} +5 -5
- package/dist/shared/ccjk.BRZ9ww8S.mjs +142 -0
- package/dist/shared/{ccjk.CN0edl87.mjs → ccjk.BSYWk9ML.mjs} +1 -1
- package/dist/shared/{ccjk.Dk1HDseQ.mjs → ccjk.BnpWvs9V.mjs} +75 -75
- package/dist/shared/ccjk.BoApaI4j.mjs +28 -0
- package/dist/shared/{ccjk.DKojSRzw.mjs → ccjk.BrPUmTqm.mjs} +1 -1
- package/dist/shared/{ccjk.C10pepYx.mjs → ccjk.BxSmJ8B7.mjs} +1 -1
- package/dist/shared/ccjk.Bx_rmYfN.mjs +69 -0
- package/dist/shared/ccjk.COweQ1RR.mjs +5 -0
- package/dist/shared/{ccjk.BN90X6oc.mjs → ccjk.CePkJq2S.mjs} +17 -17
- package/dist/shared/{ccjk.Bvoex4TZ.mjs → ccjk.CfKKcvWy.mjs} +1 -1
- package/dist/shared/ccjk.Cjgrln_h.mjs +297 -0
- package/dist/shared/ccjk.CxpGa6MC.mjs +2724 -0
- package/dist/shared/{ccjk.DfwJOEok.mjs → ccjk.D5MFQT7w.mjs} +1 -1
- package/dist/shared/{ccjk.cChAaGgT.mjs → ccjk.DG_o24cZ.mjs} +6 -6
- package/dist/shared/{ccjk.bhFAMRyc.mjs → ccjk.DLLw-h4Y.mjs} +32 -32
- package/dist/shared/ccjk.DOwtZMk8.mjs +4019 -0
- package/dist/shared/{ccjk.BsXQugfY.mjs → ccjk.DTdjs-qK.mjs} +13 -13
- package/dist/shared/{ccjk.Bdhyg3X-.mjs → ccjk.DsYaCCx4.mjs} +1 -1
- package/dist/shared/ccjk.KfSWcGlE.mjs +38 -0
- package/dist/shared/ccjk.RyizuzOI.mjs +21 -0
- package/dist/shared/{ccjk.h7_W-wTs.mjs → ccjk.SPoXMvZD.mjs} +1 -1
- package/dist/shared/ccjk.T_cX87dY.mjs +15 -0
- package/dist/shared/{ccjk.CrB6OYHv.mjs → ccjk._dESH4Rk.mjs} +2 -2
- package/dist/shared/ccjk.bQ7Dh1g4.mjs +249 -0
- package/dist/shared/{ccjk.CBhIZiPz.mjs → ccjk.hoqrwWdN.mjs} +1 -1
- package/dist/shared/{ccjk.BNwRnWYx.mjs → ccjk.s7OCVzdd.mjs} +1230 -33
- package/dist/shared/{ccjk.BOIUTf5z.mjs → ccjk.waa2ikKJ.mjs} +8 -9
- package/package.json +31 -30
- package/dist/shared/ccjk.DHbrGcgg.mjs +0 -13
- package/dist/shared/ccjk.DntgA8fQ.mjs +0 -42
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { existsSync, readFileSync, mkdirSync, unlinkSync } from 'node:fs';
|
|
2
2
|
import os__default, { homedir } from 'node:os';
|
|
3
|
-
import { join } from 'pathe';
|
|
4
3
|
import { writeFileAtomic } from '../chunks/fs-operations.mjs';
|
|
5
4
|
import { Buffer } from 'node:buffer';
|
|
6
5
|
import crypto from 'node:crypto';
|
|
6
|
+
import { j as join } from './ccjk.bQ7Dh1g4.mjs';
|
|
7
7
|
|
|
8
8
|
const TOKEN_PREFIX = "ccjk_";
|
|
9
9
|
const TOKEN_LENGTH = 64;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import process__default from 'node:process';
|
|
2
|
-
import
|
|
3
|
-
import { ensureI18nInitialized, i18n } from '../chunks/
|
|
2
|
+
import a from '../chunks/index2.mjs';
|
|
3
|
+
import { ensureI18nInitialized, i18n } from '../chunks/index5.mjs';
|
|
4
4
|
|
|
5
5
|
function handleExitPromptError(error) {
|
|
6
6
|
const isExitError = error instanceof Error && (error.name === "ExitPromptError" || error.message?.includes("ExitPromptError") || error.message?.includes("User force closed the prompt"));
|
|
7
7
|
if (isExitError) {
|
|
8
8
|
ensureI18nInitialized();
|
|
9
|
-
console.log(
|
|
9
|
+
console.log(a.green(`
|
|
10
10
|
${i18n.t("common:goodbye")}
|
|
11
11
|
`));
|
|
12
12
|
process__default.exit(0);
|
|
@@ -15,9 +15,9 @@ ${i18n.t("common:goodbye")}
|
|
|
15
15
|
}
|
|
16
16
|
function handleGeneralError(error) {
|
|
17
17
|
ensureI18nInitialized();
|
|
18
|
-
console.error(
|
|
18
|
+
console.error(a.red(`${i18n.t("errors:generalError")}:`), error);
|
|
19
19
|
if (error instanceof Error) {
|
|
20
|
-
console.error(
|
|
20
|
+
console.error(a.gray(`${i18n.t("errors:stackTrace")}: ${error.stack}`));
|
|
21
21
|
}
|
|
22
22
|
process__default.exit(1);
|
|
23
23
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import fs__default, { promises } from 'node:fs';
|
|
2
|
+
import path__default from 'node:path';
|
|
3
|
+
import process__default from 'node:process';
|
|
4
|
+
import { globby } from 'globby';
|
|
5
|
+
|
|
6
|
+
function isPathInside(childPath, parentPath) {
|
|
7
|
+
const relation = path__default.relative(parentPath, childPath);
|
|
8
|
+
|
|
9
|
+
return Boolean(
|
|
10
|
+
relation &&
|
|
11
|
+
relation !== '..' &&
|
|
12
|
+
!relation.startsWith(`..${path__default.sep}`) &&
|
|
13
|
+
relation !== path__default.resolve(childPath)
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async function trash(paths, options = {}) {
|
|
18
|
+
paths = [paths].flat().map(String);
|
|
19
|
+
|
|
20
|
+
const {glob = true} = options;
|
|
21
|
+
|
|
22
|
+
if (glob) {
|
|
23
|
+
// Normalize '/**' patterns to their base directory
|
|
24
|
+
const patterns = paths.map(pattern => {
|
|
25
|
+
const isNegated = pattern.startsWith('!');
|
|
26
|
+
const body = isNegated ? pattern.slice(1) : pattern;
|
|
27
|
+
const normalized = body.endsWith('/**') ? path__default.dirname(body) : body;
|
|
28
|
+
return isNegated ? '!' + normalized : normalized;
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const matches = await globby(patterns, {
|
|
32
|
+
expandDirectories: false,
|
|
33
|
+
onlyFiles: false,
|
|
34
|
+
followSymbolicLinks: false,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Include literal paths that exist
|
|
38
|
+
const literals = await Promise.all(paths.map(async p => {
|
|
39
|
+
try {
|
|
40
|
+
await fs__default.promises.lstat(p);
|
|
41
|
+
return p;
|
|
42
|
+
} catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}));
|
|
46
|
+
|
|
47
|
+
paths = [...new Set([...matches, ...literals.filter(Boolean)])];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Filter out nested paths and resolve
|
|
51
|
+
const pathChecks = await Promise.all(paths.map(async filePath => {
|
|
52
|
+
// Skip if nested in another path
|
|
53
|
+
if (paths.some(p => p !== filePath && isPathInside(filePath, p))) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
await fs__default.promises.lstat(filePath);
|
|
59
|
+
return path__default.resolve(filePath);
|
|
60
|
+
} catch (error) {
|
|
61
|
+
// Ignore non-existent paths
|
|
62
|
+
if (error.code !== 'ENOENT') {
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}));
|
|
67
|
+
|
|
68
|
+
const resolvedPaths = pathChecks.filter(Boolean);
|
|
69
|
+
|
|
70
|
+
if (resolvedPaths.length === 0) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const {default: trashFunction} = await platformSpecificImplementation();
|
|
75
|
+
return trashFunction(resolvedPaths);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// We use static imports so it can be statically analyzed.
|
|
79
|
+
async function platformSpecificImplementation() {
|
|
80
|
+
switch (process__default.platform) {
|
|
81
|
+
case 'darwin': {
|
|
82
|
+
return import('../chunks/macos.mjs');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
case 'win32': {
|
|
86
|
+
return import('../chunks/windows.mjs');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
case 'linux': {
|
|
90
|
+
const {isWsl} = await import('../chunks/index13.mjs');
|
|
91
|
+
if (isWsl) {
|
|
92
|
+
return import('../chunks/wsl.mjs');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return import('../chunks/linux.mjs');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
default: {
|
|
99
|
+
return import('../chunks/linux.mjs');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async function pathExists(p) {
|
|
105
|
+
try {
|
|
106
|
+
await promises.access(p);
|
|
107
|
+
return true;
|
|
108
|
+
} catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async function moveToTrash(paths) {
|
|
113
|
+
const pathArray = Array.isArray(paths) ? paths : [paths];
|
|
114
|
+
const results = [];
|
|
115
|
+
for (const path of pathArray) {
|
|
116
|
+
try {
|
|
117
|
+
const exists = await pathExists(path);
|
|
118
|
+
if (!exists) {
|
|
119
|
+
results.push({
|
|
120
|
+
success: false,
|
|
121
|
+
path,
|
|
122
|
+
error: "Path does not exist"
|
|
123
|
+
});
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
await trash(path);
|
|
127
|
+
results.push({
|
|
128
|
+
success: true,
|
|
129
|
+
path
|
|
130
|
+
});
|
|
131
|
+
} catch (error) {
|
|
132
|
+
results.push({
|
|
133
|
+
success: false,
|
|
134
|
+
path,
|
|
135
|
+
error: error.message || "Unknown error occurred"
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return results;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export { moveToTrash as m };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { detectCodeToolType } from '../chunks/smart-defaults.mjs';
|
|
2
2
|
import { DEFAULT_CODE_TOOL_TYPE } from '../chunks/constants.mjs';
|
|
3
|
-
import { i18n } from '../chunks/
|
|
3
|
+
import { i18n } from '../chunks/index5.mjs';
|
|
4
4
|
import { readZcfConfigAsync } from '../chunks/ccjk-config.mjs';
|
|
5
5
|
|
|
6
6
|
const CODE_TYPE_ABBREVIATIONS = {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import inquirer from '
|
|
1
|
+
import a from '../chunks/index2.mjs';
|
|
2
|
+
import { i as inquirer } from '../chunks/index3.mjs';
|
|
3
3
|
import { CLAUDE_DIR, SETTINGS_FILE } from '../chunks/constants.mjs';
|
|
4
|
-
import { ensureI18nInitialized, i18n } from '../chunks/
|
|
4
|
+
import { ensureI18nInitialized, i18n } from '../chunks/index5.mjs';
|
|
5
5
|
import { e as getExistingApiConfig, f as configureApi, s as switchToOfficialLogin, b as backupExistingConfig, a as applyAiLanguageDirective } from '../chunks/config.mjs';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import { join, dirname } from 'pathe';
|
|
8
7
|
import { updateZcfConfig } from '../chunks/ccjk-config.mjs';
|
|
9
8
|
import { exists, removeFile, ensureDir, copyFile } from '../chunks/fs-operations.mjs';
|
|
10
9
|
import { readJsonConfig, writeJsonConfig } from '../chunks/json-config.mjs';
|
|
11
10
|
import { m as mergeAndCleanPermissions } from './ccjk.BiCrMV5O.mjs';
|
|
12
11
|
import { a as addNumbersToChoices } from './ccjk.BFQ7yr5S.mjs';
|
|
13
|
-
import { p as promptBoolean } from './ccjk.
|
|
12
|
+
import { p as promptBoolean } from './ccjk.DOwtZMk8.mjs';
|
|
13
|
+
import { j as join, d as dirname } from './ccjk.bQ7Dh1g4.mjs';
|
|
14
14
|
import { existsSync } from 'node:fs';
|
|
15
15
|
import { rm, mkdir, copyFile as copyFile$1 } from 'node:fs/promises';
|
|
16
16
|
|
|
@@ -86,8 +86,8 @@ async function copyOutputStyles(selectedStyles, lang) {
|
|
|
86
86
|
const BUILTIN_STYLE_IDS = /* @__PURE__ */ new Set(["default", "explanatory", "learning"]);
|
|
87
87
|
function setGlobalDefaultOutputStyle(styleId) {
|
|
88
88
|
if (BUILTIN_STYLE_IDS.has(styleId)) {
|
|
89
|
-
console.log(
|
|
90
|
-
console.log(
|
|
89
|
+
console.log(a.yellow(`\u26A0\uFE0F Note: Built-in output styles (${styleId}) are deprecated in Claude Code 2.1+.`));
|
|
90
|
+
console.log(a.gray(" Custom styles (linus-mode, etc.) stored as .md files are still fully supported."));
|
|
91
91
|
}
|
|
92
92
|
const templatePermissions = getTemplatePermissions();
|
|
93
93
|
const existingSettings = readJsonConfig(SETTINGS_FILE) || {};
|
|
@@ -195,14 +195,14 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
195
195
|
];
|
|
196
196
|
const availableStyles = getAvailableOutputStyles();
|
|
197
197
|
if (hasLegacyPersonalityFiles() && !preselectedStyles) {
|
|
198
|
-
console.log(
|
|
198
|
+
console.log(a.yellow(`\u26A0\uFE0F ${i18n.t("configuration:legacyFilesDetected")}`));
|
|
199
199
|
const cleanupLegacy = await promptBoolean({
|
|
200
200
|
message: i18n.t("configuration:cleanupLegacyFiles"),
|
|
201
201
|
defaultValue: true
|
|
202
202
|
});
|
|
203
203
|
if (cleanupLegacy) {
|
|
204
204
|
cleanupLegacyPersonalityFiles();
|
|
205
|
-
console.log(
|
|
205
|
+
console.log(a.green(`\u2714 ${i18n.t("configuration:legacyFilesRemoved")}`));
|
|
206
206
|
}
|
|
207
207
|
} else if (hasLegacyPersonalityFiles() && preselectedStyles) {
|
|
208
208
|
cleanupLegacyPersonalityFiles();
|
|
@@ -221,7 +221,7 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
221
221
|
choices: addNumbersToChoices(customStyles.map((style) => {
|
|
222
222
|
const styleInfo = outputStyleList.find((s) => s.id === style.id);
|
|
223
223
|
return {
|
|
224
|
-
name: `${styleInfo?.name || style.id} - ${
|
|
224
|
+
name: `${styleInfo?.name || style.id} - ${a.gray(styleInfo?.description || "")}`,
|
|
225
225
|
value: style.id,
|
|
226
226
|
checked: true
|
|
227
227
|
// Default to all selected
|
|
@@ -230,7 +230,7 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
230
230
|
validate: async (input) => input.length > 0 || i18n.t("configuration:selectAtLeastOne")
|
|
231
231
|
});
|
|
232
232
|
if (!promptedStyles || promptedStyles.length === 0) {
|
|
233
|
-
console.log(
|
|
233
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
234
234
|
return;
|
|
235
235
|
}
|
|
236
236
|
selectedStyles = promptedStyles;
|
|
@@ -243,7 +243,7 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
243
243
|
...selectedStyles.map((styleId) => {
|
|
244
244
|
const styleInfo = outputStyleList.find((s) => s.id === styleId);
|
|
245
245
|
return {
|
|
246
|
-
name: `${styleInfo?.name || styleId} - ${
|
|
246
|
+
name: `${styleInfo?.name || styleId} - ${a.gray(styleInfo?.description || "")}`,
|
|
247
247
|
value: styleId,
|
|
248
248
|
short: styleInfo?.name || styleId
|
|
249
249
|
};
|
|
@@ -252,7 +252,7 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
252
252
|
...availableStyles.filter((style) => !style.isCustom).map((style) => {
|
|
253
253
|
const styleInfo = outputStyleList.find((s) => s.id === style.id);
|
|
254
254
|
return {
|
|
255
|
-
name: `${styleInfo?.name || style.id} - ${
|
|
255
|
+
name: `${styleInfo?.name || style.id} - ${a.gray(styleInfo?.description || "")}`,
|
|
256
256
|
value: style.id,
|
|
257
257
|
short: styleInfo?.name || style.id
|
|
258
258
|
};
|
|
@@ -261,7 +261,7 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
261
261
|
default: selectedStyles.includes("linus-mode") ? "linus-mode" : selectedStyles[0]
|
|
262
262
|
});
|
|
263
263
|
if (!promptedDefault) {
|
|
264
|
-
console.log(
|
|
264
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
267
|
defaultStyle = promptedDefault;
|
|
@@ -272,9 +272,9 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
|
|
|
272
272
|
outputStyles: selectedStyles,
|
|
273
273
|
defaultOutputStyle: defaultStyle
|
|
274
274
|
});
|
|
275
|
-
console.log(
|
|
276
|
-
console.log(
|
|
277
|
-
console.log(
|
|
275
|
+
console.log(a.green(`\u2714 ${i18n.t("configuration:outputStyleInstalled")}`));
|
|
276
|
+
console.log(a.gray(` ${i18n.t("configuration:selectedStyles")}: ${selectedStyles.join(", ")}`));
|
|
277
|
+
console.log(a.gray(` ${i18n.t("configuration:defaultStyle")}: ${defaultStyle}`));
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
function validateApiKey(apiKey) {
|
|
@@ -310,19 +310,19 @@ async function configureApiCompletely(preselectedAuthType) {
|
|
|
310
310
|
short: i18n.t("api:useOfficialLogin")
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
|
-
name: `${i18n.t("api:useAuthToken")} - ${
|
|
313
|
+
name: `${i18n.t("api:useAuthToken")} - ${a.gray(i18n.t("api:authTokenDesc"))}`,
|
|
314
314
|
value: "auth_token",
|
|
315
315
|
short: i18n.t("api:useAuthToken")
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
|
-
name: `${i18n.t("api:useApiKey")} - ${
|
|
318
|
+
name: `${i18n.t("api:useApiKey")} - ${a.gray(i18n.t("api:apiKeyDesc"))}`,
|
|
319
319
|
value: "api_key",
|
|
320
320
|
short: i18n.t("api:useApiKey")
|
|
321
321
|
}
|
|
322
322
|
])
|
|
323
323
|
});
|
|
324
324
|
if (!selectedAuthType) {
|
|
325
|
-
console.log(
|
|
325
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
326
326
|
return null;
|
|
327
327
|
}
|
|
328
328
|
authType = selectedAuthType;
|
|
@@ -332,7 +332,7 @@ async function configureApiCompletely(preselectedAuthType) {
|
|
|
332
332
|
if (success) {
|
|
333
333
|
return null;
|
|
334
334
|
} else {
|
|
335
|
-
console.log(
|
|
335
|
+
console.log(a.red(i18n.t("api:officialLoginFailed")));
|
|
336
336
|
return null;
|
|
337
337
|
}
|
|
338
338
|
}
|
|
@@ -352,7 +352,7 @@ async function configureApiCompletely(preselectedAuthType) {
|
|
|
352
352
|
}
|
|
353
353
|
});
|
|
354
354
|
if (url === void 0) {
|
|
355
|
-
console.log(
|
|
355
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
356
356
|
return null;
|
|
357
357
|
}
|
|
358
358
|
const keyMessage = authType === "auth_token" ? i18n.t("api:enterAuthToken") : i18n.t("api:enterApiKey");
|
|
@@ -372,10 +372,10 @@ async function configureApiCompletely(preselectedAuthType) {
|
|
|
372
372
|
}
|
|
373
373
|
});
|
|
374
374
|
if (key === void 0) {
|
|
375
|
-
console.log(
|
|
375
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
376
376
|
return null;
|
|
377
377
|
}
|
|
378
|
-
console.log(
|
|
378
|
+
console.log(a.gray(` API Key: ${formatApiKeyDisplay(key)}`));
|
|
379
379
|
return { url, key, authType };
|
|
380
380
|
}
|
|
381
381
|
async function modifyApiConfigPartially(existingConfig) {
|
|
@@ -396,7 +396,7 @@ async function modifyApiConfigPartially(existingConfig) {
|
|
|
396
396
|
])
|
|
397
397
|
});
|
|
398
398
|
if (!item) {
|
|
399
|
-
console.log(
|
|
399
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
400
400
|
return;
|
|
401
401
|
}
|
|
402
402
|
if (item === "url") {
|
|
@@ -417,14 +417,14 @@ async function modifyApiConfigPartially(existingConfig) {
|
|
|
417
417
|
}
|
|
418
418
|
});
|
|
419
419
|
if (url === void 0) {
|
|
420
|
-
console.log(
|
|
420
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
421
421
|
return;
|
|
422
422
|
}
|
|
423
423
|
currentConfig.url = url;
|
|
424
424
|
const savedConfig = configureApi(currentConfig);
|
|
425
425
|
if (savedConfig) {
|
|
426
|
-
console.log(
|
|
427
|
-
console.log(
|
|
426
|
+
console.log(a.green(`\u2714 ${i18n.t("api:modificationSaved")}`));
|
|
427
|
+
console.log(a.gray(` ${i18n.t("api:apiConfigUrl")}: ${savedConfig.url}`));
|
|
428
428
|
}
|
|
429
429
|
} else if (item === "key") {
|
|
430
430
|
const authType = currentConfig.authType || "auth_token";
|
|
@@ -445,14 +445,14 @@ async function modifyApiConfigPartially(existingConfig) {
|
|
|
445
445
|
}
|
|
446
446
|
});
|
|
447
447
|
if (key === void 0) {
|
|
448
|
-
console.log(
|
|
448
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
449
449
|
return;
|
|
450
450
|
}
|
|
451
451
|
currentConfig.key = key;
|
|
452
452
|
const savedConfig = configureApi(currentConfig);
|
|
453
453
|
if (savedConfig) {
|
|
454
|
-
console.log(
|
|
455
|
-
console.log(
|
|
454
|
+
console.log(a.green(`\u2714 ${i18n.t("api:modificationSaved")}`));
|
|
455
|
+
console.log(a.gray(` ${i18n.t("api:apiConfigKey")}: ${formatApiKeyDisplay(savedConfig.key)}`));
|
|
456
456
|
}
|
|
457
457
|
} else if (item === "authType") {
|
|
458
458
|
const { authType } = await inquirer.prompt({
|
|
@@ -466,14 +466,14 @@ async function modifyApiConfigPartially(existingConfig) {
|
|
|
466
466
|
default: currentConfig.authType === "api_key" ? 1 : 0
|
|
467
467
|
});
|
|
468
468
|
if (authType === void 0) {
|
|
469
|
-
console.log(
|
|
469
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
470
470
|
return;
|
|
471
471
|
}
|
|
472
472
|
currentConfig.authType = authType;
|
|
473
473
|
const savedConfig = configureApi(currentConfig);
|
|
474
474
|
if (savedConfig) {
|
|
475
|
-
console.log(
|
|
476
|
-
console.log(
|
|
475
|
+
console.log(a.green(`\u2714 ${i18n.t("api:modificationSaved")}`));
|
|
476
|
+
console.log(a.gray(` ${i18n.t("api:apiConfigAuthType")}: ${savedConfig.authType}`));
|
|
477
477
|
}
|
|
478
478
|
}
|
|
479
479
|
}
|
|
@@ -481,15 +481,15 @@ async function updatePromptOnly(aiOutputLang) {
|
|
|
481
481
|
ensureI18nInitialized();
|
|
482
482
|
const backupDir = backupExistingConfig();
|
|
483
483
|
if (backupDir) {
|
|
484
|
-
console.log(
|
|
484
|
+
console.log(a.gray(`\u2714 ${i18n.t("configuration:backupSuccess")}: ${backupDir}`));
|
|
485
485
|
}
|
|
486
486
|
if (aiOutputLang) {
|
|
487
487
|
applyAiLanguageDirective(aiOutputLang);
|
|
488
488
|
}
|
|
489
489
|
await configureOutputStyle();
|
|
490
|
-
console.log(
|
|
490
|
+
console.log(a.green(`\u2714 ${i18n.t("configuration:configSuccess")} ${CLAUDE_DIR}`));
|
|
491
491
|
console.log(`
|
|
492
|
-
${
|
|
492
|
+
${a.green(i18n.t("common:complete"))}`);
|
|
493
493
|
}
|
|
494
494
|
|
|
495
495
|
const WORKFLOW_CONFIG_BASE = [
|
|
@@ -788,46 +788,46 @@ function displayMigrationResult(result) {
|
|
|
788
788
|
ensureI18nInitialized();
|
|
789
789
|
if (result.success) {
|
|
790
790
|
if (result.changes.length > 0) {
|
|
791
|
-
console.log(
|
|
791
|
+
console.log(a.green(`
|
|
792
792
|
\u2705 ${i18n.t("common:configurationFixed")}
|
|
793
793
|
`));
|
|
794
|
-
console.log(
|
|
794
|
+
console.log(a.bold("Changes made:"));
|
|
795
795
|
for (const change of result.changes) {
|
|
796
|
-
console.log(
|
|
796
|
+
console.log(a.gray(` \u2022 ${change}`));
|
|
797
797
|
}
|
|
798
798
|
if (result.backupPath) {
|
|
799
|
-
console.log(
|
|
799
|
+
console.log(a.gray(`
|
|
800
800
|
\u{1F4E6} Backup created: ${result.backupPath}`));
|
|
801
801
|
}
|
|
802
|
-
console.log(
|
|
802
|
+
console.log(a.yellow("\n\u26A0\uFE0F Please restart Claude Code CLI for changes to take effect.\n"));
|
|
803
803
|
} else {
|
|
804
|
-
console.log(
|
|
804
|
+
console.log(a.green(`
|
|
805
805
|
\u2705 ${i18n.t("common:noMigrationNeeded")}
|
|
806
806
|
`));
|
|
807
807
|
}
|
|
808
808
|
} else {
|
|
809
|
-
console.log(
|
|
809
|
+
console.log(a.red(`
|
|
810
810
|
\u274C ${i18n.t("common:migrationFailed")}
|
|
811
811
|
`));
|
|
812
812
|
if (result.errors.length > 0) {
|
|
813
|
-
console.log(
|
|
813
|
+
console.log(a.bold("Errors:"));
|
|
814
814
|
for (const error of result.errors) {
|
|
815
|
-
console.log(
|
|
815
|
+
console.log(a.red(` \u2022 ${error}`));
|
|
816
816
|
}
|
|
817
817
|
}
|
|
818
818
|
if (result.backupPath) {
|
|
819
|
-
console.log(
|
|
819
|
+
console.log(a.gray(`
|
|
820
820
|
\u{1F4E6} Backup available at: ${result.backupPath}`));
|
|
821
|
-
console.log(
|
|
821
|
+
console.log(a.gray("You can restore with: cp <backup-path>/settings.json ~/.claude/settings.json\n"));
|
|
822
822
|
}
|
|
823
823
|
}
|
|
824
824
|
}
|
|
825
825
|
async function promptMigration() {
|
|
826
826
|
ensureI18nInitialized();
|
|
827
|
-
const inquirer = await import('
|
|
828
|
-
console.log(
|
|
829
|
-
console.log(
|
|
830
|
-
console.log(
|
|
827
|
+
const inquirer = await import('../chunks/index3.mjs').then(function (n) { return n.c; });
|
|
828
|
+
console.log(a.yellow("\n\u26A0\uFE0F Problematic configuration detected!\n"));
|
|
829
|
+
console.log(a.gray("Your settings.json contains configurations that prevent Claude Code"));
|
|
830
|
+
console.log(a.gray("from retrieving token counts, causing /compact failures.\n"));
|
|
831
831
|
const { shouldMigrate } = await inquirer.default.prompt({
|
|
832
832
|
type: "confirm",
|
|
833
833
|
name: "shouldMigrate",
|
|
@@ -846,18 +846,18 @@ const DEFAULT_CODE_TOOL_TEMPLATE = "claude-code";
|
|
|
846
846
|
const COMMON_TEMPLATE_CATEGORIES = ["git", "sixStep", "essential", "interview", "specFirstTDD", "continuousDelivery", "refactoringMaster", "linearMethod"];
|
|
847
847
|
function formatTags(tags) {
|
|
848
848
|
const tagColors = {
|
|
849
|
-
recommended: (text) =>
|
|
850
|
-
popular: (text) =>
|
|
851
|
-
new: (text) =>
|
|
852
|
-
essential: (text) =>
|
|
853
|
-
professional: (text) =>
|
|
849
|
+
recommended: (text) => a.bgGreen.black(` ${text} `),
|
|
850
|
+
popular: (text) => a.bgYellow.black(` ${text} `),
|
|
851
|
+
new: (text) => a.bgCyan.black(` ${text} `),
|
|
852
|
+
essential: (text) => a.bgBlue.white(` ${text} `),
|
|
853
|
+
professional: (text) => a.bgMagenta.white(` ${text} `)
|
|
854
854
|
};
|
|
855
855
|
return tags.map((tag) => tagColors[tag](getTagLabel(tag))).join(" ");
|
|
856
856
|
}
|
|
857
857
|
function buildWorkflowChoice(workflow) {
|
|
858
858
|
const tags = formatTags(workflow.metadata.tags);
|
|
859
|
-
const stats = workflow.stats ?
|
|
860
|
-
const description = workflow.description ?
|
|
859
|
+
const stats = workflow.stats ? a.dim(workflow.stats) : "";
|
|
860
|
+
const description = workflow.description ? a.gray(workflow.description) : "";
|
|
861
861
|
const nameLine = `${workflow.name} ${tags}`;
|
|
862
862
|
const detailLine = stats ? ` ${stats}` : "";
|
|
863
863
|
const descLine = description ? ` ${description}` : "";
|
|
@@ -877,9 +877,9 @@ async function selectAndInstallWorkflows(configLang, preselectedWorkflows) {
|
|
|
877
877
|
selectedWorkflows = preselectedWorkflows;
|
|
878
878
|
} else {
|
|
879
879
|
console.log("");
|
|
880
|
-
console.log(
|
|
881
|
-
console.log(
|
|
882
|
-
console.log(
|
|
880
|
+
console.log(a.bold.cyan("\u2501".repeat(60)));
|
|
881
|
+
console.log(a.bold.white(` \u{1F680} ${i18n.t("workflow:selectWorkflowType")}`));
|
|
882
|
+
console.log(a.bold.cyan("\u2501".repeat(60)));
|
|
883
883
|
console.log("");
|
|
884
884
|
const response = await inquirer.prompt({
|
|
885
885
|
type: "checkbox",
|
|
@@ -891,7 +891,7 @@ async function selectAndInstallWorkflows(configLang, preselectedWorkflows) {
|
|
|
891
891
|
selectedWorkflows = response.selectedWorkflows;
|
|
892
892
|
}
|
|
893
893
|
if (!selectedWorkflows || selectedWorkflows.length === 0) {
|
|
894
|
-
console.log(
|
|
894
|
+
console.log(a.yellow(i18n.t("common:cancelled")));
|
|
895
895
|
return;
|
|
896
896
|
}
|
|
897
897
|
await cleanupOldVersionFiles();
|
|
@@ -923,7 +923,7 @@ async function installWorkflowWithDependencies(config, configLang) {
|
|
|
923
923
|
linearMethod: i18n.t("workflow:workflowOption.linearMethod")
|
|
924
924
|
};
|
|
925
925
|
const workflowName = WORKFLOW_OPTION_KEYS[config.id] || config.id;
|
|
926
|
-
console.log(
|
|
926
|
+
console.log(a.green(`
|
|
927
927
|
\u{1F4E6} ${i18n.t("workflow:installingWorkflow")}: ${workflowName}...`));
|
|
928
928
|
const commandsDir = join(CLAUDE_DIR, "commands", "ccjk");
|
|
929
929
|
if (!existsSync(commandsDir)) {
|
|
@@ -955,11 +955,11 @@ async function installWorkflowWithDependencies(config, configLang) {
|
|
|
955
955
|
try {
|
|
956
956
|
await copyFile$1(commandSource, commandDest);
|
|
957
957
|
result.installedCommands.push(destFileName);
|
|
958
|
-
console.log(
|
|
958
|
+
console.log(a.gray(` \u2714 ${i18n.t("workflow:installedCommand")}: ccjk/${destFileName}`));
|
|
959
959
|
} catch (error) {
|
|
960
960
|
const errorMsg = `${i18n.t("workflow:failedToInstallCommand")} ${commandFile}: ${error}`;
|
|
961
961
|
result.errors?.push(errorMsg);
|
|
962
|
-
console.error(
|
|
962
|
+
console.error(a.red(` \u2717 ${errorMsg}`));
|
|
963
963
|
result.success = false;
|
|
964
964
|
}
|
|
965
965
|
}
|
|
@@ -995,11 +995,11 @@ async function installWorkflowWithDependencies(config, configLang) {
|
|
|
995
995
|
try {
|
|
996
996
|
await copyFile$1(agentSource, agentDest);
|
|
997
997
|
result.installedAgents.push(agent.filename);
|
|
998
|
-
console.log(
|
|
998
|
+
console.log(a.gray(` \u2714 ${i18n.t("workflow:installedAgent")}: ccjk/${config.category}/${agent.filename}`));
|
|
999
999
|
} catch (error) {
|
|
1000
1000
|
const errorMsg = `${i18n.t("workflow:failedToInstallAgent")} ${agent.filename}: ${error}`;
|
|
1001
1001
|
result.errors?.push(errorMsg);
|
|
1002
|
-
console.error(
|
|
1002
|
+
console.error(a.red(` \u2717 ${errorMsg}`));
|
|
1003
1003
|
if (agent.required) {
|
|
1004
1004
|
result.success = false;
|
|
1005
1005
|
}
|
|
@@ -1008,15 +1008,15 @@ async function installWorkflowWithDependencies(config, configLang) {
|
|
|
1008
1008
|
}
|
|
1009
1009
|
}
|
|
1010
1010
|
if (result.success) {
|
|
1011
|
-
console.log(
|
|
1011
|
+
console.log(a.green(`\u2714 ${workflowName} ${i18n.t("workflow:workflowInstallSuccess")}`));
|
|
1012
1012
|
} else {
|
|
1013
|
-
console.log(
|
|
1013
|
+
console.log(a.red(`\u2717 ${workflowName} ${i18n.t("workflow:workflowInstallError")}`));
|
|
1014
1014
|
}
|
|
1015
1015
|
return result;
|
|
1016
1016
|
}
|
|
1017
1017
|
async function cleanupOldVersionFiles() {
|
|
1018
1018
|
ensureI18nInitialized();
|
|
1019
|
-
console.log(
|
|
1019
|
+
console.log(a.green(`
|
|
1020
1020
|
\u{1F9F9} ${i18n.t("workflow:cleaningOldFiles")}...`));
|
|
1021
1021
|
const oldCommandFiles = [
|
|
1022
1022
|
join(CLAUDE_DIR, "commands", "workflow.md"),
|
|
@@ -1030,9 +1030,9 @@ async function cleanupOldVersionFiles() {
|
|
|
1030
1030
|
if (existsSync(file)) {
|
|
1031
1031
|
try {
|
|
1032
1032
|
await rm(file, { force: true });
|
|
1033
|
-
console.log(
|
|
1033
|
+
console.log(a.gray(` \u2714 ${i18n.t("workflow:removedOldFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
|
|
1034
1034
|
} catch {
|
|
1035
|
-
console.error(
|
|
1035
|
+
console.error(a.yellow(` \u26A0 ${i18n.t("errors:failedToRemoveFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
|
|
1036
1036
|
}
|
|
1037
1037
|
}
|
|
1038
1038
|
}
|
|
@@ -1040,9 +1040,9 @@ async function cleanupOldVersionFiles() {
|
|
|
1040
1040
|
if (existsSync(file)) {
|
|
1041
1041
|
try {
|
|
1042
1042
|
await rm(file, { force: true });
|
|
1043
|
-
console.log(
|
|
1043
|
+
console.log(a.gray(` \u2714 ${i18n.t("workflow:removedOldFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
|
|
1044
1044
|
} catch {
|
|
1045
|
-
console.error(
|
|
1045
|
+
console.error(a.yellow(` \u26A0 ${i18n.t("errors:failedToRemoveFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
|
|
1046
1046
|
}
|
|
1047
1047
|
}
|
|
1048
1048
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { webcrypto } from 'node:crypto';
|
|
2
|
+
|
|
3
|
+
const urlAlphabet =
|
|
4
|
+
'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';
|
|
5
|
+
|
|
6
|
+
const POOL_SIZE_MULTIPLIER = 128;
|
|
7
|
+
let pool, poolOffset;
|
|
8
|
+
function fillPool(bytes) {
|
|
9
|
+
if (!pool || pool.length < bytes) {
|
|
10
|
+
pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER);
|
|
11
|
+
webcrypto.getRandomValues(pool);
|
|
12
|
+
poolOffset = 0;
|
|
13
|
+
} else if (poolOffset + bytes > pool.length) {
|
|
14
|
+
webcrypto.getRandomValues(pool);
|
|
15
|
+
poolOffset = 0;
|
|
16
|
+
}
|
|
17
|
+
poolOffset += bytes;
|
|
18
|
+
}
|
|
19
|
+
function nanoid(size = 21) {
|
|
20
|
+
fillPool((size |= 0));
|
|
21
|
+
let id = '';
|
|
22
|
+
for (let i = poolOffset - size; i < poolOffset; i++) {
|
|
23
|
+
id += urlAlphabet[pool[i] & 63];
|
|
24
|
+
}
|
|
25
|
+
return id
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { nanoid as n };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import process__default from 'node:process';
|
|
4
|
-
import { join } from '
|
|
4
|
+
import { j as join } from './ccjk.bQ7Dh1g4.mjs';
|
|
5
5
|
|
|
6
6
|
function scanProject(cwd) {
|
|
7
7
|
const root = cwd || process__default.cwd();
|