fss-link 1.0.51 → 1.0.53
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/README.md +42 -2
- package/dist/package.json +1 -1
- package/dist/src/config/auth.js +5 -8
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +1 -0
- package/dist/src/config/config.js +5 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/database-utils.d.ts +185 -0
- package/dist/src/config/database-utils.js +295 -0
- package/dist/src/config/database-utils.js.map +1 -0
- package/dist/src/config/database.d.ts +197 -1
- package/dist/src/config/database.js +499 -160
- package/dist/src/config/database.js.map +1 -1
- package/dist/src/config/databaseHealthMonitor.d.ts +86 -0
- package/dist/src/config/databaseHealthMonitor.js +180 -0
- package/dist/src/config/databaseHealthMonitor.js.map +1 -0
- package/dist/src/config/databaseMetrics.d.ts +147 -0
- package/dist/src/config/databaseMetrics.js +369 -0
- package/dist/src/config/databaseMetrics.js.map +1 -0
- package/dist/src/config/databaseMigrations.js +40 -2
- package/dist/src/config/databaseMigrations.js.map +1 -1
- package/dist/src/config/databaseSchemaValidator.d.ts +114 -0
- package/dist/src/config/databaseSchemaValidator.js +499 -0
- package/dist/src/config/databaseSchemaValidator.js.map +1 -0
- package/dist/src/config/providerPersistence.d.ts +7 -0
- package/dist/src/config/providerPersistence.js +14 -7
- package/dist/src/config/providerPersistence.js.map +1 -1
- package/dist/src/gemini.js +35 -2
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/ui/utils/updateCheck.js +1 -1
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/installationInfo.js +16 -0
- package/dist/src/utils/installationInfo.js.map +1 -1
- package/dist/src/utils/installationInfo.test.js +6 -6
- package/dist/src/utils/installationInfo.test.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +18 -4
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Database Schema Validator
|
|
8
|
+
* Validates database schema against expected structure
|
|
9
|
+
*/
|
|
10
|
+
export class DatabaseSchemaValidator {
|
|
11
|
+
expectedSchemas = [];
|
|
12
|
+
expectedVersion = 4; // Current schema version
|
|
13
|
+
constructor() {
|
|
14
|
+
this.initializeExpectedSchemas();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize expected database schemas
|
|
18
|
+
*/
|
|
19
|
+
initializeExpectedSchemas() {
|
|
20
|
+
// Model configurations table
|
|
21
|
+
this.expectedSchemas.push({
|
|
22
|
+
name: 'model_configs',
|
|
23
|
+
columns: [
|
|
24
|
+
{ name: 'id', type: 'INTEGER', nullable: false, primaryKey: true },
|
|
25
|
+
{ name: 'auth_type', type: 'TEXT', nullable: false },
|
|
26
|
+
{ name: 'model_name', type: 'TEXT', nullable: false },
|
|
27
|
+
{ name: 'endpoint_url', type: 'TEXT', nullable: true },
|
|
28
|
+
{ name: 'api_key', type: 'TEXT', nullable: true },
|
|
29
|
+
{ name: 'display_name', type: 'TEXT', nullable: true },
|
|
30
|
+
{ name: 'is_favorite', type: 'BOOLEAN', nullable: false, defaultValue: '0' },
|
|
31
|
+
{ name: 'is_active', type: 'BOOLEAN', nullable: false, defaultValue: '0' },
|
|
32
|
+
{ name: 'last_used', type: 'DATETIME', nullable: true },
|
|
33
|
+
{ name: 'created_at', type: 'DATETIME', nullable: false, defaultValue: 'CURRENT_TIMESTAMP' },
|
|
34
|
+
{ name: 'source', type: 'TEXT', nullable: false, defaultValue: 'db' }
|
|
35
|
+
],
|
|
36
|
+
indexes: [
|
|
37
|
+
{ name: 'idx_model_configs_active_unique', columns: ['auth_type'], unique: true, partial: 'is_active = 1' },
|
|
38
|
+
{ name: 'idx_model_configs_favorite', columns: ['is_favorite', 'last_used'], unique: false, partial: 'is_favorite = 1' },
|
|
39
|
+
{ name: 'idx_model_configs_recent', columns: ['last_used'], unique: false, partial: 'last_used IS NOT NULL' }
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
// User preferences table
|
|
43
|
+
this.expectedSchemas.push({
|
|
44
|
+
name: 'user_preferences',
|
|
45
|
+
columns: [
|
|
46
|
+
{ name: 'key', type: 'TEXT', nullable: false, primaryKey: true },
|
|
47
|
+
{ name: 'value', type: 'TEXT', nullable: false },
|
|
48
|
+
{ name: 'updated_at', type: 'DATETIME', nullable: false, defaultValue: 'CURRENT_TIMESTAMP' }
|
|
49
|
+
],
|
|
50
|
+
indexes: []
|
|
51
|
+
});
|
|
52
|
+
// Custom endpoints table
|
|
53
|
+
this.expectedSchemas.push({
|
|
54
|
+
name: 'custom_endpoints',
|
|
55
|
+
columns: [
|
|
56
|
+
{ name: 'id', type: 'INTEGER', nullable: false, primaryKey: true },
|
|
57
|
+
{ name: 'provider_id', type: 'INTEGER', nullable: false },
|
|
58
|
+
{ name: 'name', type: 'TEXT', nullable: false },
|
|
59
|
+
{ name: 'url', type: 'TEXT', nullable: false },
|
|
60
|
+
{ name: 'description', type: 'TEXT', nullable: true },
|
|
61
|
+
{ name: 'is_default', type: 'BOOLEAN', nullable: false, defaultValue: '0' },
|
|
62
|
+
{ name: 'created_at', type: 'DATETIME', nullable: false, defaultValue: 'CURRENT_TIMESTAMP' }
|
|
63
|
+
],
|
|
64
|
+
indexes: []
|
|
65
|
+
});
|
|
66
|
+
// Provider settings table
|
|
67
|
+
this.expectedSchemas.push({
|
|
68
|
+
name: 'provider_settings',
|
|
69
|
+
columns: [
|
|
70
|
+
{ name: 'id', type: 'INTEGER', nullable: false, primaryKey: true },
|
|
71
|
+
{ name: 'provider_id', type: 'INTEGER', nullable: false },
|
|
72
|
+
{ name: 'setting_key', type: 'TEXT', nullable: false },
|
|
73
|
+
{ name: 'setting_value', type: 'TEXT', nullable: false },
|
|
74
|
+
{ name: 'updated_at', type: 'DATETIME', nullable: false, defaultValue: 'CURRENT_TIMESTAMP' }
|
|
75
|
+
],
|
|
76
|
+
indexes: [
|
|
77
|
+
{ name: 'idx_provider_settings_lookup', columns: ['provider_id', 'setting_key'], unique: false }
|
|
78
|
+
]
|
|
79
|
+
});
|
|
80
|
+
// Provider usage stats table
|
|
81
|
+
this.expectedSchemas.push({
|
|
82
|
+
name: 'provider_usage_stats',
|
|
83
|
+
columns: [
|
|
84
|
+
{ name: 'id', type: 'INTEGER', nullable: false, primaryKey: true },
|
|
85
|
+
{ name: 'provider_id', type: 'INTEGER', nullable: false },
|
|
86
|
+
{ name: 'tokens_used', type: 'INTEGER', nullable: false, defaultValue: '0' },
|
|
87
|
+
{ name: 'session_duration_seconds', type: 'INTEGER', nullable: false, defaultValue: '0' },
|
|
88
|
+
{ name: 'created_at', type: 'DATETIME', nullable: false, defaultValue: 'CURRENT_TIMESTAMP' }
|
|
89
|
+
],
|
|
90
|
+
indexes: [
|
|
91
|
+
{ name: 'idx_provider_usage_stats_aggregation', columns: ['provider_id', 'created_at'], unique: false }
|
|
92
|
+
]
|
|
93
|
+
});
|
|
94
|
+
// Schema info table
|
|
95
|
+
this.expectedSchemas.push({
|
|
96
|
+
name: 'schema_info',
|
|
97
|
+
columns: [
|
|
98
|
+
{ name: 'key', type: 'TEXT', nullable: false, primaryKey: true },
|
|
99
|
+
{ name: 'value', type: 'TEXT', nullable: false },
|
|
100
|
+
{ name: 'updated_at', type: 'DATETIME', nullable: false, defaultValue: 'CURRENT_TIMESTAMP' }
|
|
101
|
+
],
|
|
102
|
+
indexes: []
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validate complete database schema
|
|
107
|
+
*/
|
|
108
|
+
async validateSchema(db) {
|
|
109
|
+
const errors = [];
|
|
110
|
+
const warnings = [];
|
|
111
|
+
try {
|
|
112
|
+
// Get current schema version
|
|
113
|
+
const currentVersion = await this.getCurrentSchemaVersion(db);
|
|
114
|
+
// Check schema version
|
|
115
|
+
if (currentVersion !== this.expectedVersion) {
|
|
116
|
+
errors.push({
|
|
117
|
+
type: 'version_mismatch',
|
|
118
|
+
expected: this.expectedVersion.toString(),
|
|
119
|
+
actual: currentVersion.toString(),
|
|
120
|
+
severity: 'error',
|
|
121
|
+
message: `Schema version mismatch: expected ${this.expectedVersion}, found ${currentVersion}`,
|
|
122
|
+
recommendation: 'Run database migrations to update schema'
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Get actual tables and indexes
|
|
126
|
+
const actualTables = await this.getActualTables(db);
|
|
127
|
+
const actualIndexes = await this.getActualIndexes(db);
|
|
128
|
+
// Validate each expected table
|
|
129
|
+
for (const expectedTable of this.expectedSchemas) {
|
|
130
|
+
await this.validateTable(db, expectedTable, actualTables, actualIndexes, errors, warnings);
|
|
131
|
+
}
|
|
132
|
+
// Check for extra tables
|
|
133
|
+
const expectedTableNames = new Set(this.expectedSchemas.map(t => t.name));
|
|
134
|
+
const extraTables = actualTables.filter(t => !expectedTableNames.has(t.name) && !t.name.startsWith('sqlite_'));
|
|
135
|
+
for (const extraTable of extraTables) {
|
|
136
|
+
warnings.push({
|
|
137
|
+
type: 'extra_table',
|
|
138
|
+
table: extraTable.name,
|
|
139
|
+
message: `Unexpected table found: ${extraTable.name}`,
|
|
140
|
+
recommendation: 'Consider removing if no longer needed'
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
// Check for extra indexes
|
|
144
|
+
const expectedIndexNames = new Set(this.expectedSchemas.flatMap(t => t.indexes.map(i => i.name)));
|
|
145
|
+
const extraIndexes = actualIndexes.filter(i => !expectedIndexNames.has(i.name) &&
|
|
146
|
+
!i.name.startsWith('sqlite_') &&
|
|
147
|
+
!i.name.startsWith('idx_unique_'));
|
|
148
|
+
for (const extraIndex of extraIndexes) {
|
|
149
|
+
warnings.push({
|
|
150
|
+
type: 'extra_index',
|
|
151
|
+
index: extraIndex.name,
|
|
152
|
+
message: `Unexpected index found: ${extraIndex.name}`,
|
|
153
|
+
recommendation: 'Consider removing if no longer needed'
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// Generate summary
|
|
157
|
+
const summary = {
|
|
158
|
+
totalTables: actualTables.length,
|
|
159
|
+
totalIndexes: actualIndexes.length,
|
|
160
|
+
missingTables: errors.filter(e => e.type === 'missing_table').length,
|
|
161
|
+
missingIndexes: errors.filter(e => e.type === 'missing_index').length,
|
|
162
|
+
extraTables: extraTables.length,
|
|
163
|
+
extraIndexes: extraIndexes.length,
|
|
164
|
+
schemaVersion: currentVersion,
|
|
165
|
+
expectedVersion: this.expectedVersion
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
isValid: errors.length === 0,
|
|
169
|
+
errors,
|
|
170
|
+
warnings,
|
|
171
|
+
summary
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
errors.push({
|
|
176
|
+
type: 'constraint_violation',
|
|
177
|
+
expected: 'Valid database structure',
|
|
178
|
+
actual: 'Validation failed',
|
|
179
|
+
severity: 'error',
|
|
180
|
+
message: `Schema validation failed: ${error}`,
|
|
181
|
+
recommendation: 'Check database integrity and run migrations'
|
|
182
|
+
});
|
|
183
|
+
return {
|
|
184
|
+
isValid: false,
|
|
185
|
+
errors,
|
|
186
|
+
warnings,
|
|
187
|
+
summary: {
|
|
188
|
+
totalTables: 0,
|
|
189
|
+
totalIndexes: 0,
|
|
190
|
+
missingTables: 0,
|
|
191
|
+
missingIndexes: 0,
|
|
192
|
+
extraTables: 0,
|
|
193
|
+
extraIndexes: 0,
|
|
194
|
+
schemaVersion: 0,
|
|
195
|
+
expectedVersion: this.expectedVersion
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Validate a specific table
|
|
202
|
+
*/
|
|
203
|
+
async validateTable(db, expectedTable, actualTables, actualIndexes, errors, warnings) {
|
|
204
|
+
// Check if table exists
|
|
205
|
+
const actualTable = actualTables.find(t => t.name === expectedTable.name);
|
|
206
|
+
if (!actualTable) {
|
|
207
|
+
errors.push({
|
|
208
|
+
type: 'missing_table',
|
|
209
|
+
table: expectedTable.name,
|
|
210
|
+
expected: expectedTable.name,
|
|
211
|
+
actual: 'missing',
|
|
212
|
+
severity: 'error',
|
|
213
|
+
message: `Required table '${expectedTable.name}' is missing`,
|
|
214
|
+
recommendation: 'Run database migrations to create missing table'
|
|
215
|
+
});
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// Get table info
|
|
219
|
+
const tableInfo = await this.getTableInfo(db, expectedTable.name);
|
|
220
|
+
// Validate columns
|
|
221
|
+
for (const expectedColumn of expectedTable.columns) {
|
|
222
|
+
const actualColumn = tableInfo.find(c => c.name === expectedColumn.name);
|
|
223
|
+
if (!actualColumn) {
|
|
224
|
+
errors.push({
|
|
225
|
+
type: 'missing_column',
|
|
226
|
+
table: expectedTable.name,
|
|
227
|
+
column: expectedColumn.name,
|
|
228
|
+
expected: `${expectedColumn.name} ${expectedColumn.type}`,
|
|
229
|
+
actual: 'missing',
|
|
230
|
+
severity: 'error',
|
|
231
|
+
message: `Column '${expectedColumn.name}' is missing from table '${expectedTable.name}'`,
|
|
232
|
+
recommendation: 'Run database migrations to add missing column'
|
|
233
|
+
});
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
// Check column type (simplified check)
|
|
237
|
+
if (!this.isTypeCompatible(expectedColumn.type, actualColumn.type)) {
|
|
238
|
+
errors.push({
|
|
239
|
+
type: 'wrong_type',
|
|
240
|
+
table: expectedTable.name,
|
|
241
|
+
column: expectedColumn.name,
|
|
242
|
+
expected: expectedColumn.type,
|
|
243
|
+
actual: actualColumn.type,
|
|
244
|
+
severity: 'error',
|
|
245
|
+
message: `Column '${expectedColumn.name}' has wrong type: expected ${expectedColumn.type}, found ${actualColumn.type}`,
|
|
246
|
+
recommendation: 'Check migration scripts for type consistency'
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
// Check nullable constraint
|
|
250
|
+
if (expectedColumn.nullable === false && actualColumn.notnull === 0) {
|
|
251
|
+
errors.push({
|
|
252
|
+
type: 'constraint_violation',
|
|
253
|
+
table: expectedTable.name,
|
|
254
|
+
column: expectedColumn.name,
|
|
255
|
+
expected: 'NOT NULL',
|
|
256
|
+
actual: 'nullable',
|
|
257
|
+
severity: 'error',
|
|
258
|
+
message: `Column '${expectedColumn.name}' should be NOT NULL`,
|
|
259
|
+
recommendation: 'Update column constraint or migration'
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Validate indexes
|
|
264
|
+
for (const expectedIndex of expectedTable.indexes) {
|
|
265
|
+
const actualIndex = actualIndexes.find(i => i.name === expectedIndex.name);
|
|
266
|
+
if (!actualIndex) {
|
|
267
|
+
errors.push({
|
|
268
|
+
type: 'missing_index',
|
|
269
|
+
table: expectedTable.name,
|
|
270
|
+
index: expectedIndex.name,
|
|
271
|
+
expected: expectedIndex.name,
|
|
272
|
+
actual: 'missing',
|
|
273
|
+
severity: 'error',
|
|
274
|
+
message: `Required index '${expectedIndex.name}' is missing`,
|
|
275
|
+
recommendation: 'Run database migrations to create missing index'
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Get current schema version
|
|
282
|
+
*/
|
|
283
|
+
async getCurrentSchemaVersion(db) {
|
|
284
|
+
try {
|
|
285
|
+
const result = db.exec(`
|
|
286
|
+
SELECT value FROM schema_info WHERE key = 'schema_version'
|
|
287
|
+
`);
|
|
288
|
+
if (result.length > 0 && result[0].values.length > 0) {
|
|
289
|
+
return parseInt(result[0].values[0][0], 10);
|
|
290
|
+
}
|
|
291
|
+
// Fallback: check if any tables exist to determine if this is a legacy database
|
|
292
|
+
const tablesResult = db.exec(`
|
|
293
|
+
SELECT name FROM sqlite_master WHERE type='table' AND name='model_configs'
|
|
294
|
+
`);
|
|
295
|
+
return tablesResult.length > 0 ? 1 : 0; // Legacy or fresh database
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
return 0; // Assume fresh database
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get actual tables in database
|
|
303
|
+
*/
|
|
304
|
+
async getActualTables(db) {
|
|
305
|
+
try {
|
|
306
|
+
const result = db.exec(`
|
|
307
|
+
SELECT name, type FROM sqlite_master
|
|
308
|
+
WHERE type='table'
|
|
309
|
+
ORDER BY name
|
|
310
|
+
`);
|
|
311
|
+
if (result.length === 0)
|
|
312
|
+
return [];
|
|
313
|
+
return result[0].values.map(row => ({
|
|
314
|
+
name: row[0],
|
|
315
|
+
type: row[1]
|
|
316
|
+
}));
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
return [];
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Get actual indexes in database
|
|
324
|
+
*/
|
|
325
|
+
async getActualIndexes(db) {
|
|
326
|
+
try {
|
|
327
|
+
const result = db.exec(`
|
|
328
|
+
SELECT name, tbl_name, [unique] FROM sqlite_master
|
|
329
|
+
WHERE type='index'
|
|
330
|
+
ORDER BY name
|
|
331
|
+
`);
|
|
332
|
+
if (result.length === 0)
|
|
333
|
+
return [];
|
|
334
|
+
return result[0].values.map(row => ({
|
|
335
|
+
name: row[0],
|
|
336
|
+
tableName: row[1],
|
|
337
|
+
unique: Boolean(row[2])
|
|
338
|
+
}));
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
return [];
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get table column information
|
|
346
|
+
*/
|
|
347
|
+
async getTableInfo(db, tableName) {
|
|
348
|
+
try {
|
|
349
|
+
const result = db.exec(`PRAGMA table_info("${tableName}")`);
|
|
350
|
+
if (result.length === 0)
|
|
351
|
+
return [];
|
|
352
|
+
return result[0].values.map(row => ({
|
|
353
|
+
cid: row[0],
|
|
354
|
+
name: row[1],
|
|
355
|
+
type: row[2],
|
|
356
|
+
notnull: row[3],
|
|
357
|
+
dflt_value: row[4],
|
|
358
|
+
pk: row[5]
|
|
359
|
+
}));
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
return [];
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Check if column types are compatible
|
|
367
|
+
*/
|
|
368
|
+
isTypeCompatible(expected, actual) {
|
|
369
|
+
// Normalize types for comparison
|
|
370
|
+
const normalizeType = (type) => {
|
|
371
|
+
return type.toUpperCase()
|
|
372
|
+
.replace(/\(\d+\)/g, '') // Remove length specifiers
|
|
373
|
+
.replace(/\s+/g, ' ')
|
|
374
|
+
.trim();
|
|
375
|
+
};
|
|
376
|
+
const expectedNorm = normalizeType(expected);
|
|
377
|
+
const actualNorm = normalizeType(actual);
|
|
378
|
+
// Direct match
|
|
379
|
+
if (expectedNorm === actualNorm)
|
|
380
|
+
return true;
|
|
381
|
+
// SQLite type affinity rules
|
|
382
|
+
const typeAliases = {
|
|
383
|
+
'INTEGER': ['INT', 'BIGINT', 'SMALLINT', 'TINYINT'],
|
|
384
|
+
'TEXT': ['VARCHAR', 'CHAR', 'STRING', 'CLOB'],
|
|
385
|
+
'REAL': ['FLOAT', 'DOUBLE', 'DECIMAL', 'NUMERIC'],
|
|
386
|
+
'BLOB': ['BINARY', 'VARBINARY'],
|
|
387
|
+
'BOOLEAN': ['BOOL']
|
|
388
|
+
};
|
|
389
|
+
for (const [baseType, aliases] of Object.entries(typeAliases)) {
|
|
390
|
+
if ((expectedNorm === baseType && aliases.includes(actualNorm)) ||
|
|
391
|
+
(actualNorm === baseType && aliases.includes(expectedNorm))) {
|
|
392
|
+
return true;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Validate specific table by name
|
|
399
|
+
*/
|
|
400
|
+
async validateTableSchema(db, tableName) {
|
|
401
|
+
const expectedTable = this.expectedSchemas.find(t => t.name === tableName);
|
|
402
|
+
if (!expectedTable) {
|
|
403
|
+
return {
|
|
404
|
+
isValid: false,
|
|
405
|
+
errors: [{
|
|
406
|
+
type: 'missing_table',
|
|
407
|
+
table: tableName,
|
|
408
|
+
expected: tableName,
|
|
409
|
+
actual: 'unknown',
|
|
410
|
+
severity: 'error',
|
|
411
|
+
message: `No schema definition found for table '${tableName}'`
|
|
412
|
+
}],
|
|
413
|
+
warnings: []
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
const errors = [];
|
|
417
|
+
const warnings = [];
|
|
418
|
+
const actualTables = await this.getActualTables(db);
|
|
419
|
+
const actualIndexes = await this.getActualIndexes(db);
|
|
420
|
+
await this.validateTable(db, expectedTable, actualTables, actualIndexes, errors, warnings);
|
|
421
|
+
return {
|
|
422
|
+
isValid: errors.length === 0,
|
|
423
|
+
errors,
|
|
424
|
+
warnings
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Get schema validation report as formatted text
|
|
429
|
+
*/
|
|
430
|
+
formatValidationReport(result) {
|
|
431
|
+
const lines = [];
|
|
432
|
+
lines.push('=== Database Schema Validation Report ===');
|
|
433
|
+
lines.push('');
|
|
434
|
+
// Summary
|
|
435
|
+
lines.push(`Status: ${result.isValid ? '✅ VALID' : '❌ INVALID'}`);
|
|
436
|
+
lines.push(`Schema Version: ${result.summary.schemaVersion} (expected: ${result.summary.expectedVersion})`);
|
|
437
|
+
lines.push(`Tables: ${result.summary.totalTables} (${result.summary.missingTables} missing, ${result.summary.extraTables} extra)`);
|
|
438
|
+
lines.push(`Indexes: ${result.summary.totalIndexes} (${result.summary.missingIndexes} missing, ${result.summary.extraIndexes} extra)`);
|
|
439
|
+
lines.push('');
|
|
440
|
+
// Errors
|
|
441
|
+
if (result.errors.length > 0) {
|
|
442
|
+
lines.push('🚨 ERRORS:');
|
|
443
|
+
for (const error of result.errors) {
|
|
444
|
+
lines.push(` • ${error.message}`);
|
|
445
|
+
if (error.recommendation) {
|
|
446
|
+
lines.push(` → ${error.recommendation}`);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
lines.push('');
|
|
450
|
+
}
|
|
451
|
+
// Warnings
|
|
452
|
+
if (result.warnings.length > 0) {
|
|
453
|
+
lines.push('⚠️ WARNINGS:');
|
|
454
|
+
for (const warning of result.warnings) {
|
|
455
|
+
lines.push(` • ${warning.message}`);
|
|
456
|
+
if (warning.recommendation) {
|
|
457
|
+
lines.push(` → ${warning.recommendation}`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
lines.push('');
|
|
461
|
+
}
|
|
462
|
+
if (result.isValid && result.warnings.length === 0) {
|
|
463
|
+
lines.push('✅ Database schema is valid and up to date!');
|
|
464
|
+
}
|
|
465
|
+
return lines.join('\n');
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Check if database needs migration
|
|
469
|
+
*/
|
|
470
|
+
async needsMigration(db) {
|
|
471
|
+
try {
|
|
472
|
+
const currentVersion = await this.getCurrentSchemaVersion(db);
|
|
473
|
+
return currentVersion < this.expectedVersion;
|
|
474
|
+
}
|
|
475
|
+
catch (error) {
|
|
476
|
+
return true; // Assume migration needed if we can't determine version
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get missing tables
|
|
481
|
+
*/
|
|
482
|
+
async getMissingTables(db) {
|
|
483
|
+
const actualTables = await this.getActualTables(db);
|
|
484
|
+
const actualTableNames = new Set(actualTables.map(t => t.name));
|
|
485
|
+
return this.expectedSchemas
|
|
486
|
+
.filter(schema => !actualTableNames.has(schema.name))
|
|
487
|
+
.map(schema => schema.name);
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Get missing indexes
|
|
491
|
+
*/
|
|
492
|
+
async getMissingIndexes(db) {
|
|
493
|
+
const actualIndexes = await this.getActualIndexes(db);
|
|
494
|
+
const actualIndexNames = new Set(actualIndexes.map(i => i.name));
|
|
495
|
+
const expectedIndexNames = this.expectedSchemas.flatMap(t => t.indexes.map(i => i.name));
|
|
496
|
+
return expectedIndexNames.filter(name => !actualIndexNames.has(name));
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
//# sourceMappingURL=databaseSchemaValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databaseSchemaValidator.js","sourceRoot":"","sources":["../../../src/config/databaseSchemaValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,32 +44,39 @@ export interface ProviderUsage {
|
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Enhanced provider persistence manager
|
|
47
|
+
* NOTE: This is a legacy interface - use ProviderManager directly instead
|
|
47
48
|
*/
|
|
48
49
|
export declare class ProviderPersistenceManager {
|
|
49
50
|
private static instance;
|
|
50
51
|
static getInstance(): ProviderPersistenceManager;
|
|
51
52
|
/**
|
|
52
53
|
* Save provider configuration with usage tracking
|
|
54
|
+
* @deprecated Use ProviderManager.saveProvider() instead
|
|
53
55
|
*/
|
|
54
56
|
saveProviderConfig(_config: ProviderConfig): Promise<number>;
|
|
55
57
|
/**
|
|
56
58
|
* Get all saved providers with usage statistics
|
|
59
|
+
* @deprecated Use ProviderManager.getAllProviders() instead
|
|
57
60
|
*/
|
|
58
61
|
getAllProviders(): Promise<ProviderConfig[]>;
|
|
59
62
|
/**
|
|
60
63
|
* Get smart default provider based on usage and configuration
|
|
64
|
+
* @deprecated Use ProviderManager.getDefaultProvider() instead
|
|
61
65
|
*/
|
|
62
66
|
getDefaultProvider(): Promise<ProviderConfig | null>;
|
|
63
67
|
/**
|
|
64
68
|
* Track provider usage for intelligent defaults
|
|
69
|
+
* @deprecated Use ProviderManager.recordUsage() instead
|
|
65
70
|
*/
|
|
66
71
|
recordProviderUsage(_providerId: number, _tokens: number, _sessionDuration: number): Promise<void>;
|
|
67
72
|
/**
|
|
68
73
|
* Get custom endpoints for a provider
|
|
74
|
+
* @deprecated Use ProviderManager.getCustomEndpoints() instead
|
|
69
75
|
*/
|
|
70
76
|
getCustomEndpoints(_providerId: number): Promise<CustomEndpoint[]>;
|
|
71
77
|
/**
|
|
72
78
|
* Save custom endpoint
|
|
79
|
+
* @deprecated Use ProviderManager.saveCustomEndpoint() instead
|
|
73
80
|
*/
|
|
74
81
|
saveCustomEndpoint(_endpoint: CustomEndpoint): Promise<number>;
|
|
75
82
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Enhanced provider persistence manager
|
|
8
|
+
* NOTE: This is a legacy interface - use ProviderManager directly instead
|
|
8
9
|
*/
|
|
9
10
|
export class ProviderPersistenceManager {
|
|
10
11
|
static instance;
|
|
@@ -16,40 +17,46 @@ export class ProviderPersistenceManager {
|
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Save provider configuration with usage tracking
|
|
20
|
+
* @deprecated Use ProviderManager.saveProvider() instead
|
|
19
21
|
*/
|
|
20
22
|
async saveProviderConfig(_config) {
|
|
21
|
-
//
|
|
22
|
-
throw new Error('
|
|
23
|
+
// This interface is deprecated - ProviderManager handles this functionality
|
|
24
|
+
throw new Error('ProviderPersistenceManager is deprecated - use ProviderManager instead');
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Get all saved providers with usage statistics
|
|
28
|
+
* @deprecated Use ProviderManager.getAllProviders() instead
|
|
26
29
|
*/
|
|
27
30
|
async getAllProviders() {
|
|
28
|
-
throw new Error('
|
|
31
|
+
throw new Error('ProviderPersistenceManager is deprecated - use ProviderManager instead');
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
31
34
|
* Get smart default provider based on usage and configuration
|
|
35
|
+
* @deprecated Use ProviderManager.getDefaultProvider() instead
|
|
32
36
|
*/
|
|
33
37
|
async getDefaultProvider() {
|
|
34
|
-
throw new Error('
|
|
38
|
+
throw new Error('ProviderPersistenceManager is deprecated - use ProviderManager instead');
|
|
35
39
|
}
|
|
36
40
|
/**
|
|
37
41
|
* Track provider usage for intelligent defaults
|
|
42
|
+
* @deprecated Use ProviderManager.recordUsage() instead
|
|
38
43
|
*/
|
|
39
44
|
async recordProviderUsage(_providerId, _tokens, _sessionDuration) {
|
|
40
|
-
throw new Error('
|
|
45
|
+
throw new Error('ProviderPersistenceManager is deprecated - use ProviderManager instead');
|
|
41
46
|
}
|
|
42
47
|
/**
|
|
43
48
|
* Get custom endpoints for a provider
|
|
49
|
+
* @deprecated Use ProviderManager.getCustomEndpoints() instead
|
|
44
50
|
*/
|
|
45
51
|
async getCustomEndpoints(_providerId) {
|
|
46
|
-
throw new Error('
|
|
52
|
+
throw new Error('ProviderPersistenceManager is deprecated - use ProviderManager instead');
|
|
47
53
|
}
|
|
48
54
|
/**
|
|
49
55
|
* Save custom endpoint
|
|
56
|
+
* @deprecated Use ProviderManager.saveCustomEndpoint() instead
|
|
50
57
|
*/
|
|
51
58
|
async saveCustomEndpoint(_endpoint) {
|
|
52
|
-
throw new Error('
|
|
59
|
+
throw new Error('ProviderPersistenceManager is deprecated - use ProviderManager instead');
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
62
|
//# sourceMappingURL=providerPersistence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerPersistence.js","sourceRoot":"","sources":["../../../src/config/providerPersistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6CH
|
|
1
|
+
{"version":3,"file":"providerPersistence.js","sourceRoot":"","sources":["../../../src/config/providerPersistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6CH;;;GAGG;AACH,MAAM,OAAO,0BAA0B;IAC7B,MAAM,CAAC,QAAQ,CAA6B;IAEpD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;YACzC,0BAA0B,CAAC,QAAQ,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAuB;QAC9C,4EAA4E;QAC5E,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,OAAe,EAAE,gBAAwB;QACtF,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,WAAmB;QAC1C,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,SAAyB;QAChD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;CACF"}
|