ccjk 13.5.2 → 13.5.4

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 (35) hide show
  1. package/README.md +5 -5
  2. package/dist/chunks/boost.mjs +8 -1
  3. package/dist/chunks/ccjk-config.mjs +17 -0
  4. package/dist/chunks/ccr.mjs +2 -2
  5. package/dist/chunks/check-updates.mjs +1 -1
  6. package/dist/chunks/codex-config-switch.mjs +1 -1
  7. package/dist/chunks/codex-provider-manager.mjs +1 -1
  8. package/dist/chunks/codex.mjs +2 -2
  9. package/dist/chunks/completion.mjs +1 -1
  10. package/dist/chunks/config-switch.mjs +1 -1
  11. package/dist/chunks/context.mjs +316 -1
  12. package/dist/chunks/features.mjs +43 -14
  13. package/dist/chunks/index4.mjs +8 -1
  14. package/dist/chunks/init.mjs +2 -2
  15. package/dist/chunks/mcp-cli.mjs +3 -3
  16. package/dist/chunks/mcp.mjs +177 -35
  17. package/dist/{shared/ccjk.Crd_nEfj.mjs → chunks/memory-check.mjs} +18 -424
  18. package/dist/chunks/memory-paths.mjs +259 -0
  19. package/dist/chunks/memory-sync.mjs +209 -0
  20. package/dist/chunks/memory.mjs +140 -17
  21. package/dist/chunks/menu-hierarchical.mjs +2 -2
  22. package/dist/chunks/menu.mjs +1 -1
  23. package/dist/chunks/onboarding-wizard.mjs +8 -1
  24. package/dist/chunks/package.mjs +1 -1
  25. package/dist/chunks/quick-actions.mjs +8 -1
  26. package/dist/chunks/quick-setup.mjs +1 -1
  27. package/dist/chunks/smart-defaults.mjs +1 -20
  28. package/dist/chunks/status.mjs +8 -1
  29. package/dist/chunks/update.mjs +2 -2
  30. package/dist/cli.mjs +16 -4
  31. package/dist/shared/{ccjk.LTONy3IS.mjs → ccjk.BOfPON0N.mjs} +1 -1
  32. package/dist/shared/{ccjk.0aJQmVxS.mjs → ccjk.miT0g_vA.mjs} +3 -160
  33. package/dist/shared/ccjk.xkKNsC02.mjs +421 -0
  34. package/package.json +1 -1
  35. package/dist/chunks/auto-memory-bridge.mjs +0 -221
@@ -2,7 +2,7 @@ import { existsSync } from 'node:fs';
2
2
  import process__default from 'node:process';
3
3
  import a from './index2.mjs';
4
4
  import { i as inquirer } from './index3.mjs';
5
- import { M as MCP_SERVICE_CONFIGS } from '../shared/ccjk.0aJQmVxS.mjs';
5
+ import { M as MCP_SERVICE_CONFIGS } from '../shared/ccjk.miT0g_vA.mjs';
6
6
  import { CODE_TOOL_BANNERS, CLAUDE_DIR, isCodeToolType, DEFAULT_CODE_TOOL_TYPE } from './constants.mjs';
7
7
  import { ensureI18nInitialized, i18n } from './index5.mjs';
8
8
  import { displayBannerWithInfo } from './banner.mjs';
@@ -2,12 +2,13 @@ import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
2
2
  import a from './index2.mjs';
3
3
  import { CCJK_CONFIG_DIR } from './constants.mjs';
4
4
  import { i18n } from './index5.mjs';
5
- import { r as runHealthCheck } from '../shared/ccjk.Crd_nEfj.mjs';
5
+ import { r as runHealthCheck } from '../shared/ccjk.xkKNsC02.mjs';
6
6
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
7
7
  import '../shared/ccjk.BAGoDD49.mjs';
8
8
  import 'node:os';
9
9
  import 'node:process';
10
10
  import 'node:url';
11
+ import './memory-check.mjs';
11
12
  import 'node:path';
12
13
  import 'fs';
13
14
  import 'constants';
@@ -15,6 +16,12 @@ import 'stream';
15
16
  import 'util';
16
17
  import 'assert';
17
18
  import 'path';
19
+ import './memory-paths.mjs';
20
+ import '../shared/ccjk.BBtCGd_g.mjs';
21
+ import './index6.mjs';
22
+ import './fs-operations.mjs';
23
+ import 'node:crypto';
24
+ import 'node:fs/promises';
18
25
 
19
26
  const ONBOARDING_STATE_FILE = join(CCJK_CONFIG_DIR, "onboarding.json");
20
27
  function readOnboardingState() {
@@ -1,3 +1,3 @@
1
- const version = "13.5.2";
1
+ const version = "13.5.4";
2
2
 
3
3
  export { version };
@@ -3,7 +3,7 @@ import { homedir } from 'node:os';
3
3
  import a from './index2.mjs';
4
4
  import { MetricsDisplay } from './metrics-display.mjs';
5
5
  import { getContextPersistence } from './persistence.mjs';
6
- import { r as runHealthCheck } from '../shared/ccjk.Crd_nEfj.mjs';
6
+ import { r as runHealthCheck } from '../shared/ccjk.xkKNsC02.mjs';
7
7
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
8
8
  import '../shared/ccjk.BAGoDD49.mjs';
9
9
  import 'better-sqlite3';
@@ -11,6 +11,7 @@ import './constants.mjs';
11
11
  import './index5.mjs';
12
12
  import 'node:process';
13
13
  import 'node:url';
14
+ import './memory-check.mjs';
14
15
  import 'node:path';
15
16
  import 'fs';
16
17
  import 'constants';
@@ -18,6 +19,12 @@ import 'stream';
18
19
  import 'util';
19
20
  import 'assert';
20
21
  import 'path';
22
+ import './memory-paths.mjs';
23
+ import '../shared/ccjk.BBtCGd_g.mjs';
24
+ import './index6.mjs';
25
+ import './fs-operations.mjs';
26
+ import 'node:crypto';
27
+ import 'node:fs/promises';
21
28
 
22
29
  const HABIT_FILE = join(homedir(), ".ccjk", "habits.json");
23
30
  function loadHabitStats() {
@@ -37,7 +37,7 @@ import '../shared/ccjk.DJuyfrlL.mjs';
37
37
  import 'node:url';
38
38
  import '../shared/ccjk.BBtCGd_g.mjs';
39
39
  import './index6.mjs';
40
- import '../shared/ccjk.0aJQmVxS.mjs';
40
+ import '../shared/ccjk.miT0g_vA.mjs';
41
41
  import '../shared/ccjk.C3o4BXvM.mjs';
42
42
  import './banner.mjs';
43
43
  import './config.mjs';
@@ -285,26 +285,7 @@ class SmartDefaultsDetector {
285
285
  * Get recommended MCP services based on environment + project context
286
286
  */
287
287
  getRecommendedMcpServices(platform, project) {
288
- const runtime = project?.runtime;
289
- if (runtime?.isCI) {
290
- return ["context7", "mcp-deepwiki"];
291
- }
292
- if (runtime?.isContainer) {
293
- return ["context7", "mcp-deepwiki"];
294
- }
295
- const core = ["context7", "mcp-deepwiki", "open-websearch"];
296
- const extras = [];
297
- const hasBrowser = runtime?.hasBrowser ?? (platform === "darwin" || platform === "win32");
298
- if (hasBrowser) {
299
- extras.push("Playwright");
300
- }
301
- extras.push("sqlite");
302
- if (project && ["typescript", "java", "csharp"].includes(project.language)) {
303
- if (!runtime?.isHeadless) {
304
- extras.push("serena");
305
- }
306
- }
307
- return [...core, ...extras];
288
+ return ["context7"];
308
289
  }
309
290
  /**
310
291
  * Get recommended hook template IDs based on project toolchain
@@ -5,7 +5,7 @@ import a from './index2.mjs';
5
5
  import { s as scanProject } from '../shared/ccjk.DJuyfrlL.mjs';
6
6
  import { MetricsDisplay } from './metrics-display.mjs';
7
7
  import { getContextPersistence } from './persistence.mjs';
8
- import { r as runHealthCheck } from '../shared/ccjk.Crd_nEfj.mjs';
8
+ import { r as runHealthCheck } from '../shared/ccjk.xkKNsC02.mjs';
9
9
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
10
10
  import '../shared/ccjk.BAGoDD49.mjs';
11
11
  import 'node:child_process';
@@ -13,6 +13,7 @@ import 'better-sqlite3';
13
13
  import './constants.mjs';
14
14
  import './index5.mjs';
15
15
  import 'node:url';
16
+ import './memory-check.mjs';
16
17
  import 'node:path';
17
18
  import 'fs';
18
19
  import 'constants';
@@ -20,6 +21,12 @@ import 'stream';
20
21
  import 'util';
21
22
  import 'assert';
22
23
  import 'path';
24
+ import './memory-paths.mjs';
25
+ import '../shared/ccjk.BBtCGd_g.mjs';
26
+ import './index6.mjs';
27
+ import './fs-operations.mjs';
28
+ import 'node:crypto';
29
+ import 'node:fs/promises';
23
30
 
24
31
  const GRADE_COLORS = {
25
32
  S: (s) => a.magenta.bold(s),
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import a from './index2.mjs';
3
3
  import { i as inquirer } from './index3.mjs';
4
- import { M as MCP_SERVICE_CONFIGS, g as getMcpServices } from '../shared/ccjk.0aJQmVxS.mjs';
4
+ import { M as MCP_SERVICE_CONFIGS, g as getMcpServices } from '../shared/ccjk.miT0g_vA.mjs';
5
5
  import { SETTINGS_FILE, DEFAULT_CODE_TOOL_TYPE, resolveCodeToolType as resolveCodeToolType$1, isCodeToolType } from './constants.mjs';
6
6
  import { i18n } from './index5.mjs';
7
7
  import { displayBanner } from './banner.mjs';
@@ -12,7 +12,7 @@ import { c as copyConfigFiles } from './config2.mjs';
12
12
  import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.byom1b8z.mjs';
13
13
  import { u as updatePromptOnly } from '../shared/ccjk.Dgq22o6V.mjs';
14
14
  import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.BIxuVL3_.mjs';
15
- import { a as installMcpServices } from '../shared/ccjk.LTONy3IS.mjs';
15
+ import { a as installMcpServices } from '../shared/ccjk.BOfPON0N.mjs';
16
16
  import { resolveAiOutputLanguage } from './prompts.mjs';
17
17
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
18
18
  import { checkClaudeCodeVersionAndPrompt } from './version-checker.mjs';
package/dist/cli.mjs CHANGED
@@ -135,6 +135,7 @@ const COMMANDS = [
135
135
  description: "MCP Server management",
136
136
  tier: "extended",
137
137
  options: [
138
+ { flags: "--tool, -T <type>", description: "Target tool (claude-code, codex)" },
138
139
  { flags: "--verbose, -v", description: "Verbose output" },
139
140
  { flags: "--dry-run, -d", description: "Preview changes" },
140
141
  { flags: "--yes, -y", description: "Skip confirmation prompts" },
@@ -152,9 +153,13 @@ const COMMANDS = [
152
153
  const { mcpDoctor } = await import('./chunks/mcp.mjs');
153
154
  await mcpDoctor(options);
154
155
  } else if (actionStr === "profile") {
155
- const { listProfiles, useProfile } = await import('./chunks/mcp.mjs');
156
- if (!argsArr[0] || argsArr[0] === "list") {
156
+ const { listProfiles, showCurrentProfile, useProfile } = await import('./chunks/mcp.mjs');
157
+ if (!argsArr[0] || argsArr[0] === "list" || argsArr[0] === "ls") {
157
158
  await listProfiles(options);
159
+ } else if (argsArr[0] === "current" || argsArr[0] === "status") {
160
+ await showCurrentProfile(options);
161
+ } else if (argsArr[0] === "use" || argsArr[0] === "switch") {
162
+ await useProfile(argsArr[1] || "", options);
158
163
  } else {
159
164
  await useProfile(argsArr[0], options);
160
165
  }
@@ -218,6 +223,8 @@ const COMMANDS = [
218
223
  aliases: ["mem"],
219
224
  tier: "core",
220
225
  options: [
226
+ { flags: "--status", description: "Show memory status without changing files" },
227
+ { flags: "--doctor", description: "Run memory health diagnostics" },
221
228
  { flags: "-v, --view", description: "View memory content" },
222
229
  { flags: "-e, --edit", description: "Edit memory interactively" },
223
230
  { flags: "-s, --sync", description: "Sync memory using AutoMemoryBridge" },
@@ -362,6 +369,8 @@ const COMMANDS = [
362
369
  aliases: ["mem"],
363
370
  tier: "extended",
364
371
  options: [
372
+ { flags: "--status", description: "Show memory status without changing files" },
373
+ { flags: "--doctor", description: "Run memory health diagnostics" },
365
374
  { flags: "-v, --view", description: "View memory content" },
366
375
  { flags: "-e, --edit", description: "Edit memory interactively" },
367
376
  { flags: "-s, --sync", description: "Sync memory using AutoMemoryBridge" },
@@ -883,8 +892,11 @@ const COMMANDS = [
883
892
  ],
884
893
  loader: async () => {
885
894
  const { contextCommand } = await import('./chunks/context.mjs');
886
- return async (options) => {
887
- await contextCommand(options);
895
+ return async (options, action) => {
896
+ await contextCommand({
897
+ ...options,
898
+ action
899
+ });
888
900
  };
889
901
  }
890
902
  },
@@ -1,6 +1,6 @@
1
1
  import a from '../chunks/index2.mjs';
2
2
  import { i as inquirer } from '../chunks/index3.mjs';
3
- import { a as getMcpService, d as dynamicMcpRegistry, M as MCP_SERVICE_CONFIGS } from './ccjk.0aJQmVxS.mjs';
3
+ import { a as getMcpService, d as dynamicMcpRegistry, M as MCP_SERVICE_CONFIGS } from './ccjk.miT0g_vA.mjs';
4
4
  import { SETTINGS_FILE, CLAUDE_DIR, ClAUDE_CONFIG_FILE, CODEX_CONFIG_FILE } from '../chunks/constants.mjs';
5
5
  import { exists, ensureDir } from '../chunks/fs-operations.mjs';
6
6
  import { readJsonConfig, writeJsonConfig } from '../chunks/json-config.mjs';
@@ -1,187 +1,30 @@
1
1
  import a from '../chunks/index2.mjs';
2
2
  import { i as inquirer } from '../chunks/index3.mjs';
3
3
  import 'node:child_process';
4
- import { homedir } from 'node:os';
5
4
  import process__default from 'node:process';
6
5
  import { ensureI18nInitialized, i18n } from '../chunks/index5.mjs';
7
- import { j as join } from './ccjk.bQ7Dh1g4.mjs';
8
6
 
9
- const PLAYWRIGHT_PROFILES_DIR = join(homedir(), ".ccjk", "playwright");
10
- function createPlaywrightMcpConfig(options = {}) {
11
- const {
12
- profile = "default",
13
- headless = false,
14
- browser = "chromium",
15
- userDataDir
16
- } = options;
17
- const resolvedUserDataDir = userDataDir || join(PLAYWRIGHT_PROFILES_DIR, profile);
18
- const args = ["-y", "@playwright/mcp@latest"];
19
- args.push("--browser", browser);
20
- args.push("--user-data-dir", resolvedUserDataDir);
21
- if (headless) {
22
- args.push("--headless");
23
- }
24
- return {
25
- type: "stdio",
26
- command: "npx",
27
- args,
28
- env: {}
29
- };
30
- }
31
7
  const MCP_SERVICE_CONFIGS = [
32
- // Documentation and Search Services - Universal (no GUI required)
8
+ // Documentation service - the only MCP we currently keep enabled in-product
33
9
  {
34
10
  id: "context7",
35
11
  requiresApiKey: false,
36
- config: {
37
- type: "stdio",
38
- command: "npx",
39
- args: ["-y", "@upstash/context7-mcp@latest"],
40
- env: {}
41
- }
42
- // Works on all platforms - no special requirements
43
- },
44
- {
45
- id: "open-websearch",
46
- requiresApiKey: false,
47
- config: {
48
- type: "stdio",
49
- command: "npx",
50
- args: ["-y", "open-websearch@latest"],
51
- env: {
52
- MODE: "stdio",
53
- DEFAULT_SEARCH_ENGINE: "duckduckgo",
54
- ALLOWED_SEARCH_ENGINES: "duckduckgo,bing,brave"
55
- }
56
- }
57
- // Works on all platforms - no special requirements
58
- },
59
- {
60
- id: "mcp-deepwiki",
61
- requiresApiKey: false,
62
- config: {
63
- type: "stdio",
64
- command: "npx",
65
- args: ["-y", "mcp-deepwiki@latest"],
66
- env: {}
67
- }
68
- // Works on all platforms - no special requirements
69
- },
70
- // Development Workflow Services
71
- {
72
- id: "spec-workflow",
73
- requiresApiKey: false,
74
- config: {
75
- type: "stdio",
76
- command: "npx",
77
- args: ["-y", "@pimzino/spec-workflow-mcp@latest"],
78
- env: {}
79
- }
80
- // Works on all platforms - no special requirements
81
- },
82
- {
83
- id: "serena",
84
- requiresApiKey: false,
85
- config: {
86
- type: "stdio",
87
- command: "uvx",
88
- args: ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant", "--enable-web-dashboard", "false"],
89
- env: {}
90
- },
91
- platformRequirements: {
92
- requiredCommands: ["uvx"]
93
- // Requires uv/uvx to be installed
94
- }
95
- },
96
- // Browser and Automation Services - Require GUI environment
97
- {
98
- id: "Playwright",
99
- requiresApiKey: false,
100
- config: createPlaywrightMcpConfig(),
101
- // Uses default profile with chromium browser
102
- platformRequirements: {
103
- platforms: ["macos", "windows"],
104
- // GUI required - exclude headless Linux/WSL/Termux
105
- requiresGui: true
106
- }
107
- },
108
- // Cross-session Memory Services
109
- {
110
- id: "intent-engine",
111
- requiresApiKey: false,
112
12
  defaultSelected: true,
113
13
  config: {
114
14
  type: "stdio",
115
15
  command: "npx",
116
- args: ["-y", "@origintask/intent-engine@latest", "mcp"],
117
- env: {}
118
- }
119
- // Works on all platforms - no special requirements
120
- },
121
- // Anthropic Official MCP Services - Universal
122
- // Note: Removed low-value services: filesystem (buggy), puppeteer (duplicate of Playwright),
123
- // memory (Claude has built-in memory), fetch (Claude has WebFetch), sequential-thinking (limited value)
124
- {
125
- id: "sqlite",
126
- requiresApiKey: false,
127
- config: {
128
- type: "stdio",
129
- command: "npx",
130
- args: ["-y", "@anthropic-ai/mcp-server-sqlite@latest"],
16
+ args: ["-y", "@upstash/context7-mcp@latest"],
131
17
  env: {}
132
18
  }
133
- // Works on all platforms - no special requirements
134
19
  }
135
20
  ];
136
21
  async function getMcpServices() {
137
22
  ensureI18nInitialized();
138
23
  const mcpServiceList = [
139
- // Documentation and Search Services
140
24
  {
141
25
  id: "context7",
142
26
  name: i18n.t("mcp:services.context7.name"),
143
27
  description: i18n.t("mcp:services.context7.description")
144
- },
145
- {
146
- id: "open-websearch",
147
- name: i18n.t("mcp:services.open-websearch.name"),
148
- description: i18n.t("mcp:services.open-websearch.description")
149
- },
150
- {
151
- id: "mcp-deepwiki",
152
- name: i18n.t("mcp:services.mcp-deepwiki.name"),
153
- description: i18n.t("mcp:services.mcp-deepwiki.description")
154
- },
155
- // Development Workflow Services
156
- {
157
- id: "spec-workflow",
158
- name: i18n.t("mcp:services.spec-workflow.name"),
159
- description: i18n.t("mcp:services.spec-workflow.description")
160
- },
161
- {
162
- id: "serena",
163
- name: i18n.t("mcp:services.serena.name"),
164
- description: i18n.t("mcp:services.serena.description")
165
- },
166
- // Browser and Automation Services
167
- {
168
- id: "Playwright",
169
- name: i18n.t("mcp:services.playwright.name"),
170
- description: i18n.t("mcp:services.playwright.description")
171
- },
172
- // Cross-session Memory Services
173
- {
174
- id: "intent-engine",
175
- name: i18n.t("mcp:services.intent-engine.name"),
176
- description: i18n.t("mcp:services.intent-engine.description")
177
- },
178
- // Anthropic Official MCP Services
179
- // Note: Removed low-value services: filesystem (buggy), puppeteer (duplicate),
180
- // memory (Claude built-in), fetch (Claude WebFetch), sequential-thinking (limited value)
181
- {
182
- id: "sqlite",
183
- name: i18n.t("mcp:services.sqlite.name"),
184
- description: i18n.t("mcp:services.sqlite.description")
185
28
  }
186
29
  ];
187
30
  return MCP_SERVICE_CONFIGS.map((config) => {
@@ -205,7 +48,7 @@ async function getMcpService(id) {
205
48
  }
206
49
  const DEFAULT_MCP_TOOL_SEARCH_CONFIG = {
207
50
  mcpAutoEnableThreshold: 10,
208
- excludedServices: ["mcp-search", "context7", "sqlite"]
51
+ excludedServices: ["mcp-search", "context7"]
209
52
  };
210
53
  function getMcpToolSearchConfig() {
211
54
  const env = process__default.env;