@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 @@
1
+ {"version":3,"file":"query-engine.d.ts","sourceRoot":"","sources":["../src/query-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAEpC;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,WAAW;IAiE1E;;;OAGG;IACH,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;QACnC,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;KACxC,GACL,IAAI,GAAG,IAAI;IAyDd;;;OAGG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3B,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;QACnC,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;KAC9B,GACL,QAAQ;IA6DX;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE;IAgCnD;;OAEG;IACH,OAAO,CAAC,eAAe;IAiFvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,YAAY,EAAE,EACjC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,SAAI,GACV,MAAM,EAAE;IAqCX;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;QAClC,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;QACnC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;KACvB,GACL,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAA;KAAE,CAAC;IA4BxD;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;KAC/B,GACL,IAAI,EAAE;CAmDV"}
@@ -0,0 +1,368 @@
1
+ /**
2
+ * YATA Local - Query Engine
3
+ *
4
+ * @packageDocumentation
5
+ * @module @nahisaho/yata-local/query-engine
6
+ *
7
+ * @see REQ-YL-QUERY-001 ~ REQ-YL-QUERY-005
8
+ */
9
+ /**
10
+ * Query engine for traversing and querying the knowledge graph
11
+ */
12
+ export class QueryEngine {
13
+ db;
14
+ constructor(db) {
15
+ this.db = db;
16
+ }
17
+ /**
18
+ * Execute graph query
19
+ * @see REQ-YL-QUERY-001
20
+ */
21
+ query(query, options = {}) {
22
+ const startTime = Date.now();
23
+ const limit = options.limit ?? 100;
24
+ const offset = options.offset ?? 0;
25
+ let entities = [];
26
+ let relationships = [];
27
+ let totalCount = 0;
28
+ // Execute entity query
29
+ if (query.entityFilters) {
30
+ const result = this.db.queryEntities({
31
+ type: query.entityFilters.types,
32
+ namePattern: query.entityFilters.namePattern,
33
+ namespace: query.entityFilters.namespace,
34
+ }, limit, offset);
35
+ entities = result.entities;
36
+ totalCount = result.totalCount;
37
+ }
38
+ // Execute text search
39
+ if (query.textSearch) {
40
+ const searchResults = this.db.searchEntities(query.textSearch, limit);
41
+ entities = [...entities, ...searchResults];
42
+ totalCount = entities.length;
43
+ }
44
+ // Get relationships for result entities
45
+ if (query.includeRelationships !== false && entities.length > 0) {
46
+ const entityIds = new Set(entities.map(e => e.id));
47
+ const relSet = new Map();
48
+ for (const entity of entities) {
49
+ const rels = this.db.getRelationships(entity.id);
50
+ for (const rel of rels) {
51
+ // Filter by relationship type if specified
52
+ if (query.relationshipFilters?.types) {
53
+ if (!query.relationshipFilters.types.includes(rel.type)) {
54
+ continue;
55
+ }
56
+ }
57
+ // Only include if source or target is in result
58
+ if (entityIds.has(rel.sourceId) || entityIds.has(rel.targetId)) {
59
+ relSet.set(rel.id, rel);
60
+ }
61
+ }
62
+ }
63
+ relationships = Array.from(relSet.values());
64
+ }
65
+ const executionTime = Date.now() - startTime;
66
+ return {
67
+ entities,
68
+ relationships,
69
+ totalCount,
70
+ hasMore: offset + entities.length < totalCount,
71
+ executionTime,
72
+ };
73
+ }
74
+ /**
75
+ * Find shortest path between two entities
76
+ * @see REQ-YL-QUERY-002
77
+ */
78
+ findPath(startId, endId, options = {}) {
79
+ const maxDepth = options.maxDepth ?? 10;
80
+ const direction = options.direction ?? 'both';
81
+ // BFS for shortest path
82
+ const visited = new Set();
83
+ const queue = [{ entityId: startId, path: [startId], relationships: [] }];
84
+ visited.add(startId);
85
+ while (queue.length > 0) {
86
+ const current = queue.shift();
87
+ if (current.entityId === endId) {
88
+ // Found path
89
+ const pathEntities = current.path.map(id => this.db.getEntity(id)).filter(Boolean);
90
+ return {
91
+ entities: pathEntities,
92
+ relationships: current.relationships,
93
+ length: current.relationships.length,
94
+ };
95
+ }
96
+ if (current.path.length > maxDepth) {
97
+ continue;
98
+ }
99
+ // Get neighbors
100
+ const relDirection = direction === 'forward' ? 'out' : direction === 'backward' ? 'in' : 'both';
101
+ const rels = this.db.getRelationships(current.entityId, relDirection);
102
+ for (const rel of rels) {
103
+ // Filter by relationship type
104
+ if (options.relationshipTypes && !options.relationshipTypes.includes(rel.type)) {
105
+ continue;
106
+ }
107
+ const nextId = rel.sourceId === current.entityId ? rel.targetId : rel.sourceId;
108
+ if (!visited.has(nextId)) {
109
+ visited.add(nextId);
110
+ queue.push({
111
+ entityId: nextId,
112
+ path: [...current.path, nextId],
113
+ relationships: [...current.relationships, rel],
114
+ });
115
+ }
116
+ }
117
+ }
118
+ return null; // No path found
119
+ }
120
+ /**
121
+ * Extract subgraph around entity
122
+ * @see REQ-YL-QUERY-003
123
+ */
124
+ extractSubgraph(rootId, options = {}) {
125
+ const depth = options.depth ?? 2;
126
+ const direction = options.direction ?? 'both';
127
+ const entityTypes = options.entityTypes ? new Set(options.entityTypes) : null;
128
+ const relTypes = options.relationshipTypes ? new Set(options.relationshipTypes) : null;
129
+ const entities = new Map();
130
+ const relationships = new Map();
131
+ // BFS to collect subgraph
132
+ const visited = new Set();
133
+ let currentLevel = [rootId];
134
+ let currentDepth = 0;
135
+ while (currentLevel.length > 0 && currentDepth <= depth) {
136
+ const nextLevel = [];
137
+ for (const entityId of currentLevel) {
138
+ if (visited.has(entityId))
139
+ continue;
140
+ visited.add(entityId);
141
+ const entity = this.db.getEntity(entityId);
142
+ if (!entity)
143
+ continue;
144
+ // Filter by entity type
145
+ if (entityTypes && !entityTypes.has(entity.type)) {
146
+ continue;
147
+ }
148
+ entities.set(entity.id, entity);
149
+ // Get relationships
150
+ const rels = this.db.getRelationships(entityId, direction);
151
+ for (const rel of rels) {
152
+ // Filter by relationship type
153
+ if (relTypes && !relTypes.has(rel.type)) {
154
+ continue;
155
+ }
156
+ relationships.set(rel.id, rel);
157
+ // Add to next level
158
+ const nextId = rel.sourceId === entityId ? rel.targetId : rel.sourceId;
159
+ if (!visited.has(nextId)) {
160
+ nextLevel.push(nextId);
161
+ }
162
+ }
163
+ }
164
+ currentLevel = nextLevel;
165
+ currentDepth++;
166
+ }
167
+ return {
168
+ entities: Array.from(entities.values()),
169
+ relationships: Array.from(relationships.values()),
170
+ rootId,
171
+ };
172
+ }
173
+ /**
174
+ * Pattern matching on graph
175
+ * @see REQ-YL-QUERY-004
176
+ */
177
+ matchPattern(pattern) {
178
+ const matches = [];
179
+ // Get candidate entities for first pattern node
180
+ const firstPattern = pattern.nodes[0];
181
+ if (!firstPattern)
182
+ return matches;
183
+ const { entities: candidates } = this.db.queryEntities({
184
+ type: firstPattern.type,
185
+ namePattern: firstPattern.namePattern,
186
+ }, 1000 // Limit candidates
187
+ );
188
+ // Try to match pattern starting from each candidate
189
+ for (const startEntity of candidates) {
190
+ const bindings = new Map();
191
+ bindings.set(firstPattern.variable, startEntity.id);
192
+ const result = this.tryMatchPattern(pattern, 1, bindings);
193
+ if (result) {
194
+ matches.push({
195
+ bindings: Object.fromEntries(result),
196
+ confidence: 1.0,
197
+ });
198
+ }
199
+ }
200
+ return matches;
201
+ }
202
+ /**
203
+ * Recursive pattern matching helper
204
+ */
205
+ tryMatchPattern(pattern, nodeIndex, bindings) {
206
+ if (nodeIndex >= pattern.nodes.length) {
207
+ // All nodes matched, now check edges
208
+ for (const edge of pattern.edges) {
209
+ const sourceId = bindings.get(edge.sourceVar);
210
+ const targetId = bindings.get(edge.targetVar);
211
+ if (!sourceId || !targetId)
212
+ return null;
213
+ // Check if relationship exists
214
+ const rels = this.db.getRelationships(sourceId, 'out');
215
+ const hasEdge = rels.some(r => r.targetId === targetId && (edge.type === undefined || r.type === edge.type));
216
+ if (!hasEdge)
217
+ return null;
218
+ }
219
+ return bindings;
220
+ }
221
+ const nodePattern = pattern.nodes[nodeIndex];
222
+ // Find edges connecting to already bound nodes
223
+ const connectingEdges = pattern.edges.filter(e => bindings.has(e.sourceVar) && e.targetVar === nodePattern.variable);
224
+ if (connectingEdges.length > 0) {
225
+ // Follow edges to find candidates
226
+ const edge = connectingEdges[0];
227
+ const sourceId = bindings.get(edge.sourceVar);
228
+ const rels = this.db.getRelationships(sourceId, 'out').filter(r => edge.type === undefined || r.type === edge.type);
229
+ for (const rel of rels) {
230
+ const targetEntity = this.db.getEntity(rel.targetId);
231
+ if (!targetEntity)
232
+ continue;
233
+ // Check if target matches pattern
234
+ if (nodePattern.type && targetEntity.type !== nodePattern.type)
235
+ continue;
236
+ if (nodePattern.namePattern &&
237
+ !this.matchNamePattern(targetEntity.name, nodePattern.namePattern))
238
+ continue;
239
+ // Try binding this entity
240
+ const newBindings = new Map(bindings);
241
+ newBindings.set(nodePattern.variable, targetEntity.id);
242
+ const result = this.tryMatchPattern(pattern, nodeIndex + 1, newBindings);
243
+ if (result)
244
+ return result;
245
+ }
246
+ }
247
+ else {
248
+ // No connecting edges, search all matching entities
249
+ const { entities } = this.db.queryEntities({
250
+ type: nodePattern.type,
251
+ namePattern: nodePattern.namePattern,
252
+ }, 100);
253
+ for (const entity of entities) {
254
+ const newBindings = new Map(bindings);
255
+ newBindings.set(nodePattern.variable, entity.id);
256
+ const result = this.tryMatchPattern(pattern, nodeIndex + 1, newBindings);
257
+ if (result)
258
+ return result;
259
+ }
260
+ }
261
+ return null;
262
+ }
263
+ /**
264
+ * Check if name matches pattern
265
+ */
266
+ matchNamePattern(name, pattern) {
267
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
268
+ return regex.test(name);
269
+ }
270
+ /**
271
+ * Find entities by traversing relationships
272
+ */
273
+ traverse(startId, relationshipTypes, direction, maxHops = 5) {
274
+ const result = [];
275
+ const visited = new Set();
276
+ let current = [startId];
277
+ for (let hop = 0; hop < maxHops && current.length > 0; hop++) {
278
+ const next = [];
279
+ for (const entityId of current) {
280
+ if (visited.has(entityId))
281
+ continue;
282
+ visited.add(entityId);
283
+ const rels = this.db.getRelationships(entityId, direction === 'forward' ? 'out' : 'in');
284
+ for (const rel of rels) {
285
+ if (!relationshipTypes.includes(rel.type))
286
+ continue;
287
+ const nextId = direction === 'forward' ? rel.targetId : rel.sourceId;
288
+ if (!visited.has(nextId)) {
289
+ const entity = this.db.getEntity(nextId);
290
+ if (entity) {
291
+ result.push(entity);
292
+ next.push(nextId);
293
+ }
294
+ }
295
+ }
296
+ }
297
+ current = next;
298
+ }
299
+ return result;
300
+ }
301
+ /**
302
+ * Get entity neighbors
303
+ */
304
+ getNeighbors(entityId, options = {}) {
305
+ const direction = options.direction ?? 'both';
306
+ const rels = this.db.getRelationships(entityId, direction);
307
+ const results = [];
308
+ for (const rel of rels) {
309
+ // Filter by relationship type
310
+ if (options.relationshipTypes && !options.relationshipTypes.includes(rel.type)) {
311
+ continue;
312
+ }
313
+ const neighborId = rel.sourceId === entityId ? rel.targetId : rel.sourceId;
314
+ const neighbor = this.db.getEntity(neighborId);
315
+ if (!neighbor)
316
+ continue;
317
+ // Filter by entity type
318
+ if (options.entityTypes && !options.entityTypes.includes(neighbor.type)) {
319
+ continue;
320
+ }
321
+ results.push({ entity: neighbor, relationship: rel });
322
+ }
323
+ return results;
324
+ }
325
+ /**
326
+ * Find all paths between two entities (up to limit)
327
+ */
328
+ findAllPaths(startId, endId, options = {}) {
329
+ const maxDepth = options.maxDepth ?? 5;
330
+ const maxPaths = options.maxPaths ?? 10;
331
+ const paths = [];
332
+ const dfs = (currentId, visited, path, relationships) => {
333
+ if (paths.length >= maxPaths)
334
+ return;
335
+ if (path.length > maxDepth)
336
+ return;
337
+ if (currentId === endId) {
338
+ const entities = path.map(id => this.db.getEntity(id)).filter(Boolean);
339
+ paths.push({
340
+ entities,
341
+ relationships: [...relationships],
342
+ length: relationships.length,
343
+ });
344
+ return;
345
+ }
346
+ const rels = this.db.getRelationships(currentId, 'out');
347
+ for (const rel of rels) {
348
+ if (options.relationshipTypes && !options.relationshipTypes.includes(rel.type)) {
349
+ continue;
350
+ }
351
+ const nextId = rel.targetId;
352
+ if (visited.has(nextId))
353
+ continue;
354
+ visited.add(nextId);
355
+ path.push(nextId);
356
+ relationships.push(rel);
357
+ dfs(nextId, visited, path, relationships);
358
+ visited.delete(nextId);
359
+ path.pop();
360
+ relationships.pop();
361
+ }
362
+ };
363
+ const visited = new Set([startId]);
364
+ dfs(startId, visited, [startId], []);
365
+ return paths;
366
+ }
367
+ }
368
+ //# sourceMappingURL=query-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-engine.js","sourceRoot":"","sources":["../src/query-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * YATA Local - Reasoning Engine
3
+ *
4
+ * @packageDocumentation
5
+ * @module @nahisaho/yata-local/reasoning
6
+ *
7
+ * @see REQ-YL-REASON-001 ~ REQ-YL-REASON-004
8
+ */
9
+ import type { RelationType, InferenceRule, Constraint, ValidationResult } from './types.js';
10
+ import type { YataDatabase } from './database.js';
11
+ import type { QueryEngine } from './query-engine.js';
12
+ /**
13
+ * Inference result from reasoning engine
14
+ */
15
+ export interface InferenceResult {
16
+ /** Inferred relationships */
17
+ inferred: Array<{
18
+ sourceId: string;
19
+ targetId: string;
20
+ type: RelationType;
21
+ confidence: number;
22
+ rule: string;
23
+ }>;
24
+ /** Applied rules */
25
+ appliedRules: string[];
26
+ }
27
+ /**
28
+ * Reasoning engine for inference and constraint validation
29
+ */
30
+ export declare class ReasoningEngine {
31
+ private db;
32
+ private queryEngine;
33
+ private rules;
34
+ private constraints;
35
+ constructor(db: YataDatabase, queryEngine: QueryEngine);
36
+ /**
37
+ * Initialize built-in inference rules
38
+ * @see REQ-YL-REASON-001
39
+ */
40
+ private initializeBuiltInRules;
41
+ /**
42
+ * Initialize built-in constraints
43
+ * @see REQ-YL-REASON-003
44
+ */
45
+ private initializeBuiltInConstraints;
46
+ /**
47
+ * Add custom inference rule
48
+ */
49
+ addRule(rule: InferenceRule): void;
50
+ /**
51
+ * Remove inference rule
52
+ */
53
+ removeRule(ruleId: string): boolean;
54
+ /**
55
+ * Get all rules
56
+ */
57
+ getRules(): InferenceRule[];
58
+ /**
59
+ * Add custom constraint
60
+ */
61
+ addConstraint(constraint: Constraint): void;
62
+ /**
63
+ * Remove constraint
64
+ */
65
+ removeConstraint(constraintId: string): boolean;
66
+ /**
67
+ * Get all constraints
68
+ */
69
+ getConstraints(): Constraint[];
70
+ /**
71
+ * Run inference on the graph
72
+ * @see REQ-YL-REASON-001
73
+ */
74
+ infer(options?: {
75
+ rules?: string[];
76
+ maxIterations?: number;
77
+ }): InferenceResult;
78
+ /**
79
+ * Validate graph against constraints
80
+ * @see REQ-YL-REASON-003
81
+ */
82
+ validate(options?: {
83
+ constraints?: string[];
84
+ }): Promise<ValidationResult>;
85
+ /**
86
+ * Compute confidence score for entity relationship
87
+ * @see REQ-YL-REASON-004
88
+ */
89
+ computeConfidence(sourceId: string, targetId: string, relType: RelationType): number;
90
+ /**
91
+ * Find potential relationships based on structural similarity
92
+ * @see REQ-YL-REASON-002
93
+ */
94
+ suggestRelationships(entityId: string, options?: {
95
+ maxSuggestions?: number;
96
+ minConfidence?: number;
97
+ }): Array<{
98
+ targetId: string;
99
+ type: RelationType;
100
+ confidence: number;
101
+ reason: string;
102
+ }>;
103
+ /**
104
+ * Compute name similarity using Levenshtein distance
105
+ */
106
+ private computeNameSimilarity;
107
+ /**
108
+ * Levenshtein distance calculation
109
+ */
110
+ private levenshteinDistance;
111
+ }
112
+ //# sourceMappingURL=reasoning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning.d.ts","sourceRoot":"","sources":["../src/reasoning.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,QAAQ,EAAE,KAAK,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,YAAY,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,oBAAoB;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,eAAe;IAKxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,WAAW;IALrB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,WAAW,CAAsC;gBAG/C,EAAE,EAAE,YAAY,EAChB,WAAW,EAAE,WAAW;IAMlC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgG9B;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAwHpC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,QAAQ,IAAI,aAAa,EAAE;IAI3B;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;;OAGG;IACH,KAAK,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IAuDlF;;;OAGG;IACG,QAAQ,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2BnF;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM;IAsBpF;;;OAGG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;KACnB,GACL,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAqEtF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAsB5B"}