ccjk 2.6.1 → 3.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 (53) hide show
  1. package/dist/chunks/agent.mjs +1412 -0
  2. package/dist/chunks/api.mjs +7 -7
  3. package/dist/chunks/auto-updater.mjs +9 -9
  4. package/dist/chunks/ccr.mjs +4 -4
  5. package/dist/chunks/ccu.mjs +1 -1
  6. package/dist/chunks/claude-code-incremental-manager.mjs +6 -6
  7. package/dist/chunks/claude-wrapper.mjs +18 -5
  8. package/dist/chunks/codex.mjs +4 -4
  9. package/dist/chunks/commands2.mjs +5 -5
  10. package/dist/chunks/commit.mjs +2 -2
  11. package/dist/chunks/config-consolidator.mjs +2 -2
  12. package/dist/chunks/config-switch.mjs +6 -6
  13. package/dist/chunks/config.mjs +1 -1
  14. package/dist/chunks/config2.mjs +14 -14
  15. package/dist/chunks/doctor.mjs +3 -3
  16. package/dist/chunks/features.mjs +12 -12
  17. package/dist/chunks/help.mjs +35 -35
  18. package/dist/chunks/index.mjs +12 -11
  19. package/dist/chunks/init.mjs +21 -21
  20. package/dist/chunks/interview.mjs +33 -33
  21. package/dist/chunks/marketplace.mjs +8 -8
  22. package/dist/chunks/mcp.mjs +8 -8
  23. package/dist/chunks/menu.mjs +302 -293
  24. package/dist/chunks/notification.mjs +5 -5
  25. package/dist/chunks/onboarding.mjs +17 -346
  26. package/dist/chunks/package.mjs +1 -1
  27. package/dist/chunks/permission-manager.mjs +3 -3
  28. package/dist/chunks/plugin.mjs +1937 -0
  29. package/dist/chunks/prompts.mjs +3 -3
  30. package/dist/chunks/providers.mjs +13 -13
  31. package/dist/chunks/session.mjs +17 -17
  32. package/dist/chunks/skill.mjs +304 -0
  33. package/dist/chunks/skills-sync.mjs +4 -4
  34. package/dist/chunks/skills.mjs +2 -2
  35. package/dist/chunks/team.mjs +1 -1
  36. package/dist/chunks/uninstall.mjs +8 -8
  37. package/dist/chunks/update.mjs +4 -4
  38. package/dist/chunks/upgrade-manager.mjs +3 -3
  39. package/dist/chunks/version-checker.mjs +6 -6
  40. package/dist/chunks/workflows.mjs +2 -2
  41. package/dist/cli.mjs +57 -4
  42. package/dist/index.d.mts +157 -14
  43. package/dist/index.d.ts +157 -14
  44. package/dist/index.mjs +6 -5
  45. package/dist/shared/ccjk.B2Aos9HI.mjs +333 -0
  46. package/dist/shared/{ccjk.rLRHmcqD.mjs → ccjk.BQzWKmC3.mjs} +3 -3
  47. package/dist/shared/{ccjk.uVUeWAt8.mjs → ccjk.BZT_f2go.mjs} +7 -7
  48. package/dist/shared/{ccjk.-FoZ3zat.mjs → ccjk.BlPCiSHj.mjs} +10 -10
  49. package/dist/shared/ccjk.DH6cOJsf.mjs +1674 -0
  50. package/dist/shared/{ccjk.tB4-Y4Qb.mjs → ccjk.DrMygfCF.mjs} +1 -1
  51. package/dist/shared/ccjk.tJ08-yZt.mjs +179 -0
  52. package/package.json +1 -1
  53. package/dist/shared/ccjk.BhKlRJ0h.mjs +0 -114
@@ -5,7 +5,7 @@ import process__default from 'node:process';
5
5
  import ansis from 'ansis';
6
6
  import inquirer from 'inquirer';
7
7
  import { i18n } from './index2.mjs';
8
- import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.tB4-Y4Qb.mjs';
8
+ import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.DrMygfCF.mjs';
9
9
  import { randomUUID } from 'node:crypto';
10
10
  import 'node:url';
11
11
  import 'i18next';
@@ -2309,14 +2309,14 @@ function createSpecGenerator(language = "en") {
2309
2309
  function displayInterviewBanner(compact = false) {
2310
2310
  console.log("");
2311
2311
  if (compact) {
2312
- console.log(ansis.cyan.bold(" \u{1F3A4} Interview-Driven Development"));
2312
+ console.log(ansis.green.bold(" \u{1F3A4} Interview-Driven Development"));
2313
2313
  console.log(ansis.gray(' "Interview first. Spec second. Code last."'));
2314
2314
  } else {
2315
- console.log(ansis.cyan("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
2316
- console.log(ansis.cyan("\u2551") + ansis.bold.white(" \u{1F3A4} Interview-Driven Development (IDD) ") + ansis.cyan("\u2551"));
2317
- console.log(ansis.cyan("\u2551") + ansis.gray(' "Interview first. Spec second. Code last." ') + ansis.cyan("\u2551"));
2318
- console.log(ansis.cyan("\u2551") + ansis.gray(" Based on Thariq (@trq212) workflow from Anthropic ") + ansis.cyan("\u2551"));
2319
- console.log(ansis.cyan("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
2315
+ console.log(ansis.green("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
2316
+ console.log(ansis.green("\u2551") + ansis.bold.white(" \u{1F3A4} Interview-Driven Development (IDD) ") + ansis.green("\u2551"));
2317
+ console.log(ansis.green("\u2551") + ansis.gray(' "Interview first. Spec second. Code last." ') + ansis.green("\u2551"));
2318
+ console.log(ansis.green("\u2551") + ansis.gray(" Based on Thariq (@trq212) workflow from Anthropic ") + ansis.green("\u2551"));
2319
+ console.log(ansis.green("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
2320
2320
  }
2321
2321
  console.log("");
2322
2322
  }
@@ -2361,7 +2361,7 @@ function displayCategoryBreadcrumb(session) {
2361
2361
  return ansis.green(`${icon} ${p.name} \u2713`);
2362
2362
  }
2363
2363
  if (p.isCurrent) {
2364
- return ansis.cyan.bold(`${icon} ${p.name} \u25C0`);
2364
+ return ansis.green.bold(`${icon} ${p.name} \u25C0`);
2365
2365
  }
2366
2366
  return ansis.gray(`${icon} ${p.name}`);
2367
2367
  }).join(ansis.gray(" \u2192 "));
@@ -2374,7 +2374,7 @@ function displayQuestion(display, lang) {
2374
2374
  console.log("");
2375
2375
  console.log(ansis.gray("\u2500".repeat(65)));
2376
2376
  console.log("");
2377
- console.log(ansis.cyan.bold(` Q${display.questionNumber}`) + ansis.gray(` of ~${display.estimatedTotal}`) + ansis.gray(` \u2502 `) + ansis.yellow(headerText));
2377
+ console.log(ansis.green.bold(` Q${display.questionNumber}`) + ansis.gray(` of ~${display.estimatedTotal}`) + ansis.gray(` \u2502 `) + ansis.yellow(headerText));
2378
2378
  console.log("");
2379
2379
  console.log(ansis.white.bold(` ${questionText}`));
2380
2380
  console.log("");
@@ -2384,14 +2384,14 @@ async function askQuestion(display, lang) {
2384
2384
  const choices = display.options.map((opt, index) => {
2385
2385
  const label = opt.isRecommended ? `${opt.label} ${ansis.green("(Recommended)")}` : opt.label;
2386
2386
  return {
2387
- name: `${ansis.cyan(`${index + 1}.`)} ${label}
2387
+ name: `${ansis.green(`${index + 1}.`)} ${label}
2388
2388
  ${ansis.gray(opt.description)}`,
2389
2389
  value: opt.value,
2390
2390
  short: opt.label
2391
2391
  };
2392
2392
  });
2393
2393
  choices.push({
2394
- name: `${ansis.cyan(`${choices.length + 1}.`)} ${ansis.italic("Type something else...")}`,
2394
+ name: `${ansis.green(`${choices.length + 1}.`)} ${ansis.italic("Type something else...")}`,
2395
2395
  value: "__custom__",
2396
2396
  short: "Custom"
2397
2397
  });
@@ -2442,10 +2442,10 @@ async function askQuestion(display, lang) {
2442
2442
  }
2443
2443
  async function selectTemplate(lang) {
2444
2444
  console.log("");
2445
- console.log(ansis.cyan.bold(" \u{1F4CB} Select Interview Template"));
2445
+ console.log(ansis.green.bold(" \u{1F4CB} Select Interview Template"));
2446
2446
  console.log("");
2447
2447
  const choices = INTERVIEW_TEMPLATES.map((template, index) => ({
2448
- name: `${ansis.cyan(`${index + 1}.`)} ${ansis.bold(template.name[lang])}
2448
+ name: `${ansis.green(`${index + 1}.`)} ${ansis.bold(template.name[lang])}
2449
2449
  ${ansis.gray(template.description[lang])}
2450
2450
  ${ansis.gray(`~${template.estimatedQuestions} questions, ${template.defaultDepth} depth`)}`,
2451
2451
  value: template.id,
@@ -2469,29 +2469,29 @@ async function quickStartConfig(_lang) {
2469
2469
  const detectedTemplate = getTemplateById(detectedType);
2470
2470
  console.log(ansis.gray(` Detected project type: ${ansis.white(detectedType)}`));
2471
2471
  console.log("");
2472
- console.log(ansis.cyan.bold(" How would you like to proceed?"));
2472
+ console.log(ansis.green.bold(" How would you like to proceed?"));
2473
2473
  console.log("");
2474
2474
  const quickChoices = [
2475
2475
  {
2476
- name: `${ansis.cyan("1.")} ${ansis.green("\u26A1 Quick Start")} ${ansis.gray("(Recommended)")}
2476
+ name: `${ansis.green("1.")} ${ansis.green("\u26A1 Quick Start")} ${ansis.gray("(Recommended)")}
2477
2477
  ${ansis.gray(`Use ${detectedType} template, ~${detectedTemplate?.estimatedQuestions || 25} questions \u2192 SPEC.md`)}`,
2478
2478
  value: "quick-start",
2479
2479
  short: "Quick Start"
2480
2480
  },
2481
2481
  {
2482
- name: `${ansis.cyan("2.")} ${ansis.yellow("\u{1F52C} Deep Dive")}
2482
+ name: `${ansis.green("2.")} ${ansis.yellow("\u{1F52C} Deep Dive")}
2483
2483
  ${ansis.gray("40+ comprehensive questions for complex features")}`,
2484
2484
  value: "deep",
2485
2485
  short: "Deep Dive"
2486
2486
  },
2487
2487
  {
2488
- name: `${ansis.cyan("3.")} ${ansis.blue("\u2699\uFE0F Custom Setup")}
2488
+ name: `${ansis.green("3.")} ${ansis.green("\u2699\uFE0F Custom Setup")}
2489
2489
  ${ansis.gray("Choose template, depth, and output file")}`,
2490
2490
  value: "custom",
2491
2491
  short: "Custom"
2492
2492
  },
2493
2493
  {
2494
- name: `${ansis.cyan("4.")} ${ansis.magenta("\u{1F4A8} Express Mode")}
2494
+ name: `${ansis.green("4.")} ${ansis.magenta("\u{1F4A8} Express Mode")}
2495
2495
  ${ansis.gray("~10 essential questions only")}`,
2496
2496
  value: "express",
2497
2497
  short: "Express"
@@ -2566,7 +2566,7 @@ function displayCompletionSummary(session, specFile) {
2566
2566
  console.log("");
2567
2567
  console.log(` ${ansis.gray("Questions answered:")} ${ansis.white(String(session.questionsAsked))}`);
2568
2568
  console.log(` ${ansis.gray("Duration:")} ${ansis.white(`${duration} minutes`)}`);
2569
- console.log(` ${ansis.gray("Spec file:")} ${ansis.cyan(specFile)}`);
2569
+ console.log(` ${ansis.gray("Spec file:")} ${ansis.green(specFile)}`);
2570
2570
  console.log("");
2571
2571
  console.log(ansis.gray(" Category Summary:"));
2572
2572
  for (const progress of session.progress) {
@@ -2578,7 +2578,7 @@ function displayCompletionSummary(session, specFile) {
2578
2578
  console.log("");
2579
2579
  console.log(ansis.green("\u2550".repeat(65)));
2580
2580
  console.log("");
2581
- console.log(ansis.cyan(" Next steps:"));
2581
+ console.log(ansis.green(" Next steps:"));
2582
2582
  console.log(ansis.gray(` 1. Review the spec: ${ansis.white(`cat ${specFile}`)}`));
2583
2583
  console.log(ansis.gray(` 2. Start planning: ${ansis.white("/plan")}`));
2584
2584
  console.log(ansis.gray(` 3. Begin coding: ${ansis.white("Use the spec as context")}`));
@@ -2586,10 +2586,10 @@ function displayCompletionSummary(session, specFile) {
2586
2586
  }
2587
2587
  function listTemplates(lang) {
2588
2588
  console.log("");
2589
- console.log(ansis.cyan.bold(" Available Interview Templates:"));
2589
+ console.log(ansis.green.bold(" Available Interview Templates:"));
2590
2590
  console.log("");
2591
2591
  for (const template of INTERVIEW_TEMPLATES) {
2592
- console.log(ansis.cyan(` ${template.id}`));
2592
+ console.log(ansis.green(` ${template.id}`));
2593
2593
  console.log(` ${ansis.white(template.name[lang])}`);
2594
2594
  console.log(` ${ansis.gray(template.description[lang])}`);
2595
2595
  console.log(` ${ansis.gray(`~${template.estimatedQuestions} questions, ${template.defaultDepth} depth`)}`);
@@ -2636,17 +2636,17 @@ async function interview(options = {}) {
2636
2636
  message: ansis.gray("Interview depth:"),
2637
2637
  choices: [
2638
2638
  {
2639
- name: `${ansis.cyan("1.")} \u26A1 Quick (~10 questions)`,
2639
+ name: `${ansis.green("1.")} \u26A1 Quick (~10 questions)`,
2640
2640
  value: "quick",
2641
2641
  short: "Quick"
2642
2642
  },
2643
2643
  {
2644
- name: `${ansis.cyan("2.")} \u{1F4CA} Standard (~25 questions) ${template2.defaultDepth === "standard" ? ansis.green("(Recommended)") : ""}`,
2644
+ name: `${ansis.green("2.")} \u{1F4CA} Standard (~25 questions) ${template2.defaultDepth === "standard" ? ansis.green("(Recommended)") : ""}`,
2645
2645
  value: "standard",
2646
2646
  short: "Standard"
2647
2647
  },
2648
2648
  {
2649
- name: `${ansis.cyan("3.")} \u{1F52C} Deep (~40+ questions) ${template2.defaultDepth === "deep" ? ansis.green("(Recommended)") : ""}`,
2649
+ name: `${ansis.green("3.")} \u{1F52C} Deep (~40+ questions) ${template2.defaultDepth === "deep" ? ansis.green("(Recommended)") : ""}`,
2650
2650
  value: "deep",
2651
2651
  short: "Deep"
2652
2652
  }
@@ -2681,10 +2681,10 @@ async function interview(options = {}) {
2681
2681
  console.log(ansis.gray("\u2500".repeat(50)));
2682
2682
  console.log(` ${ansis.gray("Template:")} ${ansis.white(template.name[lang])}`);
2683
2683
  console.log(` ${ansis.gray("Depth:")} ${ansis.white(depth)} ${ansis.gray(`(~${depth === "quick" ? 10 : depth === "standard" ? 25 : 40}+ questions)`)}`);
2684
- console.log(` ${ansis.gray("Output:")} ${ansis.cyan(specFile)}`);
2684
+ console.log(` ${ansis.gray("Output:")} ${ansis.green(specFile)}`);
2685
2685
  console.log(ansis.gray("\u2500".repeat(50)));
2686
2686
  console.log("");
2687
- console.log(ansis.cyan(" Starting interview..."));
2687
+ console.log(ansis.green(" Starting interview..."));
2688
2688
  console.log(ansis.gray(" Press Ctrl+C to pause | Enter to select | Type for custom"));
2689
2689
  console.log("");
2690
2690
  const engine = createInterviewEngine(lang);
@@ -2735,7 +2735,7 @@ async function interview(options = {}) {
2735
2735
  questionDisplay = await engine.getNextQuestion(session.id);
2736
2736
  }
2737
2737
  console.log("");
2738
- console.log(ansis.cyan(" Generating specification..."));
2738
+ console.log(ansis.green(" Generating specification..."));
2739
2739
  const specGenerator = createSpecGenerator(lang);
2740
2740
  const spec = await specGenerator.generateSpec(session);
2741
2741
  const specDir = dirname(absoluteSpecFile);
@@ -2789,7 +2789,7 @@ async function resumeInterview(sessionFile, options = {}) {
2789
2789
  name: "selectedSession",
2790
2790
  message: ansis.gray("Select a session to resume:"),
2791
2791
  choices: sessions.map((s, i) => ({
2792
- name: `${ansis.cyan(`${i + 1}.`)} ${ansis.white(s.name)}
2792
+ name: `${ansis.green(`${i + 1}.`)} ${ansis.white(s.name)}
2793
2793
  ${ansis.gray(`Modified: ${s.modified.toLocaleString()}`)}`,
2794
2794
  value: s.path,
2795
2795
  short: s.name
@@ -2812,7 +2812,7 @@ async function resumeInterview(sessionFile, options = {}) {
2812
2812
  return;
2813
2813
  }
2814
2814
  displayInterviewBanner();
2815
- console.log(ansis.cyan(" Resuming interview session..."));
2815
+ console.log(ansis.green(" Resuming interview session..."));
2816
2816
  console.log(ansis.gray(` Session ID: ${session.id}`));
2817
2817
  console.log(ansis.gray(` Progress: ${session.questionsAsked} questions answered`));
2818
2818
  console.log("");
@@ -2847,7 +2847,7 @@ async function resumeInterview(sessionFile, options = {}) {
2847
2847
  questionDisplay = await engine.getNextQuestion(session.id);
2848
2848
  }
2849
2849
  console.log("");
2850
- console.log(ansis.cyan(" Generating specification..."));
2850
+ console.log(ansis.green(" Generating specification..."));
2851
2851
  const specGenerator = createSpecGenerator(lang);
2852
2852
  const spec = await specGenerator.generateSpec(session);
2853
2853
  await specGenerator.writeSpecToFile(spec, session.specFile);
@@ -2881,7 +2881,7 @@ async function listInterviewSessions() {
2881
2881
  const { readdir, stat } = await import('node:fs/promises');
2882
2882
  const { homedir } = await import('node:os');
2883
2883
  console.log("");
2884
- console.log(ansis.cyan.bold(" Saved Interview Sessions:"));
2884
+ console.log(ansis.green.bold(" Saved Interview Sessions:"));
2885
2885
  console.log("");
2886
2886
  const searchDirs = [
2887
2887
  process__default.cwd(),
@@ -2896,7 +2896,7 @@ async function listInterviewSessions() {
2896
2896
  const filePath = join(dir, file);
2897
2897
  const fileStats = await stat(filePath);
2898
2898
  const modified = fileStats.mtime.toLocaleString();
2899
- console.log(` ${ansis.cyan("\u2022")} ${ansis.white(file)}`);
2899
+ console.log(` ${ansis.green("\u2022")} ${ansis.white(file)}`);
2900
2900
  console.log(` ${ansis.gray("Path:")} ${filePath}`);
2901
2901
  console.log(` ${ansis.gray("Modified:")} ${modified}`);
2902
2902
  console.log("");
@@ -18,7 +18,7 @@ import './fs-operations.mjs';
18
18
 
19
19
  async function searchCommand(query, _options) {
20
20
  try {
21
- console.log(ansis.cyan(i18n.t("marketplace:searching", { query })));
21
+ console.log(ansis.green(i18n.t("marketplace:searching", { query })));
22
22
  const results = await searchPackages({ query });
23
23
  if (results.packages.length === 0) {
24
24
  console.log(ansis.yellow(i18n.t("marketplace:noResults")));
@@ -33,7 +33,7 @@ async function searchCommand(query, _options) {
33
33
  console.log(` ${pkg.description.en || Object.values(pkg.description)[0]}`);
34
34
  console.log(` ${ansis.gray(i18n.t("marketplace:packageInfo.category"))}: ${pkg.category}`);
35
35
  if (pkg.verified === "verified") {
36
- console.log(` ${ansis.blue("\u2713")} ${i18n.t("marketplace:packageInfo.verified")}`);
36
+ console.log(` ${ansis.green("\u2713")} ${i18n.t("marketplace:packageInfo.verified")}`);
37
37
  }
38
38
  console.log();
39
39
  }
@@ -54,7 +54,7 @@ async function installCommand(packageName, options) {
54
54
  console.error(ansis.red(i18n.t("marketplace:packageNotFound", { name: packageName })));
55
55
  throw new Error(`Package not found: ${packageName}`);
56
56
  }
57
- console.log(ansis.cyan(i18n.t("marketplace:installing", { name: packageName })));
57
+ console.log(ansis.green(i18n.t("marketplace:installing", { name: packageName })));
58
58
  const result = await installPackage(packageName, {
59
59
  force: options.force,
60
60
  skipVerification: options.skipVerification
@@ -83,7 +83,7 @@ async function uninstallCommand(packageName, options) {
83
83
  console.error(ansis.red(i18n.t("marketplace:packageNotInstalled", { name: packageName })));
84
84
  throw new Error(`Package not installed: ${packageName}`);
85
85
  }
86
- console.log(ansis.cyan(i18n.t("marketplace:uninstalling", { name: packageName })));
86
+ console.log(ansis.green(i18n.t("marketplace:uninstalling", { name: packageName })));
87
87
  const result = await uninstallPackage(packageName, {
88
88
  force: options.force
89
89
  });
@@ -105,7 +105,7 @@ async function uninstallCommand(packageName, options) {
105
105
  async function updateCommand(packageName, _options) {
106
106
  try {
107
107
  if (packageName) {
108
- console.log(ansis.cyan(i18n.t("marketplace:updating", { name: packageName })));
108
+ console.log(ansis.green(i18n.t("marketplace:updating", { name: packageName })));
109
109
  const result = await updatePackage(packageName);
110
110
  if (result.success) {
111
111
  console.log(ansis.green(i18n.t("marketplace:updateSuccess", { name: packageName })));
@@ -117,7 +117,7 @@ async function updateCommand(packageName, _options) {
117
117
  throw new Error(`Update failed: ${packageName}`);
118
118
  }
119
119
  } else {
120
- console.log(ansis.cyan(i18n.t("marketplace:checkingUpdates")));
120
+ console.log(ansis.green(i18n.t("marketplace:checkingUpdates")));
121
121
  const updates = await checkForUpdates();
122
122
  if (updates.length === 0) {
123
123
  console.log(ansis.green(i18n.t("marketplace:noUpdates")));
@@ -195,7 +195,7 @@ async function infoCommand(packageName, _options) {
195
195
  console.log(`${ansis.bold(i18n.t("marketplace:packageInfo.keywords"))}: ${pkg.keywords.join(", ")}`);
196
196
  }
197
197
  if (pkg.verified === "verified") {
198
- console.log(`${ansis.blue("\u2713")} ${i18n.t("marketplace:packageInfo.verified")}`);
198
+ console.log(`${ansis.green("\u2713")} ${i18n.t("marketplace:packageInfo.verified")}`);
199
199
  }
200
200
  console.log();
201
201
  console.log(`${ansis.bold("Status")}: ${installed ? ansis.green("Installed") : ansis.gray("Not installed")}`);
@@ -209,7 +209,7 @@ async function infoCommand(packageName, _options) {
209
209
  async function marketplaceMenu(action, options) {
210
210
  const opts = options || {};
211
211
  if (!action) {
212
- console.log(ansis.cyan("\n\u{1F6D2} Marketplace Commands:\n"));
212
+ console.log(ansis.green("\n\u{1F6D2} Marketplace Commands:\n"));
213
213
  console.log(" ccjk cloud plugins search <query> - Search packages");
214
214
  console.log(" ccjk cloud plugins install <pkg> - Install package");
215
215
  console.log(" ccjk cloud plugins uninstall <pkg> - Uninstall package");
@@ -4,7 +4,7 @@ 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
6
  import { r as readMcpConfig, b as backupMcpConfig, w as writeMcpConfig } from './config.mjs';
7
- export { m as mcpInstall, a as mcpList, b as mcpSearch, c as mcpUninstall } from '../shared/ccjk.uVUeWAt8.mjs';
7
+ export { m as mcpInstall, a as mcpList, b as mcpSearch, c as mcpUninstall } from '../shared/ccjk.BZT_f2go.mjs';
8
8
  import { M as MCP_SERVICE_CONFIGS } from './codex.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:url';
@@ -121,7 +121,7 @@ async function mcpRelease(options = {}) {
121
121
  }
122
122
  console.log("");
123
123
  if (options.dryRun) {
124
- console.log(ansis.blue(isZh ? "(\u6A21\u62DF\u8FD0\u884C - \u4E0D\u4F1A\u5B9E\u9645\u4FEE\u6539\u914D\u7F6E)" : "(Dry run - no changes will be made)"));
124
+ console.log(ansis.green(isZh ? "(\u6A21\u62DF\u8FD0\u884C - \u4E0D\u4F1A\u5B9E\u9645\u4FEE\u6539\u914D\u7F6E)" : "(Dry run - no changes will be made)"));
125
125
  return;
126
126
  }
127
127
  const result = await releaseServices(servicesToRelease, options);
@@ -200,7 +200,7 @@ async function mcpDoctor(options = {}) {
200
200
  console.log(` ${isZh ? "\u603B\u8BA1" : "Total"}: ${ansis.bold(configuredServices.length.toString())} ${isZh ? "\u4E2A\u670D\u52A1" : "services"}`);
201
201
  console.log(` ${ansis.green("Core")}: ${configuredCore.length}/${coreServices.length}`);
202
202
  console.log(` ${ansis.yellow("OnDemand")}: ${configuredOndemand.length}/${ondemandServices.length}`);
203
- console.log(` ${ansis.blue("Scenario")}: ${configuredScenario.length}/${scenarioServices.length}`);
203
+ console.log(` ${ansis.green("Scenario")}: ${configuredScenario.length}/${scenarioServices.length}`);
204
204
  console.log("");
205
205
  const perfWarning = checkMcpPerformance(configuredServices.length);
206
206
  if (perfWarning) {
@@ -243,7 +243,7 @@ async function mcpDoctor(options = {}) {
243
243
  const tierColor = {
244
244
  core: ansis.green,
245
245
  ondemand: ansis.yellow,
246
- scenario: ansis.blue
246
+ scenario: ansis.green
247
247
  };
248
248
  console.log(` ${statusIcon[health.status]} ${ansis.bold(serviceId)}`);
249
249
  console.log(` ${isZh ? "\u5C42\u7EA7" : "Tier"}: ${(tierColor[health.tier] || ansis.gray)(health.tier)}`);
@@ -274,9 +274,9 @@ async function mcpDoctor(options = {}) {
274
274
  }
275
275
  console.log(ansis.bold(isZh ? "\u{1F680} \u5FEB\u901F\u64CD\u4F5C" : "\u{1F680} Quick Actions"));
276
276
  console.log(ansis.dim("\u2500".repeat(40)));
277
- console.log(` ${ansis.cyan("ccjk mcp profile use minimal")} - ${isZh ? "\u5207\u6362\u5230\u6781\u7B80\u6A21\u5F0F" : "Switch to minimal mode"}`);
278
- console.log(` ${ansis.cyan("ccjk mcp profile list")} - ${isZh ? "\u67E5\u770B\u6240\u6709\u9884\u8BBE" : "View all profiles"}`);
279
- console.log(` ${ansis.cyan("ccjk mcp release")} - ${isZh ? "\u91CA\u653E\u7A7A\u95F2\u670D\u52A1" : "Release idle services"}`);
277
+ console.log(` ${ansis.green("ccjk mcp profile use minimal")} - ${isZh ? "\u5207\u6362\u5230\u6781\u7B80\u6A21\u5F0F" : "Switch to minimal mode"}`);
278
+ console.log(` ${ansis.green("ccjk mcp profile list")} - ${isZh ? "\u67E5\u770B\u6240\u6709\u9884\u8BBE" : "View all profiles"}`);
279
+ console.log(` ${ansis.green("ccjk mcp release")} - ${isZh ? "\u91CA\u653E\u7A7A\u95F2\u670D\u52A1" : "Release idle services"}`);
280
280
  console.log("");
281
281
  console.log(ansis.dim("\u2550".repeat(60)));
282
282
  const summaryStatus = perfWarning?.level === "critical" ? ansis.red(isZh ? "\u9700\u8981\u4F18\u5316" : "Needs Optimization") : perfWarning?.level === "warning" ? ansis.yellow(isZh ? "\u5EFA\u8BAE\u4F18\u5316" : "Optimization Recommended") : ansis.green(isZh ? "\u72B6\u6001\u826F\u597D" : "Healthy");
@@ -444,7 +444,7 @@ async function mcpStatus(options = {}) {
444
444
  console.log("");
445
445
  console.log(`${ansis.green("\u25CF")} ${isZh ? "\u6838\u5FC3\u670D\u52A1" : "Core"}: ${coreCount}`);
446
446
  console.log(`${ansis.yellow("\u25CF")} ${isZh ? "\u6309\u9700\u670D\u52A1" : "On-demand"}: ${ondemandCount}`);
447
- console.log(`${ansis.blue("\u25CF")} ${isZh ? "\u573A\u666F\u670D\u52A1" : "Scenario"}: ${scenarioCount}`);
447
+ console.log(`${ansis.green("\u25CF")} ${isZh ? "\u573A\u666F\u670D\u52A1" : "Scenario"}: ${scenarioCount}`);
448
448
  console.log(`${ansis.dim("\u2500")} ${isZh ? "\u603B\u8BA1" : "Total"}: ${services.length}`);
449
449
  const perfResult = checkMcpPerformance(services.length);
450
450
  if (perfResult) {