skill4agent 1.0.9 → 1.0.11

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.
Files changed (42) hide show
  1. package/README.md +49 -4
  2. package/README_CN.md +49 -4
  3. package/bin/forward.js +23 -0
  4. package/package.json +12 -3
  5. package/assets/skill4agent_en.png +0 -0
  6. package/assets/skill4agent_zh.png +0 -0
  7. package/bin/skill4agent.js +0 -3
  8. package/dist/api.d.ts +0 -31
  9. package/dist/api.d.ts.map +0 -1
  10. package/dist/api.js +0 -83
  11. package/dist/api.js.map +0 -1
  12. package/dist/commands/add.d.ts +0 -2
  13. package/dist/commands/add.d.ts.map +0 -1
  14. package/dist/commands/add.js +0 -300
  15. package/dist/commands/add.js.map +0 -1
  16. package/dist/commands/install.d.ts +0 -11
  17. package/dist/commands/install.d.ts.map +0 -1
  18. package/dist/commands/install.js +0 -188
  19. package/dist/commands/install.js.map +0 -1
  20. package/dist/commands/list.d.ts +0 -5
  21. package/dist/commands/list.d.ts.map +0 -1
  22. package/dist/commands/list.js +0 -79
  23. package/dist/commands/list.js.map +0 -1
  24. package/dist/commands/uninstall.d.ts +0 -7
  25. package/dist/commands/uninstall.d.ts.map +0 -1
  26. package/dist/commands/uninstall.js +0 -122
  27. package/dist/commands/uninstall.js.map +0 -1
  28. package/dist/index-manager.d.ts +0 -35
  29. package/dist/index-manager.d.ts.map +0 -1
  30. package/dist/index-manager.js +0 -192
  31. package/dist/index-manager.js.map +0 -1
  32. package/dist/main.d.ts +0 -2
  33. package/dist/main.d.ts.map +0 -1
  34. package/dist/main.js.map +0 -1
  35. package/dist/tools.d.ts +0 -16
  36. package/dist/tools.d.ts.map +0 -1
  37. package/dist/tools.js +0 -106
  38. package/dist/tools.js.map +0 -1
  39. package/dist/utils.d.ts +0 -4
  40. package/dist/utils.d.ts.map +0 -1
  41. package/dist/utils.js +0 -30
  42. package/dist/utils.js.map +0 -1
@@ -1,11 +0,0 @@
1
- interface InstallOptions {
2
- topSource: string;
3
- skillName: string;
4
- type: 'original' | 'translated';
5
- global: boolean;
6
- dirs: string[];
7
- method: 'symlink' | 'copy';
8
- }
9
- export declare function install(options: InstallOptions): Promise<void>;
10
- export {};
11
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B;AA4BD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoLpE"}
@@ -1,188 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.install = install;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const fs_extra_1 = __importDefault(require("fs-extra"));
9
- const os_1 = __importDefault(require("os"));
10
- const path_1 = __importDefault(require("path"));
11
- const utils_1 = require("../utils");
12
- const tools_1 = require("../tools");
13
- const api_1 = require("../api");
14
- const index_manager_1 = require("../index-manager");
15
- function getAgentNameFromPath(dirPath) {
16
- const name = path_1.default.basename(dirPath);
17
- return name.charAt(0).toUpperCase() + name.slice(1);
18
- }
19
- function getAgentDisplayName(dirPath) {
20
- const dirname = path_1.default.basename(path_1.default.dirname(dirPath));
21
- if (dirname === '.agents')
22
- return 'Universal';
23
- return dirname.charAt(0).toUpperCase() + dirname.slice(1);
24
- }
25
- function displaySummary(options, skillInfo, typeDisplay, allDirs) {
26
- const dirNames = allDirs.map(d => getAgentDisplayName(d));
27
- const dirCount = allDirs.length;
28
- console.log(chalk_1.default.blue('\n📊 Installation Summary'));
29
- console.log(chalk_1.default.gray('─'.repeat(50)));
30
- console.log(`Skill: ${chalk_1.default.white(skillInfo.name)}`);
31
- console.log(`Source: ${options.topSource}`);
32
- console.log(`Type: ${typeDisplay}`);
33
- console.log(`Scope: ${options.global ? 'Global' : 'Project'}`);
34
- console.log(`Dirs (${dirCount}): ${dirNames.join(', ')}`);
35
- console.log(`Method: ${options.method === 'symlink' ? 'Symlink (Recommended)' : 'Copy'}`);
36
- console.log(chalk_1.default.gray('─'.repeat(50)));
37
- }
38
- async function install(options) {
39
- const { topSource, skillName, type, global, dirs, method } = options;
40
- console.log(chalk_1.default.blue(`\n📦 Installing skill: ${skillName}`));
41
- console.log(chalk_1.default.gray(` Source: ${topSource}\n`));
42
- let result;
43
- try {
44
- result = await (0, api_1.getSkillInfo)(topSource, skillName);
45
- }
46
- catch (error) {
47
- console.log(chalk_1.default.red(`\n❌ Skill "${skillName}" not found in source "${topSource}".`));
48
- console.log(chalk_1.default.gray(` Please check the source repository and skill name.\n`));
49
- return;
50
- }
51
- if (!result.skill) {
52
- console.log(chalk_1.default.red(`\n❌ Skill "${skillName}" not found in source "${topSource}".`));
53
- console.log(chalk_1.default.gray(` Please check the source repository and skill name.\n`));
54
- return;
55
- }
56
- const skillInfo = result.skill;
57
- console.log(chalk_1.default.blue(`\n📦 Skill: ${chalk_1.default.white(skillInfo.name)}`));
58
- console.log(chalk_1.default.gray(` Category: ${skillInfo.category?.nameEn || 'N/A'} | Installs: ${skillInfo.totalInstalls}`));
59
- if (skillInfo.tags) {
60
- console.log(chalk_1.default.gray(` Tags: ${skillInfo.tags}`));
61
- }
62
- if (!skillInfo.hasScript) {
63
- console.log(chalk_1.default.gray(` 📜 Scripts: No scripts`));
64
- }
65
- else {
66
- const statusText = skillInfo.scriptCheckResult === 'safe' ? '✅ Check passed' : '⚠️ Needs attention';
67
- console.log(chalk_1.default.gray(` 📜 Scripts: ${skillInfo.scriptCount} script(s) - ${statusText}`));
68
- }
69
- console.log(chalk_1.default.gray(` ${skillInfo.hasTranslation ? '✅' : '❌'} Translation available\n`));
70
- let finalType = type;
71
- const isOriginalEnglish = skillInfo.originalLanguage === 'en';
72
- if (type === 'translated' && !skillInfo.hasTranslation) {
73
- console.log(chalk_1.default.yellow(`⚠️ Translation not available. Using original (${isOriginalEnglish ? 'English' : 'Chinese'}) version.\n`));
74
- finalType = 'original';
75
- }
76
- const typeDisplay = finalType === 'original'
77
- ? (isOriginalEnglish ? 'English' : 'Chinese')
78
- : (isOriginalEnglish ? 'Chinese' : 'English');
79
- console.log(chalk_1.default.gray(` Type: ${typeDisplay}\n`));
80
- const isGlobal = global;
81
- const basePath = isGlobal ? os_1.default.homedir() : process.cwd();
82
- const allDirs = [tools_1.UNIVERSAL_PATH, ...dirs.map((d) => d.endsWith('/skills') ? d : `${d}/skills`)];
83
- const dirNames = allDirs.map(d => getAgentDisplayName(d));
84
- console.log(chalk_1.default.green(`✓ Directories: ${dirNames.join(', ')}`));
85
- if (allDirs.length === 0) {
86
- console.log(chalk_1.default.yellow('\n⚠️ No directories selected. Installation cancelled.'));
87
- return;
88
- }
89
- displaySummary({ topSource, skillName, type: finalType, global, dirs, method }, skillInfo, typeDisplay, allDirs);
90
- let tempZip;
91
- try {
92
- tempZip = await (0, api_1.downloadSkill)(topSource, skillName, finalType);
93
- }
94
- catch (error) {
95
- if (error.response?.status === 404) {
96
- console.log(chalk_1.default.red(`\n❌ Failed to download skill "${skillName}".`));
97
- console.log(chalk_1.default.gray(` The skill may not exist or the download link is invalid.\n`));
98
- return;
99
- }
100
- console.log(chalk_1.default.red(`\n❌ Download failed: ${error.message}`));
101
- return;
102
- }
103
- if (method === 'symlink') {
104
- const universalFullPath = path_1.default.join(basePath, tools_1.UNIVERSAL_PATH);
105
- fs_extra_1.default.ensureDirSync(universalFullPath);
106
- const skillDir = path_1.default.join(universalFullPath, skillName);
107
- if (fs_extra_1.default.existsSync(skillDir)) {
108
- console.log(chalk_1.default.yellow(`\n⚠️ Skill "${skillName}" already exists. Overwriting...`));
109
- fs_extra_1.default.removeSync(skillDir);
110
- }
111
- await (0, utils_1.extractZip)(tempZip, universalFullPath);
112
- fs_extra_1.default.removeSync(tempZip);
113
- console.log(chalk_1.default.green(`✅ Installed to: ${skillDir}`));
114
- for (const dir of dirs) {
115
- const fullDir = dir.endsWith('/skills') ? dir : `${dir}/skills`;
116
- const dirPath = path_1.default.join(basePath, fullDir);
117
- fs_extra_1.default.ensureDirSync(dirPath);
118
- const destDir = path_1.default.join(dirPath, skillName);
119
- if (fs_extra_1.default.existsSync(destDir)) {
120
- fs_extra_1.default.removeSync(destDir);
121
- }
122
- if (isGlobal) {
123
- fs_extra_1.default.symlinkSync(skillDir, destDir);
124
- }
125
- else {
126
- const relativePath = path_1.default.relative(dirPath, skillDir);
127
- fs_extra_1.default.symlinkSync(relativePath, destDir);
128
- }
129
- console.log(chalk_1.default.green(`✅ Linked to: ${destDir}`));
130
- }
131
- }
132
- else {
133
- const universalFullPath = path_1.default.join(basePath, tools_1.UNIVERSAL_PATH);
134
- const skillDir = path_1.default.join(universalFullPath, skillName);
135
- fs_extra_1.default.ensureDirSync(universalFullPath);
136
- if (fs_extra_1.default.existsSync(skillDir)) {
137
- fs_extra_1.default.removeSync(skillDir);
138
- }
139
- await (0, utils_1.extractZip)(tempZip, universalFullPath);
140
- fs_extra_1.default.removeSync(tempZip);
141
- console.log(chalk_1.default.green(`✅ Copied to: ${skillDir}`));
142
- for (const dir of dirs) {
143
- const fullDir = dir.endsWith('/skills') ? dir : `${dir}/skills`;
144
- const dirPath = path_1.default.join(basePath, fullDir);
145
- fs_extra_1.default.ensureDirSync(dirPath);
146
- const destDir = path_1.default.join(dirPath, skillName);
147
- if (fs_extra_1.default.existsSync(destDir)) {
148
- fs_extra_1.default.removeSync(destDir);
149
- }
150
- fs_extra_1.default.copySync(skillDir, destDir);
151
- console.log(chalk_1.default.green(`✅ Copied to: ${destDir}`));
152
- }
153
- }
154
- // Update installation count
155
- await (0, api_1.incrementInstallCount)(topSource, skillName);
156
- // Record installation info to index
157
- const installScope = isGlobal ? 'global' : (0, index_manager_1.getCurrentScope)();
158
- const skillDir = path_1.default.join(basePath, tools_1.UNIVERSAL_PATH, skillName);
159
- // Collect symlink and copy directories
160
- const symlinkDirs = [];
161
- const copyDirs = [];
162
- for (const dir of dirs) {
163
- const fullDir = dir.endsWith('/skills') ? dir : `${dir}/skills`;
164
- const dirPath = path_1.default.join(basePath, fullDir);
165
- const destDir = path_1.default.join(dirPath, skillName);
166
- if (method === 'symlink') {
167
- symlinkDirs.push(destDir);
168
- }
169
- else {
170
- copyDirs.push(destDir);
171
- }
172
- }
173
- const metadata = (0, index_manager_1.createSkillMetadata)(skillName, topSource, installScope);
174
- (0, index_manager_1.writeSkillMetadata)(skillDir, metadata);
175
- (0, index_manager_1.addOrUpdateSkill)({
176
- name: skillName,
177
- source: topSource,
178
- installedAt: metadata.installedAt,
179
- scope: installScope,
180
- locations: {
181
- universal: skillDir,
182
- symlink: symlinkDirs,
183
- copy: copyDirs,
184
- },
185
- });
186
- console.log(chalk_1.default.green('\n🎉 Installation completed!\n'));
187
- }
188
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare function list(): Promise<void>;
2
- export declare function search(query: string): Promise<void>;
3
- export declare function update(skillName?: string): Promise<void>;
4
- export declare function uninstall(skillName: string): Promise<void>;
5
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AA8BA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA+C1C;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAED,wBAAsB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE"}
@@ -1,79 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.list = list;
7
- exports.search = search;
8
- exports.update = update;
9
- exports.uninstall = uninstall;
10
- const chalk_1 = __importDefault(require("chalk"));
11
- const index_manager_1 = require("../index-manager");
12
- function formatDate(dateStr) {
13
- const date = new Date(dateStr);
14
- return date.toLocaleDateString('zh-CN', {
15
- year: 'numeric',
16
- month: '2-digit',
17
- day: '2-digit',
18
- });
19
- }
20
- function truncate(str, maxLength) {
21
- if (str.length <= maxLength)
22
- return str;
23
- return str.slice(0, maxLength - 3) + '...';
24
- }
25
- function getScopeDisplay(scopes) {
26
- const hasGlobal = scopes.some(s => (0, index_manager_1.isGlobalScope)(s.scope));
27
- const hasProject = scopes.some(s => !(0, index_manager_1.isGlobalScope)(s.scope));
28
- if (hasGlobal && hasProject) {
29
- return 'Global,Project';
30
- }
31
- else if (hasGlobal) {
32
- return 'Global';
33
- }
34
- else {
35
- return 'Project';
36
- }
37
- }
38
- async function list() {
39
- const allSkills = (0, index_manager_1.getAllSkills)();
40
- if (allSkills.length === 0) {
41
- console.log(chalk_1.default.gray('\nNo installed skills found.\n'));
42
- console.log(chalk_1.default.gray('Use "npx skill4agent add <source> <skill>" to install.\n'));
43
- return;
44
- }
45
- // Sort by name
46
- allSkills.sort((a, b) => a.name.localeCompare(b.name));
47
- // Calculate total installations
48
- const totalInstalls = allSkills.reduce((sum, skill) => sum + skill.scopes.length, 0);
49
- console.log(chalk_1.default.blue(`\n📦 Installed Skills (${allSkills.length} skills, ${totalInstalls} installs)`));
50
- console.log(chalk_1.default.gray('─'.repeat(80)));
51
- // Table header
52
- const nameWidth = 25;
53
- const sourceWidth = 25;
54
- const scopeWidth = 15;
55
- console.log(chalk_1.default.bold(`${'Name'.padEnd(nameWidth)} ${'Source'.padEnd(sourceWidth)} ${'Scope'.padEnd(scopeWidth)} Installed`));
56
- console.log(chalk_1.default.gray('─'.repeat(80)));
57
- // Data rows
58
- for (const { name, scopes } of allSkills) {
59
- // Sort by time descending, get the latest installation
60
- const latestScope = [...scopes].sort((a, b) => new Date(b.installedAt).getTime() - new Date(a.installedAt).getTime())[0];
61
- const nameStr = truncate(name, nameWidth).padEnd(nameWidth);
62
- const sourceStr = truncate(latestScope.source, sourceWidth).padEnd(sourceWidth);
63
- const scopeStr = getScopeDisplay(scopes).padEnd(scopeWidth);
64
- const dateStr = formatDate(latestScope.installedAt);
65
- console.log(`${nameStr} ${sourceStr} ${scopeStr} ${dateStr}`);
66
- }
67
- console.log(chalk_1.default.gray('─'.repeat(80)));
68
- console.log(chalk_1.default.gray(`\nTotal: ${allSkills.length} skill${allSkills.length > 1 ? 's' : ''} (${totalInstalls} install${totalInstalls > 1 ? 's' : ''})\n`));
69
- }
70
- async function search(query) {
71
- console.log('search command', query);
72
- }
73
- async function update(skillName) {
74
- console.log('update command', skillName);
75
- }
76
- async function uninstall(skillName) {
77
- console.log('uninstall command', skillName);
78
- }
79
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- interface UninstallOptions {
2
- global?: boolean;
3
- project?: boolean;
4
- }
5
- export declare function uninstall(skillName: string, options?: UninstallOptions): Promise<void>;
6
- export {};
7
- //# sourceMappingURL=uninstall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAKA,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwCD,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFhG"}
@@ -1,122 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.uninstall = uninstall;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const fs_extra_1 = __importDefault(require("fs-extra"));
9
- const inquirer_1 = __importDefault(require("inquirer"));
10
- const index_manager_1 = require("../index-manager");
11
- function removeDirectory(dirPath) {
12
- try {
13
- if (fs_extra_1.default.existsSync(dirPath)) {
14
- fs_extra_1.default.removeSync(dirPath);
15
- console.log(chalk_1.default.green(`✅ Removed: ${dirPath}`));
16
- return true;
17
- }
18
- }
19
- catch (error) {
20
- console.log(chalk_1.default.red(`❌ Failed to remove: ${dirPath}`));
21
- }
22
- return false;
23
- }
24
- function uninstallScope(skill) {
25
- let removedCount = 0;
26
- // Remove symlink directories
27
- for (const linkPath of skill.locations.symlink) {
28
- if (removeDirectory(linkPath)) {
29
- removedCount++;
30
- }
31
- }
32
- // Remove copy directories
33
- for (const copyPath of skill.locations.copy) {
34
- if (removeDirectory(copyPath)) {
35
- removedCount++;
36
- }
37
- }
38
- // Remove main directory
39
- if (removeDirectory(skill.locations.universal)) {
40
- removedCount++;
41
- }
42
- return removedCount;
43
- }
44
- async function uninstall(skillName, options = {}) {
45
- const scopes = (0, index_manager_1.getSkillScopes)(skillName);
46
- if (scopes.length === 0) {
47
- console.log(chalk_1.default.red(`\n❌ Skill "${skillName}" not found in installed skills.`));
48
- console.log(chalk_1.default.gray(' Use "skill4agent list" to see installed skills.\n'));
49
- return;
50
- }
51
- // Determine the scope to uninstall
52
- let targetScopes = [];
53
- if (options.global && options.project) {
54
- console.log(chalk_1.default.red('\n❌ Cannot use both --global and --project at the same time.\n'));
55
- return;
56
- }
57
- if (options.global) {
58
- // Only uninstall global
59
- targetScopes = scopes.filter(s => (0, index_manager_1.isGlobalScope)(s.scope));
60
- if (targetScopes.length === 0) {
61
- console.log(chalk_1.default.yellow(`\n⚠️ "${skillName}" is not installed globally.`));
62
- console.log(chalk_1.default.gray(` It's only installed in projects.\n`));
63
- return;
64
- }
65
- }
66
- else if (options.project) {
67
- // Uninstall all projects (non-global)
68
- targetScopes = scopes.filter(s => !(0, index_manager_1.isGlobalScope)(s.scope));
69
- if (targetScopes.length === 0) {
70
- console.log(chalk_1.default.yellow(`\n⚠️ "${skillName}" is not installed in any project.`));
71
- console.log(chalk_1.default.gray(` It's only installed globally.\n`));
72
- return;
73
- }
74
- }
75
- else {
76
- // Default: uninstall all
77
- targetScopes = scopes;
78
- }
79
- console.log(chalk_1.default.blue(`\n📦 Uninstalling skill: ${skillName}`));
80
- // Show scopes to be uninstalled
81
- console.log(chalk_1.default.yellow('\n⚠️ This will remove the following installations:'));
82
- for (const scope of targetScopes) {
83
- const scopeType = (0, index_manager_1.isGlobalScope)(scope.scope) ? 'Global' : `Project (${scope.scope})`;
84
- console.log(chalk_1.default.gray(` [${scopeType}]`));
85
- console.log(chalk_1.default.gray(` ${scope.locations.universal}`));
86
- for (const link of scope.locations.symlink) {
87
- console.log(chalk_1.default.gray(` ${link} (symlink)`));
88
- }
89
- for (const copy of scope.locations.copy) {
90
- console.log(chalk_1.default.gray(` ${copy} (copy)`));
91
- }
92
- }
93
- console.log();
94
- const { confirm } = await inquirer_1.default.prompt({
95
- type: 'confirm',
96
- name: 'confirm',
97
- message: `Are you sure you want to uninstall ${targetScopes.length} installation${targetScopes.length > 1 ? 's' : ''}?`,
98
- default: false,
99
- });
100
- if (!confirm) {
101
- console.log(chalk_1.default.yellow('\n⚠️ Uninstallation cancelled.\n'));
102
- return;
103
- }
104
- // Execute uninstall operation
105
- let totalRemoved = 0;
106
- for (const scope of targetScopes) {
107
- const removed = uninstallScope(scope);
108
- totalRemoved += removed;
109
- (0, index_manager_1.removeSkillByScope)(skillName, scope.scope);
110
- }
111
- // Check if there are remaining scopes
112
- const remainingScopes = (0, index_manager_1.getSkillScopes)(skillName);
113
- if (remainingScopes.length === 0) {
114
- console.log(chalk_1.default.green(`\n🎉 Successfully uninstalled "${skillName}" completely (${totalRemoved} item${totalRemoved > 1 ? 's' : ''} removed).\n`));
115
- }
116
- else {
117
- const remainingTypes = remainingScopes.map(s => (0, index_manager_1.isGlobalScope)(s.scope) ? 'Global' : 'Project').join(', ');
118
- console.log(chalk_1.default.green(`\n🎉 Uninstalled ${targetScopes.length} scope(s) (${totalRemoved} item${totalRemoved > 1 ? 's' : ''} removed).`));
119
- console.log(chalk_1.default.gray(` Remaining: ${remainingScopes.length} scope(s) (${remainingTypes})\n`));
120
- }
121
- }
122
- //# sourceMappingURL=uninstall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- export interface SkillLocation {
2
- universal: string;
3
- symlink: string[];
4
- copy: string[];
5
- }
6
- export interface InstalledSkill {
7
- name: string;
8
- source: string;
9
- installedAt: string;
10
- scope: string;
11
- locations: SkillLocation;
12
- }
13
- export interface SkillMetadata {
14
- name: string;
15
- source: string;
16
- installedAt: string;
17
- scope: string;
18
- }
19
- export declare function readIndex(): Record<string, InstalledSkill[]>;
20
- export declare function writeIndex(index: Record<string, InstalledSkill[]>): void;
21
- export declare function getSkillScopes(skillName: string): InstalledSkill[];
22
- export declare function getSkillByScope(skillName: string, scope: string): InstalledSkill | null;
23
- export declare function addOrUpdateSkill(skill: InstalledSkill): void;
24
- export declare function removeSkillByScope(skillName: string, scope: string): void;
25
- export declare function removeSkill(skillName: string): void;
26
- export declare function getAllSkills(): Array<{
27
- name: string;
28
- scopes: InstalledSkill[];
29
- }>;
30
- export declare function isGlobalScope(scope: string): boolean;
31
- export declare function getCurrentScope(): string;
32
- export declare function createSkillMetadata(skillName: string, source: string, scope: string): SkillMetadata;
33
- export declare function writeSkillMetadata(skillDir: string, metadata: SkillMetadata): void;
34
- export declare function readSkillMetadata(skillDir: string): SkillMetadata | null;
35
- //# sourceMappingURL=index-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AA8CD,wBAAgB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAyB5D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,CAGxE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAGlE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAGvF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CA8D5D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAezE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAGhF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,aAAa,CAOf;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGlF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUxE"}