@open-skills-hub/cli 1.0.0
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/commands/cache.d.ts +6 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +145 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +128 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +7 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +449 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/feedback.d.ts +6 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +137 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/get.d.ts +6 -0
- package/dist/commands/get.d.ts.map +1 -0
- package/dist/commands/get.js +122 -0
- package/dist/commands/get.js.map +1 -0
- package/dist/commands/index.d.ts +13 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/publish.d.ts +7 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +593 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/scan.d.ts +6 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +165 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/search.d.ts +6 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +80 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/validate.d.ts +7 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +328 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/package.json +51 -0
- package/src/commands/cache.ts +166 -0
- package/src/commands/config.ts +142 -0
- package/src/commands/create.ts +490 -0
- package/src/commands/feedback.ts +161 -0
- package/src/commands/get.ts +141 -0
- package/src/commands/index.ts +13 -0
- package/src/commands/publish.ts +688 -0
- package/src/commands/scan.ts +190 -0
- package/src/commands/search.ts +92 -0
- package/src/commands/validate.ts +391 -0
- package/src/index.ts +118 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,YAAY,SA2JtB,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub CLI - Cache Command
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import Table from 'cli-table3';
|
|
8
|
+
import { getStorage, getConfig, formatBytes } from '@open-skills-hub/core';
|
|
9
|
+
export const cacheCommand = new Command('cache')
|
|
10
|
+
.description('Manage local cache')
|
|
11
|
+
.addCommand(new Command('list')
|
|
12
|
+
.description('List cached skills')
|
|
13
|
+
.option('--json', 'Output as JSON')
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
const spinner = ora('Loading cache info...').start();
|
|
16
|
+
try {
|
|
17
|
+
const storage = await getStorage();
|
|
18
|
+
await storage.initialize();
|
|
19
|
+
const cacheEntries = await storage.getAllCacheMetadata();
|
|
20
|
+
spinner.stop();
|
|
21
|
+
if (options.json) {
|
|
22
|
+
console.log(JSON.stringify(cacheEntries, null, 2));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (cacheEntries.length === 0) {
|
|
26
|
+
console.log(chalk.yellow('\nNo cached skills found.'));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log(chalk.bold(`\nCached Skills (${cacheEntries.length}):\n`));
|
|
30
|
+
const table = new Table({
|
|
31
|
+
head: [
|
|
32
|
+
chalk.cyan('Skill'),
|
|
33
|
+
chalk.cyan('Version'),
|
|
34
|
+
chalk.cyan('Size'),
|
|
35
|
+
chalk.cyan('Hits'),
|
|
36
|
+
chalk.cyan('Cached At'),
|
|
37
|
+
],
|
|
38
|
+
colWidths: [30, 12, 12, 8, 25],
|
|
39
|
+
});
|
|
40
|
+
let totalSize = 0;
|
|
41
|
+
let totalHits = 0;
|
|
42
|
+
for (const entry of cacheEntries) {
|
|
43
|
+
table.push([
|
|
44
|
+
entry.skillName,
|
|
45
|
+
entry.version,
|
|
46
|
+
formatBytes(entry.size ?? 0),
|
|
47
|
+
entry.hitCount.toString(),
|
|
48
|
+
entry.cachedAt.split('T')[0] ?? '',
|
|
49
|
+
]);
|
|
50
|
+
totalSize += entry.size ?? 0;
|
|
51
|
+
totalHits += entry.hitCount;
|
|
52
|
+
}
|
|
53
|
+
console.log(table.toString());
|
|
54
|
+
console.log();
|
|
55
|
+
console.log(chalk.gray(`Total size: ${formatBytes(totalSize)}`));
|
|
56
|
+
console.log(chalk.gray(`Total hits: ${totalHits}`));
|
|
57
|
+
await storage.close();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
spinner.fail('Failed to list cache');
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}))
|
|
64
|
+
.addCommand(new Command('clear')
|
|
65
|
+
.description('Clear cached skills')
|
|
66
|
+
.option('-n, --name <name>', 'Clear specific skill')
|
|
67
|
+
.option('-a, --all', 'Clear all cache')
|
|
68
|
+
.option('-e, --expired', 'Clear only expired entries')
|
|
69
|
+
.action(async (options) => {
|
|
70
|
+
const spinner = ora('Clearing cache...').start();
|
|
71
|
+
try {
|
|
72
|
+
const storage = await getStorage();
|
|
73
|
+
await storage.initialize();
|
|
74
|
+
let cleared = 0;
|
|
75
|
+
if (options.expired) {
|
|
76
|
+
const expiredEntries = await storage.getExpiredCacheEntries();
|
|
77
|
+
for (const entry of expiredEntries) {
|
|
78
|
+
await storage.deleteCacheMetadata(entry.skillName, entry.version);
|
|
79
|
+
cleared++;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else if (options.name) {
|
|
83
|
+
const deleted = await storage.deleteCacheMetadata(options.name);
|
|
84
|
+
if (deleted)
|
|
85
|
+
cleared++;
|
|
86
|
+
}
|
|
87
|
+
else if (options.all) {
|
|
88
|
+
const allEntries = await storage.getAllCacheMetadata();
|
|
89
|
+
for (const entry of allEntries) {
|
|
90
|
+
await storage.deleteCacheMetadata(entry.skillName, entry.version);
|
|
91
|
+
cleared++;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
spinner.info('Specify --all, --expired, or --name <skill>');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
spinner.succeed(`Cleared ${cleared} cache entries`);
|
|
99
|
+
await storage.close();
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
spinner.fail('Failed to clear cache');
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}))
|
|
106
|
+
.addCommand(new Command('stats')
|
|
107
|
+
.description('Show cache statistics')
|
|
108
|
+
.action(async () => {
|
|
109
|
+
const spinner = ora('Calculating statistics...').start();
|
|
110
|
+
try {
|
|
111
|
+
const storage = await getStorage();
|
|
112
|
+
await storage.initialize();
|
|
113
|
+
const config = getConfig();
|
|
114
|
+
const cacheEntries = await storage.getAllCacheMetadata();
|
|
115
|
+
const expiredEntries = await storage.getExpiredCacheEntries();
|
|
116
|
+
spinner.stop();
|
|
117
|
+
const totalSize = cacheEntries.reduce((sum, c) => sum + (c.size ?? 0), 0);
|
|
118
|
+
const totalHits = cacheEntries.reduce((sum, c) => sum + c.hitCount, 0);
|
|
119
|
+
const uniqueSkills = new Set(cacheEntries.map(c => c.skillName)).size;
|
|
120
|
+
console.log(chalk.bold('\nCache Statistics:\n'));
|
|
121
|
+
console.log(` ${chalk.cyan('Total entries:')} ${cacheEntries.length}`);
|
|
122
|
+
console.log(` ${chalk.cyan('Unique skills:')} ${uniqueSkills}`);
|
|
123
|
+
console.log(` ${chalk.cyan('Total size:')} ${formatBytes(totalSize)}`);
|
|
124
|
+
console.log(` ${chalk.cyan('Max size:')} ${formatBytes(config.get().cache.maxSize)}`);
|
|
125
|
+
console.log(` ${chalk.cyan('Usage:')} ${Math.round((totalSize / config.get().cache.maxSize) * 100)}%`);
|
|
126
|
+
console.log(` ${chalk.cyan('Total hits:')} ${totalHits}`);
|
|
127
|
+
console.log(` ${chalk.cyan('Expired:')} ${expiredEntries.length}`);
|
|
128
|
+
console.log(` ${chalk.cyan('TTL:')} ${config.get().cache.ttl}s`);
|
|
129
|
+
console.log();
|
|
130
|
+
// Most accessed
|
|
131
|
+
if (cacheEntries.length > 0) {
|
|
132
|
+
const sorted = [...cacheEntries].sort((a, b) => b.hitCount - a.hitCount);
|
|
133
|
+
console.log(chalk.bold('Most accessed:'));
|
|
134
|
+
for (const entry of sorted.slice(0, 5)) {
|
|
135
|
+
console.log(` • ${entry.skillName}@${entry.version} (${entry.hitCount} hits)`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
await storage.close();
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
spinner.fail('Failed to get statistics');
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
}));
|
|
145
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SAkIvB,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub CLI - Config Command
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { getConfig } from '@open-skills-hub/core';
|
|
8
|
+
import { stringify as stringifyYaml } from 'yaml';
|
|
9
|
+
export const configCommand = new Command('config')
|
|
10
|
+
.description('Manage configuration')
|
|
11
|
+
.addCommand(new Command('show')
|
|
12
|
+
.description('Show current configuration')
|
|
13
|
+
.option('--json', 'Output as JSON')
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
const config = getConfig();
|
|
16
|
+
const current = config.get();
|
|
17
|
+
if (options.json) {
|
|
18
|
+
console.log(JSON.stringify(current, null, 2));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
console.log(chalk.bold('\nCurrent Configuration:\n'));
|
|
22
|
+
console.log(stringifyYaml(current, { indent: 2 }));
|
|
23
|
+
}))
|
|
24
|
+
.addCommand(new Command('get')
|
|
25
|
+
.description('Get a specific configuration value')
|
|
26
|
+
.argument('<key>', 'Configuration key (e.g., mode, server.port)')
|
|
27
|
+
.action(async (key) => {
|
|
28
|
+
const config = getConfig();
|
|
29
|
+
const current = config.get();
|
|
30
|
+
// Navigate nested keys
|
|
31
|
+
const keys = key.split('.');
|
|
32
|
+
let value = current;
|
|
33
|
+
for (const k of keys) {
|
|
34
|
+
if (value && typeof value === 'object' && k in value) {
|
|
35
|
+
value = value[k];
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.log(chalk.red(`Key not found: ${key}`));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === 'object') {
|
|
43
|
+
console.log(JSON.stringify(value, null, 2));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log(value);
|
|
47
|
+
}
|
|
48
|
+
}))
|
|
49
|
+
.addCommand(new Command('set')
|
|
50
|
+
.description('Set a configuration value')
|
|
51
|
+
.argument('<key>', 'Configuration key')
|
|
52
|
+
.argument('<value>', 'Value to set')
|
|
53
|
+
.action(async (key, value) => {
|
|
54
|
+
const spinner = ora('Saving configuration...').start();
|
|
55
|
+
try {
|
|
56
|
+
const config = getConfig();
|
|
57
|
+
const current = config.get();
|
|
58
|
+
// Parse value
|
|
59
|
+
let parsedValue = value;
|
|
60
|
+
if (value === 'true')
|
|
61
|
+
parsedValue = true;
|
|
62
|
+
else if (value === 'false')
|
|
63
|
+
parsedValue = false;
|
|
64
|
+
else if (/^\d+$/.test(value))
|
|
65
|
+
parsedValue = parseInt(value, 10);
|
|
66
|
+
else if (/^\d+\.\d+$/.test(value))
|
|
67
|
+
parsedValue = parseFloat(value);
|
|
68
|
+
// Navigate and set nested keys
|
|
69
|
+
const keys = key.split('.');
|
|
70
|
+
if (keys.length === 1) {
|
|
71
|
+
config.setValue(key, parsedValue);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Handle nested keys
|
|
75
|
+
let target = current;
|
|
76
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
77
|
+
const k = keys[i];
|
|
78
|
+
if (!(k in target)) {
|
|
79
|
+
target[k] = {};
|
|
80
|
+
}
|
|
81
|
+
target = target[k];
|
|
82
|
+
}
|
|
83
|
+
target[keys[keys.length - 1]] = parsedValue;
|
|
84
|
+
config.set(current);
|
|
85
|
+
}
|
|
86
|
+
await config.save();
|
|
87
|
+
spinner.succeed(`Set ${key} = ${parsedValue}`);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
spinner.fail('Failed to save configuration');
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}))
|
|
94
|
+
.addCommand(new Command('reset')
|
|
95
|
+
.description('Reset configuration to defaults')
|
|
96
|
+
.option('-y, --yes', 'Skip confirmation')
|
|
97
|
+
.action(async (options) => {
|
|
98
|
+
if (!options.yes) {
|
|
99
|
+
console.log(chalk.yellow('This will reset all configuration to defaults.'));
|
|
100
|
+
console.log('Use --yes to confirm.');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const spinner = ora('Resetting configuration...').start();
|
|
104
|
+
try {
|
|
105
|
+
const config = getConfig();
|
|
106
|
+
config.reset();
|
|
107
|
+
await config.save();
|
|
108
|
+
spinner.succeed('Configuration reset to defaults');
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
spinner.fail('Failed to reset configuration');
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}))
|
|
115
|
+
.addCommand(new Command('path')
|
|
116
|
+
.description('Show configuration file paths')
|
|
117
|
+
.action(async () => {
|
|
118
|
+
const config = getConfig();
|
|
119
|
+
console.log(chalk.bold('\nConfiguration Paths:\n'));
|
|
120
|
+
console.log(` ${chalk.cyan('Storage:')} ${config.getStoragePath()}`);
|
|
121
|
+
console.log(` ${chalk.cyan('Database:')} ${config.getDatabasePath()}`);
|
|
122
|
+
console.log(` ${chalk.cyan('Cache:')} ${config.getCachePath()}`);
|
|
123
|
+
console.log(` ${chalk.cyan('Local:')} ${config.getLocalSkillsPath()}`);
|
|
124
|
+
console.log(` ${chalk.cyan('Logs:')} ${config.getLogsPath()}`);
|
|
125
|
+
console.log(` ${chalk.cyan('Queue:')} ${config.getQueuePath()}`);
|
|
126
|
+
console.log();
|
|
127
|
+
}));
|
|
128
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoTpC,eAAO,MAAM,aAAa,SAgLtB,CAAC"}
|