ccjk 9.6.1 → 9.8.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/chunks/boost.mjs +246 -7
- package/dist/chunks/ccjk-mcp.mjs +1 -1
- package/dist/chunks/ccr.mjs +25 -28
- package/dist/chunks/check-updates.mjs +4 -3
- package/dist/chunks/claude-code-config-manager.mjs +1 -1
- package/dist/chunks/claude-code-incremental-manager.mjs +1 -1
- package/dist/chunks/claude-config.mjs +1 -1
- package/dist/chunks/codex-config-switch.mjs +3 -4
- package/dist/chunks/codex-provider-manager.mjs +1 -2
- package/dist/chunks/codex.mjs +204 -3
- package/dist/chunks/config-switch.mjs +2 -3
- package/dist/chunks/config.mjs +1 -1
- package/dist/chunks/doctor.mjs +1 -1
- package/dist/chunks/features.mjs +24 -15
- package/dist/chunks/hook-installer.mjs +44 -0
- package/dist/chunks/index3.mjs +32 -32
- package/dist/chunks/init.mjs +129 -87
- package/dist/chunks/installer2.mjs +1 -1
- package/dist/chunks/interview.mjs +1 -1
- package/dist/chunks/mcp.mjs +1058 -17
- package/dist/chunks/menu.mjs +140 -56
- package/dist/chunks/package.mjs +2 -210
- package/dist/chunks/platform.mjs +1 -1
- package/dist/chunks/quick-setup.mjs +35 -18
- package/dist/chunks/simple-config.mjs +1 -1
- package/dist/{shared/ccjk.q1koQxEE.mjs → chunks/smart-defaults.mjs} +77 -79
- package/dist/chunks/status.mjs +208 -101
- package/dist/chunks/thinking.mjs +1 -1
- package/dist/chunks/uninstall.mjs +6 -4
- package/dist/chunks/update.mjs +4 -7
- package/dist/chunks/version-checker.mjs +1 -1
- package/dist/cli.mjs +4 -80
- package/dist/index.d.mts +17 -1482
- package/dist/index.d.ts +17 -1482
- package/dist/index.mjs +12 -4191
- package/dist/shared/{ccjk.CSkyCZIM.mjs → ccjk.Bndhan7G.mjs} +4 -242
- package/dist/shared/ccjk.CeE8RLG2.mjs +62 -0
- package/dist/shared/ccjk.DKojSRzw.mjs +266 -0
- package/dist/shared/{ccjk.CItD1fpl.mjs → ccjk.DvIrK0wz.mjs} +1 -1
- package/dist/shared/ccjk.LsPZ2PYo.mjs +1048 -0
- package/package.json +1 -1
- package/dist/chunks/api-adapter.mjs +0 -180
- package/dist/chunks/cli.mjs +0 -2227
- package/dist/chunks/context-menu.mjs +0 -913
- package/dist/chunks/hooks-sync.mjs +0 -1627
- package/dist/chunks/mcp-market.mjs +0 -1077
- package/dist/chunks/mcp-server.mjs +0 -776
- package/dist/chunks/project-detector.mjs +0 -131
- package/dist/chunks/provider-registry.mjs +0 -92
- package/dist/chunks/setup-wizard.mjs +0 -362
- package/dist/chunks/tools.mjs +0 -143
- package/dist/chunks/workflows2.mjs +0 -232
- package/dist/shared/ccjk.C0pb50xH.mjs +0 -347
- package/dist/shared/ccjk.ChMkBmdL.mjs +0 -490
- package/dist/shared/ccjk.CtSfXUSh.mjs +0 -209
- package/dist/shared/ccjk.xfAjmbJp.mjs +0 -75
package/dist/chunks/menu.mjs
CHANGED
|
@@ -4,69 +4,23 @@ import ansis from 'ansis';
|
|
|
4
4
|
import inquirer from 'inquirer';
|
|
5
5
|
import { join } from 'pathe';
|
|
6
6
|
import { CODE_TOOL_BANNERS, CLAUDE_DIR, isCodeToolType, DEFAULT_CODE_TOOL_TYPE } from './constants.mjs';
|
|
7
|
-
import { i18n } from './index.mjs';
|
|
7
|
+
import { ensureI18nInitialized, i18n } from './index.mjs';
|
|
8
8
|
import { d as displayBannerWithInfo } from '../shared/ccjk.Br91zBIG.mjs';
|
|
9
9
|
import { updateZcfConfig, readZcfConfig } from './ccjk-config.mjs';
|
|
10
|
-
import { r as resolveCodeType } from '../shared/ccjk.
|
|
11
|
-
import {
|
|
10
|
+
import { r as resolveCodeType } from '../shared/ccjk.CeE8RLG2.mjs';
|
|
11
|
+
import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.DvIrK0wz.mjs';
|
|
12
12
|
import { changeScriptLanguageFeature, configureMcpFeature, configureEnvPermissionFeature, configureAiMemoryFeature, configureDefaultModelFeature, configureApiFeature } from './features.mjs';
|
|
13
13
|
import { p as promptBoolean } from '../shared/ccjk.DHbrGcgg.mjs';
|
|
14
|
-
import {
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { runCcrStop, runCcrStart, runCcrRestart, runCcrStatus, runCcrUi } from './commands2.mjs';
|
|
16
|
+
import { readCcrConfig, configureCcrFeature } from './config3.mjs';
|
|
17
|
+
import { a as isCcrInstalled, b as installCcr, i as init } from './init.mjs';
|
|
15
18
|
import { ccjkAgents } from './ccjk-agents.mjs';
|
|
16
19
|
import { ccjkSkills } from './ccjk-skills.mjs';
|
|
17
20
|
import { checkUpdates } from './check-updates.mjs';
|
|
18
21
|
import { doctor } from './doctor.mjs';
|
|
19
|
-
import { init } from './init.mjs';
|
|
20
22
|
import { uninstall } from './uninstall.mjs';
|
|
21
23
|
import { update } from './update.mjs';
|
|
22
|
-
import 'node:os';
|
|
23
|
-
import 'node:url';
|
|
24
|
-
import 'i18next';
|
|
25
|
-
import 'i18next-fs-backend';
|
|
26
|
-
import './package.mjs';
|
|
27
|
-
import 'smol-toml';
|
|
28
|
-
import './fs-operations.mjs';
|
|
29
|
-
import 'node:crypto';
|
|
30
|
-
import 'node:fs/promises';
|
|
31
|
-
import './json-config.mjs';
|
|
32
|
-
import 'dayjs';
|
|
33
|
-
import 'node:child_process';
|
|
34
|
-
import './platform.mjs';
|
|
35
|
-
import 'tinyexec';
|
|
36
|
-
import '../shared/ccjk.CtSfXUSh.mjs';
|
|
37
|
-
import './config3.mjs';
|
|
38
|
-
import 'node:util';
|
|
39
|
-
import './claude-config.mjs';
|
|
40
|
-
import './config.mjs';
|
|
41
|
-
import 'inquirer-toggle';
|
|
42
|
-
import '../shared/ccjk.xfAjmbJp.mjs';
|
|
43
|
-
import './auto-updater.mjs';
|
|
44
|
-
import 'ora';
|
|
45
|
-
import './version-checker.mjs';
|
|
46
|
-
import 'node:path';
|
|
47
|
-
import 'semver';
|
|
48
|
-
import '../shared/ccjk.ChMkBmdL.mjs';
|
|
49
|
-
import '../shared/ccjk.BFQ7yr5S.mjs';
|
|
50
|
-
import './simple-config.mjs';
|
|
51
|
-
import './commands2.mjs';
|
|
52
|
-
import 'consola';
|
|
53
|
-
import '../shared/ccjk.BNwRnWYx.mjs';
|
|
54
|
-
import 'tinyglobby';
|
|
55
|
-
import 'ofetch';
|
|
56
|
-
import '../shared/ccjk.Bvoex4TZ.mjs';
|
|
57
|
-
import '../shared/ccjk.AqnXPAzw.mjs';
|
|
58
|
-
import '../shared/ccjk.Bdhyg3X-.mjs';
|
|
59
|
-
import './codex.mjs';
|
|
60
|
-
import './prompts.mjs';
|
|
61
|
-
import './api-providers.mjs';
|
|
62
|
-
import '../shared/ccjk.h7_W-wTs.mjs';
|
|
63
|
-
import '../shared/ccjk.J8YiPsOw.mjs';
|
|
64
|
-
import './workflows2.mjs';
|
|
65
|
-
import '../shared/ccjk.C0pb50xH.mjs';
|
|
66
|
-
import './installer2.mjs';
|
|
67
|
-
import '../shared/ccjk.DE91nClQ.mjs';
|
|
68
|
-
import '../shared/ccjk.DntgA8fQ.mjs';
|
|
69
|
-
import 'trash';
|
|
70
24
|
|
|
71
25
|
const FULLWIDTH_TO_HALFWIDTH = {
|
|
72
26
|
// Full-width numbers (Japanese/Chinese IME)
|
|
@@ -178,6 +132,131 @@ function normalizeMenuInput(input) {
|
|
|
178
132
|
return normalizeFullWidth(input.trim()).toLowerCase();
|
|
179
133
|
}
|
|
180
134
|
|
|
135
|
+
function isCcrConfigured() {
|
|
136
|
+
const CCR_CONFIG_FILE = join(homedir(), ".claude-code-router", "config.json");
|
|
137
|
+
if (!existsSync(CCR_CONFIG_FILE)) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
const config = readCcrConfig();
|
|
141
|
+
return config !== null;
|
|
142
|
+
}
|
|
143
|
+
async function showCcrMenu() {
|
|
144
|
+
try {
|
|
145
|
+
ensureI18nInitialized();
|
|
146
|
+
console.log(`
|
|
147
|
+
${ansis.green("\u2550".repeat(50))}`);
|
|
148
|
+
console.log(ansis.bold.cyan(` ${i18n.t("ccr:ccrMenuTitle")}`));
|
|
149
|
+
console.log(`${ansis.green("\u2550".repeat(50))}
|
|
150
|
+
`);
|
|
151
|
+
console.log(` ${ansis.green("1.")} ${i18n.t("ccr:ccrMenuOptions.initCcr")} ${ansis.gray(`- ${i18n.t("ccr:ccrMenuDescriptions.initCcr")}`)}`);
|
|
152
|
+
console.log(` ${ansis.green("2.")} ${i18n.t("ccr:ccrMenuOptions.startUi")} ${ansis.gray(`- ${i18n.t("ccr:ccrMenuDescriptions.startUi")}`)}`);
|
|
153
|
+
console.log(` ${ansis.green("3.")} ${i18n.t("ccr:ccrMenuOptions.checkStatus")} ${ansis.gray(`- ${i18n.t("ccr:ccrMenuDescriptions.checkStatus")}`)}`);
|
|
154
|
+
console.log(` ${ansis.green("4.")} ${i18n.t("ccr:ccrMenuOptions.restart")} ${ansis.gray(`- ${i18n.t("ccr:ccrMenuDescriptions.restart")}`)}`);
|
|
155
|
+
console.log(` ${ansis.green("5.")} ${i18n.t("ccr:ccrMenuOptions.start")} ${ansis.gray(`- ${i18n.t("ccr:ccrMenuDescriptions.start")}`)}`);
|
|
156
|
+
console.log(` ${ansis.green("6.")} ${i18n.t("ccr:ccrMenuOptions.stop")} ${ansis.gray(`- ${i18n.t("ccr:ccrMenuDescriptions.stop")}`)}`);
|
|
157
|
+
console.log(` ${ansis.yellow("0.")} ${i18n.t("ccr:ccrMenuOptions.back")}`);
|
|
158
|
+
console.log("");
|
|
159
|
+
const { choice } = await inquirer.prompt({
|
|
160
|
+
type: "input",
|
|
161
|
+
name: "choice",
|
|
162
|
+
message: i18n.t("common:enterChoice"),
|
|
163
|
+
validate: (value) => {
|
|
164
|
+
const valid = ["1", "2", "3", "4", "5", "6", "0"];
|
|
165
|
+
return valid.includes(value) || i18n.t("common:invalidChoice");
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
switch (choice) {
|
|
169
|
+
case "1": {
|
|
170
|
+
const ccrStatus = await isCcrInstalled();
|
|
171
|
+
if (!ccrStatus.hasCorrectPackage) {
|
|
172
|
+
await installCcr();
|
|
173
|
+
} else {
|
|
174
|
+
console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
|
|
175
|
+
}
|
|
176
|
+
await configureCcrFeature();
|
|
177
|
+
console.log(ansis.green(`
|
|
178
|
+
\u2714 ${i18n.t("ccr:ccrSetupComplete")}`));
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case "2":
|
|
182
|
+
if (!isCcrConfigured()) {
|
|
183
|
+
console.log(ansis.yellow(`
|
|
184
|
+
\u26A0\uFE0F ${i18n.t("ccr:ccrNotConfigured")}`));
|
|
185
|
+
console.log(ansis.green(` ${i18n.t("ccr:pleaseInitFirst")}
|
|
186
|
+
`));
|
|
187
|
+
} else {
|
|
188
|
+
const config = readCcrConfig();
|
|
189
|
+
await runCcrUi(config?.APIKEY);
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
case "3":
|
|
193
|
+
if (!isCcrConfigured()) {
|
|
194
|
+
console.log(ansis.yellow(`
|
|
195
|
+
\u26A0\uFE0F ${i18n.t("ccr:ccrNotConfigured")}`));
|
|
196
|
+
console.log(ansis.green(` ${i18n.t("ccr:pleaseInitFirst")}
|
|
197
|
+
`));
|
|
198
|
+
} else {
|
|
199
|
+
await runCcrStatus();
|
|
200
|
+
}
|
|
201
|
+
break;
|
|
202
|
+
case "4":
|
|
203
|
+
if (!isCcrConfigured()) {
|
|
204
|
+
console.log(ansis.yellow(`
|
|
205
|
+
\u26A0\uFE0F ${i18n.t("ccr:ccrNotConfigured")}`));
|
|
206
|
+
console.log(ansis.green(` ${i18n.t("ccr:pleaseInitFirst")}
|
|
207
|
+
`));
|
|
208
|
+
} else {
|
|
209
|
+
await runCcrRestart();
|
|
210
|
+
}
|
|
211
|
+
break;
|
|
212
|
+
case "5":
|
|
213
|
+
if (!isCcrConfigured()) {
|
|
214
|
+
console.log(ansis.yellow(`
|
|
215
|
+
\u26A0\uFE0F ${i18n.t("ccr:ccrNotConfigured")}`));
|
|
216
|
+
console.log(ansis.green(` ${i18n.t("ccr:pleaseInitFirst")}
|
|
217
|
+
`));
|
|
218
|
+
} else {
|
|
219
|
+
await runCcrStart();
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
case "6":
|
|
223
|
+
if (!isCcrConfigured()) {
|
|
224
|
+
console.log(ansis.yellow(`
|
|
225
|
+
\u26A0\uFE0F ${i18n.t("ccr:ccrNotConfigured")}`));
|
|
226
|
+
console.log(ansis.green(` ${i18n.t("ccr:pleaseInitFirst")}
|
|
227
|
+
`));
|
|
228
|
+
} else {
|
|
229
|
+
await runCcrStop();
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
case "0":
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
if (choice !== "0") {
|
|
236
|
+
console.log(`
|
|
237
|
+
${ansis.dim("\u2500".repeat(50))}
|
|
238
|
+
`);
|
|
239
|
+
const continueInCcr = await promptBoolean({
|
|
240
|
+
message: i18n.t("common:returnToMenu"),
|
|
241
|
+
defaultValue: true
|
|
242
|
+
});
|
|
243
|
+
if (continueInCcr) {
|
|
244
|
+
return await showCcrMenu();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return false;
|
|
248
|
+
} catch (error) {
|
|
249
|
+
if (!handleExitPromptError(error)) {
|
|
250
|
+
handleGeneralError(error);
|
|
251
|
+
}
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
async function runCcrMenuFeature() {
|
|
257
|
+
await showCcrMenu();
|
|
258
|
+
}
|
|
259
|
+
|
|
181
260
|
const CODE_TOOL_LABELS = {
|
|
182
261
|
"claude-code": "Claude Code",
|
|
183
262
|
"codex": "Codex",
|
|
@@ -348,8 +427,8 @@ async function showSimplifiedMenu() {
|
|
|
348
427
|
return void 0;
|
|
349
428
|
}
|
|
350
429
|
case "b": {
|
|
351
|
-
const {
|
|
352
|
-
await
|
|
430
|
+
const { statusCommand } = await import('./status.mjs');
|
|
431
|
+
await statusCommand();
|
|
353
432
|
printSeparator();
|
|
354
433
|
return void 0;
|
|
355
434
|
}
|
|
@@ -464,4 +543,9 @@ async function showMainMenu(options = {}) {
|
|
|
464
543
|
}
|
|
465
544
|
}
|
|
466
545
|
|
|
467
|
-
|
|
546
|
+
const menu = {
|
|
547
|
+
__proto__: null,
|
|
548
|
+
showMainMenu: showMainMenu
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
export { showMainMenu as a, menu as m, showCcrMenu as s };
|
package/dist/chunks/package.mjs
CHANGED
|
@@ -1,212 +1,4 @@
|
|
|
1
|
-
const
|
|
2
|
-
const type = "module";
|
|
3
|
-
const version = "9.6.1";
|
|
4
|
-
const packageManager = "pnpm@10.17.1";
|
|
5
|
-
const description = "CCJK v9.0.0 - Revolutionary AI Development Platform with Enterprise Security, Streaming Cloud Sync, CRDT Conflict Resolution, and Unified V3 Architecture";
|
|
6
|
-
const author = {
|
|
7
|
-
name: "CCJK Team",
|
|
8
|
-
email: "9248293@gmail.com"
|
|
9
|
-
};
|
|
10
|
-
const license = "MIT";
|
|
1
|
+
const version = "9.8.0";
|
|
11
2
|
const homepage = "https://github.com/miounet11/ccjk";
|
|
12
|
-
const repository = {
|
|
13
|
-
type: "git",
|
|
14
|
-
url: "git+https://github.com/miounet11/ccjk.git"
|
|
15
|
-
};
|
|
16
|
-
const bugs = "https://github.com/miounet11/ccjk/issues";
|
|
17
|
-
const keywords = [
|
|
18
|
-
"ai",
|
|
19
|
-
"code-tools",
|
|
20
|
-
"abstraction",
|
|
21
|
-
"claude",
|
|
22
|
-
"claude-code",
|
|
23
|
-
"codex",
|
|
24
|
-
"ccjk",
|
|
25
|
-
"jinku",
|
|
26
|
-
"ai-assistant",
|
|
27
|
-
"ai-coding",
|
|
28
|
-
"code-assistant",
|
|
29
|
-
"developer-tools",
|
|
30
|
-
"devtools",
|
|
31
|
-
"cli",
|
|
32
|
-
"automation",
|
|
33
|
-
"mcp",
|
|
34
|
-
"anthropic",
|
|
35
|
-
"openai",
|
|
36
|
-
"gemini",
|
|
37
|
-
"gpt",
|
|
38
|
-
"llm",
|
|
39
|
-
"machine-learning",
|
|
40
|
-
"artificial-intelligence",
|
|
41
|
-
"token-optimization",
|
|
42
|
-
"compression",
|
|
43
|
-
"workflows",
|
|
44
|
-
"productivity",
|
|
45
|
-
"aider",
|
|
46
|
-
"continue",
|
|
47
|
-
"cline",
|
|
48
|
-
"cursor",
|
|
49
|
-
"cursor-alternative",
|
|
50
|
-
"copilot-alternative",
|
|
51
|
-
"codeium-alternative"
|
|
52
|
-
];
|
|
53
|
-
const sideEffects = false;
|
|
54
|
-
const exports = {
|
|
55
|
-
".": {
|
|
56
|
-
types: "./dist/index.d.mts",
|
|
57
|
-
"import": "./dist/index.mjs",
|
|
58
|
-
"default": "./dist/index.mjs"
|
|
59
|
-
},
|
|
60
|
-
"./package.json": "./package.json"
|
|
61
|
-
};
|
|
62
|
-
const main = "dist/index.mjs";
|
|
63
|
-
const module = "dist/index.mjs";
|
|
64
|
-
const types = "dist/index.d.mts";
|
|
65
|
-
const bin = {
|
|
66
|
-
ccjk: "bin/ccjk.mjs"
|
|
67
|
-
};
|
|
68
|
-
const files = [
|
|
69
|
-
"bin",
|
|
70
|
-
"dist",
|
|
71
|
-
"templates"
|
|
72
|
-
];
|
|
73
|
-
const engines = {
|
|
74
|
-
node: ">=20"
|
|
75
|
-
};
|
|
76
|
-
const scripts = {
|
|
77
|
-
dev: "tsx ./src/cli.ts",
|
|
78
|
-
build: "unbuild",
|
|
79
|
-
start: "node bin/ccjk.mjs",
|
|
80
|
-
typecheck: "tsc --noEmit",
|
|
81
|
-
prepublishOnly: "node scripts/validate-prepublish.mjs && pnpm build && pnpm test:run",
|
|
82
|
-
lint: "eslint",
|
|
83
|
-
"lint:fix": "eslint --fix",
|
|
84
|
-
test: "vitest",
|
|
85
|
-
"test:ui": "vitest --ui",
|
|
86
|
-
"test:coverage": "vitest run --coverage",
|
|
87
|
-
"test:run": "vitest run",
|
|
88
|
-
"test:watch": "vitest watch",
|
|
89
|
-
"test:e2e": "NODE_ENV=test vitest --config vitest.e2e.config.ts",
|
|
90
|
-
"test:e2e:run": "NODE_ENV=test vitest run --config vitest.e2e.config.ts",
|
|
91
|
-
"test:e2e:ui": "NODE_ENV=test vitest --config vitest.e2e.config.ts --ui",
|
|
92
|
-
"test:e2e:coverage": "NODE_ENV=test vitest run --config vitest.e2e.config.ts --coverage",
|
|
93
|
-
"test:e2e:debug": "NODE_ENV=test CCJK_E2E_DEBUG=true vitest --config vitest.e2e.config.ts",
|
|
94
|
-
"test:v2": "vitest --config vitest.config.v2.ts",
|
|
95
|
-
"test:v2:ui": "vitest --config vitest.config.v2.ts --ui",
|
|
96
|
-
"test:v2:coverage": "vitest run --config vitest.config.v2.ts --coverage",
|
|
97
|
-
"test:v2:run": "vitest run --config vitest.config.v2.ts",
|
|
98
|
-
"test:v2:watch": "vitest watch --config vitest.config.v2.ts",
|
|
99
|
-
prepare: "husky",
|
|
100
|
-
format: "prettier --write src/**/*.ts",
|
|
101
|
-
"prepublish:fix": "node scripts/fix-package-catalog.mjs",
|
|
102
|
-
cleanup: "node scripts/cleanup.js",
|
|
103
|
-
"cleanup:auto": "node scripts/cleanup.js --auto",
|
|
104
|
-
"cleanup:dry": "node scripts/cleanup.js --dry-run",
|
|
105
|
-
clean: "rm -rf dist coverage .turbo *.tsbuildinfo",
|
|
106
|
-
"v2:setup": "chmod +x scripts/v2-dev-setup.sh && ./scripts/v2-dev-setup.sh",
|
|
107
|
-
"v2:setup:skip-tests": "chmod +x scripts/v2-dev-setup.sh && ./scripts/v2-dev-setup.sh --skip-tests",
|
|
108
|
-
"v2:services:up": "docker-compose -f docker-compose.dev.yml up -d",
|
|
109
|
-
"v2:services:down": "docker-compose -f docker-compose.dev.yml down",
|
|
110
|
-
"v2:services:restart": "docker-compose -f docker-compose.dev.yml restart",
|
|
111
|
-
"v2:services:logs": "docker-compose -f docker-compose.dev.yml logs -f",
|
|
112
|
-
"v2:services:status": "docker-compose -f docker-compose.dev.yml ps",
|
|
113
|
-
"v2:db:reset": "docker-compose -f docker-compose.dev.yml down postgres && docker volume rm ccjk-public_postgres_data && docker-compose -f docker-compose.dev.yml up -d postgres",
|
|
114
|
-
"v2:db:migrate": "echo 'Database migration script - to be implemented'",
|
|
115
|
-
"v2:db:seed": "echo 'Database seeding script - to be implemented'",
|
|
116
|
-
"v2:cache:clear": "docker exec ccjk-redis-dev redis-cli FLUSHALL",
|
|
117
|
-
"v2:search:reindex": "curl -X DELETE http://localhost:9200/ccjk_dev* && echo 'Elasticsearch indexes cleared'",
|
|
118
|
-
"v2:health": "chmod +x scripts/health-check.sh && ./scripts/health-check.sh",
|
|
119
|
-
"v2:dev": "concurrently \"pnpm v2:services:up\" \"pnpm dev\"",
|
|
120
|
-
"v2:test:integration": "NODE_ENV=test pnpm test -- --config vitest.integration.config.ts",
|
|
121
|
-
"v2:test:e2e": "NODE_ENV=test pnpm test -- --config vitest.e2e.config.ts",
|
|
122
|
-
"v2:monitoring:up": "docker-compose -f docker-compose.dev.yml --profile monitoring up -d",
|
|
123
|
-
"v2:tracing:up": "docker-compose -f docker-compose.dev.yml --profile tracing up -d",
|
|
124
|
-
"v2:clean": "pnpm clean && docker-compose -f docker-compose.dev.yml down -v && docker system prune -f",
|
|
125
|
-
benchmark: "tsx src/v2/__tests__/benchmarks.ts",
|
|
126
|
-
"benchmark:save": "tsx src/v2/__tests__/benchmarks.ts && echo 'Results saved to .ccjk/benchmark-results.json'",
|
|
127
|
-
"benchmark:detailed": "tsx src/v2/__tests__/benchmarks.ts --detailed",
|
|
128
|
-
"benchmark:server": "npx http-server docs/v2 -p 8080 -o dashboard.html",
|
|
129
|
-
"benchmark:open": "open docs/v2/dashboard.html || xdg-open docs/v2/dashboard.html || start docs/v2/dashboard.html",
|
|
130
|
-
"i18n:check": "tsx scripts/check-i18n.ts",
|
|
131
|
-
"i18n:report": "tsx scripts/check-i18n.ts --report"
|
|
132
|
-
};
|
|
133
|
-
const dependencies = {
|
|
134
|
-
"@anthropic-ai/sdk": "^0.52.0",
|
|
135
|
-
ansis: "^4.1.0",
|
|
136
|
-
cac: "^6.7.14",
|
|
137
|
-
chokidar: "^4.0.3",
|
|
138
|
-
consola: "^3.4.2",
|
|
139
|
-
dayjs: "^1.11.18",
|
|
140
|
-
fdir: "^6.5.0",
|
|
141
|
-
"find-up-simple": "^1.0.1",
|
|
142
|
-
"fs-extra": "^11.3.2",
|
|
143
|
-
glob: "^11.0.3",
|
|
144
|
-
"gray-matter": "^4.0.3",
|
|
145
|
-
handlebars: "^4.7.8",
|
|
146
|
-
i18next: "^25.5.2",
|
|
147
|
-
"i18next-fs-backend": "^2.6.0",
|
|
148
|
-
inquirer: "^12.9.6",
|
|
149
|
-
"inquirer-toggle": "^1.0.1",
|
|
150
|
-
ioredis: "^5.9.2",
|
|
151
|
-
nanoid: "^5.1.6",
|
|
152
|
-
ofetch: "^1.5.1",
|
|
153
|
-
ohash: "^1.1.4",
|
|
154
|
-
ora: "^9.0.0",
|
|
155
|
-
pathe: "^2.0.3",
|
|
156
|
-
semver: "^7.7.2",
|
|
157
|
-
"smol-toml": "^1.4.2",
|
|
158
|
-
tar: "^7.5.2",
|
|
159
|
-
tinyexec: "^1.0.1",
|
|
160
|
-
tinyglobby: "^0.2.15",
|
|
161
|
-
trash: "^10.0.0",
|
|
162
|
-
uuid: "^11.1.0",
|
|
163
|
-
"web-tree-sitter": "^0.26.3"
|
|
164
|
-
};
|
|
165
|
-
const devDependencies = {
|
|
166
|
-
"@antfu/eslint-config": "^5.4.1",
|
|
167
|
-
"@types/fs-extra": "^11.0.4",
|
|
168
|
-
"@types/inquirer": "^9.0.9",
|
|
169
|
-
"@types/node": "^22.18.6",
|
|
170
|
-
"@types/semver": "^7.7.1",
|
|
171
|
-
"@types/uuid": "^11.0.0",
|
|
172
|
-
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
173
|
-
"@typescript-eslint/parser": "^6.0.0",
|
|
174
|
-
"@vitest/coverage-v8": "^3.2.4",
|
|
175
|
-
"@vitest/ui": "^3.2.4",
|
|
176
|
-
concurrently: "^9.2.1",
|
|
177
|
-
eslint: "^9.36.0",
|
|
178
|
-
"eslint-plugin-format": "^1.0.2",
|
|
179
|
-
husky: "^9.1.7",
|
|
180
|
-
"lint-staged": "^16.2.0",
|
|
181
|
-
prettier: "^3.0.0",
|
|
182
|
-
tsx: "^4.20.5",
|
|
183
|
-
typescript: "^5.9.2",
|
|
184
|
-
unbuild: "^3.6.1",
|
|
185
|
-
vitest: "^3.2.4"
|
|
186
|
-
};
|
|
187
|
-
const packageJson = {
|
|
188
|
-
name: name,
|
|
189
|
-
type: type,
|
|
190
|
-
version: version,
|
|
191
|
-
packageManager: packageManager,
|
|
192
|
-
description: description,
|
|
193
|
-
author: author,
|
|
194
|
-
license: license,
|
|
195
|
-
homepage: homepage,
|
|
196
|
-
repository: repository,
|
|
197
|
-
bugs: bugs,
|
|
198
|
-
keywords: keywords,
|
|
199
|
-
sideEffects: sideEffects,
|
|
200
|
-
exports: exports,
|
|
201
|
-
main: main,
|
|
202
|
-
module: module,
|
|
203
|
-
types: types,
|
|
204
|
-
bin: bin,
|
|
205
|
-
files: files,
|
|
206
|
-
engines: engines,
|
|
207
|
-
scripts: scripts,
|
|
208
|
-
dependencies: dependencies,
|
|
209
|
-
devDependencies: devDependencies
|
|
210
|
-
};
|
|
211
3
|
|
|
212
|
-
export {
|
|
4
|
+
export { homepage, version };
|
package/dist/chunks/platform.mjs
CHANGED
|
@@ -388,4 +388,4 @@ const platform = {
|
|
|
388
388
|
wrapCommandWithSudo: wrapCommandWithSudo
|
|
389
389
|
};
|
|
390
390
|
|
|
391
|
-
export {
|
|
391
|
+
export { isTermux as a, getMcpCommand as b, commandExists as c, getPlatform as d, getHomebrewCommandPaths as e, findCommandPath as f, getSystemRoot as g, getTermuxPrefix as h, isWindows as i, isWSL as j, getWSLInfo as k, getRecommendedInstallMethods as l, findRealCommandPath as m, normalizeTomlPath as n, platform as p, shouldUseSudoForGlobalInstall as s, wrapCommandWithSudo as w };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import ansis from 'ansis';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { version } from './package.mjs';
|
|
4
|
-
import {
|
|
4
|
+
import { detectSmartDefaults } from './smart-defaults.mjs';
|
|
5
5
|
import { i18n } from './index.mjs';
|
|
6
6
|
import { updateZcfConfig } from './ccjk-config.mjs';
|
|
7
|
-
import { init } from './init.mjs';
|
|
7
|
+
import { i as init } from './init.mjs';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import 'node:fs';
|
|
10
10
|
import 'node:os';
|
|
@@ -12,37 +12,35 @@ import 'pathe';
|
|
|
12
12
|
import './platform.mjs';
|
|
13
13
|
import 'node:process';
|
|
14
14
|
import 'tinyexec';
|
|
15
|
-
import '
|
|
15
|
+
import '../shared/ccjk.DKojSRzw.mjs';
|
|
16
16
|
import 'node:url';
|
|
17
17
|
import 'i18next';
|
|
18
18
|
import 'i18next-fs-backend';
|
|
19
19
|
import 'smol-toml';
|
|
20
|
+
import './constants.mjs';
|
|
20
21
|
import './fs-operations.mjs';
|
|
21
22
|
import 'node:crypto';
|
|
22
23
|
import 'node:fs/promises';
|
|
23
24
|
import './json-config.mjs';
|
|
24
25
|
import 'dayjs';
|
|
25
|
-
import '
|
|
26
|
-
import '
|
|
27
|
-
import '
|
|
28
|
-
import './config3.mjs';
|
|
29
|
-
import 'node:util';
|
|
30
|
-
import './claude-config.mjs';
|
|
26
|
+
import './codex.mjs';
|
|
27
|
+
import 'ora';
|
|
28
|
+
import 'semver';
|
|
31
29
|
import './config.mjs';
|
|
30
|
+
import './claude-config.mjs';
|
|
31
|
+
import '../shared/ccjk.BFQ7yr5S.mjs';
|
|
32
|
+
import './prompts.mjs';
|
|
32
33
|
import '../shared/ccjk.DHbrGcgg.mjs';
|
|
33
34
|
import 'inquirer-toggle';
|
|
34
|
-
import '../shared/ccjk.
|
|
35
|
+
import '../shared/ccjk.LsPZ2PYo.mjs';
|
|
36
|
+
import '../shared/ccjk.Br91zBIG.mjs';
|
|
37
|
+
import './config3.mjs';
|
|
38
|
+
import 'node:util';
|
|
35
39
|
import './auto-updater.mjs';
|
|
36
|
-
import 'ora';
|
|
37
40
|
import './version-checker.mjs';
|
|
38
41
|
import 'node:path';
|
|
39
|
-
import '
|
|
40
|
-
import '
|
|
41
|
-
import '../shared/ccjk.BFQ7yr5S.mjs';
|
|
42
|
-
import './prompts.mjs';
|
|
43
|
-
import '../shared/ccjk.C0pb50xH.mjs';
|
|
44
|
-
import '../shared/ccjk.ChMkBmdL.mjs';
|
|
45
|
-
import '../shared/ccjk.CItD1fpl.mjs';
|
|
42
|
+
import '../shared/ccjk.CeE8RLG2.mjs';
|
|
43
|
+
import '../shared/ccjk.DvIrK0wz.mjs';
|
|
46
44
|
import './installer2.mjs';
|
|
47
45
|
import '../shared/ccjk.DE91nClQ.mjs';
|
|
48
46
|
|
|
@@ -68,6 +66,9 @@ function displaySuccess(result, defaults) {
|
|
|
68
66
|
console.log(` \u2022 Skills: ${ansis.green(defaults.skills.length)} enabled`);
|
|
69
67
|
console.log(` \u2022 Agents: ${ansis.green(defaults.agents.length)} ready`);
|
|
70
68
|
console.log(` \u2022 Provider: ${ansis.green(defaults.apiProvider || "anthropic")}`);
|
|
69
|
+
if (defaults.recommendedHooks.length > 0) {
|
|
70
|
+
console.log(` \u2022 Hooks: ${ansis.green(defaults.recommendedHooks.join(", "))}`);
|
|
71
|
+
}
|
|
71
72
|
console.log("");
|
|
72
73
|
console.log(ansis.bold.green("\u23F1\uFE0F ") + ansis.white(`Completed in ${result.duration}s`));
|
|
73
74
|
console.log("");
|
|
@@ -268,6 +269,14 @@ async function quickSetup(options = {}) {
|
|
|
268
269
|
result.steps.detection = true;
|
|
269
270
|
console.log(` ${ansis.gray("Platform:")} ${ansis.green(defaults.platform)}`);
|
|
270
271
|
console.log(` ${ansis.gray("Code Tool:")} ${ansis.green(defaults.codeToolType || "claude-code")}`);
|
|
272
|
+
if (defaults.projectContext) {
|
|
273
|
+
const ctx = defaults.projectContext;
|
|
274
|
+
const parts = [ctx.language, ctx.framework !== "none" ? ctx.framework : null, ctx.testRunner !== "none" ? ctx.testRunner : null, ctx.packageManager !== "none" ? ctx.packageManager : null].filter(Boolean);
|
|
275
|
+
console.log(` ${ansis.gray("Project:")} ${ansis.green(parts.join(" + "))}`);
|
|
276
|
+
if (ctx.runtime.isHeadless) console.log(` ${ansis.gray("Runtime:")} ${ansis.yellow("headless server")}`);
|
|
277
|
+
if (ctx.runtime.isContainer) console.log(` ${ansis.gray("Runtime:")} ${ansis.yellow("container")}`);
|
|
278
|
+
if (ctx.runtime.isCI) console.log(` ${ansis.gray("Runtime:")} ${ansis.yellow("CI/CD")}`);
|
|
279
|
+
}
|
|
271
280
|
console.log("");
|
|
272
281
|
displayStep(2, 4, "Configuring API key...");
|
|
273
282
|
let apiKey;
|
|
@@ -366,6 +375,14 @@ async function quickSetup(options = {}) {
|
|
|
366
375
|
}
|
|
367
376
|
result.steps.installation = true;
|
|
368
377
|
result.steps.validation = true;
|
|
378
|
+
try {
|
|
379
|
+
const { installRecommendedHooks } = await import('./hook-installer.mjs');
|
|
380
|
+
const hooksAdded = await installRecommendedHooks(defaults.recommendedHooks);
|
|
381
|
+
if (hooksAdded > 0) {
|
|
382
|
+
console.log(` ${ansis.green("\u2713")} Installed ${ansis.cyan(String(hooksAdded))} recommended hooks`);
|
|
383
|
+
}
|
|
384
|
+
} catch {
|
|
385
|
+
}
|
|
369
386
|
result.duration = Math.round((Date.now() - startTime) / 1e3);
|
|
370
387
|
result.success = true;
|
|
371
388
|
displaySuccess(result, defaults);
|
|
@@ -5,7 +5,7 @@ import { exec } from 'tinyexec';
|
|
|
5
5
|
import { SETTINGS_FILE, CLAUDE_DIR } from './constants.mjs';
|
|
6
6
|
import { ensureDir, writeFileAtomic } from './fs-operations.mjs';
|
|
7
7
|
import { m as mergeAndCleanPermissions } from './config.mjs';
|
|
8
|
-
import {
|
|
8
|
+
import { d as getPlatform } from './platform.mjs';
|
|
9
9
|
import 'node:os';
|
|
10
10
|
import './index.mjs';
|
|
11
11
|
import 'node:process';
|