@nahisaho/yata-local 1.6.6
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/auto-updater.d.ts +101 -0
- package/dist/auto-updater.d.ts.map +1 -0
- package/dist/auto-updater.js +402 -0
- package/dist/auto-updater.js.map +1 -0
- package/dist/database.d.ts +229 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +959 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +298 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +436 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +77 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +403 -0
- package/dist/io.js.map +1 -0
- package/dist/kgpr/diff-engine.d.ts +110 -0
- package/dist/kgpr/diff-engine.d.ts.map +1 -0
- package/dist/kgpr/diff-engine.js +335 -0
- package/dist/kgpr/diff-engine.js.map +1 -0
- package/dist/kgpr/index.d.ts +16 -0
- package/dist/kgpr/index.d.ts.map +1 -0
- package/dist/kgpr/index.js +14 -0
- package/dist/kgpr/index.js.map +1 -0
- package/dist/kgpr/kgpr-manager.d.ts +122 -0
- package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
- package/dist/kgpr/kgpr-manager.js +344 -0
- package/dist/kgpr/kgpr-manager.js.map +1 -0
- package/dist/kgpr/privacy-filter.d.ts +109 -0
- package/dist/kgpr/privacy-filter.d.ts.map +1 -0
- package/dist/kgpr/privacy-filter.js +295 -0
- package/dist/kgpr/privacy-filter.js.map +1 -0
- package/dist/kgpr/types.d.ts +234 -0
- package/dist/kgpr/types.d.ts.map +1 -0
- package/dist/kgpr/types.js +54 -0
- package/dist/kgpr/types.js.map +1 -0
- package/dist/query-engine.d.ts +78 -0
- package/dist/query-engine.d.ts.map +1 -0
- package/dist/query-engine.js +368 -0
- package/dist/query-engine.js.map +1 -0
- package/dist/reasoning.d.ts +112 -0
- package/dist/reasoning.d.ts.map +1 -0
- package/dist/reasoning.js +455 -0
- package/dist/reasoning.js.map +1 -0
- package/dist/types.d.ts +580 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/wake-sleep/cycle-manager.d.ts +76 -0
- package/dist/wake-sleep/cycle-manager.d.ts.map +1 -0
- package/dist/wake-sleep/cycle-manager.js +291 -0
- package/dist/wake-sleep/cycle-manager.js.map +1 -0
- package/dist/wake-sleep/index.d.ts +15 -0
- package/dist/wake-sleep/index.d.ts.map +1 -0
- package/dist/wake-sleep/index.js +19 -0
- package/dist/wake-sleep/index.js.map +1 -0
- package/dist/wake-sleep/pattern-compressor.d.ts +86 -0
- package/dist/wake-sleep/pattern-compressor.d.ts.map +1 -0
- package/dist/wake-sleep/pattern-compressor.js +333 -0
- package/dist/wake-sleep/pattern-compressor.js.map +1 -0
- package/dist/wake-sleep/sleep-phase.d.ts +79 -0
- package/dist/wake-sleep/sleep-phase.d.ts.map +1 -0
- package/dist/wake-sleep/sleep-phase.js +329 -0
- package/dist/wake-sleep/sleep-phase.js.map +1 -0
- package/dist/wake-sleep/types.d.ts +244 -0
- package/dist/wake-sleep/types.d.ts.map +1 -0
- package/dist/wake-sleep/types.js +35 -0
- package/dist/wake-sleep/types.js.map +1 -0
- package/dist/wake-sleep/wake-phase.d.ts +83 -0
- package/dist/wake-sleep/wake-phase.d.ts.map +1 -0
- package/dist/wake-sleep/wake-phase.js +457 -0
- package/dist/wake-sleep/wake-phase.js.map +1 -0
- package/dist/yata-bridge.d.ts +78 -0
- package/dist/yata-bridge.d.ts.map +1 -0
- package/dist/yata-bridge.js +193 -0
- package/dist/yata-bridge.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Pattern Compressor Implementation for YATA Local
|
|
3
|
+
* @module @nahisaho/yata-local/wake-sleep
|
|
4
|
+
* @version 0.1.0
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Trace: REQ-WSL-003, TSK-WSL-003
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from 'crypto';
|
|
10
|
+
/**
|
|
11
|
+
* Pattern Compressor - Abstraction and Compression
|
|
12
|
+
*
|
|
13
|
+
* Responsible for:
|
|
14
|
+
* - Creating abstract templates from pattern clusters
|
|
15
|
+
* - Compressing patterns for efficient storage
|
|
16
|
+
* - Managing pattern metadata
|
|
17
|
+
*/
|
|
18
|
+
export class LocalPatternCompressor {
|
|
19
|
+
options;
|
|
20
|
+
constructor(options = {}) {
|
|
21
|
+
this.options = {
|
|
22
|
+
level: options.level ?? 5,
|
|
23
|
+
preserveNames: options.preserveNames ?? false,
|
|
24
|
+
includeTypes: options.includeTypes ?? true,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Compress a cluster into a consolidated pattern
|
|
29
|
+
*/
|
|
30
|
+
compress(cluster) {
|
|
31
|
+
const representative = cluster.representative;
|
|
32
|
+
const template = this.createTemplate(cluster);
|
|
33
|
+
const compressed = this.compressTemplate(template);
|
|
34
|
+
return {
|
|
35
|
+
id: this.generatePatternId(representative.type),
|
|
36
|
+
name: this.generatePatternName(cluster),
|
|
37
|
+
type: representative.type,
|
|
38
|
+
template,
|
|
39
|
+
compressed,
|
|
40
|
+
confidence: this.calculateAverageConfidence(cluster),
|
|
41
|
+
sourceCount: cluster.patterns.length,
|
|
42
|
+
usageCount: 0,
|
|
43
|
+
createdAt: new Date(),
|
|
44
|
+
lastUsedAt: null,
|
|
45
|
+
sources: [...new Set(cluster.patterns.map(p => p.sourcePath))],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Compress multiple clusters
|
|
50
|
+
*/
|
|
51
|
+
compressAll(clusters) {
|
|
52
|
+
return clusters.map(cluster => this.compress(cluster));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create an abstract template from a cluster
|
|
56
|
+
*/
|
|
57
|
+
createTemplate(cluster) {
|
|
58
|
+
const representative = cluster.representative;
|
|
59
|
+
let template = representative.content;
|
|
60
|
+
// Normalize whitespace
|
|
61
|
+
template = this.normalizeWhitespace(template);
|
|
62
|
+
// Replace specific identifiers with placeholders
|
|
63
|
+
if (!this.options.preserveNames) {
|
|
64
|
+
template = this.replaceIdentifiers(template, representative.type);
|
|
65
|
+
}
|
|
66
|
+
// Optionally remove type annotations
|
|
67
|
+
if (!this.options.includeTypes) {
|
|
68
|
+
template = this.removeTypeAnnotations(template);
|
|
69
|
+
}
|
|
70
|
+
// Remove implementation details based on compression level
|
|
71
|
+
template = this.simplifyImplementation(template, this.options.level);
|
|
72
|
+
return template;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Compress the template for storage
|
|
76
|
+
*/
|
|
77
|
+
compressTemplate(template) {
|
|
78
|
+
// For now, just minify
|
|
79
|
+
return template
|
|
80
|
+
.replace(/\/\*[\s\S]*?\*\//g, '') // Remove block comments
|
|
81
|
+
.replace(/\/\/.*$/gm, '') // Remove line comments
|
|
82
|
+
.replace(/\s+/g, ' ') // Collapse whitespace
|
|
83
|
+
.trim();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Normalize whitespace
|
|
87
|
+
*/
|
|
88
|
+
normalizeWhitespace(code) {
|
|
89
|
+
const lines = code.split('\n');
|
|
90
|
+
// Find minimum indentation
|
|
91
|
+
let minIndent = Infinity;
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
if (line.trim().length === 0)
|
|
94
|
+
continue;
|
|
95
|
+
const indent = line.match(/^(\s*)/)?.[1].length ?? 0;
|
|
96
|
+
minIndent = Math.min(minIndent, indent);
|
|
97
|
+
}
|
|
98
|
+
// Remove minimum indentation
|
|
99
|
+
if (minIndent > 0 && minIndent !== Infinity) {
|
|
100
|
+
return lines
|
|
101
|
+
.map(line => line.slice(minIndent))
|
|
102
|
+
.join('\n');
|
|
103
|
+
}
|
|
104
|
+
return code;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Replace specific identifiers with generic placeholders
|
|
108
|
+
*/
|
|
109
|
+
replaceIdentifiers(code, type) {
|
|
110
|
+
let result = code;
|
|
111
|
+
// Map of identifier patterns based on type
|
|
112
|
+
const replacements = [];
|
|
113
|
+
switch (type) {
|
|
114
|
+
case 'function_signature':
|
|
115
|
+
// Replace function names (but not keywords)
|
|
116
|
+
replacements.push({
|
|
117
|
+
pattern: /\bfunction\s+(\w+)/g,
|
|
118
|
+
replacement: 'function $FUNC_NAME',
|
|
119
|
+
});
|
|
120
|
+
replacements.push({
|
|
121
|
+
pattern: /\bconst\s+(\w+)\s*=/g,
|
|
122
|
+
replacement: 'const $FUNC_NAME =',
|
|
123
|
+
});
|
|
124
|
+
break;
|
|
125
|
+
case 'class_structure':
|
|
126
|
+
case 'repository_pattern':
|
|
127
|
+
case 'service_pattern':
|
|
128
|
+
case 'factory_pattern':
|
|
129
|
+
// Replace class names
|
|
130
|
+
replacements.push({
|
|
131
|
+
pattern: /\bclass\s+(\w+)/g,
|
|
132
|
+
replacement: 'class $CLASS_NAME',
|
|
133
|
+
});
|
|
134
|
+
break;
|
|
135
|
+
case 'interface_definition':
|
|
136
|
+
// Replace interface names
|
|
137
|
+
replacements.push({
|
|
138
|
+
pattern: /\binterface\s+(\w+)/g,
|
|
139
|
+
replacement: 'interface $INTERFACE_NAME',
|
|
140
|
+
});
|
|
141
|
+
break;
|
|
142
|
+
case 'type_definition':
|
|
143
|
+
// Replace type names
|
|
144
|
+
replacements.push({
|
|
145
|
+
pattern: /\btype\s+(\w+)/g,
|
|
146
|
+
replacement: 'type $TYPE_NAME',
|
|
147
|
+
});
|
|
148
|
+
break;
|
|
149
|
+
case 'value_object':
|
|
150
|
+
case 'entity':
|
|
151
|
+
// Replace both class and interface names
|
|
152
|
+
replacements.push({
|
|
153
|
+
pattern: /\bclass\s+(\w+)/g,
|
|
154
|
+
replacement: 'class $ENTITY_NAME',
|
|
155
|
+
});
|
|
156
|
+
replacements.push({
|
|
157
|
+
pattern: /\binterface\s+(\w+)/g,
|
|
158
|
+
replacement: 'interface $ENTITY_NAME',
|
|
159
|
+
});
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
// Apply replacements
|
|
163
|
+
for (const { pattern, replacement } of replacements) {
|
|
164
|
+
result = result.replace(pattern, replacement);
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Remove type annotations
|
|
170
|
+
*/
|
|
171
|
+
removeTypeAnnotations(code) {
|
|
172
|
+
return code
|
|
173
|
+
// Remove return type annotations
|
|
174
|
+
.replace(/\):\s*[A-Za-z<>\[\]\|&,\s]+\s*{/g, ') {')
|
|
175
|
+
// Remove parameter type annotations (simplified)
|
|
176
|
+
.replace(/(\w+):\s*[A-Za-z<>\[\]\|&]+/g, '$1');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Simplify implementation based on compression level
|
|
180
|
+
*/
|
|
181
|
+
simplifyImplementation(code, level) {
|
|
182
|
+
if (level <= 3) {
|
|
183
|
+
// Keep full implementation
|
|
184
|
+
return code;
|
|
185
|
+
}
|
|
186
|
+
if (level <= 6) {
|
|
187
|
+
// Replace implementation bodies with placeholders
|
|
188
|
+
return this.replaceMethodBodies(code);
|
|
189
|
+
}
|
|
190
|
+
// High compression: keep only signature
|
|
191
|
+
return this.extractSignatureOnly(code);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Replace method bodies with placeholders
|
|
195
|
+
*/
|
|
196
|
+
replaceMethodBodies(code) {
|
|
197
|
+
const lines = code.split('\n');
|
|
198
|
+
const result = [];
|
|
199
|
+
let braceDepth = 0;
|
|
200
|
+
let inBody = false;
|
|
201
|
+
let bodyStartDepth = 0;
|
|
202
|
+
for (const line of lines) {
|
|
203
|
+
// Count braces
|
|
204
|
+
for (const char of line) {
|
|
205
|
+
if (char === '{') {
|
|
206
|
+
if (!inBody && braceDepth > 0) {
|
|
207
|
+
inBody = true;
|
|
208
|
+
bodyStartDepth = braceDepth;
|
|
209
|
+
}
|
|
210
|
+
braceDepth++;
|
|
211
|
+
}
|
|
212
|
+
else if (char === '}') {
|
|
213
|
+
braceDepth--;
|
|
214
|
+
if (inBody && braceDepth <= bodyStartDepth) {
|
|
215
|
+
inBody = false;
|
|
216
|
+
result.push(' // ... implementation');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (!inBody || braceDepth === bodyStartDepth + 1) {
|
|
221
|
+
result.push(line);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return result.join('\n');
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Extract only the signature
|
|
228
|
+
*/
|
|
229
|
+
extractSignatureOnly(code) {
|
|
230
|
+
const lines = code.split('\n');
|
|
231
|
+
const result = [];
|
|
232
|
+
let braceDepth = 0;
|
|
233
|
+
let foundFirstBrace = false;
|
|
234
|
+
for (const line of lines) {
|
|
235
|
+
for (const char of line) {
|
|
236
|
+
if (char === '{') {
|
|
237
|
+
braceDepth++;
|
|
238
|
+
foundFirstBrace = true;
|
|
239
|
+
}
|
|
240
|
+
else if (char === '}') {
|
|
241
|
+
braceDepth--;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Keep lines until first opening brace
|
|
245
|
+
if (!foundFirstBrace) {
|
|
246
|
+
result.push(line);
|
|
247
|
+
}
|
|
248
|
+
else if (braceDepth === 0) {
|
|
249
|
+
// Add closing brace
|
|
250
|
+
result.push('}');
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
else if (braceDepth === 1 && line.includes('{')) {
|
|
254
|
+
// First line with opening brace
|
|
255
|
+
result.push(line.substring(0, line.indexOf('{') + 1));
|
|
256
|
+
result.push(' // ... implementation');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return result.join('\n');
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Generate a pattern ID
|
|
263
|
+
*/
|
|
264
|
+
generatePatternId(type) {
|
|
265
|
+
const prefix = this.getTypePrefix(type);
|
|
266
|
+
const timestamp = new Date().toISOString().slice(0, 10).replace(/-/g, '');
|
|
267
|
+
const suffix = randomUUID().substring(0, 4).toUpperCase();
|
|
268
|
+
return `PAT-${prefix}-${timestamp}-${suffix}`;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Get type prefix for ID generation
|
|
272
|
+
*/
|
|
273
|
+
getTypePrefix(type) {
|
|
274
|
+
const prefixMap = {
|
|
275
|
+
function_signature: 'FN',
|
|
276
|
+
class_structure: 'CLS',
|
|
277
|
+
interface_definition: 'ITF',
|
|
278
|
+
type_definition: 'TYP',
|
|
279
|
+
import_pattern: 'IMP',
|
|
280
|
+
export_pattern: 'EXP',
|
|
281
|
+
error_handling: 'ERR',
|
|
282
|
+
async_pattern: 'ASY',
|
|
283
|
+
factory_pattern: 'FAC',
|
|
284
|
+
repository_pattern: 'REP',
|
|
285
|
+
service_pattern: 'SVC',
|
|
286
|
+
value_object: 'VO',
|
|
287
|
+
entity: 'ENT',
|
|
288
|
+
aggregate: 'AGG',
|
|
289
|
+
event_handler: 'EVT',
|
|
290
|
+
middleware: 'MID',
|
|
291
|
+
decorator: 'DEC',
|
|
292
|
+
hook: 'HK',
|
|
293
|
+
test_pattern: 'TST',
|
|
294
|
+
other: 'OTH',
|
|
295
|
+
};
|
|
296
|
+
return prefixMap[type] ?? 'OTH';
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Generate a pattern name from cluster
|
|
300
|
+
*/
|
|
301
|
+
generatePatternName(cluster) {
|
|
302
|
+
const rep = cluster.representative;
|
|
303
|
+
// Extract the name from the content if possible
|
|
304
|
+
const nameMatch = rep.content.match(/(?:function|class|interface|type|const)\s+(\w+)/);
|
|
305
|
+
if (nameMatch) {
|
|
306
|
+
return `${this.formatTypeName(rep.type)}: ${nameMatch[1]}`;
|
|
307
|
+
}
|
|
308
|
+
return `${this.formatTypeName(rep.type)}: ${rep.name}`;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Format type name for display
|
|
312
|
+
*/
|
|
313
|
+
formatTypeName(type) {
|
|
314
|
+
return type
|
|
315
|
+
.split('_')
|
|
316
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
317
|
+
.join(' ');
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Calculate average confidence from cluster
|
|
321
|
+
*/
|
|
322
|
+
calculateAverageConfidence(cluster) {
|
|
323
|
+
const sum = cluster.patterns.reduce((acc, p) => acc + p.confidence, 0);
|
|
324
|
+
return sum / cluster.patterns.length;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Factory function to create a LocalPatternCompressor instance
|
|
329
|
+
*/
|
|
330
|
+
export function createLocalPatternCompressor(options) {
|
|
331
|
+
return new LocalPatternCompressor(options);
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=pattern-compressor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-compressor.js","sourceRoot":"","sources":["../../src/wake-sleep/pattern-compressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Sleep Phase Implementation for YATA Local
|
|
3
|
+
* @module @nahisaho/yata-local/wake-sleep
|
|
4
|
+
* @version 0.1.0
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Trace: REQ-WSL-002, TSK-WSL-002
|
|
8
|
+
*/
|
|
9
|
+
import type { LocalPatternCandidate, LocalPatternCluster, LocalConsolidatedPattern, SleepClusterOptions, SleepClusterResult, SimilarityMethod } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Sleep Phase - Pattern Clustering and Consolidation
|
|
12
|
+
*
|
|
13
|
+
* Responsible for:
|
|
14
|
+
* - Clustering similar patterns
|
|
15
|
+
* - Selecting representative patterns
|
|
16
|
+
* - Confidence management (update/decay)
|
|
17
|
+
*/
|
|
18
|
+
export declare class LocalSleepPhase {
|
|
19
|
+
private readonly options;
|
|
20
|
+
private readonly similarityMethod;
|
|
21
|
+
constructor(options?: Partial<SleepClusterOptions>, similarityMethod?: SimilarityMethod);
|
|
22
|
+
/**
|
|
23
|
+
* Cluster similar pattern candidates
|
|
24
|
+
*/
|
|
25
|
+
cluster(candidates: LocalPatternCandidate[]): Promise<SleepClusterResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Select the representative pattern from a cluster
|
|
28
|
+
*/
|
|
29
|
+
selectRepresentative(cluster: LocalPatternCluster): LocalPatternCandidate;
|
|
30
|
+
/**
|
|
31
|
+
* Update confidence for a pattern based on usage
|
|
32
|
+
*/
|
|
33
|
+
updateConfidence(pattern: LocalConsolidatedPattern, used: boolean): LocalConsolidatedPattern;
|
|
34
|
+
/**
|
|
35
|
+
* Decay confidence for unused patterns
|
|
36
|
+
*/
|
|
37
|
+
decay(pattern: LocalConsolidatedPattern, decayRate?: number): LocalConsolidatedPattern;
|
|
38
|
+
/**
|
|
39
|
+
* Calculate similarity between two signatures
|
|
40
|
+
*/
|
|
41
|
+
calculateSimilarity(sig1: string, sig2: string): number;
|
|
42
|
+
/**
|
|
43
|
+
* Jaccard similarity coefficient
|
|
44
|
+
*/
|
|
45
|
+
private jaccardSimilarity;
|
|
46
|
+
/**
|
|
47
|
+
* Cosine similarity (token-based)
|
|
48
|
+
*/
|
|
49
|
+
private cosineSimilarity;
|
|
50
|
+
/**
|
|
51
|
+
* Levenshtein-based similarity
|
|
52
|
+
*/
|
|
53
|
+
private levenshteinSimilarity;
|
|
54
|
+
/**
|
|
55
|
+
* Levenshtein edit distance
|
|
56
|
+
*/
|
|
57
|
+
private levenshteinDistance;
|
|
58
|
+
/**
|
|
59
|
+
* AST-based similarity (simplified)
|
|
60
|
+
*/
|
|
61
|
+
private astSimilarity;
|
|
62
|
+
/**
|
|
63
|
+
* Score a pattern for representative selection
|
|
64
|
+
*/
|
|
65
|
+
private scorePattern;
|
|
66
|
+
/**
|
|
67
|
+
* Compute cluster centroid
|
|
68
|
+
*/
|
|
69
|
+
private computeCentroid;
|
|
70
|
+
/**
|
|
71
|
+
* Recalculate average similarity within a cluster
|
|
72
|
+
*/
|
|
73
|
+
private recalculateAvgSimilarity;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Factory function to create a LocalSleepPhase instance
|
|
77
|
+
*/
|
|
78
|
+
export declare function createLocalSleepPhase(options?: Partial<SleepClusterOptions>, similarityMethod?: SimilarityMethod): LocalSleepPhase;
|
|
79
|
+
//# sourceMappingURL=sleep-phase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep-phase.d.ts","sourceRoot":"","sources":["../../src/wake-sleep/sleep-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAGlD,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM,EAC1C,gBAAgB,GAAE,gBAA4B;IAUhD;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmF/E;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,qBAAqB;IAazE;;OAEG;IACH,gBAAgB,CACd,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,OAAO,GACZ,wBAAwB;IAgB3B;;OAEG;IACH,KAAK,CACH,OAAO,EAAE,wBAAwB,EACjC,SAAS,GAAE,MAAa,GACvB,wBAAwB;IAiB3B;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAevD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAkBjC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,EACtC,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,eAAe,CAEjB"}
|