@nahisaho/musubix-pattern-mcp 3.4.5 → 3.7.3
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/LICENSE +21 -0
- package/dist/integration/index.d.ts +7 -0
- package/dist/integration/index.d.ts.map +1 -0
- package/dist/integration/index.js +7 -0
- package/dist/integration/index.js.map +1 -0
- package/dist/integration/skill-pattern-bridge.d.ts +27 -0
- package/dist/integration/skill-pattern-bridge.d.ts.map +1 -0
- package/dist/integration/skill-pattern-bridge.js +363 -0
- package/dist/integration/skill-pattern-bridge.js.map +1 -0
- package/dist/integration/types.d.ts +164 -0
- package/dist/integration/types.d.ts.map +1 -0
- package/dist/integration/types.js +18 -0
- package/dist/integration/types.js.map +1 -0
- package/dist/learning/PatternLearningDB.d.ts +100 -0
- package/dist/learning/PatternLearningDB.d.ts.map +1 -0
- package/dist/learning/PatternLearningDB.js +164 -0
- package/dist/learning/PatternLearningDB.js.map +1 -0
- package/dist/learning/db-types.d.ts +97 -0
- package/dist/learning/db-types.d.ts.map +1 -0
- package/dist/learning/db-types.js +95 -0
- package/dist/learning/db-types.js.map +1 -0
- package/dist/learning/index.d.ts +4 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +2 -0
- package/dist/learning/index.js.map +1 -1
- package/package.json +8 -8
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 nahisaho
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skill-Pattern Bridge Implementation
|
|
3
|
+
* Integrates learning-hooks skill with pattern-mcp
|
|
4
|
+
*
|
|
5
|
+
* @traceability TSK-INT-002, DES-v3.7.0 Section 9.4
|
|
6
|
+
*/
|
|
7
|
+
import type { SkillPatternBridge, SkillPatternBridgeConfig, LearnedPattern, LearnedPatternCategory, PatternMatchResult } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a Skill-Pattern Bridge instance
|
|
10
|
+
*/
|
|
11
|
+
export declare function createSkillPatternBridge(config?: Partial<SkillPatternBridgeConfig>): SkillPatternBridge;
|
|
12
|
+
/**
|
|
13
|
+
* Create learned pattern from session data
|
|
14
|
+
*/
|
|
15
|
+
export declare function createLearnedPatternFromSession(category: LearnedPatternCategory, problem: string, solution: string, options?: {
|
|
16
|
+
name?: string;
|
|
17
|
+
context?: string;
|
|
18
|
+
example?: string;
|
|
19
|
+
triggerConditions?: string[];
|
|
20
|
+
sourceSession?: string;
|
|
21
|
+
confidence?: number;
|
|
22
|
+
}): LearnedPattern;
|
|
23
|
+
/**
|
|
24
|
+
* Format pattern match results as markdown
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatPatternMatchesAsMarkdown(matches: PatternMatchResult[]): string;
|
|
27
|
+
//# sourceMappingURL=skill-pattern-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-pattern-bridge.d.ts","sourceRoot":"","sources":["../../src/integration/skill-pattern-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EAEtB,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,kBAAkB,CAiWpB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,cAAc,CAkBhB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAoCpF"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skill-Pattern Bridge Implementation
|
|
3
|
+
* Integrates learning-hooks skill with pattern-mcp
|
|
4
|
+
*
|
|
5
|
+
* @traceability TSK-INT-002, DES-v3.7.0 Section 9.4
|
|
6
|
+
*/
|
|
7
|
+
import { DEFAULT_SKILL_PATTERN_BRIDGE_CONFIG, } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a Skill-Pattern Bridge instance
|
|
10
|
+
*/
|
|
11
|
+
export function createSkillPatternBridge(config = {}) {
|
|
12
|
+
const fullConfig = {
|
|
13
|
+
...DEFAULT_SKILL_PATTERN_BRIDGE_CONFIG,
|
|
14
|
+
...config,
|
|
15
|
+
};
|
|
16
|
+
// In-memory storage for patterns (would be file-based in production)
|
|
17
|
+
const patterns = new Map();
|
|
18
|
+
/**
|
|
19
|
+
* Calculate text similarity using simple word overlap
|
|
20
|
+
*/
|
|
21
|
+
function calculateSimilarity(text1, text2) {
|
|
22
|
+
const words1 = new Set(text1.toLowerCase().split(/\s+/));
|
|
23
|
+
const words2 = new Set(text2.toLowerCase().split(/\s+/));
|
|
24
|
+
const intersection = new Set([...words1].filter(w => words2.has(w)));
|
|
25
|
+
const union = new Set([...words1, ...words2]);
|
|
26
|
+
return union.size > 0 ? intersection.size / union.size : 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find similar patterns
|
|
30
|
+
*/
|
|
31
|
+
function findSimilarPatterns(pattern) {
|
|
32
|
+
const similar = [];
|
|
33
|
+
for (const existing of patterns.values()) {
|
|
34
|
+
if (existing.id === pattern.id)
|
|
35
|
+
continue;
|
|
36
|
+
if (existing.category !== pattern.category)
|
|
37
|
+
continue;
|
|
38
|
+
const similarity = calculateSimilarity(`${existing.problem} ${existing.solution}`, `${pattern.problem} ${pattern.solution}`);
|
|
39
|
+
if (similarity >= fullConfig.consolidationThreshold) {
|
|
40
|
+
similar.push(existing);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return similar;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Apply privacy filter to pattern content
|
|
47
|
+
*/
|
|
48
|
+
function applyPrivacyFilter(text) {
|
|
49
|
+
if (!fullConfig.enablePrivacyFilter)
|
|
50
|
+
return text;
|
|
51
|
+
// Simple patterns for sensitive data
|
|
52
|
+
const sensitivePatterns = [
|
|
53
|
+
/api[_-]?key["\s:=]+([a-zA-Z0-9_-]{20,})/gi,
|
|
54
|
+
/password["\s:=]+([^\s"']+)/gi,
|
|
55
|
+
/secret["\s:=]+([a-zA-Z0-9_-]{20,})/gi,
|
|
56
|
+
/token["\s:=]+([a-zA-Z0-9_.-]{20,})/gi,
|
|
57
|
+
/AKIA[0-9A-Z]{16}/gi,
|
|
58
|
+
];
|
|
59
|
+
let filtered = text;
|
|
60
|
+
for (const pattern of sensitivePatterns) {
|
|
61
|
+
filtered = filtered.replace(pattern, '[REDACTED]');
|
|
62
|
+
}
|
|
63
|
+
return filtered;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate unique pattern ID
|
|
67
|
+
*/
|
|
68
|
+
function generatePatternId() {
|
|
69
|
+
const timestamp = Date.now().toString(36);
|
|
70
|
+
const random = Math.random().toString(36).substring(2, 8);
|
|
71
|
+
return `LP-${timestamp}-${random}`;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
async storeLearnedPattern(pattern) {
|
|
75
|
+
try {
|
|
76
|
+
// Validate confidence
|
|
77
|
+
if (pattern.confidence < fullConfig.minConfidence) {
|
|
78
|
+
return {
|
|
79
|
+
success: false,
|
|
80
|
+
consolidated: false,
|
|
81
|
+
error: `Confidence ${pattern.confidence} is below minimum ${fullConfig.minConfidence}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Apply privacy filter
|
|
85
|
+
const filteredPattern = {
|
|
86
|
+
...pattern,
|
|
87
|
+
problem: applyPrivacyFilter(pattern.problem),
|
|
88
|
+
solution: applyPrivacyFilter(pattern.solution),
|
|
89
|
+
example: pattern.example ? applyPrivacyFilter(pattern.example) : undefined,
|
|
90
|
+
};
|
|
91
|
+
// Check for consolidation
|
|
92
|
+
if (fullConfig.autoConsolidate) {
|
|
93
|
+
const similar = findSimilarPatterns(filteredPattern);
|
|
94
|
+
if (similar.length > 0) {
|
|
95
|
+
const mostSimilar = similar[0];
|
|
96
|
+
// Merge: update usage count and confidence
|
|
97
|
+
mostSimilar.usageCount += 1;
|
|
98
|
+
mostSimilar.confidence = Math.min(1, (mostSimilar.confidence + filteredPattern.confidence) / 2);
|
|
99
|
+
patterns.set(mostSimilar.id, mostSimilar);
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
patternId: mostSimilar.id,
|
|
103
|
+
consolidated: true,
|
|
104
|
+
consolidatedWith: mostSimilar.id,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Check max patterns limit
|
|
109
|
+
if (patterns.size >= fullConfig.maxPatterns) {
|
|
110
|
+
// Remove least used pattern
|
|
111
|
+
let leastUsed = null;
|
|
112
|
+
for (const p of patterns.values()) {
|
|
113
|
+
if (!leastUsed || p.usageCount < leastUsed.usageCount) {
|
|
114
|
+
leastUsed = p;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (leastUsed) {
|
|
118
|
+
patterns.delete(leastUsed.id);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Store new pattern
|
|
122
|
+
const patternId = filteredPattern.id || generatePatternId();
|
|
123
|
+
filteredPattern.id = patternId;
|
|
124
|
+
patterns.set(patternId, filteredPattern);
|
|
125
|
+
return {
|
|
126
|
+
success: true,
|
|
127
|
+
patternId,
|
|
128
|
+
consolidated: false,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
return {
|
|
133
|
+
success: false,
|
|
134
|
+
consolidated: false,
|
|
135
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
async queryPatterns(context) {
|
|
140
|
+
const results = [];
|
|
141
|
+
const maxResults = context.maxResults ?? 10;
|
|
142
|
+
for (const pattern of patterns.values()) {
|
|
143
|
+
let relevance = 0;
|
|
144
|
+
let matchReason = '';
|
|
145
|
+
// Match by error message
|
|
146
|
+
if (context.errorMessage) {
|
|
147
|
+
const errorSimilarity = calculateSimilarity(context.errorMessage, pattern.problem);
|
|
148
|
+
if (errorSimilarity > 0.3) {
|
|
149
|
+
relevance = Math.max(relevance, errorSimilarity);
|
|
150
|
+
matchReason = 'Error message similarity';
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Match by keywords
|
|
154
|
+
if (context.keywords && context.keywords.length > 0) {
|
|
155
|
+
const patternText = `${pattern.name} ${pattern.problem} ${pattern.solution}`.toLowerCase();
|
|
156
|
+
const matchedKeywords = context.keywords.filter(k => patternText.includes(k.toLowerCase()));
|
|
157
|
+
if (matchedKeywords.length > 0) {
|
|
158
|
+
const keywordRelevance = matchedKeywords.length / context.keywords.length;
|
|
159
|
+
if (keywordRelevance > relevance) {
|
|
160
|
+
relevance = keywordRelevance;
|
|
161
|
+
matchReason = `Matched keywords: ${matchedKeywords.join(', ')}`;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Match by language
|
|
166
|
+
if (context.language) {
|
|
167
|
+
const languageMatch = pattern.triggerConditions.some(tc => tc.toLowerCase().includes(context.language.toLowerCase()));
|
|
168
|
+
if (languageMatch) {
|
|
169
|
+
relevance = Math.max(relevance, 0.5);
|
|
170
|
+
if (!matchReason)
|
|
171
|
+
matchReason = 'Language match';
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Boost by confidence and usage
|
|
175
|
+
if (relevance > 0) {
|
|
176
|
+
relevance *= (0.7 + 0.3 * pattern.confidence);
|
|
177
|
+
relevance *= (1 + Math.log10(1 + pattern.usageCount) * 0.1);
|
|
178
|
+
results.push({
|
|
179
|
+
pattern,
|
|
180
|
+
relevance: Math.min(1, relevance),
|
|
181
|
+
matchReason,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Sort by relevance and limit
|
|
186
|
+
return results
|
|
187
|
+
.sort((a, b) => b.relevance - a.relevance)
|
|
188
|
+
.slice(0, maxResults);
|
|
189
|
+
},
|
|
190
|
+
convertToPattern(learned) {
|
|
191
|
+
// Create a simple AST representation
|
|
192
|
+
const ast = {
|
|
193
|
+
type: 'learned_pattern',
|
|
194
|
+
children: [],
|
|
195
|
+
value: learned.solution,
|
|
196
|
+
startPosition: { row: 0, column: 0 },
|
|
197
|
+
endPosition: { row: 0, column: 0 },
|
|
198
|
+
};
|
|
199
|
+
// Create holes for variable parts (simplified)
|
|
200
|
+
const holes = [];
|
|
201
|
+
const placeholderPattern = /\[([A-Z_]+)\]/g;
|
|
202
|
+
let match;
|
|
203
|
+
let holeIndex = 0;
|
|
204
|
+
while ((match = placeholderPattern.exec(learned.solution)) !== null) {
|
|
205
|
+
holes.push({
|
|
206
|
+
id: `hole-${holeIndex++}`,
|
|
207
|
+
type: match[1],
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
id: learned.id,
|
|
212
|
+
name: learned.name,
|
|
213
|
+
language: 'typescript', // Default, could be extracted from context
|
|
214
|
+
ast,
|
|
215
|
+
holes,
|
|
216
|
+
frequency: learned.usageCount,
|
|
217
|
+
createdAt: learned.extractedAt,
|
|
218
|
+
updatedAt: new Date().toISOString(),
|
|
219
|
+
};
|
|
220
|
+
},
|
|
221
|
+
convertFromPattern(pattern) {
|
|
222
|
+
return {
|
|
223
|
+
id: pattern.id,
|
|
224
|
+
name: pattern.name,
|
|
225
|
+
category: 'project_specific',
|
|
226
|
+
extractedAt: pattern.createdAt,
|
|
227
|
+
context: `Language: ${pattern.language}`,
|
|
228
|
+
problem: `Pattern with ${pattern.holes.length} variable parts`,
|
|
229
|
+
solution: pattern.ast.value ?? '',
|
|
230
|
+
triggerConditions: [`language:${pattern.language}`],
|
|
231
|
+
confidence: Math.min(1, pattern.frequency / 10),
|
|
232
|
+
usageCount: pattern.frequency,
|
|
233
|
+
};
|
|
234
|
+
},
|
|
235
|
+
async getStatistics() {
|
|
236
|
+
const byCategory = {
|
|
237
|
+
error_resolution: 0,
|
|
238
|
+
user_corrections: 0,
|
|
239
|
+
workarounds: 0,
|
|
240
|
+
debugging_techniques: 0,
|
|
241
|
+
project_specific: 0,
|
|
242
|
+
performance_optimization: 0,
|
|
243
|
+
refactoring: 0,
|
|
244
|
+
};
|
|
245
|
+
let totalConfidence = 0;
|
|
246
|
+
let totalUsageCount = 0;
|
|
247
|
+
let mostUsed;
|
|
248
|
+
let recentlyAdded = 0;
|
|
249
|
+
const sevenDaysAgo = new Date();
|
|
250
|
+
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
|
251
|
+
for (const pattern of patterns.values()) {
|
|
252
|
+
byCategory[pattern.category]++;
|
|
253
|
+
totalConfidence += pattern.confidence;
|
|
254
|
+
totalUsageCount += pattern.usageCount;
|
|
255
|
+
if (!mostUsed || pattern.usageCount > mostUsed.usageCount) {
|
|
256
|
+
mostUsed = pattern;
|
|
257
|
+
}
|
|
258
|
+
if (new Date(pattern.extractedAt) >= sevenDaysAgo) {
|
|
259
|
+
recentlyAdded++;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
totalPatterns: patterns.size,
|
|
264
|
+
byCategory,
|
|
265
|
+
averageConfidence: patterns.size > 0 ? totalConfidence / patterns.size : 0,
|
|
266
|
+
totalUsageCount,
|
|
267
|
+
mostUsed,
|
|
268
|
+
recentlyAdded,
|
|
269
|
+
};
|
|
270
|
+
},
|
|
271
|
+
async consolidatePatterns() {
|
|
272
|
+
const merges = [];
|
|
273
|
+
const processed = new Set();
|
|
274
|
+
const patternList = Array.from(patterns.values());
|
|
275
|
+
for (let i = 0; i < patternList.length; i++) {
|
|
276
|
+
const pattern = patternList[i];
|
|
277
|
+
if (processed.has(pattern.id))
|
|
278
|
+
continue;
|
|
279
|
+
for (let j = i + 1; j < patternList.length; j++) {
|
|
280
|
+
const other = patternList[j];
|
|
281
|
+
if (processed.has(other.id))
|
|
282
|
+
continue;
|
|
283
|
+
if (pattern.category !== other.category)
|
|
284
|
+
continue;
|
|
285
|
+
const similarity = calculateSimilarity(`${pattern.problem} ${pattern.solution}`, `${other.problem} ${other.solution}`);
|
|
286
|
+
if (similarity >= fullConfig.consolidationThreshold) {
|
|
287
|
+
// Merge other into pattern
|
|
288
|
+
pattern.usageCount += other.usageCount;
|
|
289
|
+
pattern.confidence = (pattern.confidence + other.confidence) / 2;
|
|
290
|
+
patterns.delete(other.id);
|
|
291
|
+
processed.add(other.id);
|
|
292
|
+
merges.push({
|
|
293
|
+
sourceId: other.id,
|
|
294
|
+
targetId: pattern.id,
|
|
295
|
+
similarity,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return {
|
|
301
|
+
mergedCount: merges.length,
|
|
302
|
+
remainingCount: patterns.size,
|
|
303
|
+
merges,
|
|
304
|
+
};
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Create learned pattern from session data
|
|
310
|
+
*/
|
|
311
|
+
export function createLearnedPatternFromSession(category, problem, solution, options = {}) {
|
|
312
|
+
const now = new Date().toISOString();
|
|
313
|
+
const id = `LP-${Date.now().toString(36)}-${Math.random().toString(36).substring(2, 8)}`;
|
|
314
|
+
return {
|
|
315
|
+
id,
|
|
316
|
+
name: options.name ?? `Pattern: ${problem.substring(0, 50)}...`,
|
|
317
|
+
category,
|
|
318
|
+
extractedAt: now,
|
|
319
|
+
context: options.context ?? '',
|
|
320
|
+
problem,
|
|
321
|
+
solution,
|
|
322
|
+
example: options.example,
|
|
323
|
+
triggerConditions: options.triggerConditions ?? [],
|
|
324
|
+
sourceSession: options.sourceSession,
|
|
325
|
+
confidence: options.confidence ?? 0.7,
|
|
326
|
+
usageCount: 1,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Format pattern match results as markdown
|
|
331
|
+
*/
|
|
332
|
+
export function formatPatternMatchesAsMarkdown(matches) {
|
|
333
|
+
if (matches.length === 0) {
|
|
334
|
+
return '📝 No relevant patterns found.\n';
|
|
335
|
+
}
|
|
336
|
+
const lines = ['# 📚 Relevant Patterns\n'];
|
|
337
|
+
for (let i = 0; i < matches.length; i++) {
|
|
338
|
+
const { pattern, relevance, matchReason } = matches[i];
|
|
339
|
+
lines.push(`## ${i + 1}. ${pattern.name}`);
|
|
340
|
+
lines.push('');
|
|
341
|
+
lines.push(`**Relevance**: ${(relevance * 100).toFixed(1)}%`);
|
|
342
|
+
lines.push(`**Reason**: ${matchReason}`);
|
|
343
|
+
lines.push(`**Category**: ${pattern.category}`);
|
|
344
|
+
lines.push('');
|
|
345
|
+
lines.push('### Problem');
|
|
346
|
+
lines.push(pattern.problem);
|
|
347
|
+
lines.push('');
|
|
348
|
+
lines.push('### Solution');
|
|
349
|
+
lines.push(pattern.solution);
|
|
350
|
+
if (pattern.example) {
|
|
351
|
+
lines.push('');
|
|
352
|
+
lines.push('### Example');
|
|
353
|
+
lines.push('```');
|
|
354
|
+
lines.push(pattern.example);
|
|
355
|
+
lines.push('```');
|
|
356
|
+
}
|
|
357
|
+
lines.push('');
|
|
358
|
+
lines.push('---');
|
|
359
|
+
lines.push('');
|
|
360
|
+
}
|
|
361
|
+
return lines.join('\n');
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=skill-pattern-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-pattern-bridge.js","sourceRoot":"","sources":["../../src/integration/skill-pattern-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skill-Pattern Bridge Types
|
|
3
|
+
* Integrates learning-hooks skill with pattern-mcp
|
|
4
|
+
*
|
|
5
|
+
* @traceability TSK-INT-002, DES-v3.7.0 Section 9.4
|
|
6
|
+
*/
|
|
7
|
+
import type { Pattern } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Learned pattern from learning-hooks skill
|
|
10
|
+
*/
|
|
11
|
+
export interface LearnedPattern {
|
|
12
|
+
/** Unique identifier */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Descriptive name */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Pattern category */
|
|
17
|
+
category: LearnedPatternCategory;
|
|
18
|
+
/** When this pattern was extracted */
|
|
19
|
+
extractedAt: string;
|
|
20
|
+
/** Context where this pattern applies */
|
|
21
|
+
context: string;
|
|
22
|
+
/** Problem this pattern solves */
|
|
23
|
+
problem: string;
|
|
24
|
+
/** Solution/technique */
|
|
25
|
+
solution: string;
|
|
26
|
+
/** Code example if applicable */
|
|
27
|
+
example?: string;
|
|
28
|
+
/** Trigger conditions for using this pattern */
|
|
29
|
+
triggerConditions: string[];
|
|
30
|
+
/** Source session ID */
|
|
31
|
+
sourceSession?: string;
|
|
32
|
+
/** Confidence score (0-1) */
|
|
33
|
+
confidence: number;
|
|
34
|
+
/** Usage count */
|
|
35
|
+
usageCount: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Categories for learned patterns
|
|
39
|
+
*/
|
|
40
|
+
export type LearnedPatternCategory = 'error_resolution' | 'user_corrections' | 'workarounds' | 'debugging_techniques' | 'project_specific' | 'performance_optimization' | 'refactoring';
|
|
41
|
+
/**
|
|
42
|
+
* Configuration for pattern bridge
|
|
43
|
+
*/
|
|
44
|
+
export interface SkillPatternBridgeConfig {
|
|
45
|
+
/** Storage path for learned patterns */
|
|
46
|
+
storagePath: string;
|
|
47
|
+
/** Minimum confidence to store */
|
|
48
|
+
minConfidence: number;
|
|
49
|
+
/** Maximum patterns to keep */
|
|
50
|
+
maxPatterns: number;
|
|
51
|
+
/** Enable privacy filtering */
|
|
52
|
+
enablePrivacyFilter: boolean;
|
|
53
|
+
/** Auto-consolidate similar patterns */
|
|
54
|
+
autoConsolidate: boolean;
|
|
55
|
+
/** Consolidation similarity threshold */
|
|
56
|
+
consolidationThreshold: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Default configuration
|
|
60
|
+
*/
|
|
61
|
+
export declare const DEFAULT_SKILL_PATTERN_BRIDGE_CONFIG: SkillPatternBridgeConfig;
|
|
62
|
+
/**
|
|
63
|
+
* Pattern query context for retrieving relevant patterns
|
|
64
|
+
*/
|
|
65
|
+
export interface PatternQueryContext {
|
|
66
|
+
/** Current error message if any */
|
|
67
|
+
errorMessage?: string;
|
|
68
|
+
/** Current file path */
|
|
69
|
+
filePath?: string;
|
|
70
|
+
/** Current language */
|
|
71
|
+
language?: string;
|
|
72
|
+
/** Keywords from user query */
|
|
73
|
+
keywords?: string[];
|
|
74
|
+
/** Maximum results to return */
|
|
75
|
+
maxResults?: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Pattern match result
|
|
79
|
+
*/
|
|
80
|
+
export interface PatternMatchResult {
|
|
81
|
+
/** Matched pattern */
|
|
82
|
+
pattern: LearnedPattern;
|
|
83
|
+
/** Relevance score (0-1) */
|
|
84
|
+
relevance: number;
|
|
85
|
+
/** Match reason */
|
|
86
|
+
matchReason: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Pattern storage result
|
|
90
|
+
*/
|
|
91
|
+
export interface PatternStorageResult {
|
|
92
|
+
/** Success flag */
|
|
93
|
+
success: boolean;
|
|
94
|
+
/** Stored pattern ID */
|
|
95
|
+
patternId?: string;
|
|
96
|
+
/** Was consolidated with existing */
|
|
97
|
+
consolidated: boolean;
|
|
98
|
+
/** Consolidated with pattern ID */
|
|
99
|
+
consolidatedWith?: string;
|
|
100
|
+
/** Error message if failed */
|
|
101
|
+
error?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Interface for Skill-Pattern Bridge
|
|
105
|
+
*/
|
|
106
|
+
export interface SkillPatternBridge {
|
|
107
|
+
/**
|
|
108
|
+
* Store a learned pattern from learning-hooks
|
|
109
|
+
*/
|
|
110
|
+
storeLearnedPattern(pattern: LearnedPattern): Promise<PatternStorageResult>;
|
|
111
|
+
/**
|
|
112
|
+
* Query patterns relevant to the given context
|
|
113
|
+
*/
|
|
114
|
+
queryPatterns(context: PatternQueryContext): Promise<PatternMatchResult[]>;
|
|
115
|
+
/**
|
|
116
|
+
* Convert learned pattern to pattern-mcp format
|
|
117
|
+
*/
|
|
118
|
+
convertToPattern(learned: LearnedPattern): Pattern;
|
|
119
|
+
/**
|
|
120
|
+
* Convert pattern-mcp format to learned pattern
|
|
121
|
+
*/
|
|
122
|
+
convertFromPattern(pattern: Pattern): LearnedPattern;
|
|
123
|
+
/**
|
|
124
|
+
* Get pattern statistics
|
|
125
|
+
*/
|
|
126
|
+
getStatistics(): Promise<PatternStatistics>;
|
|
127
|
+
/**
|
|
128
|
+
* Consolidate similar patterns
|
|
129
|
+
*/
|
|
130
|
+
consolidatePatterns(): Promise<ConsolidationResult>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Pattern statistics
|
|
134
|
+
*/
|
|
135
|
+
export interface PatternStatistics {
|
|
136
|
+
/** Total pattern count */
|
|
137
|
+
totalPatterns: number;
|
|
138
|
+
/** Patterns by category */
|
|
139
|
+
byCategory: Record<LearnedPatternCategory, number>;
|
|
140
|
+
/** Average confidence */
|
|
141
|
+
averageConfidence: number;
|
|
142
|
+
/** Total usage count */
|
|
143
|
+
totalUsageCount: number;
|
|
144
|
+
/** Most used pattern */
|
|
145
|
+
mostUsed?: LearnedPattern;
|
|
146
|
+
/** Recently added count (last 7 days) */
|
|
147
|
+
recentlyAdded: number;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Consolidation result
|
|
151
|
+
*/
|
|
152
|
+
export interface ConsolidationResult {
|
|
153
|
+
/** Patterns merged */
|
|
154
|
+
mergedCount: number;
|
|
155
|
+
/** Patterns remaining */
|
|
156
|
+
remainingCount: number;
|
|
157
|
+
/** Merge details */
|
|
158
|
+
merges: Array<{
|
|
159
|
+
sourceId: string;
|
|
160
|
+
targetId: string;
|
|
161
|
+
similarity: number;
|
|
162
|
+
}>;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/integration/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skill-Pattern Bridge Types
|
|
3
|
+
* Integrates learning-hooks skill with pattern-mcp
|
|
4
|
+
*
|
|
5
|
+
* @traceability TSK-INT-002, DES-v3.7.0 Section 9.4
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Default configuration
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_SKILL_PATTERN_BRIDGE_CONFIG = {
|
|
11
|
+
storagePath: '~/.musubix/skills/learned',
|
|
12
|
+
minConfidence: 0.6,
|
|
13
|
+
maxPatterns: 500,
|
|
14
|
+
enablePrivacyFilter: true,
|
|
15
|
+
autoConsolidate: true,
|
|
16
|
+
consolidationThreshold: 0.8,
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/integration/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgEH;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAA6B;IAC3E,WAAW,EAAE,2BAA2B;IACxC,aAAa,EAAE,GAAG;IAClB,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;IACrB,sBAAsB,EAAE,GAAG;CAC5B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PatternLearningDB - パターン学習データベース
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* 学習済みパターンの永続化・検索・管理を提供する。
|
|
6
|
+
* GLOBALレイヤーでメトリクス連携し、パターン適用の追跡を行う。
|
|
7
|
+
*
|
|
8
|
+
* @see DES-PATTERN-001 - パターン学習システム
|
|
9
|
+
* @see TSK-FR-038 - PatternLearningDBインターフェース定義
|
|
10
|
+
* @see TSK-FR-039 - add/get/update実装
|
|
11
|
+
* @see TSK-FR-040 - query実装
|
|
12
|
+
* @see TSK-FR-041 - recordUsage実装
|
|
13
|
+
* @trace REQ-FR-004 - 継続的学習
|
|
14
|
+
*/
|
|
15
|
+
import type { LearnedPattern, LearnedPatternInput, PatternQuery, PatternLearningStats, PatternLearningDBConfig } from './db-types.js';
|
|
16
|
+
/**
|
|
17
|
+
* PatternLearningDBインターフェース
|
|
18
|
+
*
|
|
19
|
+
* @trace DES-PATTERN-001
|
|
20
|
+
*/
|
|
21
|
+
export interface IPatternLearningDB {
|
|
22
|
+
/**
|
|
23
|
+
* パターンを追加
|
|
24
|
+
*/
|
|
25
|
+
add(input: LearnedPatternInput): Promise<LearnedPattern>;
|
|
26
|
+
/**
|
|
27
|
+
* IDでパターンを取得
|
|
28
|
+
*/
|
|
29
|
+
get(id: string): Promise<LearnedPattern | null>;
|
|
30
|
+
/**
|
|
31
|
+
* パターンを更新
|
|
32
|
+
*/
|
|
33
|
+
update(id: string, updates: Partial<Pick<LearnedPattern, 'status' | 'confidence' | 'metadata'>>): Promise<LearnedPattern | null>;
|
|
34
|
+
/**
|
|
35
|
+
* パターンを削除
|
|
36
|
+
*/
|
|
37
|
+
delete(id: string): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* パターンを検索
|
|
40
|
+
*/
|
|
41
|
+
query(query: PatternQuery): Promise<readonly LearnedPattern[]>;
|
|
42
|
+
/**
|
|
43
|
+
* 全パターンを取得
|
|
44
|
+
*/
|
|
45
|
+
list(): Promise<readonly LearnedPattern[]>;
|
|
46
|
+
/**
|
|
47
|
+
* パターン使用を記録
|
|
48
|
+
*/
|
|
49
|
+
recordUsage(id: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* 統計を取得
|
|
52
|
+
*/
|
|
53
|
+
getStats(): Promise<PatternLearningStats>;
|
|
54
|
+
/**
|
|
55
|
+
* 全パターンをクリア
|
|
56
|
+
*/
|
|
57
|
+
clear(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* PatternLearningDB実装
|
|
61
|
+
*
|
|
62
|
+
* @trace DES-PATTERN-001
|
|
63
|
+
*/
|
|
64
|
+
export declare class PatternLearningDB implements IPatternLearningDB {
|
|
65
|
+
private readonly patterns;
|
|
66
|
+
private readonly config;
|
|
67
|
+
constructor(config?: PatternLearningDBConfig);
|
|
68
|
+
/**
|
|
69
|
+
* @trace TSK-FR-039
|
|
70
|
+
*/
|
|
71
|
+
add(input: LearnedPatternInput): Promise<LearnedPattern>;
|
|
72
|
+
/**
|
|
73
|
+
* @trace TSK-FR-039
|
|
74
|
+
*/
|
|
75
|
+
get(id: string): Promise<LearnedPattern | null>;
|
|
76
|
+
/**
|
|
77
|
+
* @trace TSK-FR-039
|
|
78
|
+
*/
|
|
79
|
+
update(id: string, updates: Partial<Pick<LearnedPattern, 'status' | 'confidence' | 'metadata'>>): Promise<LearnedPattern | null>;
|
|
80
|
+
delete(id: string): Promise<boolean>;
|
|
81
|
+
/**
|
|
82
|
+
* @trace TSK-FR-040
|
|
83
|
+
*/
|
|
84
|
+
query(query: PatternQuery): Promise<readonly LearnedPattern[]>;
|
|
85
|
+
list(): Promise<readonly LearnedPattern[]>;
|
|
86
|
+
/**
|
|
87
|
+
* @trace TSK-FR-041
|
|
88
|
+
*/
|
|
89
|
+
recordUsage(id: string): Promise<void>;
|
|
90
|
+
getStats(): Promise<PatternLearningStats>;
|
|
91
|
+
clear(): Promise<void>;
|
|
92
|
+
private findOldestPattern;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* ファクトリ関数
|
|
96
|
+
*
|
|
97
|
+
* @trace TSK-FR-038
|
|
98
|
+
*/
|
|
99
|
+
export declare function createPatternLearningDB(config?: PatternLearningDBConfig): IPatternLearningDB;
|
|
100
|
+
//# sourceMappingURL=PatternLearningDB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternLearningDB.d.ts","sourceRoot":"","sources":["../../src/learning/PatternLearningDB.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,eAAe,CAAC;AAQvB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEjI;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAE/D;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAE3C;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE1C;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAErC,MAAM,GAAE,uBAAyD;IAI7E;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAc9D;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIrD;;OAEG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC,GAC3E,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAgB3B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;IA4D9D,IAAI,IAAI,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;IAIhD;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtC,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,iBAAiB;CAS1B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,kBAAkB,CAE5F"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PatternLearningDB - パターン学習データベース
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* 学習済みパターンの永続化・検索・管理を提供する。
|
|
6
|
+
* GLOBALレイヤーでメトリクス連携し、パターン適用の追跡を行う。
|
|
7
|
+
*
|
|
8
|
+
* @see DES-PATTERN-001 - パターン学習システム
|
|
9
|
+
* @see TSK-FR-038 - PatternLearningDBインターフェース定義
|
|
10
|
+
* @see TSK-FR-039 - add/get/update実装
|
|
11
|
+
* @see TSK-FR-040 - query実装
|
|
12
|
+
* @see TSK-FR-041 - recordUsage実装
|
|
13
|
+
* @trace REQ-FR-004 - 継続的学習
|
|
14
|
+
*/
|
|
15
|
+
import { createLearnedPattern, calculatePatternStats, DEFAULT_PATTERN_LEARNING_CONFIG, } from './db-types.js';
|
|
16
|
+
/**
|
|
17
|
+
* PatternLearningDB実装
|
|
18
|
+
*
|
|
19
|
+
* @trace DES-PATTERN-001
|
|
20
|
+
*/
|
|
21
|
+
export class PatternLearningDB {
|
|
22
|
+
patterns = new Map();
|
|
23
|
+
config;
|
|
24
|
+
constructor(config = DEFAULT_PATTERN_LEARNING_CONFIG) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @trace TSK-FR-039
|
|
29
|
+
*/
|
|
30
|
+
async add(input) {
|
|
31
|
+
// 最大パターン数を超えた場合、最も古いものを削除
|
|
32
|
+
while (this.patterns.size >= this.config.maxPatterns) {
|
|
33
|
+
const oldest = this.findOldestPattern();
|
|
34
|
+
if (oldest) {
|
|
35
|
+
this.patterns.delete(oldest.id);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const learned = createLearnedPattern(input);
|
|
39
|
+
this.patterns.set(learned.id, learned);
|
|
40
|
+
return learned;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @trace TSK-FR-039
|
|
44
|
+
*/
|
|
45
|
+
async get(id) {
|
|
46
|
+
return this.patterns.get(id) ?? null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @trace TSK-FR-039
|
|
50
|
+
*/
|
|
51
|
+
async update(id, updates) {
|
|
52
|
+
const existing = this.patterns.get(id);
|
|
53
|
+
if (!existing) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const updated = Object.freeze({
|
|
57
|
+
...existing,
|
|
58
|
+
...updates,
|
|
59
|
+
updatedAt: Date.now(),
|
|
60
|
+
});
|
|
61
|
+
this.patterns.set(id, updated);
|
|
62
|
+
return updated;
|
|
63
|
+
}
|
|
64
|
+
async delete(id) {
|
|
65
|
+
return this.patterns.delete(id);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @trace TSK-FR-040
|
|
69
|
+
*/
|
|
70
|
+
async query(query) {
|
|
71
|
+
let results = Array.from(this.patterns.values());
|
|
72
|
+
// ステータスフィルター
|
|
73
|
+
if (query.status) {
|
|
74
|
+
const statuses = Array.isArray(query.status) ? query.status : [query.status];
|
|
75
|
+
results = results.filter(p => statuses.includes(p.status));
|
|
76
|
+
}
|
|
77
|
+
// ソースフィルター
|
|
78
|
+
if (query.source) {
|
|
79
|
+
const sources = Array.isArray(query.source) ? query.source : [query.source];
|
|
80
|
+
results = results.filter(p => sources.includes(p.source));
|
|
81
|
+
}
|
|
82
|
+
// 信頼度フィルター
|
|
83
|
+
if (query.minConfidence !== undefined) {
|
|
84
|
+
results = results.filter(p => p.confidence >= query.minConfidence);
|
|
85
|
+
}
|
|
86
|
+
if (query.maxConfidence !== undefined) {
|
|
87
|
+
results = results.filter(p => p.confidence <= query.maxConfidence);
|
|
88
|
+
}
|
|
89
|
+
// カテゴリフィルター(DesignPatternの場合)
|
|
90
|
+
if (query.category) {
|
|
91
|
+
results = results.filter(p => {
|
|
92
|
+
const pattern = p.pattern;
|
|
93
|
+
return pattern.category === query.category;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// ドメインフィルター(DesignPatternの場合)
|
|
97
|
+
if (query.domain) {
|
|
98
|
+
results = results.filter(p => {
|
|
99
|
+
const pattern = p.pattern;
|
|
100
|
+
return pattern.domain?.includes(query.domain);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// ソート
|
|
104
|
+
if (query.sortBy) {
|
|
105
|
+
const order = query.sortOrder === 'desc' ? -1 : 1;
|
|
106
|
+
results.sort((a, b) => {
|
|
107
|
+
const aVal = a[query.sortBy];
|
|
108
|
+
const bVal = b[query.sortBy];
|
|
109
|
+
if (typeof aVal === 'number' && typeof bVal === 'number') {
|
|
110
|
+
return (aVal - bVal) * order;
|
|
111
|
+
}
|
|
112
|
+
return 0;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
// ページネーション
|
|
116
|
+
const offset = query.offset ?? 0;
|
|
117
|
+
const limit = query.limit ?? results.length;
|
|
118
|
+
results = results.slice(offset, offset + limit);
|
|
119
|
+
return Object.freeze(results);
|
|
120
|
+
}
|
|
121
|
+
async list() {
|
|
122
|
+
return Object.freeze(Array.from(this.patterns.values()));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @trace TSK-FR-041
|
|
126
|
+
*/
|
|
127
|
+
async recordUsage(id) {
|
|
128
|
+
const existing = this.patterns.get(id);
|
|
129
|
+
if (!existing) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const updated = Object.freeze({
|
|
133
|
+
...existing,
|
|
134
|
+
usageCount: existing.usageCount + 1,
|
|
135
|
+
lastUsedAt: Date.now(),
|
|
136
|
+
updatedAt: Date.now(),
|
|
137
|
+
});
|
|
138
|
+
this.patterns.set(id, updated);
|
|
139
|
+
}
|
|
140
|
+
async getStats() {
|
|
141
|
+
return calculatePatternStats(Array.from(this.patterns.values()));
|
|
142
|
+
}
|
|
143
|
+
async clear() {
|
|
144
|
+
this.patterns.clear();
|
|
145
|
+
}
|
|
146
|
+
findOldestPattern() {
|
|
147
|
+
let oldest = null;
|
|
148
|
+
for (const pattern of this.patterns.values()) {
|
|
149
|
+
if (!oldest || pattern.createdAt < oldest.createdAt) {
|
|
150
|
+
oldest = pattern;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return oldest;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* ファクトリ関数
|
|
158
|
+
*
|
|
159
|
+
* @trace TSK-FR-038
|
|
160
|
+
*/
|
|
161
|
+
export function createPatternLearningDB(config) {
|
|
162
|
+
return new PatternLearningDB(config);
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=PatternLearningDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternLearningDB.js","sourceRoot":"","sources":["../../src/learning/PatternLearningDB.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAsDvB;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACX,QAAQ,GAAgC,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,CAA0B;IAEjD,YAAY,SAAkC,+BAA+B;QAC3E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,KAA0B;QAClC,0BAA0B;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,EAAU,EACV,OAA4E;QAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAmB,MAAM,CAAC,MAAM,CAAC;YAC5C,GAAG,QAAQ;YACX,GAAG,OAAO;YACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAmB;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjD,aAAa;QACb,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,WAAW;QACX,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,WAAW;QACX,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,aAAc,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,aAAc,CAAC,CAAC;QACtE,CAAC;QAED,8BAA8B;QAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAc,CAAC;gBACjC,OAAO,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAc,CAAC;gBACjC,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM;QACN,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;gBAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACzD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC/B,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QAED,WAAW;QACX,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;QAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAmB,MAAM,CAAC,MAAM,CAAC;YAC5C,GAAG,QAAQ;YACX,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEO,iBAAiB;QACvB,IAAI,MAAM,GAA0B,IAAI,CAAC;QACzC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBACpD,MAAM,GAAG,OAAO,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAgC;IACtE,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PatternLearningDB Types
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* パターン学習データベースの型定義
|
|
6
|
+
*
|
|
7
|
+
* @see TSK-FR-038 - PatternLearningDB型定義
|
|
8
|
+
* @see REQ-FR-036〜040 - PatternLearningDB
|
|
9
|
+
* @trace DES-MUSUBIX-FR-001 DES-PATTERN-001
|
|
10
|
+
*/
|
|
11
|
+
import type { Pattern, DesignPattern, PatternExample } from '../types.js';
|
|
12
|
+
/**
|
|
13
|
+
* 学習済みパターンの状態
|
|
14
|
+
*/
|
|
15
|
+
export type PatternStatus = 'candidate' | 'verified' | 'deprecated' | 'archived';
|
|
16
|
+
/**
|
|
17
|
+
* パターン学習のソース
|
|
18
|
+
*/
|
|
19
|
+
export type LearningSource = 'code-observation' | 'feedback' | 'manual' | 'imported';
|
|
20
|
+
/**
|
|
21
|
+
* 学習済みパターンエントリ
|
|
22
|
+
*/
|
|
23
|
+
export interface LearnedPattern {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly pattern: Pattern | DesignPattern;
|
|
26
|
+
readonly source: LearningSource;
|
|
27
|
+
readonly status: PatternStatus;
|
|
28
|
+
readonly confidence: number;
|
|
29
|
+
readonly usageCount: number;
|
|
30
|
+
readonly lastUsedAt: number | null;
|
|
31
|
+
readonly createdAt: number;
|
|
32
|
+
readonly updatedAt: number;
|
|
33
|
+
readonly examples: readonly PatternExample[];
|
|
34
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* パターン学習入力
|
|
38
|
+
*/
|
|
39
|
+
export interface LearnedPatternInput {
|
|
40
|
+
readonly pattern: Pattern | DesignPattern;
|
|
41
|
+
readonly source: LearningSource;
|
|
42
|
+
readonly confidence?: number;
|
|
43
|
+
readonly examples?: readonly PatternExample[];
|
|
44
|
+
readonly metadata?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* パターン検索クエリ
|
|
48
|
+
*/
|
|
49
|
+
export interface PatternQuery {
|
|
50
|
+
readonly status?: PatternStatus | readonly PatternStatus[];
|
|
51
|
+
readonly source?: LearningSource | readonly LearningSource[];
|
|
52
|
+
readonly minConfidence?: number;
|
|
53
|
+
readonly maxConfidence?: number;
|
|
54
|
+
readonly category?: string;
|
|
55
|
+
readonly domain?: string;
|
|
56
|
+
readonly limit?: number;
|
|
57
|
+
readonly offset?: number;
|
|
58
|
+
readonly sortBy?: 'confidence' | 'usageCount' | 'createdAt' | 'updatedAt';
|
|
59
|
+
readonly sortOrder?: 'asc' | 'desc';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* パターン学習統計
|
|
63
|
+
*/
|
|
64
|
+
export interface PatternLearningStats {
|
|
65
|
+
readonly totalPatterns: number;
|
|
66
|
+
readonly byStatus: Readonly<Record<PatternStatus, number>>;
|
|
67
|
+
readonly bySource: Readonly<Record<LearningSource, number>>;
|
|
68
|
+
readonly avgConfidence: number;
|
|
69
|
+
readonly totalUsage: number;
|
|
70
|
+
readonly healthStatus: 'healthy' | 'warning' | 'critical';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* パターン学習DBの設定
|
|
74
|
+
*/
|
|
75
|
+
export interface PatternLearningDBConfig {
|
|
76
|
+
readonly maxPatterns: number;
|
|
77
|
+
readonly minConfidenceThreshold: number;
|
|
78
|
+
readonly autoDeprecateAfterDays: number;
|
|
79
|
+
readonly enableAutoCleanup: boolean;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* デフォルト設定
|
|
83
|
+
*/
|
|
84
|
+
export declare const DEFAULT_PATTERN_LEARNING_CONFIG: PatternLearningDBConfig;
|
|
85
|
+
/**
|
|
86
|
+
* IDカウンターをリセット(テスト用)
|
|
87
|
+
*/
|
|
88
|
+
export declare function resetPatternIdCounter(): void;
|
|
89
|
+
/**
|
|
90
|
+
* LearnedPatternを作成
|
|
91
|
+
*/
|
|
92
|
+
export declare function createLearnedPattern(input: LearnedPatternInput): LearnedPattern;
|
|
93
|
+
/**
|
|
94
|
+
* パターン学習統計を計算
|
|
95
|
+
*/
|
|
96
|
+
export declare function calculatePatternStats(patterns: readonly LearnedPattern[]): PatternLearningStats;
|
|
97
|
+
//# sourceMappingURL=db-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-types.d.ts","sourceRoot":"","sources":["../../src/learning/db-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PatternLearningDB Types
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* パターン学習データベースの型定義
|
|
6
|
+
*
|
|
7
|
+
* @see TSK-FR-038 - PatternLearningDB型定義
|
|
8
|
+
* @see REQ-FR-036〜040 - PatternLearningDB
|
|
9
|
+
* @trace DES-MUSUBIX-FR-001 DES-PATTERN-001
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* デフォルト設定
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_PATTERN_LEARNING_CONFIG = Object.freeze({
|
|
15
|
+
maxPatterns: 10000,
|
|
16
|
+
minConfidenceThreshold: 0.3,
|
|
17
|
+
autoDeprecateAfterDays: 90,
|
|
18
|
+
enableAutoCleanup: true,
|
|
19
|
+
});
|
|
20
|
+
// IDカウンター
|
|
21
|
+
let patternIdCounter = 0;
|
|
22
|
+
/**
|
|
23
|
+
* IDカウンターをリセット(テスト用)
|
|
24
|
+
*/
|
|
25
|
+
export function resetPatternIdCounter() {
|
|
26
|
+
patternIdCounter = 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* LearnedPatternを作成
|
|
30
|
+
*/
|
|
31
|
+
export function createLearnedPattern(input) {
|
|
32
|
+
patternIdCounter++;
|
|
33
|
+
const id = `LP-${String(patternIdCounter).padStart(5, '0')}`;
|
|
34
|
+
const now = Date.now();
|
|
35
|
+
return Object.freeze({
|
|
36
|
+
id,
|
|
37
|
+
pattern: input.pattern,
|
|
38
|
+
source: input.source,
|
|
39
|
+
status: 'candidate',
|
|
40
|
+
confidence: input.confidence ?? 0.5,
|
|
41
|
+
usageCount: 0,
|
|
42
|
+
lastUsedAt: null,
|
|
43
|
+
createdAt: now,
|
|
44
|
+
updatedAt: now,
|
|
45
|
+
examples: Object.freeze(input.examples ?? []),
|
|
46
|
+
metadata: input.metadata ? Object.freeze(input.metadata) : undefined,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* パターン学習統計を計算
|
|
51
|
+
*/
|
|
52
|
+
export function calculatePatternStats(patterns) {
|
|
53
|
+
const byStatus = {
|
|
54
|
+
candidate: 0,
|
|
55
|
+
verified: 0,
|
|
56
|
+
deprecated: 0,
|
|
57
|
+
archived: 0,
|
|
58
|
+
};
|
|
59
|
+
const bySource = {
|
|
60
|
+
'code-observation': 0,
|
|
61
|
+
'feedback': 0,
|
|
62
|
+
'manual': 0,
|
|
63
|
+
'imported': 0,
|
|
64
|
+
};
|
|
65
|
+
let totalConfidence = 0;
|
|
66
|
+
let totalUsage = 0;
|
|
67
|
+
for (const p of patterns) {
|
|
68
|
+
byStatus[p.status]++;
|
|
69
|
+
bySource[p.source]++;
|
|
70
|
+
totalConfidence += p.confidence;
|
|
71
|
+
totalUsage += p.usageCount;
|
|
72
|
+
}
|
|
73
|
+
const avgConfidence = patterns.length > 0 ? totalConfidence / patterns.length : 0;
|
|
74
|
+
// ヘルスステータス判定
|
|
75
|
+
let healthStatus;
|
|
76
|
+
const deprecatedRatio = patterns.length > 0 ? byStatus.deprecated / patterns.length : 0;
|
|
77
|
+
if (deprecatedRatio < 0.1 && avgConfidence >= 0.6) {
|
|
78
|
+
healthStatus = 'healthy';
|
|
79
|
+
}
|
|
80
|
+
else if (deprecatedRatio < 0.3 && avgConfidence >= 0.4) {
|
|
81
|
+
healthStatus = 'warning';
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
healthStatus = 'critical';
|
|
85
|
+
}
|
|
86
|
+
return Object.freeze({
|
|
87
|
+
totalPatterns: patterns.length,
|
|
88
|
+
byStatus: Object.freeze(byStatus),
|
|
89
|
+
bySource: Object.freeze(bySource),
|
|
90
|
+
avgConfidence,
|
|
91
|
+
totalUsage,
|
|
92
|
+
healthStatus,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=db-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-types.js","sourceRoot":"","sources":["../../src/learning/db-types.ts"],"names":[],"mappings":"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"}
|
package/dist/learning/index.d.ts
CHANGED
|
@@ -3,4 +3,8 @@
|
|
|
3
3
|
* @traceability TSK-WAKE-002
|
|
4
4
|
*/
|
|
5
5
|
export { WakeSleepCycle, type WakeSleepConfig, type WakeObservation, type SleepResult, type LearningStats, } from './wake-sleep.js';
|
|
6
|
+
export type { PatternStatus, LearningSource, LearnedPattern, LearnedPatternInput, PatternQuery, PatternLearningStats, PatternLearningDBConfig, } from './db-types.js';
|
|
7
|
+
export { createLearnedPattern, resetPatternIdCounter, calculatePatternStats, DEFAULT_PATTERN_LEARNING_CONFIG, } from './db-types.js';
|
|
8
|
+
export type { IPatternLearningDB } from './PatternLearningDB.js';
|
|
9
|
+
export { PatternLearningDB, createPatternLearningDB } from './PatternLearningDB.js';
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/learning/index.js
CHANGED
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
* @traceability TSK-WAKE-002
|
|
4
4
|
*/
|
|
5
5
|
export { WakeSleepCycle, } from './wake-sleep.js';
|
|
6
|
+
export { createLearnedPattern, resetPatternIdCounter, calculatePatternStats, DEFAULT_PATTERN_LEARNING_CONFIG, } from './db-types.js';
|
|
7
|
+
export { PatternLearningDB, createPatternLearningDB } from './PatternLearningDB.js';
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,GAKf,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,GAKf,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nahisaho/musubix-pattern-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.3",
|
|
4
4
|
"description": "MUSUBIX Pattern Library Learning MCP - AST-based pattern extraction and abstraction",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -14,12 +14,6 @@
|
|
|
14
14
|
"files": [
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
|
-
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
19
|
-
"test": "vitest run",
|
|
20
|
-
"clean": "rm -rf dist",
|
|
21
|
-
"typecheck": "tsc --noEmit"
|
|
22
|
-
},
|
|
23
17
|
"keywords": [
|
|
24
18
|
"musubix",
|
|
25
19
|
"pattern",
|
|
@@ -43,5 +37,11 @@
|
|
|
43
37
|
},
|
|
44
38
|
"peerDependencies": {
|
|
45
39
|
"@nahisaho/musubix-core": "^3.0.0"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"clean": "rm -rf dist",
|
|
45
|
+
"typecheck": "tsc --noEmit"
|
|
46
46
|
}
|
|
47
|
-
}
|
|
47
|
+
}
|