@kiyeonjeon21/datacontext 0.3.2 → 0.4.0
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/adapters/sqlite.d.ts.map +1 -1
- package/dist/adapters/sqlite.js +13 -0
- package/dist/adapters/sqlite.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +115 -0
- package/dist/api/server.js.map +1 -1
- package/dist/cli/index.js +58 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/core/context-service.d.ts +63 -0
- package/dist/core/context-service.d.ts.map +1 -1
- package/dist/core/context-service.js +66 -0
- package/dist/core/context-service.js.map +1 -1
- package/dist/core/harvester.d.ts +57 -5
- package/dist/core/harvester.d.ts.map +1 -1
- package/dist/core/harvester.js +86 -6
- package/dist/core/harvester.js.map +1 -1
- package/dist/core/types.d.ts +21 -5
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge/store.d.ts +186 -3
- package/dist/knowledge/store.d.ts.map +1 -1
- package/dist/knowledge/store.js +389 -5
- package/dist/knowledge/store.js.map +1 -1
- package/dist/knowledge/types.d.ts +252 -4
- package/dist/knowledge/types.d.ts.map +1 -1
- package/dist/knowledge/types.js +138 -1
- package/dist/knowledge/types.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +231 -3
- package/dist/mcp/tools.js.map +1 -1
- package/docs/KNOWLEDGE_GRAPH.md +540 -0
- package/docs/KNOWLEDGE_TYPES.md +261 -0
- package/docs/MULTI_DB_ARCHITECTURE.md +319 -0
- package/package.json +1 -1
- package/scripts/create-sqlite-testdb.sh +75 -0
- package/scripts/test-databases.sh +324 -0
- package/sqlite:./test-sqlite.db +0 -0
- package/src/adapters/sqlite.ts +16 -0
- package/src/api/server.ts +134 -0
- package/src/cli/index.ts +57 -16
- package/src/core/context-service.ts +70 -0
- package/src/core/harvester.ts +120 -8
- package/src/core/types.ts +21 -5
- package/src/index.ts +19 -1
- package/src/knowledge/store.ts +480 -6
- package/src/knowledge/types.ts +321 -4
- package/src/mcp/tools.ts +273 -3
- package/test-sqlite.db +0 -0
- package/tests/knowledge-store.test.ts +130 -0
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Knowledge Store
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* Local JSON-based storage for the Knowledge Graph, including:
|
|
5
|
+
* - Table descriptions (nodes)
|
|
6
|
+
* - Table relationships (edges)
|
|
7
|
+
* - Query examples, business rules, and terms (annotations)
|
|
8
|
+
*
|
|
9
|
+
* ## Architecture
|
|
10
|
+
*
|
|
11
|
+
* The Knowledge Store implements a lightweight graph model:
|
|
12
|
+
*
|
|
13
|
+
* ```
|
|
14
|
+
* ┌─────────────────────────────────────────────────────────────────┐
|
|
15
|
+
* │ Knowledge Store │
|
|
16
|
+
* │ │
|
|
17
|
+
* │ Nodes: │
|
|
18
|
+
* │ - TableDescription (with embedded columns) │
|
|
19
|
+
* │ │
|
|
20
|
+
* │ Edges: │
|
|
21
|
+
* │ - TableRelationship (from → to with join condition) │
|
|
22
|
+
* │ │
|
|
23
|
+
* │ Annotations: │
|
|
24
|
+
* │ - QueryExample, BusinessRule, BusinessTerm │
|
|
25
|
+
* │ │
|
|
26
|
+
* └─────────────────────────────────────────────────────────────────┘
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ## Graph Traversal
|
|
30
|
+
*
|
|
31
|
+
* Provides methods for:
|
|
32
|
+
* - Finding related tables (1-hop)
|
|
33
|
+
* - Finding shortest join path (multi-hop BFS)
|
|
34
|
+
* - Detecting relationship types
|
|
35
|
+
*
|
|
36
|
+
* ## Future: SQLite Migration
|
|
37
|
+
*
|
|
38
|
+
* For larger graphs, consider migrating to SQLite embedded storage
|
|
39
|
+
* for better indexing and query performance.
|
|
40
|
+
*
|
|
41
|
+
* @module knowledge/store
|
|
4
42
|
*/
|
|
5
|
-
import type { TableDescription, QueryExample, BusinessRule, BusinessTerm, KnowledgeEntry, ColumnDescription, TermCategory } from './types.js';
|
|
43
|
+
import type { TableDescription, TableRelationship, QueryExample, BusinessRule, BusinessTerm, KnowledgeEntry, ColumnDescription, TermCategory, RelationshipType } from './types.js';
|
|
6
44
|
export declare class KnowledgeStore {
|
|
7
45
|
private dataPath;
|
|
8
46
|
private data;
|
|
@@ -10,7 +48,9 @@ export declare class KnowledgeStore {
|
|
|
10
48
|
constructor(databaseId: string, workspacePath?: string);
|
|
11
49
|
private sanitizeFilename;
|
|
12
50
|
/**
|
|
13
|
-
* Load knowledge data from disk
|
|
51
|
+
* Load knowledge data from disk.
|
|
52
|
+
*
|
|
53
|
+
* Includes automatic migration for older data formats.
|
|
14
54
|
*/
|
|
15
55
|
load(): Promise<void>;
|
|
16
56
|
/**
|
|
@@ -51,6 +91,136 @@ export declare class KnowledgeStore {
|
|
|
51
91
|
exampleValues?: string[];
|
|
52
92
|
valueMappings?: Record<string, string>;
|
|
53
93
|
}): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Get all table relationships.
|
|
96
|
+
*
|
|
97
|
+
* @returns All relationships in the knowledge store
|
|
98
|
+
*/
|
|
99
|
+
getRelationships(): TableRelationship[];
|
|
100
|
+
/**
|
|
101
|
+
* Get tables related to a given table (1-hop traversal).
|
|
102
|
+
*
|
|
103
|
+
* Returns all relationships where the given table is either
|
|
104
|
+
* the source (from) or target (to).
|
|
105
|
+
*
|
|
106
|
+
* @param tableName - Table name to find relationships for
|
|
107
|
+
* @param schema - Schema name (defaults to 'public')
|
|
108
|
+
* @returns Array of relationships involving this table
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const related = store.getRelatedTables('orders', 'public');
|
|
113
|
+
* // Returns relationships like:
|
|
114
|
+
* // - orders → users (FK: orders.user_id → users.id)
|
|
115
|
+
* // - orders → products (FK: orders.product_id → products.id)
|
|
116
|
+
* // - order_items → orders (FK: order_items.order_id → orders.id)
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
getRelatedTables(tableName: string, schema?: string): TableRelationship[];
|
|
120
|
+
/**
|
|
121
|
+
* Get outgoing relationships from a table (where table is the source).
|
|
122
|
+
*
|
|
123
|
+
* @param tableName - Source table name
|
|
124
|
+
* @param schema - Schema name
|
|
125
|
+
* @returns Relationships where this table is the 'from' side
|
|
126
|
+
*/
|
|
127
|
+
getOutgoingRelationships(tableName: string, schema?: string): TableRelationship[];
|
|
128
|
+
/**
|
|
129
|
+
* Get incoming relationships to a table (where table is the target).
|
|
130
|
+
*
|
|
131
|
+
* @param tableName - Target table name
|
|
132
|
+
* @param schema - Schema name
|
|
133
|
+
* @returns Relationships where this table is the 'to' side
|
|
134
|
+
*/
|
|
135
|
+
getIncomingRelationships(tableName: string, schema?: string): TableRelationship[];
|
|
136
|
+
/**
|
|
137
|
+
* Find the shortest join path between two tables.
|
|
138
|
+
*
|
|
139
|
+
* Uses BFS (Breadth-First Search) to find the shortest path
|
|
140
|
+
* through the relationship graph.
|
|
141
|
+
*
|
|
142
|
+
* @param fromTable - Starting table name
|
|
143
|
+
* @param toTable - Destination table name
|
|
144
|
+
* @param schema - Schema name (defaults to 'public')
|
|
145
|
+
* @returns Array of relationships forming the path, or empty if no path exists
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const path = store.findJoinPath('order_items', 'customers');
|
|
150
|
+
* // Returns path like:
|
|
151
|
+
* // [
|
|
152
|
+
* // { from: 'order_items', to: 'orders', joinCondition: '...' },
|
|
153
|
+
* // { from: 'orders', to: 'customers', joinCondition: '...' }
|
|
154
|
+
* // ]
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
findJoinPath(fromTable: string, toTable: string, schema?: string): TableRelationship[];
|
|
158
|
+
/**
|
|
159
|
+
* Get the relationship between two specific tables (if it exists).
|
|
160
|
+
*
|
|
161
|
+
* @param fromTable - Source table
|
|
162
|
+
* @param toTable - Target table
|
|
163
|
+
* @param schema - Schema name
|
|
164
|
+
* @returns Relationship if found, undefined otherwise
|
|
165
|
+
*/
|
|
166
|
+
getRelationshipBetween(fromTable: string, toTable: string, schema?: string): TableRelationship | undefined;
|
|
167
|
+
/**
|
|
168
|
+
* Add a table relationship.
|
|
169
|
+
*
|
|
170
|
+
* @param relationship - Complete relationship object
|
|
171
|
+
* @returns The added relationship
|
|
172
|
+
*/
|
|
173
|
+
addRelationship(relationship: TableRelationship): Promise<TableRelationship>;
|
|
174
|
+
/**
|
|
175
|
+
* Add a relationship from FK information (convenience method).
|
|
176
|
+
*
|
|
177
|
+
* @param params - FK parameters
|
|
178
|
+
* @returns The added relationship
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* await store.addRelationshipFromFK({
|
|
183
|
+
* fromTable: 'orders',
|
|
184
|
+
* fromColumn: 'user_id',
|
|
185
|
+
* toTable: 'users',
|
|
186
|
+
* toColumn: 'id',
|
|
187
|
+
* });
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
addRelationshipFromFK(params: {
|
|
191
|
+
fromTable: string;
|
|
192
|
+
fromSchema?: string;
|
|
193
|
+
fromColumn: string;
|
|
194
|
+
toTable: string;
|
|
195
|
+
toSchema?: string;
|
|
196
|
+
toColumn: string;
|
|
197
|
+
constraintName?: string;
|
|
198
|
+
}): Promise<TableRelationship>;
|
|
199
|
+
/**
|
|
200
|
+
* Add multiple relationships at once (batch operation).
|
|
201
|
+
*
|
|
202
|
+
* @param relationships - Array of relationships to add
|
|
203
|
+
* @returns Number of relationships added
|
|
204
|
+
*/
|
|
205
|
+
addRelationships(relationships: TableRelationship[]): Promise<number>;
|
|
206
|
+
/**
|
|
207
|
+
* Delete a relationship by ID.
|
|
208
|
+
*
|
|
209
|
+
* @param id - Relationship ID to delete
|
|
210
|
+
*/
|
|
211
|
+
deleteRelationship(id: string): Promise<void>;
|
|
212
|
+
/**
|
|
213
|
+
* Get a summary of the relationship graph.
|
|
214
|
+
*
|
|
215
|
+
* @returns Graph statistics
|
|
216
|
+
*/
|
|
217
|
+
getGraphSummary(): {
|
|
218
|
+
nodeCount: number;
|
|
219
|
+
edgeCount: number;
|
|
220
|
+
tablesWithRelationships: number;
|
|
221
|
+
isolatedTables: number;
|
|
222
|
+
relationshipsByType: Record<RelationshipType, number>;
|
|
223
|
+
};
|
|
54
224
|
/**
|
|
55
225
|
* Get all query examples
|
|
56
226
|
*/
|
|
@@ -161,10 +331,23 @@ export declare class KnowledgeStore {
|
|
|
161
331
|
description?: string;
|
|
162
332
|
}>;
|
|
163
333
|
}>;
|
|
334
|
+
relationships: TableRelationship[];
|
|
164
335
|
queryExamples: QueryExample[];
|
|
165
336
|
businessRules: BusinessRule[];
|
|
166
337
|
businessTerms: BusinessTerm[];
|
|
167
338
|
};
|
|
339
|
+
/**
|
|
340
|
+
* Build context including relationships for AI.
|
|
341
|
+
*
|
|
342
|
+
* Enhanced version that includes table relationship information
|
|
343
|
+
* to help AI understand how tables connect.
|
|
344
|
+
*
|
|
345
|
+
* @param tables - Tables to include
|
|
346
|
+
* @param userQuery - Optional user query for term matching
|
|
347
|
+
* @param schema - Optional schema (if not provided, searches all schemas)
|
|
348
|
+
* @returns Formatted context string
|
|
349
|
+
*/
|
|
350
|
+
buildContextWithRelationships(tables: string[], userQuery?: string, schema?: string): string;
|
|
168
351
|
}
|
|
169
352
|
/**
|
|
170
353
|
* Create a knowledge store for a database connection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/knowledge/store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/knowledge/store.ts"],"names":[],"mappings":"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"}
|