@iflow-mcp/xexr_mcp-libsql 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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +509 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +327 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/base-tool.d.ts +29 -0
  8. package/dist/lib/base-tool.d.ts.map +1 -0
  9. package/dist/lib/base-tool.js +175 -0
  10. package/dist/lib/base-tool.js.map +1 -0
  11. package/dist/lib/constants.d.ts +26 -0
  12. package/dist/lib/constants.d.ts.map +1 -0
  13. package/dist/lib/constants.js +47 -0
  14. package/dist/lib/constants.js.map +1 -0
  15. package/dist/lib/database.d.ts +39 -0
  16. package/dist/lib/database.d.ts.map +1 -0
  17. package/dist/lib/database.js +284 -0
  18. package/dist/lib/database.js.map +1 -0
  19. package/dist/lib/logger.d.ts +23 -0
  20. package/dist/lib/logger.d.ts.map +1 -0
  21. package/dist/lib/logger.js +124 -0
  22. package/dist/lib/logger.js.map +1 -0
  23. package/dist/lib/server-manager.d.ts +31 -0
  24. package/dist/lib/server-manager.d.ts.map +1 -0
  25. package/dist/lib/server-manager.js +283 -0
  26. package/dist/lib/server-manager.js.map +1 -0
  27. package/dist/schemas/alter-table.d.ts +23 -0
  28. package/dist/schemas/alter-table.d.ts.map +1 -0
  29. package/dist/schemas/alter-table.js +85 -0
  30. package/dist/schemas/alter-table.js.map +1 -0
  31. package/dist/schemas/create-table.d.ts +23 -0
  32. package/dist/schemas/create-table.d.ts.map +1 -0
  33. package/dist/schemas/create-table.js +81 -0
  34. package/dist/schemas/create-table.js.map +1 -0
  35. package/dist/schemas/describe-table.d.ts +26 -0
  36. package/dist/schemas/describe-table.d.ts.map +1 -0
  37. package/dist/schemas/describe-table.js +47 -0
  38. package/dist/schemas/describe-table.js.map +1 -0
  39. package/dist/schemas/list-tables.d.ts +29 -0
  40. package/dist/schemas/list-tables.d.ts.map +1 -0
  41. package/dist/schemas/list-tables.js +37 -0
  42. package/dist/schemas/list-tables.js.map +1 -0
  43. package/dist/schemas/read-query.d.ts +17 -0
  44. package/dist/schemas/read-query.d.ts.map +1 -0
  45. package/dist/schemas/read-query.js +66 -0
  46. package/dist/schemas/read-query.js.map +1 -0
  47. package/dist/schemas/write-query.d.ts +20 -0
  48. package/dist/schemas/write-query.d.ts.map +1 -0
  49. package/dist/schemas/write-query.js +58 -0
  50. package/dist/schemas/write-query.js.map +1 -0
  51. package/dist/tools/alter-table.d.ts +31 -0
  52. package/dist/tools/alter-table.d.ts.map +1 -0
  53. package/dist/tools/alter-table.js +139 -0
  54. package/dist/tools/alter-table.js.map +1 -0
  55. package/dist/tools/create-table.d.ts +31 -0
  56. package/dist/tools/create-table.d.ts.map +1 -0
  57. package/dist/tools/create-table.js +121 -0
  58. package/dist/tools/create-table.js.map +1 -0
  59. package/dist/tools/describe-table.d.ts +30 -0
  60. package/dist/tools/describe-table.d.ts.map +1 -0
  61. package/dist/tools/describe-table.js +165 -0
  62. package/dist/tools/describe-table.js.map +1 -0
  63. package/dist/tools/list-tables.d.ts +32 -0
  64. package/dist/tools/list-tables.d.ts.map +1 -0
  65. package/dist/tools/list-tables.js +210 -0
  66. package/dist/tools/list-tables.js.map +1 -0
  67. package/dist/tools/read-query.d.ts +17 -0
  68. package/dist/tools/read-query.d.ts.map +1 -0
  69. package/dist/tools/read-query.js +112 -0
  70. package/dist/tools/read-query.js.map +1 -0
  71. package/dist/tools/write-query.d.ts +20 -0
  72. package/dist/tools/write-query.d.ts.map +1 -0
  73. package/dist/tools/write-query.js +63 -0
  74. package/dist/tools/write-query.js.map +1 -0
  75. package/dist/types/index.d.ts +50 -0
  76. package/dist/types/index.d.ts.map +1 -0
  77. package/dist/types/index.js +2 -0
  78. package/dist/types/index.js.map +1 -0
  79. package/dist/utils/error-handler.d.ts +22 -0
  80. package/dist/utils/error-handler.d.ts.map +1 -0
  81. package/dist/utils/error-handler.js +85 -0
  82. package/dist/utils/error-handler.js.map +1 -0
  83. package/dist/utils/performance.d.ts +16 -0
  84. package/dist/utils/performance.d.ts.map +1 -0
  85. package/dist/utils/performance.js +40 -0
  86. package/dist/utils/performance.js.map +1 -0
  87. package/package.json +1 -0
@@ -0,0 +1,39 @@
1
+ import { type ResultSet } from '@libsql/client';
2
+ import type { DatabaseConfig, DatabaseConnection, ConnectionPool } from '../types/index.js';
3
+ declare class LibSQLConnection implements DatabaseConnection {
4
+ private config;
5
+ private client;
6
+ private isConnected;
7
+ constructor(config: DatabaseConfig);
8
+ connect(): Promise<void>;
9
+ execute(query: string, params?: any): Promise<ResultSet>;
10
+ transaction<T>(fn: (tx: any) => Promise<T>): Promise<T>;
11
+ close(): Promise<void>;
12
+ isHealthy(): Promise<boolean>;
13
+ }
14
+ declare class LibSQLConnectionPool implements ConnectionPool {
15
+ private connections;
16
+ private availableConnections;
17
+ private config;
18
+ private isShuttingDown;
19
+ constructor(config: DatabaseConfig);
20
+ initialize(): Promise<void>;
21
+ private createConnection;
22
+ private retryWithBackoff;
23
+ getConnection(): Promise<DatabaseConnection>;
24
+ private waitForConnection;
25
+ releaseConnection(connection: DatabaseConnection): void;
26
+ private removeConnection;
27
+ healthCheck(): Promise<boolean>;
28
+ close(): Promise<void>;
29
+ getStatus(): {
30
+ totalConnections: number;
31
+ availableConnections: number;
32
+ isShuttingDown: boolean;
33
+ minConnections: number;
34
+ maxConnections: number;
35
+ };
36
+ }
37
+ export { LibSQLConnection, LibSQLConnectionPool };
38
+ export type { DatabaseConnection, ConnectionPool };
39
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/lib/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI5F,cAAM,gBAAiB,YAAW,kBAAkB;IAItC,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAkB;gBAEjB,MAAM,EAAE,cAAc;IAOpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCxB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAwCxD,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoCvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAQpC;AAED,cAAM,oBAAqB,YAAW,cAAc;IAClD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,MAAM,CAAkF;IAChG,OAAO,CAAC,cAAc,CAAkB;gBAE5B,MAAM,EAAE,cAAc;IAO5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAgBnB,gBAAgB;YAgBhB,gBAAgB;IA4BxB,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;YA6BpC,iBAAiB;IAoB/B,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;YAUzC,gBAAgB;IAoBxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B,SAAS,IAAI;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,OAAO,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB;CASF;AAED,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,284 @@
1
+ import { createClient } from '@libsql/client';
2
+ import { DEFAULT_CONFIG } from './constants.js';
3
+ import { logger } from './logger.js';
4
+ class LibSQLConnection {
5
+ config;
6
+ client;
7
+ isConnected = false;
8
+ constructor(config) {
9
+ this.config = config;
10
+ this.client = createClient({
11
+ url: config.url,
12
+ ...(config.authToken && { authToken: config.authToken })
13
+ });
14
+ }
15
+ async connect() {
16
+ try {
17
+ // Test connection with a simple query
18
+ await this.client.execute('SELECT 1');
19
+ this.isConnected = true;
20
+ logger.info('Database connection established', {
21
+ url: this.config.url,
22
+ authTokenProvided: !!this.config.authToken
23
+ });
24
+ }
25
+ catch (error) {
26
+ this.isConnected = false;
27
+ const errorMessage = error instanceof Error ? error.message : String(error);
28
+ // Provide more helpful error messages for auth-related issues
29
+ if (this.config.authToken && errorMessage.toLowerCase().includes('auth')) {
30
+ logger.error('Database connection failed - authentication error', {
31
+ url: this.config.url,
32
+ authTokenProvided: !!this.config.authToken,
33
+ hint: 'Please verify your auth token is correct and has the necessary permissions'
34
+ }, error);
35
+ }
36
+ else {
37
+ logger.error('Failed to establish database connection', {
38
+ url: this.config.url,
39
+ authTokenProvided: !!this.config.authToken
40
+ }, error);
41
+ }
42
+ throw error;
43
+ }
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ async execute(query, params) {
47
+ if (!this.isConnected) {
48
+ throw new Error('Database connection not established');
49
+ }
50
+ const startTime = Date.now();
51
+ try {
52
+ logger.debug('Executing query', { query, params });
53
+ const result = params && Array.isArray(params) && params.length > 0
54
+ ? await this.client.execute({ sql: query, args: params })
55
+ : await this.client.execute(query);
56
+ const executionTime = Date.now() - startTime;
57
+ logger.debug('Query executed successfully', {
58
+ query,
59
+ executionTime,
60
+ rowsAffected: result.rowsAffected,
61
+ rowsReturned: result.rows.length
62
+ });
63
+ return result;
64
+ }
65
+ catch (error) {
66
+ const executionTime = Date.now() - startTime;
67
+ logger.error('Query execution failed', {
68
+ query,
69
+ params,
70
+ executionTime
71
+ }, error);
72
+ throw error;
73
+ }
74
+ }
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
+ async transaction(fn) {
77
+ if (!this.isConnected) {
78
+ throw new Error('Database connection not established');
79
+ }
80
+ const startTime = Date.now();
81
+ let tx;
82
+ try {
83
+ logger.debug('Starting transaction');
84
+ tx = await this.client.transaction('write');
85
+ const result = await fn(tx);
86
+ await tx.commit();
87
+ const executionTime = Date.now() - startTime;
88
+ logger.debug('Transaction committed successfully', { executionTime });
89
+ return result;
90
+ }
91
+ catch (error) {
92
+ const executionTime = Date.now() - startTime;
93
+ if (tx) {
94
+ try {
95
+ await tx.rollback();
96
+ logger.debug('Transaction rolled back due to error', { executionTime });
97
+ }
98
+ catch (rollbackError) {
99
+ logger.error('Failed to rollback transaction', {}, rollbackError);
100
+ }
101
+ }
102
+ logger.error('Transaction failed and rolled back', { executionTime }, error);
103
+ throw error;
104
+ }
105
+ }
106
+ async close() {
107
+ try {
108
+ this.client.close();
109
+ this.isConnected = false;
110
+ logger.info('Database connection closed');
111
+ }
112
+ catch (error) {
113
+ logger.error('Error closing database connection', {}, error);
114
+ throw error;
115
+ }
116
+ }
117
+ async isHealthy() {
118
+ try {
119
+ await this.client.execute('SELECT 1');
120
+ return true;
121
+ }
122
+ catch {
123
+ return false;
124
+ }
125
+ }
126
+ }
127
+ class LibSQLConnectionPool {
128
+ connections = [];
129
+ availableConnections = [];
130
+ config;
131
+ isShuttingDown = false;
132
+ constructor(config) {
133
+ this.config = {
134
+ ...DEFAULT_CONFIG,
135
+ ...config
136
+ };
137
+ }
138
+ async initialize() {
139
+ logger.info('Initializing connection pool', {
140
+ minConnections: this.config.minConnections,
141
+ maxConnections: this.config.maxConnections
142
+ });
143
+ // Create minimum connections
144
+ for (let i = 0; i < this.config.minConnections; i++) {
145
+ await this.createConnection();
146
+ }
147
+ logger.info('Connection pool initialized', {
148
+ activeConnections: this.connections.length
149
+ });
150
+ }
151
+ async createConnection() {
152
+ if (this.connections.length >= this.config.maxConnections) {
153
+ throw new Error('Maximum connection limit reached');
154
+ }
155
+ const connection = new LibSQLConnection(this.config);
156
+ await this.retryWithBackoff(async () => {
157
+ await connection.connect();
158
+ });
159
+ this.connections.push(connection);
160
+ this.availableConnections.push(connection);
161
+ return connection;
162
+ }
163
+ async retryWithBackoff(operation, maxRetries = 3) {
164
+ let lastError;
165
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
166
+ try {
167
+ await operation();
168
+ return;
169
+ }
170
+ catch (error) {
171
+ lastError = error;
172
+ if (attempt === maxRetries) {
173
+ throw lastError;
174
+ }
175
+ const delay = this.config.retryInterval * attempt;
176
+ logger.warn(`Connection attempt ${attempt} failed, retrying in ${delay}ms`, {
177
+ attempt,
178
+ maxRetries,
179
+ error: lastError.message
180
+ });
181
+ await new Promise(resolve => setTimeout(resolve, delay));
182
+ }
183
+ }
184
+ throw lastError || new Error('Unknown error occurred during retry');
185
+ }
186
+ async getConnection() {
187
+ if (this.isShuttingDown) {
188
+ throw new Error('Connection pool is shutting down');
189
+ }
190
+ // Try to get an available connection
191
+ let connection = this.availableConnections.pop();
192
+ // If no available connections and we haven't reached max, create a new one
193
+ if (!connection && this.connections.length < this.config.maxConnections) {
194
+ connection = await this.createConnection();
195
+ this.availableConnections.pop(); // Remove it from available since we're using it
196
+ }
197
+ // If still no connection, wait for one to become available
198
+ if (!connection) {
199
+ connection = await this.waitForConnection();
200
+ }
201
+ // Verify connection health
202
+ if (!(await connection.isHealthy())) {
203
+ logger.warn('Unhealthy connection detected, creating new one');
204
+ await this.removeConnection(connection);
205
+ return this.getConnection(); // Recursive call to get a healthy connection
206
+ }
207
+ return connection;
208
+ }
209
+ async waitForConnection() {
210
+ return new Promise((resolve, reject) => {
211
+ const timeout = setTimeout(() => {
212
+ reject(new Error('Connection timeout: No connections available'));
213
+ }, this.config.connectionTimeout);
214
+ const checkForConnection = () => {
215
+ const connection = this.availableConnections.pop();
216
+ if (connection) {
217
+ clearTimeout(timeout);
218
+ resolve(connection);
219
+ }
220
+ else {
221
+ setTimeout(checkForConnection, 100); // Check every 100ms
222
+ }
223
+ };
224
+ checkForConnection();
225
+ });
226
+ }
227
+ releaseConnection(connection) {
228
+ const libsqlConnection = connection;
229
+ if (this.connections.includes(libsqlConnection) &&
230
+ !this.availableConnections.includes(libsqlConnection)) {
231
+ this.availableConnections.push(libsqlConnection);
232
+ }
233
+ }
234
+ async removeConnection(connection) {
235
+ // Remove from both arrays
236
+ const connectionIndex = this.connections.indexOf(connection);
237
+ if (connectionIndex > -1) {
238
+ this.connections.splice(connectionIndex, 1);
239
+ }
240
+ const availableIndex = this.availableConnections.indexOf(connection);
241
+ if (availableIndex > -1) {
242
+ this.availableConnections.splice(availableIndex, 1);
243
+ }
244
+ // Close the connection
245
+ try {
246
+ await connection.close();
247
+ }
248
+ catch (error) {
249
+ logger.error('Error closing removed connection', {}, error);
250
+ }
251
+ }
252
+ async healthCheck() {
253
+ try {
254
+ const connection = await this.getConnection();
255
+ const isHealthy = await connection.isHealthy();
256
+ this.releaseConnection(connection);
257
+ return isHealthy;
258
+ }
259
+ catch {
260
+ return false;
261
+ }
262
+ }
263
+ async close() {
264
+ logger.info('Shutting down connection pool');
265
+ this.isShuttingDown = true;
266
+ // Close all connections
267
+ const closePromises = this.connections.map(connection => connection.close());
268
+ await Promise.allSettled(closePromises);
269
+ this.connections = [];
270
+ this.availableConnections = [];
271
+ logger.info('Connection pool shutdown complete');
272
+ }
273
+ getStatus() {
274
+ return {
275
+ totalConnections: this.connections.length,
276
+ availableConnections: this.availableConnections.length,
277
+ isShuttingDown: this.isShuttingDown,
278
+ minConnections: this.config.minConnections,
279
+ maxConnections: this.config.maxConnections
280
+ };
281
+ }
282
+ }
283
+ export { LibSQLConnection, LibSQLConnectionPool };
284
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/lib/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { LogLevel } from '../types/index.js';
2
+ export type LogMode = 'file' | 'console' | 'both' | 'none';
3
+ declare class Logger {
4
+ private logDir;
5
+ private logFile;
6
+ private currentLogLevel;
7
+ private directoryEnsured;
8
+ private logMode;
9
+ constructor(logDir?: string, logLevel?: keyof LogLevel, logMode?: LogMode);
10
+ private ensureLogDirectory;
11
+ private formatLogEntry;
12
+ private shouldLog;
13
+ private writeLog;
14
+ error(message: string, context?: Record<string, unknown>, error?: Error): void;
15
+ warn(message: string, context?: Record<string, unknown>): void;
16
+ info(message: string, context?: Record<string, unknown>): void;
17
+ debug(message: string, context?: Record<string, unknown>): void;
18
+ setLogLevel(level: keyof LogLevel): void;
19
+ getLogFilePath(): string;
20
+ }
21
+ export declare const logger: Logger;
22
+ export { Logger };
23
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,QAAiB,EAAE,OAAO,GAAE,OAAgB;YAQ3E,kBAAkB;IAiBhC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,SAAS;YAOH,QAAQ;IAqCf,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAW9E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU/D,WAAW,CAAC,KAAK,EAAE,MAAM,QAAQ,GAAG,IAAI;IAIxC,cAAc,IAAI,MAAM;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,124 @@
1
+ /* eslint-disable no-console */
2
+ import { appendFile, mkdir } from 'fs/promises';
3
+ import { existsSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { tmpdir } from 'os';
6
+ class Logger {
7
+ logDir;
8
+ logFile;
9
+ currentLogLevel;
10
+ directoryEnsured = false;
11
+ logMode;
12
+ constructor(logDir, logLevel = 'INFO', logMode = 'file') {
13
+ // Use temp directory by default for better cross-platform compatibility
14
+ this.logDir = logDir || join(tmpdir(), 'mcp-libsql-logs');
15
+ this.logFile = join(this.logDir, `mcp-libsql-${new Date().toISOString().split('T')[0]}.log`);
16
+ this.currentLogLevel = logLevel;
17
+ this.logMode = logMode;
18
+ }
19
+ async ensureLogDirectory() {
20
+ if (this.directoryEnsured) {
21
+ return;
22
+ }
23
+ try {
24
+ if (!existsSync(this.logDir)) {
25
+ await mkdir(this.logDir, { recursive: true });
26
+ }
27
+ this.directoryEnsured = true;
28
+ }
29
+ catch (error) {
30
+ // If we can't create the directory, just log to console
31
+ console.warn(`Could not create log directory ${this.logDir}:`, error);
32
+ this.directoryEnsured = false;
33
+ }
34
+ }
35
+ formatLogEntry(entry) {
36
+ const contextStr = entry.context ? ` | Context: ${JSON.stringify(entry.context)}` : '';
37
+ const errorStr = entry.error ? ` | Error: ${entry.error.message}\n${entry.error.stack}` : '';
38
+ return `[${entry.timestamp}] ${entry.level.toUpperCase()}: ${entry.message}${contextStr}${errorStr}\n`;
39
+ }
40
+ shouldLog(level) {
41
+ const levels = ['DEBUG', 'INFO', 'WARN', 'ERROR'];
42
+ const currentIndex = levels.indexOf(this.currentLogLevel);
43
+ const messageIndex = levels.indexOf(level);
44
+ return messageIndex >= currentIndex;
45
+ }
46
+ async writeLog(entry) {
47
+ if (!this.shouldLog(entry.level) || this.logMode === 'none') {
48
+ return;
49
+ }
50
+ const formattedEntry = this.formatLogEntry(entry);
51
+ // Write to console based on log mode
52
+ if (this.logMode === 'console' || this.logMode === 'both') {
53
+ const consoleMethod = entry.level === 'ERROR'
54
+ ? console.error
55
+ : entry.level === 'WARN'
56
+ ? console.warn
57
+ : entry.level === 'DEBUG'
58
+ ? console.debug
59
+ : console.log;
60
+ consoleMethod(formattedEntry.trim());
61
+ }
62
+ // Write to file based on log mode
63
+ if (this.logMode === 'file' || this.logMode === 'both') {
64
+ try {
65
+ await this.ensureLogDirectory();
66
+ if (this.directoryEnsured) {
67
+ await appendFile(this.logFile, formattedEntry);
68
+ }
69
+ }
70
+ catch (error) {
71
+ // Silently fail file logging if we can't write - console logging still works
72
+ if (process.env['NODE_ENV'] !== 'production') {
73
+ console.warn('Failed to write to log file:', error);
74
+ }
75
+ }
76
+ }
77
+ }
78
+ error(message, context, error) {
79
+ const entry = {
80
+ timestamp: new Date().toISOString(),
81
+ level: 'ERROR',
82
+ message,
83
+ ...(context && { context }),
84
+ ...(error && { error })
85
+ };
86
+ this.writeLog(entry).catch(err => console.error('Logger error:', err));
87
+ }
88
+ warn(message, context) {
89
+ const entry = {
90
+ timestamp: new Date().toISOString(),
91
+ level: 'WARN',
92
+ message,
93
+ ...(context && { context })
94
+ };
95
+ this.writeLog(entry).catch(err => console.error('Logger error:', err));
96
+ }
97
+ info(message, context) {
98
+ const entry = {
99
+ timestamp: new Date().toISOString(),
100
+ level: 'INFO',
101
+ message,
102
+ ...(context && { context })
103
+ };
104
+ this.writeLog(entry).catch(err => console.error('Logger error:', err));
105
+ }
106
+ debug(message, context) {
107
+ const entry = {
108
+ timestamp: new Date().toISOString(),
109
+ level: 'DEBUG',
110
+ message,
111
+ ...(context && { context })
112
+ };
113
+ this.writeLog(entry).catch(err => console.error('Logger error:', err));
114
+ }
115
+ setLogLevel(level) {
116
+ this.currentLogLevel = level;
117
+ }
118
+ getLogFilePath() {
119
+ return this.logFile;
120
+ }
121
+ }
122
+ export const logger = new Logger();
123
+ export { Logger };
124
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { DatabaseConfig } from '../types/index.js';
2
+ export interface ServerManagerOptions {
3
+ config: DatabaseConfig;
4
+ enableHotReload?: boolean;
5
+ developmentMode?: boolean;
6
+ }
7
+ export declare class ServerManager {
8
+ private options;
9
+ private server;
10
+ private pool;
11
+ private toolRegistry;
12
+ private transport;
13
+ private isRunning;
14
+ private isShuttingDown;
15
+ constructor(options: ServerManagerOptions);
16
+ start(): Promise<void>;
17
+ stop(): Promise<void>;
18
+ reload(newConfig?: DatabaseConfig): Promise<void>;
19
+ isServerRunning(): boolean;
20
+ getStatus(): {
21
+ running: boolean;
22
+ shuttingDown: boolean;
23
+ poolConnections?: number;
24
+ registeredTools?: number;
25
+ };
26
+ private setupDevelopmentFeatures;
27
+ private createToolRegistry;
28
+ private createMCPServer;
29
+ private cleanup;
30
+ }
31
+ //# sourceMappingURL=server-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../../src/lib/server-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,aAAa;IAQZ,OAAO,CAAC,OAAO;IAP3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAqC;IACjD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;gBAEX,OAAO,EAAE,oBAAoB;IAE3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBrB,MAAM,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvD,eAAe,IAAI,OAAO;IAI1B,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B;IAoBD,OAAO,CAAC,wBAAwB;YA6BlB,kBAAkB;YAoBlB,eAAe;YAsGf,OAAO;CAqCtB"}