@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,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Wake 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-001, TSK-WSL-001
|
|
8
|
+
*/
|
|
9
|
+
import type { LocalPatternCandidate, WakeObserveOptions, WakeObserveResult } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Wake Phase - Pattern Observation and Extraction
|
|
12
|
+
*
|
|
13
|
+
* Responsible for:
|
|
14
|
+
* - Scanning source files
|
|
15
|
+
* - Extracting pattern candidates
|
|
16
|
+
* - Computing initial confidence scores
|
|
17
|
+
*/
|
|
18
|
+
export declare class LocalWakePhase {
|
|
19
|
+
private readonly options;
|
|
20
|
+
constructor(options?: Partial<WakeObserveOptions>);
|
|
21
|
+
/**
|
|
22
|
+
* Observe a single file and extract pattern candidates
|
|
23
|
+
*/
|
|
24
|
+
observe(filePath: string): Promise<LocalPatternCandidate[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Observe a directory recursively
|
|
27
|
+
*/
|
|
28
|
+
observeDirectory(dirPath: string): Promise<WakeObserveResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Detect language from file extension
|
|
31
|
+
*/
|
|
32
|
+
private detectLanguage;
|
|
33
|
+
/**
|
|
34
|
+
* Extract patterns from source content
|
|
35
|
+
* Uses simple regex-based parsing for lightweight extraction
|
|
36
|
+
*/
|
|
37
|
+
private extractPatterns;
|
|
38
|
+
/**
|
|
39
|
+
* Extract function patterns
|
|
40
|
+
*/
|
|
41
|
+
private extractFunctions;
|
|
42
|
+
/**
|
|
43
|
+
* Extract class patterns
|
|
44
|
+
*/
|
|
45
|
+
private extractClasses;
|
|
46
|
+
/**
|
|
47
|
+
* Extract interface patterns (TypeScript)
|
|
48
|
+
*/
|
|
49
|
+
private extractInterfaces;
|
|
50
|
+
/**
|
|
51
|
+
* Extract type patterns (TypeScript)
|
|
52
|
+
*/
|
|
53
|
+
private extractTypes;
|
|
54
|
+
/**
|
|
55
|
+
* Extract import patterns
|
|
56
|
+
*/
|
|
57
|
+
private extractImports;
|
|
58
|
+
/**
|
|
59
|
+
* Extract export patterns
|
|
60
|
+
*/
|
|
61
|
+
private extractExports;
|
|
62
|
+
/**
|
|
63
|
+
* Extract a code block (braces-delimited)
|
|
64
|
+
*/
|
|
65
|
+
private extractBlock;
|
|
66
|
+
/**
|
|
67
|
+
* Calculate confidence score for a pattern
|
|
68
|
+
*/
|
|
69
|
+
private calculateConfidence;
|
|
70
|
+
/**
|
|
71
|
+
* Create a pattern candidate with computed signature
|
|
72
|
+
*/
|
|
73
|
+
private createCandidate;
|
|
74
|
+
/**
|
|
75
|
+
* Compute a signature for similarity matching
|
|
76
|
+
*/
|
|
77
|
+
private computeSignature;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Factory function to create a LocalWakePhase instance
|
|
81
|
+
*/
|
|
82
|
+
export declare function createLocalWakePhase(options?: Partial<WakeObserveOptions>): LocalWakePhase;
|
|
83
|
+
//# sourceMappingURL=wake-phase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-phase.d.ts","sourceRoot":"","sources":["../../src/wake-sleep/wake-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,qBAAqB,EAErB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,OAAO,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAUrD;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAoBjE;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+DnE;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2CxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwCpB;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6CpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAyBzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAE1F"}
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Wake 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-001, TSK-WSL-001
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from 'crypto';
|
|
10
|
+
import * as fs from 'fs/promises';
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
/**
|
|
13
|
+
* Wake Phase - Pattern Observation and Extraction
|
|
14
|
+
*
|
|
15
|
+
* Responsible for:
|
|
16
|
+
* - Scanning source files
|
|
17
|
+
* - Extracting pattern candidates
|
|
18
|
+
* - Computing initial confidence scores
|
|
19
|
+
*/
|
|
20
|
+
export class LocalWakePhase {
|
|
21
|
+
options;
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
this.options = {
|
|
24
|
+
extensions: options.extensions ?? ['.ts', '.tsx', '.js', '.jsx'],
|
|
25
|
+
excludeDirs: options.excludeDirs ?? ['node_modules', 'dist', 'build', '.git'],
|
|
26
|
+
minConfidence: options.minConfidence ?? 0.3,
|
|
27
|
+
maxCandidates: options.maxCandidates ?? 1000,
|
|
28
|
+
includePrivate: options.includePrivate ?? false,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Observe a single file and extract pattern candidates
|
|
33
|
+
*/
|
|
34
|
+
async observe(filePath) {
|
|
35
|
+
const candidates = [];
|
|
36
|
+
try {
|
|
37
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
38
|
+
const language = this.detectLanguage(filePath);
|
|
39
|
+
const extracted = this.extractPatterns(content, filePath, language);
|
|
40
|
+
for (const pattern of extracted) {
|
|
41
|
+
if (pattern.confidence >= this.options.minConfidence) {
|
|
42
|
+
candidates.push(pattern);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (_error) {
|
|
47
|
+
// File read error - skip silently
|
|
48
|
+
}
|
|
49
|
+
return candidates.slice(0, this.options.maxCandidates);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Observe a directory recursively
|
|
53
|
+
*/
|
|
54
|
+
async observeDirectory(dirPath) {
|
|
55
|
+
const startTime = Date.now();
|
|
56
|
+
const candidates = [];
|
|
57
|
+
const errors = [];
|
|
58
|
+
let filesScanned = 0;
|
|
59
|
+
let skippedFiles = 0;
|
|
60
|
+
const processDir = async (currentPath) => {
|
|
61
|
+
try {
|
|
62
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
63
|
+
for (const entry of entries) {
|
|
64
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
65
|
+
if (entry.isDirectory()) {
|
|
66
|
+
if (!this.options.excludeDirs.includes(entry.name)) {
|
|
67
|
+
await processDir(fullPath);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
skippedFiles++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (entry.isFile()) {
|
|
74
|
+
const ext = path.extname(entry.name);
|
|
75
|
+
if (this.options.extensions.includes(ext)) {
|
|
76
|
+
try {
|
|
77
|
+
const filePatterns = await this.observe(fullPath);
|
|
78
|
+
candidates.push(...filePatterns);
|
|
79
|
+
filesScanned++;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
errors.push({
|
|
83
|
+
file: fullPath,
|
|
84
|
+
error: error instanceof Error ? error.message : String(error),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
skippedFiles++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
errors.push({
|
|
96
|
+
file: currentPath,
|
|
97
|
+
error: error instanceof Error ? error.message : String(error),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
await processDir(dirPath);
|
|
102
|
+
// Limit total candidates
|
|
103
|
+
const limitedCandidates = candidates.slice(0, this.options.maxCandidates);
|
|
104
|
+
return {
|
|
105
|
+
candidates: limitedCandidates,
|
|
106
|
+
stats: {
|
|
107
|
+
filesScanned,
|
|
108
|
+
candidatesFound: limitedCandidates.length,
|
|
109
|
+
skippedFiles,
|
|
110
|
+
processingTimeMs: Date.now() - startTime,
|
|
111
|
+
},
|
|
112
|
+
errors,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Detect language from file extension
|
|
117
|
+
*/
|
|
118
|
+
detectLanguage(filePath) {
|
|
119
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
120
|
+
switch (ext) {
|
|
121
|
+
case '.ts':
|
|
122
|
+
case '.tsx':
|
|
123
|
+
return 'typescript';
|
|
124
|
+
case '.js':
|
|
125
|
+
case '.jsx':
|
|
126
|
+
return 'javascript';
|
|
127
|
+
case '.py':
|
|
128
|
+
return 'python';
|
|
129
|
+
default:
|
|
130
|
+
return 'other';
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Extract patterns from source content
|
|
135
|
+
* Uses simple regex-based parsing for lightweight extraction
|
|
136
|
+
*/
|
|
137
|
+
extractPatterns(content, filePath, language) {
|
|
138
|
+
const patterns = [];
|
|
139
|
+
const lines = content.split('\n');
|
|
140
|
+
// Extract functions/methods
|
|
141
|
+
patterns.push(...this.extractFunctions(lines, filePath, language));
|
|
142
|
+
// Extract classes
|
|
143
|
+
patterns.push(...this.extractClasses(lines, filePath, language));
|
|
144
|
+
// Extract interfaces (TypeScript)
|
|
145
|
+
if (language === 'typescript') {
|
|
146
|
+
patterns.push(...this.extractInterfaces(lines, filePath, language));
|
|
147
|
+
patterns.push(...this.extractTypes(lines, filePath, language));
|
|
148
|
+
}
|
|
149
|
+
// Extract imports
|
|
150
|
+
patterns.push(...this.extractImports(lines, filePath, language));
|
|
151
|
+
// Extract exports
|
|
152
|
+
patterns.push(...this.extractExports(lines, filePath, language));
|
|
153
|
+
return patterns;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Extract function patterns
|
|
157
|
+
*/
|
|
158
|
+
extractFunctions(lines, filePath, language) {
|
|
159
|
+
const patterns = [];
|
|
160
|
+
// Match: function name(), async function name(), const name = () =>, etc.
|
|
161
|
+
const functionPatterns = [
|
|
162
|
+
/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/,
|
|
163
|
+
/^(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s+)?(?:\([^)]*\)|[a-zA-Z_]\w*)\s*=>/,
|
|
164
|
+
/^(?:export\s+)?(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\S+)?\s*\{/,
|
|
165
|
+
];
|
|
166
|
+
for (let i = 0; i < lines.length; i++) {
|
|
167
|
+
const line = lines[i].trim();
|
|
168
|
+
for (const pattern of functionPatterns) {
|
|
169
|
+
const match = line.match(pattern);
|
|
170
|
+
if (match) {
|
|
171
|
+
const name = match[1];
|
|
172
|
+
if (!this.options.includePrivate && name.startsWith('_'))
|
|
173
|
+
continue;
|
|
174
|
+
// Find function end (simple brace counting)
|
|
175
|
+
const { endLine, content } = this.extractBlock(lines, i);
|
|
176
|
+
patterns.push(this.createCandidate({
|
|
177
|
+
type: 'function_signature',
|
|
178
|
+
name,
|
|
179
|
+
content,
|
|
180
|
+
sourcePath: filePath,
|
|
181
|
+
lineRange: { start: i + 1, end: endLine + 1 },
|
|
182
|
+
language,
|
|
183
|
+
confidence: this.calculateConfidence('function_signature', content),
|
|
184
|
+
}));
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return patterns;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Extract class patterns
|
|
193
|
+
*/
|
|
194
|
+
extractClasses(lines, filePath, language) {
|
|
195
|
+
const patterns = [];
|
|
196
|
+
const classPattern = /^(?:export\s+)?(?:abstract\s+)?class\s+(\w+)/;
|
|
197
|
+
for (let i = 0; i < lines.length; i++) {
|
|
198
|
+
const line = lines[i].trim();
|
|
199
|
+
const match = line.match(classPattern);
|
|
200
|
+
if (match) {
|
|
201
|
+
const name = match[1];
|
|
202
|
+
const { endLine, content } = this.extractBlock(lines, i);
|
|
203
|
+
// Determine class type
|
|
204
|
+
let type = 'class_structure';
|
|
205
|
+
if (name.endsWith('Repository'))
|
|
206
|
+
type = 'repository_pattern';
|
|
207
|
+
else if (name.endsWith('Service'))
|
|
208
|
+
type = 'service_pattern';
|
|
209
|
+
else if (name.endsWith('Factory'))
|
|
210
|
+
type = 'factory_pattern';
|
|
211
|
+
else if (name.endsWith('Entity'))
|
|
212
|
+
type = 'entity';
|
|
213
|
+
else if (name.endsWith('ValueObject') || content.includes('readonly'))
|
|
214
|
+
type = 'value_object';
|
|
215
|
+
patterns.push(this.createCandidate({
|
|
216
|
+
type,
|
|
217
|
+
name,
|
|
218
|
+
content,
|
|
219
|
+
sourcePath: filePath,
|
|
220
|
+
lineRange: { start: i + 1, end: endLine + 1 },
|
|
221
|
+
language,
|
|
222
|
+
confidence: this.calculateConfidence(type, content),
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return patterns;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Extract interface patterns (TypeScript)
|
|
230
|
+
*/
|
|
231
|
+
extractInterfaces(lines, filePath, language) {
|
|
232
|
+
const patterns = [];
|
|
233
|
+
const interfacePattern = /^(?:export\s+)?interface\s+(\w+)/;
|
|
234
|
+
for (let i = 0; i < lines.length; i++) {
|
|
235
|
+
const line = lines[i].trim();
|
|
236
|
+
const match = line.match(interfacePattern);
|
|
237
|
+
if (match) {
|
|
238
|
+
const name = match[1];
|
|
239
|
+
const { endLine, content } = this.extractBlock(lines, i);
|
|
240
|
+
patterns.push(this.createCandidate({
|
|
241
|
+
type: 'interface_definition',
|
|
242
|
+
name,
|
|
243
|
+
content,
|
|
244
|
+
sourcePath: filePath,
|
|
245
|
+
lineRange: { start: i + 1, end: endLine + 1 },
|
|
246
|
+
language,
|
|
247
|
+
confidence: this.calculateConfidence('interface_definition', content),
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return patterns;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Extract type patterns (TypeScript)
|
|
255
|
+
*/
|
|
256
|
+
extractTypes(lines, filePath, language) {
|
|
257
|
+
const patterns = [];
|
|
258
|
+
const typePattern = /^(?:export\s+)?type\s+(\w+)\s*=/;
|
|
259
|
+
for (let i = 0; i < lines.length; i++) {
|
|
260
|
+
const line = lines[i].trim();
|
|
261
|
+
const match = line.match(typePattern);
|
|
262
|
+
if (match) {
|
|
263
|
+
const name = match[1];
|
|
264
|
+
// Types can be single line or multiline
|
|
265
|
+
let endLine = i;
|
|
266
|
+
let content = line;
|
|
267
|
+
// Check if multiline (ends with = but no semicolon)
|
|
268
|
+
if (!line.endsWith(';')) {
|
|
269
|
+
const result = this.extractBlock(lines, i, true);
|
|
270
|
+
endLine = result.endLine;
|
|
271
|
+
content = result.content;
|
|
272
|
+
}
|
|
273
|
+
patterns.push(this.createCandidate({
|
|
274
|
+
type: 'type_definition',
|
|
275
|
+
name,
|
|
276
|
+
content,
|
|
277
|
+
sourcePath: filePath,
|
|
278
|
+
lineRange: { start: i + 1, end: endLine + 1 },
|
|
279
|
+
language,
|
|
280
|
+
confidence: this.calculateConfidence('type_definition', content),
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return patterns;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Extract import patterns
|
|
288
|
+
*/
|
|
289
|
+
extractImports(lines, filePath, language) {
|
|
290
|
+
const patterns = [];
|
|
291
|
+
const importPattern = /^import\s+(?:{[^}]+}|\*\s+as\s+\w+|\w+)\s+from\s+['"]([^'"]+)['"]/;
|
|
292
|
+
for (let i = 0; i < lines.length; i++) {
|
|
293
|
+
const line = lines[i].trim();
|
|
294
|
+
const match = line.match(importPattern);
|
|
295
|
+
if (match) {
|
|
296
|
+
patterns.push(this.createCandidate({
|
|
297
|
+
type: 'import_pattern',
|
|
298
|
+
name: `import:${match[1]}`,
|
|
299
|
+
content: line,
|
|
300
|
+
sourcePath: filePath,
|
|
301
|
+
lineRange: { start: i + 1, end: i + 1 },
|
|
302
|
+
language,
|
|
303
|
+
confidence: 0.5, // Lower confidence for imports
|
|
304
|
+
}));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return patterns;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Extract export patterns
|
|
311
|
+
*/
|
|
312
|
+
extractExports(lines, filePath, language) {
|
|
313
|
+
const patterns = [];
|
|
314
|
+
const exportPattern = /^export\s+(?:default\s+)?(?:{[^}]+}|(?:const|let|var|function|class|interface|type)\s+(\w+))/;
|
|
315
|
+
for (let i = 0; i < lines.length; i++) {
|
|
316
|
+
const line = lines[i].trim();
|
|
317
|
+
const match = line.match(exportPattern);
|
|
318
|
+
if (match && match[1]) {
|
|
319
|
+
patterns.push(this.createCandidate({
|
|
320
|
+
type: 'export_pattern',
|
|
321
|
+
name: `export:${match[1]}`,
|
|
322
|
+
content: line,
|
|
323
|
+
sourcePath: filePath,
|
|
324
|
+
lineRange: { start: i + 1, end: i + 1 },
|
|
325
|
+
language,
|
|
326
|
+
confidence: 0.5, // Lower confidence for exports
|
|
327
|
+
}));
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return patterns;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Extract a code block (braces-delimited)
|
|
334
|
+
*/
|
|
335
|
+
extractBlock(lines, startLine, isType = false) {
|
|
336
|
+
let braceCount = 0;
|
|
337
|
+
let parenCount = 0;
|
|
338
|
+
let endLine = startLine;
|
|
339
|
+
const contentLines = [];
|
|
340
|
+
for (let i = startLine; i < lines.length; i++) {
|
|
341
|
+
const line = lines[i];
|
|
342
|
+
contentLines.push(line);
|
|
343
|
+
for (const char of line) {
|
|
344
|
+
if (char === '{')
|
|
345
|
+
braceCount++;
|
|
346
|
+
else if (char === '}')
|
|
347
|
+
braceCount--;
|
|
348
|
+
else if (char === '(')
|
|
349
|
+
parenCount++;
|
|
350
|
+
else if (char === ')')
|
|
351
|
+
parenCount--;
|
|
352
|
+
}
|
|
353
|
+
endLine = i;
|
|
354
|
+
// For types, also check for semicolon
|
|
355
|
+
if (isType && line.trim().endsWith(';')) {
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
// End when braces are balanced and we've seen at least one open brace
|
|
359
|
+
if (braceCount === 0 && contentLines.length > 1) {
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
// Safety limit
|
|
363
|
+
if (contentLines.length > 500) {
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return {
|
|
368
|
+
endLine,
|
|
369
|
+
content: contentLines.join('\n'),
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Calculate confidence score for a pattern
|
|
374
|
+
*/
|
|
375
|
+
calculateConfidence(type, content) {
|
|
376
|
+
let confidence = 0.5; // Base confidence
|
|
377
|
+
// Boost for well-documented code
|
|
378
|
+
if (content.includes('/**') || content.includes('* @')) {
|
|
379
|
+
confidence += 0.1;
|
|
380
|
+
}
|
|
381
|
+
// Boost for type annotations
|
|
382
|
+
if (content.includes(': ') || content.includes('<') || content.includes('>')) {
|
|
383
|
+
confidence += 0.1;
|
|
384
|
+
}
|
|
385
|
+
// Boost for error handling
|
|
386
|
+
if (content.includes('try') || content.includes('catch') || content.includes('Result<')) {
|
|
387
|
+
confidence += 0.1;
|
|
388
|
+
}
|
|
389
|
+
// Boost for tests
|
|
390
|
+
if (content.includes('describe') || content.includes('it(') || content.includes('expect(')) {
|
|
391
|
+
confidence += 0.1;
|
|
392
|
+
}
|
|
393
|
+
// Type-specific adjustments
|
|
394
|
+
switch (type) {
|
|
395
|
+
case 'repository_pattern':
|
|
396
|
+
case 'service_pattern':
|
|
397
|
+
case 'factory_pattern':
|
|
398
|
+
confidence += 0.15; // Design patterns are valuable
|
|
399
|
+
break;
|
|
400
|
+
case 'value_object':
|
|
401
|
+
case 'entity':
|
|
402
|
+
confidence += 0.1; // DDD patterns
|
|
403
|
+
break;
|
|
404
|
+
case 'test_pattern':
|
|
405
|
+
confidence += 0.05;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
// Content length bonus (but not too long)
|
|
409
|
+
const lineCount = content.split('\n').length;
|
|
410
|
+
if (lineCount >= 5 && lineCount <= 50) {
|
|
411
|
+
confidence += 0.05;
|
|
412
|
+
}
|
|
413
|
+
return Math.min(1.0, Math.max(0.0, confidence));
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Create a pattern candidate with computed signature
|
|
417
|
+
*/
|
|
418
|
+
createCandidate(params) {
|
|
419
|
+
return {
|
|
420
|
+
...params,
|
|
421
|
+
tempId: `TEMP-${Date.now()}-${randomUUID().substring(0, 8)}`,
|
|
422
|
+
signature: this.computeSignature(params.content, params.type),
|
|
423
|
+
extractedAt: new Date(),
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Compute a signature for similarity matching
|
|
428
|
+
*/
|
|
429
|
+
computeSignature(content, type) {
|
|
430
|
+
// Remove comments and whitespace for normalization
|
|
431
|
+
const normalized = content
|
|
432
|
+
.replace(/\/\*[\s\S]*?\*\//g, '') // Block comments
|
|
433
|
+
.replace(/\/\/.*$/gm, '') // Line comments
|
|
434
|
+
.replace(/\s+/g, ' ') // Normalize whitespace
|
|
435
|
+
.trim();
|
|
436
|
+
// Extract structural elements
|
|
437
|
+
const tokens = [];
|
|
438
|
+
// Extract keywords
|
|
439
|
+
const keywords = normalized.match(/\b(function|class|interface|type|const|let|var|async|await|export|import|extends|implements|return|if|else|for|while|try|catch|throw)\b/g);
|
|
440
|
+
if (keywords) {
|
|
441
|
+
tokens.push(...keywords);
|
|
442
|
+
}
|
|
443
|
+
// Extract type annotations (simplified)
|
|
444
|
+
const types = normalized.match(/:\s*(\w+(?:<[^>]+>)?)/g);
|
|
445
|
+
if (types) {
|
|
446
|
+
tokens.push(...types.map(t => t.replace(/:\s*/, 'T:')));
|
|
447
|
+
}
|
|
448
|
+
return `${type}:${tokens.join('|')}`;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Factory function to create a LocalWakePhase instance
|
|
453
|
+
*/
|
|
454
|
+
export function createLocalWakePhase(options) {
|
|
455
|
+
return new LocalWakePhase(options);
|
|
456
|
+
}
|
|
457
|
+
//# sourceMappingURL=wake-phase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-phase.js","sourceRoot":"","sources":["../../src/wake-sleep/wake-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local - YATA Bridge for MCP Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides integration between YATA Local and MCP Server
|
|
5
|
+
* for automatic knowledge graph updates.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @module @nahisaho/yata-local
|
|
9
|
+
* @see REQ-YATA-AUTO-002
|
|
10
|
+
*/
|
|
11
|
+
import type { YataLocal } from './index.js';
|
|
12
|
+
import type { Entity } from './types.js';
|
|
13
|
+
import { type CodeAnalysisResult, type UpdateResult } from './auto-updater.js';
|
|
14
|
+
/**
|
|
15
|
+
* Bridge configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface YataBridgeConfig {
|
|
18
|
+
/** Auto-infer after updates */
|
|
19
|
+
autoInfer?: boolean;
|
|
20
|
+
/** Auto-validate after updates */
|
|
21
|
+
autoValidate?: boolean;
|
|
22
|
+
/** Batch size for bulk updates */
|
|
23
|
+
batchSize?: number;
|
|
24
|
+
/** Delete old entities before update */
|
|
25
|
+
cleanBeforeUpdate?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* YATA Bridge for MCP Integration
|
|
29
|
+
*
|
|
30
|
+
* Connects code analysis to YATA Local knowledge graph.
|
|
31
|
+
*/
|
|
32
|
+
export declare class YataBridge {
|
|
33
|
+
private yata;
|
|
34
|
+
private updater;
|
|
35
|
+
private config;
|
|
36
|
+
private entityNameIndex;
|
|
37
|
+
constructor(yata: YataLocal, config?: YataBridgeConfig);
|
|
38
|
+
/**
|
|
39
|
+
* Analyze code and update knowledge graph
|
|
40
|
+
*/
|
|
41
|
+
updateFromCode(content: string, filePath: string): Promise<UpdateResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Bulk update from multiple files
|
|
44
|
+
*/
|
|
45
|
+
updateFromFiles(files: Array<{
|
|
46
|
+
content: string;
|
|
47
|
+
filePath: string;
|
|
48
|
+
}>): Promise<UpdateResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Analyze code without updating (preview)
|
|
51
|
+
*/
|
|
52
|
+
analyzeOnly(content: string, filePath: string): CodeAnalysisResult;
|
|
53
|
+
/**
|
|
54
|
+
* Add entities to knowledge graph
|
|
55
|
+
*/
|
|
56
|
+
private addEntities;
|
|
57
|
+
/**
|
|
58
|
+
* Add relationships to knowledge graph
|
|
59
|
+
*/
|
|
60
|
+
private addRelationships;
|
|
61
|
+
/**
|
|
62
|
+
* Refresh entity name index from database
|
|
63
|
+
*/
|
|
64
|
+
private refreshEntityIndex;
|
|
65
|
+
/**
|
|
66
|
+
* Get entity by name and namespace
|
|
67
|
+
*/
|
|
68
|
+
getEntityByName(name: string, namespace: string): Promise<Entity | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Search entities by name pattern
|
|
71
|
+
*/
|
|
72
|
+
searchByName(pattern: string): Promise<Entity[]>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Factory function
|
|
76
|
+
*/
|
|
77
|
+
export declare function createYataBridge(yata: YataLocal, config?: YataBridgeConfig): YataBridge;
|
|
78
|
+
//# sourceMappingURL=yata-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yata-bridge.d.ts","sourceRoot":"","sources":["../src/yata-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EACV,MAAM,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AASD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,eAAe,CAAkC;gBAE7C,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,gBAAgB;IAMtD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2D9E;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAClD,OAAO,CAAC,YAAY,CAAC;IAiCxB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAIlE;;OAEG;YACW,WAAW;IAyBzB;;OAEG;YACW,gBAAgB;IA2B9B;;OAEG;YACW,kBAAkB;IAUhC;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWzB;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,gBAAgB,GACxB,UAAU,CAEZ"}
|