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.
Files changed (56) hide show
  1. package/dist/chunks/boost.mjs +246 -7
  2. package/dist/chunks/ccjk-mcp.mjs +1 -1
  3. package/dist/chunks/ccr.mjs +25 -28
  4. package/dist/chunks/check-updates.mjs +4 -3
  5. package/dist/chunks/claude-code-config-manager.mjs +1 -1
  6. package/dist/chunks/claude-code-incremental-manager.mjs +1 -1
  7. package/dist/chunks/claude-config.mjs +1 -1
  8. package/dist/chunks/codex-config-switch.mjs +3 -4
  9. package/dist/chunks/codex-provider-manager.mjs +1 -2
  10. package/dist/chunks/codex.mjs +204 -3
  11. package/dist/chunks/config-switch.mjs +2 -3
  12. package/dist/chunks/config.mjs +1 -1
  13. package/dist/chunks/doctor.mjs +1 -1
  14. package/dist/chunks/features.mjs +24 -15
  15. package/dist/chunks/hook-installer.mjs +44 -0
  16. package/dist/chunks/index3.mjs +32 -32
  17. package/dist/chunks/init.mjs +129 -87
  18. package/dist/chunks/installer2.mjs +1 -1
  19. package/dist/chunks/interview.mjs +1 -1
  20. package/dist/chunks/mcp.mjs +1058 -17
  21. package/dist/chunks/menu.mjs +140 -56
  22. package/dist/chunks/package.mjs +2 -210
  23. package/dist/chunks/platform.mjs +1 -1
  24. package/dist/chunks/quick-setup.mjs +35 -18
  25. package/dist/chunks/simple-config.mjs +1 -1
  26. package/dist/{shared/ccjk.q1koQxEE.mjs → chunks/smart-defaults.mjs} +77 -79
  27. package/dist/chunks/status.mjs +208 -101
  28. package/dist/chunks/thinking.mjs +1 -1
  29. package/dist/chunks/uninstall.mjs +6 -4
  30. package/dist/chunks/update.mjs +4 -7
  31. package/dist/chunks/version-checker.mjs +1 -1
  32. package/dist/cli.mjs +4 -80
  33. package/dist/index.d.mts +17 -1482
  34. package/dist/index.d.ts +17 -1482
  35. package/dist/index.mjs +12 -4191
  36. package/dist/shared/{ccjk.CSkyCZIM.mjs → ccjk.Bndhan7G.mjs} +4 -242
  37. package/dist/shared/ccjk.CeE8RLG2.mjs +62 -0
  38. package/dist/shared/ccjk.DKojSRzw.mjs +266 -0
  39. package/dist/shared/{ccjk.CItD1fpl.mjs → ccjk.DvIrK0wz.mjs} +1 -1
  40. package/dist/shared/ccjk.LsPZ2PYo.mjs +1048 -0
  41. package/package.json +1 -1
  42. package/dist/chunks/api-adapter.mjs +0 -180
  43. package/dist/chunks/cli.mjs +0 -2227
  44. package/dist/chunks/context-menu.mjs +0 -913
  45. package/dist/chunks/hooks-sync.mjs +0 -1627
  46. package/dist/chunks/mcp-market.mjs +0 -1077
  47. package/dist/chunks/mcp-server.mjs +0 -776
  48. package/dist/chunks/project-detector.mjs +0 -131
  49. package/dist/chunks/provider-registry.mjs +0 -92
  50. package/dist/chunks/setup-wizard.mjs +0 -362
  51. package/dist/chunks/tools.mjs +0 -143
  52. package/dist/chunks/workflows2.mjs +0 -232
  53. package/dist/shared/ccjk.C0pb50xH.mjs +0 -347
  54. package/dist/shared/ccjk.ChMkBmdL.mjs +0 -490
  55. package/dist/shared/ccjk.CtSfXUSh.mjs +0 -209
  56. package/dist/shared/ccjk.xfAjmbJp.mjs +0 -75
@@ -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.q1koQxEE.mjs';
11
- import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.CItD1fpl.mjs';
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 { r as runCcrMenuFeature } from './tools.mjs';
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 { status } = await import('./status.mjs');
352
- await status();
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
- export { showMainMenu };
546
+ const menu = {
547
+ __proto__: null,
548
+ showMainMenu: showMainMenu
549
+ };
550
+
551
+ export { showMainMenu as a, menu as m, showCcrMenu as s };
@@ -1,212 +1,4 @@
1
- const name = "ccjk";
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 { author, bin, bugs, packageJson as default, dependencies, description, devDependencies, engines, exports, files, homepage, keywords, license, main, module, name, packageManager, repository, scripts, sideEffects, type, types, version };
4
+ export { homepage, version };
@@ -388,4 +388,4 @@ const platform = {
388
388
  wrapCommandWithSudo: wrapCommandWithSudo
389
389
  };
390
390
 
391
- export { getMcpCommand as a, getPlatform as b, getHomebrewCommandPaths as c, isTermux as d, getTermuxPrefix as e, findCommandPath as f, getSystemRoot as g, isWSL as h, isWindows as i, getWSLInfo as j, commandExists as k, getRecommendedInstallMethods as l, findRealCommandPath as m, normalizeTomlPath as n, platform as p, shouldUseSudoForGlobalInstall as s, wrapCommandWithSudo as w };
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 { d as detectSmartDefaults } from '../shared/ccjk.q1koQxEE.mjs';
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 './constants.mjs';
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 '../shared/ccjk.CtSfXUSh.mjs';
26
- import './workflows2.mjs';
27
- import '../shared/ccjk.Br91zBIG.mjs';
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.xfAjmbJp.mjs';
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 'semver';
40
- import './codex.mjs';
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 { b as getPlatform } from './platform.mjs';
8
+ import { d as getPlatform } from './platform.mjs';
9
9
  import 'node:os';
10
10
  import './index.mjs';
11
11
  import 'node:process';