codingbuddy 3.0.3 → 3.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.
- package/dist/src/config/config.schema.d.ts +2 -0
- package/dist/src/config/config.schema.js +1 -0
- package/dist/src/config/config.schema.js.map +1 -1
- package/dist/src/keyword/complexity-classifier.d.ts +33 -0
- package/dist/src/keyword/complexity-classifier.js +155 -0
- package/dist/src/keyword/complexity-classifier.js.map +1 -0
- package/dist/src/keyword/complexity-indicators.d.ts +11 -0
- package/dist/src/keyword/complexity-indicators.js +146 -0
- package/dist/src/keyword/complexity-indicators.js.map +1 -0
- package/dist/src/keyword/keyword.module.js +77 -4
- package/dist/src/keyword/keyword.module.js.map +1 -1
- package/dist/src/keyword/keyword.service.d.ts +36 -2
- package/dist/src/keyword/keyword.service.js +85 -3
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +26 -0
- package/dist/src/keyword/keyword.types.js +2 -1
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/keyword/srp-template.d.ts +4 -0
- package/dist/src/keyword/srp-template.js +43 -0
- package/dist/src/keyword/srp-template.js.map +1 -0
- package/dist/src/mcp/handlers/skill.handler.d.ts +4 -1
- package/dist/src/mcp/handlers/skill.handler.js +37 -3
- package/dist/src/mcp/handlers/skill.handler.js.map +1 -1
- package/dist/src/rules/rules.service.d.ts +6 -0
- package/dist/src/rules/rules.service.js +50 -0
- package/dist/src/rules/rules.service.js.map +1 -1
- package/dist/src/skill/index.d.ts +1 -0
- package/dist/src/skill/index.js +3 -1
- package/dist/src/skill/index.js.map +1 -1
- package/dist/src/skill/skill.module.d.ts +2 -0
- package/dist/src/skill/skill.module.js +21 -0
- package/dist/src/skill/skill.module.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -135,6 +135,7 @@ export declare const AIConfigSchema: z.ZodObject<{
|
|
|
135
135
|
defaultModel: z.ZodOptional<z.ZodString>;
|
|
136
136
|
primaryAgent: z.ZodOptional<z.ZodString>;
|
|
137
137
|
excludeAgents: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
138
|
+
maxIncludedSkills: z.ZodOptional<z.ZodNumber>;
|
|
138
139
|
}, z.core.$strip>;
|
|
139
140
|
export declare const AutoConfigSchema: z.ZodObject<{
|
|
140
141
|
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
@@ -242,6 +243,7 @@ export declare const CodingBuddyConfigSchema: z.ZodObject<{
|
|
|
242
243
|
defaultModel: z.ZodOptional<z.ZodString>;
|
|
243
244
|
primaryAgent: z.ZodOptional<z.ZodString>;
|
|
244
245
|
excludeAgents: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
246
|
+
maxIncludedSkills: z.ZodOptional<z.ZodNumber>;
|
|
245
247
|
}, z.core.$strip>>;
|
|
246
248
|
auto: z.ZodOptional<z.ZodObject<{
|
|
247
249
|
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
@@ -63,6 +63,7 @@ exports.AIConfigSchema = zod_1.z.object({
|
|
|
63
63
|
defaultModel: zod_1.z.string().optional(),
|
|
64
64
|
primaryAgent: zod_1.z.string().optional(),
|
|
65
65
|
excludeAgents: zod_1.z.array(zod_1.z.string()).optional(),
|
|
66
|
+
maxIncludedSkills: zod_1.z.number().int().min(0).max(10).optional(),
|
|
66
67
|
});
|
|
67
68
|
exports.AutoConfigSchema = zod_1.z.object({
|
|
68
69
|
maxIterations: zod_1.z.number().int().min(1).max(10).default(3),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../../src/config/config.schema.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../../src/config/config.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ComplexityClassification, SrpOverride, TaskComplexity } from './keyword.types';
|
|
2
|
+
import { COMPLEX_INDICATORS, SIMPLE_INDICATORS, NEGATION_PATTERNS, isNegatedMatch, type ComplexityIndicator } from './complexity-indicators';
|
|
3
|
+
export { COMPLEX_INDICATORS, SIMPLE_INDICATORS, NEGATION_PATTERNS, isNegatedMatch, type ComplexityIndicator, };
|
|
4
|
+
export interface ComplexityTelemetry {
|
|
5
|
+
timestamp: number;
|
|
6
|
+
promptLength: number;
|
|
7
|
+
complexity: TaskComplexity;
|
|
8
|
+
applySrp: boolean;
|
|
9
|
+
confidence: number;
|
|
10
|
+
complexScore: number;
|
|
11
|
+
simpleScore: number;
|
|
12
|
+
complexMatches: number;
|
|
13
|
+
simpleMatches: number;
|
|
14
|
+
override?: SrpOverride;
|
|
15
|
+
}
|
|
16
|
+
export type TelemetryCallback = (telemetry: ComplexityTelemetry) => void;
|
|
17
|
+
export interface ComplexityConfig {
|
|
18
|
+
complexThreshold: number;
|
|
19
|
+
simpleThreshold: number;
|
|
20
|
+
defaultConfidence: number;
|
|
21
|
+
maxConfidence: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_COMPLEXITY_CONFIG: ComplexityConfig;
|
|
24
|
+
export declare function extractSrpOverride(prompt: string): {
|
|
25
|
+
override: SrpOverride;
|
|
26
|
+
cleanedPrompt: string;
|
|
27
|
+
};
|
|
28
|
+
export interface ClassifyOptions {
|
|
29
|
+
config?: ComplexityConfig;
|
|
30
|
+
onTelemetry?: TelemetryCallback;
|
|
31
|
+
}
|
|
32
|
+
export declare function classifyComplexity(prompt: string, options?: ClassifyOptions | ComplexityConfig): ComplexityClassification;
|
|
33
|
+
export declare function generateSrpInstructions(classification: ComplexityClassification): string | undefined;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_COMPLEXITY_CONFIG = exports.isNegatedMatch = exports.NEGATION_PATTERNS = exports.SIMPLE_INDICATORS = exports.COMPLEX_INDICATORS = void 0;
|
|
4
|
+
exports.extractSrpOverride = extractSrpOverride;
|
|
5
|
+
exports.classifyComplexity = classifyComplexity;
|
|
6
|
+
exports.generateSrpInstructions = generateSrpInstructions;
|
|
7
|
+
const srp_template_1 = require("./srp-template");
|
|
8
|
+
const complexity_indicators_1 = require("./complexity-indicators");
|
|
9
|
+
Object.defineProperty(exports, "COMPLEX_INDICATORS", { enumerable: true, get: function () { return complexity_indicators_1.COMPLEX_INDICATORS; } });
|
|
10
|
+
Object.defineProperty(exports, "SIMPLE_INDICATORS", { enumerable: true, get: function () { return complexity_indicators_1.SIMPLE_INDICATORS; } });
|
|
11
|
+
Object.defineProperty(exports, "NEGATION_PATTERNS", { enumerable: true, get: function () { return complexity_indicators_1.NEGATION_PATTERNS; } });
|
|
12
|
+
Object.defineProperty(exports, "isNegatedMatch", { enumerable: true, get: function () { return complexity_indicators_1.isNegatedMatch; } });
|
|
13
|
+
exports.DEFAULT_COMPLEXITY_CONFIG = {
|
|
14
|
+
complexThreshold: 0.08,
|
|
15
|
+
simpleThreshold: 0.1,
|
|
16
|
+
defaultConfidence: 0.6,
|
|
17
|
+
maxConfidence: 0.95,
|
|
18
|
+
};
|
|
19
|
+
function extractSrpOverride(prompt) {
|
|
20
|
+
if (/--srp\b/i.test(prompt)) {
|
|
21
|
+
return {
|
|
22
|
+
override: 'force',
|
|
23
|
+
cleanedPrompt: prompt.replace(/--srp\b/gi, '').trim(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (/--no-srp\b/i.test(prompt)) {
|
|
27
|
+
return {
|
|
28
|
+
override: 'skip',
|
|
29
|
+
cleanedPrompt: prompt.replace(/--no-srp\b/gi, '').trim(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
override: 'auto',
|
|
34
|
+
cleanedPrompt: prompt,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function calculateScore(prompt, indicators, checkNegation = true) {
|
|
38
|
+
const matched = [];
|
|
39
|
+
let totalWeight = 0;
|
|
40
|
+
let matchedWeight = 0;
|
|
41
|
+
for (const indicator of indicators) {
|
|
42
|
+
totalWeight += indicator.weight;
|
|
43
|
+
indicator.pattern.lastIndex = 0;
|
|
44
|
+
const match = indicator.pattern.exec(prompt);
|
|
45
|
+
if (match) {
|
|
46
|
+
const matchEnd = match.index + match[0].length;
|
|
47
|
+
if (checkNegation && (0, complexity_indicators_1.isNegatedMatch)(prompt, match.index, matchEnd)) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
matched.push(indicator.description);
|
|
51
|
+
matchedWeight += indicator.weight;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const score = totalWeight > 0 ? matchedWeight / totalWeight : 0;
|
|
55
|
+
return { score, matched };
|
|
56
|
+
}
|
|
57
|
+
function calculateScores(prompt) {
|
|
58
|
+
const complexResult = calculateScore(prompt, complexity_indicators_1.COMPLEX_INDICATORS, true);
|
|
59
|
+
const simpleResult = calculateScore(prompt, complexity_indicators_1.SIMPLE_INDICATORS, false);
|
|
60
|
+
return { complexResult, simpleResult };
|
|
61
|
+
}
|
|
62
|
+
function determineComplexity(scores, config) {
|
|
63
|
+
const { complexResult, simpleResult } = scores;
|
|
64
|
+
if (complexResult.score > config.complexThreshold &&
|
|
65
|
+
complexResult.score > simpleResult.score) {
|
|
66
|
+
return {
|
|
67
|
+
complexity: 'COMPLEX',
|
|
68
|
+
reason: `Task requires structured reasoning: ${complexResult.matched.slice(0, 3).join(', ')}`,
|
|
69
|
+
confidence: Math.min(config.maxConfidence, 0.5 + complexResult.score * 0.5),
|
|
70
|
+
matchedIndicators: complexResult.matched,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (simpleResult.score > config.simpleThreshold &&
|
|
74
|
+
simpleResult.score > complexResult.score) {
|
|
75
|
+
return {
|
|
76
|
+
complexity: 'SIMPLE',
|
|
77
|
+
reason: `Task is straightforward: ${simpleResult.matched.slice(0, 3).join(', ')}`,
|
|
78
|
+
confidence: Math.min(config.maxConfidence, 0.5 + simpleResult.score * 0.5),
|
|
79
|
+
matchedIndicators: simpleResult.matched,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (complexResult.score > simpleResult.score) {
|
|
83
|
+
return {
|
|
84
|
+
complexity: 'COMPLEX',
|
|
85
|
+
reason: 'Borderline complexity - applying SRP for safety',
|
|
86
|
+
confidence: 0.5 + (complexResult.score - simpleResult.score) * 0.5,
|
|
87
|
+
matchedIndicators: complexResult.matched,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
complexity: 'SIMPLE',
|
|
92
|
+
reason: 'No significant complexity indicators detected',
|
|
93
|
+
confidence: config.defaultConfidence,
|
|
94
|
+
matchedIndicators: simpleResult.matched,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function applyOverride(result, override) {
|
|
98
|
+
if (override === 'force') {
|
|
99
|
+
return {
|
|
100
|
+
applySrp: true,
|
|
101
|
+
reason: `[Override: --srp] ${result.reason}`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (override === 'skip') {
|
|
105
|
+
return {
|
|
106
|
+
applySrp: false,
|
|
107
|
+
reason: `[Override: --no-srp] ${result.reason}`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
applySrp: result.complexity === 'COMPLEX',
|
|
112
|
+
reason: result.reason,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function classifyComplexity(prompt, options) {
|
|
116
|
+
const resolvedOptions = options && 'complexThreshold' in options
|
|
117
|
+
? { config: options }
|
|
118
|
+
: (options ?? {});
|
|
119
|
+
const config = resolvedOptions.config ?? exports.DEFAULT_COMPLEXITY_CONFIG;
|
|
120
|
+
const onTelemetry = resolvedOptions.onTelemetry;
|
|
121
|
+
const { override, cleanedPrompt } = extractSrpOverride(prompt);
|
|
122
|
+
const scores = calculateScores(cleanedPrompt);
|
|
123
|
+
const complexityResult = determineComplexity(scores, config);
|
|
124
|
+
const { applySrp, reason } = applyOverride(complexityResult, override);
|
|
125
|
+
const result = {
|
|
126
|
+
complexity: complexityResult.complexity,
|
|
127
|
+
reason,
|
|
128
|
+
confidence: complexityResult.confidence,
|
|
129
|
+
matchedIndicators: complexityResult.matchedIndicators,
|
|
130
|
+
applySrp,
|
|
131
|
+
...(override !== 'auto' && { override }),
|
|
132
|
+
};
|
|
133
|
+
if (onTelemetry) {
|
|
134
|
+
onTelemetry({
|
|
135
|
+
timestamp: Date.now(),
|
|
136
|
+
promptLength: prompt.length,
|
|
137
|
+
complexity: complexityResult.complexity,
|
|
138
|
+
applySrp,
|
|
139
|
+
confidence: complexityResult.confidence,
|
|
140
|
+
complexScore: scores.complexResult.score,
|
|
141
|
+
simpleScore: scores.simpleResult.score,
|
|
142
|
+
complexMatches: scores.complexResult.matched.length,
|
|
143
|
+
simpleMatches: scores.simpleResult.matched.length,
|
|
144
|
+
...(override !== 'auto' && { override }),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
function generateSrpInstructions(classification) {
|
|
150
|
+
if (!classification.applySrp) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
return (0, srp_template_1.renderSrpTemplate)(classification);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=complexity-classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complexity-classifier.js","sourceRoot":"","sources":["../../../src/keyword/complexity-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ComplexityIndicator {
|
|
2
|
+
pattern: RegExp;
|
|
3
|
+
description: string;
|
|
4
|
+
weight: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const COMPLEX_INDICATORS: ComplexityIndicator[];
|
|
7
|
+
export declare const NEGATION_PATTERNS_BEFORE: RegExp[];
|
|
8
|
+
export declare const NEGATION_PATTERNS_AFTER: RegExp[];
|
|
9
|
+
export declare const NEGATION_PATTERNS: RegExp[];
|
|
10
|
+
export declare function isNegatedMatch(prompt: string, matchIndex: number, matchEnd?: number): boolean;
|
|
11
|
+
export declare const SIMPLE_INDICATORS: ComplexityIndicator[];
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SIMPLE_INDICATORS = exports.NEGATION_PATTERNS = exports.NEGATION_PATTERNS_AFTER = exports.NEGATION_PATTERNS_BEFORE = exports.COMPLEX_INDICATORS = void 0;
|
|
4
|
+
exports.isNegatedMatch = isNegatedMatch;
|
|
5
|
+
exports.COMPLEX_INDICATORS = [
|
|
6
|
+
{
|
|
7
|
+
pattern: /\b(design|architect)\w*\b|설계|아키텍처|아키텍쳐|設計|アーキテクチャ|设计|架构|dise[ñn]o|arquitectura/i,
|
|
8
|
+
description: 'Design/architecture task',
|
|
9
|
+
weight: 0.8,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
pattern: /\bhow\s+should\s+(we|i)\b|어떻게\s*(해야|하면)|어떤\s*방식으로|どうすれば|どのように|应该怎么|怎[么麼]做|c[oó]mo\s+(deber[ií]amos|debo)/i,
|
|
13
|
+
description: 'Design decision question',
|
|
14
|
+
weight: 0.9,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
pattern: /\b(trade-?off|pros?\s+and\s+cons?|compare|versus|vs\.?)\b|장단점|트레이드오프|비교\s*분석|トレードオフ|メリット.*デメリット|比較|权衡|利弊|比较分析|pros\s+y\s+contras|comparar/i,
|
|
18
|
+
description: 'Trade-off analysis',
|
|
19
|
+
weight: 0.9,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
pattern: /\b(multiple|several|different)\s+(approach|option|way|method)s?\b|(여러|다양한|다수의)\s*(방법|방식|접근|옵션)|複数の?(アプローチ|方法|選択肢)|多[种種](方法|方式|选择)|m[uú]ltiples\s+(enfoques?|opciones?|m[eé]todos?)/i,
|
|
23
|
+
description: 'Multiple approaches',
|
|
24
|
+
weight: 0.7,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
pattern: /\b(refactor|restructure|reorganize|migrate)\b|리팩토링|리팩터링|구조\s*개선|재구성|リファクタリング|再構成|重构|重[構构]|refactorizar|reestructurar/i,
|
|
28
|
+
description: 'Code restructuring',
|
|
29
|
+
weight: 0.7,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
pattern: /\b(across|multiple|several)\s+(file|module|component|service)s?\b|(여러|다수의|전체)\s*(파일|모듈|컴포넌트|서비스)|複数の?(ファイル|モジュール|コンポーネント)|多[个個](文件|模[块塊]|组件)|m[uú]ltiples\s+(archivos?|m[oó]dulos?|componentes?)/i,
|
|
33
|
+
description: 'Multi-file scope',
|
|
34
|
+
weight: 0.8,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
pattern: /\b(implement|build|create)\s+.{0,20}(feature|system|service|module)\b|(구현|개발|만들).{0,10}(기능|시스템|서비스|모듈)|(実装|構築).{0,10}(機能|システム)|实现.{0,10}(功能|系统)|implementar.{0,20}(funcionalidad|sistema|servicio)/i,
|
|
38
|
+
description: 'Feature implementation',
|
|
39
|
+
weight: 0.6,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
pattern: /\b(state\s+management|authentication|authorization|auth\s+system|caching)\b|상태\s*관리|인증\s*시스템|권한\s*관리|캐싱|状態管理|認証|キャッシュ|状态管理|认证|缓存|gesti[oó]n\s+de\s+estado|autenticaci[oó]n/i,
|
|
43
|
+
description: 'Complex domain',
|
|
44
|
+
weight: 0.8,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
pattern: /\b(optimiz|performance|security|scalab)\w*\b|최적화|성능\s*개선|보안|확장성|最適化|パフォーマンス|セキュリティ|优化|性能|安全|可扩展|optimizar|rendimiento|seguridad|escalabilidad/i,
|
|
48
|
+
description: 'Performance/Security concern',
|
|
49
|
+
weight: 0.7,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
pattern: /\b(analyz|evaluat|assess|review)\w*\s+.{0,20}(approach|option|strategy)\b|(분석|검토|평가).{0,10}(방법|옵션|전략)|(分析|検討|評価).{0,10}(アプローチ|方法)|分析.{0,10}(方法|策略)|analizar.{0,20}(enfoque|opci[oó]n|estrategia)/i,
|
|
53
|
+
description: 'Analysis required',
|
|
54
|
+
weight: 0.8,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
pattern: /\bwhat('s|\s+is)\s+the\s+best\s+(way|approach|practice)\b|가장\s*좋은\s*(방법|방식)|최선의\s*(접근|방법)|最善の?(方法|アプローチ)|ベストプラクティス|最好的(方法|做法)|最佳(实践|方式)|cu[aá]l\s+es\s+la\s+mejor\s+(manera|forma|pr[aá]ctica)/i,
|
|
58
|
+
description: 'Best practice inquiry',
|
|
59
|
+
weight: 0.7,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
pattern: /\b(integrat|connect|link)\w*\s+.{0,20}(service|api|system|module)\b|(통합|연동|연결).{0,10}(서비스|API|시스템)|(統合|連携).{0,10}(サービス|API)|集成.{0,10}(服务|API|系统)|integrar.{0,20}(servicio|API|sistema)/i,
|
|
63
|
+
description: 'Integration task',
|
|
64
|
+
weight: 0.6,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
pattern: /\b(dependency|dependencies|coupling|decoupl)\w*\b|의존성|종속성|결합도|依存関係|結合度|依赖|耦合|dependencia|acoplamiento/i,
|
|
68
|
+
description: 'Dependency management',
|
|
69
|
+
weight: 0.7,
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
exports.NEGATION_PATTERNS_BEFORE = [
|
|
73
|
+
/\b(don'?t|do\s+not|no\s+need\s+to|without|skip|avoid|not\s+going\s+to|won'?t|shouldn'?t|needn'?t)\s+$/i,
|
|
74
|
+
/(不要|不需要|不用|别|無需|毋須)$/,
|
|
75
|
+
/\b(no|sin|evitar|no\s+hay\s+que|no\s+necesita)\s+$/i,
|
|
76
|
+
];
|
|
77
|
+
exports.NEGATION_PATTERNS_AFTER = [
|
|
78
|
+
/^.{0,5}(하지\s*말|안\s*해도|필요\s*없|하지\s*않|말고)/,
|
|
79
|
+
/^.{0,3}(しないで|しなくて|必要(ない|なし)|やめて|せずに)/,
|
|
80
|
+
];
|
|
81
|
+
exports.NEGATION_PATTERNS = [
|
|
82
|
+
...exports.NEGATION_PATTERNS_BEFORE,
|
|
83
|
+
...exports.NEGATION_PATTERNS_AFTER,
|
|
84
|
+
];
|
|
85
|
+
function isNegatedMatch(prompt, matchIndex, matchEnd) {
|
|
86
|
+
const contextStart = Math.max(0, matchIndex - 30);
|
|
87
|
+
const textBefore = prompt.slice(contextStart, matchIndex);
|
|
88
|
+
if (exports.NEGATION_PATTERNS_BEFORE.some(pattern => pattern.test(textBefore))) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
const end = matchEnd ?? matchIndex + 10;
|
|
92
|
+
const contextEnd = Math.min(prompt.length, end + 15);
|
|
93
|
+
const textAfter = prompt.slice(end, contextEnd);
|
|
94
|
+
if (exports.NEGATION_PATTERNS_AFTER.some(pattern => pattern.test(textAfter))) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
exports.SIMPLE_INDICATORS = [
|
|
100
|
+
{
|
|
101
|
+
pattern: /\bwhat\s+(is|are)\s+(the\s+)?(type|return\s+type|syntax)\b|(타입|반환\s*타입|문법)이?\s*(뭐|무엇)|型は?(何|なん)|戻り値の?型|类型是什么|返回类型|语法|cu[aá]l\s+es\s+el\s+tipo|sintaxis/i,
|
|
102
|
+
description: 'Type/syntax question',
|
|
103
|
+
weight: 0.9,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
pattern: /\b(does|is|are|can|will)\s+.{0,30}\s*(exist|work|valid|correct)\b|(있|되|맞|정상)\s*(나요|는지|을까)|動(く|き)ますか|正しい(ですか)?|能用吗|有效吗|存在吗|funciona|existe|es\s+v[aá]lido/i,
|
|
107
|
+
description: 'Yes/no verification',
|
|
108
|
+
weight: 0.7,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
pattern: /\bhow\s+(do|to)\s+(i\s+)?(declare|define|import|export)\b|(선언|정의|임포트|익스포트)\s*어떻게|どう(宣言|定義|インポート)|怎[么麼](声明|定义|导入)|c[oó]mo\s+(declarar|definir|importar|exportar)/i,
|
|
112
|
+
description: 'Definition question',
|
|
113
|
+
weight: 0.8,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
pattern: /\b(show|give)\s+(me\s+)?(an?\s+)?example\b|예제\s*(보여|알려|줘)|例を?(見せて|示して)|给[个個]例子|举[个個]例|mu[eé]strame\s+un\s+ejemplo|dame\s+un\s+ejemplo/i,
|
|
117
|
+
description: 'Example request',
|
|
118
|
+
weight: 0.6,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
pattern: /\b(fix|correct|update)\s+(the\s+)?(typo|error|bug|issue)\s+(in|at)\b|오타\s*(수정|고쳐)|에러\s*수정|버그\s*수정|タイポ(修正|を直)|誤字(修正|を直)|修[复復](错误|bug)|改正錯誤|corregir\s+(el\s+)?(error|typo|bug)/i,
|
|
122
|
+
description: 'Single fix',
|
|
123
|
+
weight: 0.8,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
pattern: /\b(rename|move)\s+(this\s+)?(file|function|variable|class)\b|이름\s*(변경|바꿔)|리네임|名前を?(変更|変える)|リネーム|重命名|改名|renombrar|cambiar\s+el\s+nombre/i,
|
|
127
|
+
description: 'Rename operation',
|
|
128
|
+
weight: 0.7,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
pattern: /\badd\s+(a\s+)?(comment|log|print|console)\b|주석\s*(추가|달아)|로그\s*추가|コメント(追加|を追加)|ログ(追加|を追加)|添加(注释|日志)|加[个個](注释|日志)|agregar\s+(un\s+)?comentario|a[ñn]adir\s+log/i,
|
|
132
|
+
description: 'Add comment/log',
|
|
133
|
+
weight: 0.9,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
pattern: /\b(update|change|set)\s+(the\s+)?(version|value|name|label)\b|(버전|값|이름)\s*(변경|수정|바꿔)|バージョン(更新|を変更)|値を?(変更|更新)|更新(版本|值)|修改(版本|值)|actualizar\s+(la\s+)?(versi[oó]n|valor)/i,
|
|
137
|
+
description: 'Simple update',
|
|
138
|
+
weight: 0.6,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
pattern: /\b(format|lint|prettify|indent)\b|포맷팅|포맷\s*정리|린트|정리|フォーマット|整形|リント|格式化|整理代码|formatear|dar\s+formato/i,
|
|
142
|
+
description: 'Formatting',
|
|
143
|
+
weight: 0.9,
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
//# sourceMappingURL=complexity-indicators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complexity-indicators.js","sourceRoot":"","sources":["../../../src/keyword/complexity-indicators.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ const config_module_1 = require("../config/config.module");
|
|
|
12
12
|
const config_service_1 = require("../config/config.service");
|
|
13
13
|
const rules_module_1 = require("../rules/rules.module");
|
|
14
14
|
const rules_service_1 = require("../rules/rules.service");
|
|
15
|
+
const skill_module_1 = require("../skill/skill.module");
|
|
16
|
+
const skill_recommendation_service_1 = require("../skill/skill-recommendation.service");
|
|
17
|
+
const agent_module_1 = require("../agent/agent.module");
|
|
18
|
+
const agent_service_1 = require("../agent/agent.service");
|
|
15
19
|
const agent_utils_1 = require("../shared/agent.utils");
|
|
16
20
|
const keyword_service_1 = require("./keyword.service");
|
|
17
21
|
const primary_agent_resolver_1 = require("./primary-agent-resolver");
|
|
@@ -21,11 +25,11 @@ let KeywordModule = class KeywordModule {
|
|
|
21
25
|
exports.KeywordModule = KeywordModule;
|
|
22
26
|
exports.KeywordModule = KeywordModule = __decorate([
|
|
23
27
|
(0, common_1.Module)({
|
|
24
|
-
imports: [rules_module_1.RulesModule, config_module_1.CodingBuddyConfigModule],
|
|
28
|
+
imports: [rules_module_1.RulesModule, config_module_1.CodingBuddyConfigModule, skill_module_1.SkillModule, agent_module_1.AgentModule],
|
|
25
29
|
providers: [
|
|
26
30
|
{
|
|
27
31
|
provide: exports.KEYWORD_SERVICE,
|
|
28
|
-
useFactory: (rulesService, configService) => {
|
|
32
|
+
useFactory: (rulesService, configService, skillRecommendationService, agentService) => {
|
|
29
33
|
const logger = new common_1.Logger('KeywordModule');
|
|
30
34
|
const loadConfig = async () => {
|
|
31
35
|
const content = await rulesService.getRuleContent('keyword-modes.json');
|
|
@@ -80,9 +84,78 @@ exports.KeywordModule = KeywordModule = __decorate([
|
|
|
80
84
|
return null;
|
|
81
85
|
}
|
|
82
86
|
};
|
|
83
|
-
|
|
87
|
+
const getSkillRecommendations = (prompt) => {
|
|
88
|
+
try {
|
|
89
|
+
const result = skillRecommendationService.recommendSkills(prompt);
|
|
90
|
+
return result.recommendations.map(rec => ({
|
|
91
|
+
skillName: rec.skillName,
|
|
92
|
+
confidence: rec.confidence,
|
|
93
|
+
matchedPatterns: rec.matchedPatterns,
|
|
94
|
+
description: rec.description,
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logger.debug(`Failed to get skill recommendations: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const loadSkillContent = async (skillName) => {
|
|
103
|
+
try {
|
|
104
|
+
const skill = await rulesService.getSkill(skillName);
|
|
105
|
+
return {
|
|
106
|
+
name: skill.name,
|
|
107
|
+
description: skill.description,
|
|
108
|
+
content: skill.content,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
logger.debug(`Failed to load skill content for '${skillName}': ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const loadAgentSystemPrompt = async (agentName, mode) => {
|
|
117
|
+
try {
|
|
118
|
+
const result = await agentService.getAgentSystemPrompt(agentName, {
|
|
119
|
+
mode,
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
agentName: result.agentName,
|
|
123
|
+
displayName: result.displayName,
|
|
124
|
+
systemPrompt: result.systemPrompt,
|
|
125
|
+
description: result.description,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
logger.debug(`Failed to load agent system prompt for '${agentName}': ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const getMaxIncludedSkills = async () => {
|
|
134
|
+
try {
|
|
135
|
+
const settings = await configService.getSettings();
|
|
136
|
+
return settings.ai?.maxIncludedSkills ?? null;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
logger.debug(`Failed to load maxIncludedSkills: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const options = {
|
|
144
|
+
primaryAgentResolver,
|
|
145
|
+
loadAutoConfigFn: loadAutoConfig,
|
|
146
|
+
getSkillRecommendationsFn: getSkillRecommendations,
|
|
147
|
+
loadSkillContentFn: loadSkillContent,
|
|
148
|
+
loadAgentSystemPromptFn: loadAgentSystemPrompt,
|
|
149
|
+
getMaxIncludedSkillsFn: getMaxIncludedSkills,
|
|
150
|
+
};
|
|
151
|
+
return new keyword_service_1.KeywordService(loadConfig, loadRule, loadAgent, options);
|
|
84
152
|
},
|
|
85
|
-
inject: [
|
|
153
|
+
inject: [
|
|
154
|
+
rules_service_1.RulesService,
|
|
155
|
+
config_service_1.ConfigService,
|
|
156
|
+
skill_recommendation_service_1.SkillRecommendationService,
|
|
157
|
+
agent_service_1.AgentService,
|
|
158
|
+
],
|
|
86
159
|
},
|
|
87
160
|
],
|
|
88
161
|
exports: [exports.KEYWORD_SERVICE],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword.module.js","sourceRoot":"","sources":["../../../src/keyword/keyword.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,2DAAqF;AACrF,6DAAyD;AACzD,wDAAoD;AACpD,0DAAsD;AACtD,uDAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"keyword.module.js","sourceRoot":"","sources":["../../../src/keyword/keyword.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,49 @@ export interface ParseModeOptions {
|
|
|
3
3
|
recommendedActAgent?: string;
|
|
4
4
|
context?: ResolutionContext;
|
|
5
5
|
}
|
|
6
|
+
export interface KeywordServiceOptions {
|
|
7
|
+
primaryAgentResolver?: PrimaryAgentResolver;
|
|
8
|
+
loadAutoConfigFn?: () => Promise<AutoConfig | null>;
|
|
9
|
+
getSkillRecommendationsFn?: (prompt: string) => SkillRecommendationInfo[];
|
|
10
|
+
loadSkillContentFn?: (skillName: string) => Promise<SkillContentInfo | null>;
|
|
11
|
+
loadAgentSystemPromptFn?: (agentName: string, mode: Mode) => Promise<AgentSystemPromptInfo | null>;
|
|
12
|
+
getMaxIncludedSkillsFn?: () => Promise<number | null>;
|
|
13
|
+
}
|
|
14
|
+
export interface SkillRecommendationInfo {
|
|
15
|
+
skillName: string;
|
|
16
|
+
confidence: 'high' | 'medium' | 'low';
|
|
17
|
+
matchedPatterns: string[];
|
|
18
|
+
description: string;
|
|
19
|
+
}
|
|
20
|
+
export interface SkillContentInfo {
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
content: string;
|
|
24
|
+
}
|
|
25
|
+
export interface AgentSystemPromptInfo {
|
|
26
|
+
agentName: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
systemPrompt: string;
|
|
29
|
+
description: string;
|
|
30
|
+
}
|
|
6
31
|
import { PrimaryAgentResolver } from './primary-agent-resolver';
|
|
7
32
|
export declare class KeywordService {
|
|
8
33
|
private readonly loadConfigFn;
|
|
9
34
|
private readonly loadRuleFn;
|
|
10
35
|
private readonly loadAgentInfoFn?;
|
|
11
|
-
private readonly loadAutoConfigFn?;
|
|
12
36
|
private readonly logger;
|
|
13
37
|
private configCache;
|
|
14
38
|
private readonly primaryAgentResolver?;
|
|
15
39
|
private readonly cacheTTL;
|
|
16
40
|
private cacheHits;
|
|
17
41
|
private cacheMisses;
|
|
42
|
+
private readonly loadAutoConfigFn?;
|
|
43
|
+
private readonly getSkillRecommendationsFn?;
|
|
44
|
+
private readonly loadSkillContentFn?;
|
|
45
|
+
private readonly loadAgentSystemPromptFn?;
|
|
46
|
+
private readonly getMaxIncludedSkillsFn?;
|
|
18
47
|
private static readonly CONTEXT_SPECIALIST_PATTERNS;
|
|
19
|
-
constructor(loadConfigFn: () => Promise<KeywordModesConfig>, loadRuleFn: (path: string) => Promise<string>, loadAgentInfoFn?: ((agentName: string) => Promise<unknown>) | undefined,
|
|
48
|
+
constructor(loadConfigFn: () => Promise<KeywordModesConfig>, loadRuleFn: (path: string) => Promise<string>, loadAgentInfoFn?: ((agentName: string) => Promise<unknown>) | undefined, options?: KeywordServiceOptions);
|
|
20
49
|
parseMode(prompt: string, options?: ParseModeOptions): Promise<ParseModeResult>;
|
|
21
50
|
private extractModeFromPrompt;
|
|
22
51
|
private checkForMultipleKeywordsInPrompt;
|
|
@@ -28,6 +57,11 @@ export declare class KeywordService {
|
|
|
28
57
|
private addActRecommendationToResult;
|
|
29
58
|
private addActivationMessageToResult;
|
|
30
59
|
private addAutoConfigToResult;
|
|
60
|
+
private addComplexityToResult;
|
|
61
|
+
private addIncludedSkillsToResult;
|
|
62
|
+
private getMaxIncludedSkills;
|
|
63
|
+
private loadSkillsInParallel;
|
|
64
|
+
private addIncludedAgentToResult;
|
|
31
65
|
private getPrimaryAgentTier;
|
|
32
66
|
private getParallelAgentsRecommendation;
|
|
33
67
|
private getContextAwareSpecialists;
|