ccjk 2.2.4 → 2.2.5

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 (65) hide show
  1. package/dist/chunks/auto-updater.mjs +15 -1
  2. package/dist/chunks/ccjk-config.mjs +77 -13
  3. package/dist/chunks/ccr.mjs +7 -10
  4. package/dist/chunks/ccu.mjs +4 -4
  5. package/dist/chunks/check-updates.mjs +4 -7
  6. package/dist/chunks/claude-code-config-manager.mjs +8 -11
  7. package/dist/chunks/claude-code-incremental-manager.mjs +4 -7
  8. package/dist/chunks/codex.mjs +496 -17
  9. package/dist/chunks/commands.mjs +392 -89
  10. package/dist/chunks/commands2.mjs +109 -0
  11. package/dist/chunks/config-consolidator.mjs +2 -2
  12. package/dist/chunks/config-switch.mjs +5 -8
  13. package/dist/chunks/doctor.mjs +6 -6
  14. package/dist/chunks/features.mjs +654 -35
  15. package/dist/chunks/help.mjs +339 -0
  16. package/dist/chunks/index.mjs +323 -10
  17. package/dist/chunks/index2.mjs +3 -3
  18. package/dist/chunks/index3.mjs +1171 -0
  19. package/dist/chunks/init.mjs +21 -24
  20. package/dist/chunks/installer.mjs +178 -0
  21. package/dist/chunks/interview.mjs +6 -6
  22. package/dist/chunks/mcp-performance.mjs +82 -2
  23. package/dist/chunks/mcp.mjs +500 -0
  24. package/dist/chunks/menu.mjs +10 -10
  25. package/dist/chunks/notification.mjs +5 -5
  26. package/dist/chunks/onboarding.mjs +6 -6
  27. package/dist/chunks/package.mjs +1 -1
  28. package/dist/chunks/platform.mjs +10 -10
  29. package/dist/chunks/prompts.mjs +7 -8
  30. package/dist/chunks/session.mjs +2 -2
  31. package/dist/chunks/skills-sync.mjs +2 -2
  32. package/dist/chunks/uninstall.mjs +4 -5
  33. package/dist/chunks/update.mjs +4 -7
  34. package/dist/chunks/upgrade-manager.mjs +2 -2
  35. package/dist/chunks/version-checker.mjs +88 -7
  36. package/dist/cli.mjs +293 -53
  37. package/dist/i18n/locales/en/agentBrowser.json +79 -0
  38. package/dist/i18n/locales/en/mcp.json +2 -4
  39. package/dist/i18n/locales/en/updater.json +3 -1
  40. package/dist/i18n/locales/zh/agentBrowser.json +79 -0
  41. package/dist/i18n/locales/zh-CN/common.json +1 -1
  42. package/dist/i18n/locales/zh-CN/mcp.json +2 -4
  43. package/dist/i18n/locales/zh-CN/updater.json +3 -1
  44. package/dist/index.d.mts +8 -584
  45. package/dist/index.d.ts +8 -584
  46. package/dist/index.mjs +9 -13
  47. package/dist/shared/{ccjk.DJM5aVQJ.mjs → ccjk.ByTIGCUC.mjs} +3 -3
  48. package/dist/shared/{ccjk.qYAnUMuy.mjs → ccjk.CGTmRqsu.mjs} +2 -3
  49. package/dist/shared/{ccjk.CUdzQluX.mjs → ccjk.CURU8gbR.mjs} +1 -1
  50. package/dist/{chunks/mcp-market.mjs → shared/ccjk.D-RZS4E2.mjs} +6 -65
  51. package/dist/shared/{ccjk.B7169qud.mjs → ccjk.tB4-Y4Qb.mjs} +3 -3
  52. package/package.json +4 -1
  53. package/templates/common/skills/en/agent-browser.md +258 -0
  54. package/templates/common/skills/zh-CN/agent-browser.md +260 -0
  55. package/dist/chunks/claude-config.mjs +0 -228
  56. package/dist/chunks/features2.mjs +0 -661
  57. package/dist/chunks/json-config.mjs +0 -59
  58. package/dist/chunks/mcp-doctor.mjs +0 -160
  59. package/dist/chunks/mcp-profile.mjs +0 -220
  60. package/dist/chunks/mcp-release.mjs +0 -138
  61. package/dist/chunks/shencha.mjs +0 -320
  62. package/dist/chunks/tools.mjs +0 -169
  63. package/dist/shared/ccjk.COdsoe-Y.mjs +0 -64
  64. package/dist/shared/ccjk.DwDtZ5cK.mjs +0 -266
  65. package/dist/shared/ccjk.n_AtlHzB.mjs +0 -186
@@ -1,12 +1,11 @@
1
1
  import './init.mjs';
2
- import { CCJK_PLUGINS_DIR, CCJK_SKILLS_DIR, CCJK_GROUPS_DIR, AIDER_DIR, AIDER_CONFIG_FILE, AIDER_ENV_FILE, CODEX_AUTH_FILE, CODEX_DIR, CODEX_CONFIG_FILE, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CONTINUE_DIR, CONTINUE_CONFIG_FILE } from './constants.mjs';
2
+ import { CCJK_PLUGINS_DIR, CCJK_SKILLS_DIR, CCJK_GROUPS_DIR, AIDER_DIR, AIDER_CONFIG_FILE, AIDER_ENV_FILE, CODEX_AUTH_FILE, CODEX_DIR, CODEX_CONFIG_FILE, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CONTINUE_DIR, CONTINUE_CONFIG_FILE, CURSOR_CONFIG_FILE, CLINE_CONFIG_FILE, CLAUDE_DIR, CURSOR_DIR, CLINE_DIR, CODE_TOOL_TYPES, CODE_TOOL_INFO } from './constants.mjs';
3
3
  import { S as STATUS, r as renderProgressBar, s as sectionDivider, C as COLORS } from '../shared/ccjk.BhKlRJ0h.mjs';
4
- import './claude-config.mjs';
5
4
  import { r as readCodexConfig, b as backupCodexComplete, w as writeCodexConfig, a as writeAuthFile, d as detectConfigManagementMode } from './codex.mjs';
6
5
  import { detectAllConfigs } from './config-consolidator.mjs';
7
- import '../shared/ccjk.DJM5aVQJ.mjs';
6
+ import '../shared/ccjk.ByTIGCUC.mjs';
8
7
  import { homedir } from 'node:os';
9
- import process, { env } from 'node:process';
8
+ import process__default, { env } from 'node:process';
10
9
  import ansis from 'ansis';
11
10
  import ora from 'ora';
12
11
  import { exec } from 'tinyexec';
@@ -21,11 +20,10 @@ import { join } from 'pathe';
21
20
  import { i18n, ensureI18nInitialized } from './index2.mjs';
22
21
  import { writeFileAtomic } from './fs-operations.mjs';
23
22
  import inquirer from 'inquirer';
24
- import { readJsonConfig } from './json-config.mjs';
23
+ import { r as readJsonConfig } from './ccjk-config.mjs';
25
24
  import { a as addNumbersToChoices, p as promptBoolean } from '../shared/ccjk.DhBeLRzf.mjs';
26
25
  import { pathExists } from 'fs-extra';
27
26
  import { m as moveToTrash } from '../shared/ccjk.DGjQxTq_.mjs';
28
- import '../shared/ccjk.n_AtlHzB.mjs';
29
27
 
30
28
  const loadedPlugins = /* @__PURE__ */ new Map();
31
29
  const PLUGIN_CONFIG_FILE = join(CCJK_PLUGINS_DIR, "plugins.json");
@@ -323,6 +321,134 @@ async function initializePlugins() {
323
321
  }
324
322
  }
325
323
 
324
+ const browserSkill = {
325
+ id: "browser-automation",
326
+ name: {
327
+ "en": "Browser Automation",
328
+ "zh-CN": "\u6D4F\u89C8\u5668\u81EA\u52A8\u5316"
329
+ },
330
+ description: {
331
+ "en": "Zero-config headless browser automation for AI agents",
332
+ "zh-CN": "\u96F6\u914D\u7F6E\u7684 AI \u4EE3\u7406\u6D4F\u89C8\u5668\u81EA\u52A8\u5316\u5DE5\u5177"
333
+ },
334
+ category: "dev",
335
+ triggers: ["/browser", "/web", "/browse"],
336
+ enabled: true,
337
+ version: "1.0.0",
338
+ author: "CCJK",
339
+ tags: ["browser", "automation", "web", "scraping", "testing"],
340
+ template: `# Browser Automation Skill
341
+
342
+ ## Overview
343
+ This skill provides zero-config headless browser automation powered by agent-browser.
344
+
345
+ ## Quick Start
346
+
347
+ ### Open a URL
348
+ \`\`\`bash
349
+ ccjk browser open https://example.com
350
+ \`\`\`
351
+
352
+ ### Get Page Snapshot (AI-optimized)
353
+ \`\`\`bash
354
+ ccjk browser snapshot -i # Interactive elements only
355
+ ccjk browser snapshot -c # Compact output
356
+ \`\`\`
357
+
358
+ ### Interact with Elements
359
+ \`\`\`bash
360
+ ccjk browser click @e1 # Click by ref
361
+ ccjk browser fill @e2 "text" # Fill input
362
+ ccjk browser get text @e3 # Get text content
363
+ \`\`\`
364
+
365
+ ### Screenshots
366
+ \`\`\`bash
367
+ ccjk browser screenshot # Viewport
368
+ ccjk browser screenshot --full # Full page
369
+ ccjk browser screenshot output.png # Custom path
370
+ \`\`\`
371
+
372
+ ### Wait for Conditions
373
+ \`\`\`bash
374
+ ccjk browser wait 2000 # Wait 2 seconds
375
+ ccjk browser wait @e1 # Wait for element
376
+ ccjk browser wait --text "Success" # Wait for text
377
+ \`\`\`
378
+
379
+ ## Common Workflows
380
+
381
+ ### Login Flow
382
+ \`\`\`bash
383
+ ccjk browser open https://app.example.com/login
384
+ ccjk browser snapshot -i
385
+ ccjk browser fill @e1 "username"
386
+ ccjk browser fill @e2 "password"
387
+ ccjk browser click @e3
388
+ ccjk browser wait --text "Dashboard"
389
+ \`\`\`
390
+
391
+ ### Form Submission
392
+ \`\`\`bash
393
+ ccjk browser open https://example.com/form
394
+ ccjk browser snapshot -i
395
+ ccjk browser fill @e1 "John Doe"
396
+ ccjk browser fill @e2 "john@example.com"
397
+ ccjk browser click @e3 # Submit button
398
+ ccjk browser wait --text "Thank you"
399
+ \`\`\`
400
+
401
+ ### Web Scraping
402
+ \`\`\`bash
403
+ ccjk browser open https://example.com/products
404
+ ccjk browser snapshot --json > products.json
405
+ \`\`\`
406
+
407
+ ## Session Management
408
+
409
+ ### Parallel Sessions
410
+ \`\`\`bash
411
+ ccjk browser --session s1 open site-a.com
412
+ ccjk browser --session s2 open site-b.com
413
+ ccjk browser session list
414
+ \`\`\`
415
+
416
+ ## Debug Mode
417
+ \`\`\`bash
418
+ ccjk browser open example.com --headed # Show browser window
419
+ \`\`\`
420
+
421
+ ## Element References
422
+
423
+ The snapshot command returns elements with refs like \`@e1\`, \`@e2\`, etc.
424
+ Use these refs to interact with specific elements:
425
+
426
+ - \`@e1\` - First interactive element
427
+ - \`@e2\` - Second interactive element
428
+ - etc.
429
+
430
+ ## Tips for AI Agents
431
+
432
+ 1. Always run \`snapshot -i\` first to get interactive elements
433
+ 2. Use refs from snapshot output for interactions
434
+ 3. Wait for page loads with \`wait --text\` or \`wait @ref\`
435
+ 4. Use \`--json\` for programmatic parsing
436
+ 5. Close browser when done to free resources
437
+ `
438
+ };
439
+
440
+ const BUILTIN_SKILLS = [
441
+ browserSkill
442
+ ];
443
+ function getBuiltinSkill(id) {
444
+ return BUILTIN_SKILLS.find((s) => s.id === id);
445
+ }
446
+ function getBuiltinSkills() {
447
+ return [...BUILTIN_SKILLS];
448
+ }
449
+ function isBuiltinSkill(id) {
450
+ return BUILTIN_SKILLS.some((s) => s.id === id);
451
+ }
326
452
  let registry$1 = null;
327
453
  function ensureSkillsDir() {
328
454
  if (!existsSync(CCJK_SKILLS_DIR)) {
@@ -339,6 +465,12 @@ function loadRegistry$1() {
339
465
  ensureSkillsDir();
340
466
  const skills = /* @__PURE__ */ new Map();
341
467
  const categories = /* @__PURE__ */ new Map();
468
+ for (const skill of BUILTIN_SKILLS) {
469
+ skills.set(skill.id, skill);
470
+ const categorySkills = categories.get(skill.category) || [];
471
+ categorySkills.push(skill.id);
472
+ categories.set(skill.category, categorySkills);
473
+ }
342
474
  const files = readdirSync(CCJK_SKILLS_DIR).filter((f) => f.endsWith(".json"));
343
475
  for (const file of files) {
344
476
  try {
@@ -1709,7 +1841,7 @@ async function handleAddProvider() {
1709
1841
  defaultValue: true
1710
1842
  });
1711
1843
  if (setAsDefault) {
1712
- const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.a2; });
1844
+ const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.ai; });
1713
1845
  const switched = await switchToProvider(provider.id);
1714
1846
  if (switched) {
1715
1847
  console.log(ansis.green(i18n.t("multi-config:profileSetAsDefault", { name: provider.name })));
@@ -1904,7 +2036,7 @@ ${i18n.t("codex:copyingProvider", { name: provider.name })}`));
1904
2036
  defaultValue: false
1905
2037
  });
1906
2038
  if (setAsDefault) {
1907
- const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.a2; });
2039
+ const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.ai; });
1908
2040
  const switched = await switchToProvider(copiedProvider.id);
1909
2041
  if (switched) {
1910
2042
  console.log(ansis.green(i18n.t("multi-config:profileSetAsDefault", { name: copiedProvider.name })));
@@ -2546,6 +2678,187 @@ function syncSkillsToContinue(skills) {
2546
2678
  writeContinueConfig(config);
2547
2679
  }
2548
2680
 
2681
+ function getToolConfigPath(tool) {
2682
+ switch (tool) {
2683
+ case "claude-code":
2684
+ return CLAUDE_DIR;
2685
+ case "codex":
2686
+ return CODEX_CONFIG_FILE;
2687
+ case "aider":
2688
+ return AIDER_CONFIG_FILE;
2689
+ case "continue":
2690
+ return CONTINUE_CONFIG_FILE;
2691
+ case "cline":
2692
+ return CLINE_CONFIG_FILE;
2693
+ case "cursor":
2694
+ return CURSOR_CONFIG_FILE;
2695
+ default:
2696
+ return "";
2697
+ }
2698
+ }
2699
+ function getToolDir(tool) {
2700
+ switch (tool) {
2701
+ case "claude-code":
2702
+ return CLAUDE_DIR;
2703
+ case "codex":
2704
+ return CODEX_DIR;
2705
+ case "aider":
2706
+ return AIDER_DIR;
2707
+ case "continue":
2708
+ return CONTINUE_DIR;
2709
+ case "cline":
2710
+ return CLINE_DIR;
2711
+ case "cursor":
2712
+ return CURSOR_DIR;
2713
+ default:
2714
+ return "";
2715
+ }
2716
+ }
2717
+ async function isToolInstalled(tool) {
2718
+ try {
2719
+ switch (tool) {
2720
+ case "claude-code": {
2721
+ const ccResult = await exec("claude", ["--version"]);
2722
+ return ccResult.exitCode === 0;
2723
+ }
2724
+ case "codex": {
2725
+ const cxResult = await exec("codex", ["--version"]);
2726
+ return cxResult.exitCode === 0;
2727
+ }
2728
+ case "aider": {
2729
+ const adResult = await exec("aider", ["--version"]);
2730
+ return adResult.exitCode === 0;
2731
+ }
2732
+ case "continue":
2733
+ return existsSync(CONTINUE_DIR);
2734
+ case "cline":
2735
+ return existsSync(CLINE_DIR);
2736
+ case "cursor": {
2737
+ const cuResult = await exec("cursor", ["--version"]);
2738
+ return cuResult.exitCode === 0;
2739
+ }
2740
+ default:
2741
+ return false;
2742
+ }
2743
+ } catch {
2744
+ return false;
2745
+ }
2746
+ }
2747
+ async function getToolVersion(tool) {
2748
+ try {
2749
+ switch (tool) {
2750
+ case "claude-code": {
2751
+ const result = await exec("claude", ["--version"]);
2752
+ return result.stdout.trim();
2753
+ }
2754
+ case "codex": {
2755
+ const result = await exec("codex", ["--version"]);
2756
+ return result.stdout.trim();
2757
+ }
2758
+ case "aider": {
2759
+ const result = await exec("aider", ["--version"]);
2760
+ return result.stdout.trim();
2761
+ }
2762
+ case "cursor": {
2763
+ const result = await exec("cursor", ["--version"]);
2764
+ return result.stdout.trim();
2765
+ }
2766
+ default:
2767
+ return null;
2768
+ }
2769
+ } catch {
2770
+ return null;
2771
+ }
2772
+ }
2773
+ async function getToolStatus(tool) {
2774
+ const configPath = getToolConfigPath(tool);
2775
+ const installed = await isToolInstalled(tool);
2776
+ const version = installed ? await getToolVersion(tool) : void 0;
2777
+ return {
2778
+ tool,
2779
+ installed,
2780
+ version: version || void 0,
2781
+ configExists: existsSync(configPath),
2782
+ configPath,
2783
+ lastChecked: /* @__PURE__ */ new Date()
2784
+ };
2785
+ }
2786
+ async function getAllToolsStatus() {
2787
+ const statuses = [];
2788
+ for (const tool of CODE_TOOL_TYPES) {
2789
+ statuses.push(await getToolStatus(tool));
2790
+ }
2791
+ return statuses;
2792
+ }
2793
+ async function getInstalledTools() {
2794
+ const installed = [];
2795
+ for (const tool of CODE_TOOL_TYPES) {
2796
+ if (await isToolInstalled(tool)) {
2797
+ installed.push(tool);
2798
+ }
2799
+ }
2800
+ return installed;
2801
+ }
2802
+ async function installTool(tool) {
2803
+ const info = CODE_TOOL_INFO[tool];
2804
+ try {
2805
+ const parts = info.installCmd.split(" ");
2806
+ const cmd = parts[0];
2807
+ const args = parts.slice(1);
2808
+ const result = await exec(cmd, args);
2809
+ if (result.exitCode === 0) {
2810
+ const version = await getToolVersion(tool);
2811
+ return {
2812
+ tool,
2813
+ success: true,
2814
+ message: `${info.name} installed successfully`,
2815
+ version: version || void 0
2816
+ };
2817
+ } else {
2818
+ return {
2819
+ tool,
2820
+ success: false,
2821
+ message: `Failed to install ${info.name}: ${result.stderr}`
2822
+ };
2823
+ }
2824
+ } catch (error) {
2825
+ return {
2826
+ tool,
2827
+ success: false,
2828
+ message: `Failed to install ${info.name}: ${error instanceof Error ? error.message : "Unknown error"}`
2829
+ };
2830
+ }
2831
+ }
2832
+ function getToolInfo(tool) {
2833
+ return CODE_TOOL_INFO[tool];
2834
+ }
2835
+ function getAllToolsInfo() {
2836
+ return CODE_TOOL_INFO;
2837
+ }
2838
+ function getToolsByCategory(category) {
2839
+ return CODE_TOOL_TYPES.filter((tool) => CODE_TOOL_INFO[tool].category === category);
2840
+ }
2841
+ function formatToolStatus(status) {
2842
+ const info = CODE_TOOL_INFO[status.tool];
2843
+ const icon = status.installed ? "\u2705" : "\u274C";
2844
+ const version = status.version ? ` (${status.version})` : "";
2845
+ const config = status.configExists ? "\u{1F4C4}" : "\u26A0\uFE0F";
2846
+ return `${icon} ${info.name}${version} ${config}`;
2847
+ }
2848
+ function getRecommendedTools(projectType) {
2849
+ switch (projectType) {
2850
+ case "typescript":
2851
+ case "javascript":
2852
+ return ["claude-code", "aider", "continue"];
2853
+ case "python":
2854
+ return ["aider", "continue", "claude-code"];
2855
+ case "fullstack":
2856
+ return ["claude-code", "cursor", "aider"];
2857
+ default:
2858
+ return ["claude-code", "aider"];
2859
+ }
2860
+ }
2861
+
2549
2862
  async function checkClaudeCodeInstallation() {
2550
2863
  try {
2551
2864
  const versionInfo = await checkClaudeCodeVersion();
@@ -2754,7 +3067,7 @@ function checkPermissions() {
2754
3067
  }
2755
3068
  async function checkDiskSpace() {
2756
3069
  try {
2757
- if (process.platform === "win32") {
3070
+ if (process__default.platform === "win32") {
2758
3071
  return {
2759
3072
  name: "Disk Space",
2760
3073
  status: "info",
@@ -3079,4 +3392,4 @@ function showStatus(type, message) {
3079
3392
  console.log(STATUS[type](message));
3080
3393
  }
3081
3394
 
3082
- export { runAider as $, refreshRegistry$1 as A, removeSkill as B, searchSkills as C, setSkillEnabled as D, addGroup as E, disableGroup as F, enableGroup as G, ensureGroupsDir as H, exportGroups as I, getAllGroups as J, getEnabledAgents as K, getEnabledSkillIds as L, getGroup as M, getRegistry as N, importGroups as O, isGroupEnabled as P, refreshRegistry as Q, removeGroup as R, searchGroups as S, isAiderInstalled as T, getAiderVersion as U, installAider as V, ensureAiderDir as W, readAiderConfig as X, writeAiderConfig as Y, configureAiderApi as Z, getAiderModelPresets as _, getPluginInfo as a, configureIncrementalManagement as a0, addProviderToExisting as a1, editExistingProvider as a2, deleteProviders as a3, validateProviderData as a4, CodexUninstaller as a5, ensureContinueDir as a6, isContinueConfigured as a7, readContinueConfig as a8, writeContinueConfig as a9, addContinueModel as aa, removeContinueModel as ab, getContinueProviderPresets as ac, configureContinueApi as ad, addContinueMcpServer as ae, addContinueCustomCommand as af, enableContinueContextProvider as ag, syncSkillsToContinue as ah, runHealthCheck as ai, displayHealthReport as aj, runDoctor as ak, MenuBuilder as al, showQuickMenu as am, confirm as an, showStatus as ao, codexProviderManager as ap, codexConfigSwitch$1 as aq, codexUninstaller as ar, listPlugins as b, enablePlugin as c, discoverPlugins as d, ensurePluginsDir as e, disablePlugin as f, getLoadedPlugins as g, getPluginWorkflows as h, getPluginAgents as i, getPluginMcpServices as j, getPluginOutputStyles as k, loadPlugin as l, getPluginSkills as m, initializePlugins as n, addSkill as o, createBatchSkills as p, ensureSkillsDir as q, readPluginConfig as r, exportSkills as s, getAllSkills as t, unloadPlugin as u, getBatchCategories as v, writePluginConfig as w, getSkill as x, getRegistry$1 as y, importSkills as z };
3395
+ export { writeAiderConfig as $, getRegistry$1 as A, importSkills as B, isBuiltinSkill as C, refreshRegistry$1 as D, removeSkill as E, searchSkills as F, setSkillEnabled as G, addGroup as H, disableGroup as I, enableGroup as J, ensureGroupsDir as K, exportGroups as L, getAllGroups as M, getEnabledAgents as N, getEnabledSkillIds as O, getGroup as P, getRegistry as Q, importGroups as R, isGroupEnabled as S, refreshRegistry as T, removeGroup as U, searchGroups as V, isAiderInstalled as W, getAiderVersion as X, installAider as Y, ensureAiderDir as Z, readAiderConfig as _, getPluginInfo as a, configureAiderApi as a0, getAiderModelPresets as a1, runAider as a2, configureIncrementalManagement as a3, addProviderToExisting as a4, editExistingProvider as a5, deleteProviders as a6, validateProviderData as a7, CodexUninstaller as a8, ensureContinueDir as a9, runDoctor as aA, MenuBuilder as aB, showQuickMenu as aC, confirm as aD, showStatus as aE, codexProviderManager as aF, codexConfigSwitch$1 as aG, codexUninstaller as aH, isContinueConfigured as aa, readContinueConfig as ab, writeContinueConfig as ac, addContinueModel as ad, removeContinueModel as ae, getContinueProviderPresets as af, configureContinueApi as ag, addContinueMcpServer as ah, addContinueCustomCommand as ai, enableContinueContextProvider as aj, syncSkillsToContinue as ak, getToolConfigPath as al, getToolDir as am, isToolInstalled as an, getToolVersion as ao, getToolStatus as ap, getAllToolsStatus as aq, getInstalledTools as ar, installTool as as, getToolInfo as at, getAllToolsInfo as au, getToolsByCategory as av, formatToolStatus as aw, getRecommendedTools as ax, runHealthCheck as ay, displayHealthReport as az, listPlugins as b, enablePlugin as c, discoverPlugins as d, ensurePluginsDir as e, disablePlugin as f, getLoadedPlugins as g, getPluginWorkflows as h, getPluginAgents as i, getPluginMcpServices as j, getPluginOutputStyles as k, loadPlugin as l, getPluginSkills as m, initializePlugins as n, addSkill as o, createBatchSkills as p, ensureSkillsDir as q, readPluginConfig as r, exportSkills as s, getAllSkills as t, unloadPlugin as u, getBatchCategories as v, writePluginConfig as w, getBuiltinSkill as x, getBuiltinSkills as y, getSkill as z };
@@ -1,5 +1,5 @@
1
1
  import { existsSync } from 'node:fs';
2
- import process from 'node:process';
2
+ import process__default from 'node:process';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import i18next from 'i18next';
5
5
  import Backend from 'i18next-fs-backend';
@@ -90,7 +90,7 @@ async function initI18n(language = "zh-CN") {
90
90
  // Development: src/i18n/locales
91
91
  join(packageRoot, "dist/i18n/locales"),
92
92
  // NPM package: /node_modules/ccjk/dist/i18n/locales
93
- join(process.cwd(), "dist/i18n/locales"),
93
+ join(process__default.cwd(), "dist/i18n/locales"),
94
94
  // Production build: ./dist/i18n/locales
95
95
  join(currentDir, "../../../dist/i18n/locales"),
96
96
  // Fallback for deep chunk paths
@@ -103,7 +103,7 @@ async function initI18n(language = "zh-CN") {
103
103
  return join(basePath, "{{lng}}/{{ns}}.json");
104
104
  }
105
105
  }
106
- return join(process.cwd(), "dist/i18n/locales/{{lng}}/{{ns}}.json");
106
+ return join(process__default.cwd(), "dist/i18n/locales/{{lng}}/{{ns}}.json");
107
107
  })()
108
108
  },
109
109
  // Interpolation settings