skillpkg-core 0.5.5 → 0.5.7

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 (150) hide show
  1. package/dist/adapters/adapter-manager.d.ts +51 -0
  2. package/dist/adapters/adapter-manager.d.ts.map +1 -0
  3. package/dist/adapters/adapter-manager.js +147 -0
  4. package/dist/adapters/adapter-manager.js.map +1 -0
  5. package/dist/adapters/base.d.ts.map +1 -1
  6. package/dist/adapters/base.js +14 -3
  7. package/dist/adapters/base.js.map +1 -1
  8. package/dist/adapters/index.d.ts +1 -1
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +1 -1
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/config/types.d.ts +3 -3
  13. package/dist/config/types.d.ts.map +1 -1
  14. package/dist/config/types.js +0 -1
  15. package/dist/config/types.js.map +1 -1
  16. package/dist/discovery/discovery-manager.d.ts +55 -0
  17. package/dist/discovery/discovery-manager.d.ts.map +1 -0
  18. package/dist/discovery/discovery-manager.js +217 -0
  19. package/dist/discovery/discovery-manager.js.map +1 -0
  20. package/dist/discovery/index.d.ts +20 -0
  21. package/dist/discovery/index.d.ts.map +1 -0
  22. package/dist/discovery/index.js +21 -0
  23. package/dist/discovery/index.js.map +1 -0
  24. package/dist/discovery/manager.d.ts +53 -0
  25. package/dist/discovery/manager.d.ts.map +1 -0
  26. package/dist/discovery/manager.js +203 -0
  27. package/dist/discovery/manager.js.map +1 -0
  28. package/dist/discovery/providers/awesome.d.ts +72 -0
  29. package/dist/discovery/providers/awesome.d.ts.map +1 -0
  30. package/dist/discovery/providers/awesome.js +214 -0
  31. package/dist/discovery/providers/awesome.js.map +1 -0
  32. package/dist/discovery/providers/github.d.ts +44 -0
  33. package/dist/discovery/providers/github.d.ts.map +1 -0
  34. package/dist/discovery/providers/github.js +82 -0
  35. package/dist/discovery/providers/github.js.map +1 -0
  36. package/dist/discovery/providers/index.d.ts +9 -0
  37. package/dist/discovery/providers/index.d.ts.map +1 -0
  38. package/dist/discovery/providers/index.js +9 -0
  39. package/dist/discovery/providers/index.js.map +1 -0
  40. package/dist/discovery/providers/local.d.ts +38 -0
  41. package/dist/discovery/providers/local.d.ts.map +1 -0
  42. package/dist/discovery/providers/local.js +75 -0
  43. package/dist/discovery/providers/local.js.map +1 -0
  44. package/dist/discovery/providers/priority.d.ts +89 -0
  45. package/dist/discovery/providers/priority.d.ts.map +1 -0
  46. package/dist/discovery/providers/priority.js +258 -0
  47. package/dist/discovery/providers/priority.js.map +1 -0
  48. package/dist/discovery/providers/skillsmp.d.ts +66 -0
  49. package/dist/discovery/providers/skillsmp.d.ts.map +1 -0
  50. package/dist/discovery/providers/skillsmp.js +134 -0
  51. package/dist/discovery/providers/skillsmp.js.map +1 -0
  52. package/dist/discovery/types.d.ts +108 -0
  53. package/dist/discovery/types.d.ts.map +1 -0
  54. package/dist/discovery/types.js +5 -0
  55. package/dist/discovery/types.js.map +1 -0
  56. package/dist/doctor/doctor.d.ts +62 -0
  57. package/dist/doctor/doctor.d.ts.map +1 -0
  58. package/dist/doctor/doctor.js +399 -0
  59. package/dist/doctor/doctor.js.map +1 -0
  60. package/dist/doctor/index.d.ts +6 -0
  61. package/dist/doctor/index.d.ts.map +1 -0
  62. package/dist/doctor/index.js +6 -0
  63. package/dist/doctor/index.js.map +1 -0
  64. package/dist/doctor/types.d.ts +68 -0
  65. package/dist/doctor/types.d.ts.map +1 -0
  66. package/dist/doctor/types.js +2 -0
  67. package/dist/doctor/types.js.map +1 -0
  68. package/dist/fetcher/fetcher.d.ts.map +1 -1
  69. package/dist/fetcher/fetcher.js +265 -25
  70. package/dist/fetcher/fetcher.js.map +1 -1
  71. package/dist/fetcher/source-parser.d.ts +8 -6
  72. package/dist/fetcher/source-parser.d.ts.map +1 -1
  73. package/dist/fetcher/source-parser.js +37 -16
  74. package/dist/fetcher/source-parser.js.map +1 -1
  75. package/dist/fetcher/types.d.ts +17 -4
  76. package/dist/fetcher/types.d.ts.map +1 -1
  77. package/dist/fetcher/types.js.map +1 -1
  78. package/dist/importer/importer.js +1 -1
  79. package/dist/importer/importer.js.map +1 -1
  80. package/dist/index.d.ts +3 -0
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +6 -0
  83. package/dist/index.js.map +1 -1
  84. package/dist/installer/installer.d.ts +1 -1
  85. package/dist/installer/installer.d.ts.map +1 -1
  86. package/dist/installer/installer.js +15 -7
  87. package/dist/installer/installer.js.map +1 -1
  88. package/dist/installer/types.d.ts +15 -13
  89. package/dist/installer/types.d.ts.map +1 -1
  90. package/dist/matching/engine.d.ts +57 -0
  91. package/dist/matching/engine.d.ts.map +1 -0
  92. package/dist/matching/engine.js +419 -0
  93. package/dist/matching/engine.js.map +1 -0
  94. package/dist/matching/index.d.ts +9 -0
  95. package/dist/matching/index.d.ts.map +1 -0
  96. package/dist/matching/index.js +8 -0
  97. package/dist/matching/index.js.map +1 -0
  98. package/dist/matching/types.d.ts +91 -0
  99. package/dist/matching/types.d.ts.map +1 -0
  100. package/dist/matching/types.js +13 -0
  101. package/dist/matching/types.js.map +1 -0
  102. package/dist/parser/schema.d.ts +61 -8
  103. package/dist/parser/schema.d.ts.map +1 -1
  104. package/dist/parser/schema.js +59 -9
  105. package/dist/parser/schema.js.map +1 -1
  106. package/dist/resolver/dependency-resolver.d.ts.map +1 -1
  107. package/dist/resolver/dependency-resolver.js +15 -3
  108. package/dist/resolver/dependency-resolver.js.map +1 -1
  109. package/dist/resolver/index.d.ts +1 -1
  110. package/dist/resolver/index.d.ts.map +1 -1
  111. package/dist/resolver/index.js.map +1 -1
  112. package/dist/resolver/types.d.ts +13 -0
  113. package/dist/resolver/types.d.ts.map +1 -1
  114. package/dist/skill/reader.d.ts.map +1 -1
  115. package/dist/skill/reader.js +12 -11
  116. package/dist/skill/reader.js.map +1 -1
  117. package/dist/skill/types.d.ts +28 -2
  118. package/dist/skill/types.d.ts.map +1 -1
  119. package/dist/state/state-manager.d.ts +19 -0
  120. package/dist/state/state-manager.d.ts.map +1 -1
  121. package/dist/state/state-manager.js +50 -0
  122. package/dist/state/state-manager.js.map +1 -1
  123. package/dist/store/config.d.ts.map +1 -1
  124. package/dist/store/config.js +7 -0
  125. package/dist/store/config.js.map +1 -1
  126. package/dist/store/index.d.ts +2 -2
  127. package/dist/store/index.d.ts.map +1 -1
  128. package/dist/store/index.js +1 -1
  129. package/dist/store/index.js.map +1 -1
  130. package/dist/store/manager.d.ts +2 -0
  131. package/dist/store/manager.d.ts.map +1 -1
  132. package/dist/store/manager.js +19 -1
  133. package/dist/store/manager.js.map +1 -1
  134. package/dist/store/store-manager.d.ts +123 -0
  135. package/dist/store/store-manager.d.ts.map +1 -0
  136. package/dist/store/store-manager.js +312 -0
  137. package/dist/store/store-manager.js.map +1 -0
  138. package/dist/syncer/syncer.d.ts +4 -0
  139. package/dist/syncer/syncer.d.ts.map +1 -1
  140. package/dist/syncer/syncer.js +91 -27
  141. package/dist/syncer/syncer.js.map +1 -1
  142. package/dist/syncer/types.d.ts +16 -8
  143. package/dist/syncer/types.d.ts.map +1 -1
  144. package/dist/syncer/types.js +29 -32
  145. package/dist/syncer/types.js.map +1 -1
  146. package/dist/types.d.ts +33 -0
  147. package/dist/types.d.ts.map +1 -1
  148. package/dist/types.js +9 -2
  149. package/dist/types.js.map +1 -1
  150. package/package.json +9 -9
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Skill Matching Engine
3
+ *
4
+ * Analyzes user goals and recommends relevant skills based on
5
+ * keyword matching with configurable weights.
6
+ */
7
+ import { DEFAULT_WEIGHTS } from './types.js';
8
+ /**
9
+ * Priority order for sorting (higher = better)
10
+ */
11
+ const PRIORITY_ORDER = {
12
+ high: 3,
13
+ medium: 2,
14
+ low: 1,
15
+ };
16
+ /**
17
+ * Skill Matching Engine
18
+ */
19
+ export class MatchingEngine {
20
+ weights;
21
+ minConfidence;
22
+ researchThreshold;
23
+ maxResults;
24
+ constructor(options = {}) {
25
+ this.weights = { ...DEFAULT_WEIGHTS, ...options.weights };
26
+ this.minConfidence = options.minConfidence ?? 0.3;
27
+ this.researchThreshold = options.researchThreshold ?? 0.5;
28
+ this.maxResults = options.maxResults ?? 5;
29
+ }
30
+ /**
31
+ * Extract keywords from user goal
32
+ */
33
+ extractKeywords(goal) {
34
+ // Normalize: lowercase and split by common delimiters
35
+ const normalized = goal.toLowerCase();
36
+ // Split by spaces, punctuation, and common separators
37
+ const words = normalized
38
+ .split(/[\s,.\-_:;!?()[\]{}'"、。,!?]+/)
39
+ .filter((word) => word.length > 1);
40
+ // Remove common stop words (basic set for both English and Chinese)
41
+ const stopWords = new Set([
42
+ // English
43
+ 'a',
44
+ 'an',
45
+ 'the',
46
+ 'is',
47
+ 'are',
48
+ 'was',
49
+ 'were',
50
+ 'be',
51
+ 'been',
52
+ 'being',
53
+ 'have',
54
+ 'has',
55
+ 'had',
56
+ 'do',
57
+ 'does',
58
+ 'did',
59
+ 'will',
60
+ 'would',
61
+ 'could',
62
+ 'should',
63
+ 'may',
64
+ 'might',
65
+ 'must',
66
+ 'shall',
67
+ 'can',
68
+ 'need',
69
+ 'dare',
70
+ 'ought',
71
+ 'used',
72
+ 'want',
73
+ 'to',
74
+ 'of',
75
+ 'in',
76
+ 'for',
77
+ 'on',
78
+ 'with',
79
+ 'at',
80
+ 'by',
81
+ 'from',
82
+ 'as',
83
+ 'into',
84
+ 'through',
85
+ 'during',
86
+ 'before',
87
+ 'after',
88
+ 'above',
89
+ 'below',
90
+ 'between',
91
+ 'under',
92
+ 'again',
93
+ 'further',
94
+ 'then',
95
+ 'once',
96
+ 'here',
97
+ 'there',
98
+ 'when',
99
+ 'where',
100
+ 'why',
101
+ 'how',
102
+ 'all',
103
+ 'each',
104
+ 'few',
105
+ 'more',
106
+ 'most',
107
+ 'other',
108
+ 'some',
109
+ 'such',
110
+ 'no',
111
+ 'nor',
112
+ 'not',
113
+ 'only',
114
+ 'own',
115
+ 'same',
116
+ 'so',
117
+ 'than',
118
+ 'too',
119
+ 'very',
120
+ 'just',
121
+ 'and',
122
+ 'but',
123
+ 'if',
124
+ 'or',
125
+ 'because',
126
+ 'until',
127
+ 'while',
128
+ 'about',
129
+ 'against',
130
+ 'i',
131
+ 'me',
132
+ 'my',
133
+ 'myself',
134
+ 'we',
135
+ 'our',
136
+ 'you',
137
+ 'your',
138
+ 'he',
139
+ 'him',
140
+ 'his',
141
+ 'she',
142
+ 'her',
143
+ 'it',
144
+ 'its',
145
+ 'they',
146
+ 'them',
147
+ 'their',
148
+ 'what',
149
+ 'which',
150
+ 'who',
151
+ 'whom',
152
+ 'this',
153
+ 'that',
154
+ 'these',
155
+ 'those',
156
+ 'am',
157
+ // Chinese
158
+ '的',
159
+ '了',
160
+ '是',
161
+ '在',
162
+ '我',
163
+ '有',
164
+ '和',
165
+ '就',
166
+ '不',
167
+ '人',
168
+ '都',
169
+ '一',
170
+ '一個',
171
+ '上',
172
+ '也',
173
+ '很',
174
+ '到',
175
+ '說',
176
+ '要',
177
+ '去',
178
+ '你',
179
+ '會',
180
+ '著',
181
+ '沒有',
182
+ '看',
183
+ '好',
184
+ '自己',
185
+ '這',
186
+ '那',
187
+ '什麼',
188
+ '嗎',
189
+ '想',
190
+ '他',
191
+ '她',
192
+ '它',
193
+ '們',
194
+ '來',
195
+ '讓',
196
+ '把',
197
+ '給',
198
+ '用',
199
+ '做',
200
+ '幫',
201
+ '能',
202
+ '可以',
203
+ '需要',
204
+ '想要',
205
+ '請',
206
+ '怎麼',
207
+ '如何',
208
+ ]);
209
+ return words.filter((word) => !stopWords.has(word));
210
+ }
211
+ /**
212
+ * Normalize triggers to structured format
213
+ */
214
+ normalizeTriggers(triggers) {
215
+ if (!triggers) {
216
+ return {};
217
+ }
218
+ // Legacy format: array of strings -> treat as primary keywords
219
+ if (Array.isArray(triggers)) {
220
+ return {
221
+ keywords: {
222
+ primary: triggers.map((t) => t.toLowerCase()),
223
+ secondary: [],
224
+ },
225
+ context_boost: [],
226
+ context_penalty: [],
227
+ priority: 'medium',
228
+ };
229
+ }
230
+ // Normalize all keywords to lowercase
231
+ return {
232
+ keywords: {
233
+ primary: (triggers.keywords?.primary || []).map((k) => k.toLowerCase()),
234
+ secondary: (triggers.keywords?.secondary || []).map((k) => k.toLowerCase()),
235
+ },
236
+ context_boost: (triggers.context_boost || []).map((k) => k.toLowerCase()),
237
+ context_penalty: (triggers.context_penalty || []).map((k) => k.toLowerCase()),
238
+ priority: triggers.priority || 'medium',
239
+ };
240
+ }
241
+ /**
242
+ * Calculate match score for a skill
243
+ */
244
+ calculateScore(keywords, triggers) {
245
+ let score = 0;
246
+ const matchedKeywords = [];
247
+ let hasPrimary = false;
248
+ let hasSecondary = false;
249
+ const primarySet = new Set(triggers.keywords?.primary || []);
250
+ const secondarySet = new Set(triggers.keywords?.secondary || []);
251
+ const boostSet = new Set(triggers.context_boost || []);
252
+ const penaltySet = new Set(triggers.context_penalty || []);
253
+ for (const keyword of keywords) {
254
+ const lowerKeyword = keyword.toLowerCase();
255
+ // Check primary keywords
256
+ if (primarySet.has(lowerKeyword)) {
257
+ score += this.weights.primary;
258
+ matchedKeywords.push(keyword);
259
+ hasPrimary = true;
260
+ }
261
+ // Check secondary keywords
262
+ else if (secondarySet.has(lowerKeyword)) {
263
+ score += this.weights.secondary;
264
+ matchedKeywords.push(keyword);
265
+ hasSecondary = true;
266
+ }
267
+ // Check context boost
268
+ if (boostSet.has(lowerKeyword)) {
269
+ score += this.weights.contextBoost;
270
+ }
271
+ // Check context penalty
272
+ if (penaltySet.has(lowerKeyword)) {
273
+ score += this.weights.contextPenalty; // This is negative
274
+ }
275
+ }
276
+ // Determine match type
277
+ let matchType = 'secondary';
278
+ if (hasPrimary && hasSecondary) {
279
+ matchType = 'mixed';
280
+ }
281
+ else if (hasPrimary) {
282
+ matchType = 'primary';
283
+ }
284
+ return { score, matchedKeywords, matchType };
285
+ }
286
+ /**
287
+ * Calculate confidence from score (normalized to 0-1)
288
+ */
289
+ calculateConfidence(score) {
290
+ // Normalize score to 0-1 range
291
+ // Score of 2.0 or higher = 1.0 confidence
292
+ const confidence = Math.min(score / 2.0, 1.0);
293
+ return Math.max(0, confidence);
294
+ }
295
+ /**
296
+ * Match a single skill against keywords
297
+ */
298
+ matchSkill(skill, keywords) {
299
+ const triggers = this.normalizeTriggers(skill.triggers);
300
+ const { score, matchedKeywords, matchType } = this.calculateScore(keywords, triggers);
301
+ if (matchedKeywords.length === 0) {
302
+ return null;
303
+ }
304
+ const confidence = this.calculateConfidence(score);
305
+ if (confidence < this.minConfidence) {
306
+ return null;
307
+ }
308
+ const priority = triggers.priority || 'medium';
309
+ return {
310
+ name: skill.name,
311
+ confidence,
312
+ matchedKeywords,
313
+ matchType,
314
+ priority,
315
+ reason: this.generateReason(skill, matchedKeywords, matchType),
316
+ };
317
+ }
318
+ /**
319
+ * Generate human-readable reason for recommendation
320
+ */
321
+ generateReason(_skill, matchedKeywords, matchType) {
322
+ const keywordStr = matchedKeywords.slice(0, 3).join(', ');
323
+ const moreCount = matchedKeywords.length - 3;
324
+ if (matchType === 'primary') {
325
+ return `Direct match for "${keywordStr}"${moreCount > 0 ? ` +${moreCount} more` : ''}`;
326
+ }
327
+ else if (matchType === 'mixed') {
328
+ return `Strong match for "${keywordStr}"${moreCount > 0 ? ` +${moreCount} more` : ''}`;
329
+ }
330
+ else {
331
+ return `Related to "${keywordStr}"${moreCount > 0 ? ` +${moreCount} more` : ''}`;
332
+ }
333
+ }
334
+ /**
335
+ * Match skills against a user goal
336
+ */
337
+ matchSkills(goal, skills) {
338
+ const keywords = this.extractKeywords(goal);
339
+ const matches = [];
340
+ for (const skill of skills) {
341
+ const match = this.matchSkill(skill, keywords);
342
+ if (match) {
343
+ matches.push(match);
344
+ }
345
+ }
346
+ // Sort by confidence (desc), then priority (desc), then name (asc)
347
+ matches.sort((a, b) => {
348
+ if (b.confidence !== a.confidence) {
349
+ return b.confidence - a.confidence;
350
+ }
351
+ const priorityDiff = PRIORITY_ORDER[b.priority] - PRIORITY_ORDER[a.priority];
352
+ if (priorityDiff !== 0) {
353
+ return priorityDiff;
354
+ }
355
+ return a.name.localeCompare(b.name);
356
+ });
357
+ return {
358
+ matches: matches.slice(0, this.maxResults),
359
+ extractedKeywords: keywords,
360
+ };
361
+ }
362
+ /**
363
+ * Analyze a goal and return full recommendation
364
+ */
365
+ analyze(goal, skills) {
366
+ const keywords = this.extractKeywords(goal);
367
+ // Separate domain and software skills
368
+ const domainSkills = skills.filter((s) => s.type === 'domain');
369
+ const softwareSkills = skills.filter((s) => s.type === 'software');
370
+ // Match both types
371
+ const domainMatches = this.matchSkills(goal, domainSkills);
372
+ const softwareMatches = this.matchSkills(goal, softwareSkills);
373
+ // Collect software skills from domain skill dependencies
374
+ const fromDependencies = new Set();
375
+ for (const match of domainMatches.matches) {
376
+ const skill = domainSkills.find((s) => s.name === match.name);
377
+ if (skill?.dependencies?.['software-skills']) {
378
+ for (const dep of skill.dependencies['software-skills']) {
379
+ fromDependencies.add(dep);
380
+ }
381
+ }
382
+ }
383
+ // Calculate overall confidence
384
+ const allMatches = [...domainMatches.matches, ...softwareMatches.matches];
385
+ const overallConfidence = allMatches.length > 0
386
+ ? allMatches.reduce((sum, m) => sum + m.confidence, 0) / allMatches.length
387
+ : 0;
388
+ // Determine if research mode should be triggered
389
+ const researchMode = overallConfidence < this.researchThreshold;
390
+ // Generate research suggestions if in research mode
391
+ const researchSuggestions = researchMode ? this.generateResearchSuggestions(goal, keywords) : undefined;
392
+ return {
393
+ goal,
394
+ extractedKeywords: keywords,
395
+ domain_skills: domainMatches.matches,
396
+ software_skills: softwareMatches.matches,
397
+ from_dependencies: Array.from(fromDependencies),
398
+ overall_confidence: overallConfidence,
399
+ research_mode: researchMode,
400
+ research_suggestions: researchSuggestions,
401
+ };
402
+ }
403
+ /**
404
+ * Generate research suggestions when confidence is low
405
+ */
406
+ generateResearchSuggestions(goal, keywords) {
407
+ const suggestions = [];
408
+ // Suggest searching for skills related to main keywords
409
+ if (keywords.length > 0) {
410
+ suggestions.push(`Search external skill registries for: ${keywords.slice(0, 3).join(', ')}`);
411
+ }
412
+ // Suggest web search for domain knowledge
413
+ suggestions.push(`Web search for best practices: "${goal}"`);
414
+ // Suggest asking user for clarification
415
+ suggestions.push('Ask user to clarify specific requirements or technologies');
416
+ return suggestions;
417
+ }
418
+ }
419
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/matching/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skill Matching Engine
3
+ *
4
+ * @module matching
5
+ */
6
+ export { MatchingEngine } from './engine.js';
7
+ export type { MatchingWeights, MatchingOptions, SkillData, SkillMatch, SkillRecommendation, } from './types.js';
8
+ export { DEFAULT_WEIGHTS } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/matching/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,eAAe,EACf,eAAe,EACf,SAAS,EACT,UAAU,EACV,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Skill Matching Engine
3
+ *
4
+ * @module matching
5
+ */
6
+ export { MatchingEngine } from './engine.js';
7
+ export { DEFAULT_WEIGHTS } from './types.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/matching/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Types for skill matching engine
3
+ */
4
+ import type { SkillTriggers } from '../skill/types.js';
5
+ /**
6
+ * Matching weights configuration
7
+ */
8
+ export interface MatchingWeights {
9
+ /** Weight for primary keyword matches (default: 1.0) */
10
+ primary: number;
11
+ /** Weight for secondary keyword matches (default: 0.6) */
12
+ secondary: number;
13
+ /** Bonus for context_boost matches (default: 0.2) */
14
+ contextBoost: number;
15
+ /** Penalty for context_penalty matches (default: -0.3) */
16
+ contextPenalty: number;
17
+ }
18
+ /**
19
+ * Default matching weights
20
+ */
21
+ export declare const DEFAULT_WEIGHTS: MatchingWeights;
22
+ /**
23
+ * Individual skill match result
24
+ */
25
+ export interface SkillMatch {
26
+ /** Skill name */
27
+ name: string;
28
+ /** Match confidence score (0-1) */
29
+ confidence: number;
30
+ /** Keywords that matched */
31
+ matchedKeywords: string[];
32
+ /** Match type (primary or secondary) */
33
+ matchType: 'primary' | 'secondary' | 'mixed';
34
+ /** Priority from skill triggers */
35
+ priority: 'high' | 'medium' | 'low';
36
+ /** Reason for recommendation */
37
+ reason: string;
38
+ }
39
+ /**
40
+ * Skill recommendation result from matching engine
41
+ */
42
+ export interface SkillRecommendation {
43
+ /** Original user goal/query */
44
+ goal: string;
45
+ /** Extracted keywords from goal */
46
+ extractedKeywords: string[];
47
+ /** Matched domain skills */
48
+ domain_skills: SkillMatch[];
49
+ /** Matched software skills */
50
+ software_skills: SkillMatch[];
51
+ /** Software skills from domain skill dependencies */
52
+ from_dependencies: string[];
53
+ /** Overall confidence score (0-1) */
54
+ overall_confidence: number;
55
+ /** Whether research mode should be triggered (confidence < 0.5) */
56
+ research_mode: boolean;
57
+ /** Suggested research topics if research_mode is true */
58
+ research_suggestions?: string[];
59
+ }
60
+ /**
61
+ * Skill data for matching
62
+ */
63
+ export interface SkillData {
64
+ /** Skill name */
65
+ name: string;
66
+ /** Skill description */
67
+ description: string;
68
+ /** Skill type */
69
+ type: 'domain' | 'software';
70
+ /** Triggers configuration */
71
+ triggers?: string[] | SkillTriggers;
72
+ /** Dependencies */
73
+ dependencies?: {
74
+ skills?: string[];
75
+ 'software-skills'?: string[];
76
+ };
77
+ }
78
+ /**
79
+ * Matching engine options
80
+ */
81
+ export interface MatchingOptions {
82
+ /** Custom weights */
83
+ weights?: Partial<MatchingWeights>;
84
+ /** Minimum confidence threshold (default: 0.3) */
85
+ minConfidence?: number;
86
+ /** Research mode threshold (default: 0.5) */
87
+ researchThreshold?: number;
88
+ /** Maximum results per category (default: 5) */
89
+ maxResults?: number;
90
+ }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/matching/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,eAK7B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,wCAAwC;IACxC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC7C,mCAAmC;IACnC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,4BAA4B;IAC5B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,8BAA8B;IAC9B,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,aAAa,EAAE,OAAO,CAAC;IACvB,yDAAyD;IACzD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IACpC,mBAAmB;IACnB,YAAY,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Types for skill matching engine
3
+ */
4
+ /**
5
+ * Default matching weights
6
+ */
7
+ export const DEFAULT_WEIGHTS = {
8
+ primary: 1.0,
9
+ secondary: 0.6,
10
+ contextBoost: 0.2,
11
+ contextPenalty: -0.3,
12
+ };
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/matching/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,CAAC,GAAG;CACrB,CAAC"}
@@ -76,11 +76,57 @@ export declare const skillSchema: {
76
76
  readonly description: "Keywords for search";
77
77
  };
78
78
  readonly triggers: {
79
- readonly type: "array";
80
- readonly items: {
81
- readonly type: "string";
82
- };
83
- readonly description: "Trigger words to activate the skill";
79
+ readonly oneOf: readonly [{
80
+ readonly type: "array";
81
+ readonly items: {
82
+ readonly type: "string";
83
+ };
84
+ }, {
85
+ readonly type: "object";
86
+ readonly properties: {
87
+ readonly keywords: {
88
+ readonly type: "object";
89
+ readonly properties: {
90
+ readonly primary: {
91
+ readonly type: "array";
92
+ readonly items: {
93
+ readonly type: "string";
94
+ };
95
+ readonly description: "Primary keywords (weight: 1.0) - direct match triggers";
96
+ };
97
+ readonly secondary: {
98
+ readonly type: "array";
99
+ readonly items: {
100
+ readonly type: "string";
101
+ };
102
+ readonly description: "Secondary keywords (weight: 0.6) - candidate match";
103
+ };
104
+ };
105
+ readonly additionalProperties: false;
106
+ };
107
+ readonly context_boost: {
108
+ readonly type: "array";
109
+ readonly items: {
110
+ readonly type: "string";
111
+ };
112
+ readonly description: "Context words that boost score (+0.2 when co-occurring)";
113
+ };
114
+ readonly context_penalty: {
115
+ readonly type: "array";
116
+ readonly items: {
117
+ readonly type: "string";
118
+ };
119
+ readonly description: "Context words that reduce score (-0.3 when co-occurring)";
120
+ };
121
+ readonly priority: {
122
+ readonly type: "string";
123
+ readonly enum: readonly ["high", "medium", "low"];
124
+ readonly description: "Priority for tie-breaking (default: medium)";
125
+ };
126
+ };
127
+ readonly additionalProperties: false;
128
+ }];
129
+ readonly description: "Trigger words or structured matching configuration";
84
130
  };
85
131
  readonly capabilities: {
86
132
  readonly type: "array";
@@ -153,6 +199,13 @@ export declare const skillSchema: {
153
199
  };
154
200
  readonly description: "Skill dependencies (names or sources)";
155
201
  };
202
+ readonly 'software-skills': {
203
+ readonly type: "array";
204
+ readonly items: {
205
+ readonly type: "string";
206
+ };
207
+ readonly description: "Software skill dependencies for domain skills (cross-domain)";
208
+ };
156
209
  readonly mcp: {
157
210
  readonly type: "array";
158
211
  readonly items: {
@@ -163,11 +216,11 @@ export declare const skillSchema: {
163
216
  };
164
217
  readonly additionalProperties: false;
165
218
  }];
166
- readonly description: "Skill and MCP dependencies";
219
+ readonly description: "Skill, software-skill, and MCP dependencies";
167
220
  };
168
221
  };
169
- readonly required: readonly ["schema", "name", "version", "description", "instructions"];
170
- readonly additionalProperties: false;
222
+ readonly required: readonly ["name", "description"];
223
+ readonly additionalProperties: true;
171
224
  };
172
225
  /**
173
226
  * Human-readable field descriptions for error messages
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/parser/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Id,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAcpD,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/parser/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgMd,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAcpD,CAAC"}