zcf 2.9.7 β†’ 2.9.9

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/README.md CHANGED
@@ -27,7 +27,7 @@ Menu options include:
27
27
  - `3-7` Configuration management (API/CCR, MCP, Model settings, AI personality, etc.)
28
28
  - `R` Claude Code Router management (enhanced in v2.8.1)
29
29
  - `U` ccusage - Claude Code usage analysis
30
- - `+` Check updates - Check and update Claude Code and CCR versions
30
+ - `+` Check updates - Check and update Claude Code, CCR and CCometixLine versions (v2.10.0+ enhanced)
31
31
  - More features...
32
32
 
33
33
  ### Or, use direct commands:
@@ -75,6 +75,16 @@ After installation, use `/bmad-init` to initialize the BMad workflow in your pro
75
75
  - **Easy Management**: Interactive menu for CCR configuration and service control
76
76
  - **Auto Updates**: Automatic version checking and updates for CCR and Claude Code (v2.8.1+)
77
77
 
78
+ #### πŸ“Š CCometixLine Support (Status Bar Tool) (v2.10.0+ New)
79
+
80
+ [CCometixLine](https://github.com/Haleclipse/CCometixLine) is a high-performance Rust-based statusline tool that provides:
81
+
82
+ - **Real-time Usage Tracking**: Monitor Claude Code API usage in real-time
83
+ - **Git Integration**: Display Git status and branch information
84
+ - **Status Line Display**: Native integration with your terminal statusline
85
+ - **Performance Optimized**: Built with Rust for minimal resource usage
86
+ - **Auto Updates**: Included in ZCF's update checking system
87
+
78
88
  To access CCR features:
79
89
 
80
90
  ```bash
@@ -83,10 +93,10 @@ npx zcf ccr # Open CCR management menu
83
93
  npx zcf β†’ select R
84
94
  ```
85
95
 
86
- Check for updates (v2.8.1+):
96
+ Check for updates (v2.8.1+, CCometixLine support v2.10.0+):
87
97
 
88
98
  ```bash
89
- npx zcf check-updates # Check and update Claude Code and CCR to latest versions
99
+ npx zcf check-updates # Check and update Claude Code, CCR and CCometixLine to latest versions
90
100
  # or
91
101
  npx zcf β†’ select +
92
102
  ```
@@ -197,6 +207,7 @@ Select function:
197
207
  --------- Other Tools ----------
198
208
  R. CCR Management - Claude Code Router management
199
209
  U. CCUsage - Claude Code usage analysis tool
210
+ L. CCometixLine - High-performance statusline tool with Git integration and real-time usage tracking (v2.10.0+ new)
200
211
 
201
212
  ------------ ZCF ------------
202
213
  0. Select display language / ζ›΄ζ”Ήζ˜Ύη€Ίθ―­θ¨€ - Change ZCF interface language
@@ -255,7 +266,7 @@ Enter your choice: _
255
266
  ? Select workflows to install (space to select, enter to confirm)
256
267
  ❯ β—‰ Six Steps Workflow (workflow) - Complete 6-phase development process
257
268
  β—‰ Feature Planning and UX Design (feat + planner + ui-ux-designer) - Structured feature development
258
- β—‰ Git Commands (commit + rollback + cleanBranches) - Streamlined Git operations
269
+ β—‰ Git Commands (commit + rollback + cleanBranches + worktree) - Streamlined Git operations
259
270
  β—‰ BMAD-Method Extension Installer - Enterprise agile development workflow
260
271
 
261
272
  βœ” Installing workflows...
@@ -266,6 +277,7 @@ Enter your choice: _
266
277
  βœ” Installed command: zcf/git/git-commit.md
267
278
  βœ” Installed command: zcf/git/git-rollback.md
268
279
  βœ” Installed command: zcf/git/git-cleanBranches.md
280
+ βœ” Installed command: zcf/git/git-worktree.md
269
281
  βœ” Installed command: zcf/bmad-init.md
270
282
  βœ” Workflow installation successful
271
283
 
@@ -401,6 +413,7 @@ zcf/
401
413
  - `/git-commit`: Smart commit with automatic staging and message generation
402
414
  - `/git-rollback`: Safely rollback to previous commits with backup
403
415
  - `/git-cleanBranches`: Clean up merged branches and maintain repository hygiene
416
+ - `/git-worktree`: Manage Git worktrees with IDE integration and content migration
404
417
  - **BMad Workflow** (`/bmad-init`): Initialize BMad workflow for enterprise development
405
418
  - Supports both greenfield (new projects) and brownfield (existing projects)
406
419
  - Provides comprehensive templates for PRDs, architecture docs, and user stories
@@ -497,6 +510,7 @@ This project is inspired by and incorporates the following open source projects:
497
510
 
498
511
  - [LINUX DO - The New Ideal Community](https://linux.do)
499
512
  - [CCR](https://github.com/musistudio/claude-code-router)
513
+ - [CCometixLine](https://github.com/Haleclipse/CCometixLine)
500
514
  - [ccusage](https://github.com/ryoppippi/ccusage)
501
515
  - [BMad Method](https://github.com/bmad-code-org/BMAD-METHOD)
502
516
 
@@ -15,7 +15,7 @@ import { promisify as promisify$1 } from 'node:util';
15
15
  import { homedir, platform } from 'node:os';
16
16
  import { join as join$1 } from 'node:path';
17
17
 
18
- const version = "2.9.7";
18
+ const version = "2.9.9";
19
19
  const homepage = "https://github.com/UfoMiao/zcf";
20
20
 
21
21
  const common$1 = {
@@ -213,6 +213,7 @@ const menu$1 = {
213
213
  configureCcr: "\u914D\u7F6E\u6A21\u578B\u4EE3\u7406 (CCR)",
214
214
  ccrManagement: "CCR",
215
215
  ccusage: "ccusage",
216
+ cometixLine: "CCometixLine",
216
217
  installBmad: "\u5B89\u88C5 BMad Method",
217
218
  clearCache: "\u6E05\u9664\u504F\u597D\u7F13\u5B58",
218
219
  checkUpdates: "\u68C0\u67E5\u66F4\u65B0",
@@ -231,9 +232,10 @@ const menu$1 = {
231
232
  configureCcr: "\u914D\u7F6E Claude Code Router \u4EE5\u4F7F\u7528\u591A\u4E2A AI \u6A21\u578B",
232
233
  ccrManagement: "\u914D\u7F6E Claude Code Router \u4EE5\u4F7F\u7528\u591A\u4E2A AI \u6A21\u578B",
233
234
  ccusage: "Claude Code \u7528\u91CF\u5206\u6790",
235
+ cometixLine: "\u57FA\u4E8E Rust \u7684\u9AD8\u6027\u80FD Claude Code \u72B6\u6001\u680F\u5DE5\u5177\uFF0C\u96C6\u6210 Git \u4FE1\u606F\u548C\u5B9E\u65F6\u4F7F\u7528\u91CF\u8DDF\u8E2A",
234
236
  installBmad: "AI \u9A71\u52A8\u7684\u5F00\u53D1\u65B9\u6CD5\u8BBA\u6846\u67B6",
235
237
  clearCache: "\u6E05\u9664\u504F\u597D\u8BED\u8A00\u7B49\u7F13\u5B58",
236
- checkUpdates: "\u68C0\u67E5\u5E76\u66F4\u65B0 Claude Code \u548C CCR \u7684\u7248\u672C",
238
+ checkUpdates: "\u68C0\u67E5\u5E76\u66F4\u65B0 Claude Code\u3001CCR \u548C CCometixLine \u7684\u7248\u672C",
237
239
  changeLanguage: "\u66F4\u6539 ZCF \u754C\u9762\u8BED\u8A00"
238
240
  }
239
241
  };
@@ -244,7 +246,7 @@ const workflow$1 = {
244
246
  featPlanUx: "\u529F\u80FD\u89C4\u5212\u548C UX \u8BBE\u8BA1 (feat + planner + ui-ux-designer)",
245
247
  sixStepsWorkflow: "\u516D\u6B65\u5DE5\u4F5C\u6D41 (workflow)",
246
248
  bmadWorkflow: "BMAD-Method \u6269\u5C55\u5B89\u88C5\u5668 (\u652F\u6301\u654F\u6377\u5F00\u53D1\u5DE5\u4F5C\u6D41)",
247
- gitWorkflow: "Git \u6307\u4EE4 (commit + rollback + cleanBranches)"
249
+ gitWorkflow: "Git \u6307\u4EE4 (commit + rollback + cleanBranches + worktree)"
248
250
  },
249
251
  // BMAD workflow
250
252
  bmadInitPrompt: "\u2728 \u8BF7\u5728\u9879\u76EE\u4E2D\u8FD0\u884C /bmad-init \u547D\u4EE4\u6765\u521D\u59CB\u5316\u6216\u66F4\u65B0 BMAD-Method \u6269\u5C55",
@@ -450,6 +452,36 @@ const ccrMessages$1 = {
450
452
  ccrUiApiKeyHint: "\u4F7F\u7528\u6B64\u5BC6\u94A5\u767B\u5F55 CCR UI \u754C\u9762"
451
453
  };
452
454
 
455
+ const cometixMessages$1 = {
456
+ // Installation
457
+ installingCometix: "\u6B63\u5728\u5B89\u88C5 CCometixLine...",
458
+ cometixInstallSuccess: "CCometixLine \u5B89\u88C5\u6210\u529F",
459
+ cometixInstallFailed: "\u5B89\u88C5 CCometixLine \u5931\u8D25",
460
+ cometixAlreadyInstalled: "CCometixLine \u5DF2\u5B89\u88C5",
461
+ // Installation prompt in init
462
+ installCometixPrompt: "\u662F\u5426\u5B89\u88C5 CCometixLine - \u57FA\u4E8E Rust \u7684\u9AD8\u6027\u80FD Claude Code \u72B6\u6001\u680F\u5DE5\u5177\uFF0C\u96C6\u6210 Git \u4FE1\u606F\u548C\u5B9E\u65F6\u4F7F\u7528\u91CF\u8DDF\u8E2A\uFF1F",
463
+ cometixSkipped: "CCometixLine \u5B89\u88C5\u5DF2\u8DF3\u8FC7",
464
+ // Commands
465
+ installingOrUpdating: "\u6B63\u5728\u5B89\u88C5/\u66F4\u65B0 CCometixLine...",
466
+ installUpdateSuccess: "CCometixLine \u5B89\u88C5/\u66F4\u65B0\u5B8C\u6210",
467
+ installUpdateFailed: "\u5B89\u88C5/\u66F4\u65B0 CCometixLine \u5931\u8D25",
468
+ printingConfig: "\u6B63\u5728\u6253\u5370 CCometixLine \u914D\u7F6E...",
469
+ printConfigSuccess: "\u914D\u7F6E\u6253\u5370\u6210\u529F",
470
+ printConfigFailed: "\u6253\u5370\u914D\u7F6E\u5931\u8D25",
471
+ commandNotFound: "ccline \u547D\u4EE4\u672A\u627E\u5230\u3002\u8BF7\u5148\u5B89\u88C5 CCometixLine\u3002",
472
+ // CCometixLine Menu
473
+ cometixMenuTitle: "CCometixLine - \u57FA\u4E8E Rust \u7684\u9AD8\u6027\u80FD Claude Code \u72B6\u6001\u680F\u5DE5\u5177\uFF0C\u96C6\u6210 Git \u4FE1\u606F\u548C\u5B9E\u65F6\u4F7F\u7528\u91CF\u8DDF\u8E2A",
474
+ cometixMenuOptions: {
475
+ installOrUpdate: "\u5B89\u88C5\u6216\u66F4\u65B0",
476
+ printConfig: "\u6253\u5370\u9ED8\u8BA4\u914D\u7F6E",
477
+ back: "\u8FD4\u56DE\u4E3B\u83DC\u5355"
478
+ },
479
+ cometixMenuDescriptions: {
480
+ installOrUpdate: "\u4F7F\u7528 npm \u5B89\u88C5\u6216\u66F4\u65B0 CCometixLine",
481
+ printConfig: "\u663E\u793A\u5F53\u524D CCometixLine \u914D\u7F6E"
482
+ }
483
+ };
484
+
453
485
  const updater$1 = {
454
486
  checkingVersion: "\u6B63\u5728\u68C0\u67E5\u7248\u672C...",
455
487
  checkingTools: "\u68C0\u67E5\u5DE5\u5177\u7248\u672C",
@@ -457,6 +489,8 @@ const updater$1 = {
457
489
  ccrUpToDate: "CCR \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})",
458
490
  claudeCodeNotInstalled: "Claude Code \u672A\u5B89\u88C5",
459
491
  claudeCodeUpToDate: "Claude Code \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})",
492
+ cometixLineNotInstalled: "CCometixLine \u672A\u5B89\u88C5",
493
+ cometixLineUpToDate: "CCometixLine \u5DF2\u662F\u6700\u65B0\u7248\u672C (v{version})",
460
494
  cannotCheckVersion: "\u65E0\u6CD5\u68C0\u67E5\u6700\u65B0\u7248\u672C",
461
495
  currentVersion: "\u5F53\u524D\u7248\u672C: v{version}",
462
496
  latestVersion: "\u6700\u65B0\u7248\u672C: v{version}",
@@ -482,6 +516,7 @@ const zhCN = {
482
516
  errors: errors$1,
483
517
  tools: tools$1,
484
518
  ccr: ccrMessages$1,
519
+ cometix: cometixMessages$1,
485
520
  updater: updater$1
486
521
  };
487
522
 
@@ -680,6 +715,7 @@ const menu = {
680
715
  configureCcr: "Configure Model Proxy (CCR)",
681
716
  ccrManagement: "CCR",
682
717
  ccusage: "ccusage",
718
+ cometixLine: "CCometixLine",
683
719
  installBmad: "Install BMad Method",
684
720
  clearCache: "Clear preference cache",
685
721
  checkUpdates: "Check updates",
@@ -698,9 +734,10 @@ const menu = {
698
734
  configureCcr: "Configure Claude Code Router to use multiple AI models",
699
735
  ccrManagement: "Configure Claude Code Router to use multiple AI models",
700
736
  ccusage: "Claude Code usage analysis",
737
+ cometixLine: "High-performance Claude Code statusline tool with Git integration and real-time usage tracking",
701
738
  installBmad: "AI-driven development methodology framework",
702
739
  clearCache: "Clear preference language and other caches",
703
- checkUpdates: "Check and update Claude Code and CCR versions",
740
+ checkUpdates: "Check and update Claude Code, CCR and CCometixLine versions",
704
741
  changeLanguage: "Change ZCF interface language"
705
742
  }
706
743
  };
@@ -711,7 +748,7 @@ const workflow = {
711
748
  featPlanUx: "Feature Planning and UX Design (feat + planner + ui-ux-designer)",
712
749
  sixStepsWorkflow: "Six Steps Workflow (workflow)",
713
750
  bmadWorkflow: "BMAD-Method Extension Installer (Agile Development Workflow)",
714
- gitWorkflow: "Git Commands (commit + rollback + cleanBranches)"
751
+ gitWorkflow: "Git Commands (commit + rollback + cleanBranches + worktree)"
715
752
  },
716
753
  // BMAD workflow
717
754
  bmadInitPrompt: "\u2728 Please run /bmad-init command in your project to initialize or update BMAD-Method extension",
@@ -917,6 +954,36 @@ const ccrMessages = {
917
954
  ccrUiApiKeyHint: "Use this API key to login to CCR UI"
918
955
  };
919
956
 
957
+ const cometixMessages = {
958
+ // Installation
959
+ installingCometix: "Installing CCometixLine...",
960
+ cometixInstallSuccess: "CCometixLine installed successfully",
961
+ cometixInstallFailed: "Failed to install CCometixLine",
962
+ cometixAlreadyInstalled: "CCometixLine is already installed",
963
+ // Installation prompt in init
964
+ installCometixPrompt: "Install CCometixLine - High-performance Claude Code statusline tool with Git integration and real-time usage tracking?",
965
+ cometixSkipped: "CCometixLine installation skipped",
966
+ // Commands
967
+ installingOrUpdating: "Installing/updating CCometixLine...",
968
+ installUpdateSuccess: "CCometixLine install/update completed",
969
+ installUpdateFailed: "Failed to install/update CCometixLine",
970
+ printingConfig: "Printing CCometixLine configuration...",
971
+ printConfigSuccess: "Configuration printed successfully",
972
+ printConfigFailed: "Failed to print configuration",
973
+ commandNotFound: "ccline command not found. Please install CCometixLine first.",
974
+ // CCometixLine Menu
975
+ cometixMenuTitle: "CCometixLine - High-performance Claude Code statusline tool with Git integration and real-time usage tracking",
976
+ cometixMenuOptions: {
977
+ installOrUpdate: "Install or Update",
978
+ printConfig: "Print Default Configuration",
979
+ back: "Back to Main Menu"
980
+ },
981
+ cometixMenuDescriptions: {
982
+ installOrUpdate: "Install or update CCometixLine using npm",
983
+ printConfig: "Display current CCometixLine configuration"
984
+ }
985
+ };
986
+
920
987
  const updater = {
921
988
  checkingVersion: "Checking version...",
922
989
  checkingTools: "Checking tool versions",
@@ -924,6 +991,8 @@ const updater = {
924
991
  ccrUpToDate: "CCR is up to date (v{version})",
925
992
  claudeCodeNotInstalled: "Claude Code is not installed",
926
993
  claudeCodeUpToDate: "Claude Code is up to date (v{version})",
994
+ cometixLineNotInstalled: "CCometixLine is not installed",
995
+ cometixLineUpToDate: "CCometixLine is up to date (v{version})",
927
996
  cannotCheckVersion: "Cannot check latest version",
928
997
  currentVersion: "Current version: v{version}",
929
998
  latestVersion: "Latest version: v{version}",
@@ -949,6 +1018,7 @@ const en = {
949
1018
  errors,
950
1019
  tools,
951
1020
  ccr: ccrMessages,
1021
+ cometix: cometixMessages,
952
1022
  updater
953
1023
  };
954
1024
 
@@ -2047,15 +2117,15 @@ function format(template, replacements) {
2047
2117
  });
2048
2118
  }
2049
2119
 
2050
- const execAsync$3 = promisify(exec$1);
2120
+ const execAsync$4 = promisify(exec$1);
2051
2121
  async function getInstalledVersion(command) {
2052
2122
  try {
2053
2123
  let stdout;
2054
2124
  try {
2055
- const result = await execAsync$3(`${command} -v`);
2125
+ const result = await execAsync$4(`${command} -v`);
2056
2126
  stdout = result.stdout;
2057
2127
  } catch {
2058
- const result = await execAsync$3(`${command} --version`);
2128
+ const result = await execAsync$4(`${command} --version`);
2059
2129
  stdout = result.stdout;
2060
2130
  }
2061
2131
  const versionMatch = stdout.match(/(\d+\.\d+\.\d+(?:-[\w.]+)?)/);
@@ -2066,7 +2136,7 @@ async function getInstalledVersion(command) {
2066
2136
  }
2067
2137
  async function getLatestVersion(packageName) {
2068
2138
  try {
2069
- const { stdout } = await execAsync$3(`npm view ${packageName} version`);
2139
+ const { stdout } = await execAsync$4(`npm view ${packageName} version`);
2070
2140
  return stdout.trim();
2071
2141
  } catch {
2072
2142
  return null;
@@ -2101,8 +2171,18 @@ async function checkClaudeCodeVersion() {
2101
2171
  needsUpdate: currentVersion && latestVersion ? shouldUpdate(currentVersion, latestVersion) : false
2102
2172
  };
2103
2173
  }
2174
+ async function checkCometixLineVersion() {
2175
+ const currentVersion = await getInstalledVersion("ccometix");
2176
+ const latestVersion = await getLatestVersion("ccometix");
2177
+ return {
2178
+ installed: currentVersion !== null,
2179
+ currentVersion,
2180
+ latestVersion,
2181
+ needsUpdate: currentVersion && latestVersion ? shouldUpdate(currentVersion, latestVersion) : false
2182
+ };
2183
+ }
2104
2184
 
2105
- const execAsync$2 = promisify(exec$1);
2185
+ const execAsync$3 = promisify(exec$1);
2106
2186
  async function updateCcr(scriptLang, force = false) {
2107
2187
  const i18n = getTranslation(scriptLang);
2108
2188
  const spinner = ora(i18n.updater.checkingVersion).start();
@@ -2135,7 +2215,7 @@ async function updateCcr(scriptLang, force = false) {
2135
2215
  }
2136
2216
  const updateSpinner = ora(format(i18n.updater.updating, { tool: "CCR" })).start();
2137
2217
  try {
2138
- await execAsync$2("npm update -g @musistudio/claude-code-router");
2218
+ await execAsync$3("npm update -g @musistudio/claude-code-router");
2139
2219
  updateSpinner.succeed(format(i18n.updater.updateSuccess, { tool: "CCR" }));
2140
2220
  return true;
2141
2221
  } catch (error) {
@@ -2181,7 +2261,7 @@ async function updateClaudeCode(scriptLang, force = false) {
2181
2261
  }
2182
2262
  const updateSpinner = ora(format(i18n.updater.updating, { tool: "Claude Code" })).start();
2183
2263
  try {
2184
- await execAsync$2("npm update -g @anthropic-ai/claude-code");
2264
+ await execAsync$3("npm update -g @anthropic-ai/claude-code");
2185
2265
  updateSpinner.succeed(format(i18n.updater.updateSuccess, { tool: "Claude Code" }));
2186
2266
  return true;
2187
2267
  } catch (error) {
@@ -2195,6 +2275,52 @@ async function updateClaudeCode(scriptLang, force = false) {
2195
2275
  return false;
2196
2276
  }
2197
2277
  }
2278
+ async function updateCometixLine(scriptLang, force = false) {
2279
+ const i18n = getTranslation(scriptLang);
2280
+ const spinner = ora(i18n.updater.checkingVersion).start();
2281
+ try {
2282
+ const { installed, currentVersion, latestVersion, needsUpdate } = await checkCometixLineVersion();
2283
+ spinner.stop();
2284
+ if (!installed) {
2285
+ console.log(ansis.yellow(i18n.updater.cometixLineNotInstalled));
2286
+ return false;
2287
+ }
2288
+ if (!needsUpdate && !force) {
2289
+ console.log(ansis.green(format(i18n.updater.cometixLineUpToDate, { version: currentVersion || "" })));
2290
+ return true;
2291
+ }
2292
+ if (!latestVersion) {
2293
+ console.log(ansis.yellow(i18n.updater.cannotCheckVersion));
2294
+ return false;
2295
+ }
2296
+ console.log(ansis.cyan(format(i18n.updater.currentVersion, { version: currentVersion || "" })));
2297
+ console.log(ansis.cyan(format(i18n.updater.latestVersion, { version: latestVersion })));
2298
+ const { confirm } = await inquirer.prompt({
2299
+ type: "confirm",
2300
+ name: "confirm",
2301
+ message: format(i18n.updater.confirmUpdate, { tool: "CCometixLine" }),
2302
+ default: true
2303
+ });
2304
+ if (!confirm) {
2305
+ console.log(ansis.gray(i18n.updater.updateSkipped));
2306
+ return true;
2307
+ }
2308
+ const updateSpinner = ora(format(i18n.updater.updating, { tool: "CCometixLine" })).start();
2309
+ try {
2310
+ await execAsync$3("cargo install ccometix");
2311
+ updateSpinner.succeed(format(i18n.updater.updateSuccess, { tool: "CCometixLine" }));
2312
+ return true;
2313
+ } catch (error) {
2314
+ updateSpinner.fail(format(i18n.updater.updateFailed, { tool: "CCometixLine" }));
2315
+ console.error(ansis.red(error instanceof Error ? error.message : String(error)));
2316
+ return false;
2317
+ }
2318
+ } catch (error) {
2319
+ spinner.fail(i18n.updater.checkFailed);
2320
+ console.error(ansis.red(error instanceof Error ? error.message : String(error)));
2321
+ return false;
2322
+ }
2323
+ }
2198
2324
  async function checkAndUpdateTools(scriptLang) {
2199
2325
  const i18n = getTranslation(scriptLang);
2200
2326
  console.log(ansis.bold.cyan(`
@@ -2203,6 +2329,8 @@ async function checkAndUpdateTools(scriptLang) {
2203
2329
  await updateCcr(scriptLang);
2204
2330
  console.log();
2205
2331
  await updateClaudeCode(scriptLang);
2332
+ console.log();
2333
+ await updateCometixLine(scriptLang);
2206
2334
  }
2207
2335
 
2208
2336
  async function isClaudeCodeInstalled() {
@@ -2383,7 +2511,7 @@ const WORKFLOW_CONFIGS = [
2383
2511
  descriptionKey: "workflowDescription.gitWorkflow",
2384
2512
  defaultSelected: true,
2385
2513
  order: 3,
2386
- commands: ["git-commit.md", "git-rollback.md", "git-cleanBranches.md"],
2514
+ commands: ["git-commit.md", "git-rollback.md", "git-cleanBranches.md", "git-worktree.md"],
2387
2515
  agents: [],
2388
2516
  autoInstallAgents: false,
2389
2517
  category: "git",
@@ -2547,15 +2675,15 @@ async function cleanupOldVersionFiles(scriptLang) {
2547
2675
  }
2548
2676
  }
2549
2677
 
2550
- const execAsync$1 = promisify$1(exec$2);
2678
+ const execAsync$2 = promisify$1(exec$2);
2551
2679
  async function isCcrInstalled() {
2552
2680
  let commandExists = false;
2553
2681
  try {
2554
- await execAsync$1("ccr version");
2682
+ await execAsync$2("ccr version");
2555
2683
  commandExists = true;
2556
2684
  } catch {
2557
2685
  try {
2558
- await execAsync$1("which ccr");
2686
+ await execAsync$2("which ccr");
2559
2687
  commandExists = true;
2560
2688
  } catch {
2561
2689
  commandExists = false;
@@ -2563,7 +2691,7 @@ async function isCcrInstalled() {
2563
2691
  }
2564
2692
  let hasCorrectPackage = false;
2565
2693
  try {
2566
- await execAsync$1("npm list -g @musistudio/claude-code-router");
2694
+ await execAsync$2("npm list -g @musistudio/claude-code-router");
2567
2695
  hasCorrectPackage = true;
2568
2696
  } catch {
2569
2697
  hasCorrectPackage = false;
@@ -2583,10 +2711,10 @@ async function installCcr(scriptLang) {
2583
2711
  }
2584
2712
  if (isInstalled && !hasCorrectPackage) {
2585
2713
  try {
2586
- await execAsync$1("npm list -g claude-code-router");
2714
+ await execAsync$2("npm list -g claude-code-router");
2587
2715
  console.log(ansis.yellow(`\u26A0 ${i18n.ccr.detectedIncorrectPackage}`));
2588
2716
  try {
2589
- await execAsync$1("npm uninstall -g claude-code-router");
2717
+ await execAsync$2("npm uninstall -g claude-code-router");
2590
2718
  console.log(ansis.green(`\u2714 ${i18n.ccr.uninstalledIncorrectPackage}`));
2591
2719
  } catch (uninstallError) {
2592
2720
  console.log(ansis.yellow(`\u26A0 ${i18n.ccr.failedToUninstallIncorrectPackage}`));
@@ -2596,7 +2724,7 @@ async function installCcr(scriptLang) {
2596
2724
  }
2597
2725
  console.log(ansis.cyan(`\u{1F4E6} ${i18n.ccr.installingCcr}`));
2598
2726
  try {
2599
- await execAsync$1("npm install -g @musistudio/claude-code-router --force");
2727
+ await execAsync$2("npm install -g @musistudio/claude-code-router --force");
2600
2728
  console.log(ansis.green(`\u2714 ${i18n.ccr.ccrInstallSuccess}`));
2601
2729
  } catch (error) {
2602
2730
  if (error.message?.includes("EEXIST")) {
@@ -2757,7 +2885,7 @@ function getFallbackPresets() {
2757
2885
  ];
2758
2886
  }
2759
2887
 
2760
- const execAsync = promisify$1(exec$2);
2888
+ const execAsync$1 = promisify$1(exec$2);
2761
2889
  const CCR_CONFIG_DIR = join$1(homedir(), ".claude-code-router");
2762
2890
  const CCR_CONFIG_FILE = join$1(CCR_CONFIG_DIR, "config.json");
2763
2891
  const CCR_BACKUP_DIR = CCR_CONFIG_DIR;
@@ -2917,10 +3045,10 @@ async function restartAndCheckCcrStatus(scriptLang) {
2917
3045
  const i18n = getTranslation(scriptLang);
2918
3046
  try {
2919
3047
  console.log(ansis.cyan(`${i18n.ccr.restartingCcr}`));
2920
- await execAsync("ccr restart");
3048
+ await execAsync$1("ccr restart");
2921
3049
  console.log(ansis.green(`\u2714 ${i18n.ccr.ccrRestartSuccess}`));
2922
3050
  console.log(ansis.cyan(`${i18n.ccr.checkingCcrStatus}`));
2923
- const { stdout } = await execAsync("ccr status");
3051
+ const { stdout } = await execAsync$1("ccr status");
2924
3052
  console.log(ansis.gray(stdout));
2925
3053
  } catch (error) {
2926
3054
  console.error(ansis.red(`${i18n.ccr.ccrRestartFailed}:`), error.message || error);
@@ -3026,6 +3154,41 @@ async function configureCcrFeature(scriptLang) {
3026
3154
  await setupCcrConfiguration(scriptLang);
3027
3155
  }
3028
3156
 
3157
+ const COMETIX_PACKAGE_NAME = "@cometix/ccline";
3158
+ const COMETIX_COMMAND_NAME = "ccline";
3159
+ const COMETIX_COMMANDS = {
3160
+ CHECK_INSTALL: `npm list -g ${COMETIX_PACKAGE_NAME}`,
3161
+ INSTALL: `npm install -g ${COMETIX_PACKAGE_NAME}`,
3162
+ UPDATE: `npm update -g ${COMETIX_PACKAGE_NAME}`,
3163
+ PRINT_CONFIG: `${COMETIX_COMMAND_NAME} --print`
3164
+ };
3165
+
3166
+ const execAsync = promisify$1(exec$2);
3167
+ async function isCometixLineInstalled() {
3168
+ try {
3169
+ await execAsync(COMETIX_COMMANDS.CHECK_INSTALL);
3170
+ return true;
3171
+ } catch {
3172
+ return false;
3173
+ }
3174
+ }
3175
+ async function installCometixLine(scriptLang) {
3176
+ const i18n = getTranslation(scriptLang);
3177
+ const isInstalled = await isCometixLineInstalled();
3178
+ if (isInstalled) {
3179
+ console.log(ansis.green(`\u2714 ${i18n.cometix.cometixAlreadyInstalled}`));
3180
+ return;
3181
+ }
3182
+ try {
3183
+ console.log(ansis.blue(`${i18n.cometix.installingCometix}`));
3184
+ await execAsync(COMETIX_COMMANDS.INSTALL);
3185
+ console.log(ansis.green(`\u2714 ${i18n.cometix.cometixInstallSuccess}`));
3186
+ } catch (error) {
3187
+ console.error(ansis.red(`\u2717 ${i18n.cometix.cometixInstallFailed}: ${error}`));
3188
+ throw error;
3189
+ }
3190
+ }
3191
+
3029
3192
  async function init(options = {}) {
3030
3193
  try {
3031
3194
  if (!options.skipBanner) {
@@ -3289,6 +3452,26 @@ async function init(options = {}) {
3289
3452
  }
3290
3453
  }
3291
3454
  }
3455
+ const cometixInstalled = await isCometixLineInstalled();
3456
+ if (!cometixInstalled) {
3457
+ const { shouldInstallCometix } = await inquirer.prompt({
3458
+ type: "confirm",
3459
+ name: "shouldInstallCometix",
3460
+ message: i18n.cometix.installCometixPrompt,
3461
+ default: true
3462
+ });
3463
+ if (shouldInstallCometix === void 0) {
3464
+ console.log(ansis.yellow(i18n.common.cancelled));
3465
+ process.exit(0);
3466
+ }
3467
+ if (shouldInstallCometix) {
3468
+ await installCometixLine(scriptLang);
3469
+ } else {
3470
+ console.log(ansis.yellow(i18n.cometix.cometixSkipped));
3471
+ }
3472
+ } else {
3473
+ console.log(ansis.green(`\u2714 ${i18n.cometix.cometixAlreadyInstalled}`));
3474
+ }
3292
3475
  updateZcfConfig({
3293
3476
  version,
3294
3477
  preferredLang: scriptLang,
@@ -3381,4 +3564,4 @@ async function openSettingsJson() {
3381
3564
  }
3382
3565
  }
3383
3566
 
3384
- export { readCcrConfig as $, AI_OUTPUT_LANGUAGES as A, writeMcpConfig as B, CLAUDE_DIR as C, backupMcpConfig as D, mergeMcpServers as E, buildMcpServerConfig as F, fixWindowsMcpConfig as G, addCompletedOnboarding as H, I18N as I, getTranslation as J, addNumbersToChoices as K, LEGACY_ZCF_CONFIG_FILE as L, MCP_SERVICES as M, updateZcfConfig as N, readZcfConfig as O, configureAiPersonality as P, isWindows as Q, selectMcpServices as R, SETTINGS_FILE as S, formatApiKeyDisplay as T, modifyApiConfigPartially as U, isCcrInstalled as V, installCcr as W, setupCcrConfiguration as X, validateApiKey as Y, ZCF_CONFIG_FILE as Z, readZcfConfigAsync as _, importRecommendedEnv as a, configureCcrFeature as a0, handleExitPromptError as a1, handleGeneralError as a2, displayBanner as a3, selectScriptLanguage as a4, resolveAiOutputLanguage as a5, updatePromptOnly as a6, selectAndInstallWorkflows as a7, version as a8, checkAndUpdateTools as a9, displayBannerWithInfo as aa, prompts as ab, importRecommendedPermissions as b, commandExists as c, cleanupPermissions as d, CLAUDE_MD_FILE as e, ClAUDE_CONFIG_FILE as f, getPlatform as g, SUPPORTED_LANGS as h, init as i, LANG_LABELS as j, isClaudeCodeInstalled as k, installClaudeCode as l, mergeAndCleanPermissions as m, ensureClaudeDir as n, openSettingsJson as o, backupExistingConfig as p, copyConfigFiles as q, configureApi as r, mergeConfigs as s, mergeSettingsFile as t, updateDefaultModel as u, getExistingModelConfig as v, getExistingApiConfig as w, applyAiLanguageDirective as x, getMcpConfigPath as y, readMcpConfig as z };
3567
+ export { readCcrConfig as $, AI_OUTPUT_LANGUAGES as A, writeMcpConfig as B, CLAUDE_DIR as C, backupMcpConfig as D, mergeMcpServers as E, buildMcpServerConfig as F, fixWindowsMcpConfig as G, addCompletedOnboarding as H, I18N as I, getTranslation as J, addNumbersToChoices as K, LEGACY_ZCF_CONFIG_FILE as L, MCP_SERVICES as M, updateZcfConfig as N, readZcfConfig as O, configureAiPersonality as P, isWindows as Q, selectMcpServices as R, SETTINGS_FILE as S, formatApiKeyDisplay as T, modifyApiConfigPartially as U, isCcrInstalled as V, installCcr as W, setupCcrConfiguration as X, validateApiKey as Y, ZCF_CONFIG_FILE as Z, readZcfConfigAsync as _, importRecommendedEnv as a, configureCcrFeature as a0, handleExitPromptError as a1, handleGeneralError as a2, COMETIX_COMMANDS as a3, COMETIX_COMMAND_NAME as a4, displayBanner as a5, selectScriptLanguage as a6, resolveAiOutputLanguage as a7, updatePromptOnly as a8, selectAndInstallWorkflows as a9, version as aa, checkAndUpdateTools as ab, displayBannerWithInfo as ac, prompts as ad, importRecommendedPermissions as b, commandExists as c, cleanupPermissions as d, CLAUDE_MD_FILE as e, ClAUDE_CONFIG_FILE as f, getPlatform as g, SUPPORTED_LANGS as h, init as i, LANG_LABELS as j, isClaudeCodeInstalled as k, installClaudeCode as l, mergeAndCleanPermissions as m, ensureClaudeDir as n, openSettingsJson as o, backupExistingConfig as p, copyConfigFiles as q, configureApi as r, mergeConfigs as s, mergeSettingsFile as t, updateDefaultModel as u, getExistingModelConfig as v, getExistingApiConfig as w, applyAiLanguageDirective as x, getMcpConfigPath as y, readMcpConfig as z };