@ibm/ibmi-mcp-server 0.1.2 → 0.3.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 (207) hide show
  1. package/README.md +2178 -46
  2. package/dist/config/index.d.ts +2 -0
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/index.js +57 -24
  5. package/dist/config/index.js.map +1 -1
  6. package/dist/config/resolver.d.ts.map +1 -1
  7. package/dist/config/resolver.js.map +1 -1
  8. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +1 -1
  9. package/dist/ibmi-mcp-server/services/connectionPool.js +2 -2
  10. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts +80 -0
  11. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -0
  12. package/dist/ibmi-mcp-server/tools/executeSql.tool.js +356 -0
  13. package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -0
  14. package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts +36 -0
  15. package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts.map +1 -0
  16. package/dist/ibmi-mcp-server/tools/generateSql.tool.js +281 -0
  17. package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -0
  18. package/dist/ibmi-mcp-server/tools/index.d.ts +85 -0
  19. package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -0
  20. package/dist/ibmi-mcp-server/tools/index.js +21 -0
  21. package/dist/ibmi-mcp-server/tools/index.js.map +1 -0
  22. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +9 -0
  23. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -1
  24. package/dist/ibmi-mcp-server/utils/config/configParser.js +58 -0
  25. package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -1
  26. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +1 -1
  27. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -1
  28. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +4 -4
  29. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -1
  30. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +7 -8
  31. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -1
  32. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +0 -8
  33. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -1
  34. package/dist/ibmi-mcp-server/utils/config/toolFactory.js +0 -31
  35. package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -1
  36. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +1 -1
  37. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -1
  38. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +2 -2
  39. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -1
  40. package/dist/ibmi-mcp-server/utils/language/document.d.ts +26 -0
  41. package/dist/ibmi-mcp-server/utils/language/document.d.ts.map +1 -0
  42. package/dist/ibmi-mcp-server/utils/language/document.js +318 -0
  43. package/dist/ibmi-mcp-server/utils/language/document.js.map +1 -0
  44. package/dist/ibmi-mcp-server/utils/language/statement.d.ts +43 -0
  45. package/dist/ibmi-mcp-server/utils/language/statement.d.ts.map +1 -0
  46. package/dist/ibmi-mcp-server/utils/language/statement.js +796 -0
  47. package/dist/ibmi-mcp-server/utils/language/statement.js.map +1 -0
  48. package/dist/ibmi-mcp-server/utils/language/tokens.d.ts +32 -0
  49. package/dist/ibmi-mcp-server/utils/language/tokens.d.ts.map +1 -0
  50. package/dist/ibmi-mcp-server/utils/language/tokens.js +532 -0
  51. package/dist/ibmi-mcp-server/utils/language/tokens.js.map +1 -0
  52. package/dist/ibmi-mcp-server/utils/language/types.d.ts +138 -0
  53. package/dist/ibmi-mcp-server/utils/language/types.d.ts.map +1 -0
  54. package/dist/ibmi-mcp-server/utils/language/types.js +93 -0
  55. package/dist/ibmi-mcp-server/utils/language/types.js.map +1 -0
  56. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts +48 -0
  57. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts.map +1 -0
  58. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js +93 -0
  59. package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js.map +1 -0
  60. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +35 -59
  61. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -1
  62. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +108 -288
  63. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
  64. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts +54 -0
  65. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts.map +1 -0
  66. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js +91 -0
  67. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js.map +1 -0
  68. package/dist/index.js +4 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/mcp-server/tools/index.d.ts +13 -2
  71. package/dist/mcp-server/tools/index.d.ts.map +1 -1
  72. package/dist/mcp-server/tools/index.js +29 -9
  73. package/dist/mcp-server/tools/index.js.map +1 -1
  74. package/dist/mcp-server/tools/utils/index.d.ts +7 -0
  75. package/dist/mcp-server/tools/utils/index.d.ts.map +1 -0
  76. package/dist/mcp-server/tools/utils/index.js +7 -0
  77. package/dist/mcp-server/tools/utils/index.js.map +1 -0
  78. package/dist/mcp-server/tools/utils/tool-factory.d.ts +129 -0
  79. package/dist/mcp-server/tools/utils/tool-factory.d.ts.map +1 -0
  80. package/dist/mcp-server/tools/utils/tool-factory.js +179 -0
  81. package/dist/mcp-server/tools/utils/tool-factory.js.map +1 -0
  82. package/dist/mcp-server/tools/utils/types.d.ts +117 -0
  83. package/dist/mcp-server/tools/utils/types.d.ts.map +1 -0
  84. package/dist/mcp-server/tools/utils/types.js +11 -0
  85. package/dist/mcp-server/tools/utils/types.js.map +1 -0
  86. package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts +26 -0
  87. package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts.map +1 -0
  88. package/dist/mcp-server/transports/core/cleanupTransformStream.js +60 -0
  89. package/dist/mcp-server/transports/core/cleanupTransformStream.js.map +1 -0
  90. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +1 -1
  91. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -1
  92. package/dist/mcp-server/transports/core/statefulTransportManager.js +50 -40
  93. package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -1
  94. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +2 -13
  95. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -1
  96. package/dist/mcp-server/transports/core/statelessTransportManager.js +35 -62
  97. package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -1
  98. package/dist/mcp-server/transports/core/transportRequest.d.ts +1 -2
  99. package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -1
  100. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -1
  101. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +1 -3
  102. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -1
  103. package/dist/utils/internal/logger.d.ts +5 -0
  104. package/dist/utils/internal/logger.d.ts.map +1 -1
  105. package/dist/utils/internal/logger.js +65 -36
  106. package/dist/utils/internal/logger.js.map +1 -1
  107. package/package.json +29 -23
  108. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +0 -9
  109. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +0 -1
  110. package/dist/ibmi-mcp-server/tools/executeSql/index.js +0 -9
  111. package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +0 -1
  112. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +0 -51
  113. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +0 -1
  114. package/dist/ibmi-mcp-server/tools/executeSql/logic.js +0 -179
  115. package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +0 -1
  116. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +0 -52
  117. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +0 -1
  118. package/dist/ibmi-mcp-server/tools/executeSql/registration.js +0 -161
  119. package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +0 -1
  120. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +0 -13
  121. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +0 -1
  122. package/dist/ibmi-mcp-server/tools/generateSql/index.js +0 -13
  123. package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +0 -1
  124. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +0 -64
  125. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +0 -1
  126. package/dist/ibmi-mcp-server/tools/generateSql/logic.js +0 -190
  127. package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +0 -1
  128. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +0 -18
  129. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +0 -1
  130. package/dist/ibmi-mcp-server/tools/generateSql/registration.js +0 -64
  131. package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +0 -1
  132. package/dist/mcp-server/tools/catFactFetcher/index.d.ts +0 -8
  133. package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +0 -1
  134. package/dist/mcp-server/tools/catFactFetcher/index.js +0 -8
  135. package/dist/mcp-server/tools/catFactFetcher/index.js.map +0 -1
  136. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +0 -52
  137. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +0 -1
  138. package/dist/mcp-server/tools/catFactFetcher/logic.js +0 -95
  139. package/dist/mcp-server/tools/catFactFetcher/logic.js.map +0 -1
  140. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +0 -9
  141. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +0 -1
  142. package/dist/mcp-server/tools/catFactFetcher/registration.js +0 -43
  143. package/dist/mcp-server/tools/catFactFetcher/registration.js.map +0 -1
  144. package/dist/mcp-server/tools/echoTool/index.d.ts +0 -13
  145. package/dist/mcp-server/tools/echoTool/index.d.ts.map +0 -1
  146. package/dist/mcp-server/tools/echoTool/index.js +0 -13
  147. package/dist/mcp-server/tools/echoTool/index.js.map +0 -1
  148. package/dist/mcp-server/tools/echoTool/logic.d.ts +0 -69
  149. package/dist/mcp-server/tools/echoTool/logic.d.ts.map +0 -1
  150. package/dist/mcp-server/tools/echoTool/logic.js +0 -119
  151. package/dist/mcp-server/tools/echoTool/logic.js.map +0 -1
  152. package/dist/mcp-server/tools/echoTool/registration.d.ts +0 -9
  153. package/dist/mcp-server/tools/echoTool/registration.d.ts.map +0 -1
  154. package/dist/mcp-server/tools/echoTool/registration.js +0 -45
  155. package/dist/mcp-server/tools/echoTool/registration.js.map +0 -1
  156. package/dist/mcp-server/tools/imageTest/index.d.ts +0 -7
  157. package/dist/mcp-server/tools/imageTest/index.d.ts.map +0 -1
  158. package/dist/mcp-server/tools/imageTest/index.js +0 -7
  159. package/dist/mcp-server/tools/imageTest/index.js.map +0 -1
  160. package/dist/mcp-server/tools/imageTest/logic.d.ts +0 -27
  161. package/dist/mcp-server/tools/imageTest/logic.d.ts.map +0 -1
  162. package/dist/mcp-server/tools/imageTest/logic.js +0 -44
  163. package/dist/mcp-server/tools/imageTest/logic.js.map +0 -1
  164. package/dist/mcp-server/tools/imageTest/registration.d.ts +0 -9
  165. package/dist/mcp-server/tools/imageTest/registration.d.ts.map +0 -1
  166. package/dist/mcp-server/tools/imageTest/registration.js +0 -49
  167. package/dist/mcp-server/tools/imageTest/registration.js.map +0 -1
  168. package/dist/mcp-server/tools/utils/tool-utils.d.ts +0 -43
  169. package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +0 -1
  170. package/dist/mcp-server/tools/utils/tool-utils.js +0 -44
  171. package/dist/mcp-server/tools/utils/tool-utils.js.map +0 -1
  172. package/dist/mcp-server/transports/core/headerUtils.d.ts +0 -27
  173. package/dist/mcp-server/transports/core/headerUtils.d.ts.map +0 -1
  174. package/dist/mcp-server/transports/core/headerUtils.js +0 -53
  175. package/dist/mcp-server/transports/core/headerUtils.js.map +0 -1
  176. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +0 -77
  177. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +0 -1
  178. package/dist/mcp-server/transports/core/honoNodeBridge.js +0 -150
  179. package/dist/mcp-server/transports/core/honoNodeBridge.js.map +0 -1
  180. package/dist/services/duck-db/duckDBConnectionManager.d.ts +0 -55
  181. package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +0 -1
  182. package/dist/services/duck-db/duckDBConnectionManager.js +0 -184
  183. package/dist/services/duck-db/duckDBConnectionManager.js.map +0 -1
  184. package/dist/services/duck-db/duckDBQueryExecutor.d.ts +0 -18
  185. package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +0 -1
  186. package/dist/services/duck-db/duckDBQueryExecutor.js +0 -115
  187. package/dist/services/duck-db/duckDBQueryExecutor.js.map +0 -1
  188. package/dist/services/duck-db/duckDBService.d.ts +0 -27
  189. package/dist/services/duck-db/duckDBService.d.ts.map +0 -1
  190. package/dist/services/duck-db/duckDBService.js +0 -151
  191. package/dist/services/duck-db/duckDBService.js.map +0 -1
  192. package/dist/services/duck-db/types.d.ts +0 -135
  193. package/dist/services/duck-db/types.d.ts.map +0 -1
  194. package/dist/services/duck-db/types.js +0 -6
  195. package/dist/services/duck-db/types.js.map +0 -1
  196. package/dist/services/llm-providers/openRouterProvider.d.ts +0 -36
  197. package/dist/services/llm-providers/openRouterProvider.d.ts.map +0 -1
  198. package/dist/services/llm-providers/openRouterProvider.js +0 -235
  199. package/dist/services/llm-providers/openRouterProvider.js.map +0 -1
  200. package/dist/services/supabase/supabaseClient.d.ts +0 -25
  201. package/dist/services/supabase/supabaseClient.d.ts.map +0 -1
  202. package/dist/services/supabase/supabaseClient.js +0 -68
  203. package/dist/services/supabase/supabaseClient.js.map +0 -1
  204. package/dist/storage/duckdbExample.d.ts +0 -8
  205. package/dist/storage/duckdbExample.d.ts.map +0 -1
  206. package/dist/storage/duckdbExample.js +0 -197
  207. package/dist/storage/duckdbExample.js.map +0 -1
@@ -1,184 +0,0 @@
1
- /**
2
- * @fileoverview Manages DuckDB instance and connection lifecycle.
3
- * @module services/duck-db/duckDBConnectionManager
4
- */
5
- import * as duckdb from "@duckdb/node-api";
6
- import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
7
- import { ErrorHandler, logger, requestContextService, } from "../../utils/index.js";
8
- const DEFAULT_DB_PATH = ":memory:";
9
- export class DuckDBConnectionManager {
10
- dbInstance = null;
11
- dbConnection = null;
12
- isInitialized = false;
13
- currentConfig = null;
14
- /**
15
- * Initializes the DuckDB instance and connection.
16
- * @param {DuckDBServiceConfig} [config] - Configuration for the service.
17
- * @returns {Promise<void>}
18
- */
19
- async initialize(config) {
20
- const context = requestContextService.createRequestContext({
21
- operation: "DuckDBConnectionManager.initialize",
22
- initialData: config,
23
- });
24
- if (this.isInitialized) {
25
- logger.warning(context, "DuckDBConnectionManager already initialized. Close first to re-initialize.");
26
- // Potentially compare new config with old config if re-init with changes is desired
27
- return;
28
- }
29
- this.currentConfig = config || {};
30
- return ErrorHandler.tryCatch(async () => {
31
- const dbPath = this.currentConfig?.dbPath || DEFAULT_DB_PATH;
32
- const launchConfig = this.currentConfig?.launchConfig;
33
- logger.info(context, `Initializing DuckDB instance with path: ${dbPath}`);
34
- // Pass launchConfig directly to the create method
35
- // The exact structure for launchConfig might need verification against @duckdb/node-api docs
36
- // Assuming it takes an object similar to what's in DuckDBServiceConfig
37
- this.dbInstance = await duckdb.DuckDBInstance.create(dbPath, launchConfig || {});
38
- this.dbConnection = await this.dbInstance.connect();
39
- logger.info(context, "DuckDB instance and connection created.");
40
- // Set isInitialized to true now that core components are ready
41
- this.isInitialized = true;
42
- // If launchConfig was successfully passed to create(), this block might no longer be needed
43
- // or might be adjusted for settings that *can* be applied post-connection.
44
- // For now, let's comment it out to avoid the original error.
45
- // if (launchConfig) {
46
- // for (const [key, value] of Object.entries(launchConfig)) {
47
- // // Ensure connection is available for run
48
- // if (!this.dbConnection) {
49
- // throw new McpError(
50
- // BaseErrorCode.INTERNAL_ERROR,
51
- // "Connection not available for applying launch config",
52
- // context,
53
- // );
54
- // }
55
- // await this.dbConnection.run(
56
- // `SET ${key}='${String(value).replace(/'/g, "''")}';`,
57
- // );
58
- // }
59
- // logger.info({
60
- // ...context,
61
- // launchConfig,
62
- // }, "Applied launch configuration via SET commands.");
63
- // }
64
- if (this.currentConfig?.extensions &&
65
- this.currentConfig.extensions.length > 0) {
66
- logger.info({
67
- ...context,
68
- extensions: this.currentConfig.extensions,
69
- }, "Loading extensions...");
70
- for (const extName of this.currentConfig.extensions) {
71
- await this.loadExtension(extName, context);
72
- }
73
- }
74
- // this.isInitialized = true; // Moved earlier
75
- logger.info(context, "DuckDBConnectionManager initialized successfully.");
76
- }, {
77
- operation: "DuckDBConnectionManager.initialize",
78
- context,
79
- input: config,
80
- errorCode: JsonRpcErrorCode.InitializationFailed,
81
- critical: true,
82
- });
83
- }
84
- /**
85
- * Installs and loads a DuckDB extension.
86
- * @param {string} extensionName - The name of the extension.
87
- * @param {RequestContext} parentContext - The parent request context.
88
- * @returns {Promise<void>}
89
- */
90
- async loadExtension(extensionName, parentContext) {
91
- this.ensureInitialized(parentContext);
92
- const context = requestContextService.createRequestContext({
93
- operation: "DuckDBConnectionManager.loadExtension",
94
- initialData: { extensionName },
95
- parentContext,
96
- });
97
- return ErrorHandler.tryCatch(async () => {
98
- logger.info(context, `Installing extension: ${extensionName}`);
99
- await this.dbConnection.run(`INSTALL '${extensionName.replace(/'/g, "''")}'`);
100
- logger.info(context, `Loading extension: ${extensionName}`);
101
- await this.dbConnection.run(`LOAD '${extensionName.replace(/'/g, "''")}'`);
102
- logger.info(context, `Extension ${extensionName} installed and loaded.`);
103
- }, {
104
- operation: "DuckDBConnectionManager.loadExtension",
105
- context,
106
- input: { extensionName },
107
- errorCode: JsonRpcErrorCode.InternalError,
108
- });
109
- }
110
- /**
111
- * Closes the DuckDB connection and instance.
112
- * @returns {Promise<void>}
113
- */
114
- async close() {
115
- const context = requestContextService.createRequestContext({
116
- operation: "DuckDBConnectionManager.close",
117
- });
118
- if (!this.isInitialized) {
119
- logger.warning(context, "DuckDBConnectionManager not initialized, nothing to close.");
120
- return;
121
- }
122
- return ErrorHandler.tryCatch(async () => {
123
- if (this.dbConnection) {
124
- this.dbConnection.closeSync(); // Use synchronous closeSync
125
- this.dbConnection = null;
126
- logger.info(context, "DuckDB connection closed.");
127
- }
128
- if (this.dbInstance) {
129
- this.dbInstance.closeSync(); // Use synchronous closeSync
130
- this.dbInstance = null;
131
- logger.info(context, "DuckDB instance closed.");
132
- }
133
- this.isInitialized = false;
134
- this.currentConfig = null;
135
- logger.info(context, "DuckDBConnectionManager closed successfully.");
136
- }, {
137
- operation: "DuckDBConnectionManager.close",
138
- context,
139
- errorCode: JsonRpcErrorCode.InternalError,
140
- });
141
- }
142
- /**
143
- * Ensures that the service is initialized.
144
- * @param {RequestContext} context - The request context for error reporting.
145
- * @throws {McpError} If the service is not initialized.
146
- */
147
- ensureInitialized(context) {
148
- if (!this.isInitialized || !this.dbConnection || !this.dbInstance) {
149
- throw new McpError(JsonRpcErrorCode.ServiceUnavailable, "DuckDBConnectionManager is not initialized. Call initialize() first.", context);
150
- }
151
- }
152
- /**
153
- * Gets the underlying DuckDB connection object.
154
- * @returns {duckdb.DuckDBConnection}
155
- * @throws {McpError} If the service is not initialized.
156
- */
157
- getConnection() {
158
- const context = requestContextService.createRequestContext({
159
- operation: "DuckDBConnectionManager.getConnection",
160
- });
161
- this.ensureInitialized(context);
162
- return this.dbConnection;
163
- }
164
- /**
165
- * Gets the underlying DuckDB instance object.
166
- * @returns {duckdb.DuckDBInstance}
167
- * @throws {McpError} If the service is not initialized.
168
- */
169
- getInstance() {
170
- const context = requestContextService.createRequestContext({
171
- operation: "DuckDBConnectionManager.getInstance",
172
- });
173
- this.ensureInitialized(context);
174
- return this.dbInstance;
175
- }
176
- /**
177
- * Checks if the service is currently initialized.
178
- * @returns {boolean} True if initialized, false otherwise.
179
- */
180
- get isServiceInitialized() {
181
- return this.isInitialized;
182
- }
183
- }
184
- //# sourceMappingURL=duckDBConnectionManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duckDBConnectionManager.js","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBConnectionManager.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * @fileoverview Executes SQL queries and manages transactions for DuckDB.
3
- * @module services/duck-db/duckDBQueryExecutor
4
- */
5
- import * as duckdb from "@duckdb/node-api";
6
- import { DuckDBQueryResult } from "./types.js";
7
- export declare class DuckDBQueryExecutor {
8
- private dbConnection;
9
- constructor(connection: duckdb.DuckDBConnection);
10
- run(sql: string, params?: duckdb.DuckDBValue[]): Promise<void>;
11
- query<T = Record<string, unknown>>(sql: string, params?: duckdb.DuckDBValue[]): Promise<DuckDBQueryResult<T>>;
12
- stream(sql: string, params?: duckdb.DuckDBValue[]): Promise<duckdb.DuckDBResult>;
13
- prepare(sql: string): Promise<duckdb.DuckDBPreparedStatement>;
14
- beginTransaction(): Promise<void>;
15
- commitTransaction(): Promise<void>;
16
- rollbackTransaction(): Promise<void>;
17
- }
18
- //# sourceMappingURL=duckDBQueryExecutor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duckDBQueryExecutor.d.ts","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBQueryExecutor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAA0B;gBAElC,UAAU,EAAE,MAAM,CAAC,gBAAgB;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9D,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAoCnB,MAAM,CACjB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAwBlB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAoB7D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlD"}
@@ -1,115 +0,0 @@
1
- /**
2
- * @fileoverview Executes SQL queries and manages transactions for DuckDB.
3
- * @module services/duck-db/duckDBQueryExecutor
4
- */
5
- import { JsonRpcErrorCode } from "../../types-global/errors.js";
6
- import { ErrorHandler, logger, requestContextService } from "../../utils/index.js";
7
- export class DuckDBQueryExecutor {
8
- dbConnection;
9
- constructor(connection) {
10
- this.dbConnection = connection;
11
- }
12
- async run(sql, params) {
13
- const context = requestContextService.createRequestContext({
14
- operation: "DuckDBQueryExecutor.run",
15
- initialData: { sql, params },
16
- });
17
- return ErrorHandler.tryCatch(async () => {
18
- logger.debug({ ...context, params }, `Executing SQL (run): ${sql}`);
19
- if (params === undefined) {
20
- await this.dbConnection.run(sql);
21
- }
22
- else {
23
- await this.dbConnection.run(sql, params);
24
- }
25
- }, {
26
- operation: "DuckDBQueryExecutor.run",
27
- context,
28
- input: { sql, params },
29
- errorCode: JsonRpcErrorCode.DatabaseError,
30
- });
31
- }
32
- async query(sql, params) {
33
- const context = requestContextService.createRequestContext({
34
- operation: "DuckDBQueryExecutor.query",
35
- initialData: { sql, params },
36
- });
37
- return ErrorHandler.tryCatch(async () => {
38
- logger.debug({ ...context, params }, `Executing SQL (query): ${sql}`);
39
- const resultObject = await this.stream(sql, params);
40
- const rows = (await resultObject.getRows());
41
- const columnNames = resultObject.columnNames();
42
- const columnTypes = resultObject
43
- .columnTypes()
44
- .map((ct) => ct.typeId);
45
- return {
46
- rows: rows,
47
- columnNames: columnNames,
48
- columnTypes: columnTypes,
49
- rowCount: rows.length,
50
- };
51
- }, {
52
- operation: "DuckDBQueryExecutor.query",
53
- context,
54
- input: { sql, params },
55
- errorCode: JsonRpcErrorCode.DatabaseError,
56
- });
57
- }
58
- async stream(sql, params) {
59
- const context = requestContextService.createRequestContext({
60
- operation: "DuckDBQueryExecutor.stream",
61
- initialData: { sql, params },
62
- });
63
- return ErrorHandler.tryCatch(async () => {
64
- logger.debug({ ...context, params }, `Executing SQL (stream): ${sql}`);
65
- if (params === undefined) {
66
- return this.dbConnection.stream(sql);
67
- }
68
- else {
69
- return this.dbConnection.stream(sql, params);
70
- }
71
- }, {
72
- operation: "DuckDBQueryExecutor.stream",
73
- context,
74
- input: { sql, params },
75
- errorCode: JsonRpcErrorCode.DatabaseError,
76
- });
77
- }
78
- async prepare(sql) {
79
- const context = requestContextService.createRequestContext({
80
- operation: "DuckDBQueryExecutor.prepare",
81
- initialData: { sql },
82
- });
83
- return ErrorHandler.tryCatch(async () => {
84
- logger.debug(context, `Preparing SQL: ${sql}`);
85
- return this.dbConnection.prepare(sql);
86
- }, {
87
- operation: "DuckDBQueryExecutor.prepare",
88
- context,
89
- input: { sql },
90
- errorCode: JsonRpcErrorCode.DatabaseError,
91
- });
92
- }
93
- async beginTransaction() {
94
- const context = requestContextService.createRequestContext({
95
- operation: "DuckDBQueryExecutor.beginTransaction",
96
- });
97
- await this.run("BEGIN TRANSACTION");
98
- logger.info(context, "Transaction started.");
99
- }
100
- async commitTransaction() {
101
- const context = requestContextService.createRequestContext({
102
- operation: "DuckDBQueryExecutor.commitTransaction",
103
- });
104
- await this.run("COMMIT");
105
- logger.info(context, "Transaction committed.");
106
- }
107
- async rollbackTransaction() {
108
- const context = requestContextService.createRequestContext({
109
- operation: "DuckDBQueryExecutor.rollbackTransaction",
110
- });
111
- await this.run("ROLLBACK");
112
- logger.info(context, "Transaction rolled back.");
113
- }
114
- }
115
- //# sourceMappingURL=duckDBQueryExecutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duckDBQueryExecutor.js","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBQueryExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * @fileoverview Implements the DuckDB service for interacting with a DuckDB database.
3
- * @module services/duck-db/duckDBService
4
- */
5
- import * as duckdb from "@duckdb/node-api";
6
- import { DuckDBQueryResult, DuckDBServiceConfig, IDuckDBService } from "./types.js";
7
- export declare class DuckDBService implements IDuckDBService {
8
- private connectionManager;
9
- private queryExecutor;
10
- private isInitialized;
11
- constructor();
12
- initialize(config?: DuckDBServiceConfig): Promise<void>;
13
- private ensureInitialized;
14
- private validateParams;
15
- run(sql: string, params?: unknown[]): Promise<void>;
16
- query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<DuckDBQueryResult<T>>;
17
- stream(sql: string, params?: unknown[]): Promise<duckdb.DuckDBResult>;
18
- prepare(sql: string): Promise<duckdb.DuckDBPreparedStatement>;
19
- beginTransaction(): Promise<void>;
20
- commitTransaction(): Promise<void>;
21
- rollbackTransaction(): Promise<void>;
22
- loadExtension(extensionName: string): Promise<void>;
23
- close(): Promise<void>;
24
- getRawConnection(): duckdb.DuckDBConnection | null;
25
- getRawInstance(): duckdb.DuckDBInstance | null;
26
- }
27
- //# sourceMappingURL=duckDBService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duckDBService.d.ts","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAU3C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,aAAa,CAAS;;IAMxB,UAAU,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC7D,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,cAAc;IAiBhB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAU1B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAUrE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAS7D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,GAAG,IAAI;IAOlD,cAAc,IAAI,MAAM,CAAC,cAAc,GAAG,IAAI;CAM/C"}
@@ -1,151 +0,0 @@
1
- /**
2
- * @fileoverview Implements the DuckDB service for interacting with a DuckDB database.
3
- * @module services/duck-db/duckDBService
4
- */
5
- import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
6
- import { ErrorHandler, logger, requestContextService, } from "../../utils/index.js";
7
- import { DuckDBConnectionManager } from "./duckDBConnectionManager.js";
8
- import { DuckDBQueryExecutor } from "./duckDBQueryExecutor.js";
9
- export class DuckDBService {
10
- connectionManager;
11
- queryExecutor = null;
12
- isInitialized = false;
13
- constructor() {
14
- this.connectionManager = new DuckDBConnectionManager();
15
- }
16
- async initialize(config) {
17
- const context = requestContextService.createRequestContext({
18
- operation: "DuckDBService.initialize",
19
- initialData: config,
20
- });
21
- if (this.isInitialized) {
22
- logger.warning(context, "DuckDBService already initialized. Close first to re-initialize.");
23
- return;
24
- }
25
- return ErrorHandler.tryCatch(async () => {
26
- await this.connectionManager.initialize(config);
27
- const connection = this.connectionManager.getConnection();
28
- this.queryExecutor = new DuckDBQueryExecutor(connection);
29
- this.isInitialized = true;
30
- logger.info(context, "DuckDBService initialized successfully.");
31
- }, {
32
- operation: "DuckDBService.initialize",
33
- context,
34
- input: config,
35
- errorCode: JsonRpcErrorCode.InitializationFailed,
36
- critical: true,
37
- });
38
- }
39
- ensureInitialized(context) {
40
- this.connectionManager.ensureInitialized(context); // Delegate to manager
41
- if (!this.queryExecutor) {
42
- // This check is mostly for type safety, as connectionManager.ensureInitialized should cover it
43
- throw new McpError(JsonRpcErrorCode.ServiceUnavailable, "DuckDBQueryExecutor not available. DuckDBService may not be fully initialized.", context);
44
- }
45
- }
46
- validateParams(params, context) {
47
- if (params === undefined) {
48
- return undefined;
49
- }
50
- if (Array.isArray(params)) {
51
- return params;
52
- }
53
- throw new McpError(JsonRpcErrorCode.InvalidParams, "DuckDB service only supports array-style parameters, not named objects.", context);
54
- }
55
- async run(sql, params) {
56
- const context = requestContextService.createRequestContext({
57
- operation: "DuckDBService.run",
58
- initialData: { sql, params },
59
- });
60
- this.ensureInitialized(context);
61
- const validatedParams = this.validateParams(params, context);
62
- return this.queryExecutor.run(sql, validatedParams);
63
- }
64
- async query(sql, params) {
65
- const context = requestContextService.createRequestContext({
66
- operation: "DuckDBService.query",
67
- initialData: { sql, params },
68
- });
69
- this.ensureInitialized(context);
70
- const validatedParams = this.validateParams(params, context);
71
- return this.queryExecutor.query(sql, validatedParams);
72
- }
73
- async stream(sql, params) {
74
- const context = requestContextService.createRequestContext({
75
- operation: "DuckDBService.stream",
76
- initialData: { sql, params },
77
- });
78
- this.ensureInitialized(context);
79
- const validatedParams = this.validateParams(params, context);
80
- return this.queryExecutor.stream(sql, validatedParams);
81
- }
82
- async prepare(sql) {
83
- const context = requestContextService.createRequestContext({
84
- operation: "DuckDBService.prepare",
85
- initialData: { sql },
86
- });
87
- this.ensureInitialized(context);
88
- return this.queryExecutor.prepare(sql);
89
- }
90
- async beginTransaction() {
91
- const context = requestContextService.createRequestContext({
92
- operation: "DuckDBService.beginTransaction",
93
- });
94
- this.ensureInitialized(context);
95
- return this.queryExecutor.beginTransaction();
96
- }
97
- async commitTransaction() {
98
- const context = requestContextService.createRequestContext({
99
- operation: "DuckDBService.commitTransaction",
100
- });
101
- this.ensureInitialized(context);
102
- return this.queryExecutor.commitTransaction();
103
- }
104
- async rollbackTransaction() {
105
- const context = requestContextService.createRequestContext({
106
- operation: "DuckDBService.rollbackTransaction",
107
- });
108
- this.ensureInitialized(context);
109
- return this.queryExecutor.rollbackTransaction();
110
- }
111
- async loadExtension(extensionName) {
112
- const context = requestContextService.createRequestContext({
113
- operation: "DuckDBService.loadExtension",
114
- initialData: { extensionName },
115
- });
116
- // ensureInitialized is implicitly called by connectionManager.loadExtension
117
- // if we call ensureInitialized here, it uses the service's context,
118
- // but loadExtension in manager will create its own.
119
- // It's better to let the manager handle its own initialization checks.
120
- return this.connectionManager.loadExtension(extensionName, context);
121
- }
122
- async close() {
123
- const context = requestContextService.createRequestContext({
124
- operation: "DuckDBService.close",
125
- });
126
- // No need to check this.isInitialized here, connectionManager.close() handles it.
127
- return ErrorHandler.tryCatch(async () => {
128
- await this.connectionManager.close();
129
- this.queryExecutor = null;
130
- this.isInitialized = false;
131
- logger.info(context, "DuckDBService closed successfully.");
132
- }, {
133
- operation: "DuckDBService.close",
134
- context,
135
- errorCode: JsonRpcErrorCode.InternalError,
136
- });
137
- }
138
- getRawConnection() {
139
- if (this.connectionManager.isServiceInitialized) {
140
- return this.connectionManager.getConnection();
141
- }
142
- return null;
143
- }
144
- getRawInstance() {
145
- if (this.connectionManager.isServiceInitialized) {
146
- return this.connectionManager.getInstance();
147
- }
148
- return null;
149
- }
150
- }
151
- //# sourceMappingURL=duckDBService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duckDBService.js","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBService.ts"],"names":[],"mappings":"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"}