@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.
Files changed (77) hide show
  1. package/dist/auto-updater.d.ts +101 -0
  2. package/dist/auto-updater.d.ts.map +1 -0
  3. package/dist/auto-updater.js +402 -0
  4. package/dist/auto-updater.js.map +1 -0
  5. package/dist/database.d.ts +229 -0
  6. package/dist/database.d.ts.map +1 -0
  7. package/dist/database.js +959 -0
  8. package/dist/database.js.map +1 -0
  9. package/dist/index.d.ts +298 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +436 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/io.d.ts +77 -0
  14. package/dist/io.d.ts.map +1 -0
  15. package/dist/io.js +403 -0
  16. package/dist/io.js.map +1 -0
  17. package/dist/kgpr/diff-engine.d.ts +110 -0
  18. package/dist/kgpr/diff-engine.d.ts.map +1 -0
  19. package/dist/kgpr/diff-engine.js +335 -0
  20. package/dist/kgpr/diff-engine.js.map +1 -0
  21. package/dist/kgpr/index.d.ts +16 -0
  22. package/dist/kgpr/index.d.ts.map +1 -0
  23. package/dist/kgpr/index.js +14 -0
  24. package/dist/kgpr/index.js.map +1 -0
  25. package/dist/kgpr/kgpr-manager.d.ts +122 -0
  26. package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
  27. package/dist/kgpr/kgpr-manager.js +344 -0
  28. package/dist/kgpr/kgpr-manager.js.map +1 -0
  29. package/dist/kgpr/privacy-filter.d.ts +109 -0
  30. package/dist/kgpr/privacy-filter.d.ts.map +1 -0
  31. package/dist/kgpr/privacy-filter.js +295 -0
  32. package/dist/kgpr/privacy-filter.js.map +1 -0
  33. package/dist/kgpr/types.d.ts +234 -0
  34. package/dist/kgpr/types.d.ts.map +1 -0
  35. package/dist/kgpr/types.js +54 -0
  36. package/dist/kgpr/types.js.map +1 -0
  37. package/dist/query-engine.d.ts +78 -0
  38. package/dist/query-engine.d.ts.map +1 -0
  39. package/dist/query-engine.js +368 -0
  40. package/dist/query-engine.js.map +1 -0
  41. package/dist/reasoning.d.ts +112 -0
  42. package/dist/reasoning.d.ts.map +1 -0
  43. package/dist/reasoning.js +455 -0
  44. package/dist/reasoning.js.map +1 -0
  45. package/dist/types.d.ts +580 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +37 -0
  48. package/dist/types.js.map +1 -0
  49. package/dist/wake-sleep/cycle-manager.d.ts +76 -0
  50. package/dist/wake-sleep/cycle-manager.d.ts.map +1 -0
  51. package/dist/wake-sleep/cycle-manager.js +291 -0
  52. package/dist/wake-sleep/cycle-manager.js.map +1 -0
  53. package/dist/wake-sleep/index.d.ts +15 -0
  54. package/dist/wake-sleep/index.d.ts.map +1 -0
  55. package/dist/wake-sleep/index.js +19 -0
  56. package/dist/wake-sleep/index.js.map +1 -0
  57. package/dist/wake-sleep/pattern-compressor.d.ts +86 -0
  58. package/dist/wake-sleep/pattern-compressor.d.ts.map +1 -0
  59. package/dist/wake-sleep/pattern-compressor.js +333 -0
  60. package/dist/wake-sleep/pattern-compressor.js.map +1 -0
  61. package/dist/wake-sleep/sleep-phase.d.ts +79 -0
  62. package/dist/wake-sleep/sleep-phase.d.ts.map +1 -0
  63. package/dist/wake-sleep/sleep-phase.js +329 -0
  64. package/dist/wake-sleep/sleep-phase.js.map +1 -0
  65. package/dist/wake-sleep/types.d.ts +244 -0
  66. package/dist/wake-sleep/types.d.ts.map +1 -0
  67. package/dist/wake-sleep/types.js +35 -0
  68. package/dist/wake-sleep/types.js.map +1 -0
  69. package/dist/wake-sleep/wake-phase.d.ts +83 -0
  70. package/dist/wake-sleep/wake-phase.d.ts.map +1 -0
  71. package/dist/wake-sleep/wake-phase.js +457 -0
  72. package/dist/wake-sleep/wake-phase.js.map +1 -0
  73. package/dist/yata-bridge.d.ts +78 -0
  74. package/dist/yata-bridge.d.ts.map +1 -0
  75. package/dist/yata-bridge.js +193 -0
  76. package/dist/yata-bridge.js.map +1 -0
  77. 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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"}