ccjk 2.2.4 → 2.2.5
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/auto-updater.mjs +15 -1
- package/dist/chunks/ccjk-config.mjs +77 -13
- package/dist/chunks/ccr.mjs +7 -10
- package/dist/chunks/ccu.mjs +4 -4
- package/dist/chunks/check-updates.mjs +4 -7
- package/dist/chunks/claude-code-config-manager.mjs +8 -11
- package/dist/chunks/claude-code-incremental-manager.mjs +4 -7
- package/dist/chunks/codex.mjs +496 -17
- package/dist/chunks/commands.mjs +392 -89
- package/dist/chunks/commands2.mjs +109 -0
- package/dist/chunks/config-consolidator.mjs +2 -2
- package/dist/chunks/config-switch.mjs +5 -8
- package/dist/chunks/doctor.mjs +6 -6
- package/dist/chunks/features.mjs +654 -35
- package/dist/chunks/help.mjs +339 -0
- package/dist/chunks/index.mjs +323 -10
- package/dist/chunks/index2.mjs +3 -3
- package/dist/chunks/index3.mjs +1171 -0
- package/dist/chunks/init.mjs +21 -24
- package/dist/chunks/installer.mjs +178 -0
- package/dist/chunks/interview.mjs +6 -6
- package/dist/chunks/mcp-performance.mjs +82 -2
- package/dist/chunks/mcp.mjs +500 -0
- package/dist/chunks/menu.mjs +10 -10
- package/dist/chunks/notification.mjs +5 -5
- package/dist/chunks/onboarding.mjs +6 -6
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/platform.mjs +10 -10
- package/dist/chunks/prompts.mjs +7 -8
- package/dist/chunks/session.mjs +2 -2
- package/dist/chunks/skills-sync.mjs +2 -2
- package/dist/chunks/uninstall.mjs +4 -5
- package/dist/chunks/update.mjs +4 -7
- package/dist/chunks/upgrade-manager.mjs +2 -2
- package/dist/chunks/version-checker.mjs +88 -7
- package/dist/cli.mjs +293 -53
- package/dist/i18n/locales/en/agentBrowser.json +79 -0
- package/dist/i18n/locales/en/mcp.json +2 -4
- package/dist/i18n/locales/en/updater.json +3 -1
- package/dist/i18n/locales/zh/agentBrowser.json +79 -0
- package/dist/i18n/locales/zh-CN/common.json +1 -1
- package/dist/i18n/locales/zh-CN/mcp.json +2 -4
- package/dist/i18n/locales/zh-CN/updater.json +3 -1
- package/dist/index.d.mts +8 -584
- package/dist/index.d.ts +8 -584
- package/dist/index.mjs +9 -13
- package/dist/shared/{ccjk.DJM5aVQJ.mjs → ccjk.ByTIGCUC.mjs} +3 -3
- package/dist/shared/{ccjk.qYAnUMuy.mjs → ccjk.CGTmRqsu.mjs} +2 -3
- package/dist/shared/{ccjk.CUdzQluX.mjs → ccjk.CURU8gbR.mjs} +1 -1
- package/dist/{chunks/mcp-market.mjs → shared/ccjk.D-RZS4E2.mjs} +6 -65
- package/dist/shared/{ccjk.B7169qud.mjs → ccjk.tB4-Y4Qb.mjs} +3 -3
- package/package.json +4 -1
- package/templates/common/skills/en/agent-browser.md +258 -0
- package/templates/common/skills/zh-CN/agent-browser.md +260 -0
- package/dist/chunks/claude-config.mjs +0 -228
- package/dist/chunks/features2.mjs +0 -661
- package/dist/chunks/json-config.mjs +0 -59
- package/dist/chunks/mcp-doctor.mjs +0 -160
- package/dist/chunks/mcp-profile.mjs +0 -220
- package/dist/chunks/mcp-release.mjs +0 -138
- package/dist/chunks/shencha.mjs +0 -320
- package/dist/chunks/tools.mjs +0 -169
- package/dist/shared/ccjk.COdsoe-Y.mjs +0 -64
- package/dist/shared/ccjk.DwDtZ5cK.mjs +0 -266
- package/dist/shared/ccjk.n_AtlHzB.mjs +0 -186
package/dist/chunks/index.mjs
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import './init.mjs';
|
|
2
|
-
import { CCJK_PLUGINS_DIR, CCJK_SKILLS_DIR, CCJK_GROUPS_DIR, AIDER_DIR, AIDER_CONFIG_FILE, AIDER_ENV_FILE, CODEX_AUTH_FILE, CODEX_DIR, CODEX_CONFIG_FILE, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CONTINUE_DIR, CONTINUE_CONFIG_FILE } from './constants.mjs';
|
|
2
|
+
import { CCJK_PLUGINS_DIR, CCJK_SKILLS_DIR, CCJK_GROUPS_DIR, AIDER_DIR, AIDER_CONFIG_FILE, AIDER_ENV_FILE, CODEX_AUTH_FILE, CODEX_DIR, CODEX_CONFIG_FILE, CODEX_AGENTS_FILE, CODEX_PROMPTS_DIR, CONTINUE_DIR, CONTINUE_CONFIG_FILE, CURSOR_CONFIG_FILE, CLINE_CONFIG_FILE, CLAUDE_DIR, CURSOR_DIR, CLINE_DIR, CODE_TOOL_TYPES, CODE_TOOL_INFO } from './constants.mjs';
|
|
3
3
|
import { S as STATUS, r as renderProgressBar, s as sectionDivider, C as COLORS } from '../shared/ccjk.BhKlRJ0h.mjs';
|
|
4
|
-
import './claude-config.mjs';
|
|
5
4
|
import { r as readCodexConfig, b as backupCodexComplete, w as writeCodexConfig, a as writeAuthFile, d as detectConfigManagementMode } from './codex.mjs';
|
|
6
5
|
import { detectAllConfigs } from './config-consolidator.mjs';
|
|
7
|
-
import '../shared/ccjk.
|
|
6
|
+
import '../shared/ccjk.ByTIGCUC.mjs';
|
|
8
7
|
import { homedir } from 'node:os';
|
|
9
|
-
import
|
|
8
|
+
import process__default, { env } from 'node:process';
|
|
10
9
|
import ansis from 'ansis';
|
|
11
10
|
import ora from 'ora';
|
|
12
11
|
import { exec } from 'tinyexec';
|
|
@@ -21,11 +20,10 @@ import { join } from 'pathe';
|
|
|
21
20
|
import { i18n, ensureI18nInitialized } from './index2.mjs';
|
|
22
21
|
import { writeFileAtomic } from './fs-operations.mjs';
|
|
23
22
|
import inquirer from 'inquirer';
|
|
24
|
-
import { readJsonConfig } from './
|
|
23
|
+
import { r as readJsonConfig } from './ccjk-config.mjs';
|
|
25
24
|
import { a as addNumbersToChoices, p as promptBoolean } from '../shared/ccjk.DhBeLRzf.mjs';
|
|
26
25
|
import { pathExists } from 'fs-extra';
|
|
27
26
|
import { m as moveToTrash } from '../shared/ccjk.DGjQxTq_.mjs';
|
|
28
|
-
import '../shared/ccjk.n_AtlHzB.mjs';
|
|
29
27
|
|
|
30
28
|
const loadedPlugins = /* @__PURE__ */ new Map();
|
|
31
29
|
const PLUGIN_CONFIG_FILE = join(CCJK_PLUGINS_DIR, "plugins.json");
|
|
@@ -323,6 +321,134 @@ async function initializePlugins() {
|
|
|
323
321
|
}
|
|
324
322
|
}
|
|
325
323
|
|
|
324
|
+
const browserSkill = {
|
|
325
|
+
id: "browser-automation",
|
|
326
|
+
name: {
|
|
327
|
+
"en": "Browser Automation",
|
|
328
|
+
"zh-CN": "\u6D4F\u89C8\u5668\u81EA\u52A8\u5316"
|
|
329
|
+
},
|
|
330
|
+
description: {
|
|
331
|
+
"en": "Zero-config headless browser automation for AI agents",
|
|
332
|
+
"zh-CN": "\u96F6\u914D\u7F6E\u7684 AI \u4EE3\u7406\u6D4F\u89C8\u5668\u81EA\u52A8\u5316\u5DE5\u5177"
|
|
333
|
+
},
|
|
334
|
+
category: "dev",
|
|
335
|
+
triggers: ["/browser", "/web", "/browse"],
|
|
336
|
+
enabled: true,
|
|
337
|
+
version: "1.0.0",
|
|
338
|
+
author: "CCJK",
|
|
339
|
+
tags: ["browser", "automation", "web", "scraping", "testing"],
|
|
340
|
+
template: `# Browser Automation Skill
|
|
341
|
+
|
|
342
|
+
## Overview
|
|
343
|
+
This skill provides zero-config headless browser automation powered by agent-browser.
|
|
344
|
+
|
|
345
|
+
## Quick Start
|
|
346
|
+
|
|
347
|
+
### Open a URL
|
|
348
|
+
\`\`\`bash
|
|
349
|
+
ccjk browser open https://example.com
|
|
350
|
+
\`\`\`
|
|
351
|
+
|
|
352
|
+
### Get Page Snapshot (AI-optimized)
|
|
353
|
+
\`\`\`bash
|
|
354
|
+
ccjk browser snapshot -i # Interactive elements only
|
|
355
|
+
ccjk browser snapshot -c # Compact output
|
|
356
|
+
\`\`\`
|
|
357
|
+
|
|
358
|
+
### Interact with Elements
|
|
359
|
+
\`\`\`bash
|
|
360
|
+
ccjk browser click @e1 # Click by ref
|
|
361
|
+
ccjk browser fill @e2 "text" # Fill input
|
|
362
|
+
ccjk browser get text @e3 # Get text content
|
|
363
|
+
\`\`\`
|
|
364
|
+
|
|
365
|
+
### Screenshots
|
|
366
|
+
\`\`\`bash
|
|
367
|
+
ccjk browser screenshot # Viewport
|
|
368
|
+
ccjk browser screenshot --full # Full page
|
|
369
|
+
ccjk browser screenshot output.png # Custom path
|
|
370
|
+
\`\`\`
|
|
371
|
+
|
|
372
|
+
### Wait for Conditions
|
|
373
|
+
\`\`\`bash
|
|
374
|
+
ccjk browser wait 2000 # Wait 2 seconds
|
|
375
|
+
ccjk browser wait @e1 # Wait for element
|
|
376
|
+
ccjk browser wait --text "Success" # Wait for text
|
|
377
|
+
\`\`\`
|
|
378
|
+
|
|
379
|
+
## Common Workflows
|
|
380
|
+
|
|
381
|
+
### Login Flow
|
|
382
|
+
\`\`\`bash
|
|
383
|
+
ccjk browser open https://app.example.com/login
|
|
384
|
+
ccjk browser snapshot -i
|
|
385
|
+
ccjk browser fill @e1 "username"
|
|
386
|
+
ccjk browser fill @e2 "password"
|
|
387
|
+
ccjk browser click @e3
|
|
388
|
+
ccjk browser wait --text "Dashboard"
|
|
389
|
+
\`\`\`
|
|
390
|
+
|
|
391
|
+
### Form Submission
|
|
392
|
+
\`\`\`bash
|
|
393
|
+
ccjk browser open https://example.com/form
|
|
394
|
+
ccjk browser snapshot -i
|
|
395
|
+
ccjk browser fill @e1 "John Doe"
|
|
396
|
+
ccjk browser fill @e2 "john@example.com"
|
|
397
|
+
ccjk browser click @e3 # Submit button
|
|
398
|
+
ccjk browser wait --text "Thank you"
|
|
399
|
+
\`\`\`
|
|
400
|
+
|
|
401
|
+
### Web Scraping
|
|
402
|
+
\`\`\`bash
|
|
403
|
+
ccjk browser open https://example.com/products
|
|
404
|
+
ccjk browser snapshot --json > products.json
|
|
405
|
+
\`\`\`
|
|
406
|
+
|
|
407
|
+
## Session Management
|
|
408
|
+
|
|
409
|
+
### Parallel Sessions
|
|
410
|
+
\`\`\`bash
|
|
411
|
+
ccjk browser --session s1 open site-a.com
|
|
412
|
+
ccjk browser --session s2 open site-b.com
|
|
413
|
+
ccjk browser session list
|
|
414
|
+
\`\`\`
|
|
415
|
+
|
|
416
|
+
## Debug Mode
|
|
417
|
+
\`\`\`bash
|
|
418
|
+
ccjk browser open example.com --headed # Show browser window
|
|
419
|
+
\`\`\`
|
|
420
|
+
|
|
421
|
+
## Element References
|
|
422
|
+
|
|
423
|
+
The snapshot command returns elements with refs like \`@e1\`, \`@e2\`, etc.
|
|
424
|
+
Use these refs to interact with specific elements:
|
|
425
|
+
|
|
426
|
+
- \`@e1\` - First interactive element
|
|
427
|
+
- \`@e2\` - Second interactive element
|
|
428
|
+
- etc.
|
|
429
|
+
|
|
430
|
+
## Tips for AI Agents
|
|
431
|
+
|
|
432
|
+
1. Always run \`snapshot -i\` first to get interactive elements
|
|
433
|
+
2. Use refs from snapshot output for interactions
|
|
434
|
+
3. Wait for page loads with \`wait --text\` or \`wait @ref\`
|
|
435
|
+
4. Use \`--json\` for programmatic parsing
|
|
436
|
+
5. Close browser when done to free resources
|
|
437
|
+
`
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
const BUILTIN_SKILLS = [
|
|
441
|
+
browserSkill
|
|
442
|
+
];
|
|
443
|
+
function getBuiltinSkill(id) {
|
|
444
|
+
return BUILTIN_SKILLS.find((s) => s.id === id);
|
|
445
|
+
}
|
|
446
|
+
function getBuiltinSkills() {
|
|
447
|
+
return [...BUILTIN_SKILLS];
|
|
448
|
+
}
|
|
449
|
+
function isBuiltinSkill(id) {
|
|
450
|
+
return BUILTIN_SKILLS.some((s) => s.id === id);
|
|
451
|
+
}
|
|
326
452
|
let registry$1 = null;
|
|
327
453
|
function ensureSkillsDir() {
|
|
328
454
|
if (!existsSync(CCJK_SKILLS_DIR)) {
|
|
@@ -339,6 +465,12 @@ function loadRegistry$1() {
|
|
|
339
465
|
ensureSkillsDir();
|
|
340
466
|
const skills = /* @__PURE__ */ new Map();
|
|
341
467
|
const categories = /* @__PURE__ */ new Map();
|
|
468
|
+
for (const skill of BUILTIN_SKILLS) {
|
|
469
|
+
skills.set(skill.id, skill);
|
|
470
|
+
const categorySkills = categories.get(skill.category) || [];
|
|
471
|
+
categorySkills.push(skill.id);
|
|
472
|
+
categories.set(skill.category, categorySkills);
|
|
473
|
+
}
|
|
342
474
|
const files = readdirSync(CCJK_SKILLS_DIR).filter((f) => f.endsWith(".json"));
|
|
343
475
|
for (const file of files) {
|
|
344
476
|
try {
|
|
@@ -1709,7 +1841,7 @@ async function handleAddProvider() {
|
|
|
1709
1841
|
defaultValue: true
|
|
1710
1842
|
});
|
|
1711
1843
|
if (setAsDefault) {
|
|
1712
|
-
const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.
|
|
1844
|
+
const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.ai; });
|
|
1713
1845
|
const switched = await switchToProvider(provider.id);
|
|
1714
1846
|
if (switched) {
|
|
1715
1847
|
console.log(ansis.green(i18n.t("multi-config:profileSetAsDefault", { name: provider.name })));
|
|
@@ -1904,7 +2036,7 @@ ${i18n.t("codex:copyingProvider", { name: provider.name })}`));
|
|
|
1904
2036
|
defaultValue: false
|
|
1905
2037
|
});
|
|
1906
2038
|
if (setAsDefault) {
|
|
1907
|
-
const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.
|
|
2039
|
+
const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.ai; });
|
|
1908
2040
|
const switched = await switchToProvider(copiedProvider.id);
|
|
1909
2041
|
if (switched) {
|
|
1910
2042
|
console.log(ansis.green(i18n.t("multi-config:profileSetAsDefault", { name: copiedProvider.name })));
|
|
@@ -2546,6 +2678,187 @@ function syncSkillsToContinue(skills) {
|
|
|
2546
2678
|
writeContinueConfig(config);
|
|
2547
2679
|
}
|
|
2548
2680
|
|
|
2681
|
+
function getToolConfigPath(tool) {
|
|
2682
|
+
switch (tool) {
|
|
2683
|
+
case "claude-code":
|
|
2684
|
+
return CLAUDE_DIR;
|
|
2685
|
+
case "codex":
|
|
2686
|
+
return CODEX_CONFIG_FILE;
|
|
2687
|
+
case "aider":
|
|
2688
|
+
return AIDER_CONFIG_FILE;
|
|
2689
|
+
case "continue":
|
|
2690
|
+
return CONTINUE_CONFIG_FILE;
|
|
2691
|
+
case "cline":
|
|
2692
|
+
return CLINE_CONFIG_FILE;
|
|
2693
|
+
case "cursor":
|
|
2694
|
+
return CURSOR_CONFIG_FILE;
|
|
2695
|
+
default:
|
|
2696
|
+
return "";
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
function getToolDir(tool) {
|
|
2700
|
+
switch (tool) {
|
|
2701
|
+
case "claude-code":
|
|
2702
|
+
return CLAUDE_DIR;
|
|
2703
|
+
case "codex":
|
|
2704
|
+
return CODEX_DIR;
|
|
2705
|
+
case "aider":
|
|
2706
|
+
return AIDER_DIR;
|
|
2707
|
+
case "continue":
|
|
2708
|
+
return CONTINUE_DIR;
|
|
2709
|
+
case "cline":
|
|
2710
|
+
return CLINE_DIR;
|
|
2711
|
+
case "cursor":
|
|
2712
|
+
return CURSOR_DIR;
|
|
2713
|
+
default:
|
|
2714
|
+
return "";
|
|
2715
|
+
}
|
|
2716
|
+
}
|
|
2717
|
+
async function isToolInstalled(tool) {
|
|
2718
|
+
try {
|
|
2719
|
+
switch (tool) {
|
|
2720
|
+
case "claude-code": {
|
|
2721
|
+
const ccResult = await exec("claude", ["--version"]);
|
|
2722
|
+
return ccResult.exitCode === 0;
|
|
2723
|
+
}
|
|
2724
|
+
case "codex": {
|
|
2725
|
+
const cxResult = await exec("codex", ["--version"]);
|
|
2726
|
+
return cxResult.exitCode === 0;
|
|
2727
|
+
}
|
|
2728
|
+
case "aider": {
|
|
2729
|
+
const adResult = await exec("aider", ["--version"]);
|
|
2730
|
+
return adResult.exitCode === 0;
|
|
2731
|
+
}
|
|
2732
|
+
case "continue":
|
|
2733
|
+
return existsSync(CONTINUE_DIR);
|
|
2734
|
+
case "cline":
|
|
2735
|
+
return existsSync(CLINE_DIR);
|
|
2736
|
+
case "cursor": {
|
|
2737
|
+
const cuResult = await exec("cursor", ["--version"]);
|
|
2738
|
+
return cuResult.exitCode === 0;
|
|
2739
|
+
}
|
|
2740
|
+
default:
|
|
2741
|
+
return false;
|
|
2742
|
+
}
|
|
2743
|
+
} catch {
|
|
2744
|
+
return false;
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
async function getToolVersion(tool) {
|
|
2748
|
+
try {
|
|
2749
|
+
switch (tool) {
|
|
2750
|
+
case "claude-code": {
|
|
2751
|
+
const result = await exec("claude", ["--version"]);
|
|
2752
|
+
return result.stdout.trim();
|
|
2753
|
+
}
|
|
2754
|
+
case "codex": {
|
|
2755
|
+
const result = await exec("codex", ["--version"]);
|
|
2756
|
+
return result.stdout.trim();
|
|
2757
|
+
}
|
|
2758
|
+
case "aider": {
|
|
2759
|
+
const result = await exec("aider", ["--version"]);
|
|
2760
|
+
return result.stdout.trim();
|
|
2761
|
+
}
|
|
2762
|
+
case "cursor": {
|
|
2763
|
+
const result = await exec("cursor", ["--version"]);
|
|
2764
|
+
return result.stdout.trim();
|
|
2765
|
+
}
|
|
2766
|
+
default:
|
|
2767
|
+
return null;
|
|
2768
|
+
}
|
|
2769
|
+
} catch {
|
|
2770
|
+
return null;
|
|
2771
|
+
}
|
|
2772
|
+
}
|
|
2773
|
+
async function getToolStatus(tool) {
|
|
2774
|
+
const configPath = getToolConfigPath(tool);
|
|
2775
|
+
const installed = await isToolInstalled(tool);
|
|
2776
|
+
const version = installed ? await getToolVersion(tool) : void 0;
|
|
2777
|
+
return {
|
|
2778
|
+
tool,
|
|
2779
|
+
installed,
|
|
2780
|
+
version: version || void 0,
|
|
2781
|
+
configExists: existsSync(configPath),
|
|
2782
|
+
configPath,
|
|
2783
|
+
lastChecked: /* @__PURE__ */ new Date()
|
|
2784
|
+
};
|
|
2785
|
+
}
|
|
2786
|
+
async function getAllToolsStatus() {
|
|
2787
|
+
const statuses = [];
|
|
2788
|
+
for (const tool of CODE_TOOL_TYPES) {
|
|
2789
|
+
statuses.push(await getToolStatus(tool));
|
|
2790
|
+
}
|
|
2791
|
+
return statuses;
|
|
2792
|
+
}
|
|
2793
|
+
async function getInstalledTools() {
|
|
2794
|
+
const installed = [];
|
|
2795
|
+
for (const tool of CODE_TOOL_TYPES) {
|
|
2796
|
+
if (await isToolInstalled(tool)) {
|
|
2797
|
+
installed.push(tool);
|
|
2798
|
+
}
|
|
2799
|
+
}
|
|
2800
|
+
return installed;
|
|
2801
|
+
}
|
|
2802
|
+
async function installTool(tool) {
|
|
2803
|
+
const info = CODE_TOOL_INFO[tool];
|
|
2804
|
+
try {
|
|
2805
|
+
const parts = info.installCmd.split(" ");
|
|
2806
|
+
const cmd = parts[0];
|
|
2807
|
+
const args = parts.slice(1);
|
|
2808
|
+
const result = await exec(cmd, args);
|
|
2809
|
+
if (result.exitCode === 0) {
|
|
2810
|
+
const version = await getToolVersion(tool);
|
|
2811
|
+
return {
|
|
2812
|
+
tool,
|
|
2813
|
+
success: true,
|
|
2814
|
+
message: `${info.name} installed successfully`,
|
|
2815
|
+
version: version || void 0
|
|
2816
|
+
};
|
|
2817
|
+
} else {
|
|
2818
|
+
return {
|
|
2819
|
+
tool,
|
|
2820
|
+
success: false,
|
|
2821
|
+
message: `Failed to install ${info.name}: ${result.stderr}`
|
|
2822
|
+
};
|
|
2823
|
+
}
|
|
2824
|
+
} catch (error) {
|
|
2825
|
+
return {
|
|
2826
|
+
tool,
|
|
2827
|
+
success: false,
|
|
2828
|
+
message: `Failed to install ${info.name}: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
2829
|
+
};
|
|
2830
|
+
}
|
|
2831
|
+
}
|
|
2832
|
+
function getToolInfo(tool) {
|
|
2833
|
+
return CODE_TOOL_INFO[tool];
|
|
2834
|
+
}
|
|
2835
|
+
function getAllToolsInfo() {
|
|
2836
|
+
return CODE_TOOL_INFO;
|
|
2837
|
+
}
|
|
2838
|
+
function getToolsByCategory(category) {
|
|
2839
|
+
return CODE_TOOL_TYPES.filter((tool) => CODE_TOOL_INFO[tool].category === category);
|
|
2840
|
+
}
|
|
2841
|
+
function formatToolStatus(status) {
|
|
2842
|
+
const info = CODE_TOOL_INFO[status.tool];
|
|
2843
|
+
const icon = status.installed ? "\u2705" : "\u274C";
|
|
2844
|
+
const version = status.version ? ` (${status.version})` : "";
|
|
2845
|
+
const config = status.configExists ? "\u{1F4C4}" : "\u26A0\uFE0F";
|
|
2846
|
+
return `${icon} ${info.name}${version} ${config}`;
|
|
2847
|
+
}
|
|
2848
|
+
function getRecommendedTools(projectType) {
|
|
2849
|
+
switch (projectType) {
|
|
2850
|
+
case "typescript":
|
|
2851
|
+
case "javascript":
|
|
2852
|
+
return ["claude-code", "aider", "continue"];
|
|
2853
|
+
case "python":
|
|
2854
|
+
return ["aider", "continue", "claude-code"];
|
|
2855
|
+
case "fullstack":
|
|
2856
|
+
return ["claude-code", "cursor", "aider"];
|
|
2857
|
+
default:
|
|
2858
|
+
return ["claude-code", "aider"];
|
|
2859
|
+
}
|
|
2860
|
+
}
|
|
2861
|
+
|
|
2549
2862
|
async function checkClaudeCodeInstallation() {
|
|
2550
2863
|
try {
|
|
2551
2864
|
const versionInfo = await checkClaudeCodeVersion();
|
|
@@ -2754,7 +3067,7 @@ function checkPermissions() {
|
|
|
2754
3067
|
}
|
|
2755
3068
|
async function checkDiskSpace() {
|
|
2756
3069
|
try {
|
|
2757
|
-
if (
|
|
3070
|
+
if (process__default.platform === "win32") {
|
|
2758
3071
|
return {
|
|
2759
3072
|
name: "Disk Space",
|
|
2760
3073
|
status: "info",
|
|
@@ -3079,4 +3392,4 @@ function showStatus(type, message) {
|
|
|
3079
3392
|
console.log(STATUS[type](message));
|
|
3080
3393
|
}
|
|
3081
3394
|
|
|
3082
|
-
export {
|
|
3395
|
+
export { writeAiderConfig as $, getRegistry$1 as A, importSkills as B, isBuiltinSkill as C, refreshRegistry$1 as D, removeSkill as E, searchSkills as F, setSkillEnabled as G, addGroup as H, disableGroup as I, enableGroup as J, ensureGroupsDir as K, exportGroups as L, getAllGroups as M, getEnabledAgents as N, getEnabledSkillIds as O, getGroup as P, getRegistry as Q, importGroups as R, isGroupEnabled as S, refreshRegistry as T, removeGroup as U, searchGroups as V, isAiderInstalled as W, getAiderVersion as X, installAider as Y, ensureAiderDir as Z, readAiderConfig as _, getPluginInfo as a, configureAiderApi as a0, getAiderModelPresets as a1, runAider as a2, configureIncrementalManagement as a3, addProviderToExisting as a4, editExistingProvider as a5, deleteProviders as a6, validateProviderData as a7, CodexUninstaller as a8, ensureContinueDir as a9, runDoctor as aA, MenuBuilder as aB, showQuickMenu as aC, confirm as aD, showStatus as aE, codexProviderManager as aF, codexConfigSwitch$1 as aG, codexUninstaller as aH, isContinueConfigured as aa, readContinueConfig as ab, writeContinueConfig as ac, addContinueModel as ad, removeContinueModel as ae, getContinueProviderPresets as af, configureContinueApi as ag, addContinueMcpServer as ah, addContinueCustomCommand as ai, enableContinueContextProvider as aj, syncSkillsToContinue as ak, getToolConfigPath as al, getToolDir as am, isToolInstalled as an, getToolVersion as ao, getToolStatus as ap, getAllToolsStatus as aq, getInstalledTools as ar, installTool as as, getToolInfo as at, getAllToolsInfo as au, getToolsByCategory as av, formatToolStatus as aw, getRecommendedTools as ax, runHealthCheck as ay, displayHealthReport as az, listPlugins as b, enablePlugin as c, discoverPlugins as d, ensurePluginsDir as e, disablePlugin as f, getLoadedPlugins as g, getPluginWorkflows as h, getPluginAgents as i, getPluginMcpServices as j, getPluginOutputStyles as k, loadPlugin as l, getPluginSkills as m, initializePlugins as n, addSkill as o, createBatchSkills as p, ensureSkillsDir as q, readPluginConfig as r, exportSkills as s, getAllSkills as t, unloadPlugin as u, getBatchCategories as v, writePluginConfig as w, getBuiltinSkill as x, getBuiltinSkills as y, getSkill as z };
|
package/dist/chunks/index2.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import
|
|
2
|
+
import process__default from 'node:process';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import i18next from 'i18next';
|
|
5
5
|
import Backend from 'i18next-fs-backend';
|
|
@@ -90,7 +90,7 @@ async function initI18n(language = "zh-CN") {
|
|
|
90
90
|
// Development: src/i18n/locales
|
|
91
91
|
join(packageRoot, "dist/i18n/locales"),
|
|
92
92
|
// NPM package: /node_modules/ccjk/dist/i18n/locales
|
|
93
|
-
join(
|
|
93
|
+
join(process__default.cwd(), "dist/i18n/locales"),
|
|
94
94
|
// Production build: ./dist/i18n/locales
|
|
95
95
|
join(currentDir, "../../../dist/i18n/locales"),
|
|
96
96
|
// Fallback for deep chunk paths
|
|
@@ -103,7 +103,7 @@ async function initI18n(language = "zh-CN") {
|
|
|
103
103
|
return join(basePath, "{{lng}}/{{ns}}.json");
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
return join(
|
|
106
|
+
return join(process__default.cwd(), "dist/i18n/locales/{{lng}}/{{ns}}.json");
|
|
107
107
|
})()
|
|
108
108
|
},
|
|
109
109
|
// Interpolation settings
|