@ninebix/nmt-system 1.0.4 → 1.1.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/dashboard-lite/index.html +458 -0
- package/dist/bin/nmt.js +111 -0
- package/dist/bin/nmt.js.map +1 -1
- package/dist/src/api/cli-server.d.ts.map +1 -1
- package/dist/src/api/cli-server.js +229 -30
- package/dist/src/api/cli-server.js.map +1 -1
- package/dist/src/cli/commands/db.d.ts +33 -0
- package/dist/src/cli/commands/db.d.ts.map +1 -0
- package/dist/src/cli/commands/db.js +197 -0
- package/dist/src/cli/commands/db.js.map +1 -0
- package/dist/src/cli/commands/infer.d.ts.map +1 -1
- package/dist/src/cli/commands/infer.js +8 -2
- package/dist/src/cli/commands/infer.js.map +1 -1
- package/dist/src/cli/commands/learn.d.ts.map +1 -1
- package/dist/src/cli/commands/learn.js +25 -1
- package/dist/src/cli/commands/learn.js.map +1 -1
- package/dist/src/cli/commands/sync.d.ts +14 -0
- package/dist/src/cli/commands/sync.d.ts.map +1 -1
- package/dist/src/cli/commands/sync.js +12 -7
- package/dist/src/cli/commands/sync.js.map +1 -1
- package/dist/src/connectors/index.d.ts +11 -0
- package/dist/src/connectors/index.d.ts.map +1 -0
- package/dist/src/connectors/index.js +24 -0
- package/dist/src/connectors/index.js.map +1 -0
- package/dist/src/connectors/mongodb-connector.d.ts +29 -0
- package/dist/src/connectors/mongodb-connector.d.ts.map +1 -0
- package/dist/src/connectors/mongodb-connector.js +286 -0
- package/dist/src/connectors/mongodb-connector.js.map +1 -0
- package/dist/src/connectors/mysql-connector.d.ts +29 -0
- package/dist/src/connectors/mysql-connector.d.ts.map +1 -0
- package/dist/src/connectors/mysql-connector.js +357 -0
- package/dist/src/connectors/mysql-connector.js.map +1 -0
- package/dist/src/connectors/types.d.ts +174 -0
- package/dist/src/connectors/types.d.ts.map +1 -0
- package/dist/src/connectors/types.js +6 -0
- package/dist/src/connectors/types.js.map +1 -0
- package/dist/src/core/attractor-model.d.ts +6 -2
- package/dist/src/core/attractor-model.d.ts.map +1 -1
- package/dist/src/core/attractor-model.js +260 -16
- package/dist/src/core/attractor-model.js.map +1 -1
- package/dist/src/core/hnsw-index.d.ts.map +1 -1
- package/dist/src/core/hnsw-index.js +16 -9
- package/dist/src/core/hnsw-index.js.map +1 -1
- package/dist/src/core/neuron-graph.d.ts +10 -1
- package/dist/src/core/neuron-graph.d.ts.map +1 -1
- package/dist/src/core/neuron-graph.js +10 -1
- package/dist/src/core/neuron-graph.js.map +1 -1
- package/dist/src/core/probabilistic-neuron.d.ts.map +1 -1
- package/dist/src/core/probabilistic-neuron.js +24 -4
- package/dist/src/core/probabilistic-neuron.js.map +1 -1
- package/dist/src/core/probabilistic-orchestrator.d.ts.map +1 -1
- package/dist/src/core/probabilistic-orchestrator.js +17 -13
- package/dist/src/core/probabilistic-orchestrator.js.map +1 -1
- package/dist/src/extensions/clustering/index.d.ts +0 -7
- package/dist/src/extensions/clustering/index.d.ts.map +1 -1
- package/dist/src/extensions/clustering/index.js.map +1 -1
- package/dist/src/mcp/server.js +4 -0
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/services/db-bridge.d.ts +46 -0
- package/dist/src/services/db-bridge.d.ts.map +1 -0
- package/dist/src/services/db-bridge.js +524 -0
- package/dist/src/services/db-bridge.js.map +1 -0
- package/dist/src/services/four-stage-learning.d.ts.map +1 -1
- package/dist/src/services/four-stage-learning.js +20 -9
- package/dist/src/services/four-stage-learning.js.map +1 -1
- package/dist/src/services/ingestion.d.ts +10 -1
- package/dist/src/services/ingestion.d.ts.map +1 -1
- package/dist/src/services/ingestion.js +20 -2
- package/dist/src/services/ingestion.js.map +1 -1
- package/dist/src/services/text-embedding.d.ts +1 -1
- package/dist/src/services/text-embedding.d.ts.map +1 -1
- package/dist/src/services/text-embedding.js +62 -3
- package/dist/src/services/text-embedding.js.map +1 -1
- package/dist/src/storage/neuron-store.d.ts +10 -1
- package/dist/src/storage/neuron-store.d.ts.map +1 -1
- package/dist/src/storage/neuron-store.js +10 -1
- package/dist/src/storage/neuron-store.js.map +1 -1
- package/dist/src/sync/change-journal.d.ts.map +1 -1
- package/dist/src/sync/change-journal.js +63 -37
- package/dist/src/sync/change-journal.js.map +1 -1
- package/dist/src/sync/state-sync.d.ts +5 -0
- package/dist/src/sync/state-sync.d.ts.map +1 -1
- package/dist/src/sync/state-sync.js +9 -2
- package/dist/src/sync/state-sync.js.map +1 -1
- package/dist/src/types/index.d.ts +59 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/utils/hash.d.ts.map +1 -1
- package/dist/src/utils/hash.js +3 -3
- package/dist/src/utils/hash.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MySQL/MariaDB Connector
|
|
3
|
+
* @module connectors/mysql-connector
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* MySQL/MariaDB connector using mysql2/promise
|
|
7
|
+
*/
|
|
8
|
+
export class MySQLConnector {
|
|
9
|
+
pool = null;
|
|
10
|
+
config = null;
|
|
11
|
+
async connect(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
let mysql2;
|
|
14
|
+
try {
|
|
15
|
+
mysql2 = await import('mysql2/promise');
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
throw new Error('mysql2 package not installed. Run: npm install mysql2');
|
|
19
|
+
}
|
|
20
|
+
this.pool = mysql2.createPool({
|
|
21
|
+
host: config.host ?? 'localhost',
|
|
22
|
+
port: config.port ?? 3306,
|
|
23
|
+
user: config.user ?? 'root',
|
|
24
|
+
password: config.password ?? '',
|
|
25
|
+
database: config.database,
|
|
26
|
+
waitForConnections: true,
|
|
27
|
+
connectionLimit: 10,
|
|
28
|
+
connectTimeout: 10000,
|
|
29
|
+
...config.options,
|
|
30
|
+
});
|
|
31
|
+
// Test connection
|
|
32
|
+
const conn = await this.pool.getConnection();
|
|
33
|
+
conn.release();
|
|
34
|
+
}
|
|
35
|
+
async disconnect() {
|
|
36
|
+
if (this.pool) {
|
|
37
|
+
await this.pool.end();
|
|
38
|
+
this.pool = null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async getSchema() {
|
|
42
|
+
this.ensureConnected();
|
|
43
|
+
const [tables] = await this.pool.query(`SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES
|
|
44
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'`, [this.config.database]);
|
|
45
|
+
const tableSchemas = [];
|
|
46
|
+
for (const t of tables) {
|
|
47
|
+
const schema = await this.getTableSchema(t.TABLE_NAME);
|
|
48
|
+
schema.rowCount = Number(t.TABLE_ROWS) || 0;
|
|
49
|
+
tableSchemas.push(schema);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
name: this.config.database,
|
|
53
|
+
tables: tableSchemas,
|
|
54
|
+
driver: this.config.driver,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async getTableSchema(table) {
|
|
58
|
+
this.ensureConnected();
|
|
59
|
+
this.validateIdentifier(table, 'table name');
|
|
60
|
+
// Get columns (COLUMN_TYPE preserves full precision: varchar(255), decimal(10,2), enum(...))
|
|
61
|
+
const [columns] = await this.pool.query(`SELECT COLUMN_NAME, COLUMN_TYPE, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT,
|
|
62
|
+
EXTRA, CHARACTER_MAXIMUM_LENGTH
|
|
63
|
+
FROM INFORMATION_SCHEMA.COLUMNS
|
|
64
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
|
|
65
|
+
ORDER BY ORDINAL_POSITION`, [this.config.database, table]);
|
|
66
|
+
// Get foreign keys
|
|
67
|
+
const [fks] = await this.pool.query(`SELECT COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
|
|
68
|
+
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
|
69
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
|
|
70
|
+
AND REFERENCED_TABLE_NAME IS NOT NULL`, [this.config.database, table]);
|
|
71
|
+
// Get indexes (non-primary)
|
|
72
|
+
const [idxRows] = await this.pool.query(`SELECT INDEX_NAME, COLUMN_NAME, NON_UNIQUE, SEQ_IN_INDEX
|
|
73
|
+
FROM INFORMATION_SCHEMA.STATISTICS
|
|
74
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
|
|
75
|
+
AND INDEX_NAME != 'PRIMARY'
|
|
76
|
+
ORDER BY INDEX_NAME, SEQ_IN_INDEX`, [this.config.database, table]);
|
|
77
|
+
// Get table engine & charset
|
|
78
|
+
const [tableInfo] = await this.pool.query(`SELECT ENGINE, TABLE_COLLATION
|
|
79
|
+
FROM INFORMATION_SCHEMA.TABLES
|
|
80
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?`, [this.config.database, table]);
|
|
81
|
+
const engine = tableInfo[0]?.ENGINE;
|
|
82
|
+
const collation = tableInfo[0]?.TABLE_COLLATION;
|
|
83
|
+
const charset = collation?.split('_')[0]; // e.g. utf8mb4_general_ci → utf8mb4
|
|
84
|
+
const fkMap = new Map();
|
|
85
|
+
for (const fk of fks) {
|
|
86
|
+
fkMap.set(fk.COLUMN_NAME, {
|
|
87
|
+
refTable: fk.REFERENCED_TABLE_NAME,
|
|
88
|
+
refColumn: fk.REFERENCED_COLUMN_NAME,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Build index map (INDEX_NAME → { columns, unique })
|
|
92
|
+
const indexMap = new Map();
|
|
93
|
+
for (const row of idxRows) {
|
|
94
|
+
const name = row.INDEX_NAME;
|
|
95
|
+
if (!indexMap.has(name)) {
|
|
96
|
+
indexMap.set(name, { columns: [], unique: row.NON_UNIQUE === 0 });
|
|
97
|
+
}
|
|
98
|
+
indexMap.get(name).columns.push(row.COLUMN_NAME);
|
|
99
|
+
}
|
|
100
|
+
// Collect unique column set from indexes for isUnique single-column detection
|
|
101
|
+
const uniqueSingleCols = new Set();
|
|
102
|
+
for (const [, idx] of indexMap) {
|
|
103
|
+
if (idx.unique && idx.columns.length === 1) {
|
|
104
|
+
uniqueSingleCols.add(idx.columns[0]);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const columnSchemas = columns.map((col) => {
|
|
108
|
+
const fk = fkMap.get(col.COLUMN_NAME);
|
|
109
|
+
const extra = col.EXTRA;
|
|
110
|
+
return {
|
|
111
|
+
name: col.COLUMN_NAME,
|
|
112
|
+
type: col.COLUMN_TYPE.toUpperCase(),
|
|
113
|
+
nullable: col.IS_NULLABLE === 'YES',
|
|
114
|
+
isPrimary: col.COLUMN_KEY === 'PRI',
|
|
115
|
+
isForeign: !!fk,
|
|
116
|
+
foreignTable: fk?.refTable,
|
|
117
|
+
foreignColumn: fk?.refColumn,
|
|
118
|
+
defaultValue: col.COLUMN_DEFAULT,
|
|
119
|
+
autoIncrement: extra?.includes('auto_increment') ?? false,
|
|
120
|
+
isUnique: col.COLUMN_KEY === 'UNI' || uniqueSingleCols.has(col.COLUMN_NAME),
|
|
121
|
+
maxLength: col.CHARACTER_MAXIMUM_LENGTH != null ? Number(col.CHARACTER_MAXIMUM_LENGTH) : undefined,
|
|
122
|
+
extra: extra || undefined,
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
const primaryKey = columnSchemas
|
|
126
|
+
.filter((c) => c.isPrimary)
|
|
127
|
+
.map((c) => c.name);
|
|
128
|
+
const foreignKeys = columnSchemas
|
|
129
|
+
.filter((c) => c.isForeign)
|
|
130
|
+
.map((c) => ({
|
|
131
|
+
column: c.name,
|
|
132
|
+
refTable: c.foreignTable,
|
|
133
|
+
refColumn: c.foreignColumn,
|
|
134
|
+
}));
|
|
135
|
+
const indexes = Array.from(indexMap.entries()).map(([name, idx]) => ({
|
|
136
|
+
name,
|
|
137
|
+
columns: idx.columns,
|
|
138
|
+
unique: idx.unique,
|
|
139
|
+
}));
|
|
140
|
+
// Get CHECK constraints (MySQL 8.0.16+, graceful fallback)
|
|
141
|
+
let checks = [];
|
|
142
|
+
try {
|
|
143
|
+
const [checkRows] = await this.pool.query(`SELECT cc.CONSTRAINT_NAME, cc.CHECK_CLAUSE
|
|
144
|
+
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS cc
|
|
145
|
+
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
|
|
146
|
+
ON cc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
|
|
147
|
+
AND cc.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA
|
|
148
|
+
WHERE tc.TABLE_SCHEMA = ? AND tc.TABLE_NAME = ?
|
|
149
|
+
AND tc.CONSTRAINT_TYPE = 'CHECK'`, [this.config.database, table]);
|
|
150
|
+
checks = checkRows.map((r) => ({
|
|
151
|
+
name: r.CONSTRAINT_NAME,
|
|
152
|
+
clause: r.CHECK_CLAUSE,
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// CHECK_CONSTRAINTS not available (MySQL < 8.0.16)
|
|
157
|
+
}
|
|
158
|
+
// Get triggers
|
|
159
|
+
let triggers = [];
|
|
160
|
+
try {
|
|
161
|
+
const [trigRows] = await this.pool.query(`SELECT TRIGGER_NAME, ACTION_TIMING, EVENT_MANIPULATION, ACTION_STATEMENT
|
|
162
|
+
FROM INFORMATION_SCHEMA.TRIGGERS
|
|
163
|
+
WHERE TRIGGER_SCHEMA = ? AND EVENT_OBJECT_TABLE = ?`, [this.config.database, table]);
|
|
164
|
+
triggers = trigRows.map((r) => ({
|
|
165
|
+
name: r.TRIGGER_NAME,
|
|
166
|
+
timing: r.ACTION_TIMING,
|
|
167
|
+
event: r.EVENT_MANIPULATION,
|
|
168
|
+
body: r.ACTION_STATEMENT,
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Triggers query failed (permissions or version)
|
|
173
|
+
}
|
|
174
|
+
// Get row count
|
|
175
|
+
const [[countResult]] = await this.pool.query(`SELECT COUNT(*) as cnt FROM \`${table}\``);
|
|
176
|
+
return {
|
|
177
|
+
name: table,
|
|
178
|
+
columns: columnSchemas,
|
|
179
|
+
primaryKey,
|
|
180
|
+
foreignKeys,
|
|
181
|
+
indexes,
|
|
182
|
+
checks,
|
|
183
|
+
triggers,
|
|
184
|
+
engine,
|
|
185
|
+
charset,
|
|
186
|
+
rowCount: Number(countResult.cnt),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async *readRows(table, options = {}) {
|
|
190
|
+
this.ensureConnected();
|
|
191
|
+
this.validateIdentifier(table, 'table name');
|
|
192
|
+
const batchSize = options.batchSize ?? 1000;
|
|
193
|
+
const limit = options.limit;
|
|
194
|
+
let offset = options.offset ?? 0;
|
|
195
|
+
let totalRead = 0;
|
|
196
|
+
while (true) {
|
|
197
|
+
const currentBatch = limit
|
|
198
|
+
? Math.min(batchSize, limit - totalRead)
|
|
199
|
+
: batchSize;
|
|
200
|
+
if (currentBatch <= 0)
|
|
201
|
+
break;
|
|
202
|
+
let query = `SELECT * FROM \`${table}\``;
|
|
203
|
+
const params = [];
|
|
204
|
+
// Note: raw WHERE clause is intentionally not supported to prevent SQL injection.
|
|
205
|
+
// Use structured filters or application-level filtering instead.
|
|
206
|
+
query += ` LIMIT ? OFFSET ?`;
|
|
207
|
+
params.push(currentBatch, offset);
|
|
208
|
+
const [rows] = await this.pool.query(query, params);
|
|
209
|
+
const batch = rows;
|
|
210
|
+
if (batch.length === 0)
|
|
211
|
+
break;
|
|
212
|
+
yield batch;
|
|
213
|
+
totalRead += batch.length;
|
|
214
|
+
offset += batch.length;
|
|
215
|
+
if (batch.length < currentBatch)
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async writeRows(table, rows) {
|
|
220
|
+
this.ensureConnected();
|
|
221
|
+
this.validateIdentifier(table, 'table name');
|
|
222
|
+
if (rows.length === 0)
|
|
223
|
+
return 0;
|
|
224
|
+
const columns = Object.keys(rows[0]);
|
|
225
|
+
const placeholders = columns.map(() => '?').join(', ');
|
|
226
|
+
const columnList = columns.map((c) => `\`${c}\``).join(', ');
|
|
227
|
+
let inserted = 0;
|
|
228
|
+
const batchSize = 500;
|
|
229
|
+
for (let i = 0; i < rows.length; i += batchSize) {
|
|
230
|
+
const batch = rows.slice(i, i + batchSize);
|
|
231
|
+
const values = batch.map((row) => columns.map((c) => row[c]));
|
|
232
|
+
const multiPlaceholders = batch
|
|
233
|
+
.map(() => `(${placeholders})`)
|
|
234
|
+
.join(', ');
|
|
235
|
+
await this.pool.query(`INSERT INTO \`${table}\` (${columnList}) VALUES ${multiPlaceholders}`, values.flat());
|
|
236
|
+
inserted += batch.length;
|
|
237
|
+
}
|
|
238
|
+
return inserted;
|
|
239
|
+
}
|
|
240
|
+
async createTable(schema) {
|
|
241
|
+
this.ensureConnected();
|
|
242
|
+
this.validateIdentifier(schema.name, 'table name');
|
|
243
|
+
const columnDefs = schema.columns.map((col) => {
|
|
244
|
+
let def = `\`${col.name}\` ${this.mapColumnType(col.type)}`;
|
|
245
|
+
if (!col.nullable)
|
|
246
|
+
def += ' NOT NULL';
|
|
247
|
+
if (col.autoIncrement)
|
|
248
|
+
def += ' AUTO_INCREMENT';
|
|
249
|
+
if (col.defaultValue !== undefined && col.defaultValue !== null) {
|
|
250
|
+
def += ` DEFAULT ${this.escapeDefault(col.defaultValue)}`;
|
|
251
|
+
}
|
|
252
|
+
// Restore ON UPDATE clause from extra (e.g. "on update CURRENT_TIMESTAMP")
|
|
253
|
+
if (col.extra) {
|
|
254
|
+
const extraLower = col.extra.toLowerCase();
|
|
255
|
+
const onUpdateIdx = extraLower.indexOf('on update');
|
|
256
|
+
if (onUpdateIdx !== -1) {
|
|
257
|
+
def += ` ${col.extra.substring(onUpdateIdx)}`;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return def;
|
|
261
|
+
});
|
|
262
|
+
if (schema.primaryKey.length > 0) {
|
|
263
|
+
columnDefs.push(`PRIMARY KEY (${schema.primaryKey.map((k) => `\`${k}\``).join(', ')})`);
|
|
264
|
+
}
|
|
265
|
+
// Add UNIQUE/INDEX constraints from indexes
|
|
266
|
+
if (schema.indexes) {
|
|
267
|
+
for (const idx of schema.indexes) {
|
|
268
|
+
const cols = idx.columns.map((c) => `\`${c}\``).join(', ');
|
|
269
|
+
if (idx.unique) {
|
|
270
|
+
columnDefs.push(`UNIQUE KEY \`${idx.name}\` (${cols})`);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
columnDefs.push(`KEY \`${idx.name}\` (${cols})`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
for (const fk of schema.foreignKeys) {
|
|
278
|
+
columnDefs.push(`FOREIGN KEY (\`${fk.column}\`) REFERENCES \`${fk.refTable}\`(\`${fk.refColumn}\`)`);
|
|
279
|
+
}
|
|
280
|
+
// Add CHECK constraints inline
|
|
281
|
+
if (schema.checks) {
|
|
282
|
+
for (const chk of schema.checks) {
|
|
283
|
+
columnDefs.push(`CONSTRAINT \`${chk.name}\` CHECK (${chk.clause})`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const engine = schema.engine ?? 'InnoDB';
|
|
287
|
+
const charset = schema.charset ?? 'utf8mb4';
|
|
288
|
+
const ddl = `CREATE TABLE IF NOT EXISTS \`${schema.name}\` (\n ${columnDefs.join(',\n ')}\n) ENGINE=${engine} DEFAULT CHARSET=${charset}`;
|
|
289
|
+
await this.pool.query(ddl);
|
|
290
|
+
// Create triggers (must be separate statements after table creation)
|
|
291
|
+
if (schema.triggers) {
|
|
292
|
+
for (const trig of schema.triggers) {
|
|
293
|
+
const trigDdl = `CREATE TRIGGER \`${trig.name}\` ${trig.timing} ${trig.event} ON \`${schema.name}\` FOR EACH ROW ${trig.body}`;
|
|
294
|
+
await this.pool.query(trigDdl);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
async tableExists(table) {
|
|
299
|
+
this.ensureConnected();
|
|
300
|
+
this.validateIdentifier(table, 'table name');
|
|
301
|
+
const [rows] = await this.pool.query(`SELECT 1 FROM INFORMATION_SCHEMA.TABLES
|
|
302
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?`, [this.config.database, table]);
|
|
303
|
+
return rows.length > 0;
|
|
304
|
+
}
|
|
305
|
+
ensureConnected() {
|
|
306
|
+
if (!this.pool) {
|
|
307
|
+
throw new Error('Not connected. Call connect() first.');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Validate identifier (table/column name) to prevent SQL injection.
|
|
312
|
+
* Only allows alphanumeric, underscores, hyphens, and dots.
|
|
313
|
+
*/
|
|
314
|
+
validateIdentifier(name, label = 'identifier') {
|
|
315
|
+
if (!name || !/^[a-zA-Z0-9_\-\.]+$/.test(name)) {
|
|
316
|
+
throw new Error(`Invalid ${label}: "${name}". Only alphanumeric, underscores, hyphens, and dots are allowed.`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
mapColumnType(type) {
|
|
320
|
+
const t = type.toUpperCase();
|
|
321
|
+
// Pass through common MySQL types; add BLOB for binary
|
|
322
|
+
const typeMap = {
|
|
323
|
+
STRING: 'TEXT',
|
|
324
|
+
NUMBER: 'DOUBLE',
|
|
325
|
+
BOOLEAN: 'BOOLEAN',
|
|
326
|
+
BLOB: 'LONGBLOB',
|
|
327
|
+
ARRAY: 'JSON',
|
|
328
|
+
OBJECT: 'JSON',
|
|
329
|
+
};
|
|
330
|
+
return typeMap[t] ?? t;
|
|
331
|
+
}
|
|
332
|
+
escapeDefault(value) {
|
|
333
|
+
if (typeof value === 'string') {
|
|
334
|
+
// Known SQL functions/keywords that must NOT be quoted
|
|
335
|
+
const upper = value.toUpperCase().trim();
|
|
336
|
+
if (upper === 'CURRENT_TIMESTAMP' ||
|
|
337
|
+
upper === 'CURRENT_DATE' ||
|
|
338
|
+
upper === 'CURRENT_TIME' ||
|
|
339
|
+
upper === 'NOW()' ||
|
|
340
|
+
upper === 'UUID()' ||
|
|
341
|
+
upper === 'NULL' ||
|
|
342
|
+
upper === 'TRUE' ||
|
|
343
|
+
upper === 'FALSE' ||
|
|
344
|
+
upper.startsWith('(') // Expression defaults e.g. (UUID()), (0)
|
|
345
|
+
) {
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
349
|
+
}
|
|
350
|
+
if (typeof value === 'number')
|
|
351
|
+
return String(value);
|
|
352
|
+
if (typeof value === 'boolean')
|
|
353
|
+
return value ? 'TRUE' : 'FALSE';
|
|
354
|
+
return 'NULL';
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=mysql-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-connector.js","sourceRoot":"","sources":["../../../src/connectors/mysql-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DB Connector Types — Common interfaces for external database connectors
|
|
3
|
+
* @module connectors/types
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Supported database driver types
|
|
7
|
+
*/
|
|
8
|
+
export type DriverType = 'mysql' | 'mariadb' | 'mongodb';
|
|
9
|
+
/**
|
|
10
|
+
* Database connection configuration
|
|
11
|
+
*/
|
|
12
|
+
export interface DBConnectionConfig {
|
|
13
|
+
driver: DriverType;
|
|
14
|
+
host?: string;
|
|
15
|
+
port?: number;
|
|
16
|
+
user?: string;
|
|
17
|
+
password?: string;
|
|
18
|
+
database: string;
|
|
19
|
+
uri?: string;
|
|
20
|
+
options?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Column schema information
|
|
24
|
+
*/
|
|
25
|
+
export interface ColumnSchema {
|
|
26
|
+
name: string;
|
|
27
|
+
type: string;
|
|
28
|
+
nullable: boolean;
|
|
29
|
+
isPrimary: boolean;
|
|
30
|
+
isForeign: boolean;
|
|
31
|
+
foreignTable?: string;
|
|
32
|
+
foreignColumn?: string;
|
|
33
|
+
defaultValue?: unknown;
|
|
34
|
+
autoIncrement?: boolean;
|
|
35
|
+
isUnique?: boolean;
|
|
36
|
+
maxLength?: number;
|
|
37
|
+
extra?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Table index/unique constraint
|
|
41
|
+
*/
|
|
42
|
+
export interface TableIndex {
|
|
43
|
+
name: string;
|
|
44
|
+
columns: string[];
|
|
45
|
+
unique: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* CHECK constraint
|
|
49
|
+
*/
|
|
50
|
+
export interface CheckConstraint {
|
|
51
|
+
name: string;
|
|
52
|
+
clause: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Table trigger
|
|
56
|
+
*/
|
|
57
|
+
export interface TableTrigger {
|
|
58
|
+
name: string;
|
|
59
|
+
timing: 'BEFORE' | 'AFTER';
|
|
60
|
+
event: 'INSERT' | 'UPDATE' | 'DELETE';
|
|
61
|
+
body: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Table/collection schema
|
|
65
|
+
*/
|
|
66
|
+
export interface TableSchema {
|
|
67
|
+
name: string;
|
|
68
|
+
columns: ColumnSchema[];
|
|
69
|
+
primaryKey: string[];
|
|
70
|
+
foreignKeys: Array<{
|
|
71
|
+
column: string;
|
|
72
|
+
refTable: string;
|
|
73
|
+
refColumn: string;
|
|
74
|
+
}>;
|
|
75
|
+
indexes?: TableIndex[];
|
|
76
|
+
checks?: CheckConstraint[];
|
|
77
|
+
triggers?: TableTrigger[];
|
|
78
|
+
engine?: string;
|
|
79
|
+
charset?: string;
|
|
80
|
+
rowCount: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Full database schema
|
|
84
|
+
*/
|
|
85
|
+
export interface DatabaseSchema {
|
|
86
|
+
name: string;
|
|
87
|
+
tables: TableSchema[];
|
|
88
|
+
driver: DriverType;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generic database row
|
|
92
|
+
*/
|
|
93
|
+
export interface DBRow {
|
|
94
|
+
[column: string]: unknown;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Read options for row streaming
|
|
98
|
+
*/
|
|
99
|
+
export interface ReadOptions {
|
|
100
|
+
limit?: number;
|
|
101
|
+
offset?: number;
|
|
102
|
+
/**
|
|
103
|
+
* @deprecated Raw where clauses are disabled to prevent SQL/NoSQL injection.
|
|
104
|
+
* Use application-level filtering instead. MongoDB connector sanitizes operator keys.
|
|
105
|
+
*/
|
|
106
|
+
where?: string;
|
|
107
|
+
batchSize?: number;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Database connector interface — all drivers implement this
|
|
111
|
+
*/
|
|
112
|
+
export interface IDBConnector {
|
|
113
|
+
/** Connect to the database */
|
|
114
|
+
connect(config: DBConnectionConfig): Promise<void>;
|
|
115
|
+
/** Disconnect from the database */
|
|
116
|
+
disconnect(): Promise<void>;
|
|
117
|
+
/** Get full database schema (all tables/collections) */
|
|
118
|
+
getSchema(): Promise<DatabaseSchema>;
|
|
119
|
+
/** Get schema for a single table/collection */
|
|
120
|
+
getTableSchema(table: string): Promise<TableSchema>;
|
|
121
|
+
/** Stream rows in batches from a table */
|
|
122
|
+
readRows(table: string, options?: ReadOptions): AsyncGenerator<DBRow[], void, unknown>;
|
|
123
|
+
/** Write rows to a table (returns inserted count) */
|
|
124
|
+
writeRows(table: string, rows: DBRow[]): Promise<number>;
|
|
125
|
+
/** Create a table from schema definition */
|
|
126
|
+
createTable(schema: TableSchema): Promise<void>;
|
|
127
|
+
/** Check if a table exists */
|
|
128
|
+
tableExists(table: string): Promise<boolean>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Import options
|
|
132
|
+
*/
|
|
133
|
+
export interface ImportOptions {
|
|
134
|
+
table: string;
|
|
135
|
+
limit?: number;
|
|
136
|
+
batchSize?: number;
|
|
137
|
+
tags?: string[];
|
|
138
|
+
autoConnect?: boolean;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Import result
|
|
142
|
+
*/
|
|
143
|
+
export interface ImportResult {
|
|
144
|
+
neuronsCreated: number;
|
|
145
|
+
synapsesCreated: number;
|
|
146
|
+
rowsProcessed: number;
|
|
147
|
+
errors: string[];
|
|
148
|
+
duration: number;
|
|
149
|
+
sourceTable: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Export options
|
|
153
|
+
*/
|
|
154
|
+
export interface ExportOptions {
|
|
155
|
+
table?: string;
|
|
156
|
+
tags?: string[];
|
|
157
|
+
limit?: number;
|
|
158
|
+
includeEmbeddings?: boolean;
|
|
159
|
+
includeSynapses?: boolean;
|
|
160
|
+
/** Export original source columns instead of neuron metadata */
|
|
161
|
+
restoreSourceData?: boolean;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Export result
|
|
165
|
+
*/
|
|
166
|
+
export interface ExportResult {
|
|
167
|
+
neuronsExported: number;
|
|
168
|
+
synapsesExported: number;
|
|
169
|
+
tablesCreated: string[];
|
|
170
|
+
duration: number;
|
|
171
|
+
/** Number of neurons exported with original source data */
|
|
172
|
+
sourceDataRestored?: number;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/connectors/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,mCAAmC;IACnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,wDAAwD;IACxD,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAErC,+CAA+C;IAC/C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEvF,qDAAqD;IACrD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD,4CAA4C;IAC5C,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/connectors/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -282,13 +282,17 @@ export declare class AttractorModel {
|
|
|
282
282
|
*/
|
|
283
283
|
findAlternativePaths(currentNeuronId: UUID, attractorId: UUID, k?: number, maxDepth?: number): Promise<AStarResult[]>;
|
|
284
284
|
/**
|
|
285
|
-
* A* search with path exclusion for k-best paths
|
|
285
|
+
* A* search with path exclusion for k-best paths (Yen's algorithm variant)
|
|
286
|
+
*
|
|
287
|
+
* Penalizes edges used by excluded paths to force exploration of alternatives.
|
|
286
288
|
*/
|
|
287
289
|
private aStarSearchWithExclusion;
|
|
288
290
|
/**
|
|
289
291
|
* Bidirectional A* search for faster pathfinding
|
|
290
292
|
*
|
|
291
|
-
*
|
|
293
|
+
* Runs forward A* from start and backward BFS from the goal's nearest neurons,
|
|
294
|
+
* meeting in the middle for faster convergence on large graphs.
|
|
295
|
+
* Falls back to standard A* when no backward anchors can be identified.
|
|
292
296
|
*/
|
|
293
297
|
bidirectionalAStarSearch(startId: UUID, attractorId: UUID, maxDepth?: number): Promise<AStarResult>;
|
|
294
298
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attractor-model.d.ts","sourceRoot":"","sources":["../../../src/core/attractor-model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"attractor-model.d.ts","sourceRoot":"","sources":["../../../src/core/attractor-model.ts"],"names":[],"mappings":"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"}
|