@skillsmith/mcp-server 0.2.0 → 0.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/README.md +32 -3
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/test-utils.d.ts +1 -0
- package/dist/src/__tests__/test-utils.d.ts.map +1 -1
- package/dist/src/__tests__/test-utils.js +5 -1
- package/dist/src/__tests__/test-utils.js.map +1 -1
- package/dist/src/context.d.ts +40 -5
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +38 -4
- package/dist/src/context.js.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/middleware/degradation.d.ts +7 -1
- package/dist/src/middleware/degradation.d.ts.map +1 -1
- package/dist/src/middleware/degradation.js +4 -0
- package/dist/src/middleware/degradation.js.map +1 -1
- package/dist/src/middleware/index.d.ts +2 -1
- package/dist/src/middleware/index.d.ts.map +1 -1
- package/dist/src/middleware/index.js +2 -0
- package/dist/src/middleware/index.js.map +1 -1
- package/dist/src/middleware/license.d.ts +10 -2
- package/dist/src/middleware/license.d.ts.map +1 -1
- package/dist/src/middleware/license.js +13 -2
- package/dist/src/middleware/license.js.map +1 -1
- package/dist/src/middleware/quota.d.ts +182 -0
- package/dist/src/middleware/quota.d.ts.map +1 -0
- package/dist/src/middleware/quota.js +309 -0
- package/dist/src/middleware/quota.js.map +1 -0
- package/dist/src/middleware/toolFeatureMapping.d.ts +2 -2
- package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
- package/dist/src/middleware/toolFeatureMapping.js +6 -0
- package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
- package/dist/src/tools/compare.js +2 -2
- package/dist/src/tools/compare.js.map +1 -1
- package/dist/src/tools/get-skill.d.ts +4 -13
- package/dist/src/tools/get-skill.d.ts.map +1 -1
- package/dist/src/tools/get-skill.js +55 -19
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.js +13 -1
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/recommend.d.ts +4 -6
- package/dist/src/tools/recommend.d.ts.map +1 -1
- package/dist/src/tools/recommend.js +73 -41
- package/dist/src/tools/recommend.js.map +1 -1
- package/dist/src/tools/search.d.ts +5 -12
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.js +65 -67
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/tools/suggest.d.ts +4 -4
- package/dist/src/tools/suggest.d.ts.map +1 -1
- package/dist/src/tools/suggest.js +1 -33
- package/dist/src/tools/suggest.js.map +1 -1
- package/dist/src/utils/validation.d.ts +29 -10
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/validation.js +52 -19
- package/dist/src/utils/validation.js.map +1 -1
- package/dist/tests/e2e/compare.e2e.test.js +11 -1
- package/dist/tests/e2e/compare.e2e.test.js.map +1 -1
- package/dist/tests/e2e/install-flow.e2e.test.js +22 -2
- package/dist/tests/e2e/install-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/recommend.e2e.test.js +12 -2
- package/dist/tests/e2e/recommend.e2e.test.js.map +1 -1
- package/dist/tests/e2e/skill-flow.e2e.test.js +35 -4
- package/dist/tests/e2e/skill-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/suggest.e2e.test.js +22 -2
- package/dist/tests/e2e/suggest.e2e.test.js.map +1 -1
- package/dist/tests/integration/recommend.integration.test.js +2 -0
- package/dist/tests/integration/recommend.integration.test.js.map +1 -1
- package/dist/tests/integration/setup.d.ts +4 -1
- package/dist/tests/integration/setup.d.ts.map +1 -1
- package/dist/tests/integration/setup.js +8 -1
- package/dist/tests/integration/setup.js.map +1 -1
- package/dist/tests/performance/search-performance.test.js +6 -2
- package/dist/tests/performance/search-performance.test.js.map +1 -1
- package/dist/tests/recommend.test.js +2 -0
- package/dist/tests/recommend.test.js.map +1 -1
- package/package.json +8 -8
- package/dist/src/__tests__/compare.test.d.ts +0 -5
- package/dist/src/__tests__/compare.test.d.ts.map +0 -1
- package/dist/src/__tests__/compare.test.js +0 -254
- package/dist/src/__tests__/compare.test.js.map +0 -1
- package/dist/src/__tests__/recommend.test.d.ts +0 -5
- package/dist/src/__tests__/recommend.test.d.ts.map +0 -1
- package/dist/src/__tests__/recommend.test.js +0 -181
- package/dist/src/__tests__/recommend.test.js.map +0 -1
- package/dist/src/__tests__/validate.test.d.ts +0 -5
- package/dist/src/__tests__/validate.test.d.ts.map +0 -1
- package/dist/src/__tests__/validate.test.js +0 -303
- package/dist/src/__tests__/validate.test.js.map +0 -1
package/dist/src/tools/search.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Provides skill search functionality with support for:
|
|
8
8
|
* - Full-text search across skill names, descriptions, and authors
|
|
9
9
|
* - Category filtering (development, testing, devops, etc.)
|
|
10
|
-
* - Trust tier filtering (verified, community,
|
|
10
|
+
* - Trust tier filtering (verified, community, experimental, unknown)
|
|
11
11
|
* - Minimum quality score filtering
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
@@ -23,40 +23,8 @@
|
|
|
23
23
|
* min_score: 80
|
|
24
24
|
* }, context);
|
|
25
25
|
*/
|
|
26
|
-
import { SkillsmithError, ErrorCodes, } from '@skillsmith/core';
|
|
27
|
-
import { extractCategoryFromTags } from '../utils/validation.js';
|
|
28
|
-
/**
|
|
29
|
-
* Map MCP trust tier to database trust tier
|
|
30
|
-
* MCP: verified, community, standard, unverified
|
|
31
|
-
* DB: verified, community, experimental, unknown
|
|
32
|
-
*/
|
|
33
|
-
function mapTrustTierToDb(mcpTier) {
|
|
34
|
-
switch (mcpTier) {
|
|
35
|
-
case 'verified':
|
|
36
|
-
return 'verified';
|
|
37
|
-
case 'community':
|
|
38
|
-
return 'community';
|
|
39
|
-
case 'standard':
|
|
40
|
-
return 'experimental';
|
|
41
|
-
case 'unverified':
|
|
42
|
-
return 'unknown';
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Map database trust tier to MCP trust tier
|
|
47
|
-
*/
|
|
48
|
-
function mapTrustTierFromDb(dbTier) {
|
|
49
|
-
switch (dbTier) {
|
|
50
|
-
case 'verified':
|
|
51
|
-
return 'verified';
|
|
52
|
-
case 'community':
|
|
53
|
-
return 'community';
|
|
54
|
-
case 'experimental':
|
|
55
|
-
return 'standard';
|
|
56
|
-
case 'unknown':
|
|
57
|
-
return 'unverified';
|
|
58
|
-
}
|
|
59
|
-
}
|
|
26
|
+
import { SkillsmithError, ErrorCodes, trackSkillSearch, } from '@skillsmith/core';
|
|
27
|
+
import { extractCategoryFromTags, mapTrustTierToDb, mapTrustTierFromDb, getTrustBadge, } from '../utils/validation.js';
|
|
60
28
|
/**
|
|
61
29
|
* Search tool schema for MCP
|
|
62
30
|
*/
|
|
@@ -89,7 +57,7 @@ export const searchToolSchema = {
|
|
|
89
57
|
trust_tier: {
|
|
90
58
|
type: 'string',
|
|
91
59
|
description: 'Filter by trust tier level',
|
|
92
|
-
enum: ['verified', 'community', '
|
|
60
|
+
enum: ['verified', 'community', 'experimental', 'unknown'],
|
|
93
61
|
},
|
|
94
62
|
min_score: {
|
|
95
63
|
type: 'number',
|
|
@@ -104,11 +72,12 @@ export const searchToolSchema = {
|
|
|
104
72
|
/**
|
|
105
73
|
* Execute a search for Claude Code skills with optional filters.
|
|
106
74
|
*
|
|
107
|
-
* Uses
|
|
108
|
-
*
|
|
75
|
+
* SMI-1183: Uses API as primary source with local DB fallback.
|
|
76
|
+
* - Tries live API first (api.skillsmith.app)
|
|
77
|
+
* - Falls back to local SearchService if API is offline or fails
|
|
109
78
|
*
|
|
110
79
|
* @param input - Search parameters including query and optional filters
|
|
111
|
-
* @param context - Tool context with
|
|
80
|
+
* @param context - Tool context with API client and local services
|
|
112
81
|
* @returns Promise resolving to search response with results and timing
|
|
113
82
|
* @throws {SkillsmithError} When query is empty or less than 2 characters
|
|
114
83
|
* @throws {SkillsmithError} When min_score is outside 0-100 range
|
|
@@ -117,14 +86,6 @@ export const searchToolSchema = {
|
|
|
117
86
|
* // Search for commit-related skills
|
|
118
87
|
* const response = await executeSearch({ query: 'commit' }, context);
|
|
119
88
|
* console.log(`Found ${response.total} skills in ${response.timing.totalMs}ms`);
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* // Search with multiple filters
|
|
123
|
-
* const response = await executeSearch({
|
|
124
|
-
* query: 'react',
|
|
125
|
-
* category: 'testing',
|
|
126
|
-
* min_score: 85
|
|
127
|
-
* }, context);
|
|
128
89
|
*/
|
|
129
90
|
export async function executeSearch(input, context) {
|
|
130
91
|
const startTime = performance.now();
|
|
@@ -149,9 +110,55 @@ export async function executeSearch(input, context) {
|
|
|
149
110
|
filters.minScore = input.min_score / 100; // Convert to 0-1 scale for DB
|
|
150
111
|
}
|
|
151
112
|
const searchStart = performance.now();
|
|
152
|
-
//
|
|
113
|
+
// SMI-1183: Try API first, fall back to local DB
|
|
114
|
+
if (!context.apiClient.isOffline()) {
|
|
115
|
+
try {
|
|
116
|
+
const apiResponse = await context.apiClient.search({
|
|
117
|
+
query: input.query.trim(),
|
|
118
|
+
limit: 10,
|
|
119
|
+
offset: 0,
|
|
120
|
+
trustTier: filters.trustTier ? mapTrustTierToDb(filters.trustTier) : undefined,
|
|
121
|
+
minQualityScore: filters.minScore,
|
|
122
|
+
category: filters.category,
|
|
123
|
+
});
|
|
124
|
+
const searchEnd = performance.now();
|
|
125
|
+
// Convert API results to SkillSearchResult format
|
|
126
|
+
const results = apiResponse.data.map((item) => ({
|
|
127
|
+
id: item.id,
|
|
128
|
+
name: item.name,
|
|
129
|
+
description: item.description || '',
|
|
130
|
+
author: item.author || 'unknown',
|
|
131
|
+
category: extractCategoryFromTags(item.tags),
|
|
132
|
+
trustTier: mapTrustTierFromDb(item.trust_tier),
|
|
133
|
+
score: Math.round((item.quality_score ?? 0) * 100),
|
|
134
|
+
}));
|
|
135
|
+
const endTime = performance.now();
|
|
136
|
+
const response = {
|
|
137
|
+
results,
|
|
138
|
+
total: apiResponse.meta?.total ?? results.length,
|
|
139
|
+
query: input.query,
|
|
140
|
+
filters,
|
|
141
|
+
timing: {
|
|
142
|
+
searchMs: Math.round(searchEnd - searchStart),
|
|
143
|
+
totalMs: Math.round(endTime - startTime),
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
// SMI-1184: Track search event (silent on failure)
|
|
147
|
+
if (context.distinctId) {
|
|
148
|
+
trackSkillSearch(context.distinctId, input.query, response.total, response.timing.totalMs, {
|
|
149
|
+
trustTier: filters.trustTier,
|
|
150
|
+
category: filters.category,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return response;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
// Log and fall through to local search
|
|
157
|
+
console.warn('[skillsmith] API search failed, using local database:', error.message);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Fallback: Use local SearchService for FTS5 search with BM25 ranking
|
|
153
161
|
const dbTrustTier = filters.trustTier ? mapTrustTierToDb(filters.trustTier) : undefined;
|
|
154
|
-
// Use SearchService for FTS5 search with BM25 ranking
|
|
155
162
|
const searchResults = context.searchService.search({
|
|
156
163
|
query: input.query.trim(),
|
|
157
164
|
limit: 10,
|
|
@@ -172,7 +179,7 @@ export async function executeSearch(input, context) {
|
|
|
172
179
|
score: Math.round((item.skill.qualityScore ?? 0) * 100), // Convert 0-1 to 0-100
|
|
173
180
|
}));
|
|
174
181
|
const endTime = performance.now();
|
|
175
|
-
|
|
182
|
+
const response = {
|
|
176
183
|
results,
|
|
177
184
|
total: searchResults.total,
|
|
178
185
|
query: input.query,
|
|
@@ -182,6 +189,14 @@ export async function executeSearch(input, context) {
|
|
|
182
189
|
totalMs: Math.round(endTime - startTime),
|
|
183
190
|
},
|
|
184
191
|
};
|
|
192
|
+
// SMI-1184: Track search event (silent on failure)
|
|
193
|
+
if (context.distinctId) {
|
|
194
|
+
trackSkillSearch(context.distinctId, input.query, response.total, response.timing.totalMs, {
|
|
195
|
+
trustTier: filters.trustTier,
|
|
196
|
+
category: filters.category,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
return response;
|
|
185
200
|
}
|
|
186
201
|
/**
|
|
187
202
|
* Format search results for terminal/CLI display.
|
|
@@ -229,21 +244,4 @@ export function formatSearchResults(response) {
|
|
|
229
244
|
lines.push('Search: ' + response.timing.searchMs + 'ms | Total: ' + response.timing.totalMs + 'ms');
|
|
230
245
|
return lines.join('\n');
|
|
231
246
|
}
|
|
232
|
-
/**
|
|
233
|
-
* Get trust badge for display
|
|
234
|
-
*/
|
|
235
|
-
function getTrustBadge(tier) {
|
|
236
|
-
switch (tier) {
|
|
237
|
-
case 'verified':
|
|
238
|
-
return '[VERIFIED]';
|
|
239
|
-
case 'community':
|
|
240
|
-
return '[COMMUNITY]';
|
|
241
|
-
case 'standard':
|
|
242
|
-
return '[STANDARD]';
|
|
243
|
-
case 'unverified':
|
|
244
|
-
return '[UNVERIFIED]';
|
|
245
|
-
default:
|
|
246
|
-
return '[UNKNOWN]';
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
247
|
//# sourceMappingURL=search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,20 +46,20 @@ export declare const suggestInputSchema: z.ZodObject<{
|
|
|
46
46
|
/** Session ID for rate limiting */
|
|
47
47
|
session_id: z.ZodDefault<z.ZodString>;
|
|
48
48
|
}, "strip", z.ZodTypeAny, {
|
|
49
|
-
project_path: string;
|
|
50
|
-
recent_commands: string[];
|
|
51
49
|
installed_skills: string[];
|
|
52
50
|
limit: number;
|
|
51
|
+
project_path: string;
|
|
52
|
+
recent_commands: string[];
|
|
53
53
|
session_id: string;
|
|
54
54
|
current_file?: string | undefined;
|
|
55
55
|
error_message?: string | undefined;
|
|
56
56
|
}, {
|
|
57
57
|
project_path: string;
|
|
58
|
+
installed_skills?: string[] | undefined;
|
|
59
|
+
limit?: number | undefined;
|
|
58
60
|
current_file?: string | undefined;
|
|
59
61
|
recent_commands?: string[] | undefined;
|
|
60
62
|
error_message?: string | undefined;
|
|
61
|
-
installed_skills?: string[] | undefined;
|
|
62
|
-
limit?: number | undefined;
|
|
63
63
|
session_id?: string | undefined;
|
|
64
64
|
}>;
|
|
65
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../src/tools/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../src/tools/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjE;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,+BAA+B;;IAE/B,2CAA2C;;IAE3C,wCAAwC;;IAExC,kCAAkC;;IAElC,oCAAoC;;IAEpC,gDAAgD;;IAEhD,mCAAmC;;;;;;;;;;;;;;;;;;EAEnC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iBAAiB;IACjB,UAAU,EAAE,SAAS,CAAA;IACrB,oBAAoB;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,WAAW,EAAE,eAAe,EAAE,CAAA;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAA;IACrB,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,2BAA2B;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,yBAAyB;IACzB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C7B,CAAA;AA0FD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CAuI1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAuCnE"}
|
|
@@ -29,6 +29,7 @@ import { TriggerDetector, ContextScorer } from '@skillsmith/core';
|
|
|
29
29
|
import { CodebaseAnalyzer } from '@skillsmith/core';
|
|
30
30
|
import { SkillMatcher } from '@skillsmith/core';
|
|
31
31
|
import { RateLimiter } from '@skillsmith/core';
|
|
32
|
+
import { mapTrustTierFromDb, getTrustBadge } from '../utils/validation.js';
|
|
32
33
|
/**
|
|
33
34
|
* Zod schema for suggest tool input validation
|
|
34
35
|
*/
|
|
@@ -95,22 +96,6 @@ export const suggestToolSchema = {
|
|
|
95
96
|
required: ['project_path'],
|
|
96
97
|
},
|
|
97
98
|
};
|
|
98
|
-
/**
|
|
99
|
-
* Map database trust tier to MCP trust tier
|
|
100
|
-
*/
|
|
101
|
-
function mapTrustTierFromDb(dbTier) {
|
|
102
|
-
switch (dbTier) {
|
|
103
|
-
case 'verified':
|
|
104
|
-
return 'verified';
|
|
105
|
-
case 'community':
|
|
106
|
-
return 'community';
|
|
107
|
-
case 'experimental':
|
|
108
|
-
return 'standard';
|
|
109
|
-
case 'unknown':
|
|
110
|
-
default:
|
|
111
|
-
return 'unverified';
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
99
|
/**
|
|
115
100
|
* Transform a database skill to SkillData format for matching
|
|
116
101
|
*/
|
|
@@ -322,21 +307,4 @@ export function formatSuggestions(response) {
|
|
|
322
307
|
lines.push(`Completed in ${response.timing.totalMs}ms`);
|
|
323
308
|
return lines.join('\n');
|
|
324
309
|
}
|
|
325
|
-
/**
|
|
326
|
-
* Get trust badge for display
|
|
327
|
-
*/
|
|
328
|
-
function getTrustBadge(tier) {
|
|
329
|
-
switch (tier) {
|
|
330
|
-
case 'verified':
|
|
331
|
-
return '[VERIFIED]';
|
|
332
|
-
case 'community':
|
|
333
|
-
return '[COMMUNITY]';
|
|
334
|
-
case 'standard':
|
|
335
|
-
return '[STANDARD]';
|
|
336
|
-
case 'unverified':
|
|
337
|
-
return '[UNVERIFIED]';
|
|
338
|
-
default:
|
|
339
|
-
return '[UNKNOWN]';
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
310
|
//# sourceMappingURL=suggest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../../src/tools/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../../src/tools/suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,9 @@ import type { TrustTier as DBTrustTier, MCPTrustTier, SkillCategory } from '@ski
|
|
|
12
12
|
/**
|
|
13
13
|
* Validate skill ID format.
|
|
14
14
|
*
|
|
15
|
-
* Accepts
|
|
15
|
+
* Accepts three formats:
|
|
16
16
|
* - Author/name format: `anthropic/commit`, `community/jest-helper`
|
|
17
|
+
* - Source/author/name format: `github/cyanheads/git-mcp-server`, `claude-plugins/author/skill`
|
|
17
18
|
* - UUID format: `550e8400-e29b-41d4-a716-446655440000`
|
|
18
19
|
*
|
|
19
20
|
* @param id - Skill ID to validate
|
|
@@ -21,28 +22,32 @@ import type { TrustTier as DBTrustTier, MCPTrustTier, SkillCategory } from '@ski
|
|
|
21
22
|
*
|
|
22
23
|
* @example
|
|
23
24
|
* isValidSkillId('anthropic/commit') // true
|
|
25
|
+
* isValidSkillId('github/cyanheads/git-mcp-server') // true
|
|
24
26
|
* isValidSkillId('invalid-format') // false
|
|
25
27
|
*/
|
|
26
28
|
export declare function isValidSkillId(id: string): boolean;
|
|
27
29
|
/**
|
|
28
|
-
* Parse a skill ID into author and name components.
|
|
30
|
+
* Parse a skill ID into source, author, and name components.
|
|
29
31
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
+
* Handles both 2-part (author/name) and 3-part (source/author/name) formats.
|
|
33
|
+
*
|
|
34
|
+
* @param id - Skill ID in author/name or source/author/name format
|
|
35
|
+
* @returns Object with source (optional), author, and name, or null if invalid format
|
|
32
36
|
*
|
|
33
37
|
* @example
|
|
34
38
|
* parseSkillId('anthropic/commit') // { author: 'anthropic', name: 'commit' }
|
|
39
|
+
* parseSkillId('github/cyanheads/git-mcp-server') // { source: 'github', author: 'cyanheads', name: 'git-mcp-server' }
|
|
35
40
|
* parseSkillId('invalid') // null
|
|
36
41
|
*/
|
|
37
42
|
export declare function parseSkillId(id: string): {
|
|
43
|
+
source?: string;
|
|
38
44
|
author: string;
|
|
39
45
|
name: string;
|
|
40
46
|
} | null;
|
|
41
47
|
/**
|
|
42
48
|
* Map MCP trust tier to database trust tier.
|
|
43
49
|
*
|
|
44
|
-
*
|
|
45
|
-
* DB types: verified, community, experimental, unknown
|
|
50
|
+
* Types are now unified: verified, community, experimental, unknown
|
|
46
51
|
*
|
|
47
52
|
* @param mcpTier - MCP trust tier
|
|
48
53
|
* @returns Database trust tier
|
|
@@ -51,13 +56,13 @@ export declare function mapTrustTierToDb(mcpTier: MCPTrustTier): DBTrustTier;
|
|
|
51
56
|
/**
|
|
52
57
|
* Map database trust tier to MCP trust tier.
|
|
53
58
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
59
|
+
* Accepts string input and validates, returning 'unknown' for invalid values.
|
|
60
|
+
* Types are unified: verified, community, experimental, unknown
|
|
56
61
|
*
|
|
57
|
-
* @param dbTier - Database trust tier
|
|
62
|
+
* @param dbTier - Database trust tier (string or typed)
|
|
58
63
|
* @returns MCP trust tier
|
|
59
64
|
*/
|
|
60
|
-
export declare function mapTrustTierFromDb(dbTier: DBTrustTier): MCPTrustTier;
|
|
65
|
+
export declare function mapTrustTierFromDb(dbTier: DBTrustTier | string): MCPTrustTier;
|
|
61
66
|
/**
|
|
62
67
|
* Extract skill category from tags array.
|
|
63
68
|
*
|
|
@@ -73,4 +78,18 @@ export declare function mapTrustTierFromDb(dbTier: DBTrustTier): MCPTrustTier;
|
|
|
73
78
|
* extractCategoryFromTags(['random', 'tags']) // 'other'
|
|
74
79
|
*/
|
|
75
80
|
export declare function extractCategoryFromTags(tags: string[] | undefined | null): SkillCategory;
|
|
81
|
+
/**
|
|
82
|
+
* Get trust badge string for display.
|
|
83
|
+
*
|
|
84
|
+
* Returns a formatted badge string for terminal/CLI display
|
|
85
|
+
* based on the skill's trust tier.
|
|
86
|
+
*
|
|
87
|
+
* @param tier - Trust tier value
|
|
88
|
+
* @returns Formatted badge string (e.g., '[VERIFIED]')
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* getTrustBadge('verified') // '[VERIFIED]'
|
|
92
|
+
* getTrustBadge('community') // '[COMMUNITY]'
|
|
93
|
+
*/
|
|
94
|
+
export declare function getTrustBadge(tier: MCPTrustTier): string;
|
|
76
95
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,IAAI,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAkB7F
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,IAAI,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAkB7F;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CASlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASjG;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAWnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,CAY7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,CAsCxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAQxD"}
|
|
@@ -26,8 +26,9 @@ const VALID_CATEGORIES = [
|
|
|
26
26
|
/**
|
|
27
27
|
* Validate skill ID format.
|
|
28
28
|
*
|
|
29
|
-
* Accepts
|
|
29
|
+
* Accepts three formats:
|
|
30
30
|
* - Author/name format: `anthropic/commit`, `community/jest-helper`
|
|
31
|
+
* - Source/author/name format: `github/cyanheads/git-mcp-server`, `claude-plugins/author/skill`
|
|
31
32
|
* - UUID format: `550e8400-e29b-41d4-a716-446655440000`
|
|
32
33
|
*
|
|
33
34
|
* @param id - Skill ID to validate
|
|
@@ -35,36 +36,45 @@ const VALID_CATEGORIES = [
|
|
|
35
36
|
*
|
|
36
37
|
* @example
|
|
37
38
|
* isValidSkillId('anthropic/commit') // true
|
|
39
|
+
* isValidSkillId('github/cyanheads/git-mcp-server') // true
|
|
38
40
|
* isValidSkillId('invalid-format') // false
|
|
39
41
|
*/
|
|
40
42
|
export function isValidSkillId(id) {
|
|
41
|
-
// Format: author/skill-name
|
|
42
|
-
const authorSlashName = /^[a-z0-
|
|
43
|
+
// Format: author/skill-name (2 parts)
|
|
44
|
+
const authorSlashName = /^[a-z0-9_-]+\/[a-z0-9_-]+$/i;
|
|
45
|
+
// Format: source/author/skill-name (3 parts, e.g., github/author/repo)
|
|
46
|
+
const sourceAuthorName = /^[a-z0-9_-]+\/[a-z0-9_-]+\/[a-z0-9_.-]+$/i;
|
|
47
|
+
// UUID format
|
|
43
48
|
const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
44
|
-
return authorSlashName.test(id) || uuid.test(id);
|
|
49
|
+
return authorSlashName.test(id) || sourceAuthorName.test(id) || uuid.test(id);
|
|
45
50
|
}
|
|
46
51
|
/**
|
|
47
|
-
* Parse a skill ID into author and name components.
|
|
52
|
+
* Parse a skill ID into source, author, and name components.
|
|
48
53
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
54
|
+
* Handles both 2-part (author/name) and 3-part (source/author/name) formats.
|
|
55
|
+
*
|
|
56
|
+
* @param id - Skill ID in author/name or source/author/name format
|
|
57
|
+
* @returns Object with source (optional), author, and name, or null if invalid format
|
|
51
58
|
*
|
|
52
59
|
* @example
|
|
53
60
|
* parseSkillId('anthropic/commit') // { author: 'anthropic', name: 'commit' }
|
|
61
|
+
* parseSkillId('github/cyanheads/git-mcp-server') // { source: 'github', author: 'cyanheads', name: 'git-mcp-server' }
|
|
54
62
|
* parseSkillId('invalid') // null
|
|
55
63
|
*/
|
|
56
64
|
export function parseSkillId(id) {
|
|
57
65
|
const parts = id.split('/');
|
|
58
|
-
if (parts.length
|
|
59
|
-
return
|
|
66
|
+
if (parts.length === 2) {
|
|
67
|
+
return { author: parts[0], name: parts[1] };
|
|
68
|
+
}
|
|
69
|
+
if (parts.length === 3) {
|
|
70
|
+
return { source: parts[0], author: parts[1], name: parts[2] };
|
|
60
71
|
}
|
|
61
|
-
return
|
|
72
|
+
return null;
|
|
62
73
|
}
|
|
63
74
|
/**
|
|
64
75
|
* Map MCP trust tier to database trust tier.
|
|
65
76
|
*
|
|
66
|
-
*
|
|
67
|
-
* DB types: verified, community, experimental, unknown
|
|
77
|
+
* Types are now unified: verified, community, experimental, unknown
|
|
68
78
|
*
|
|
69
79
|
* @param mcpTier - MCP trust tier
|
|
70
80
|
* @returns Database trust tier
|
|
@@ -75,19 +85,19 @@ export function mapTrustTierToDb(mcpTier) {
|
|
|
75
85
|
return 'verified';
|
|
76
86
|
case 'community':
|
|
77
87
|
return 'community';
|
|
78
|
-
case '
|
|
88
|
+
case 'experimental':
|
|
79
89
|
return 'experimental';
|
|
80
|
-
case '
|
|
90
|
+
case 'unknown':
|
|
81
91
|
return 'unknown';
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
94
|
/**
|
|
85
95
|
* Map database trust tier to MCP trust tier.
|
|
86
96
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
97
|
+
* Accepts string input and validates, returning 'unknown' for invalid values.
|
|
98
|
+
* Types are unified: verified, community, experimental, unknown
|
|
89
99
|
*
|
|
90
|
-
* @param dbTier - Database trust tier
|
|
100
|
+
* @param dbTier - Database trust tier (string or typed)
|
|
91
101
|
* @returns MCP trust tier
|
|
92
102
|
*/
|
|
93
103
|
export function mapTrustTierFromDb(dbTier) {
|
|
@@ -97,9 +107,10 @@ export function mapTrustTierFromDb(dbTier) {
|
|
|
97
107
|
case 'community':
|
|
98
108
|
return 'community';
|
|
99
109
|
case 'experimental':
|
|
100
|
-
return '
|
|
110
|
+
return 'experimental';
|
|
101
111
|
case 'unknown':
|
|
102
|
-
|
|
112
|
+
default:
|
|
113
|
+
return 'unknown';
|
|
103
114
|
}
|
|
104
115
|
}
|
|
105
116
|
/**
|
|
@@ -150,4 +161,26 @@ export function extractCategoryFromTags(tags) {
|
|
|
150
161
|
}
|
|
151
162
|
return 'other';
|
|
152
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Get trust badge string for display.
|
|
166
|
+
*
|
|
167
|
+
* Returns a formatted badge string for terminal/CLI display
|
|
168
|
+
* based on the skill's trust tier.
|
|
169
|
+
*
|
|
170
|
+
* @param tier - Trust tier value
|
|
171
|
+
* @returns Formatted badge string (e.g., '[VERIFIED]')
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* getTrustBadge('verified') // '[VERIFIED]'
|
|
175
|
+
* getTrustBadge('community') // '[COMMUNITY]'
|
|
176
|
+
*/
|
|
177
|
+
export function getTrustBadge(tier) {
|
|
178
|
+
const badges = {
|
|
179
|
+
verified: '[VERIFIED]',
|
|
180
|
+
community: '[COMMUNITY]',
|
|
181
|
+
experimental: '[EXPERIMENTAL]',
|
|
182
|
+
unknown: '[UNKNOWN]',
|
|
183
|
+
};
|
|
184
|
+
return badges[tier] ?? '[UNKNOWN]';
|
|
185
|
+
}
|
|
153
186
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;GAEG;AACH,MAAM,gBAAgB,GAA6B;IACjD,aAAa;IACb,SAAS;IACT,eAAe;IACf,QAAQ;IACR,UAAU;IACV,UAAU;IACV,cAAc;IACd,aAAa;IACb,OAAO;IACP,OAAO;CACC,CAAA;AAEV
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,16 @@ const SEED_SKILLS = [
|
|
|
70
70
|
trustTier: 'experimental',
|
|
71
71
|
tags: ['git', 'ai', 'commit'],
|
|
72
72
|
},
|
|
73
|
+
{
|
|
74
|
+
id: 'unknown/untested-tool',
|
|
75
|
+
name: 'untested-tool',
|
|
76
|
+
description: 'A newly submitted skill not yet reviewed or assessed',
|
|
77
|
+
author: 'unknown-contributor',
|
|
78
|
+
repoUrl: 'https://github.com/unknown-contributor/untested-tool',
|
|
79
|
+
qualityScore: 0.45,
|
|
80
|
+
trustTier: 'unknown',
|
|
81
|
+
tags: ['development', 'utility', 'unverified'],
|
|
82
|
+
},
|
|
73
83
|
];
|
|
74
84
|
describe('E2E: skill_compare tool', () => {
|
|
75
85
|
let db;
|
|
@@ -87,7 +97,7 @@ describe('E2E: skill_compare tool', () => {
|
|
|
87
97
|
for (const skill of SEED_SKILLS) {
|
|
88
98
|
skillRepo.create(skill);
|
|
89
99
|
}
|
|
90
|
-
context = createToolContext({ dbPath: TEST_DB_PATH });
|
|
100
|
+
context = createToolContext({ dbPath: TEST_DB_PATH, apiClientConfig: { offlineMode: true } });
|
|
91
101
|
});
|
|
92
102
|
afterAll(() => {
|
|
93
103
|
db?.close();
|