@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,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local - Knowledge Graph Auto Updater
|
|
3
|
+
*
|
|
4
|
+
* Automatically extracts entities and relationships from code
|
|
5
|
+
* and updates the knowledge graph.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @module @nahisaho/yata-local
|
|
9
|
+
* @see REQ-YATA-AUTO-001
|
|
10
|
+
*/
|
|
11
|
+
import type { EntityType, RelationType } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Extracted entity from code analysis
|
|
14
|
+
*/
|
|
15
|
+
export interface ExtractedEntity {
|
|
16
|
+
type: EntityType;
|
|
17
|
+
name: string;
|
|
18
|
+
namespace: string;
|
|
19
|
+
filePath: string;
|
|
20
|
+
line?: number;
|
|
21
|
+
description?: string;
|
|
22
|
+
metadata?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Extracted relationship from code analysis
|
|
26
|
+
*/
|
|
27
|
+
export interface ExtractedRelationship {
|
|
28
|
+
sourceName: string;
|
|
29
|
+
sourceNamespace: string;
|
|
30
|
+
targetName: string;
|
|
31
|
+
targetNamespace: string;
|
|
32
|
+
type: RelationType;
|
|
33
|
+
metadata?: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Code analysis result
|
|
37
|
+
*/
|
|
38
|
+
export interface CodeAnalysisResult {
|
|
39
|
+
filePath: string;
|
|
40
|
+
entities: ExtractedEntity[];
|
|
41
|
+
relationships: ExtractedRelationship[];
|
|
42
|
+
errors: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Update result
|
|
46
|
+
*/
|
|
47
|
+
export interface UpdateResult {
|
|
48
|
+
success: boolean;
|
|
49
|
+
entitiesAdded: number;
|
|
50
|
+
entitiesUpdated: number;
|
|
51
|
+
entitiesDeleted: number;
|
|
52
|
+
relationshipsAdded: number;
|
|
53
|
+
relationshipsDeleted: number;
|
|
54
|
+
errors: string[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Knowledge Graph Auto Updater
|
|
58
|
+
*
|
|
59
|
+
* Analyzes TypeScript/JavaScript code and automatically
|
|
60
|
+
* updates the knowledge graph with extracted entities
|
|
61
|
+
* and relationships.
|
|
62
|
+
*/
|
|
63
|
+
export declare class KnowledgeGraphUpdater {
|
|
64
|
+
/**
|
|
65
|
+
* Analyze TypeScript/JavaScript code and extract entities
|
|
66
|
+
*/
|
|
67
|
+
analyzeCode(content: string, filePath: string): CodeAnalysisResult;
|
|
68
|
+
/**
|
|
69
|
+
* Extract namespace from file path
|
|
70
|
+
*/
|
|
71
|
+
private extractNamespace;
|
|
72
|
+
/**
|
|
73
|
+
* Parse content into simple AST nodes
|
|
74
|
+
*/
|
|
75
|
+
private parseSimpleAST;
|
|
76
|
+
/**
|
|
77
|
+
* Extract method modifiers
|
|
78
|
+
*/
|
|
79
|
+
private extractMethodModifiers;
|
|
80
|
+
/**
|
|
81
|
+
* Process AST node and extract entities/relationships
|
|
82
|
+
*/
|
|
83
|
+
private processNode;
|
|
84
|
+
/**
|
|
85
|
+
* Extract import relationships
|
|
86
|
+
*/
|
|
87
|
+
private extractImports;
|
|
88
|
+
/**
|
|
89
|
+
* Resolve import path to namespace
|
|
90
|
+
*/
|
|
91
|
+
private resolveImportPath;
|
|
92
|
+
/**
|
|
93
|
+
* Simple path resolution
|
|
94
|
+
*/
|
|
95
|
+
private resolvePath;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Factory function
|
|
99
|
+
*/
|
|
100
|
+
export declare function createKnowledgeGraphUpdater(): KnowledgeGraphUpdater;
|
|
101
|
+
//# sourceMappingURL=auto-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-updater.d.ts","sourceRoot":"","sources":["../src/auto-updater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAkCD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IA4BlE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiJtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAwInB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqCtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,WAAW;CAcpB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE"}
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local - Knowledge Graph Auto Updater
|
|
3
|
+
*
|
|
4
|
+
* Automatically extracts entities and relationships from code
|
|
5
|
+
* and updates the knowledge graph.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @module @nahisaho/yata-local
|
|
9
|
+
* @see REQ-YATA-AUTO-001
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Knowledge Graph Auto Updater
|
|
13
|
+
*
|
|
14
|
+
* Analyzes TypeScript/JavaScript code and automatically
|
|
15
|
+
* updates the knowledge graph with extracted entities
|
|
16
|
+
* and relationships.
|
|
17
|
+
*/
|
|
18
|
+
export class KnowledgeGraphUpdater {
|
|
19
|
+
/**
|
|
20
|
+
* Analyze TypeScript/JavaScript code and extract entities
|
|
21
|
+
*/
|
|
22
|
+
analyzeCode(content, filePath) {
|
|
23
|
+
const entities = [];
|
|
24
|
+
const relationships = [];
|
|
25
|
+
const errors = [];
|
|
26
|
+
const namespace = this.extractNamespace(filePath);
|
|
27
|
+
try {
|
|
28
|
+
const ast = this.parseSimpleAST(content);
|
|
29
|
+
for (const node of ast) {
|
|
30
|
+
const result = this.processNode(node, namespace, filePath);
|
|
31
|
+
entities.push(...result.entities);
|
|
32
|
+
relationships.push(...result.relationships);
|
|
33
|
+
}
|
|
34
|
+
// Extract import relationships
|
|
35
|
+
const imports = this.extractImports(content, filePath);
|
|
36
|
+
relationships.push(...imports);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
errors.push(`Failed to analyze ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
40
|
+
}
|
|
41
|
+
return { filePath, entities, relationships, errors };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Extract namespace from file path
|
|
45
|
+
*/
|
|
46
|
+
extractNamespace(filePath) {
|
|
47
|
+
// Remove extension and convert to namespace
|
|
48
|
+
const withoutExt = filePath.replace(/\.(ts|tsx|js|jsx|mjs|cjs)$/, '');
|
|
49
|
+
// Convert path separators to dots
|
|
50
|
+
const namespace = withoutExt
|
|
51
|
+
.replace(/^(src|lib|dist)\//, '')
|
|
52
|
+
.replace(/\//g, '.')
|
|
53
|
+
.replace(/^\.+|\.+$/g, '');
|
|
54
|
+
return namespace || 'root';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Parse content into simple AST nodes
|
|
58
|
+
*/
|
|
59
|
+
parseSimpleAST(content) {
|
|
60
|
+
const nodes = [];
|
|
61
|
+
const lines = content.split('\n');
|
|
62
|
+
// Class/Interface detection regex
|
|
63
|
+
const classRegex = /^(?:export\s+)?(?:abstract\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?(?:\s+implements\s+([\w,\s]+))?/;
|
|
64
|
+
const interfaceRegex = /^(?:export\s+)?interface\s+(\w+)(?:\s+extends\s+([\w,\s]+))?/;
|
|
65
|
+
const functionRegex = /^(?:export\s+)?(?:async\s+)?function\s+(\w+)/;
|
|
66
|
+
const constFunctionRegex = /^(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s+)?\(?/;
|
|
67
|
+
const typeRegex = /^(?:export\s+)?type\s+(\w+)\s*=/;
|
|
68
|
+
const enumRegex = /^(?:export\s+)?enum\s+(\w+)/;
|
|
69
|
+
const importRegex = /^import\s+(?:{([^}]+)}|\*\s+as\s+(\w+)|(\w+))\s+from\s+['"]([^'"]+)['"]/;
|
|
70
|
+
const methodRegex = /^\s+(?:public\s+|private\s+|protected\s+)?(?:static\s+)?(?:async\s+)?(\w+)\s*\(/;
|
|
71
|
+
let currentClass = null;
|
|
72
|
+
let braceCount = 0;
|
|
73
|
+
for (let i = 0; i < lines.length; i++) {
|
|
74
|
+
const line = lines[i];
|
|
75
|
+
const lineNum = i + 1;
|
|
76
|
+
const trimmed = line.trim();
|
|
77
|
+
// Skip empty lines and comments
|
|
78
|
+
if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('*')) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
// Track brace depth for class scope
|
|
82
|
+
braceCount += (line.match(/{/g) || []).length;
|
|
83
|
+
braceCount -= (line.match(/}/g) || []).length;
|
|
84
|
+
// Check for class end
|
|
85
|
+
if (currentClass && braceCount === 0) {
|
|
86
|
+
currentClass.endLine = lineNum;
|
|
87
|
+
currentClass = null;
|
|
88
|
+
}
|
|
89
|
+
// Class declaration
|
|
90
|
+
const classMatch = trimmed.match(classRegex);
|
|
91
|
+
if (classMatch) {
|
|
92
|
+
const node = {
|
|
93
|
+
type: 'ClassDeclaration',
|
|
94
|
+
name: classMatch[1],
|
|
95
|
+
line: lineNum,
|
|
96
|
+
modifiers: trimmed.includes('abstract') ? ['abstract'] : [],
|
|
97
|
+
extends: classMatch[2],
|
|
98
|
+
implements: classMatch[3]?.split(',').map(s => s.trim()),
|
|
99
|
+
members: [],
|
|
100
|
+
};
|
|
101
|
+
nodes.push(node);
|
|
102
|
+
currentClass = node;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Interface declaration
|
|
106
|
+
const interfaceMatch = trimmed.match(interfaceRegex);
|
|
107
|
+
if (interfaceMatch) {
|
|
108
|
+
nodes.push({
|
|
109
|
+
type: 'InterfaceDeclaration',
|
|
110
|
+
name: interfaceMatch[1],
|
|
111
|
+
line: lineNum,
|
|
112
|
+
extends: interfaceMatch[2],
|
|
113
|
+
});
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// Function declaration
|
|
117
|
+
const functionMatch = trimmed.match(functionRegex);
|
|
118
|
+
if (functionMatch && !currentClass) {
|
|
119
|
+
nodes.push({
|
|
120
|
+
type: 'FunctionDeclaration',
|
|
121
|
+
name: functionMatch[1],
|
|
122
|
+
line: lineNum,
|
|
123
|
+
modifiers: trimmed.includes('async') ? ['async'] : [],
|
|
124
|
+
});
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Const function (arrow function)
|
|
128
|
+
const constFunctionMatch = trimmed.match(constFunctionRegex);
|
|
129
|
+
if (constFunctionMatch && !currentClass) {
|
|
130
|
+
// Check if it's actually a function (has => or function keyword)
|
|
131
|
+
if (trimmed.includes('=>') || lines.slice(i, i + 3).join('').includes('=>')) {
|
|
132
|
+
nodes.push({
|
|
133
|
+
type: 'FunctionDeclaration',
|
|
134
|
+
name: constFunctionMatch[1],
|
|
135
|
+
line: lineNum,
|
|
136
|
+
modifiers: trimmed.includes('async') ? ['async'] : [],
|
|
137
|
+
});
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Type alias
|
|
142
|
+
const typeMatch = trimmed.match(typeRegex);
|
|
143
|
+
if (typeMatch) {
|
|
144
|
+
nodes.push({
|
|
145
|
+
type: 'TypeAlias',
|
|
146
|
+
name: typeMatch[1],
|
|
147
|
+
line: lineNum,
|
|
148
|
+
});
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// Enum
|
|
152
|
+
const enumMatch = trimmed.match(enumRegex);
|
|
153
|
+
if (enumMatch) {
|
|
154
|
+
nodes.push({
|
|
155
|
+
type: 'EnumDeclaration',
|
|
156
|
+
name: enumMatch[1],
|
|
157
|
+
line: lineNum,
|
|
158
|
+
});
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
// Import
|
|
162
|
+
const importMatch = trimmed.match(importRegex);
|
|
163
|
+
if (importMatch) {
|
|
164
|
+
const names = importMatch[1] || importMatch[2] || importMatch[3];
|
|
165
|
+
nodes.push({
|
|
166
|
+
type: 'ImportDeclaration',
|
|
167
|
+
name: names,
|
|
168
|
+
line: lineNum,
|
|
169
|
+
importFrom: importMatch[4],
|
|
170
|
+
});
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Method (inside class)
|
|
174
|
+
if (currentClass) {
|
|
175
|
+
const methodMatch = line.match(methodRegex);
|
|
176
|
+
if (methodMatch && !['if', 'for', 'while', 'switch', 'catch', 'constructor'].includes(methodMatch[1])) {
|
|
177
|
+
currentClass.members?.push({
|
|
178
|
+
type: 'MethodDefinition',
|
|
179
|
+
name: methodMatch[1],
|
|
180
|
+
line: lineNum,
|
|
181
|
+
modifiers: this.extractMethodModifiers(line),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return nodes;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Extract method modifiers
|
|
190
|
+
*/
|
|
191
|
+
extractMethodModifiers(line) {
|
|
192
|
+
const modifiers = [];
|
|
193
|
+
if (line.includes('public'))
|
|
194
|
+
modifiers.push('public');
|
|
195
|
+
if (line.includes('private'))
|
|
196
|
+
modifiers.push('private');
|
|
197
|
+
if (line.includes('protected'))
|
|
198
|
+
modifiers.push('protected');
|
|
199
|
+
if (line.includes('static'))
|
|
200
|
+
modifiers.push('static');
|
|
201
|
+
if (line.includes('async'))
|
|
202
|
+
modifiers.push('async');
|
|
203
|
+
return modifiers;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Process AST node and extract entities/relationships
|
|
207
|
+
*/
|
|
208
|
+
processNode(node, namespace, filePath) {
|
|
209
|
+
const entities = [];
|
|
210
|
+
const relationships = [];
|
|
211
|
+
switch (node.type) {
|
|
212
|
+
case 'ClassDeclaration': {
|
|
213
|
+
entities.push({
|
|
214
|
+
type: 'class',
|
|
215
|
+
name: node.name,
|
|
216
|
+
namespace,
|
|
217
|
+
filePath,
|
|
218
|
+
line: node.line,
|
|
219
|
+
metadata: {
|
|
220
|
+
modifiers: node.modifiers,
|
|
221
|
+
endLine: node.endLine,
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
// Extends relationship
|
|
225
|
+
if (node.extends) {
|
|
226
|
+
relationships.push({
|
|
227
|
+
sourceName: node.name,
|
|
228
|
+
sourceNamespace: namespace,
|
|
229
|
+
targetName: node.extends,
|
|
230
|
+
targetNamespace: namespace, // May need resolution
|
|
231
|
+
type: 'extends',
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
// Implements relationships
|
|
235
|
+
if (node.implements) {
|
|
236
|
+
for (const iface of node.implements) {
|
|
237
|
+
relationships.push({
|
|
238
|
+
sourceName: node.name,
|
|
239
|
+
sourceNamespace: namespace,
|
|
240
|
+
targetName: iface,
|
|
241
|
+
targetNamespace: namespace,
|
|
242
|
+
type: 'implements',
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Process methods
|
|
247
|
+
if (node.members) {
|
|
248
|
+
for (const member of node.members) {
|
|
249
|
+
if (member.type === 'MethodDefinition') {
|
|
250
|
+
entities.push({
|
|
251
|
+
type: 'method',
|
|
252
|
+
name: member.name,
|
|
253
|
+
namespace: `${namespace}.${node.name}`,
|
|
254
|
+
filePath,
|
|
255
|
+
line: member.line,
|
|
256
|
+
metadata: { modifiers: member.modifiers },
|
|
257
|
+
});
|
|
258
|
+
// Method belongs to class
|
|
259
|
+
relationships.push({
|
|
260
|
+
sourceName: node.name,
|
|
261
|
+
sourceNamespace: namespace,
|
|
262
|
+
targetName: member.name,
|
|
263
|
+
targetNamespace: `${namespace}.${node.name}`,
|
|
264
|
+
type: 'has-method',
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case 'InterfaceDeclaration': {
|
|
272
|
+
entities.push({
|
|
273
|
+
type: 'interface',
|
|
274
|
+
name: node.name,
|
|
275
|
+
namespace,
|
|
276
|
+
filePath,
|
|
277
|
+
line: node.line,
|
|
278
|
+
});
|
|
279
|
+
// Interface extends
|
|
280
|
+
if (node.extends) {
|
|
281
|
+
const extendsList = node.extends.split(',').map(s => s.trim());
|
|
282
|
+
for (const ext of extendsList) {
|
|
283
|
+
relationships.push({
|
|
284
|
+
sourceName: node.name,
|
|
285
|
+
sourceNamespace: namespace,
|
|
286
|
+
targetName: ext,
|
|
287
|
+
targetNamespace: namespace,
|
|
288
|
+
type: 'extends',
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
case 'FunctionDeclaration': {
|
|
295
|
+
entities.push({
|
|
296
|
+
type: 'function',
|
|
297
|
+
name: node.name,
|
|
298
|
+
namespace,
|
|
299
|
+
filePath,
|
|
300
|
+
line: node.line,
|
|
301
|
+
metadata: { modifiers: node.modifiers },
|
|
302
|
+
});
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
case 'TypeAlias': {
|
|
306
|
+
entities.push({
|
|
307
|
+
type: 'type',
|
|
308
|
+
name: node.name,
|
|
309
|
+
namespace,
|
|
310
|
+
filePath,
|
|
311
|
+
line: node.line,
|
|
312
|
+
});
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
case 'EnumDeclaration': {
|
|
316
|
+
entities.push({
|
|
317
|
+
type: 'enum',
|
|
318
|
+
name: node.name,
|
|
319
|
+
namespace,
|
|
320
|
+
filePath,
|
|
321
|
+
line: node.line,
|
|
322
|
+
});
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return { entities, relationships };
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Extract import relationships
|
|
330
|
+
*/
|
|
331
|
+
extractImports(content, filePath) {
|
|
332
|
+
const relationships = [];
|
|
333
|
+
const namespace = this.extractNamespace(filePath);
|
|
334
|
+
const importRegex = /import\s+(?:{([^}]+)}|\*\s+as\s+(\w+)|(\w+))\s+from\s+['"]([^'"]+)['"]/g;
|
|
335
|
+
let match;
|
|
336
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
337
|
+
const importedNames = match[1] || match[2] || match[3];
|
|
338
|
+
const importFrom = match[4];
|
|
339
|
+
const targetNamespace = this.resolveImportPath(importFrom, filePath);
|
|
340
|
+
// Create import relationships for each imported name
|
|
341
|
+
const names = importedNames.split(',').map(s => s.trim());
|
|
342
|
+
for (const name of names) {
|
|
343
|
+
if (name) {
|
|
344
|
+
// Handle "Name as Alias" syntax
|
|
345
|
+
const actualName = name.includes(' as ')
|
|
346
|
+
? name.split(' as ')[0].trim()
|
|
347
|
+
: name;
|
|
348
|
+
relationships.push({
|
|
349
|
+
sourceName: namespace,
|
|
350
|
+
sourceNamespace: namespace,
|
|
351
|
+
targetName: actualName,
|
|
352
|
+
targetNamespace: targetNamespace,
|
|
353
|
+
type: 'imports',
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return relationships;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Resolve import path to namespace
|
|
362
|
+
*/
|
|
363
|
+
resolveImportPath(importPath, currentFile) {
|
|
364
|
+
if (importPath.startsWith('.')) {
|
|
365
|
+
// Relative import
|
|
366
|
+
const currentDir = currentFile.replace(/\/[^/]+$/, '');
|
|
367
|
+
const resolved = this.resolvePath(currentDir, importPath);
|
|
368
|
+
return this.extractNamespace(resolved);
|
|
369
|
+
}
|
|
370
|
+
else if (importPath.startsWith('@')) {
|
|
371
|
+
// Scoped package
|
|
372
|
+
return importPath.replace(/\//g, '.');
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
// Node module
|
|
376
|
+
return importPath;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Simple path resolution
|
|
381
|
+
*/
|
|
382
|
+
resolvePath(currentDir, relativePath) {
|
|
383
|
+
const parts = currentDir.split('/');
|
|
384
|
+
const relParts = relativePath.split('/');
|
|
385
|
+
for (const part of relParts) {
|
|
386
|
+
if (part === '..') {
|
|
387
|
+
parts.pop();
|
|
388
|
+
}
|
|
389
|
+
else if (part !== '.') {
|
|
390
|
+
parts.push(part.replace(/\.(ts|tsx|js|jsx)$/, ''));
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return parts.join('/');
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Factory function
|
|
398
|
+
*/
|
|
399
|
+
export function createKnowledgeGraphUpdater() {
|
|
400
|
+
return new KnowledgeGraphUpdater();
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=auto-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-updater.js","sourceRoot":"","sources":["../src/auto-updater.ts"],"names":[],"mappings":"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"}
|