codingbuddy 1.0.1 → 1.1.1

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 (40) hide show
  1. package/README.md +1 -0
  2. package/dist/src/mcp/mcp-serverless.d.ts +10 -0
  3. package/dist/src/mcp/mcp-serverless.js +83 -0
  4. package/dist/src/mcp/mcp-serverless.js.map +1 -1
  5. package/dist/src/mcp/mcp.module.js +2 -1
  6. package/dist/src/mcp/mcp.module.js.map +1 -1
  7. package/dist/src/mcp/mcp.service.d.ts +4 -1
  8. package/dist/src/mcp/mcp.service.js +34 -2
  9. package/dist/src/mcp/mcp.service.js.map +1 -1
  10. package/dist/src/rules/agent.schema.js +2 -29
  11. package/dist/src/rules/agent.schema.js.map +1 -1
  12. package/dist/src/rules/skill.schema.d.ts +17 -0
  13. package/dist/src/rules/skill.schema.js +64 -0
  14. package/dist/src/rules/skill.schema.js.map +1 -0
  15. package/dist/src/shared/security.utils.d.ts +1 -0
  16. package/dist/src/shared/security.utils.js +29 -0
  17. package/dist/src/shared/security.utils.js.map +1 -1
  18. package/dist/src/skill/i18n/index.d.ts +2 -0
  19. package/dist/src/skill/i18n/index.js +21 -0
  20. package/dist/src/skill/i18n/index.js.map +1 -0
  21. package/dist/src/skill/i18n/keywords.d.ts +2 -0
  22. package/dist/src/skill/i18n/keywords.js +322 -0
  23. package/dist/src/skill/i18n/keywords.js.map +1 -0
  24. package/dist/src/skill/i18n/keywords.types.d.ts +14 -0
  25. package/dist/src/skill/i18n/keywords.types.js +11 -0
  26. package/dist/src/skill/i18n/keywords.types.js.map +1 -0
  27. package/dist/src/skill/index.d.ts +4 -0
  28. package/dist/src/skill/index.js +25 -0
  29. package/dist/src/skill/index.js.map +1 -0
  30. package/dist/src/skill/skill-recommendation.service.d.ts +5 -0
  31. package/dist/src/skill/skill-recommendation.service.js +79 -0
  32. package/dist/src/skill/skill-recommendation.service.js.map +1 -0
  33. package/dist/src/skill/skill-recommendation.types.d.ts +15 -0
  34. package/dist/src/skill/skill-recommendation.types.js +3 -0
  35. package/dist/src/skill/skill-recommendation.types.js.map +1 -0
  36. package/dist/src/skill/skill-triggers.d.ts +7 -0
  37. package/dist/src/skill/skill-triggers.js +50 -0
  38. package/dist/src/skill/skill-triggers.js.map +1 -0
  39. package/dist/tsconfig.build.tsbuildinfo +1 -1
  40. package/package.json +3 -2
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SKILL_KEYWORDS = void 0;
4
+ exports.SKILL_KEYWORDS = [
5
+ {
6
+ skillName: 'systematic-debugging',
7
+ priority: 25,
8
+ concepts: {
9
+ error: {
10
+ en: [
11
+ 'error',
12
+ 'bug',
13
+ 'issue',
14
+ 'problem',
15
+ 'exception',
16
+ 'crash',
17
+ 'failure',
18
+ ],
19
+ ko: ['에러', '오류', '버그', '문제', '이슈', '장애', '예외'],
20
+ ja: ['エラー', 'バグ', '問題', '障害', '例外'],
21
+ zh: ['错误', 'bug', '问题', '异常', '故障'],
22
+ es: ['error', 'bug', 'problema', 'fallo', 'excepción'],
23
+ },
24
+ not_working: {
25
+ en: [
26
+ 'not working',
27
+ "doesn't work",
28
+ 'broken',
29
+ 'failed',
30
+ 'failing',
31
+ 'stuck',
32
+ ],
33
+ ko: ['안 돼', '안돼', '안되', '작동 안', '동작 안', '실패', '안 나와'],
34
+ ja: ['動かない', '機能しない', '壊れた', '失敗'],
35
+ zh: ['不工作', '不能用', '坏了', '失败'],
36
+ es: ['no funciona', 'roto', 'fallido'],
37
+ },
38
+ fix: {
39
+ en: ['fix', 'debug', 'solve', 'resolve', 'troubleshoot', 'investigate'],
40
+ ko: ['고쳐', '수정해', '해결해', '디버그', '디버깅'],
41
+ ja: ['直して', '修正', '解決', 'デバッグ'],
42
+ zh: ['修复', '修正', '解决', '调试'],
43
+ es: ['arreglar', 'solucionar', 'depurar', 'resolver'],
44
+ },
45
+ symptom: {
46
+ en: ['slow', 'freeze', 'hang', 'timeout', 'memory leak'],
47
+ ko: ['느려', '멈춰', '타임아웃', '메모리 누수'],
48
+ ja: ['遅い', 'フリーズ', 'タイムアウト'],
49
+ zh: ['慢', '卡住', '超时', '内存泄漏'],
50
+ es: ['lento', 'congelado', 'tiempo de espera'],
51
+ },
52
+ },
53
+ },
54
+ {
55
+ skillName: 'executing-plans',
56
+ priority: 22,
57
+ concepts: {
58
+ execute: {
59
+ en: ['execute plan', 'follow plan', 'run plan', 'implement plan'],
60
+ ko: ['계획 실행', '플랜 실행', '실행해'],
61
+ ja: ['計画を実行', 'プランを実行'],
62
+ zh: ['执行计划', '运行计划'],
63
+ es: ['ejecutar plan', 'seguir plan'],
64
+ },
65
+ step_by_step: {
66
+ en: ['step by step', 'one by one', 'sequentially'],
67
+ ko: ['순서대로', '하나씩', '차례로'],
68
+ ja: ['順番に', '一つずつ'],
69
+ zh: ['一步一步', '逐个', '按顺序'],
70
+ es: ['paso a paso', 'uno por uno'],
71
+ },
72
+ checkpoint: {
73
+ en: ['checkpoint', 'with review'],
74
+ ko: ['체크포인트', '확인하면서'],
75
+ ja: ['チェックポイント'],
76
+ zh: ['检查点', '审查'],
77
+ es: ['checkpoint', 'revisión'],
78
+ },
79
+ },
80
+ },
81
+ {
82
+ skillName: 'writing-plans',
83
+ priority: 20,
84
+ concepts: {
85
+ plan: {
86
+ en: ['plan', 'roadmap', 'schedule', 'milestone'],
87
+ ko: ['계획', '플랜', '일정', '로드맵', '마일스톤'],
88
+ ja: ['計画', 'ロードマップ', 'スケジュール'],
89
+ zh: ['计划', '路线图', '日程', '里程碑'],
90
+ es: ['plan', 'cronograma', 'hoja de ruta'],
91
+ },
92
+ complex: {
93
+ en: ['complex', 'large', 'big project', 'major', 'significant'],
94
+ ko: ['복잡', '대규모', '큰 작업', '대형'],
95
+ ja: ['複雑', '大規模', '大きなプロジェクト'],
96
+ zh: ['复杂', '大型', '重大', '大项目'],
97
+ es: ['complejo', 'grande', 'mayor', 'significativo'],
98
+ },
99
+ architecture: {
100
+ en: ['architecture', 'structure', 'design', 'blueprint'],
101
+ ko: ['아키텍처', '구조', '설계'],
102
+ ja: ['アーキテクチャ', '構造', '設計'],
103
+ zh: ['架构', '结构', '设计'],
104
+ es: ['arquitectura', 'estructura', 'diseño'],
105
+ },
106
+ refactor: {
107
+ en: ['refactor', 'restructure', 'reorganize'],
108
+ ko: ['리팩토링', '재구성', '재구조화'],
109
+ ja: ['リファクタリング', '再構成'],
110
+ zh: ['重构', '重组', '重新设计'],
111
+ es: ['refactorizar', 'reestructurar'],
112
+ },
113
+ },
114
+ },
115
+ {
116
+ skillName: 'frontend-design',
117
+ priority: 18,
118
+ concepts: {
119
+ ui_element: {
120
+ en: [
121
+ 'button',
122
+ 'form',
123
+ 'input',
124
+ 'modal',
125
+ 'popup',
126
+ 'dropdown',
127
+ 'menu',
128
+ 'tab',
129
+ 'card',
130
+ ],
131
+ ko: [
132
+ '버튼',
133
+ '폼',
134
+ '입력',
135
+ '모달',
136
+ '팝업',
137
+ '드롭다운',
138
+ '메뉴',
139
+ '탭',
140
+ '카드',
141
+ ],
142
+ ja: [
143
+ 'ボタン',
144
+ 'フォーム',
145
+ '入力',
146
+ 'モーダル',
147
+ 'ポップアップ',
148
+ 'ドロップダウン',
149
+ 'メニュー',
150
+ 'タブ',
151
+ 'カード',
152
+ ],
153
+ zh: [
154
+ '按钮',
155
+ '表单',
156
+ '输入',
157
+ '模态框',
158
+ '弹窗',
159
+ '下拉菜单',
160
+ '菜单',
161
+ '标签',
162
+ '卡片',
163
+ ],
164
+ es: [
165
+ 'botón',
166
+ 'formulario',
167
+ 'entrada',
168
+ 'modal',
169
+ 'popup',
170
+ 'menú desplegable',
171
+ 'menú',
172
+ 'pestaña',
173
+ 'tarjeta',
174
+ ],
175
+ },
176
+ component: {
177
+ en: ['component', 'widget', 'element'],
178
+ ko: ['컴포넌트', '위젯', '요소'],
179
+ ja: ['コンポーネント', 'ウィジェット'],
180
+ zh: ['组件', '控件', '元素'],
181
+ es: ['componente', 'widget', 'elemento'],
182
+ },
183
+ page: {
184
+ en: ['page', 'screen', 'view', 'dashboard', 'landing'],
185
+ ko: ['페이지', '화면', '뷰', '대시보드', '랜딩'],
186
+ ja: ['ページ', '画面', 'ビュー', 'ダッシュボード'],
187
+ zh: ['页面', '屏幕', '视图', '仪表板', '落地页'],
188
+ es: ['página', 'pantalla', 'vista', 'panel', 'landing'],
189
+ },
190
+ style: {
191
+ en: ['style', 'CSS', 'layout', 'design', 'Tailwind'],
192
+ ko: ['스타일', '레이아웃', '디자인', '예쁘게', '꾸며'],
193
+ ja: ['スタイル', 'レイアウト', 'デザイン'],
194
+ zh: ['样式', '布局', '设计', '美化'],
195
+ es: ['estilo', 'diseño', 'disposición'],
196
+ },
197
+ responsive: {
198
+ en: ['responsive', 'mobile', 'desktop', 'media query'],
199
+ ko: ['반응형', '모바일', '데스크톱'],
200
+ ja: ['レスポンシブ', 'モバイル', 'デスクトップ'],
201
+ zh: ['响应式', '移动端', '桌面端', '媒体查询'],
202
+ es: ['responsivo', 'móvil', 'escritorio'],
203
+ },
204
+ },
205
+ },
206
+ {
207
+ skillName: 'test-driven-development',
208
+ priority: 15,
209
+ concepts: {
210
+ tdd: {
211
+ en: ['TDD', 'test first', 'red green', 'test driven'],
212
+ ko: ['TDD', '테스트 먼저', '레드 그린'],
213
+ ja: ['TDD', 'テストファースト', 'レッドグリーン'],
214
+ zh: ['TDD', '测试先行', '红绿'],
215
+ es: ['TDD', 'test primero', 'rojo verde'],
216
+ },
217
+ test: {
218
+ en: ['test', 'spec', 'unit test', 'integration test', 'e2e'],
219
+ ko: ['테스트', '스펙', '유닛 테스트', '통합 테스트'],
220
+ ja: ['テスト', 'スペック', 'ユニットテスト', '統合テスト'],
221
+ zh: ['测试', '单元测试', '集成测试', '端到端'],
222
+ es: ['test', 'prueba', 'prueba unitaria', 'prueba de integración'],
223
+ },
224
+ coverage: {
225
+ en: ['coverage', 'test coverage'],
226
+ ko: ['커버리지', '테스트 범위'],
227
+ ja: ['カバレッジ', 'テストカバレッジ'],
228
+ zh: ['覆盖率', '测试覆盖'],
229
+ es: ['cobertura', 'cobertura de pruebas'],
230
+ },
231
+ verify: {
232
+ en: ['verify', 'validate', 'assert'],
233
+ ko: ['검증', '확인'],
234
+ ja: ['検証', 'バリデーション'],
235
+ zh: ['验证', '断言'],
236
+ es: ['verificar', 'validar'],
237
+ },
238
+ },
239
+ },
240
+ {
241
+ skillName: 'dispatching-parallel-agents',
242
+ priority: 12,
243
+ concepts: {
244
+ parallel: {
245
+ en: ['parallel', 'concurrent', 'simultaneously', 'at the same time'],
246
+ ko: ['동시에', '병렬', '함께', '한꺼번에'],
247
+ ja: ['並列', '同時に', '並行'],
248
+ zh: ['并行', '同时', '并发'],
249
+ es: ['paralelo', 'concurrente', 'simultáneo'],
250
+ },
251
+ multiple: {
252
+ en: ['multiple', 'several', 'batch', 'many tasks'],
253
+ ko: ['여러 개', '다수', '배치', '여러 작업'],
254
+ ja: ['複数', 'バッチ', '多数'],
255
+ zh: ['多个', '批量', '许多任务'],
256
+ es: ['múltiple', 'varios', 'lote'],
257
+ },
258
+ },
259
+ },
260
+ {
261
+ skillName: 'subagent-driven-development',
262
+ priority: 12,
263
+ concepts: {
264
+ subagent: {
265
+ en: ['subagent', 'sub-agent'],
266
+ ko: ['서브에이전트', '하위 에이전트'],
267
+ ja: ['サブエージェント'],
268
+ zh: ['子代理', '子智能体'],
269
+ es: ['subagente', 'sub-agente'],
270
+ },
271
+ session: {
272
+ en: ['current session', 'this session'],
273
+ ko: ['현재 세션', '이 세션'],
274
+ ja: ['現在のセッション', 'このセッション'],
275
+ zh: ['当前会话', '本次会话'],
276
+ es: ['sesión actual', 'esta sesión'],
277
+ },
278
+ },
279
+ },
280
+ {
281
+ skillName: 'brainstorming',
282
+ priority: 10,
283
+ concepts: {
284
+ create: {
285
+ en: ['create', 'build', 'make', 'develop', 'implement'],
286
+ ko: ['만들어', '생성해', '개발해', '구현해'],
287
+ ja: ['作成', '作って', '開発', '実装'],
288
+ zh: ['创建', '开发', '做', '实现'],
289
+ es: ['crear', 'construir', 'hacer', 'desarrollar'],
290
+ },
291
+ add: {
292
+ en: ['add', 'write', 'include'],
293
+ ko: ['추가해', '작성해', '넣어'],
294
+ ja: ['追加', '書いて'],
295
+ zh: ['添加', '写', '加入'],
296
+ es: ['añadir', 'escribir', 'incluir'],
297
+ },
298
+ new: {
299
+ en: ['new', 'from scratch', 'fresh'],
300
+ ko: ['새로운', '신규', '처음부터'],
301
+ ja: ['新しい', 'ゼロから'],
302
+ zh: ['新的', '从头开始', '全新'],
303
+ es: ['nuevo', 'desde cero'],
304
+ },
305
+ idea: {
306
+ en: ['idea', 'how to', 'approach', 'best practice'],
307
+ ko: ['아이디어', '어떻게', '방법', '좋은 방법'],
308
+ ja: ['アイデア', 'どうやって', '方法'],
309
+ zh: ['想法', '怎么', '方法', '最佳实践'],
310
+ es: ['idea', 'cómo', 'enfoque', 'mejor práctica'],
311
+ },
312
+ improve: {
313
+ en: ['improve', 'enhance', 'upgrade', 'optimize'],
314
+ ko: ['개선해', '향상', '업그레이드', '최적화'],
315
+ ja: ['改善', '向上', 'アップグレード'],
316
+ zh: ['改进', '提升', '升级', '优化'],
317
+ es: ['mejorar', 'optimizar', 'actualizar'],
318
+ },
319
+ },
320
+ },
321
+ ];
322
+ //# sourceMappingURL=keywords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../../../src/skill/i18n/keywords.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type SupportedLanguage = 'en' | 'ko' | 'ja' | 'zh' | 'es';
2
+ export type ConceptKeywords = {
3
+ [lang in SupportedLanguage]: string[];
4
+ };
5
+ export interface SkillKeywordConfig {
6
+ skillName: string;
7
+ priority: number;
8
+ concepts: {
9
+ [conceptName: string]: ConceptKeywords;
10
+ };
11
+ }
12
+ export declare const LANGUAGE_OPTIONS: Record<SupportedLanguage, {
13
+ useWordBoundary: boolean;
14
+ }>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LANGUAGE_OPTIONS = void 0;
4
+ exports.LANGUAGE_OPTIONS = {
5
+ en: { useWordBoundary: true },
6
+ ko: { useWordBoundary: false },
7
+ ja: { useWordBoundary: false },
8
+ zh: { useWordBoundary: false },
9
+ es: { useWordBoundary: true },
10
+ };
11
+ //# sourceMappingURL=keywords.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keywords.types.js","sourceRoot":"","sources":["../../../../src/skill/i18n/keywords.types.ts"],"names":[],"mappings":";;;AA0Ba,QAAA,gBAAgB,GAGzB;IACF,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;IAC7B,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;IAC9B,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;IAC9B,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;IAC9B,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;CAC9B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './skill-recommendation.types';
2
+ export { SkillRecommendationService } from './skill-recommendation.service';
3
+ export { getSkillTriggers, getSortedTriggers } from './skill-triggers';
4
+ export * from './i18n';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getSortedTriggers = exports.getSkillTriggers = exports.SkillRecommendationService = void 0;
18
+ __exportStar(require("./skill-recommendation.types"), exports);
19
+ var skill_recommendation_service_1 = require("./skill-recommendation.service");
20
+ Object.defineProperty(exports, "SkillRecommendationService", { enumerable: true, get: function () { return skill_recommendation_service_1.SkillRecommendationService; } });
21
+ var skill_triggers_1 = require("./skill-triggers");
22
+ Object.defineProperty(exports, "getSkillTriggers", { enumerable: true, get: function () { return skill_triggers_1.getSkillTriggers; } });
23
+ Object.defineProperty(exports, "getSortedTriggers", { enumerable: true, get: function () { return skill_triggers_1.getSortedTriggers; } });
24
+ __exportStar(require("./i18n"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skill/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,+DAA6C;AAG7C,+EAA4E;AAAnE,0IAAA,0BAA0B,OAAA;AAGnC,mDAAuE;AAA9D,kHAAA,gBAAgB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAG5C,yCAAuB"}
@@ -0,0 +1,5 @@
1
+ import type { RecommendSkillsResult } from './skill-recommendation.types';
2
+ export declare class SkillRecommendationService {
3
+ recommendSkills(prompt: string): RecommendSkillsResult;
4
+ private determineConfidence;
5
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SkillRecommendationService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const skill_triggers_1 = require("./skill-triggers");
12
+ const SKILL_DESCRIPTIONS = {
13
+ 'systematic-debugging': 'Systematic approach to debugging',
14
+ 'test-driven-development': 'Test-driven development workflow',
15
+ brainstorming: 'Explore requirements before implementation',
16
+ 'executing-plans': 'Execute implementation plans with checkpoints',
17
+ 'writing-plans': 'Create implementation plans',
18
+ 'frontend-design': 'Build production-grade UI components',
19
+ 'subagent-driven-development': 'Execute plans in current session',
20
+ 'dispatching-parallel-agents': 'Handle parallel independent tasks',
21
+ };
22
+ let SkillRecommendationService = class SkillRecommendationService {
23
+ recommendSkills(prompt) {
24
+ const trimmedPrompt = prompt.trim();
25
+ if (trimmedPrompt.length === 0) {
26
+ return {
27
+ recommendations: [],
28
+ originalPrompt: prompt,
29
+ };
30
+ }
31
+ const triggers = (0, skill_triggers_1.getSortedTriggers)();
32
+ const skillMatches = new Map();
33
+ for (const trigger of triggers) {
34
+ const matchedPatterns = [];
35
+ for (const pattern of trigger.patterns) {
36
+ if (pattern.test(trimmedPrompt)) {
37
+ const patternSource = pattern.source;
38
+ matchedPatterns.push(patternSource);
39
+ }
40
+ }
41
+ if (matchedPatterns.length > 0 && !skillMatches.has(trigger.skillName)) {
42
+ skillMatches.set(trigger.skillName, {
43
+ matchedPatterns,
44
+ priority: trigger.priority,
45
+ });
46
+ }
47
+ }
48
+ const recommendations = [];
49
+ for (const [skillName, { matchedPatterns }] of skillMatches) {
50
+ const confidence = this.determineConfidence(matchedPatterns.length);
51
+ recommendations.push({
52
+ skillName,
53
+ confidence,
54
+ matchedPatterns,
55
+ description: SKILL_DESCRIPTIONS[skillName] || `Skill: ${skillName}`,
56
+ });
57
+ }
58
+ recommendations.sort((a, b) => {
59
+ const aPriority = skillMatches.get(a.skillName)?.priority ?? 0;
60
+ const bPriority = skillMatches.get(b.skillName)?.priority ?? 0;
61
+ return bPriority - aPriority;
62
+ });
63
+ return {
64
+ recommendations,
65
+ originalPrompt: prompt,
66
+ };
67
+ }
68
+ determineConfidence(matchCount) {
69
+ if (matchCount >= 3) {
70
+ return 'high';
71
+ }
72
+ return 'medium';
73
+ }
74
+ };
75
+ exports.SkillRecommendationService = SkillRecommendationService;
76
+ exports.SkillRecommendationService = SkillRecommendationService = __decorate([
77
+ (0, common_1.Injectable)()
78
+ ], SkillRecommendationService);
79
+ //# sourceMappingURL=skill-recommendation.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-recommendation.service.js","sourceRoot":"","sources":["../../../src/skill/skill-recommendation.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAK5C,qDAAqD;AAKrD,MAAM,kBAAkB,GAA2B;IACjD,sBAAsB,EAAE,kCAAkC;IAC1D,yBAAyB,EAAE,kCAAkC;IAC7D,aAAa,EAAE,4CAA4C;IAC3D,iBAAiB,EAAE,+CAA+C;IAClE,eAAe,EAAE,6BAA6B;IAC9C,iBAAiB,EAAE,sCAAsC;IACzD,6BAA6B,EAAE,kCAAkC;IACjE,6BAA6B,EAAE,mCAAmC;CACnE,CAAC;AAMK,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAMrC,eAAe,CAAC,MAAc;QAC5B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAGpC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,eAAe,EAAE,EAAE;gBACnB,cAAc,EAAE,MAAM;aACvB,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,kCAAiB,GAAE,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,GAAG,EAGzB,CAAC;QAGJ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,eAAe,GAAa,EAAE,CAAC;YAErC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACvC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBAEhC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;oBACrC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAGD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;oBAClC,eAAe;oBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAGD,MAAM,eAAe,GAA0B,EAAE,CAAC;QAElD,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEpE,eAAe,CAAC,IAAI,CAAC;gBACnB,SAAS;gBACT,UAAU;gBACV,eAAe;gBACf,WAAW,EAAE,kBAAkB,CAAC,SAAS,CAAC,IAAI,UAAU,SAAS,EAAE;aACpE,CAAC,CAAC;QACL,CAAC;QAGD,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC;YAC/D,OAAO,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,eAAe;YACf,cAAc,EAAE,MAAM;SACvB,CAAC;IACJ,CAAC;IAKO,mBAAmB,CAAC,UAAkB;QAC5C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAhFY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;GACA,0BAA0B,CAgFtC"}
@@ -0,0 +1,15 @@
1
+ export interface SkillTrigger {
2
+ skillName: string;
3
+ patterns: RegExp[];
4
+ priority: number;
5
+ }
6
+ export interface SkillRecommendation {
7
+ skillName: string;
8
+ confidence: 'high' | 'medium' | 'low';
9
+ matchedPatterns: string[];
10
+ description: string;
11
+ }
12
+ export interface RecommendSkillsResult {
13
+ recommendations: SkillRecommendation[];
14
+ originalPrompt: string;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=skill-recommendation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-recommendation.types.js","sourceRoot":"","sources":["../../../src/skill/skill-recommendation.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { SkillTrigger } from './skill-recommendation.types';
2
+ import { type SupportedLanguage, type SkillKeywordConfig } from './i18n/keywords.types';
3
+ export declare function buildPatternForLanguage(keywords: string[], language: SupportedLanguage): RegExp;
4
+ export declare function buildTriggersFromKeywords(config: SkillKeywordConfig[]): SkillTrigger[];
5
+ export declare function getSkillTriggers(): SkillTrigger[];
6
+ export declare function getSortedTriggers(): SkillTrigger[];
7
+ export declare function clearTriggerCache(): void;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPatternForLanguage = buildPatternForLanguage;
4
+ exports.buildTriggersFromKeywords = buildTriggersFromKeywords;
5
+ exports.getSkillTriggers = getSkillTriggers;
6
+ exports.getSortedTriggers = getSortedTriggers;
7
+ exports.clearTriggerCache = clearTriggerCache;
8
+ const keywords_1 = require("./i18n/keywords");
9
+ const keywords_types_1 = require("./i18n/keywords.types");
10
+ function buildPatternForLanguage(keywords, language) {
11
+ const { useWordBoundary } = keywords_types_1.LANGUAGE_OPTIONS[language];
12
+ const escaped = keywords.map(kw => kw.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\s+/g, '\\s*'));
13
+ if (useWordBoundary) {
14
+ return new RegExp(`\\b(${escaped.join('|')})\\b`, 'i');
15
+ }
16
+ else {
17
+ return new RegExp(`(${escaped.join('|')})`, 'i');
18
+ }
19
+ }
20
+ function buildTriggersFromKeywords(config) {
21
+ return config.map(skill => {
22
+ const patterns = [];
23
+ for (const conceptKeywords of Object.values(skill.concepts)) {
24
+ for (const [lang, keywords] of Object.entries(conceptKeywords)) {
25
+ if (Array.isArray(keywords) && keywords.length > 0) {
26
+ patterns.push(buildPatternForLanguage(keywords, lang));
27
+ }
28
+ }
29
+ }
30
+ return {
31
+ skillName: skill.skillName,
32
+ patterns,
33
+ priority: skill.priority,
34
+ };
35
+ });
36
+ }
37
+ let cachedTriggers = null;
38
+ function getSkillTriggers() {
39
+ if (!cachedTriggers) {
40
+ cachedTriggers = buildTriggersFromKeywords(keywords_1.SKILL_KEYWORDS);
41
+ }
42
+ return cachedTriggers;
43
+ }
44
+ function getSortedTriggers() {
45
+ return [...getSkillTriggers()].sort((a, b) => b.priority - a.priority);
46
+ }
47
+ function clearTriggerCache() {
48
+ cachedTriggers = null;
49
+ }
50
+ //# sourceMappingURL=skill-triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-triggers.js","sourceRoot":"","sources":["../../../src/skill/skill-triggers.ts"],"names":[],"mappings":";;AAeA,0DAkBC;AAKD,8DAsBC;AAOD,4CAKC;AAKD,8CAEC;AAKD,8CAEC;AArFD,8CAAiD;AACjD,0DAI+B;AAS/B,SAAgB,uBAAuB,CACrC,QAAkB,EAClB,QAA2B;IAE3B,MAAM,EAAE,eAAe,EAAE,GAAG,iCAAgB,CAAC,QAAQ,CAAC,CAAC;IAGvD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAC1B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CACxE,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QAEpB,OAAO,IAAI,MAAM,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QAEN,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAKD,SAAgB,yBAAyB,CACvC,MAA4B;IAE5B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,QAAQ,CAAC,IAAI,CACX,uBAAuB,CAAC,QAAQ,EAAE,IAAyB,CAAC,CAC7D,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,cAAc,GAA0B,IAAI,CAAC;AAKjD,SAAgB,gBAAgB;IAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,yBAAyB,CAAC,yBAAc,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAKD,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,GAAG,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzE,CAAC;AAKD,SAAgB,iBAAiB;IAC/B,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}