ccjk 10.1.0 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/agent-teams.mjs +1 -1
- package/dist/chunks/agent.mjs +1 -1
- package/dist/chunks/api-providers.mjs +1 -1
- package/dist/chunks/api.mjs +3 -3
- package/dist/chunks/auto-bootstrap.mjs +1 -1
- package/dist/chunks/auto-updater.mjs +1 -1
- package/dist/{shared/ccjk.Br91zBIG.mjs → chunks/banner.mjs} +52 -3
- package/dist/chunks/boost.mjs +2 -2
- package/dist/chunks/ccjk-agents.mjs +1 -1
- package/dist/chunks/ccjk-all.mjs +1 -1
- package/dist/chunks/ccjk-config.mjs +1 -1
- package/dist/chunks/ccjk-hooks.mjs +1 -1
- package/dist/chunks/ccjk-mcp.mjs +2 -2
- package/dist/chunks/ccjk-setup.mjs +1 -1
- package/dist/chunks/ccjk-skills.mjs +1 -1
- package/dist/chunks/ccr.mjs +10 -10
- package/dist/chunks/ccu.mjs +1 -1
- package/dist/chunks/check-updates.mjs +3 -3
- package/dist/chunks/claude-code-config-manager.mjs +7 -7
- package/dist/chunks/claude-code-incremental-manager.mjs +2 -2
- package/dist/chunks/claude-config.mjs +3 -3
- package/dist/chunks/claude-wrapper.mjs +2 -2
- package/dist/chunks/codex-config-switch.mjs +2 -2
- package/dist/chunks/codex-provider-manager.mjs +2 -2
- package/dist/chunks/codex-uninstaller.mjs +2 -2
- package/dist/chunks/codex.mjs +5 -5
- package/dist/chunks/commands.mjs +88 -391
- package/dist/chunks/commands2.mjs +391 -88
- package/dist/chunks/completion.mjs +1 -1
- package/dist/chunks/config-consolidator.mjs +2 -2
- package/dist/chunks/config-switch.mjs +3 -3
- package/dist/chunks/config.mjs +5 -5
- package/dist/chunks/config2.mjs +410 -400
- package/dist/chunks/config3.mjs +400 -410
- package/dist/chunks/constants.mjs +1 -1
- package/dist/chunks/context.mjs +283 -1
- package/dist/chunks/dashboard.mjs +365 -0
- package/dist/chunks/doctor.mjs +4 -4
- package/dist/chunks/features.mjs +11 -11
- package/dist/chunks/fs-operations.mjs +1 -1
- package/dist/chunks/health-alerts.mjs +304 -0
- package/dist/chunks/health-check.mjs +532 -0
- package/dist/chunks/index.mjs +10 -177
- package/dist/chunks/index2.mjs +168 -1162
- package/dist/chunks/index3.mjs +1076 -910
- package/dist/chunks/index4.mjs +947 -137
- package/dist/chunks/index5.mjs +167 -635
- package/dist/chunks/index6.mjs +663 -0
- package/dist/chunks/init.mjs +19 -19
- package/dist/chunks/installer.mjs +649 -147
- package/dist/chunks/installer2.mjs +147 -649
- package/dist/chunks/interview.mjs +2 -2
- package/dist/chunks/marketplace.mjs +1 -1
- package/dist/chunks/mcp.mjs +4 -4
- package/dist/chunks/menu.mjs +16 -9
- package/dist/chunks/metrics-display.mjs +152 -0
- package/dist/chunks/migrator.mjs +1 -1
- package/dist/chunks/monitor.mjs +2 -2
- package/dist/chunks/notification.mjs +1 -1
- package/dist/chunks/onboarding.mjs +2 -2
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/permission-manager.mjs +2 -2
- package/dist/chunks/permissions.mjs +1 -1
- package/dist/chunks/persistence-manager.mjs +781 -0
- package/dist/chunks/persistence.mjs +667 -0
- package/dist/chunks/platform.mjs +1 -1
- package/dist/chunks/plugin.mjs +1 -1
- package/dist/chunks/prompts.mjs +1 -1
- package/dist/chunks/providers.mjs +1 -1
- package/dist/chunks/quick-actions.mjs +321 -0
- package/dist/chunks/quick-setup.mjs +8 -8
- package/dist/chunks/silent-updater.mjs +1 -1
- package/dist/chunks/simple-config.mjs +2 -2
- package/dist/chunks/skill.mjs +1 -1
- package/dist/chunks/skills-sync.mjs +1 -1
- package/dist/chunks/skills.mjs +1 -1
- package/dist/chunks/slash-commands.mjs +208 -0
- package/dist/chunks/smart-defaults.mjs +1 -1
- package/dist/chunks/startup.mjs +1 -1
- package/dist/chunks/stats.mjs +1 -1
- package/dist/chunks/status.mjs +31 -2
- package/dist/chunks/team.mjs +1 -1
- package/dist/chunks/thinking.mjs +2 -2
- package/dist/chunks/uninstall.mjs +5 -5
- package/dist/chunks/update.mjs +7 -7
- package/dist/chunks/upgrade-manager.mjs +2 -2
- package/dist/chunks/version-checker.mjs +3 -3
- package/dist/chunks/vim.mjs +1 -1
- package/dist/cli.mjs +191 -21
- package/dist/i18n/locales/en/cli.json +14 -1
- package/dist/i18n/locales/en/common.json +27 -0
- package/dist/i18n/locales/en/context.json +54 -1
- package/dist/i18n/locales/en/dashboard.json +78 -0
- package/dist/i18n/locales/en/persistence.json +127 -0
- package/dist/i18n/locales/en/quick-actions.json +78 -0
- package/dist/i18n/locales/zh-CN/cli.json +14 -1
- package/dist/i18n/locales/zh-CN/common.json +27 -0
- package/dist/i18n/locales/zh-CN/context.json +54 -1
- package/dist/i18n/locales/zh-CN/dashboard.json +78 -0
- package/dist/i18n/locales/zh-CN/persistence.json +127 -0
- package/dist/i18n/locales/zh-CN/quick-actions.json +78 -0
- package/dist/index.mjs +2 -2
- package/dist/shared/{ccjk.DE91nClQ.mjs → ccjk.BKoi8-Hy.mjs} +1 -1
- package/dist/shared/{ccjk.Dpw86UX0.mjs → ccjk.CxtuJxaS.mjs} +1 -1
- package/dist/shared/{ccjk.ClzTOz9n.mjs → ccjk.DB2UYcq0.mjs} +5 -5
- package/dist/shared/{ccjk.Bndhan7G.mjs → ccjk.DfwJOEok.mjs} +1 -1
- package/dist/shared/{ccjk.DvIrK0wz.mjs → ccjk.DrMygfCF.mjs} +1 -1
- package/dist/shared/{ccjk.CmsW23FN.mjs → ccjk.IbImMVWM.mjs} +3 -3
- package/package.json +19 -19
|
@@ -4,8 +4,8 @@ import { resolve, dirname, join } from 'node:path';
|
|
|
4
4
|
import process__default from 'node:process';
|
|
5
5
|
import ansis from 'ansis';
|
|
6
6
|
import inquirer from 'inquirer';
|
|
7
|
-
import { i18n } from './
|
|
8
|
-
import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.
|
|
7
|
+
import { i18n } from './index2.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';
|
package/dist/chunks/mcp.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import ansis from 'ansis';
|
|
2
|
-
import { i18n } from './
|
|
2
|
+
import { i18n } from './index2.mjs';
|
|
3
3
|
import 'node:child_process';
|
|
4
4
|
import 'node:process';
|
|
5
5
|
import { M as MCP_SERVICE_TIERS, i as isCoreService, g as getServicesByTier, c as checkMcpPerformance, f as formatPerformanceWarning, a as calculateResourceUsage, b as getOptimizationSuggestions, d as getMcpTierConfig } from './mcp-performance.mjs';
|
|
6
6
|
import { r as readMcpConfig, b as backupMcpConfig, w as writeMcpConfig } from './claude-config.mjs';
|
|
7
7
|
import inquirer from 'inquirer';
|
|
8
8
|
import { M as MCP_SERVICE_CONFIGS } from './codex.mjs';
|
|
9
|
-
import { d as displayInstalledMcpServices,
|
|
9
|
+
import { d as displayInstalledMcpServices, a as isMcpServiceInstalled, b as installMcpService, u as uninstallMcpService } from '../shared/ccjk.DB2UYcq0.mjs';
|
|
10
10
|
import { existsSync, unlinkSync, statSync, mkdirSync, readFileSync } from 'node:fs';
|
|
11
11
|
import { homedir } from 'node:os';
|
|
12
12
|
import { join } from 'pathe';
|
|
@@ -17,6 +17,8 @@ import 'i18next-fs-backend';
|
|
|
17
17
|
import './constants.mjs';
|
|
18
18
|
import './json-config.mjs';
|
|
19
19
|
import 'dayjs';
|
|
20
|
+
import 'node:crypto';
|
|
21
|
+
import 'node:fs/promises';
|
|
20
22
|
import './platform.mjs';
|
|
21
23
|
import 'tinyexec';
|
|
22
24
|
import 'ora';
|
|
@@ -29,8 +31,6 @@ import './prompts.mjs';
|
|
|
29
31
|
import './package.mjs';
|
|
30
32
|
import '../shared/ccjk.DHbrGcgg.mjs';
|
|
31
33
|
import 'inquirer-toggle';
|
|
32
|
-
import 'node:crypto';
|
|
33
|
-
import 'node:fs/promises';
|
|
34
34
|
|
|
35
35
|
function getReleasableServices(configuredServices, tier) {
|
|
36
36
|
return configuredServices.filter((serviceId) => {
|
package/dist/chunks/menu.mjs
CHANGED
|
@@ -5,17 +5,17 @@ import inquirer from 'inquirer';
|
|
|
5
5
|
import { join } from 'pathe';
|
|
6
6
|
import { M as MCP_SERVICE_CONFIGS } from './codex.mjs';
|
|
7
7
|
import { CODE_TOOL_BANNERS, CLAUDE_DIR, isCodeToolType, DEFAULT_CODE_TOOL_TYPE } from './constants.mjs';
|
|
8
|
-
import { ensureI18nInitialized, i18n } from './
|
|
9
|
-
import {
|
|
8
|
+
import { ensureI18nInitialized, i18n } from './index2.mjs';
|
|
9
|
+
import { displayBannerWithInfo } from './banner.mjs';
|
|
10
10
|
import { updateZcfConfig, readZcfConfig } from './ccjk-config.mjs';
|
|
11
11
|
import { r as readMcpConfig } from './claude-config.mjs';
|
|
12
|
-
import { r as resolveCodeType } from '../shared/ccjk.
|
|
13
|
-
import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.
|
|
12
|
+
import { r as resolveCodeType } from '../shared/ccjk.CxtuJxaS.mjs';
|
|
13
|
+
import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.DrMygfCF.mjs';
|
|
14
14
|
import { changeScriptLanguageFeature, configureMcpFeature, configureEnvPermissionFeature, configureAiMemoryFeature, configureDefaultModelFeature, configureApiFeature } from './features.mjs';
|
|
15
15
|
import { p as promptBoolean } from '../shared/ccjk.DHbrGcgg.mjs';
|
|
16
16
|
import { homedir } from 'node:os';
|
|
17
|
-
import { runCcrStop, runCcrStart, runCcrRestart, runCcrStatus, runCcrUi } from './
|
|
18
|
-
import { readCcrConfig, configureCcrFeature } from './
|
|
17
|
+
import { runCcrStop, runCcrStart, runCcrRestart, runCcrStatus, runCcrUi } from './commands.mjs';
|
|
18
|
+
import { readCcrConfig, configureCcrFeature } from './config2.mjs';
|
|
19
19
|
import { a as isCcrInstalled, b as installCcr, i as init } from './init.mjs';
|
|
20
20
|
import { ccjkAgents } from './ccjk-agents.mjs';
|
|
21
21
|
import { ccjkSkills } from './ccjk-skills.mjs';
|
|
@@ -368,6 +368,7 @@ async function showSimplifiedMenu() {
|
|
|
368
368
|
console.log(` ${ansis.green("K.")} ${isZh ? "Skills \u7BA1\u7406" : "Skills Manager"} ${ansis.dim(isZh ? "- \u5B89\u88C5/\u66F4\u65B0/\u5220\u9664\u5DE5\u4F5C\u6D41\u6280\u80FD" : "- Install/update/remove workflow skills")}`);
|
|
369
369
|
console.log(` ${ansis.green("M.")} ${isZh ? "MCP \u7BA1\u7406" : "MCP Manager"} ${ansis.dim(isZh ? "- \u914D\u7F6E Model Context Protocol \u670D\u52A1" : "- Configure MCP services")}`);
|
|
370
370
|
console.log(` ${ansis.green("A.")} ${isZh ? "Agents \u7BA1\u7406" : "Agents Manager"} ${ansis.dim(isZh ? "- \u521B\u5EFA/\u7BA1\u7406 AI \u667A\u80FD\u4F53" : "- Create/manage AI agents")}`);
|
|
371
|
+
console.log(` ${ansis.green("P.")} ${isZh ? "\u6301\u4E45\u5316\u7BA1\u7406" : "Persistence Manager"} ${ansis.dim(isZh ? "- \u7BA1\u7406\u4E0A\u4E0B\u6587\u5B58\u50A8\u548C\u5C42\u7EA7" : "- Manage context storage and tiers")}`);
|
|
371
372
|
console.log(` ${ansis.green("R.")} ${isZh ? "CCR" : "CCR"} ${ansis.dim(isZh ? "- \u914D\u7F6E Claude Code Router \u4EE5\u4F7F\u7528\u591A\u4E2A AI \u6A21\u578B" : "- Configure Claude Code Router for multiple AI models")}`);
|
|
372
373
|
console.log("");
|
|
373
374
|
console.log(ansis.dim(` ------------ CCJK ------------`));
|
|
@@ -386,7 +387,7 @@ async function showSimplifiedMenu() {
|
|
|
386
387
|
message: isZh ? "\u8BF7\u8F93\u5165\u9009\u9879:" : "Enter option:",
|
|
387
388
|
validate: (value) => {
|
|
388
389
|
const normalized2 = normalizeMenuInput(value);
|
|
389
|
-
const valid = ["0", "1", "2", "3", "4", "5", "6", "7", "k", "m", "a", "r", "b", "s", "-", "+", "d", "h", "q"];
|
|
390
|
+
const valid = ["0", "1", "2", "3", "4", "5", "6", "7", "k", "m", "a", "p", "r", "b", "s", "-", "+", "d", "h", "q"];
|
|
390
391
|
return valid.includes(normalized2) || (isZh ? "\u8BF7\u8F93\u5165\u6709\u6548\u9009\u9879" : "Please enter a valid option");
|
|
391
392
|
}
|
|
392
393
|
});
|
|
@@ -438,14 +439,20 @@ async function showSimplifiedMenu() {
|
|
|
438
439
|
await ccjkAgents({});
|
|
439
440
|
break;
|
|
440
441
|
}
|
|
442
|
+
case "p": {
|
|
443
|
+
const { persistenceManager } = await import('./persistence-manager.mjs');
|
|
444
|
+
await persistenceManager();
|
|
445
|
+
printSeparator();
|
|
446
|
+
return void 0;
|
|
447
|
+
}
|
|
441
448
|
case "r": {
|
|
442
449
|
await runCcrMenuFeature();
|
|
443
450
|
printSeparator();
|
|
444
451
|
return void 0;
|
|
445
452
|
}
|
|
446
453
|
case "b": {
|
|
447
|
-
const {
|
|
448
|
-
await
|
|
454
|
+
const { dashboardCommand } = await import('./dashboard.mjs');
|
|
455
|
+
await dashboardCommand();
|
|
449
456
|
await inquirer.prompt({ type: "input", name: "_", message: isZh ? "\u6309\u56DE\u8F66\u8FD4\u56DE\u83DC\u5355..." : "Press Enter to return..." });
|
|
450
457
|
return void 0;
|
|
451
458
|
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import ansis from 'ansis';
|
|
2
|
+
|
|
3
|
+
function formatTokenCount(tokens) {
|
|
4
|
+
if (tokens >= 1e6) {
|
|
5
|
+
return `${(tokens / 1e6).toFixed(1)}M`;
|
|
6
|
+
}
|
|
7
|
+
if (tokens >= 1e3) {
|
|
8
|
+
return `${(tokens / 1e3).toFixed(1)}K`;
|
|
9
|
+
}
|
|
10
|
+
return tokens.toString();
|
|
11
|
+
}
|
|
12
|
+
function formatCost(cost) {
|
|
13
|
+
if (cost >= 1) {
|
|
14
|
+
return `$${cost.toFixed(2)}`;
|
|
15
|
+
}
|
|
16
|
+
if (cost >= 0.01) {
|
|
17
|
+
return `$${cost.toFixed(3)}`;
|
|
18
|
+
}
|
|
19
|
+
return `$${cost.toFixed(4)}`;
|
|
20
|
+
}
|
|
21
|
+
function formatRatio(ratio) {
|
|
22
|
+
return `${Math.round(ratio * 100)}%`;
|
|
23
|
+
}
|
|
24
|
+
function formatTime(ms) {
|
|
25
|
+
if (ms >= 1e3) {
|
|
26
|
+
return `${(ms / 1e3).toFixed(2)}s`;
|
|
27
|
+
}
|
|
28
|
+
return `${Math.round(ms)}ms`;
|
|
29
|
+
}
|
|
30
|
+
function displayCompressionResult(originalTokens, compressedTokens, compressionRatio, timeTakenMs) {
|
|
31
|
+
const reductionPercent = Math.round(compressionRatio * 100);
|
|
32
|
+
const originalFormatted = formatTokenCount(originalTokens);
|
|
33
|
+
const compressedFormatted = formatTokenCount(compressedTokens);
|
|
34
|
+
console.log(
|
|
35
|
+
ansis.green("\u2705") + " Compressed " + ansis.cyan(originalFormatted) + " tokens \u2192 " + ansis.cyan(compressedFormatted) + " " + ansis.yellow(`(${reductionPercent}% reduction)`) + " " + ansis.gray(`[${formatTime(timeTakenMs)}]`)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
function displayCompressionStats(stats) {
|
|
39
|
+
console.log();
|
|
40
|
+
console.log(ansis.cyan.bold("\u{1F4CA} Compression Statistics"));
|
|
41
|
+
console.log(ansis.gray("\u2500".repeat(60)));
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(ansis.white.bold("Overall:"));
|
|
44
|
+
console.log(` ${ansis.gray("Total Compressions:")} ${ansis.white(stats.totalCompressions.toLocaleString())}`);
|
|
45
|
+
console.log(` ${ansis.gray("Tokens Saved:")} ${ansis.green(formatTokenCount(stats.totalTokensSaved))}`);
|
|
46
|
+
console.log(` ${ansis.gray("Avg Compression:")} ${ansis.yellow(formatRatio(stats.averageCompressionRatio))}`);
|
|
47
|
+
console.log(` ${ansis.gray("Avg Time:")} ${ansis.cyan(formatTime(stats.averageTimeTakenMs))}`);
|
|
48
|
+
console.log(` ${ansis.gray("Cost Savings:")} ${ansis.green.bold(formatCost(stats.estimatedCostSavings))}`);
|
|
49
|
+
if (stats.sessionStats && stats.sessionStats.compressions > 0) {
|
|
50
|
+
console.log();
|
|
51
|
+
console.log(ansis.white.bold("Session (24h):"));
|
|
52
|
+
console.log(` ${ansis.gray("Compressions:")} ${ansis.white(stats.sessionStats.compressions.toLocaleString())}`);
|
|
53
|
+
console.log(` ${ansis.gray("Tokens Saved:")} ${ansis.green(formatTokenCount(stats.sessionStats.tokensSaved))}`);
|
|
54
|
+
console.log(` ${ansis.gray("Cost Savings:")} ${ansis.green(formatCost(stats.sessionStats.costSavings))}`);
|
|
55
|
+
}
|
|
56
|
+
if (stats.weeklyStats && stats.weeklyStats.compressions > 0) {
|
|
57
|
+
console.log();
|
|
58
|
+
console.log(ansis.white.bold("Weekly (7d):"));
|
|
59
|
+
console.log(` ${ansis.gray("Compressions:")} ${ansis.white(stats.weeklyStats.compressions.toLocaleString())}`);
|
|
60
|
+
console.log(` ${ansis.gray("Tokens Saved:")} ${ansis.green(formatTokenCount(stats.weeklyStats.tokensSaved))}`);
|
|
61
|
+
console.log(` ${ansis.gray("Cost Savings:")} ${ansis.green(formatCost(stats.weeklyStats.costSavings))}`);
|
|
62
|
+
}
|
|
63
|
+
if (stats.monthlyStats && stats.monthlyStats.compressions > 0) {
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(ansis.white.bold("Monthly (30d):"));
|
|
66
|
+
console.log(` ${ansis.gray("Compressions:")} ${ansis.white(stats.monthlyStats.compressions.toLocaleString())}`);
|
|
67
|
+
console.log(` ${ansis.gray("Tokens Saved:")} ${ansis.green(formatTokenCount(stats.monthlyStats.tokensSaved))}`);
|
|
68
|
+
console.log(` ${ansis.gray("Cost Savings:")} ${ansis.green(formatCost(stats.monthlyStats.costSavings))}`);
|
|
69
|
+
}
|
|
70
|
+
console.log();
|
|
71
|
+
console.log(ansis.gray("\u2500".repeat(60)));
|
|
72
|
+
console.log(ansis.gray("\u{1F4A1} Cost based on $0.015 per 1K tokens (Claude Opus pricing)"));
|
|
73
|
+
console.log();
|
|
74
|
+
}
|
|
75
|
+
function displayCompactCompressionStats(stats) {
|
|
76
|
+
const lines = [];
|
|
77
|
+
lines.push(ansis.cyan.bold("Compression Metrics"));
|
|
78
|
+
lines.push(` ${ansis.gray("Total Saved:")} ${ansis.green(formatTokenCount(stats.totalTokensSaved))} tokens`);
|
|
79
|
+
lines.push(` ${ansis.gray("Avg Reduction:")} ${ansis.yellow(formatRatio(stats.averageCompressionRatio))}`);
|
|
80
|
+
lines.push(` ${ansis.gray("Cost Savings:")} ${ansis.green.bold(formatCost(stats.estimatedCostSavings))}`);
|
|
81
|
+
if (stats.sessionStats && stats.sessionStats.compressions > 0) {
|
|
82
|
+
lines.push(` ${ansis.gray("Session (24h):")} ${ansis.white(stats.sessionStats.compressions)} compressions, ${ansis.green(formatCost(stats.sessionStats.costSavings))} saved`);
|
|
83
|
+
}
|
|
84
|
+
return lines;
|
|
85
|
+
}
|
|
86
|
+
function createCompressionBar(ratio, width = 20) {
|
|
87
|
+
const filled = Math.round(ratio * width);
|
|
88
|
+
const empty = width - filled;
|
|
89
|
+
let bar = "";
|
|
90
|
+
if (ratio >= 0.7) {
|
|
91
|
+
bar = ansis.green("\u2588".repeat(filled));
|
|
92
|
+
} else if (ratio >= 0.4) {
|
|
93
|
+
bar = ansis.yellow("\u2588".repeat(filled));
|
|
94
|
+
} else {
|
|
95
|
+
bar = ansis.red("\u2588".repeat(filled));
|
|
96
|
+
}
|
|
97
|
+
bar += ansis.gray("\u2591".repeat(empty));
|
|
98
|
+
return bar;
|
|
99
|
+
}
|
|
100
|
+
function displayCompressionTable(metrics, limit = 10) {
|
|
101
|
+
if (metrics.length === 0) {
|
|
102
|
+
console.log(ansis.gray("No compression metrics available"));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
console.log();
|
|
106
|
+
console.log(ansis.cyan.bold("Recent Compressions"));
|
|
107
|
+
console.log(ansis.gray("\u2500".repeat(80)));
|
|
108
|
+
console.log(
|
|
109
|
+
ansis.white.bold("Original".padEnd(12)) + ansis.white.bold("Compressed".padEnd(12)) + ansis.white.bold("Ratio".padEnd(10)) + ansis.white.bold("Time".padEnd(10)) + ansis.white.bold("Strategy".padEnd(15)) + ansis.white.bold("Algorithm")
|
|
110
|
+
);
|
|
111
|
+
console.log(ansis.gray("\u2500".repeat(80)));
|
|
112
|
+
const displayMetrics = metrics.slice(0, limit);
|
|
113
|
+
for (const metric of displayMetrics) {
|
|
114
|
+
const original = formatTokenCount(metric.originalTokens).padEnd(12);
|
|
115
|
+
const compressed = formatTokenCount(metric.compressedTokens).padEnd(12);
|
|
116
|
+
const ratio = formatRatio(metric.compressionRatio).padEnd(10);
|
|
117
|
+
const time = formatTime(metric.timeTakenMs).padEnd(10);
|
|
118
|
+
const strategy = metric.strategy.padEnd(15);
|
|
119
|
+
const algorithm = metric.algorithm;
|
|
120
|
+
console.log(
|
|
121
|
+
ansis.cyan(original) + ansis.green(compressed) + ansis.yellow(ratio) + ansis.gray(time) + ansis.white(strategy) + ansis.gray(algorithm)
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
console.log(ansis.gray("\u2500".repeat(80)));
|
|
125
|
+
console.log();
|
|
126
|
+
}
|
|
127
|
+
function formatBytes(bytes) {
|
|
128
|
+
if (bytes >= 1073741824) {
|
|
129
|
+
return `${(bytes / 1073741824).toFixed(2)} GB`;
|
|
130
|
+
}
|
|
131
|
+
if (bytes >= 1048576) {
|
|
132
|
+
return `${(bytes / 1048576).toFixed(2)} MB`;
|
|
133
|
+
}
|
|
134
|
+
if (bytes >= 1024) {
|
|
135
|
+
return `${(bytes / 1024).toFixed(2)} KB`;
|
|
136
|
+
}
|
|
137
|
+
return `${bytes} bytes`;
|
|
138
|
+
}
|
|
139
|
+
const MetricsDisplay = {
|
|
140
|
+
displayCompressionResult,
|
|
141
|
+
displayCompressionStats,
|
|
142
|
+
displayCompactCompressionStats,
|
|
143
|
+
displayCompressionTable,
|
|
144
|
+
createCompressionBar,
|
|
145
|
+
formatTokenCount,
|
|
146
|
+
formatCost,
|
|
147
|
+
formatRatio,
|
|
148
|
+
formatTime,
|
|
149
|
+
formatBytes
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export { MetricsDisplay, createCompressionBar, displayCompactCompressionStats, displayCompressionResult, displayCompressionStats, displayCompressionTable };
|
package/dist/chunks/migrator.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { exists } from './fs-operations.mjs';
|
|
|
3
3
|
import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
|
|
4
4
|
import 'node:os';
|
|
5
5
|
import 'pathe';
|
|
6
|
-
import './
|
|
6
|
+
import './index2.mjs';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'node:process';
|
|
9
9
|
import 'node:url';
|
package/dist/chunks/monitor.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ansis from 'ansis';
|
|
2
|
-
import { i18n } from './
|
|
3
|
-
import {
|
|
2
|
+
import { i18n } from './index2.mjs';
|
|
3
|
+
import { displayBannerWithInfo } from './banner.mjs';
|
|
4
4
|
import process__default from 'node:process';
|
|
5
5
|
import { nanoid } from 'nanoid';
|
|
6
6
|
import 'node:fs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ansis from 'ansis';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
|
-
import { i18n } from './
|
|
3
|
+
import { i18n } from './index2.mjs';
|
|
4
4
|
import * as nodeFs from 'node:fs';
|
|
5
5
|
import nodeFs__default, { existsSync, readFileSync, mkdirSync, unlinkSync } from 'node:fs';
|
|
6
6
|
import * as os from 'node:os';
|
|
@@ -7,10 +7,10 @@ import ora from 'ora';
|
|
|
7
7
|
import { join, basename } from 'pathe';
|
|
8
8
|
import { CCJK_CONFIG_DIR } from './constants.mjs';
|
|
9
9
|
import { d as detectProject, g as getProjectSummary, a as generateSuggestions } from '../shared/ccjk.CBhIZiPz.mjs';
|
|
10
|
-
import {
|
|
10
|
+
import { boxify, COLORS as theme, STATUS } from './banner.mjs';
|
|
11
11
|
import { writeFileAtomic } from './fs-operations.mjs';
|
|
12
12
|
import 'node:os';
|
|
13
|
-
import './
|
|
13
|
+
import './index2.mjs';
|
|
14
14
|
import 'node:url';
|
|
15
15
|
import 'i18next';
|
|
16
16
|
import 'i18next-fs-backend';
|
package/dist/chunks/package.mjs
CHANGED
|
@@ -2,9 +2,9 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
2
2
|
import ansis from 'ansis';
|
|
3
3
|
import { join } from 'pathe';
|
|
4
4
|
import { SETTINGS_FILE, CCJK_CONFIG_DIR } from './constants.mjs';
|
|
5
|
-
import {
|
|
5
|
+
import { STATUS } from './banner.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
|
-
import './
|
|
7
|
+
import './index2.mjs';
|
|
8
8
|
import 'node:process';
|
|
9
9
|
import 'node:url';
|
|
10
10
|
import 'i18next';
|
|
@@ -2,7 +2,7 @@ import process__default from 'node:process';
|
|
|
2
2
|
import ansis from 'ansis';
|
|
3
3
|
import inquirer from 'inquirer';
|
|
4
4
|
import 'tinyexec';
|
|
5
|
-
import { i18n } from './
|
|
5
|
+
import { i18n } from './index2.mjs';
|
|
6
6
|
import { g as getPermissionManager } from '../shared/ccjk.h7_W-wTs.mjs';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'node:url';
|