ccjk 12.1.0 → 12.2.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 (44) hide show
  1. package/dist/chunks/api-cli.mjs +1 -1
  2. package/dist/chunks/auto-memory-bridge.mjs +215 -0
  3. package/dist/chunks/boost.mjs +8 -1
  4. package/dist/chunks/ccjk-mcp.mjs +2 -2
  5. package/dist/chunks/ccr.mjs +2 -3
  6. package/dist/chunks/claude-code-config-manager.mjs +1 -1
  7. package/dist/chunks/claude-code-incremental-manager.mjs +4 -4
  8. package/dist/chunks/claude-config.mjs +2 -2
  9. package/dist/chunks/claude-wrapper.mjs +1 -1
  10. package/dist/chunks/codex-config-switch.mjs +1 -1
  11. package/dist/chunks/codex-provider-manager.mjs +1 -1
  12. package/dist/chunks/codex.mjs +3 -3
  13. package/dist/chunks/config.mjs +2 -2
  14. package/dist/chunks/config2.mjs +1 -1
  15. package/dist/chunks/doctor.mjs +1 -1
  16. package/dist/chunks/index4.mjs +9 -1
  17. package/dist/chunks/index5.mjs +2 -0
  18. package/dist/chunks/init.mjs +5 -5
  19. package/dist/chunks/installer.mjs +1 -1
  20. package/dist/chunks/linux.mjs +9 -9
  21. package/dist/chunks/mcp-cli.mjs +1 -1
  22. package/dist/chunks/mcp.mjs +2 -2
  23. package/dist/chunks/memory.mjs +231 -0
  24. package/dist/chunks/menu-hierarchical.mjs +2 -3
  25. package/dist/chunks/menu.mjs +759 -12
  26. package/dist/chunks/onboarding-wizard.mjs +9 -2
  27. package/dist/chunks/package.mjs +1 -1
  28. package/dist/chunks/platform.mjs +1 -1
  29. package/dist/chunks/quick-actions.mjs +8 -1
  30. package/dist/chunks/quick-provider.mjs +2 -0
  31. package/dist/chunks/quick-setup.mjs +1 -1
  32. package/dist/chunks/status.mjs +8 -1
  33. package/dist/chunks/update.mjs +2 -2
  34. package/dist/cli.mjs +37 -0
  35. package/dist/i18n/locales/en/memory.json +21 -90
  36. package/dist/i18n/locales/en/menu.json +3 -2
  37. package/dist/i18n/locales/zh-CN/memory.json +21 -90
  38. package/dist/i18n/locales/zh-CN/menu.json +3 -2
  39. package/dist/shared/ccjk.CfrpIIKy.mjs +3361 -0
  40. package/dist/shared/{ccjk.Dx-O9dWz.mjs → ccjk.DOBWBkFR.mjs} +1 -1
  41. package/dist/shared/{ccjk.waa2ikKJ.mjs → ccjk.KpFl2RDA.mjs} +3 -3
  42. package/package.json +62 -65
  43. package/dist/chunks/features.mjs +0 -699
  44. package/dist/shared/ccjk.CNMWk_mE.mjs +0 -400
@@ -1,6 +1,6 @@
1
1
  import a from './index2.mjs';
2
2
  import { i18n } from './index5.mjs';
3
- import { f as configureApi, e as getExistingApiConfig } from './config.mjs';
3
+ import { d as configureApi, g as getExistingApiConfig } from './config.mjs';
4
4
  import { g as getAllPresets } from '../shared/ccjk.CL4Yat0G.mjs';
5
5
  import '../shared/ccjk.BAGoDD49.mjs';
6
6
  import 'node:fs';
@@ -0,0 +1,215 @@
1
+ import { stat, writeFile, readdir, readFile } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
4
+
5
+ function parseAutoMemory(content) {
6
+ const lines = content.split("\n");
7
+ const entries = [];
8
+ let currentEntry = null;
9
+ for (const line of lines) {
10
+ const headerMatch = line.match(/^(#{1,6})\s+(.+)$/);
11
+ if (headerMatch) {
12
+ if (currentEntry && currentEntry.content.length > 0) {
13
+ entries.push(currentEntry);
14
+ }
15
+ currentEntry = {
16
+ title: headerMatch[2].trim(),
17
+ content: [],
18
+ level: headerMatch[1].length
19
+ };
20
+ } else if (currentEntry && line.trim()) {
21
+ currentEntry.content.push(line);
22
+ }
23
+ }
24
+ if (currentEntry && currentEntry.content.length > 0) {
25
+ entries.push(currentEntry);
26
+ }
27
+ return entries;
28
+ }
29
+ function autoMemoryToBrainContext(entries, projectPath) {
30
+ const context = {
31
+ facts: [],
32
+ patterns: [],
33
+ decisions: [],
34
+ metadata: {
35
+ source: "auto-memory",
36
+ projectPath,
37
+ syncedAt: (/* @__PURE__ */ new Date()).toISOString()
38
+ }
39
+ };
40
+ for (const entry of entries) {
41
+ const contentText = entry.content.join("\n").trim();
42
+ const titleLower = entry.title.toLowerCase();
43
+ if (titleLower.includes("architecture") || titleLower.includes("pattern") || titleLower.includes("design")) {
44
+ context.patterns.push({
45
+ name: entry.title,
46
+ description: contentText,
47
+ category: "architecture"
48
+ });
49
+ } else if (titleLower.includes("decision") || titleLower.includes("choice") || titleLower.includes("why")) {
50
+ context.decisions.push({
51
+ decision: entry.title,
52
+ rationale: contentText,
53
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
54
+ });
55
+ } else {
56
+ context.facts.push({
57
+ key: entry.title,
58
+ value: contentText,
59
+ confidence: 0.9
60
+ });
61
+ }
62
+ }
63
+ return context;
64
+ }
65
+ function brainContextToAutoMemory(context) {
66
+ const lines = [];
67
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
68
+ lines.push("# CCJK Brain Memory");
69
+ lines.push("");
70
+ lines.push(`Last synced: ${timestamp}`);
71
+ lines.push("");
72
+ if (context.facts.length > 0) {
73
+ lines.push("## Key Facts");
74
+ lines.push("");
75
+ for (const fact of context.facts) {
76
+ lines.push(`### ${fact.key}`);
77
+ lines.push(fact.value);
78
+ lines.push("");
79
+ }
80
+ }
81
+ if (context.patterns.length > 0) {
82
+ lines.push("## Patterns & Architecture");
83
+ lines.push("");
84
+ for (const pattern of context.patterns) {
85
+ lines.push(`### ${pattern.name}`);
86
+ lines.push(pattern.description);
87
+ if (pattern.category) {
88
+ lines.push(`Category: ${pattern.category}`);
89
+ }
90
+ lines.push("");
91
+ }
92
+ }
93
+ if (context.decisions.length > 0) {
94
+ lines.push("## Decisions");
95
+ lines.push("");
96
+ for (const decision of context.decisions) {
97
+ lines.push(`### ${decision.decision}`);
98
+ lines.push(decision.rationale);
99
+ if (decision.timestamp) {
100
+ lines.push(`Decided: ${decision.timestamp}`);
101
+ }
102
+ lines.push("");
103
+ }
104
+ }
105
+ return lines.join("\n");
106
+ }
107
+ async function findAutoMemoryFiles(claudeProjectsDir) {
108
+ const baseDir = claudeProjectsDir || join(homedir(), ".claude", "projects");
109
+ const documents = [];
110
+ try {
111
+ const projectDirs = await readdir(baseDir);
112
+ for (const projectDir of projectDirs) {
113
+ const memoryPath = join(baseDir, projectDir, "memory", "MEMORY.md");
114
+ try {
115
+ const content = await readFile(memoryPath, "utf-8");
116
+ const entries = parseAutoMemory(content);
117
+ const projectPath = projectDir.startsWith("-") ? projectDir.slice(1).replace(/-/g, "/") : projectDir;
118
+ documents.push({
119
+ projectPath,
120
+ entries,
121
+ rawContent: content
122
+ });
123
+ } catch (err) {
124
+ continue;
125
+ }
126
+ }
127
+ } catch (err) {
128
+ return [];
129
+ }
130
+ return documents;
131
+ }
132
+ async function syncAutoMemoryToBrain(session, config) {
133
+ const documents = await findAutoMemoryFiles(config?.claudeProjectsDir);
134
+ for (const doc of documents) {
135
+ if (session.metadata?.projectPath === doc.projectPath) {
136
+ const brainContext = autoMemoryToBrainContext(doc.entries, doc.projectPath);
137
+ session.context.facts.push(...brainContext.facts);
138
+ session.context.patterns.push(...brainContext.patterns);
139
+ session.context.decisions.push(...brainContext.decisions);
140
+ session.metadata = {
141
+ ...session.metadata,
142
+ autoMemorySyncedAt: (/* @__PURE__ */ new Date()).toISOString()
143
+ };
144
+ }
145
+ }
146
+ }
147
+ async function syncBrainToAutoMemory(session, config) {
148
+ if (!config?.bidirectional) {
149
+ return;
150
+ }
151
+ const projectPath = session.metadata?.projectPath;
152
+ if (!projectPath) {
153
+ return;
154
+ }
155
+ const baseDir = config.claudeProjectsDir || join(homedir(), ".claude", "projects");
156
+ const projectDirName = "-" + projectPath.replace(/\//g, "-");
157
+ const memoryDir = join(baseDir, projectDirName, "memory");
158
+ const memoryPath = join(memoryDir, "MEMORY.md");
159
+ const content = brainContextToAutoMemory(session.context);
160
+ try {
161
+ await stat(memoryDir);
162
+ } catch {
163
+ return;
164
+ }
165
+ await writeFile(memoryPath, content, "utf-8");
166
+ }
167
+ class AutoMemoryBridge {
168
+ config;
169
+ syncTimer;
170
+ constructor(config) {
171
+ this.config = {
172
+ claudeProjectsDir: config?.claudeProjectsDir || join(homedir(), ".claude", "projects"),
173
+ syncInterval: config?.syncInterval ?? 0,
174
+ bidirectional: config?.bidirectional ?? false
175
+ };
176
+ }
177
+ /**
178
+ * Start periodic sync
179
+ */
180
+ startSync(session) {
181
+ if (this.config.syncInterval <= 0) {
182
+ return;
183
+ }
184
+ this.syncTimer = setInterval(async () => {
185
+ try {
186
+ await syncAutoMemoryToBrain(session, this.config);
187
+ if (this.config.bidirectional) {
188
+ await syncBrainToAutoMemory(session, this.config);
189
+ }
190
+ } catch (err) {
191
+ console.error("Auto-memory sync failed:", err);
192
+ }
193
+ }, this.config.syncInterval);
194
+ }
195
+ /**
196
+ * Stop periodic sync
197
+ */
198
+ stopSync() {
199
+ if (this.syncTimer) {
200
+ clearInterval(this.syncTimer);
201
+ this.syncTimer = void 0;
202
+ }
203
+ }
204
+ /**
205
+ * Perform one-time sync
206
+ */
207
+ async sync(session) {
208
+ await syncAutoMemoryToBrain(session, this.config);
209
+ if (this.config.bidirectional) {
210
+ await syncBrainToAutoMemory(session, this.config);
211
+ }
212
+ }
213
+ }
214
+
215
+ export { AutoMemoryBridge, autoMemoryToBrainContext, brainContextToAutoMemory, findAutoMemoryFiles, parseAutoMemory, syncAutoMemoryToBrain, syncBrainToAutoMemory };
@@ -3,11 +3,18 @@ import { existsSync, readFileSync } from 'node:fs';
3
3
  import process__default from 'node:process';
4
4
  import { SETTINGS_FILE } from './constants.mjs';
5
5
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
6
- import { r as runHealthCheck } from '../shared/ccjk.CNMWk_mE.mjs';
6
+ import { r as runHealthCheck } from '../shared/ccjk.CfrpIIKy.mjs';
7
7
  import '../shared/ccjk.BAGoDD49.mjs';
8
8
  import 'node:os';
9
9
  import './index5.mjs';
10
10
  import 'node:url';
11
+ import 'fs';
12
+ import 'constants';
13
+ import 'stream';
14
+ import 'util';
15
+ import 'assert';
16
+ import 'path';
17
+ import 'node:path';
11
18
 
12
19
  function analyzeProject(root) {
13
20
  const cwd = process__default.cwd();
@@ -6,8 +6,8 @@ import { i as inquirer } from './index3.mjs';
6
6
  import { a as analyzeProject } from '../shared/ccjk.DS7UESmF.mjs';
7
7
  import { CLAUDE_DIR } from './constants.mjs';
8
8
  import { ensureI18nInitialized, i18n } from './index5.mjs';
9
- import { b as backupMcpConfig, r as readMcpConfig, m as mergeMcpServers, w as writeMcpConfig } from './claude-config.mjs';
10
- import { h as commandExists } from './platform.mjs';
9
+ import { c as backupMcpConfig, r as readMcpConfig, m as mergeMcpServers, w as writeMcpConfig } from './claude-config.mjs';
10
+ import { e as commandExists } from './platform.mjs';
11
11
  import '../shared/ccjk.BAGoDD49.mjs';
12
12
  import 'node:readline';
13
13
  import 'stream';
@@ -50,10 +50,9 @@ import '../shared/ccjk.BWFpnOr3.mjs';
50
50
  import '../shared/ccjk.Cjj8SVrn.mjs';
51
51
  import './smart-defaults.mjs';
52
52
  import '../shared/ccjk.BrPUmTqm.mjs';
53
- import './features.mjs';
54
53
  import './config2.mjs';
55
54
  import './init.mjs';
56
- import '../shared/ccjk.Dx-O9dWz.mjs';
55
+ import '../shared/ccjk.DOBWBkFR.mjs';
57
56
  import './auto-updater.mjs';
58
57
  import './version-checker.mjs';
59
58
  import './installer.mjs';
@@ -78,7 +77,7 @@ import './uninstall.mjs';
78
77
  import '../shared/ccjk.CvChMYvB.mjs';
79
78
  import 'globby';
80
79
  import './update.mjs';
81
- import '../shared/ccjk.waa2ikKJ.mjs';
80
+ import '../shared/ccjk.KpFl2RDA.mjs';
82
81
 
83
82
  async function ccr(options = {}) {
84
83
  try {
@@ -1,7 +1,7 @@
1
1
  import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
2
2
  import { ZCF_CONFIG_FILE, ZCF_CONFIG_DIR, SETTINGS_FILE } from './constants.mjs';
3
3
  import { readDefaultTomlConfig, createDefaultTomlConfig, writeTomlConfig } from './ccjk-config.mjs';
4
- import { h as clearModelEnv } from './config.mjs';
4
+ import { a as clearModelEnv } from './config.mjs';
5
5
  import { ensureDir, exists, copyFile } from './fs-operations.mjs';
6
6
  import { readJsonConfig } from './json-config.mjs';
7
7
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
@@ -4,7 +4,7 @@ import { ensureI18nInitialized, i18n } from './index5.mjs';
4
4
  import { ClaudeCodeConfigManager } from './claude-code-config-manager.mjs';
5
5
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
6
6
  import { p as promptBoolean } from '../shared/ccjk.BWFpnOr3.mjs';
7
- import { v as validateApiKey } from '../shared/ccjk.Dx-O9dWz.mjs';
7
+ import { v as validateApiKey } from '../shared/ccjk.DOBWBkFR.mjs';
8
8
  import '../shared/ccjk.BAGoDD49.mjs';
9
9
  import 'node:readline';
10
10
  import 'stream';
@@ -202,7 +202,7 @@ ${i18n.t("multi-config:addingNewProfile")}`));
202
202
  ]);
203
203
  let modelConfig = null;
204
204
  if (selectedProvider === "custom") {
205
- const { promptCustomModels } = await import('./features.mjs');
205
+ const { promptCustomModels } = await import('./menu.mjs').then(function (n) { return n.f; });
206
206
  modelConfig = await promptCustomModels();
207
207
  }
208
208
  const setAsDefault = await promptBoolean({
@@ -385,7 +385,7 @@ ${i18n.t("multi-config:editingProfile", { name: selectedProfile.name })}`));
385
385
  ]);
386
386
  let modelConfig = null;
387
387
  if (selectedProfile.authType !== "ccr_proxy") {
388
- const { promptCustomModels } = await import('./features.mjs');
388
+ const { promptCustomModels } = await import('./menu.mjs').then(function (n) { return n.f; });
389
389
  modelConfig = await promptCustomModels(
390
390
  selectedProfile.primaryModel,
391
391
  selectedProfile.defaultHaikuModel,
@@ -512,7 +512,7 @@ ${i18n.t("multi-config:copyingProfile", { name: selectedProfile.name })}`));
512
512
  const answers = await inquirer.prompt(questions);
513
513
  let modelConfig = null;
514
514
  if (selectedProfile.authType !== "ccr_proxy") {
515
- const { promptCustomModels } = await import('./features.mjs');
515
+ const { promptCustomModels } = await import('./menu.mjs').then(function (n) { return n.f; });
516
516
  modelConfig = await promptCustomModels(
517
517
  selectedProfile.primaryModel,
518
518
  selectedProfile.defaultHaikuModel,
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { CLAUDE_VSC_CONFIG_FILE, CLAUDE_DIR, ClAUDE_CONFIG_FILE } from './constants.mjs';
3
3
  import { ensureI18nInitialized, i18n } from './index5.mjs';
4
4
  import { readJsonConfig, writeJsonConfig, backupJsonConfig } from './json-config.mjs';
5
- import { i as isWindows, m as getMcpCommand } from './platform.mjs';
5
+ import { k as isWindows, m as getMcpCommand } from './platform.mjs';
6
6
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
7
7
 
8
8
  function mergeArraysUnique(arr1, arr2) {
@@ -233,4 +233,4 @@ const claudeConfig = {
233
233
  writeMcpConfig: writeMcpConfig
234
234
  };
235
235
 
236
- export { buildMcpServerConfig as a, backupMcpConfig as b, addCompletedOnboarding as c, deepMerge as d, replaceMcpServers as e, fixWindowsMcpConfig as f, syncMcpPermissions as g, claudeConfig as h, mergeMcpServers as m, readMcpConfig as r, setPrimaryApiKey as s, writeMcpConfig as w };
236
+ export { addCompletedOnboarding as a, buildMcpServerConfig as b, backupMcpConfig as c, deepMerge as d, replaceMcpServers as e, fixWindowsMcpConfig as f, syncMcpPermissions as g, claudeConfig as h, mergeMcpServers as m, readMcpConfig as r, setPrimaryApiKey as s, writeMcpConfig as w };
@@ -1,7 +1,7 @@
1
1
  import process__default from 'node:process';
2
2
  import { exec as q } from './main.mjs';
3
3
  import { i18n, initI18n } from './index5.mjs';
4
- import { k as findRealCommandPath } from './platform.mjs';
4
+ import { j as findRealCommandPath } from './platform.mjs';
5
5
  import 'module';
6
6
  import 'node:child_process';
7
7
  import 'node:path';
@@ -5,7 +5,7 @@ import { ensureI18nInitialized, i18n } from './index5.mjs';
5
5
  import { readJsonConfig } from './json-config.mjs';
6
6
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
7
7
  import { p as promptBoolean } from '../shared/ccjk.BWFpnOr3.mjs';
8
- import { h as detectConfigManagementMode } from './codex.mjs';
8
+ import { f as detectConfigManagementMode } from './codex.mjs';
9
9
  import { deleteProviders, addProviderToExisting, editExistingProvider } from './codex-provider-manager.mjs';
10
10
  import '../shared/ccjk.BAGoDD49.mjs';
11
11
  import 'node:readline';
@@ -1,5 +1,5 @@
1
1
  import { ensureI18nInitialized, i18n } from './index5.mjs';
2
- import { a as readCodexConfig, e as backupCodexComplete, w as writeCodexConfig, f as writeAuthFile } from './codex.mjs';
2
+ import { a as readCodexConfig, d as backupCodexComplete, w as writeCodexConfig, e as writeAuthFile } from './codex.mjs';
3
3
  import 'node:fs';
4
4
  import 'node:process';
5
5
  import 'node:url';
@@ -10,10 +10,10 @@ import { x as K } from './main.mjs';
10
10
  import { CODEX_AUTH_FILE, SUPPORTED_LANGS, CODEX_DIR, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CODEX_CONFIG_FILE, AI_OUTPUT_LANGUAGES, ZCF_CONFIG_FILE } from './constants.mjs';
11
11
  import { ensureI18nInitialized, i18n, format } from './index5.mjs';
12
12
  import { updateZcfConfig, readZcfConfig, readDefaultTomlConfig, updateTomlConfig } from './ccjk-config.mjs';
13
- import { a as applyAiLanguageDirective } from './config.mjs';
13
+ import { e as applyAiLanguageDirective } from './config.mjs';
14
14
  import { exists, readFile, ensureDir, writeFileAtomic, writeFile, copyFile, copyDir } from './fs-operations.mjs';
15
15
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
16
- import { i as isWindows, m as getMcpCommand, l as getSystemRoot, w as wrapCommandWithSudo, n as normalizeTomlPath } from './platform.mjs';
16
+ import { k as isWindows, m as getMcpCommand, l as getSystemRoot, w as wrapCommandWithSudo, n as normalizeTomlPath } from './platform.mjs';
17
17
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
18
18
  import { resolveAiOutputLanguage } from './prompts.mjs';
19
19
  import { p as promptBoolean } from '../shared/ccjk.BWFpnOr3.mjs';
@@ -2074,4 +2074,4 @@ const codex = {
2074
2074
  writeCodexConfig: writeCodexConfig
2075
2075
  };
2076
2076
 
2077
- export { MCP_SERVICE_CONFIGS as M, readCodexConfig as a, switchToOfficialLogin as b, switchToProvider as c, selectMcpServices as d, backupCodexComplete as e, writeAuthFile as f, getMcpServices as g, detectConfigManagementMode as h, getMcpService as i, dynamicMcpRegistry as j, applyCodexPlatformCommand as k, listCodexProviders as l, runCodexFullInit as m, codex as n, runCodexUpdate as r, switchCodexProvider as s, writeCodexConfig as w };
2077
+ export { MCP_SERVICE_CONFIGS as M, readCodexConfig as a, switchToOfficialLogin as b, switchToProvider as c, backupCodexComplete as d, writeAuthFile as e, detectConfigManagementMode as f, getMcpServices as g, getMcpService as h, dynamicMcpRegistry as i, applyCodexPlatformCommand as j, selectMcpServices as k, listCodexProviders as l, runCodexFullInit as m, codex as n, runCodexUpdate as r, switchCodexProvider as s, writeCodexConfig as w };
@@ -4,7 +4,7 @@ import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
4
4
  import { i as inquirer } from './index3.mjs';
5
5
  import { CLAUDE_DIR, SETTINGS_FILE, CLAUDE_VSC_CONFIG_FILE, AI_OUTPUT_LANGUAGES } from './constants.mjs';
6
6
  import { ensureI18nInitialized, i18n } from './index5.mjs';
7
- import { s as setPrimaryApiKey, c as addCompletedOnboarding, d as deepMerge } from './claude-config.mjs';
7
+ import { s as setPrimaryApiKey, a as addCompletedOnboarding, d as deepMerge } from './claude-config.mjs';
8
8
  import { exists, ensureDir, copyDir, writeFileAtomic, copyFile } from './fs-operations.mjs';
9
9
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
10
10
  import { m as mergeAndCleanPermissions } from '../shared/ccjk.DXRAZcix.mjs';
@@ -376,4 +376,4 @@ const config = {
376
376
  updateDefaultModel: updateDefaultModel
377
377
  };
378
378
 
379
- export { applyAiLanguageDirective as a, backupExistingConfig as b, copyConfigFiles as c, updateDefaultModel as d, getExistingApiConfig as e, configureApi as f, getExistingModelConfig as g, clearModelEnv as h, ensureClaudeDir as i, config as j, promptApiConfigurationAction as p, switchToOfficialLogin as s, updateCustomModel as u };
379
+ export { clearModelEnv as a, backupExistingConfig as b, copyConfigFiles as c, configureApi as d, applyAiLanguageDirective as e, getExistingModelConfig as f, getExistingApiConfig as g, updateDefaultModel as h, ensureClaudeDir as i, config as j, promptApiConfigurationAction as p, switchToOfficialLogin as s, updateCustomModel as u };
@@ -8,7 +8,7 @@ import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
8
8
  import { i as inquirer } from './index3.mjs';
9
9
  import { SETTINGS_FILE } from './constants.mjs';
10
10
  import { ensureI18nInitialized, i18n } from './index5.mjs';
11
- import { s as setPrimaryApiKey, c as addCompletedOnboarding } from './claude-config.mjs';
11
+ import { s as setPrimaryApiKey, a as addCompletedOnboarding } from './claude-config.mjs';
12
12
  import { b as backupExistingConfig } from './config.mjs';
13
13
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
14
14
  import { p as promptBoolean } from '../shared/ccjk.BWFpnOr3.mjs';
@@ -6,7 +6,7 @@ import { getApiProviderPresets } from './api-providers.mjs';
6
6
  import { SETTINGS_FILE, CLAUDE_DIR } from './constants.mjs';
7
7
  import { i18n } from './index5.mjs';
8
8
  import { g as getPermissionManager } from '../shared/ccjk.SPoXMvZD.mjs';
9
- import { h as commandExists } from './platform.mjs';
9
+ import { e as commandExists } from './platform.mjs';
10
10
  import { P as ProviderHealthMonitor } from '../shared/ccjk.J8YiPsOw.mjs';
11
11
  import { platform, userInfo, homedir } from 'node:os';
12
12
  import ora from './index7.mjs';
@@ -1,4 +1,4 @@
1
- export { r as runHealthCheck } from '../shared/ccjk.CNMWk_mE.mjs';
1
+ export { r as runHealthCheck } from '../shared/ccjk.CfrpIIKy.mjs';
2
2
  import 'node:fs';
3
3
  import './constants.mjs';
4
4
  import 'node:os';
@@ -6,3 +6,11 @@ import './index5.mjs';
6
6
  import 'node:process';
7
7
  import 'node:url';
8
8
  import '../shared/ccjk.bQ7Dh1g4.mjs';
9
+ import '../shared/ccjk.BAGoDD49.mjs';
10
+ import 'fs';
11
+ import 'constants';
12
+ import 'stream';
13
+ import 'util';
14
+ import 'assert';
15
+ import 'path';
16
+ import 'node:path';
@@ -7469,6 +7469,8 @@ const NAMESPACES = [
7469
7469
  "marketplace",
7470
7470
  // Marketplace system for plugins, skills, and workflows
7471
7471
  "mcp",
7472
+ "memory",
7473
+ // Memory management - Claude auto-memory + CCJK Brain
7472
7474
  "menu",
7473
7475
  "multi-config",
7474
7476
  "notification",
@@ -2,8 +2,8 @@ import a from './index2.mjs';
2
2
  import { i as inquirer } from './index3.mjs';
3
3
  import { existsSync } from 'node:fs';
4
4
  import process__default from 'node:process';
5
- import { m as runCodexFullInit, d as selectMcpServices, g as getMcpServices, M as MCP_SERVICE_CONFIGS } from './codex.mjs';
6
- import { a as modifyApiConfigPartially, b as configureApiCompletely, n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration, s as selectAndInstallWorkflows, c as configureOutputStyle, f as formatApiKeyDisplay, W as WORKFLOW_CONFIG_BASE } from '../shared/ccjk.Dx-O9dWz.mjs';
5
+ import { m as runCodexFullInit, k as selectMcpServices, g as getMcpServices, M as MCP_SERVICE_CONFIGS } from './codex.mjs';
6
+ import { a as modifyApiConfigPartially, b as configureApiCompletely, n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration, s as selectAndInstallWorkflows, c as configureOutputStyle, f as formatApiKeyDisplay, W as WORKFLOW_CONFIG_BASE } from '../shared/ccjk.DOBWBkFR.mjs';
7
7
  import { SETTINGS_FILE, DEFAULT_CODE_TOOL_TYPE, CODE_TOOL_BANNERS, API_DEFAULT_URL } from './constants.mjs';
8
8
  import { ensureI18nInitialized, i18n } from './index5.mjs';
9
9
  import { displayBannerWithInfo, padToDisplayWidth } from './banner.mjs';
@@ -12,12 +12,12 @@ import { readCcrConfig, backupCcrConfig, createDefaultCcrConfig, writeCcrConfig,
12
12
  import { exec } from 'node:child_process';
13
13
  import { promisify } from 'node:util';
14
14
  import { updateCcr } from './auto-updater.mjs';
15
- import { w as wrapCommandWithSudo, i as isWindows, b as isTermux } from './platform.mjs';
16
- import { c as addCompletedOnboarding, s as setPrimaryApiKey, b as backupMcpConfig, a as buildMcpServerConfig, r as readMcpConfig, e as replaceMcpServers, f as fixWindowsMcpConfig, w as writeMcpConfig, g as syncMcpPermissions } from './claude-config.mjs';
15
+ import { w as wrapCommandWithSudo, k as isWindows, i as isTermux } from './platform.mjs';
16
+ import { a as addCompletedOnboarding, s as setPrimaryApiKey, c as backupMcpConfig, b as buildMcpServerConfig, r as readMcpConfig, e as replaceMcpServers, f as fixWindowsMcpConfig, w as writeMcpConfig, g as syncMcpPermissions } from './claude-config.mjs';
17
17
  import { r as resolveCodeType } from '../shared/ccjk.Cjj8SVrn.mjs';
18
18
  import { exists } from './fs-operations.mjs';
19
19
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
20
- import { p as promptApiConfigurationAction, i as ensureClaudeDir, e as getExistingApiConfig, s as switchToOfficialLogin, b as backupExistingConfig, c as copyConfigFiles, a as applyAiLanguageDirective, f as configureApi } from './config.mjs';
20
+ import { p as promptApiConfigurationAction, i as ensureClaudeDir, g as getExistingApiConfig, s as switchToOfficialLogin, b as backupExistingConfig, c as copyConfigFiles, e as applyAiLanguageDirective, d as configureApi } from './config.mjs';
21
21
  import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.BIxuVL3_.mjs';
22
22
  import { getInstallationStatus, installClaudeCode } from './installer.mjs';
23
23
  import { p as parseOrchestrationLevel, w as writeOrchestrationPolicy } from './smart-defaults.mjs';
@@ -8,7 +8,7 @@ import { exec as q } from './main.mjs';
8
8
  import { ensureI18nInitialized, i18n } from './index5.mjs';
9
9
  import { updateClaudeCode } from './auto-updater.mjs';
10
10
  import { exists } from './fs-operations.mjs';
11
- import { f as findCommandPath, g as getPlatform, a as getHomebrewCommandPaths, b as isTermux, c as getTermuxPrefix, d as isWSL, e as getWSLInfo, w as wrapCommandWithSudo, h as commandExists, j as getRecommendedInstallMethods } from './platform.mjs';
11
+ import { f as findCommandPath, g as getPlatform, a as getHomebrewCommandPaths, i as isTermux, b as getTermuxPrefix, c as isWSL, d as getWSLInfo, w as wrapCommandWithSudo, e as commandExists, h as getRecommendedInstallMethods } from './platform.mjs';
12
12
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
13
13
  import '../shared/ccjk.BAGoDD49.mjs';
14
14
  import 'node:readline';
@@ -7,11 +7,11 @@ import require$$0 from 'fs';
7
7
  import sysPath from 'path';
8
8
  import require$$0$1 from 'child_process';
9
9
  import require$$0$2 from 'os';
10
- import require$$1 from 'util';
11
- import require$$0$3 from 'assert';
10
+ import require$$4 from 'util';
11
+ import require$$5 from 'assert';
12
12
  import require$$2 from 'events';
13
- import require$$0$5 from 'buffer';
14
- import require$$0$4 from 'stream';
13
+ import require$$0$4 from 'buffer';
14
+ import require$$0$3 from 'stream';
15
15
  import { m as moveFile } from '../shared/ccjk.Bx_rmYfN.mjs';
16
16
  import { c as commonjsRequire } from '../shared/ccjk.COweQ1RR.mjs';
17
17
  import 'node:process';
@@ -909,7 +909,7 @@ function requireError () {
909
909
  if (hasRequiredError) return error;
910
910
  hasRequiredError = 1;
911
911
  const os = require$$0$2;
912
- const util = require$$1;
912
+ const util = require$$4;
913
913
 
914
914
  const getCode = (error, code) => {
915
915
  if (error && error.code) {
@@ -1156,7 +1156,7 @@ function requireSignalExit () {
1156
1156
  return function () {}
1157
1157
  };
1158
1158
  } else {
1159
- var assert = require$$0$3;
1159
+ var assert = require$$5;
1160
1160
  var signals = requireSignals();
1161
1161
  var isWin = /^win/i.test(process.platform);
1162
1162
 
@@ -1811,7 +1811,7 @@ var hasRequiredBufferStream;
1811
1811
  function requireBufferStream () {
1812
1812
  if (hasRequiredBufferStream) return bufferStream;
1813
1813
  hasRequiredBufferStream = 1;
1814
- const {PassThrough: PassThroughStream} = require$$0$4;
1814
+ const {PassThrough: PassThroughStream} = require$$0$3;
1815
1815
 
1816
1816
  bufferStream = options => {
1817
1817
  options = {...options};
@@ -1870,7 +1870,7 @@ var hasRequiredGetStream;
1870
1870
  function requireGetStream () {
1871
1871
  if (hasRequiredGetStream) return getStream.exports;
1872
1872
  hasRequiredGetStream = 1;
1873
- const {constants: BufferConstants} = require$$0$5;
1873
+ const {constants: BufferConstants} = require$$0$4;
1874
1874
  const pump = requirePump();
1875
1875
  const bufferStream = requireBufferStream();
1876
1876
 
@@ -1939,7 +1939,7 @@ function requireMergeStream () {
1939
1939
  if (hasRequiredMergeStream) return mergeStream;
1940
1940
  hasRequiredMergeStream = 1;
1941
1941
 
1942
- const { PassThrough } = require$$0$4;
1942
+ const { PassThrough } = require$$0$3;
1943
1943
 
1944
1944
  mergeStream = function (/*streams...*/) {
1945
1945
  var sources = [];
@@ -2,7 +2,7 @@ import a from './index2.mjs';
2
2
  import { i18n } from './index5.mjs';
3
3
  import { g as getMcpServices } from './codex.mjs';
4
4
  import { r as readMcpConfig } from './claude-config.mjs';
5
- import { i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.waa2ikKJ.mjs';
5
+ import { i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.KpFl2RDA.mjs';
6
6
  import '../shared/ccjk.BAGoDD49.mjs';
7
7
  import 'node:fs';
8
8
  import 'node:process';
@@ -3,10 +3,10 @@ import { i18n } from './index5.mjs';
3
3
  import 'node:child_process';
4
4
  import 'node:process';
5
5
  import { M as MCP_SERVICE_TIERS, i as isCoreService, g as getServicesByTier, c as checkMcpPerformance, f as formatPerformanceWarning, a as calculateResourceUsage, b as getOptimizationSuggestions, d as getMcpTierConfig } from './mcp-performance.mjs';
6
- import { r as readMcpConfig, b as backupMcpConfig, w as writeMcpConfig } from './claude-config.mjs';
6
+ import { r as readMcpConfig, c as backupMcpConfig, w as writeMcpConfig } from './claude-config.mjs';
7
7
  import { i as inquirer } from './index3.mjs';
8
8
  import { M as MCP_SERVICE_CONFIGS } from './codex.mjs';
9
- import { d as displayInstalledMcpServices, b as isMcpServiceInstalled, i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.waa2ikKJ.mjs';
9
+ import { d as displayInstalledMcpServices, b as isMcpServiceInstalled, i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.KpFl2RDA.mjs';
10
10
  import { existsSync, unlinkSync, statSync, mkdirSync, readFileSync } from 'node:fs';
11
11
  import { homedir } from 'node:os';
12
12
  import { writeFileAtomic } from './fs-operations.mjs';