@nahisaho/musubix-pattern-mcp 1.0.0
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/compression/index.d.ts +7 -0
- package/dist/compression/index.d.ts.map +1 -0
- package/dist/compression/index.js +7 -0
- package/dist/compression/index.js.map +1 -0
- package/dist/compression/pattern-compressor.d.ts +111 -0
- package/dist/compression/pattern-compressor.d.ts.map +1 -0
- package/dist/compression/pattern-compressor.js +307 -0
- package/dist/compression/pattern-compressor.js.map +1 -0
- package/dist/compression/quality-evaluator.d.ts +97 -0
- package/dist/compression/quality-evaluator.d.ts.map +1 -0
- package/dist/compression/quality-evaluator.js +210 -0
- package/dist/compression/quality-evaluator.js.map +1 -0
- package/dist/extractor/anti-unifier.d.ts +63 -0
- package/dist/extractor/anti-unifier.d.ts.map +1 -0
- package/dist/extractor/anti-unifier.js +167 -0
- package/dist/extractor/anti-unifier.js.map +1 -0
- package/dist/extractor/index.d.ts +9 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +9 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/pattern-extractor.d.ts +58 -0
- package/dist/extractor/pattern-extractor.d.ts.map +1 -0
- package/dist/extractor/pattern-extractor.js +201 -0
- package/dist/extractor/pattern-extractor.js.map +1 -0
- package/dist/extractor/subtree-finder.d.ts +81 -0
- package/dist/extractor/subtree-finder.d.ts.map +1 -0
- package/dist/extractor/subtree-finder.js +155 -0
- package/dist/extractor/subtree-finder.js.map +1 -0
- package/dist/extractor/typescript-parser.d.ts +91 -0
- package/dist/extractor/typescript-parser.d.ts.map +1 -0
- package/dist/extractor/typescript-parser.js +219 -0
- package/dist/extractor/typescript-parser.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/learning/index.d.ts +6 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +6 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/wake-sleep.d.ts +144 -0
- package/dist/learning/wake-sleep.d.ts.map +1 -0
- package/dist/learning/wake-sleep.js +312 -0
- package/dist/learning/wake-sleep.js.map +1 -0
- package/dist/library/index.d.ts +6 -0
- package/dist/library/index.d.ts.map +1 -0
- package/dist/library/index.js +6 -0
- package/dist/library/index.js.map +1 -0
- package/dist/library/pattern-library.d.ts +59 -0
- package/dist/library/pattern-library.d.ts.map +1 -0
- package/dist/library/pattern-library.js +139 -0
- package/dist/library/pattern-library.js.map +1 -0
- package/dist/privacy/index.d.ts +6 -0
- package/dist/privacy/index.d.ts.map +1 -0
- package/dist/privacy/index.js +6 -0
- package/dist/privacy/index.js.map +1 -0
- package/dist/privacy/privacy-filter.d.ts +46 -0
- package/dist/privacy/privacy-filter.d.ts.map +1 -0
- package/dist/privacy/privacy-filter.js +105 -0
- package/dist/privacy/privacy-filter.js.map +1 -0
- package/dist/types.d.ts +89 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview TypeScript AST parser using TypeScript Compiler API
|
|
3
|
+
* @traceability TSK-PATTERN-001, REQ-PATTERN-001-F001
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
/**
|
|
7
|
+
* TypeScript AST parser
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* Parses TypeScript/JavaScript source code into a normalized AST
|
|
11
|
+
* using the TypeScript Compiler API.
|
|
12
|
+
*/
|
|
13
|
+
export class TypeScriptParser {
|
|
14
|
+
options;
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.options = {
|
|
17
|
+
includePositions: options.includePositions ?? true,
|
|
18
|
+
includeValues: options.includeValues ?? true,
|
|
19
|
+
maxDepth: options.maxDepth ?? 20,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parse TypeScript/JavaScript source code to AST
|
|
24
|
+
*/
|
|
25
|
+
parse(source, fileName = 'source.ts') {
|
|
26
|
+
const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
27
|
+
return this.convertNode(sourceFile, source, 0);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Convert TypeScript AST node to normalized ASTNode
|
|
31
|
+
*/
|
|
32
|
+
convertNode(node, source, depth) {
|
|
33
|
+
const children = [];
|
|
34
|
+
if (depth < this.options.maxDepth) {
|
|
35
|
+
ts.forEachChild(node, (child) => {
|
|
36
|
+
children.push(this.convertNode(child, source, depth + 1));
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const result = {
|
|
40
|
+
type: this.getNodeTypeName(node),
|
|
41
|
+
children,
|
|
42
|
+
startPosition: this.getPosition(node.getStart(), source),
|
|
43
|
+
endPosition: this.getPosition(node.getEnd(), source),
|
|
44
|
+
};
|
|
45
|
+
// Include values for identifiers and literals
|
|
46
|
+
if (this.options.includeValues) {
|
|
47
|
+
const value = this.extractValue(node, source);
|
|
48
|
+
if (value !== undefined) {
|
|
49
|
+
result.value = value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get human-readable node type name
|
|
56
|
+
*/
|
|
57
|
+
getNodeTypeName(node) {
|
|
58
|
+
return ts.SyntaxKind[node.kind];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract value from node (for identifiers, literals)
|
|
62
|
+
*/
|
|
63
|
+
extractValue(node, _source) {
|
|
64
|
+
if (ts.isIdentifier(node)) {
|
|
65
|
+
return node.text;
|
|
66
|
+
}
|
|
67
|
+
if (ts.isStringLiteral(node)) {
|
|
68
|
+
return node.text;
|
|
69
|
+
}
|
|
70
|
+
if (ts.isNumericLiteral(node)) {
|
|
71
|
+
return node.text;
|
|
72
|
+
}
|
|
73
|
+
if (ts.isTemplateHead(node) || ts.isTemplateMiddle(node) || ts.isTemplateTail(node)) {
|
|
74
|
+
return node.text;
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Convert position offset to row/column
|
|
80
|
+
*/
|
|
81
|
+
getPosition(offset, source) {
|
|
82
|
+
if (!this.options.includePositions) {
|
|
83
|
+
return { row: 0, column: 0 };
|
|
84
|
+
}
|
|
85
|
+
let row = 0;
|
|
86
|
+
let column = 0;
|
|
87
|
+
for (let i = 0; i < offset && i < source.length; i++) {
|
|
88
|
+
if (source[i] === '\n') {
|
|
89
|
+
row++;
|
|
90
|
+
column = 0;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
column++;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return { row, column };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get all function declarations in source
|
|
100
|
+
*/
|
|
101
|
+
getFunctions(source) {
|
|
102
|
+
const sourceFile = ts.createSourceFile('source.ts', source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
103
|
+
const functions = [];
|
|
104
|
+
const visit = (node) => {
|
|
105
|
+
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
106
|
+
functions.push({
|
|
107
|
+
name: node.name.text,
|
|
108
|
+
parameters: node.parameters.map(p => ({
|
|
109
|
+
name: p.name.getText(),
|
|
110
|
+
type: p.type?.getText() ?? 'any',
|
|
111
|
+
})),
|
|
112
|
+
returnType: node.type?.getText() ?? 'void',
|
|
113
|
+
startLine: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
|
|
114
|
+
endLine: sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line + 1,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
if (ts.isMethodDeclaration(node) && node.name) {
|
|
118
|
+
functions.push({
|
|
119
|
+
name: node.name.getText(),
|
|
120
|
+
parameters: node.parameters.map(p => ({
|
|
121
|
+
name: p.name.getText(),
|
|
122
|
+
type: p.type?.getText() ?? 'any',
|
|
123
|
+
})),
|
|
124
|
+
returnType: node.type?.getText() ?? 'void',
|
|
125
|
+
startLine: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
|
|
126
|
+
endLine: sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line + 1,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
|
|
130
|
+
const parent = node.parent;
|
|
131
|
+
let name = '<anonymous>';
|
|
132
|
+
if (ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name)) {
|
|
133
|
+
name = parent.name.text;
|
|
134
|
+
}
|
|
135
|
+
functions.push({
|
|
136
|
+
name,
|
|
137
|
+
parameters: node.parameters.map(p => ({
|
|
138
|
+
name: p.name.getText(),
|
|
139
|
+
type: p.type?.getText() ?? 'any',
|
|
140
|
+
})),
|
|
141
|
+
returnType: node.type?.getText() ?? 'void',
|
|
142
|
+
startLine: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
|
|
143
|
+
endLine: sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line + 1,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
ts.forEachChild(node, visit);
|
|
147
|
+
};
|
|
148
|
+
visit(sourceFile);
|
|
149
|
+
return functions;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get all class declarations in source
|
|
153
|
+
*/
|
|
154
|
+
getClasses(source) {
|
|
155
|
+
const sourceFile = ts.createSourceFile('source.ts', source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
156
|
+
const classes = [];
|
|
157
|
+
const visit = (node) => {
|
|
158
|
+
if (ts.isClassDeclaration(node) && node.name) {
|
|
159
|
+
const methods = [];
|
|
160
|
+
const properties = [];
|
|
161
|
+
node.members.forEach(member => {
|
|
162
|
+
if (ts.isMethodDeclaration(member) && member.name) {
|
|
163
|
+
methods.push(member.name.getText());
|
|
164
|
+
}
|
|
165
|
+
if (ts.isPropertyDeclaration(member) && member.name) {
|
|
166
|
+
properties.push(member.name.getText());
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
classes.push({
|
|
170
|
+
name: node.name.text,
|
|
171
|
+
methods,
|
|
172
|
+
properties,
|
|
173
|
+
startLine: sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1,
|
|
174
|
+
endLine: sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line + 1,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
ts.forEachChild(node, visit);
|
|
178
|
+
};
|
|
179
|
+
visit(sourceFile);
|
|
180
|
+
return classes;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get imports from source
|
|
184
|
+
*/
|
|
185
|
+
getImports(source) {
|
|
186
|
+
const sourceFile = ts.createSourceFile('source.ts', source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
187
|
+
const imports = [];
|
|
188
|
+
const visit = (node) => {
|
|
189
|
+
if (ts.isImportDeclaration(node)) {
|
|
190
|
+
const moduleSpecifier = node.moduleSpecifier;
|
|
191
|
+
if (ts.isStringLiteral(moduleSpecifier)) {
|
|
192
|
+
const namedImports = [];
|
|
193
|
+
let defaultImport;
|
|
194
|
+
if (node.importClause) {
|
|
195
|
+
if (node.importClause.name) {
|
|
196
|
+
defaultImport = node.importClause.name.text;
|
|
197
|
+
}
|
|
198
|
+
if (node.importClause.namedBindings) {
|
|
199
|
+
if (ts.isNamedImports(node.importClause.namedBindings)) {
|
|
200
|
+
node.importClause.namedBindings.elements.forEach(el => {
|
|
201
|
+
namedImports.push(el.name.text);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
imports.push({
|
|
207
|
+
module: moduleSpecifier.text,
|
|
208
|
+
namedImports,
|
|
209
|
+
defaultImport,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
ts.forEachChild(node, visit);
|
|
214
|
+
};
|
|
215
|
+
visit(sourceFile);
|
|
216
|
+
return imports;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=typescript-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-parser.js","sourceRoot":"","sources":["../../src/extractor/typescript-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MUSUBIX Pattern Library Learning MCP
|
|
3
|
+
* @module @nahisaho/musubix-pattern-mcp
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
* @traceability REQ-PATTERN-001
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './extractor/index.js';
|
|
9
|
+
export * from './compression/index.js';
|
|
10
|
+
export * from './library/index.js';
|
|
11
|
+
export * from './privacy/index.js';
|
|
12
|
+
export * from './learning/index.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MUSUBIX Pattern Library Learning MCP
|
|
3
|
+
* @module @nahisaho/musubix-pattern-mcp
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
* @traceability REQ-PATTERN-001
|
|
6
|
+
*/
|
|
7
|
+
// Types
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
// Pattern Extraction (TSK-PATTERN-001)
|
|
10
|
+
export * from './extractor/index.js';
|
|
11
|
+
// Pattern Compression (TSK-PATTERN-002)
|
|
12
|
+
export * from './compression/index.js';
|
|
13
|
+
// Pattern Library (TSK-PATTERN-005)
|
|
14
|
+
export * from './library/index.js';
|
|
15
|
+
// Privacy Protection (TSK-PATTERN-007)
|
|
16
|
+
export * from './privacy/index.js';
|
|
17
|
+
// Wake-Sleep Learning (TSK-WAKE-002)
|
|
18
|
+
export * from './learning/index.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,uCAAuC;AACvC,cAAc,sBAAsB,CAAC;AAErC,wCAAwC;AACxC,cAAc,wBAAwB,CAAC;AAEvC,oCAAoC;AACpC,cAAc,oBAAoB,CAAC;AAEnC,uCAAuC;AACvC,cAAc,oBAAoB,CAAC;AAEnC,qCAAqC;AACrC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Wake-Sleep Cycle Learning System
|
|
3
|
+
* @traceability TSK-WAKE-002, REQ-PATTERN-003
|
|
4
|
+
*
|
|
5
|
+
* Implements DreamCoder-style wake-sleep learning:
|
|
6
|
+
* - Wake Phase: Extract patterns from observed code
|
|
7
|
+
* - Sleep Phase: Compress and optimize pattern library
|
|
8
|
+
*/
|
|
9
|
+
import type { Pattern, ASTNode } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration for wake-sleep cycle
|
|
12
|
+
*/
|
|
13
|
+
export interface WakeSleepConfig {
|
|
14
|
+
/** Minimum quality score to keep pattern */
|
|
15
|
+
minQualityThreshold: number;
|
|
16
|
+
/** Maximum patterns in library */
|
|
17
|
+
maxLibrarySize: number;
|
|
18
|
+
/** Compression iterations per sleep cycle */
|
|
19
|
+
compressionIterations: number;
|
|
20
|
+
/** Whether to enable automatic cycling */
|
|
21
|
+
autoSleep: boolean;
|
|
22
|
+
/** Wake observations before triggering auto sleep */
|
|
23
|
+
wakeThreshold: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Wake phase observation
|
|
27
|
+
*/
|
|
28
|
+
export interface WakeObservation {
|
|
29
|
+
ast: ASTNode;
|
|
30
|
+
source: string;
|
|
31
|
+
context: {
|
|
32
|
+
language: string;
|
|
33
|
+
filename?: string;
|
|
34
|
+
domain?: string;
|
|
35
|
+
};
|
|
36
|
+
timestamp: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sleep cycle result
|
|
40
|
+
*/
|
|
41
|
+
export interface SleepResult {
|
|
42
|
+
patternsConsolidated: number;
|
|
43
|
+
patternsRemoved: number;
|
|
44
|
+
compressionRatio: number;
|
|
45
|
+
mdlImprovement: number;
|
|
46
|
+
cycleTimeMs: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Wake-Sleep learning statistics
|
|
50
|
+
*/
|
|
51
|
+
export interface LearningStats {
|
|
52
|
+
totalWakeObservations: number;
|
|
53
|
+
totalSleepCycles: number;
|
|
54
|
+
currentLibrarySize: number;
|
|
55
|
+
averagePatternQuality: number;
|
|
56
|
+
totalPatternsExtracted: number;
|
|
57
|
+
totalPatternsRemoved: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Wake-Sleep Cycle Learning System
|
|
61
|
+
*
|
|
62
|
+
* Implements alternating wake and sleep phases for continuous learning:
|
|
63
|
+
*
|
|
64
|
+
* Wake Phase:
|
|
65
|
+
* - Observe new code/patterns
|
|
66
|
+
* - Extract potential patterns
|
|
67
|
+
* - Add to candidate pool
|
|
68
|
+
*
|
|
69
|
+
* Sleep Phase:
|
|
70
|
+
* - Compress pattern library using MDL
|
|
71
|
+
* - Remove low-quality patterns
|
|
72
|
+
* - Merge similar patterns
|
|
73
|
+
* - Optimize for generality/utility balance
|
|
74
|
+
*/
|
|
75
|
+
export declare class WakeSleepCycle {
|
|
76
|
+
private config;
|
|
77
|
+
private compressor;
|
|
78
|
+
private evaluator;
|
|
79
|
+
private library;
|
|
80
|
+
private wakeBuffer;
|
|
81
|
+
private stats;
|
|
82
|
+
constructor(config?: Partial<WakeSleepConfig>);
|
|
83
|
+
/**
|
|
84
|
+
* Wake Phase: Observe new code and extract patterns
|
|
85
|
+
*/
|
|
86
|
+
wake(observation: WakeObservation): Pattern[];
|
|
87
|
+
/**
|
|
88
|
+
* Sleep Phase: Consolidate and optimize pattern library
|
|
89
|
+
*/
|
|
90
|
+
sleep(): SleepResult;
|
|
91
|
+
/**
|
|
92
|
+
* Extract patterns from AST
|
|
93
|
+
*/
|
|
94
|
+
private extractPatternsFromAST;
|
|
95
|
+
/**
|
|
96
|
+
* Add pattern to library (or update existing)
|
|
97
|
+
*/
|
|
98
|
+
private addToLibrary;
|
|
99
|
+
/**
|
|
100
|
+
* Find similar pattern in library
|
|
101
|
+
*/
|
|
102
|
+
private findSimilarPattern;
|
|
103
|
+
/**
|
|
104
|
+
* Generate key for pattern deduplication
|
|
105
|
+
*/
|
|
106
|
+
private getPatternKey;
|
|
107
|
+
/**
|
|
108
|
+
* Estimate MDL for library without data
|
|
109
|
+
*/
|
|
110
|
+
private estimateLibraryMDL;
|
|
111
|
+
/**
|
|
112
|
+
* Count nodes in AST
|
|
113
|
+
*/
|
|
114
|
+
private countNodes;
|
|
115
|
+
/**
|
|
116
|
+
* Update average quality statistic
|
|
117
|
+
*/
|
|
118
|
+
private updateAverageQuality;
|
|
119
|
+
/**
|
|
120
|
+
* Get current pattern library
|
|
121
|
+
*/
|
|
122
|
+
getLibrary(): Pattern[];
|
|
123
|
+
/**
|
|
124
|
+
* Get learning statistics
|
|
125
|
+
*/
|
|
126
|
+
getStats(): LearningStats;
|
|
127
|
+
/**
|
|
128
|
+
* Get pattern by ID
|
|
129
|
+
*/
|
|
130
|
+
getPattern(id: string): Pattern | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* Clear library and reset stats
|
|
133
|
+
*/
|
|
134
|
+
reset(): void;
|
|
135
|
+
/**
|
|
136
|
+
* Export library to JSON
|
|
137
|
+
*/
|
|
138
|
+
exportLibrary(): string;
|
|
139
|
+
/**
|
|
140
|
+
* Import library from JSON
|
|
141
|
+
*/
|
|
142
|
+
importLibrary(json: string): number;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=wake-sleep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-sleep.d.ts","sourceRoot":"","sources":["../../src/learning/wake-sleep.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIpD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAWD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,KAAK,CAAgB;gBAEjB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IA6B7C;;OAEG;IACH,IAAI,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,EAAE;IAoB7C;;OAEG;IACH,KAAK,IAAI,WAAW;IAuEpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,UAAU,IAAI,OAAO,EAAE;IAIvB;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,aAAa,IAAI,MAAM;IAQvB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAcpC"}
|