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.
Files changed (161) hide show
  1. package/dist/chunks/agent-teams.mjs +17 -18
  2. package/dist/chunks/agent.mjs +105 -102
  3. package/dist/chunks/agents.mjs +87 -77
  4. package/dist/chunks/api-cli.mjs +41 -27
  5. package/dist/chunks/api-providers.mjs +2 -4
  6. package/dist/chunks/api.mjs +22 -11
  7. package/dist/chunks/auto-bootstrap.mjs +3 -5
  8. package/dist/chunks/auto-init.mjs +3 -4
  9. package/dist/chunks/auto-updater.mjs +103 -91
  10. package/dist/chunks/banner.mjs +41 -42
  11. package/dist/chunks/boost.mjs +30 -31
  12. package/dist/chunks/ccjk-agents.mjs +6 -9
  13. package/dist/chunks/ccjk-all.mjs +703 -85
  14. package/dist/chunks/ccjk-config.mjs +6 -6
  15. package/dist/chunks/ccjk-hooks.mjs +20 -9
  16. package/dist/chunks/ccjk-mcp.mjs +64 -52
  17. package/dist/chunks/ccjk-setup.mjs +35 -25
  18. package/dist/chunks/ccjk-skills.mjs +51 -41
  19. package/dist/chunks/ccr.mjs +42 -32
  20. package/dist/chunks/ccu.mjs +16 -12
  21. package/dist/chunks/check-updates.mjs +30 -19
  22. package/dist/chunks/claude-code-config-manager.mjs +25 -10
  23. package/dist/chunks/claude-code-incremental-manager.mjs +65 -51
  24. package/dist/chunks/claude-config.mjs +2 -2
  25. package/dist/chunks/claude-wrapper.mjs +9 -6
  26. package/dist/chunks/cleanup-migration.mjs +1 -1
  27. package/dist/chunks/cli-hook.mjs +10 -3
  28. package/dist/chunks/cloud-sync.mjs +1 -1
  29. package/dist/chunks/codex-config-switch.mjs +58 -45
  30. package/dist/chunks/codex-provider-manager.mjs +29 -16
  31. package/dist/chunks/codex-uninstaller.mjs +5 -6
  32. package/dist/chunks/codex.mjs +89 -89
  33. package/dist/chunks/commands.mjs +28 -29
  34. package/dist/chunks/commands2.mjs +4 -3
  35. package/dist/chunks/commit.mjs +42 -23
  36. package/dist/chunks/completion.mjs +46 -47
  37. package/dist/chunks/config-consolidator.mjs +12 -13
  38. package/dist/chunks/config-switch.mjs +66 -53
  39. package/dist/chunks/config.mjs +10 -10
  40. package/dist/chunks/config2.mjs +53 -42
  41. package/dist/chunks/config3.mjs +107 -93
  42. package/dist/chunks/constants.mjs +2 -4
  43. package/dist/chunks/context-loader.mjs +5 -4
  44. package/dist/chunks/context.mjs +77 -76
  45. package/dist/chunks/convoy-manager.mjs +4 -4
  46. package/dist/chunks/dashboard.mjs +28 -29
  47. package/dist/chunks/doctor.mjs +68 -54
  48. package/dist/chunks/evolution.mjs +37 -38
  49. package/dist/chunks/features.mjs +103 -92
  50. package/dist/chunks/fs-operations.mjs +1 -1
  51. package/dist/chunks/health-alerts.mjs +1 -1
  52. package/dist/chunks/health-check.mjs +1 -1
  53. package/dist/chunks/help.mjs +117 -116
  54. package/dist/chunks/hook-installer.mjs +3 -2
  55. package/dist/chunks/index.mjs +20 -6
  56. package/dist/chunks/index10.mjs +1171 -0
  57. package/dist/chunks/index11.mjs +1008 -0
  58. package/dist/chunks/index12.mjs +193 -0
  59. package/dist/chunks/index13.mjs +218 -0
  60. package/dist/chunks/index14.mjs +663 -0
  61. package/dist/chunks/index2.mjs +19 -10
  62. package/dist/chunks/index3.mjs +19079 -164
  63. package/dist/chunks/index4.mjs +8 -1171
  64. package/dist/chunks/index5.mjs +7479 -884
  65. package/dist/chunks/index6.mjs +160 -184
  66. package/dist/chunks/index7.mjs +3573 -653
  67. package/dist/chunks/index8.mjs +19 -0
  68. package/dist/chunks/index9.mjs +616 -0
  69. package/dist/chunks/init.mjs +173 -173
  70. package/dist/chunks/installer.mjs +92 -82
  71. package/dist/chunks/installer2.mjs +3 -2
  72. package/dist/chunks/interview.mjs +118 -107
  73. package/dist/chunks/json-config.mjs +3 -2
  74. package/dist/chunks/linux.mjs +3863 -0
  75. package/dist/chunks/macos.mjs +69 -0
  76. package/dist/chunks/main.mjs +635 -0
  77. package/dist/chunks/marketplace.mjs +69 -66
  78. package/dist/chunks/mcp-cli.mjs +61 -48
  79. package/dist/chunks/mcp.mjs +140 -127
  80. package/dist/chunks/menu.mjs +85 -85
  81. package/dist/chunks/metrics-display.mjs +41 -40
  82. package/dist/chunks/migrator.mjs +4 -5
  83. package/dist/chunks/monitor.mjs +95 -95
  84. package/dist/chunks/notification.mjs +151 -141
  85. package/dist/chunks/onboarding.mjs +26 -15
  86. package/dist/chunks/package.mjs +1 -1
  87. package/dist/chunks/paradigm.mjs +24 -23
  88. package/dist/chunks/permission-manager.mjs +10 -11
  89. package/dist/chunks/permissions.mjs +72 -57
  90. package/dist/chunks/persistence-manager.mjs +97 -84
  91. package/dist/chunks/persistence.mjs +1 -1
  92. package/dist/chunks/platform.mjs +29 -29
  93. package/dist/chunks/plugin.mjs +104 -105
  94. package/dist/chunks/prompts.mjs +36 -25
  95. package/dist/chunks/providers.mjs +68 -69
  96. package/dist/chunks/quick-actions.mjs +71 -72
  97. package/dist/chunks/quick-provider.mjs +56 -40
  98. package/dist/chunks/quick-setup.mjs +71 -60
  99. package/dist/chunks/remote.mjs +21 -12
  100. package/dist/chunks/session.mjs +116 -103
  101. package/dist/chunks/sessions.mjs +29 -28
  102. package/dist/chunks/silent-updater.mjs +8 -10
  103. package/dist/chunks/simple-config.mjs +13 -10
  104. package/dist/chunks/skill.mjs +8560 -103
  105. package/dist/chunks/skills-sync.mjs +5212 -79
  106. package/dist/chunks/skills.mjs +105 -94
  107. package/dist/chunks/slash-commands.mjs +36 -37
  108. package/dist/chunks/smart-defaults.mjs +7 -3
  109. package/dist/chunks/smart-guide.mjs +1 -1
  110. package/dist/chunks/startup.mjs +2 -4
  111. package/dist/chunks/stats.mjs +41 -42
  112. package/dist/chunks/status.mjs +49 -50
  113. package/dist/chunks/team.mjs +24 -12
  114. package/dist/chunks/thinking.mjs +74 -63
  115. package/dist/chunks/trace.mjs +20 -19
  116. package/dist/chunks/uninstall.mjs +69 -56
  117. package/dist/chunks/update.mjs +39 -28
  118. package/dist/chunks/upgrade-manager.mjs +24 -18
  119. package/dist/chunks/version-checker.mjs +45 -41
  120. package/dist/chunks/vim.mjs +81 -69
  121. package/dist/chunks/windows.mjs +14 -0
  122. package/dist/chunks/workflows.mjs +15 -15
  123. package/dist/chunks/wsl.mjs +129 -0
  124. package/dist/chunks/zero-config.mjs +45 -34
  125. package/dist/cli.mjs +20 -20
  126. package/dist/index.mjs +41 -31
  127. package/dist/shared/ccjk.BAGoDD49.mjs +36 -0
  128. package/dist/shared/ccjk.BBtCGd_g.mjs +899 -0
  129. package/dist/shared/{ccjk.CGcy7cNM.mjs → ccjk.BDKUdmLk.mjs} +1 -1
  130. package/dist/shared/{ccjk.DtMBiwVG.mjs → ccjk.BFxsJM0k.mjs} +1 -1
  131. package/dist/shared/{ccjk.j4uut26D.mjs → ccjk.BIxuVL3_.mjs} +5 -5
  132. package/dist/shared/ccjk.BRZ9ww8S.mjs +142 -0
  133. package/dist/shared/{ccjk.CN0edl87.mjs → ccjk.BSYWk9ML.mjs} +1 -1
  134. package/dist/shared/{ccjk.Dk1HDseQ.mjs → ccjk.BnpWvs9V.mjs} +75 -75
  135. package/dist/shared/ccjk.BoApaI4j.mjs +28 -0
  136. package/dist/shared/{ccjk.DKojSRzw.mjs → ccjk.BrPUmTqm.mjs} +1 -1
  137. package/dist/shared/{ccjk.C10pepYx.mjs → ccjk.BxSmJ8B7.mjs} +1 -1
  138. package/dist/shared/ccjk.Bx_rmYfN.mjs +69 -0
  139. package/dist/shared/ccjk.COweQ1RR.mjs +5 -0
  140. package/dist/shared/{ccjk.BN90X6oc.mjs → ccjk.CePkJq2S.mjs} +17 -17
  141. package/dist/shared/{ccjk.Bvoex4TZ.mjs → ccjk.CfKKcvWy.mjs} +1 -1
  142. package/dist/shared/ccjk.Cjgrln_h.mjs +297 -0
  143. package/dist/shared/ccjk.CxpGa6MC.mjs +2724 -0
  144. package/dist/shared/{ccjk.DfwJOEok.mjs → ccjk.D5MFQT7w.mjs} +1 -1
  145. package/dist/shared/{ccjk.cChAaGgT.mjs → ccjk.DG_o24cZ.mjs} +6 -6
  146. package/dist/shared/{ccjk.bhFAMRyc.mjs → ccjk.DLLw-h4Y.mjs} +32 -32
  147. package/dist/shared/ccjk.DOwtZMk8.mjs +4019 -0
  148. package/dist/shared/{ccjk.BsXQugfY.mjs → ccjk.DTdjs-qK.mjs} +13 -13
  149. package/dist/shared/{ccjk.Bdhyg3X-.mjs → ccjk.DsYaCCx4.mjs} +1 -1
  150. package/dist/shared/ccjk.KfSWcGlE.mjs +38 -0
  151. package/dist/shared/ccjk.RyizuzOI.mjs +21 -0
  152. package/dist/shared/{ccjk.h7_W-wTs.mjs → ccjk.SPoXMvZD.mjs} +1 -1
  153. package/dist/shared/ccjk.T_cX87dY.mjs +15 -0
  154. package/dist/shared/{ccjk.CrB6OYHv.mjs → ccjk._dESH4Rk.mjs} +2 -2
  155. package/dist/shared/ccjk.bQ7Dh1g4.mjs +249 -0
  156. package/dist/shared/{ccjk.CBhIZiPz.mjs → ccjk.hoqrwWdN.mjs} +1 -1
  157. package/dist/shared/{ccjk.BNwRnWYx.mjs → ccjk.s7OCVzdd.mjs} +1230 -33
  158. package/dist/shared/{ccjk.BOIUTf5z.mjs → ccjk.waa2ikKJ.mjs} +8 -9
  159. package/package.json +31 -30
  160. package/dist/shared/ccjk.DHbrGcgg.mjs +0 -13
  161. 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,6 +1,6 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import { existsSync, mkdirSync } from 'node:fs';
3
- import { join, dirname } from 'pathe';
3
+ import { j as join, d as dirname } from './ccjk.bQ7Dh1g4.mjs';
4
4
 
5
5
  class TaskPersistence {
6
6
  db;
@@ -1,12 +1,12 @@
1
1
  import process__default from 'node:process';
2
- import ansis from 'ansis';
3
- import { ensureI18nInitialized, i18n } from '../chunks/index3.mjs';
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(ansis.green(`
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(ansis.red(`${i18n.t("errors:generalError")}:`), error);
18
+ console.error(a.red(`${i18n.t("errors:generalError")}:`), error);
19
19
  if (error instanceof Error) {
20
- console.error(ansis.gray(`${i18n.t("errors:stackTrace")}: ${error.stack}`));
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/index3.mjs';
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 ansis from 'ansis';
2
- import inquirer from 'inquirer';
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/index3.mjs';
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.DHbrGcgg.mjs';
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(ansis.yellow(`\u26A0\uFE0F Note: Built-in output styles (${styleId}) are deprecated in Claude Code 2.1+.`));
90
- console.log(ansis.gray(" Custom styles (linus-mode, etc.) stored as .md files are still fully supported."));
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(ansis.yellow(`\u26A0\uFE0F ${i18n.t("configuration:legacyFilesDetected")}`));
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(ansis.green(`\u2714 ${i18n.t("configuration:legacyFilesRemoved")}`));
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} - ${ansis.gray(styleInfo?.description || "")}`,
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(ansis.yellow(i18n.t("common:cancelled")));
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} - ${ansis.gray(styleInfo?.description || "")}`,
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} - ${ansis.gray(styleInfo?.description || "")}`,
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.green(`\u2714 ${i18n.t("configuration:outputStyleInstalled")}`));
276
- console.log(ansis.gray(` ${i18n.t("configuration:selectedStyles")}: ${selectedStyles.join(", ")}`));
277
- console.log(ansis.gray(` ${i18n.t("configuration:defaultStyle")}: ${defaultStyle}`));
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")} - ${ansis.gray(i18n.t("api:authTokenDesc"))}`,
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")} - ${ansis.gray(i18n.t("api:apiKeyDesc"))}`,
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.red(i18n.t("api:officialLoginFailed")));
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.yellow(i18n.t("common:cancelled")));
375
+ console.log(a.yellow(i18n.t("common:cancelled")));
376
376
  return null;
377
377
  }
378
- console.log(ansis.gray(` API Key: ${formatApiKeyDisplay(key)}`));
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.green(`\u2714 ${i18n.t("api:modificationSaved")}`));
427
- console.log(ansis.gray(` ${i18n.t("api:apiConfigUrl")}: ${savedConfig.url}`));
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.green(`\u2714 ${i18n.t("api:modificationSaved")}`));
455
- console.log(ansis.gray(` ${i18n.t("api:apiConfigKey")}: ${formatApiKeyDisplay(savedConfig.key)}`));
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.green(`\u2714 ${i18n.t("api:modificationSaved")}`));
476
- console.log(ansis.gray(` ${i18n.t("api:apiConfigAuthType")}: ${savedConfig.authType}`));
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(ansis.gray(`\u2714 ${i18n.t("configuration:backupSuccess")}: ${backupDir}`));
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(ansis.green(`\u2714 ${i18n.t("configuration:configSuccess")} ${CLAUDE_DIR}`));
490
+ console.log(a.green(`\u2714 ${i18n.t("configuration:configSuccess")} ${CLAUDE_DIR}`));
491
491
  console.log(`
492
- ${ansis.green(i18n.t("common:complete"))}`);
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(ansis.green(`
791
+ console.log(a.green(`
792
792
  \u2705 ${i18n.t("common:configurationFixed")}
793
793
  `));
794
- console.log(ansis.bold("Changes made:"));
794
+ console.log(a.bold("Changes made:"));
795
795
  for (const change of result.changes) {
796
- console.log(ansis.gray(` \u2022 ${change}`));
796
+ console.log(a.gray(` \u2022 ${change}`));
797
797
  }
798
798
  if (result.backupPath) {
799
- console.log(ansis.gray(`
799
+ console.log(a.gray(`
800
800
  \u{1F4E6} Backup created: ${result.backupPath}`));
801
801
  }
802
- console.log(ansis.yellow("\n\u26A0\uFE0F Please restart Claude Code CLI for changes to take effect.\n"));
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(ansis.green(`
804
+ console.log(a.green(`
805
805
  \u2705 ${i18n.t("common:noMigrationNeeded")}
806
806
  `));
807
807
  }
808
808
  } else {
809
- console.log(ansis.red(`
809
+ console.log(a.red(`
810
810
  \u274C ${i18n.t("common:migrationFailed")}
811
811
  `));
812
812
  if (result.errors.length > 0) {
813
- console.log(ansis.bold("Errors:"));
813
+ console.log(a.bold("Errors:"));
814
814
  for (const error of result.errors) {
815
- console.log(ansis.red(` \u2022 ${error}`));
815
+ console.log(a.red(` \u2022 ${error}`));
816
816
  }
817
817
  }
818
818
  if (result.backupPath) {
819
- console.log(ansis.gray(`
819
+ console.log(a.gray(`
820
820
  \u{1F4E6} Backup available at: ${result.backupPath}`));
821
- console.log(ansis.gray("You can restore with: cp <backup-path>/settings.json ~/.claude/settings.json\n"));
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('inquirer');
828
- console.log(ansis.yellow("\n\u26A0\uFE0F Problematic configuration detected!\n"));
829
- console.log(ansis.gray("Your settings.json contains configurations that prevent Claude Code"));
830
- console.log(ansis.gray("from retrieving token counts, causing /compact failures.\n"));
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) => ansis.bgGreen.black(` ${text} `),
850
- popular: (text) => ansis.bgYellow.black(` ${text} `),
851
- new: (text) => ansis.bgCyan.black(` ${text} `),
852
- essential: (text) => ansis.bgBlue.white(` ${text} `),
853
- professional: (text) => ansis.bgMagenta.white(` ${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 ? ansis.dim(workflow.stats) : "";
860
- const description = workflow.description ? ansis.gray(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(ansis.bold.cyan("\u2501".repeat(60)));
881
- console.log(ansis.bold.white(` \u{1F680} ${i18n.t("workflow:selectWorkflowType")}`));
882
- console.log(ansis.bold.cyan("\u2501".repeat(60)));
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(ansis.yellow(i18n.t("common:cancelled")));
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(ansis.green(`
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(ansis.gray(` \u2714 ${i18n.t("workflow:installedCommand")}: ccjk/${destFileName}`));
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(ansis.red(` \u2717 ${errorMsg}`));
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(ansis.gray(` \u2714 ${i18n.t("workflow:installedAgent")}: ccjk/${config.category}/${agent.filename}`));
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(ansis.red(` \u2717 ${errorMsg}`));
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(ansis.green(`\u2714 ${workflowName} ${i18n.t("workflow:workflowInstallSuccess")}`));
1011
+ console.log(a.green(`\u2714 ${workflowName} ${i18n.t("workflow:workflowInstallSuccess")}`));
1012
1012
  } else {
1013
- console.log(ansis.red(`\u2717 ${workflowName} ${i18n.t("workflow:workflowInstallError")}`));
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(ansis.green(`
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(ansis.gray(` \u2714 ${i18n.t("workflow:removedOldFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
1033
+ console.log(a.gray(` \u2714 ${i18n.t("workflow:removedOldFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
1034
1034
  } catch {
1035
- console.error(ansis.yellow(` \u26A0 ${i18n.t("errors:failedToRemoveFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
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(ansis.gray(` \u2714 ${i18n.t("workflow:removedOldFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
1043
+ console.log(a.gray(` \u2714 ${i18n.t("workflow:removedOldFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
1044
1044
  } catch {
1045
- console.error(ansis.yellow(` \u26A0 ${i18n.t("errors:failedToRemoveFile")}: ${file.replace(CLAUDE_DIR, "~/.claude")}`));
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 'pathe';
4
+ import { j as join } from './ccjk.bQ7Dh1g4.mjs';
5
5
 
6
6
  function scanProject(cwd) {
7
7
  const root = cwd || process__default.cwd();