ccjk 9.12.1 → 9.12.3

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.
@@ -266,6 +266,7 @@ function updateDefaultModel(model) {
266
266
  function mergeSettingsFile(templatePath, targetPath) {
267
267
  try {
268
268
  const templateSettings = readJsonConfig(templatePath);
269
+ sections.push("## Context Management\n\nWhen the conversation gets long (many tool calls, large file reads, or repeated back-and-forth), proactively suggest running /compact to the user before hitting context limits.");
269
270
  if (!templateSettings) {
270
271
  console.error("Failed to read template settings");
271
272
  return;
@@ -1,5 +1,9 @@
1
+ import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import process__default from 'node:process';
1
4
  import ansis from 'ansis';
2
5
  import inquirer from 'inquirer';
6
+ import { join } from 'pathe';
3
7
  import { s as selectMcpServices, c as getMcpServices } from './codex.mjs';
4
8
  import { SUPPORTED_LANGS, LANG_LABELS } from './constants.mjs';
5
9
  import { ensureI18nInitialized, i18n, changeLanguage } from './index.mjs';
@@ -13,23 +17,19 @@ import { i as isWindows } from './platform.mjs';
13
17
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
14
18
  import { openSettingsJson, importRecommendedPermissions, importRecommendedEnv } from './simple-config.mjs';
15
19
  import { p as promptBoolean } from '../shared/ccjk.DHbrGcgg.mjs';
16
- import 'node:process';
17
20
  import 'node:url';
18
21
  import 'dayjs';
19
22
  import 'ora';
20
- import 'pathe';
21
23
  import 'semver';
22
24
  import 'smol-toml';
23
25
  import 'tinyexec';
24
26
  import './fs-operations.mjs';
25
27
  import 'node:crypto';
26
- import 'node:fs';
27
28
  import 'node:fs/promises';
28
29
  import './json-config.mjs';
29
30
  import './prompts.mjs';
30
31
  import './package.mjs';
31
32
  import 'node:child_process';
32
- import 'node:os';
33
33
  import 'i18next';
34
34
  import 'i18next-fs-backend';
35
35
  import 'node:util';
@@ -376,12 +376,7 @@ async function configureAiMemoryFeature() {
376
376
  if (!option) {
377
377
  return;
378
378
  }
379
- const { readFileSync, existsSync, writeFileSync } = await import('node:fs');
380
- const { homedir } = await import('node:os');
381
- const { join } = await import('pathe');
382
- const { execSync } = await import('node:child_process');
383
- const nodeProcess = await import('node:process');
384
- const cwd = nodeProcess.default.cwd();
379
+ const cwd = process__default.cwd();
385
380
  const globalClaudeMdPath = join(homedir(), ".claude", "CLAUDE.md");
386
381
  const projectClaudeMdPath = join(cwd, "CLAUDE.md");
387
382
  const localClaudeMdPath = join(cwd, ".claude", "CLAUDE.md");
@@ -432,8 +427,8 @@ async function configureAiMemoryFeature() {
432
427
  console.log(ansis.green.bold(`
433
428
  \u{1F52C} ${isZh ? "Postmortem \u62A5\u544A" : "Postmortem Reports"}:`));
434
429
  console.log(ansis.dim("\u2500".repeat(60)));
435
- const { readdirSync } = await import('node:fs');
436
- const files = readdirSync(postmortemDir).filter((f) => f.endsWith(".md"));
430
+ const { readdirSync: readdirSync2 } = await import('node:fs');
431
+ const files = readdirSync2(postmortemDir).filter((f) => f.endsWith(".md"));
437
432
  if (files.length === 0) {
438
433
  console.log(ansis.yellow(isZh ? "\u6682\u65E0 Postmortem \u62A5\u544A" : "No postmortem reports yet"));
439
434
  } else {
@@ -467,10 +462,9 @@ ${isZh ? "\u76EE\u5F55" : "Directory"}: ${postmortemDir}`));
467
462
  break;
468
463
  }
469
464
  case "editGlobalClaudeMd": {
470
- const editor = nodeProcess.default.env.EDITOR || nodeProcess.default.env.VISUAL || "vi";
465
+ const editor = process__default.env.EDITOR || process__default.env.VISUAL || "vi";
471
466
  if (!existsSync(globalClaudeMdPath)) {
472
467
  const claudeDir = join(homedir(), ".claude");
473
- const { mkdirSync } = await import('node:fs');
474
468
  if (!existsSync(claudeDir)) {
475
469
  mkdirSync(claudeDir, { recursive: true });
476
470
  }
@@ -485,6 +479,7 @@ ${isZh ? "\u76EE\u5F55" : "Directory"}: ${postmortemDir}`));
485
479
  console.log(ansis.gray(`${isZh ? "\u7F16\u8F91\u5668" : "Editor"}: ${editor}`));
486
480
  console.log(ansis.gray(`${isZh ? "\u6587\u4EF6" : "File"}: ${globalClaudeMdPath}`));
487
481
  try {
482
+ const { execSync } = await import('node:child_process');
488
483
  execSync(`${editor} "${globalClaudeMdPath}"`, { stdio: "inherit" });
489
484
  console.log(ansis.green(`
490
485
  \u2705 ${isZh ? "\u7F16\u8F91\u5B8C\u6210" : "Edit complete"}`));
@@ -106,6 +106,8 @@ async function initI18n(language = "zh-CN") {
106
106
  defaultNS: "common",
107
107
  preload: [language],
108
108
  // Preload the selected language
109
+ // Suppress i18next locize promotional banner in CLI output
110
+ partialBundledLanguages: true,
109
111
  // Backend configuration for loading JSON files
110
112
  backend: {
111
113
  loadPath: (() => {
@@ -1,4 +1,4 @@
1
- const version = "9.12.1";
1
+ const version = "9.12.3";
2
2
  const homepage = "https://github.com/miounet11/ccjk";
3
3
 
4
4
  export { homepage, version };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ccjk",
3
3
  "type": "module",
4
- "version": "9.12.1",
4
+ "version": "9.12.3",
5
5
  "packageManager": "pnpm@10.17.1",
6
6
  "description": "CCJK v9.0.0 - Revolutionary AI Development Platform with Enterprise Security, Streaming Cloud Sync, CRDT Conflict Resolution, and Unified V3 Architecture",
7
7
  "author": {