@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,335 @@
1
+ /**
2
+ * YATA Local KGPR - Diff Engine
3
+ *
4
+ * Generates diffs between knowledge graph states
5
+ *
6
+ * @packageDocumentation
7
+ * @module @nahisaho/yata-local/kgpr
8
+ *
9
+ * @see REQ-YL-EXT-KGPR-003
10
+ */
11
+ import { createHash } from 'crypto';
12
+ /**
13
+ * Diff engine for generating knowledge graph diffs
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const engine = createLocalDiffEngine();
18
+ *
19
+ * // Create baseline snapshot
20
+ * const baseline = engine.createSnapshot(entities, relationships, 'Initial state');
21
+ *
22
+ * // ... make changes to KG ...
23
+ *
24
+ * // Generate diff from baseline
25
+ * const diff = engine.generateDiff(baseline, currentEntities, currentRelationships);
26
+ * ```
27
+ */
28
+ export class LocalDiffEngine {
29
+ lastSnapshotId = 0;
30
+ /**
31
+ * Create a snapshot of the current knowledge graph state
32
+ *
33
+ * @param entities - Current entities
34
+ * @param relationships - Current relationships
35
+ * @param description - Optional description
36
+ * @returns Snapshot object
37
+ */
38
+ createSnapshot(entities, relationships, description) {
39
+ const entityHashes = new Map();
40
+ const relationshipHashes = new Map();
41
+ // Hash all entities
42
+ for (const entity of entities) {
43
+ entityHashes.set(entity.id, this.hashEntity(entity));
44
+ }
45
+ // Hash all relationships
46
+ for (const rel of relationships) {
47
+ relationshipHashes.set(rel.id, this.hashRelationship(rel));
48
+ }
49
+ return {
50
+ id: `snapshot-${++this.lastSnapshotId}-${Date.now()}`,
51
+ timestamp: new Date(),
52
+ entityHashes,
53
+ relationshipHashes,
54
+ description,
55
+ };
56
+ }
57
+ /**
58
+ * Generate a diff between baseline snapshot and current state
59
+ *
60
+ * @param baseline - Baseline snapshot (or null for full diff)
61
+ * @param currentEntities - Current entities
62
+ * @param currentRelationships - Current relationships
63
+ * @param options - Diff options
64
+ * @returns The diff
65
+ */
66
+ generateDiff(baseline, currentEntities, currentRelationships, options) {
67
+ // Apply filters
68
+ const filteredEntities = this.filterEntities(currentEntities, options);
69
+ const filteredRelationships = this.filterRelationships(currentRelationships, options);
70
+ if (!baseline) {
71
+ // No baseline - everything is added
72
+ return this.createFullDiff(filteredEntities, filteredRelationships);
73
+ }
74
+ // Calculate entity changes
75
+ const entityChanges = this.calculateEntityChanges(baseline.entityHashes, filteredEntities);
76
+ // Calculate relationship changes
77
+ const relationshipChanges = this.calculateRelationshipChanges(baseline.relationshipHashes, filteredRelationships);
78
+ // Calculate stats
79
+ const stats = this.calculateStats(entityChanges, relationshipChanges);
80
+ return {
81
+ entities: entityChanges,
82
+ relationships: relationshipChanges,
83
+ stats,
84
+ };
85
+ }
86
+ /**
87
+ * Generate diff between two snapshots (without current state)
88
+ *
89
+ * @param oldSnapshot - Old snapshot
90
+ * @param newSnapshot - New snapshot
91
+ * @returns Summary diff (IDs only)
92
+ */
93
+ compareSnapshots(oldSnapshot, newSnapshot) {
94
+ const added = [];
95
+ const updated = [];
96
+ const deleted = [];
97
+ // Check entities
98
+ for (const [id, hash] of newSnapshot.entityHashes) {
99
+ const oldHash = oldSnapshot.entityHashes.get(id);
100
+ if (!oldHash) {
101
+ added.push(id);
102
+ }
103
+ else if (oldHash !== hash) {
104
+ updated.push(id);
105
+ }
106
+ }
107
+ for (const id of oldSnapshot.entityHashes.keys()) {
108
+ if (!newSnapshot.entityHashes.has(id)) {
109
+ deleted.push(id);
110
+ }
111
+ }
112
+ return { added, updated, deleted };
113
+ }
114
+ /**
115
+ * Hash an entity for comparison
116
+ */
117
+ hashEntity(entity) {
118
+ const data = JSON.stringify({
119
+ type: entity.type,
120
+ name: entity.name,
121
+ namespace: entity.namespace,
122
+ filePath: entity.filePath,
123
+ line: entity.line,
124
+ metadata: entity.metadata,
125
+ });
126
+ return createHash('sha256').update(data).digest('hex').substring(0, 16);
127
+ }
128
+ /**
129
+ * Hash a relationship for comparison
130
+ */
131
+ hashRelationship(rel) {
132
+ const data = JSON.stringify({
133
+ type: rel.type,
134
+ sourceId: rel.sourceId,
135
+ targetId: rel.targetId,
136
+ metadata: rel.metadata,
137
+ });
138
+ return createHash('sha256').update(data).digest('hex').substring(0, 16);
139
+ }
140
+ /**
141
+ * Filter entities based on options
142
+ */
143
+ filterEntities(entities, options) {
144
+ if (!options)
145
+ return entities;
146
+ return entities.filter((entity) => {
147
+ // Filter by namespace
148
+ if (options.namespace && !entity.namespace.startsWith(options.namespace)) {
149
+ return false;
150
+ }
151
+ // Filter by entity type
152
+ if (options.entityTypes && !options.entityTypes.includes(entity.type)) {
153
+ return false;
154
+ }
155
+ return true;
156
+ });
157
+ }
158
+ /**
159
+ * Filter relationships based on options
160
+ */
161
+ filterRelationships(relationships, options) {
162
+ if (!options)
163
+ return relationships;
164
+ // For relationships, we can't easily filter by namespace without entity info
165
+ // This would require the caller to provide filtered entity IDs
166
+ return relationships;
167
+ }
168
+ /**
169
+ * Create a full diff (all entities/relationships as added)
170
+ */
171
+ createFullDiff(entities, relationships) {
172
+ const entityChanges = entities.map((e) => this.entityToChange(e, 'add'));
173
+ const relationshipChanges = relationships.map((r) => this.relationshipToChange(r, 'add'));
174
+ return {
175
+ entities: {
176
+ added: entityChanges,
177
+ updated: [],
178
+ deleted: [],
179
+ },
180
+ relationships: {
181
+ added: relationshipChanges,
182
+ updated: [],
183
+ deleted: [],
184
+ },
185
+ stats: {
186
+ entitiesAdded: entityChanges.length,
187
+ entitiesUpdated: 0,
188
+ entitiesDeleted: 0,
189
+ relationshipsAdded: relationshipChanges.length,
190
+ relationshipsUpdated: 0,
191
+ relationshipsDeleted: 0,
192
+ totalChanges: entityChanges.length + relationshipChanges.length,
193
+ },
194
+ };
195
+ }
196
+ /**
197
+ * Calculate entity changes between baseline and current
198
+ */
199
+ calculateEntityChanges(baselineHashes, currentEntities) {
200
+ const added = [];
201
+ const updated = [];
202
+ const deleted = [];
203
+ const currentMap = new Map();
204
+ for (const entity of currentEntities) {
205
+ currentMap.set(entity.id, entity);
206
+ }
207
+ // Find added and updated
208
+ for (const entity of currentEntities) {
209
+ const baselineHash = baselineHashes.get(entity.id);
210
+ const currentHash = this.hashEntity(entity);
211
+ if (!baselineHash) {
212
+ // New entity
213
+ added.push(this.entityToChange(entity, 'add'));
214
+ }
215
+ else if (baselineHash !== currentHash) {
216
+ // Updated entity
217
+ updated.push(this.entityToChange(entity, 'update'));
218
+ }
219
+ }
220
+ // Find deleted (in baseline but not in current)
221
+ for (const id of baselineHashes.keys()) {
222
+ if (!currentMap.has(id)) {
223
+ // Deleted - we don't have the entity data, just the ID
224
+ deleted.push({
225
+ changeType: 'delete',
226
+ localId: id,
227
+ name: `[deleted:${id}]`,
228
+ entityType: 'unknown',
229
+ namespace: 'unknown',
230
+ });
231
+ }
232
+ }
233
+ return { added, updated, deleted };
234
+ }
235
+ /**
236
+ * Calculate relationship changes between baseline and current
237
+ */
238
+ calculateRelationshipChanges(baselineHashes, currentRelationships) {
239
+ const added = [];
240
+ const updated = [];
241
+ const deleted = [];
242
+ const currentMap = new Map();
243
+ for (const rel of currentRelationships) {
244
+ currentMap.set(rel.id, rel);
245
+ }
246
+ // Find added and updated
247
+ for (const rel of currentRelationships) {
248
+ const baselineHash = baselineHashes.get(rel.id);
249
+ const currentHash = this.hashRelationship(rel);
250
+ if (!baselineHash) {
251
+ // New relationship
252
+ added.push(this.relationshipToChange(rel, 'add'));
253
+ }
254
+ else if (baselineHash !== currentHash) {
255
+ // Updated relationship
256
+ updated.push(this.relationshipToChange(rel, 'update'));
257
+ }
258
+ }
259
+ // Find deleted
260
+ for (const id of baselineHashes.keys()) {
261
+ if (!currentMap.has(id)) {
262
+ deleted.push({
263
+ changeType: 'delete',
264
+ localId: id,
265
+ sourceName: `[deleted:${id}]`,
266
+ sourceNamespace: 'unknown',
267
+ targetName: 'unknown',
268
+ targetNamespace: 'unknown',
269
+ relationshipType: 'unknown',
270
+ });
271
+ }
272
+ }
273
+ return { added, updated, deleted };
274
+ }
275
+ /**
276
+ * Convert entity to change format
277
+ */
278
+ entityToChange(entity, changeType) {
279
+ return {
280
+ changeType,
281
+ localId: entity.id,
282
+ name: entity.name,
283
+ entityType: entity.type,
284
+ namespace: entity.namespace,
285
+ filePath: entity.filePath,
286
+ line: entity.line,
287
+ metadata: entity.metadata,
288
+ };
289
+ }
290
+ /**
291
+ * Convert relationship to change format
292
+ * Note: This requires entity lookup for names - simplified version uses IDs
293
+ */
294
+ relationshipToChange(rel, changeType) {
295
+ return {
296
+ changeType,
297
+ localId: rel.id,
298
+ // Note: In a full implementation, we'd look up entity names
299
+ sourceName: rel.sourceId,
300
+ sourceNamespace: 'unknown', // Would need entity lookup
301
+ targetName: rel.targetId,
302
+ targetNamespace: 'unknown', // Would need entity lookup
303
+ relationshipType: rel.type,
304
+ metadata: rel.metadata,
305
+ };
306
+ }
307
+ /**
308
+ * Calculate diff statistics
309
+ */
310
+ calculateStats(entityChanges, relationshipChanges) {
311
+ return {
312
+ entitiesAdded: entityChanges.added.length,
313
+ entitiesUpdated: entityChanges.updated.length,
314
+ entitiesDeleted: entityChanges.deleted.length,
315
+ relationshipsAdded: relationshipChanges.added.length,
316
+ relationshipsUpdated: relationshipChanges.updated.length,
317
+ relationshipsDeleted: relationshipChanges.deleted.length,
318
+ totalChanges: entityChanges.added.length +
319
+ entityChanges.updated.length +
320
+ entityChanges.deleted.length +
321
+ relationshipChanges.added.length +
322
+ relationshipChanges.updated.length +
323
+ relationshipChanges.deleted.length,
324
+ };
325
+ }
326
+ }
327
+ /**
328
+ * Create a new diff engine instance
329
+ *
330
+ * @returns New diff engine
331
+ */
332
+ export function createLocalDiffEngine() {
333
+ return new LocalDiffEngine();
334
+ }
335
+ //# sourceMappingURL=diff-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-engine.js","sourceRoot":"","sources":["../../src/kgpr/diff-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * YATA Local KGPR Module - Knowledge Graph Pull Request for Local KG
3
+ *
4
+ * Provides Privacy-aware KGPR creation from local knowledge graphs
5
+ *
6
+ * @packageDocumentation
7
+ * @module @nahisaho/yata-local/kgpr
8
+ *
9
+ * @see REQ-YL-EXT-KGPR-001
10
+ */
11
+ export { LocalKGPRManager, createLocalKGPRManager } from './kgpr-manager.js';
12
+ export { LocalPrivacyFilter, createLocalPrivacyFilter } from './privacy-filter.js';
13
+ export { LocalDiffEngine, createLocalDiffEngine } from './diff-engine.js';
14
+ export type { LocalKGPRInfo, LocalKGPRDiff, LocalKGPRReviewEntry, LocalEntityChange, LocalRelationshipChange, LocalDiffStats, CreateLocalKGPROptions, ListLocalKGPROptions, LocalPrivacyFilterConfig, KGSnapshot, DiffOptions, ChangeType, } from './types.js';
15
+ export type { KGPRStatusLocal, PrivacyLevel } from '../types.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kgpr/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * YATA Local KGPR Module - Knowledge Graph Pull Request for Local KG
3
+ *
4
+ * Provides Privacy-aware KGPR creation from local knowledge graphs
5
+ *
6
+ * @packageDocumentation
7
+ * @module @nahisaho/yata-local/kgpr
8
+ *
9
+ * @see REQ-YL-EXT-KGPR-001
10
+ */
11
+ export { LocalKGPRManager, createLocalKGPRManager } from './kgpr-manager.js';
12
+ export { LocalPrivacyFilter, createLocalPrivacyFilter } from './privacy-filter.js';
13
+ export { LocalDiffEngine, createLocalDiffEngine } from './diff-engine.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kgpr/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * YATA Local KGPR Manager
3
+ *
4
+ * Manages Knowledge Graph Pull Requests in local storage
5
+ *
6
+ * @packageDocumentation
7
+ * @module @nahisaho/yata-local/kgpr
8
+ *
9
+ * @see REQ-YL-EXT-KGPR-001
10
+ */
11
+ import type { KGPRStatusLocal } from '../types.js';
12
+ import type { YataDatabase } from '../database.js';
13
+ import type { LocalKGPRInfo, LocalKGPRDiff, LocalKGPRReviewEntry, CreateLocalKGPROptions, ListLocalKGPROptions } from './types.js';
14
+ /**
15
+ * KGPR Manager for local knowledge graphs
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const manager = createLocalKGPRManager(db);
20
+ *
21
+ * // Create a KGPR
22
+ * const kgpr = await manager.createKGPR({
23
+ * title: 'Add UserService patterns',
24
+ * description: 'Learned patterns from user authentication flow',
25
+ * namespace: 'app.services',
26
+ * privacyLevel: 'strict',
27
+ * });
28
+ *
29
+ * // Preview diff
30
+ * const diff = await manager.previewDiff(kgpr.id);
31
+ *
32
+ * // Submit for review
33
+ * await manager.submitKGPR(kgpr.id);
34
+ * ```
35
+ */
36
+ export declare class LocalKGPRManager {
37
+ private db;
38
+ private diffEngine;
39
+ private snapshots;
40
+ constructor(db: YataDatabase);
41
+ /**
42
+ * Create a new KGPR
43
+ *
44
+ * @param options - Creation options
45
+ * @returns Created KGPR info
46
+ */
47
+ createKGPR(options: CreateLocalKGPROptions): Promise<LocalKGPRInfo>;
48
+ /**
49
+ * Get a KGPR by ID
50
+ *
51
+ * @param id - KGPR ID
52
+ * @returns KGPR info or null if not found
53
+ */
54
+ getKGPR(id: string): Promise<LocalKGPRInfo | null>;
55
+ /**
56
+ * List KGPRs with filtering
57
+ *
58
+ * @param options - List options
59
+ * @returns Array of KGPRs
60
+ */
61
+ listKGPRs(options?: ListLocalKGPROptions): Promise<LocalKGPRInfo[]>;
62
+ /**
63
+ * Preview diff for a KGPR (recalculate current state)
64
+ *
65
+ * @param id - KGPR ID
66
+ * @returns Current diff
67
+ */
68
+ previewDiff(id: string): Promise<LocalKGPRDiff | null>;
69
+ /**
70
+ * Update KGPR status
71
+ *
72
+ * @param id - KGPR ID
73
+ * @param status - New status
74
+ */
75
+ updateStatus(id: string, status: KGPRStatusLocal): Promise<void>;
76
+ /**
77
+ * Submit a KGPR for review
78
+ *
79
+ * @param id - KGPR ID
80
+ */
81
+ submitKGPR(id: string): Promise<void>;
82
+ /**
83
+ * Add a review to a KGPR
84
+ *
85
+ * @param kgprId - KGPR ID
86
+ * @param review - Review data
87
+ */
88
+ addReview(kgprId: string, review: Omit<LocalKGPRReviewEntry, 'id' | 'kgprId' | 'createdAt'>): Promise<LocalKGPRReviewEntry>;
89
+ /**
90
+ * Close a KGPR
91
+ *
92
+ * @param id - KGPR ID
93
+ */
94
+ closeKGPR(id: string): Promise<void>;
95
+ /**
96
+ * Create a snapshot of current KG state
97
+ *
98
+ * @param description - Snapshot description
99
+ * @returns Snapshot ID
100
+ */
101
+ createSnapshot(description?: string): Promise<string>;
102
+ /**
103
+ * Convert DB KGPR to LocalKGPRInfo
104
+ */
105
+ private dbKGPRToInfo;
106
+ /**
107
+ * Get entities from the database
108
+ */
109
+ private getEntities;
110
+ /**
111
+ * Get relationships from the database
112
+ */
113
+ private getRelationships;
114
+ }
115
+ /**
116
+ * Create a new KGPR manager
117
+ *
118
+ * @param db - YataDatabase instance
119
+ * @returns New KGPR manager
120
+ */
121
+ export declare function createLocalKGPRManager(db: YataDatabase): LocalKGPRManager;
122
+ //# sourceMappingURL=kgpr-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kgpr-manager.d.ts","sourceRoot":"","sources":["../../src/kgpr/kgpr-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAoC,eAAe,EAA2B,MAAM,aAAa,CAAC;AAC9G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,SAAS,CAAsC;gBAE3C,EAAE,EAAE,YAAY;IAK5B;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoDzE;;;;;OAKG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IASxD;;;;;OAKG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA8CzE;;;;;OAKG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsB5D;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE;;;;OAIG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3C;;;;;OAKG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,GAChE,OAAO,CAAC,oBAAoB,CAAC;IAkChC;;;;OAIG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C;;;;;OAKG;IACG,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3D;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;YACW,WAAW;IA8CzB;;OAEG;YACW,gBAAgB;CAwB/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,YAAY,GAAG,gBAAgB,CAEzE"}