@nahisaho/musubix-core 1.0.9 → 1.0.13

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 (44) hide show
  1. package/dist/cli/commands/codegen.d.ts.map +1 -1
  2. package/dist/cli/commands/codegen.js +218 -1
  3. package/dist/cli/commands/codegen.js.map +1 -1
  4. package/dist/cli/commands/index.d.ts +1 -0
  5. package/dist/cli/commands/index.d.ts.map +1 -1
  6. package/dist/cli/commands/index.js +5 -0
  7. package/dist/cli/commands/index.js.map +1 -1
  8. package/dist/cli/commands/learn.d.ts +17 -0
  9. package/dist/cli/commands/learn.d.ts.map +1 -0
  10. package/dist/cli/commands/learn.js +285 -0
  11. package/dist/cli/commands/learn.js.map +1 -0
  12. package/dist/cli/commands/requirements.d.ts +1 -0
  13. package/dist/cli/commands/requirements.d.ts.map +1 -1
  14. package/dist/cli/commands/requirements.js +67 -16
  15. package/dist/cli/commands/requirements.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/learning/feedback-collector.d.ts +108 -0
  21. package/dist/learning/feedback-collector.d.ts.map +1 -0
  22. package/dist/learning/feedback-collector.js +231 -0
  23. package/dist/learning/feedback-collector.js.map +1 -0
  24. package/dist/learning/index.d.ts +19 -0
  25. package/dist/learning/index.d.ts.map +1 -0
  26. package/dist/learning/index.js +19 -0
  27. package/dist/learning/index.js.map +1 -0
  28. package/dist/learning/learning-engine.d.ts +140 -0
  29. package/dist/learning/learning-engine.d.ts.map +1 -0
  30. package/dist/learning/learning-engine.js +338 -0
  31. package/dist/learning/learning-engine.js.map +1 -0
  32. package/dist/learning/pattern-extractor.d.ts +138 -0
  33. package/dist/learning/pattern-extractor.d.ts.map +1 -0
  34. package/dist/learning/pattern-extractor.js +400 -0
  35. package/dist/learning/pattern-extractor.js.map +1 -0
  36. package/dist/learning/types.d.ts +159 -0
  37. package/dist/learning/types.d.ts.map +1 -0
  38. package/dist/learning/types.js +20 -0
  39. package/dist/learning/types.js.map +1 -0
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.d.ts.map +1 -1
  42. package/dist/version.js +1 -1
  43. package/dist/version.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Feedback Collector
3
+ *
4
+ * Collects and stores user feedback on generated artifacts
5
+ *
6
+ * @see REQ-LEARN-001 - Feedback Collection
7
+ * @module @musubix/core/learning
8
+ */
9
+ import type { Feedback, FeedbackType, ArtifactType, FeedbackContext, LearningConfig } from './types.js';
10
+ /**
11
+ * Feedback input for creating new feedback
12
+ */
13
+ export interface FeedbackInput {
14
+ type: FeedbackType;
15
+ artifactType: ArtifactType;
16
+ artifactId: string;
17
+ context?: Partial<FeedbackContext>;
18
+ reason?: string;
19
+ original?: string;
20
+ modified?: string;
21
+ }
22
+ /**
23
+ * Feedback query options
24
+ */
25
+ export interface FeedbackQuery {
26
+ artifactType?: ArtifactType;
27
+ type?: FeedbackType;
28
+ project?: string;
29
+ language?: string;
30
+ framework?: string;
31
+ since?: Date;
32
+ limit?: number;
33
+ }
34
+ /**
35
+ * Feedback Collector class
36
+ *
37
+ * Responsible for collecting, storing, and querying user feedback
38
+ *
39
+ * @see REQ-LEARN-001 - Feedback Collection
40
+ * @see REQ-LEARN-006 - Privacy Protection (local storage only)
41
+ */
42
+ export declare class FeedbackCollector {
43
+ private feedbackCache;
44
+ private storagePath;
45
+ private loaded;
46
+ constructor(config?: Partial<LearningConfig>);
47
+ /**
48
+ * Record new feedback
49
+ *
50
+ * @see REQ-LEARN-001 - Feedback Collection
51
+ * @param input - Feedback input data
52
+ * @returns Created feedback with generated ID
53
+ */
54
+ recordFeedback(input: FeedbackInput): Promise<Feedback>;
55
+ /**
56
+ * Get feedback by ID
57
+ */
58
+ getFeedback(id: string): Promise<Feedback | undefined>;
59
+ /**
60
+ * Query feedback with filters
61
+ */
62
+ queryFeedback(query?: FeedbackQuery): Promise<Feedback[]>;
63
+ /**
64
+ * Get feedback statistics
65
+ */
66
+ getStats(): Promise<{
67
+ total: number;
68
+ byType: Record<FeedbackType, number>;
69
+ byArtifactType: Record<ArtifactType, number>;
70
+ }>;
71
+ /**
72
+ * Delete feedback by ID
73
+ */
74
+ deleteFeedback(id: string): Promise<boolean>;
75
+ /**
76
+ * Export all feedback
77
+ */
78
+ export(): Promise<Feedback[]>;
79
+ /**
80
+ * Import feedback from array
81
+ */
82
+ import(feedbackList: Feedback[]): Promise<number>;
83
+ /**
84
+ * Clear all feedback
85
+ */
86
+ clear(): Promise<void>;
87
+ /**
88
+ * Sanitize feedback to remove sensitive data
89
+ *
90
+ * @see REQ-LEARN-006 - Privacy Protection
91
+ */
92
+ private sanitizeFeedback;
93
+ /**
94
+ * Detect current project name
95
+ */
96
+ private detectProject;
97
+ /**
98
+ * Ensure data is loaded from storage
99
+ */
100
+ private ensureLoaded;
101
+ /**
102
+ * Persist data to storage
103
+ *
104
+ * @see REQ-LEARN-006 - Local storage only
105
+ */
106
+ private persist;
107
+ }
108
+ //# sourceMappingURL=feedback-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-collector.d.ts","sourceRoot":"","sources":["../../src/learning/feedback-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;;;;;OAMG;IACG,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6B7D;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAK5D;;OAEG;IACG,aAAa,CAAC,KAAK,GAAE,aAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAkCnE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;KAC9C,CAAC;IAoBF;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKnC;;OAEG;IACG,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAavD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;YACW,YAAY;IAkB1B;;;;OAIG;YACW,OAAO;CAatB"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Feedback Collector
3
+ *
4
+ * Collects and stores user feedback on generated artifacts
5
+ *
6
+ * @see REQ-LEARN-001 - Feedback Collection
7
+ * @module @musubix/core/learning
8
+ */
9
+ import { randomUUID } from 'crypto';
10
+ import { promises as fs } from 'fs';
11
+ import { join, dirname } from 'path';
12
+ /**
13
+ * Feedback Collector class
14
+ *
15
+ * Responsible for collecting, storing, and querying user feedback
16
+ *
17
+ * @see REQ-LEARN-001 - Feedback Collection
18
+ * @see REQ-LEARN-006 - Privacy Protection (local storage only)
19
+ */
20
+ export class FeedbackCollector {
21
+ feedbackCache = new Map();
22
+ storagePath;
23
+ loaded = false;
24
+ constructor(config = {}) {
25
+ this.storagePath = config.storagePath || 'storage/learning';
26
+ }
27
+ /**
28
+ * Record new feedback
29
+ *
30
+ * @see REQ-LEARN-001 - Feedback Collection
31
+ * @param input - Feedback input data
32
+ * @returns Created feedback with generated ID
33
+ */
34
+ async recordFeedback(input) {
35
+ await this.ensureLoaded();
36
+ const feedback = {
37
+ id: `FB-${randomUUID().slice(0, 8).toUpperCase()}`,
38
+ timestamp: new Date(),
39
+ type: input.type,
40
+ artifactType: input.artifactType,
41
+ artifactId: input.artifactId,
42
+ context: {
43
+ project: input.context?.project || this.detectProject(),
44
+ language: input.context?.language,
45
+ framework: input.context?.framework,
46
+ tags: input.context?.tags || [],
47
+ },
48
+ reason: input.reason,
49
+ original: input.original,
50
+ modified: input.modified,
51
+ };
52
+ // Sanitize feedback to remove sensitive data
53
+ this.sanitizeFeedback(feedback);
54
+ this.feedbackCache.set(feedback.id, feedback);
55
+ await this.persist();
56
+ return feedback;
57
+ }
58
+ /**
59
+ * Get feedback by ID
60
+ */
61
+ async getFeedback(id) {
62
+ await this.ensureLoaded();
63
+ return this.feedbackCache.get(id);
64
+ }
65
+ /**
66
+ * Query feedback with filters
67
+ */
68
+ async queryFeedback(query = {}) {
69
+ await this.ensureLoaded();
70
+ let results = Array.from(this.feedbackCache.values());
71
+ if (query.artifactType) {
72
+ results = results.filter((f) => f.artifactType === query.artifactType);
73
+ }
74
+ if (query.type) {
75
+ results = results.filter((f) => f.type === query.type);
76
+ }
77
+ if (query.project) {
78
+ results = results.filter((f) => f.context.project === query.project);
79
+ }
80
+ if (query.language) {
81
+ results = results.filter((f) => f.context.language === query.language);
82
+ }
83
+ if (query.framework) {
84
+ results = results.filter((f) => f.context.framework === query.framework);
85
+ }
86
+ if (query.since) {
87
+ results = results.filter((f) => f.timestamp >= query.since);
88
+ }
89
+ // Sort by timestamp descending
90
+ results.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
91
+ if (query.limit) {
92
+ results = results.slice(0, query.limit);
93
+ }
94
+ return results;
95
+ }
96
+ /**
97
+ * Get feedback statistics
98
+ */
99
+ async getStats() {
100
+ await this.ensureLoaded();
101
+ const stats = {
102
+ total: this.feedbackCache.size,
103
+ byType: { accept: 0, reject: 0, modify: 0 },
104
+ byArtifactType: { requirement: 0, design: 0, code: 0, test: 0 },
105
+ };
106
+ for (const feedback of this.feedbackCache.values()) {
107
+ stats.byType[feedback.type]++;
108
+ stats.byArtifactType[feedback.artifactType]++;
109
+ }
110
+ return stats;
111
+ }
112
+ /**
113
+ * Delete feedback by ID
114
+ */
115
+ async deleteFeedback(id) {
116
+ await this.ensureLoaded();
117
+ const deleted = this.feedbackCache.delete(id);
118
+ if (deleted) {
119
+ await this.persist();
120
+ }
121
+ return deleted;
122
+ }
123
+ /**
124
+ * Export all feedback
125
+ */
126
+ async export() {
127
+ await this.ensureLoaded();
128
+ return Array.from(this.feedbackCache.values());
129
+ }
130
+ /**
131
+ * Import feedback from array
132
+ */
133
+ async import(feedbackList) {
134
+ await this.ensureLoaded();
135
+ let imported = 0;
136
+ for (const feedback of feedbackList) {
137
+ if (!this.feedbackCache.has(feedback.id)) {
138
+ this.feedbackCache.set(feedback.id, feedback);
139
+ imported++;
140
+ }
141
+ }
142
+ await this.persist();
143
+ return imported;
144
+ }
145
+ /**
146
+ * Clear all feedback
147
+ */
148
+ async clear() {
149
+ this.feedbackCache.clear();
150
+ await this.persist();
151
+ }
152
+ /**
153
+ * Sanitize feedback to remove sensitive data
154
+ *
155
+ * @see REQ-LEARN-006 - Privacy Protection
156
+ */
157
+ sanitizeFeedback(feedback) {
158
+ // Remove potential sensitive patterns
159
+ const sensitivePatterns = [
160
+ /password\s*[:=]\s*["']?[^"'\s]+["']?/gi,
161
+ /api[_-]?key\s*[:=]\s*["']?[^"'\s]+["']?/gi,
162
+ /secret\s*[:=]\s*["']?[^"'\s]+["']?/gi,
163
+ /token\s*[:=]\s*["']?[^"'\s]+["']?/gi,
164
+ /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, // emails
165
+ ];
166
+ const sanitize = (text) => {
167
+ if (!text)
168
+ return text;
169
+ let result = text;
170
+ for (const pattern of sensitivePatterns) {
171
+ result = result.replace(pattern, '[REDACTED]');
172
+ }
173
+ return result;
174
+ };
175
+ feedback.reason = sanitize(feedback.reason);
176
+ feedback.original = sanitize(feedback.original);
177
+ feedback.modified = sanitize(feedback.modified);
178
+ }
179
+ /**
180
+ * Detect current project name
181
+ */
182
+ detectProject() {
183
+ // Try to detect from package.json or current directory
184
+ try {
185
+ const cwd = process.cwd();
186
+ return cwd.split('/').pop() || 'unknown';
187
+ }
188
+ catch {
189
+ return 'unknown';
190
+ }
191
+ }
192
+ /**
193
+ * Ensure data is loaded from storage
194
+ */
195
+ async ensureLoaded() {
196
+ if (this.loaded)
197
+ return;
198
+ const filePath = join(this.storagePath, 'feedback.json');
199
+ try {
200
+ const data = await fs.readFile(filePath, 'utf-8');
201
+ const feedbackList = JSON.parse(data);
202
+ for (const feedback of feedbackList) {
203
+ // Convert date strings back to Date objects
204
+ feedback.timestamp = new Date(feedback.timestamp);
205
+ this.feedbackCache.set(feedback.id, feedback);
206
+ }
207
+ }
208
+ catch {
209
+ // File doesn't exist yet, start fresh
210
+ }
211
+ this.loaded = true;
212
+ }
213
+ /**
214
+ * Persist data to storage
215
+ *
216
+ * @see REQ-LEARN-006 - Local storage only
217
+ */
218
+ async persist() {
219
+ const filePath = join(this.storagePath, 'feedback.json');
220
+ const dir = dirname(filePath);
221
+ try {
222
+ await fs.mkdir(dir, { recursive: true });
223
+ }
224
+ catch {
225
+ // Directory exists
226
+ }
227
+ const feedbackList = Array.from(this.feedbackCache.values());
228
+ await fs.writeFile(filePath, JSON.stringify(feedbackList, null, 2), 'utf-8');
229
+ }
230
+ }
231
+ //# sourceMappingURL=feedback-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-collector.js","sourceRoot":"","sources":["../../src/learning/feedback-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Learning Module - Self-Learning System
3
+ *
4
+ * Provides self-learning capabilities through feedback collection,
5
+ * pattern extraction, and adaptive reasoning.
6
+ *
7
+ * @see REQ-LEARN-001 - Feedback Collection
8
+ * @see REQ-LEARN-002 - Pattern Extraction
9
+ * @see REQ-LEARN-003 - Adaptive Reasoning
10
+ * @module @musubix/core/learning
11
+ */
12
+ export type { FeedbackType, PatternSource, PatternActionType, FeedbackContext, Feedback, PatternTrigger, PatternAction, LearnedPattern, LearningStats, PatternMatch, LearningConfig, } from './types.js';
13
+ export { DEFAULT_LEARNING_CONFIG } from './types.js';
14
+ export type { ArtifactType as LearningArtifactType } from './types.js';
15
+ export type { PatternCategory as LearningPatternCategory } from './types.js';
16
+ export { FeedbackCollector, type FeedbackInput, type FeedbackQuery } from './feedback-collector.js';
17
+ export { PatternExtractor } from './pattern-extractor.js';
18
+ export { LearningEngine, type InferenceContext } from './learning-engine.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,YAAY,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Learning Module - Self-Learning System
3
+ *
4
+ * Provides self-learning capabilities through feedback collection,
5
+ * pattern extraction, and adaptive reasoning.
6
+ *
7
+ * @see REQ-LEARN-001 - Feedback Collection
8
+ * @see REQ-LEARN-002 - Pattern Extraction
9
+ * @see REQ-LEARN-003 - Adaptive Reasoning
10
+ * @module @musubix/core/learning
11
+ */
12
+ export { DEFAULT_LEARNING_CONFIG } from './types.js';
13
+ // Export feedback collector
14
+ export { FeedbackCollector } from './feedback-collector.js';
15
+ // Export pattern extractor
16
+ export { PatternExtractor } from './pattern-extractor.js';
17
+ // Export learning engine
18
+ export { LearningEngine } from './learning-engine.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAMrD,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAA0C,MAAM,yBAAyB,CAAC;AAEpG,2BAA2B;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,yBAAyB;AACzB,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Learning Engine
3
+ *
4
+ * Main orchestrator for the self-learning system
5
+ *
6
+ * @see REQ-LEARN-003 - Adaptive Reasoning
7
+ * @module @musubix/core/learning
8
+ */
9
+ import { type FeedbackInput, type FeedbackQuery } from './feedback-collector.js';
10
+ import type { Feedback, LearnedPattern, PatternMatch, LearningStats, LearningConfig, PatternCategory } from './types.js';
11
+ /**
12
+ * Inference context for pattern matching
13
+ */
14
+ export interface InferenceContext {
15
+ artifactType: 'requirement' | 'design' | 'code' | 'test';
16
+ language?: string;
17
+ framework?: string;
18
+ tags?: string[];
19
+ }
20
+ /**
21
+ * Learning Engine class
22
+ *
23
+ * Orchestrates feedback collection, pattern extraction, and adaptive reasoning
24
+ *
25
+ * @see REQ-LEARN-001 - Feedback Collection
26
+ * @see REQ-LEARN-002 - Pattern Extraction
27
+ * @see REQ-LEARN-003 - Adaptive Reasoning
28
+ */
29
+ export declare class LearningEngine {
30
+ private feedbackCollector;
31
+ private patternExtractor;
32
+ private config;
33
+ constructor(config?: Partial<LearningConfig>);
34
+ /**
35
+ * Record feedback for an artifact
36
+ *
37
+ * @see REQ-LEARN-001 - Feedback Collection
38
+ */
39
+ recordFeedback(input: FeedbackInput): Promise<Feedback>;
40
+ /**
41
+ * Record acceptance of an artifact
42
+ */
43
+ acceptArtifact(artifactId: string, artifactType: FeedbackInput['artifactType'], context?: Partial<FeedbackInput['context']>, reason?: string): Promise<Feedback>;
44
+ /**
45
+ * Record rejection of an artifact
46
+ */
47
+ rejectArtifact(artifactId: string, artifactType: FeedbackInput['artifactType'], context?: Partial<FeedbackInput['context']>, reason?: string): Promise<Feedback>;
48
+ /**
49
+ * Record modification of an artifact
50
+ */
51
+ modifyArtifact(artifactId: string, artifactType: FeedbackInput['artifactType'], original: string, modified: string, context?: Partial<FeedbackInput['context']>, reason?: string): Promise<Feedback>;
52
+ /**
53
+ * Query feedback
54
+ */
55
+ queryFeedback(query?: FeedbackQuery): Promise<Feedback[]>;
56
+ /**
57
+ * Get all learned patterns
58
+ */
59
+ getPatterns(): Promise<LearnedPattern[]>;
60
+ /**
61
+ * Get patterns by category
62
+ */
63
+ getPatternsByCategory(category: PatternCategory): Promise<LearnedPattern[]>;
64
+ /**
65
+ * Add a manual pattern
66
+ */
67
+ addPattern(name: string, category: PatternCategory, trigger: LearnedPattern['trigger'], action: LearnedPattern['action'], confidence?: number): Promise<LearnedPattern>;
68
+ /**
69
+ * Remove a pattern
70
+ */
71
+ removePattern(id: string): Promise<boolean>;
72
+ /**
73
+ * Apply decay to unused patterns
74
+ *
75
+ * @see REQ-LEARN-004 - Pattern Decay
76
+ */
77
+ applyDecay(): Promise<{
78
+ decayed: number;
79
+ archived: number;
80
+ }>;
81
+ /**
82
+ * Find matching patterns for inference context
83
+ *
84
+ * @see REQ-LEARN-003 - Adaptive Reasoning
85
+ * @param context - Current inference context
86
+ * @returns Matching patterns sorted by relevance
87
+ */
88
+ findMatchingPatterns(context: InferenceContext): Promise<PatternMatch[]>;
89
+ /**
90
+ * Get recommendations for current context
91
+ *
92
+ * @see REQ-LEARN-003 - Adaptive Reasoning
93
+ */
94
+ getRecommendations(context: InferenceContext, limit?: number): Promise<{
95
+ prefer: LearnedPattern[];
96
+ avoid: LearnedPattern[];
97
+ suggest: LearnedPattern[];
98
+ }>;
99
+ /**
100
+ * Apply pattern to adjust inference
101
+ */
102
+ applyPattern(patternId: string, success: boolean): Promise<LearnedPattern | undefined>;
103
+ /**
104
+ * Get learning statistics
105
+ *
106
+ * @see REQ-LEARN-005 - Learning Visualization
107
+ */
108
+ getStats(): Promise<LearningStats>;
109
+ /**
110
+ * Export all learning data
111
+ */
112
+ export(): Promise<{
113
+ feedback: Feedback[];
114
+ patterns: LearnedPattern[];
115
+ stats: LearningStats;
116
+ }>;
117
+ /**
118
+ * Import learning data
119
+ */
120
+ import(data: {
121
+ feedback?: Feedback[];
122
+ patterns?: LearnedPattern[];
123
+ }): Promise<{
124
+ feedbackImported: number;
125
+ patternsImported: number;
126
+ }>;
127
+ /**
128
+ * Generate status report
129
+ */
130
+ generateStatusReport(): Promise<string>;
131
+ /**
132
+ * Calculate match score between pattern and context
133
+ */
134
+ private calculateMatchScore;
135
+ /**
136
+ * Try to extract patterns from recent feedback
137
+ */
138
+ private tryExtractPatterns;
139
+ }
140
+ //# sourceMappingURL=learning-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-engine.d.ts","sourceRoot":"","sources":["../../src/learning/learning-engine.ts"],"names":[],"mappings":"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"}