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.
- package/dist/chunks/agent.mjs +1412 -0
- package/dist/chunks/api.mjs +7 -7
- package/dist/chunks/auto-updater.mjs +9 -9
- package/dist/chunks/ccr.mjs +4 -4
- package/dist/chunks/ccu.mjs +1 -1
- package/dist/chunks/claude-code-incremental-manager.mjs +6 -6
- package/dist/chunks/claude-wrapper.mjs +18 -5
- package/dist/chunks/codex.mjs +4 -4
- package/dist/chunks/commands2.mjs +5 -5
- package/dist/chunks/commit.mjs +2 -2
- package/dist/chunks/config-consolidator.mjs +2 -2
- package/dist/chunks/config-switch.mjs +6 -6
- package/dist/chunks/config.mjs +1 -1
- package/dist/chunks/config2.mjs +14 -14
- package/dist/chunks/doctor.mjs +3 -3
- package/dist/chunks/features.mjs +12 -12
- package/dist/chunks/help.mjs +35 -35
- package/dist/chunks/index.mjs +12 -11
- package/dist/chunks/init.mjs +21 -21
- package/dist/chunks/interview.mjs +33 -33
- package/dist/chunks/marketplace.mjs +8 -8
- package/dist/chunks/mcp.mjs +8 -8
- package/dist/chunks/menu.mjs +302 -293
- package/dist/chunks/notification.mjs +5 -5
- package/dist/chunks/onboarding.mjs +17 -346
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/permission-manager.mjs +3 -3
- package/dist/chunks/plugin.mjs +1937 -0
- package/dist/chunks/prompts.mjs +3 -3
- package/dist/chunks/providers.mjs +13 -13
- package/dist/chunks/session.mjs +17 -17
- package/dist/chunks/skill.mjs +304 -0
- package/dist/chunks/skills-sync.mjs +4 -4
- package/dist/chunks/skills.mjs +2 -2
- package/dist/chunks/team.mjs +1 -1
- package/dist/chunks/uninstall.mjs +8 -8
- package/dist/chunks/update.mjs +4 -4
- package/dist/chunks/upgrade-manager.mjs +3 -3
- package/dist/chunks/version-checker.mjs +6 -6
- package/dist/chunks/workflows.mjs +2 -2
- package/dist/cli.mjs +57 -4
- package/dist/index.d.mts +157 -14
- package/dist/index.d.ts +157 -14
- package/dist/index.mjs +6 -5
- package/dist/shared/ccjk.B2Aos9HI.mjs +333 -0
- package/dist/shared/{ccjk.rLRHmcqD.mjs → ccjk.BQzWKmC3.mjs} +3 -3
- package/dist/shared/{ccjk.uVUeWAt8.mjs → ccjk.BZT_f2go.mjs} +7 -7
- package/dist/shared/{ccjk.-FoZ3zat.mjs → ccjk.BlPCiSHj.mjs} +10 -10
- package/dist/shared/ccjk.DH6cOJsf.mjs +1674 -0
- package/dist/shared/{ccjk.tB4-Y4Qb.mjs → ccjk.DrMygfCF.mjs} +1 -1
- package/dist/shared/ccjk.tJ08-yZt.mjs +179 -0
- package/package.json +1 -1
- 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.
|
|
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.
|
|
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.
|
|
2316
|
-
console.log(ansis.
|
|
2317
|
-
console.log(ansis.
|
|
2318
|
-
console.log(ansis.
|
|
2319
|
-
console.log(ansis.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
2639
|
+
name: `${ansis.green("1.")} \u26A1 Quick (~10 questions)`,
|
|
2640
2640
|
value: "quick",
|
|
2641
2641
|
short: "Quick"
|
|
2642
2642
|
},
|
|
2643
2643
|
{
|
|
2644
|
-
name: `${ansis.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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");
|
package/dist/chunks/mcp.mjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
278
|
-
console.log(` ${ansis.
|
|
279
|
-
console.log(` ${ansis.
|
|
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.
|
|
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) {
|