ccjk 5.2.0 → 5.2.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/api.mjs +6 -6
- package/dist/chunks/auto-updater.mjs +80 -133
- package/dist/chunks/ccm.mjs +7 -7
- package/dist/chunks/ccr.mjs +7 -4
- package/dist/chunks/ccu.mjs +6 -6
- package/dist/chunks/check-updates.mjs +3 -3
- package/dist/chunks/claude-code-incremental-manager.mjs +38 -38
- package/dist/chunks/cloud-v5.mjs +1651 -0
- package/dist/chunks/codex.mjs +70 -70
- package/dist/chunks/commands.mjs +25 -25
- package/dist/chunks/commit.mjs +16 -16
- package/dist/chunks/config-consolidator.mjs +9 -9
- package/dist/chunks/config-switch.mjs +39 -39
- package/dist/chunks/config.mjs +5 -5
- package/dist/chunks/config2.mjs +85 -85
- package/dist/chunks/context.mjs +2 -2
- package/dist/chunks/doctor.mjs +31 -31
- package/dist/chunks/features.mjs +84 -83
- package/dist/chunks/help.mjs +116 -116
- package/dist/chunks/index4.mjs +46 -46
- package/dist/chunks/init.mjs +214 -191
- package/dist/chunks/interview.mjs +102 -102
- package/dist/chunks/manager.mjs +238 -0
- package/dist/chunks/marketplace.mjs +59 -59
- package/dist/chunks/mcp.mjs +82 -82
- package/dist/chunks/menu.mjs +441 -379
- package/dist/chunks/notification.mjs +112 -112
- package/dist/chunks/onboarding.mjs +7 -7
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/permission-manager.mjs +8 -8
- package/dist/chunks/plugin.mjs +100 -100
- package/dist/chunks/prompts.mjs +15 -15
- package/dist/chunks/providers.mjs +65 -65
- package/dist/chunks/session.mjs +83 -83
- package/dist/chunks/skills-sync.mjs +72 -72
- package/dist/chunks/skills.mjs +88 -88
- package/dist/chunks/team.mjs +6 -6
- package/dist/chunks/uninstall.mjs +35 -35
- package/dist/chunks/update.mjs +6 -6
- package/dist/chunks/upgrade-manager.mjs +4 -4
- package/dist/chunks/workflows2.mjs +13 -13
- package/dist/cli.mjs +21 -0
- package/dist/i18n/locales/en/menu.json +16 -1
- package/dist/i18n/locales/en/skills.json +29 -0
- package/dist/i18n/locales/zh-CN/menu.json +16 -1
- package/dist/i18n/locales/zh-CN/skills.json +29 -0
- package/dist/index.mjs +4 -4
- package/dist/shared/{ccjk.f40us0yY.mjs → ccjk.BiJujy5w.mjs} +4 -4
- package/dist/shared/{ccjk.CQzwtnZ1.mjs → ccjk.C_3BYaWc.mjs} +50 -50
- package/dist/shared/{ccjk.Zwx-YR_P.mjs → ccjk.DjD9Rzxq.mjs} +32 -32
- package/dist/shared/{ccjk.DtWIPt8E.mjs → ccjk.XgW1H2t3.mjs} +68 -68
- package/dist/shared/{ccjk.BlPCiSHj.mjs → ccjk.tI4PJA0c.mjs} +30 -30
- package/package.json +3 -3
package/dist/chunks/skills.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ansis__default from 'ansis';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { i18n } from './index2.mjs';
|
|
4
4
|
import { searchSkills, getSkill, getAllSkills, addSkill, setSkillEnabled, removeSkill, getBatchCategories, createBatchSkills } from './manager.mjs';
|
|
@@ -16,9 +16,9 @@ import 'node:fs/promises';
|
|
|
16
16
|
|
|
17
17
|
async function listSkills(options = {}) {
|
|
18
18
|
console.log("");
|
|
19
|
-
console.log(
|
|
20
|
-
console.log(
|
|
21
|
-
console.log(
|
|
19
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
20
|
+
console.log(ansis__default.bold.cyan(` ${i18n.t("skills:title.list")}`));
|
|
21
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
22
22
|
console.log("");
|
|
23
23
|
try {
|
|
24
24
|
const skills = searchSkills({
|
|
@@ -26,10 +26,10 @@ async function listSkills(options = {}) {
|
|
|
26
26
|
enabled: options.showDisabled ? void 0 : true
|
|
27
27
|
});
|
|
28
28
|
if (skills.length === 0) {
|
|
29
|
-
console.log(
|
|
29
|
+
console.log(ansis__default.yellow(` ${i18n.t("skills:message.noSkills")}`));
|
|
30
30
|
console.log("");
|
|
31
|
-
console.log(
|
|
32
|
-
console.log(
|
|
31
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:hint.createSkill")}`));
|
|
32
|
+
console.log(ansis__default.dim(` ccjk skills create <name>`));
|
|
33
33
|
console.log("");
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
@@ -40,36 +40,36 @@ async function listSkills(options = {}) {
|
|
|
40
40
|
byCategory.set(skill.category, categorySkills);
|
|
41
41
|
}
|
|
42
42
|
for (const [category, categorySkills] of byCategory) {
|
|
43
|
-
console.log(
|
|
43
|
+
console.log(ansis__default.bold.green(` ${getCategoryIcon(category)} ${i18n.t(`skills:category.${category}`)}`));
|
|
44
44
|
console.log("");
|
|
45
45
|
for (const skill of categorySkills) {
|
|
46
|
-
const statusIcon = skill.enabled ?
|
|
46
|
+
const statusIcon = skill.enabled ? ansis__default.green("\u2713") : ansis__default.dim("\u25CB");
|
|
47
47
|
const name = skill.name[options.lang || "en"];
|
|
48
48
|
const description = skill.description[options.lang || "en"];
|
|
49
|
-
const triggers = skill.triggers.map((t) =>
|
|
50
|
-
console.log(` ${statusIcon} ${
|
|
51
|
-
console.log(` ${
|
|
52
|
-
console.log(` ${
|
|
49
|
+
const triggers = skill.triggers.map((t) => ansis__default.green(t)).join(", ");
|
|
50
|
+
console.log(` ${statusIcon} ${ansis__default.bold(name)} ${ansis__default.dim(`(${skill.id})`)}`);
|
|
51
|
+
console.log(` ${ansis__default.dim(description)}`);
|
|
52
|
+
console.log(` ${ansis__default.dim(i18n.t("skills:label.triggers"))}: ${triggers}`);
|
|
53
53
|
if (skill.tags && skill.tags.length > 0) {
|
|
54
|
-
const tags = skill.tags.map((tag) =>
|
|
54
|
+
const tags = skill.tags.map((tag) => ansis__default.bgGray.white(` ${tag} `)).join(" ");
|
|
55
55
|
console.log(` ${tags}`);
|
|
56
56
|
}
|
|
57
57
|
console.log("");
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
console.log(
|
|
60
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:message.totalSkills", { count: skills.length })}`));
|
|
61
61
|
console.log("");
|
|
62
62
|
} catch (error) {
|
|
63
|
-
console.error(
|
|
63
|
+
console.error(ansis__default.red(`
|
|
64
64
|
${i18n.t("skills:error.listFailed")}: ${error}`));
|
|
65
65
|
throw error;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
async function runSkill(skillName, options = {}) {
|
|
69
69
|
console.log("");
|
|
70
|
-
console.log(
|
|
71
|
-
console.log(
|
|
72
|
-
console.log(
|
|
70
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
71
|
+
console.log(ansis__default.bold.cyan(` ${i18n.t("skills:title.run")}`));
|
|
72
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
73
73
|
console.log("");
|
|
74
74
|
try {
|
|
75
75
|
let skill = getSkill(skillName);
|
|
@@ -78,99 +78,99 @@ async function runSkill(skillName, options = {}) {
|
|
|
78
78
|
skill = allSkills.find((s) => s.triggers.includes(skillName) || s.triggers.includes(`/${skillName}`));
|
|
79
79
|
}
|
|
80
80
|
if (!skill) {
|
|
81
|
-
console.error(
|
|
81
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.skillNotFound", { name: skillName })}`));
|
|
82
82
|
console.log("");
|
|
83
|
-
console.log(
|
|
84
|
-
console.log(
|
|
83
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:hint.listSkills")}`));
|
|
84
|
+
console.log(ansis__default.dim(` ccjk skills list`));
|
|
85
85
|
console.log("");
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
88
|
if (!skill.enabled) {
|
|
89
|
-
console.warn(
|
|
89
|
+
console.warn(ansis__default.yellow(` ${i18n.t("skills:warning.skillDisabled", { name: skill.name[options.lang || "en"] })}`));
|
|
90
90
|
console.log("");
|
|
91
|
-
console.log(
|
|
92
|
-
console.log(
|
|
91
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:hint.enableSkill")}`));
|
|
92
|
+
console.log(ansis__default.dim(` ccjk skills enable ${skill.id}`));
|
|
93
93
|
console.log("");
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
|
-
console.log(
|
|
97
|
-
console.log(
|
|
96
|
+
console.log(ansis__default.bold(` ${skill.name[options.lang || "en"]}`));
|
|
97
|
+
console.log(ansis__default.dim(` ${skill.description[options.lang || "en"]}`));
|
|
98
98
|
console.log("");
|
|
99
|
-
console.log(
|
|
99
|
+
console.log(ansis__default.bold.green(` ${i18n.t("skills:label.template")}:`));
|
|
100
100
|
console.log("");
|
|
101
|
-
console.log(
|
|
101
|
+
console.log(ansis__default.dim(" \u2500".repeat(30)));
|
|
102
102
|
console.log(skill.template.split("\n").map((line) => ` ${line}`).join("\n"));
|
|
103
|
-
console.log(
|
|
103
|
+
console.log(ansis__default.dim(" \u2500".repeat(30)));
|
|
104
104
|
console.log("");
|
|
105
|
-
console.log(
|
|
105
|
+
console.log(ansis__default.green(` \u2713 ${i18n.t("skills:message.skillExecuted")}`));
|
|
106
106
|
console.log("");
|
|
107
|
-
console.log(
|
|
107
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:hint.copyTemplate")}`));
|
|
108
108
|
console.log("");
|
|
109
109
|
} catch (error) {
|
|
110
|
-
console.error(
|
|
110
|
+
console.error(ansis__default.red(`
|
|
111
111
|
${i18n.t("skills:error.runFailed")}: ${error}`));
|
|
112
112
|
throw error;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
async function showSkillInfo(skillName, options = {}) {
|
|
116
116
|
console.log("");
|
|
117
|
-
console.log(
|
|
118
|
-
console.log(
|
|
119
|
-
console.log(
|
|
117
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
118
|
+
console.log(ansis__default.bold.cyan(` ${i18n.t("skills:title.info")}`));
|
|
119
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
120
120
|
console.log("");
|
|
121
121
|
try {
|
|
122
122
|
const skill = getSkill(skillName);
|
|
123
123
|
if (!skill) {
|
|
124
|
-
console.error(
|
|
124
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.skillNotFound", { name: skillName })}`));
|
|
125
125
|
console.log("");
|
|
126
126
|
return;
|
|
127
127
|
}
|
|
128
128
|
const name = skill.name[options.lang || "en"];
|
|
129
129
|
const description = skill.description[options.lang || "en"];
|
|
130
|
-
const statusBadge = skill.enabled ?
|
|
131
|
-
console.log(`${
|
|
132
|
-
console.log(
|
|
130
|
+
const statusBadge = skill.enabled ? ansis__default.bgGreen.white(" ENABLED ") : ansis__default.bgRed.white(" DISABLED ");
|
|
131
|
+
console.log(`${ansis__default.bold.green(` ${name}`)} ${statusBadge}`);
|
|
132
|
+
console.log(ansis__default.dim(` ${description}`));
|
|
133
133
|
console.log("");
|
|
134
|
-
console.log(
|
|
135
|
-
console.log(
|
|
136
|
-
console.log(
|
|
137
|
-
console.log(
|
|
134
|
+
console.log(ansis__default.bold(` ${i18n.t("skills:label.details")}:`));
|
|
135
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:label.id")}: ${skill.id}`));
|
|
136
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:label.version")}: ${skill.version}`));
|
|
137
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:label.category")}: ${i18n.t(`skills:category.${skill.category}`)}`));
|
|
138
138
|
if (skill.author) {
|
|
139
|
-
console.log(
|
|
139
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:label.author")}: ${skill.author}`));
|
|
140
140
|
}
|
|
141
141
|
console.log("");
|
|
142
|
-
console.log(
|
|
142
|
+
console.log(ansis__default.bold(` ${i18n.t("skills:label.triggers")}:`));
|
|
143
143
|
for (const trigger of skill.triggers) {
|
|
144
|
-
console.log(
|
|
144
|
+
console.log(ansis__default.green(` ${trigger}`));
|
|
145
145
|
}
|
|
146
146
|
if (skill.tags && skill.tags.length > 0) {
|
|
147
147
|
console.log("");
|
|
148
|
-
console.log(
|
|
149
|
-
const tags = skill.tags.map((tag) =>
|
|
148
|
+
console.log(ansis__default.bold(` ${i18n.t("skills:label.tags")}:`));
|
|
149
|
+
const tags = skill.tags.map((tag) => ansis__default.bgGray.white(` ${tag} `)).join(" ");
|
|
150
150
|
console.log(` ${tags}`);
|
|
151
151
|
}
|
|
152
152
|
if (skill.agents && skill.agents.length > 0) {
|
|
153
153
|
console.log("");
|
|
154
|
-
console.log(
|
|
154
|
+
console.log(ansis__default.bold(` ${i18n.t("skills:label.agents")}:`));
|
|
155
155
|
for (const agent of skill.agents) {
|
|
156
|
-
console.log(
|
|
156
|
+
console.log(ansis__default.dim(` - ${agent}`));
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
console.log("");
|
|
160
|
-
console.log(
|
|
161
|
-
console.log(
|
|
160
|
+
console.log(ansis__default.bold(` ${i18n.t("skills:label.template")}:`));
|
|
161
|
+
console.log(ansis__default.dim(` ${skill.template.length} ${i18n.t("skills:label.characters")}`));
|
|
162
162
|
console.log("");
|
|
163
163
|
} catch (error) {
|
|
164
|
-
console.error(
|
|
164
|
+
console.error(ansis__default.red(`
|
|
165
165
|
${i18n.t("skills:error.infoFailed")}: ${error}`));
|
|
166
166
|
throw error;
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
async function createSkill(skillName, options = {}) {
|
|
170
170
|
console.log("");
|
|
171
|
-
console.log(
|
|
172
|
-
console.log(
|
|
173
|
-
console.log(
|
|
171
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
172
|
+
console.log(ansis__default.bold.cyan(` ${i18n.t("skills:title.create")}`));
|
|
173
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
174
174
|
console.log("");
|
|
175
175
|
try {
|
|
176
176
|
if (options.batch) {
|
|
@@ -179,7 +179,7 @@ async function createSkill(skillName, options = {}) {
|
|
|
179
179
|
}
|
|
180
180
|
const existing = getSkill(skillName);
|
|
181
181
|
if (existing) {
|
|
182
|
-
console.error(
|
|
182
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.skillExists", { name: skillName })}`));
|
|
183
183
|
console.log("");
|
|
184
184
|
return;
|
|
185
185
|
}
|
|
@@ -256,19 +256,19 @@ async function createSkill(skillName, options = {}) {
|
|
|
256
256
|
};
|
|
257
257
|
const result = addSkill(skill);
|
|
258
258
|
if (result.success) {
|
|
259
|
-
console.log(
|
|
259
|
+
console.log(ansis__default.green(`
|
|
260
260
|
\u2713 ${i18n.t("skills:message.skillCreated", { name: skill.name[options.lang || "en"] })}`));
|
|
261
|
-
console.log(
|
|
261
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:label.path")}: ${result.path}`));
|
|
262
262
|
console.log("");
|
|
263
|
-
console.log(
|
|
264
|
-
console.log(
|
|
263
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:hint.runSkill")}`));
|
|
264
|
+
console.log(ansis__default.dim(` ccjk skills run ${skillName}`));
|
|
265
265
|
console.log("");
|
|
266
266
|
} else {
|
|
267
|
-
console.error(
|
|
267
|
+
console.error(ansis__default.red(`
|
|
268
268
|
${i18n.t("skills:error.createFailed")}: ${result.error}`));
|
|
269
269
|
}
|
|
270
270
|
} catch (error) {
|
|
271
|
-
console.error(
|
|
271
|
+
console.error(ansis__default.red(`
|
|
272
272
|
${i18n.t("skills:error.createFailed")}: ${error}`));
|
|
273
273
|
throw error;
|
|
274
274
|
}
|
|
@@ -277,21 +277,21 @@ async function enableSkill(skillName, options = {}) {
|
|
|
277
277
|
try {
|
|
278
278
|
const skill = getSkill(skillName);
|
|
279
279
|
if (!skill) {
|
|
280
|
-
console.error(
|
|
280
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.skillNotFound", { name: skillName })}`));
|
|
281
281
|
return;
|
|
282
282
|
}
|
|
283
283
|
if (skill.enabled) {
|
|
284
|
-
console.log(
|
|
284
|
+
console.log(ansis__default.yellow(` ${i18n.t("skills:message.alreadyEnabled", { name: skill.name[options.lang || "en"] })}`));
|
|
285
285
|
return;
|
|
286
286
|
}
|
|
287
287
|
const success = setSkillEnabled(skillName, true);
|
|
288
288
|
if (success) {
|
|
289
|
-
console.log(
|
|
289
|
+
console.log(ansis__default.green(` \u2713 ${i18n.t("skills:message.skillEnabled", { name: skill.name[options.lang || "en"] })}`));
|
|
290
290
|
} else {
|
|
291
|
-
console.error(
|
|
291
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.enableFailed")}`));
|
|
292
292
|
}
|
|
293
293
|
} catch (error) {
|
|
294
|
-
console.error(
|
|
294
|
+
console.error(ansis__default.red(`
|
|
295
295
|
${i18n.t("skills:error.enableFailed")}: ${error}`));
|
|
296
296
|
throw error;
|
|
297
297
|
}
|
|
@@ -300,21 +300,21 @@ async function disableSkill(skillName, options = {}) {
|
|
|
300
300
|
try {
|
|
301
301
|
const skill = getSkill(skillName);
|
|
302
302
|
if (!skill) {
|
|
303
|
-
console.error(
|
|
303
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.skillNotFound", { name: skillName })}`));
|
|
304
304
|
return;
|
|
305
305
|
}
|
|
306
306
|
if (!skill.enabled) {
|
|
307
|
-
console.log(
|
|
307
|
+
console.log(ansis__default.yellow(` ${i18n.t("skills:message.alreadyDisabled", { name: skill.name[options.lang || "en"] })}`));
|
|
308
308
|
return;
|
|
309
309
|
}
|
|
310
310
|
const success = setSkillEnabled(skillName, false);
|
|
311
311
|
if (success) {
|
|
312
|
-
console.log(
|
|
312
|
+
console.log(ansis__default.green(` \u2713 ${i18n.t("skills:message.skillDisabled", { name: skill.name[options.lang || "en"] })}`));
|
|
313
313
|
} else {
|
|
314
|
-
console.error(
|
|
314
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.disableFailed")}`));
|
|
315
315
|
}
|
|
316
316
|
} catch (error) {
|
|
317
|
-
console.error(
|
|
317
|
+
console.error(ansis__default.red(`
|
|
318
318
|
${i18n.t("skills:error.disableFailed")}: ${error}`));
|
|
319
319
|
throw error;
|
|
320
320
|
}
|
|
@@ -323,7 +323,7 @@ async function deleteSkill(skillName, options = {}) {
|
|
|
323
323
|
try {
|
|
324
324
|
const skill = getSkill(skillName);
|
|
325
325
|
if (!skill) {
|
|
326
|
-
console.error(
|
|
326
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.skillNotFound", { name: skillName })}`));
|
|
327
327
|
return;
|
|
328
328
|
}
|
|
329
329
|
const { confirm } = await inquirer.prompt({
|
|
@@ -333,17 +333,17 @@ async function deleteSkill(skillName, options = {}) {
|
|
|
333
333
|
default: false
|
|
334
334
|
});
|
|
335
335
|
if (!confirm) {
|
|
336
|
-
console.log(
|
|
336
|
+
console.log(ansis__default.yellow(` ${i18n.t("skills:message.deleteCancelled")}`));
|
|
337
337
|
return;
|
|
338
338
|
}
|
|
339
339
|
const success = removeSkill(skillName);
|
|
340
340
|
if (success) {
|
|
341
|
-
console.log(
|
|
341
|
+
console.log(ansis__default.green(` \u2713 ${i18n.t("skills:message.skillDeleted", { name: skill.name[options.lang || "en"] })}`));
|
|
342
342
|
} else {
|
|
343
|
-
console.error(
|
|
343
|
+
console.error(ansis__default.red(` ${i18n.t("skills:error.deleteFailed")}`));
|
|
344
344
|
}
|
|
345
345
|
} catch (error) {
|
|
346
|
-
console.error(
|
|
346
|
+
console.error(ansis__default.red(`
|
|
347
347
|
${i18n.t("skills:error.deleteFailed")}: ${error}`));
|
|
348
348
|
throw error;
|
|
349
349
|
}
|
|
@@ -351,9 +351,9 @@ async function deleteSkill(skillName, options = {}) {
|
|
|
351
351
|
async function skillsMenu(options = {}) {
|
|
352
352
|
while (true) {
|
|
353
353
|
console.log("");
|
|
354
|
-
console.log(
|
|
355
|
-
console.log(
|
|
356
|
-
console.log(
|
|
354
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
355
|
+
console.log(ansis__default.bold.cyan(` ${i18n.t("skills:menu.title")}`));
|
|
356
|
+
console.log(ansis__default.bold.cyan("\u2501".repeat(60)));
|
|
357
357
|
console.log("");
|
|
358
358
|
const { action } = await inquirer.prompt({
|
|
359
359
|
type: "list",
|
|
@@ -439,7 +439,7 @@ async function skillsMenu(options = {}) {
|
|
|
439
439
|
}
|
|
440
440
|
}
|
|
441
441
|
} catch (error) {
|
|
442
|
-
console.error(
|
|
442
|
+
console.error(ansis__default.red(`
|
|
443
443
|
${i18n.t("common.error")}: ${error}`));
|
|
444
444
|
}
|
|
445
445
|
await inquirer.prompt({
|
|
@@ -514,7 +514,7 @@ This is a custom skill template. Please describe the purpose and functionality o
|
|
|
514
514
|
`;
|
|
515
515
|
}
|
|
516
516
|
async function createBatchSkillsInteractive(_options) {
|
|
517
|
-
console.log(
|
|
517
|
+
console.log(ansis__default.bold(` ${i18n.t("skills:batch.title")}`));
|
|
518
518
|
console.log("");
|
|
519
519
|
const categories = getBatchCategories();
|
|
520
520
|
const answers = await inquirer.prompt([
|
|
@@ -530,11 +530,11 @@ async function createBatchSkillsInteractive(_options) {
|
|
|
530
530
|
}
|
|
531
531
|
]);
|
|
532
532
|
if (answers.categories.length === 0) {
|
|
533
|
-
console.log(
|
|
533
|
+
console.log(ansis__default.yellow(` ${i18n.t("skills:batch.noneSelected")}`));
|
|
534
534
|
return;
|
|
535
535
|
}
|
|
536
536
|
console.log("");
|
|
537
|
-
console.log(
|
|
537
|
+
console.log(ansis__default.dim(` ${i18n.t("skills:batch.creating")}...`));
|
|
538
538
|
console.log("");
|
|
539
539
|
const results = createBatchSkills({
|
|
540
540
|
lang: answers.categories.includes("typescript") ? "typescript" : answers.categories.includes("python") ? "python" : void 0,
|
|
@@ -543,9 +543,9 @@ async function createBatchSkillsInteractive(_options) {
|
|
|
543
543
|
});
|
|
544
544
|
const succeeded = results.filter((r) => r.success).length;
|
|
545
545
|
const failed = results.filter((r) => !r.success).length;
|
|
546
|
-
console.log(
|
|
546
|
+
console.log(ansis__default.green(` \u2713 ${i18n.t("skills:batch.created", { count: succeeded })}`));
|
|
547
547
|
if (failed > 0) {
|
|
548
|
-
console.log(
|
|
548
|
+
console.log(ansis__default.red(` \u2717 ${i18n.t("skills:batch.failed", { count: failed })}`));
|
|
549
549
|
}
|
|
550
550
|
console.log("");
|
|
551
551
|
}
|
package/dist/chunks/team.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
2
|
-
import
|
|
2
|
+
import ansis__default from 'ansis';
|
|
3
3
|
import inquirer from 'inquirer';
|
|
4
4
|
import { join } from 'pathe';
|
|
5
5
|
import { i18n } from './index2.mjs';
|
|
@@ -29,23 +29,23 @@ async function teamInit() {
|
|
|
29
29
|
sharedSettings: {}
|
|
30
30
|
};
|
|
31
31
|
writeFileAtomic(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
32
|
-
console.log(
|
|
32
|
+
console.log(ansis__default.green(`\u2714 ${i18n.t("team:teamInitialized")}: ${name}`));
|
|
33
33
|
}
|
|
34
34
|
async function teamShare() {
|
|
35
35
|
if (!existsSync(CONFIG_FILE)) {
|
|
36
|
-
console.log(
|
|
36
|
+
console.log(ansis__default.yellow(i18n.t("team:noTeamConfig")));
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
39
|
const config = JSON.parse(readFileSync(CONFIG_FILE, "utf-8"));
|
|
40
|
-
console.log(
|
|
40
|
+
console.log(ansis__default.green(i18n.t("team:shareConfig")));
|
|
41
41
|
console.log(JSON.stringify(config, null, 2));
|
|
42
42
|
}
|
|
43
43
|
async function teamSync() {
|
|
44
44
|
if (!existsSync(CONFIG_FILE)) {
|
|
45
|
-
console.log(
|
|
45
|
+
console.log(ansis__default.yellow(i18n.t("team:noTeamConfig")));
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
console.log(
|
|
48
|
+
console.log(ansis__default.green(`\u2714 ${i18n.t("team:syncComplete")}`));
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
export { teamInit, teamShare, teamSync };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ansis__default from 'ansis';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { ZCF_CONFIG_FILE, DEFAULT_CODE_TOOL_TYPE, isCodeToolType } from './constants.mjs';
|
|
4
4
|
import { i18n, ensureI18nInitialized } from './index2.mjs';
|
|
5
5
|
import { readZcfConfig } from './ccjk-config.mjs';
|
|
6
6
|
import { r as resolveCodeType } from '../shared/ccjk.CUdzQluX.mjs';
|
|
7
|
-
import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.
|
|
7
|
+
import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.BiJujy5w.mjs';
|
|
8
8
|
import { p as promptBoolean, a as addNumbersToChoices } from '../shared/ccjk.DhBeLRzf.mjs';
|
|
9
9
|
import { homedir } from 'node:os';
|
|
10
10
|
import { pathExists } from 'fs-extra';
|
|
@@ -538,7 +538,7 @@ async function uninstall(options = {}) {
|
|
|
538
538
|
codeType = await resolveCodeType(options.codeType);
|
|
539
539
|
} catch (error) {
|
|
540
540
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
541
|
-
console.error(
|
|
541
|
+
console.error(ansis__default.red(`${i18n.t("errors:generalError")} ${errorMessage}`));
|
|
542
542
|
const config = readZcfConfig();
|
|
543
543
|
codeType = config?.codeToolType && isCodeToolType(config.codeToolType) ? config.codeToolType : DEFAULT_CODE_TOOL_TYPE;
|
|
544
544
|
}
|
|
@@ -575,7 +575,7 @@ async function uninstall(options = {}) {
|
|
|
575
575
|
}
|
|
576
576
|
}
|
|
577
577
|
async function showInteractiveUninstall(uninstaller) {
|
|
578
|
-
console.log(
|
|
578
|
+
console.log(ansis__default.green.bold(i18n.t("uninstall:title")));
|
|
579
579
|
console.log("");
|
|
580
580
|
const { mainChoice } = await inquirer.prompt({
|
|
581
581
|
type: "list",
|
|
@@ -583,19 +583,19 @@ async function showInteractiveUninstall(uninstaller) {
|
|
|
583
583
|
message: i18n.t("uninstall:selectMainOption"),
|
|
584
584
|
choices: addNumbersToChoices([
|
|
585
585
|
{
|
|
586
|
-
name: `${i18n.t("uninstall:completeUninstall")} - ${
|
|
586
|
+
name: `${i18n.t("uninstall:completeUninstall")} - ${ansis__default.gray(i18n.t("uninstall:completeUninstallDesc"))}`,
|
|
587
587
|
value: "complete",
|
|
588
588
|
short: i18n.t("uninstall:completeUninstall")
|
|
589
589
|
},
|
|
590
590
|
{
|
|
591
|
-
name: `${i18n.t("uninstall:customUninstall")} - ${
|
|
591
|
+
name: `${i18n.t("uninstall:customUninstall")} - ${ansis__default.gray(i18n.t("uninstall:customUninstallDesc"))}`,
|
|
592
592
|
value: "custom",
|
|
593
593
|
short: i18n.t("uninstall:customUninstall")
|
|
594
594
|
}
|
|
595
595
|
])
|
|
596
596
|
});
|
|
597
597
|
if (!mainChoice) {
|
|
598
|
-
console.log(
|
|
598
|
+
console.log(ansis__default.yellow(i18n.t("common:cancelled")));
|
|
599
599
|
return;
|
|
600
600
|
}
|
|
601
601
|
if (mainChoice === "complete") {
|
|
@@ -606,7 +606,7 @@ async function showInteractiveUninstall(uninstaller) {
|
|
|
606
606
|
}
|
|
607
607
|
async function showCustomUninstallMenu(uninstaller) {
|
|
608
608
|
console.log("");
|
|
609
|
-
console.log(
|
|
609
|
+
console.log(ansis__default.green(i18n.t("uninstall:selectCustomItems")));
|
|
610
610
|
const { customItems } = await inquirer.prompt({
|
|
611
611
|
type: "checkbox",
|
|
612
612
|
name: "customItems",
|
|
@@ -665,32 +665,32 @@ async function showCustomUninstallMenu(uninstaller) {
|
|
|
665
665
|
}
|
|
666
666
|
});
|
|
667
667
|
if (!customItems || customItems.length === 0) {
|
|
668
|
-
console.log(
|
|
668
|
+
console.log(ansis__default.yellow(i18n.t("common:cancelled")));
|
|
669
669
|
return;
|
|
670
670
|
}
|
|
671
671
|
await executeCustomUninstall(uninstaller, customItems);
|
|
672
672
|
}
|
|
673
673
|
async function executeCompleteUninstall(uninstaller) {
|
|
674
674
|
console.log("");
|
|
675
|
-
console.log(
|
|
676
|
-
console.log(
|
|
675
|
+
console.log(ansis__default.red.bold(i18n.t("uninstall:executingComplete")));
|
|
676
|
+
console.log(ansis__default.yellow(i18n.t("uninstall:completeWarning")));
|
|
677
677
|
const confirm = await promptBoolean({
|
|
678
678
|
message: i18n.t("uninstall:confirmComplete"),
|
|
679
679
|
defaultValue: false
|
|
680
680
|
});
|
|
681
681
|
if (!confirm) {
|
|
682
|
-
console.log(
|
|
682
|
+
console.log(ansis__default.yellow(i18n.t("common:cancelled")));
|
|
683
683
|
return;
|
|
684
684
|
}
|
|
685
685
|
console.log("");
|
|
686
|
-
console.log(
|
|
686
|
+
console.log(ansis__default.green(i18n.t("uninstall:processingComplete")));
|
|
687
687
|
const result = await uninstaller.completeUninstall();
|
|
688
688
|
displayUninstallResult("complete", [result]);
|
|
689
689
|
}
|
|
690
690
|
async function executeCustomUninstall(uninstaller, items) {
|
|
691
691
|
console.log("");
|
|
692
|
-
console.log(
|
|
693
|
-
console.log(
|
|
692
|
+
console.log(ansis__default.green(i18n.t("uninstall:executingCustom")));
|
|
693
|
+
console.log(ansis__default.gray(i18n.t("uninstall:selectedItems")));
|
|
694
694
|
items.forEach((item) => {
|
|
695
695
|
console.log(` \u2022 ${i18n.t(`uninstall:${item}`)}`);
|
|
696
696
|
});
|
|
@@ -699,17 +699,17 @@ async function executeCustomUninstall(uninstaller, items) {
|
|
|
699
699
|
defaultValue: false
|
|
700
700
|
});
|
|
701
701
|
if (!confirm) {
|
|
702
|
-
console.log(
|
|
702
|
+
console.log(ansis__default.yellow(i18n.t("common:cancelled")));
|
|
703
703
|
return;
|
|
704
704
|
}
|
|
705
705
|
console.log("");
|
|
706
|
-
console.log(
|
|
706
|
+
console.log(ansis__default.green(i18n.t("uninstall:processingCustom")));
|
|
707
707
|
const results = await uninstaller.customUninstall(items);
|
|
708
708
|
displayUninstallResult("custom", results);
|
|
709
709
|
}
|
|
710
710
|
function displayUninstallResult(mode, results) {
|
|
711
711
|
console.log("");
|
|
712
|
-
console.log(
|
|
712
|
+
console.log(ansis__default.green("\u2500".repeat(50)));
|
|
713
713
|
let totalSuccess = 0;
|
|
714
714
|
let totalErrors = 0;
|
|
715
715
|
let totalWarnings = 0;
|
|
@@ -718,64 +718,64 @@ function displayUninstallResult(mode, results) {
|
|
|
718
718
|
totalSuccess++;
|
|
719
719
|
}
|
|
720
720
|
if (result.removed && result.removed.length > 0) {
|
|
721
|
-
console.log(
|
|
721
|
+
console.log(ansis__default.green(`\u{1F5D1}\uFE0F ${i18n.t("uninstall:movedToTrash")}:`));
|
|
722
722
|
result.removed.forEach((item) => {
|
|
723
|
-
console.log(
|
|
723
|
+
console.log(ansis__default.gray(` \u2022 ${item}`));
|
|
724
724
|
});
|
|
725
725
|
}
|
|
726
726
|
if (result.removedConfigs && result.removedConfigs.length > 0) {
|
|
727
|
-
console.log(
|
|
727
|
+
console.log(ansis__default.green(`\u2714 ${i18n.t("uninstall:removedConfigs")}:`));
|
|
728
728
|
result.removedConfigs.forEach((item) => {
|
|
729
|
-
console.log(
|
|
729
|
+
console.log(ansis__default.gray(` \u2022 ${item}`));
|
|
730
730
|
});
|
|
731
731
|
}
|
|
732
732
|
if (result.errors && result.errors.length > 0) {
|
|
733
733
|
totalErrors += result.errors.length;
|
|
734
|
-
console.log(
|
|
734
|
+
console.log(ansis__default.red(`\u2716 ${i18n.t("uninstall:errors")}:`));
|
|
735
735
|
result.errors.forEach((error) => {
|
|
736
|
-
console.log(
|
|
736
|
+
console.log(ansis__default.red(` \u2022 ${error}`));
|
|
737
737
|
});
|
|
738
738
|
}
|
|
739
739
|
if (result.warnings && result.warnings.length > 0) {
|
|
740
740
|
totalWarnings += result.warnings.length;
|
|
741
|
-
console.log(
|
|
741
|
+
console.log(ansis__default.yellow(`\u26A0 ${i18n.t("uninstall:warnings")}:`));
|
|
742
742
|
result.warnings.forEach((warning) => {
|
|
743
|
-
console.log(
|
|
743
|
+
console.log(ansis__default.yellow(` \u2022 ${warning}`));
|
|
744
744
|
});
|
|
745
745
|
}
|
|
746
746
|
});
|
|
747
747
|
const totalRemovedFiles = results.reduce((count, result) => count + (result.removed?.length || 0), 0);
|
|
748
748
|
const totalRemovedConfigs = results.reduce((count, result) => count + (result.removedConfigs?.length || 0), 0);
|
|
749
749
|
console.log("");
|
|
750
|
-
console.log(
|
|
750
|
+
console.log(ansis__default.green("\u2500".repeat(50)));
|
|
751
751
|
if (mode === "complete") {
|
|
752
752
|
if (totalErrors === 0) {
|
|
753
|
-
console.log(
|
|
753
|
+
console.log(ansis__default.green.bold(`\u2714 ${i18n.t("uninstall:completeSuccess")}`));
|
|
754
754
|
} else {
|
|
755
|
-
console.log(
|
|
755
|
+
console.log(ansis__default.yellow.bold(`\u26A0 ${i18n.t("uninstall:completePartialSuccess")}`));
|
|
756
756
|
}
|
|
757
757
|
} else {
|
|
758
758
|
if (totalRemovedFiles > 0 && totalRemovedConfigs > 0) {
|
|
759
|
-
console.log(
|
|
759
|
+
console.log(ansis__default.green.bold(`\u2714 ${i18n.t("uninstall:customSuccessBoth", {
|
|
760
760
|
fileCount: totalRemovedFiles,
|
|
761
761
|
configCount: totalRemovedConfigs
|
|
762
762
|
})}`));
|
|
763
763
|
} else if (totalRemovedFiles > 0) {
|
|
764
|
-
console.log(
|
|
764
|
+
console.log(ansis__default.green.bold(`\u2714 ${i18n.t("uninstall:customSuccessFiles", {
|
|
765
765
|
count: totalRemovedFiles
|
|
766
766
|
})}`));
|
|
767
767
|
} else if (totalRemovedConfigs > 0) {
|
|
768
|
-
console.log(
|
|
768
|
+
console.log(ansis__default.green.bold(`\u2714 ${i18n.t("uninstall:customSuccessConfigs", {
|
|
769
769
|
count: totalRemovedConfigs
|
|
770
770
|
})}`));
|
|
771
771
|
} else {
|
|
772
|
-
console.log(
|
|
772
|
+
console.log(ansis__default.green.bold(`\u2714 ${i18n.t("uninstall:customSuccess", { count: totalSuccess })}`));
|
|
773
773
|
}
|
|
774
774
|
if (totalErrors > 0) {
|
|
775
|
-
console.log(
|
|
775
|
+
console.log(ansis__default.red(`\u2716 ${i18n.t("uninstall:errorsCount", { count: totalErrors })}`));
|
|
776
776
|
}
|
|
777
777
|
if (totalWarnings > 0) {
|
|
778
|
-
console.log(
|
|
778
|
+
console.log(ansis__default.yellow(`\u26A0 ${i18n.t("uninstall:warningsCount", { count: totalWarnings })}`));
|
|
779
779
|
}
|
|
780
780
|
}
|
|
781
781
|
console.log("");
|