@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.
- package/README.md +2178 -46
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +57 -24
- package/dist/config/index.js.map +1 -1
- package/dist/config/resolver.d.ts.map +1 -1
- package/dist/config/resolver.js.map +1 -1
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +1 -1
- package/dist/ibmi-mcp-server/services/connectionPool.js +2 -2
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts +80 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js +356 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts +36 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.js +281 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts +85 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/index.js +21 -0
- package/dist/ibmi-mcp-server/tools/index.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +9 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/configParser.js +58 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +4 -4
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +7 -8
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +0 -8
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js +0 -31
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +2 -2
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/language/document.d.ts +26 -0
- package/dist/ibmi-mcp-server/utils/language/document.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/document.js +318 -0
- package/dist/ibmi-mcp-server/utils/language/document.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/statement.d.ts +43 -0
- package/dist/ibmi-mcp-server/utils/language/statement.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/statement.js +796 -0
- package/dist/ibmi-mcp-server/utils/language/statement.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.d.ts +32 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.js +532 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/types.d.ts +138 -0
- package/dist/ibmi-mcp-server/utils/language/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/types.js +93 -0
- package/dist/ibmi-mcp-server/utils/language/types.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts +48 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js +93 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +35 -59
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +108 -288
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts +54 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js +91 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js.map +1 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/index.d.ts +13 -2
- package/dist/mcp-server/tools/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/index.js +29 -9
- package/dist/mcp-server/tools/index.js.map +1 -1
- package/dist/mcp-server/tools/utils/index.d.ts +7 -0
- package/dist/mcp-server/tools/utils/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/index.js +7 -0
- package/dist/mcp-server/tools/utils/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/tool-factory.d.ts +129 -0
- package/dist/mcp-server/tools/utils/tool-factory.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/tool-factory.js +179 -0
- package/dist/mcp-server/tools/utils/tool-factory.js.map +1 -0
- package/dist/mcp-server/tools/utils/types.d.ts +117 -0
- package/dist/mcp-server/tools/utils/types.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/types.js +11 -0
- package/dist/mcp-server/tools/utils/types.js.map +1 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts +26 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.js +60 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.js.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +1 -1
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -1
- package/dist/mcp-server/transports/core/statefulTransportManager.js +50 -40
- package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -1
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +2 -13
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -1
- package/dist/mcp-server/transports/core/statelessTransportManager.js +35 -62
- package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -1
- package/dist/mcp-server/transports/core/transportRequest.d.ts +1 -2
- package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +1 -3
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -1
- package/dist/utils/internal/logger.d.ts +5 -0
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +65 -36
- package/dist/utils/internal/logger.js.map +1 -1
- package/package.json +29 -23
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +0 -9
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/index.js +0 -9
- package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +0 -51
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js +0 -179
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +0 -52
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js +0 -161
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +0 -13
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/index.js +0 -13
- package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +0 -64
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js +0 -190
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +0 -18
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js +0 -64
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts +0 -8
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/index.js +0 -8
- package/dist/mcp-server/tools/catFactFetcher/index.js.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +0 -52
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/logic.js +0 -95
- package/dist/mcp-server/tools/catFactFetcher/logic.js.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +0 -9
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/registration.js +0 -43
- package/dist/mcp-server/tools/catFactFetcher/registration.js.map +0 -1
- package/dist/mcp-server/tools/echoTool/index.d.ts +0 -13
- package/dist/mcp-server/tools/echoTool/index.d.ts.map +0 -1
- package/dist/mcp-server/tools/echoTool/index.js +0 -13
- package/dist/mcp-server/tools/echoTool/index.js.map +0 -1
- package/dist/mcp-server/tools/echoTool/logic.d.ts +0 -69
- package/dist/mcp-server/tools/echoTool/logic.d.ts.map +0 -1
- package/dist/mcp-server/tools/echoTool/logic.js +0 -119
- package/dist/mcp-server/tools/echoTool/logic.js.map +0 -1
- package/dist/mcp-server/tools/echoTool/registration.d.ts +0 -9
- package/dist/mcp-server/tools/echoTool/registration.d.ts.map +0 -1
- package/dist/mcp-server/tools/echoTool/registration.js +0 -45
- package/dist/mcp-server/tools/echoTool/registration.js.map +0 -1
- package/dist/mcp-server/tools/imageTest/index.d.ts +0 -7
- package/dist/mcp-server/tools/imageTest/index.d.ts.map +0 -1
- package/dist/mcp-server/tools/imageTest/index.js +0 -7
- package/dist/mcp-server/tools/imageTest/index.js.map +0 -1
- package/dist/mcp-server/tools/imageTest/logic.d.ts +0 -27
- package/dist/mcp-server/tools/imageTest/logic.d.ts.map +0 -1
- package/dist/mcp-server/tools/imageTest/logic.js +0 -44
- package/dist/mcp-server/tools/imageTest/logic.js.map +0 -1
- package/dist/mcp-server/tools/imageTest/registration.d.ts +0 -9
- package/dist/mcp-server/tools/imageTest/registration.d.ts.map +0 -1
- package/dist/mcp-server/tools/imageTest/registration.js +0 -49
- package/dist/mcp-server/tools/imageTest/registration.js.map +0 -1
- package/dist/mcp-server/tools/utils/tool-utils.d.ts +0 -43
- package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +0 -1
- package/dist/mcp-server/tools/utils/tool-utils.js +0 -44
- package/dist/mcp-server/tools/utils/tool-utils.js.map +0 -1
- package/dist/mcp-server/transports/core/headerUtils.d.ts +0 -27
- package/dist/mcp-server/transports/core/headerUtils.d.ts.map +0 -1
- package/dist/mcp-server/transports/core/headerUtils.js +0 -53
- package/dist/mcp-server/transports/core/headerUtils.js.map +0 -1
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +0 -77
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +0 -1
- package/dist/mcp-server/transports/core/honoNodeBridge.js +0 -150
- package/dist/mcp-server/transports/core/honoNodeBridge.js.map +0 -1
- package/dist/services/duck-db/duckDBConnectionManager.d.ts +0 -55
- package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +0 -1
- package/dist/services/duck-db/duckDBConnectionManager.js +0 -184
- package/dist/services/duck-db/duckDBConnectionManager.js.map +0 -1
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts +0 -18
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +0 -1
- package/dist/services/duck-db/duckDBQueryExecutor.js +0 -115
- package/dist/services/duck-db/duckDBQueryExecutor.js.map +0 -1
- package/dist/services/duck-db/duckDBService.d.ts +0 -27
- package/dist/services/duck-db/duckDBService.d.ts.map +0 -1
- package/dist/services/duck-db/duckDBService.js +0 -151
- package/dist/services/duck-db/duckDBService.js.map +0 -1
- package/dist/services/duck-db/types.d.ts +0 -135
- package/dist/services/duck-db/types.d.ts.map +0 -1
- package/dist/services/duck-db/types.js +0 -6
- package/dist/services/duck-db/types.js.map +0 -1
- package/dist/services/llm-providers/openRouterProvider.d.ts +0 -36
- package/dist/services/llm-providers/openRouterProvider.d.ts.map +0 -1
- package/dist/services/llm-providers/openRouterProvider.js +0 -235
- package/dist/services/llm-providers/openRouterProvider.js.map +0 -1
- package/dist/services/supabase/supabaseClient.d.ts +0 -25
- package/dist/services/supabase/supabaseClient.d.ts.map +0 -1
- package/dist/services/supabase/supabaseClient.js +0 -68
- package/dist/services/supabase/supabaseClient.js.map +0 -1
- package/dist/storage/duckdbExample.d.ts +0 -8
- package/dist/storage/duckdbExample.d.ts.map +0 -1
- package/dist/storage/duckdbExample.js +0 -197
- package/dist/storage/duckdbExample.js.map +0 -1
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Example script to demonstrate usage of the DuckDBService.
|
|
3
|
-
* Creates a sample database, table, inserts data, queries it, and logs results.
|
|
4
|
-
* Database files will be stored in the './duckdata/' directory.
|
|
5
|
-
* @module storage/duckdbExample
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from "fs";
|
|
8
|
-
import * as path from "path";
|
|
9
|
-
import { DuckDBService } from "../services/duck-db/duckDBService.js";
|
|
10
|
-
import { JsonRpcErrorCode } from "../types-global/errors.js";
|
|
11
|
-
import { ErrorHandler, idGenerator, // Added idGenerator import
|
|
12
|
-
logger, requestContextService, } from "../utils/index.js";
|
|
13
|
-
const DUCKDB_DATA_DIR = path.resolve(process.cwd(), "duckdata");
|
|
14
|
-
const DUCKDB_FILE_PATH = path.join(DUCKDB_DATA_DIR, "example.db");
|
|
15
|
-
/**
|
|
16
|
-
* Ensures that the directory for storing DuckDB files exists.
|
|
17
|
-
* @param {RequestContext} context - The request context for logging.
|
|
18
|
-
*/
|
|
19
|
-
function ensureDataDirectoryExists(context) {
|
|
20
|
-
if (!fs.existsSync(DUCKDB_DATA_DIR)) {
|
|
21
|
-
logger.info(context, `Data directory ${DUCKDB_DATA_DIR} does not exist. Creating...`);
|
|
22
|
-
try {
|
|
23
|
-
fs.mkdirSync(DUCKDB_DATA_DIR, { recursive: true });
|
|
24
|
-
logger.info(context, `Data directory ${DUCKDB_DATA_DIR} created.`);
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
logger.error({
|
|
28
|
-
error: error,
|
|
29
|
-
...context,
|
|
30
|
-
}, `Failed to create data directory ${DUCKDB_DATA_DIR}`);
|
|
31
|
-
// Re-throw as a critical error if directory creation fails
|
|
32
|
-
throw new Error(`Could not create DuckDB data directory: ${error instanceof Error ? error.message : String(error)}`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
logger.debug(context, `Data directory ${DUCKDB_DATA_DIR} already exists.`);
|
|
37
|
-
}
|
|
38
|
-
// Ensure a fresh database file for the example by deleting it if it exists.
|
|
39
|
-
// This allows launchConfig settings like custom_user_agent to be applied on each run.
|
|
40
|
-
if (fs.existsSync(DUCKDB_FILE_PATH)) {
|
|
41
|
-
logger.info(context, `Existing DuckDB file ${DUCKDB_FILE_PATH} found. Deleting for a fresh example run...`);
|
|
42
|
-
try {
|
|
43
|
-
fs.unlinkSync(DUCKDB_FILE_PATH);
|
|
44
|
-
logger.info(context, `Successfully deleted ${DUCKDB_FILE_PATH}.`);
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
logger.error({ error: error, ...context }, `Failed to delete existing DuckDB file ${DUCKDB_FILE_PATH}`);
|
|
48
|
-
// Re-throw as a critical error if deletion fails, as it will likely cause subsequent errors
|
|
49
|
-
throw new Error(`Could not delete existing DuckDB file: ${error instanceof Error ? error.message : String(error)}`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async function runDuckDBExample() {
|
|
54
|
-
const operation = "runDuckDBExample";
|
|
55
|
-
const context = requestContextService.createRequestContext({ operation });
|
|
56
|
-
logger.notice(context, "Starting DuckDB example script...");
|
|
57
|
-
ensureDataDirectoryExists(context);
|
|
58
|
-
const service = new DuckDBService();
|
|
59
|
-
const config = {
|
|
60
|
-
dbPath: DUCKDB_FILE_PATH,
|
|
61
|
-
extensions: ["json"], // Example: include an extension
|
|
62
|
-
launchConfig: { custom_user_agent: "DuckDBExampleScript/1.0" },
|
|
63
|
-
};
|
|
64
|
-
try {
|
|
65
|
-
logger.info(context, `Initializing DuckDBService with path: ${config.dbPath}`);
|
|
66
|
-
await service.initialize(config);
|
|
67
|
-
logger.info(context, "DuckDBService initialized.");
|
|
68
|
-
// Create a table
|
|
69
|
-
const createTableSql = `
|
|
70
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
71
|
-
id VARCHAR(6) PRIMARY KEY,
|
|
72
|
-
name VARCHAR NOT NULL,
|
|
73
|
-
email VARCHAR,
|
|
74
|
-
createdAt TIMESTAMP DEFAULT current_timestamp
|
|
75
|
-
);
|
|
76
|
-
`;
|
|
77
|
-
logger.info({
|
|
78
|
-
...context,
|
|
79
|
-
sql: createTableSql,
|
|
80
|
-
}, "Creating 'users' table...");
|
|
81
|
-
await service.run(createTableSql);
|
|
82
|
-
logger.info(context, "'users' table created or already exists.");
|
|
83
|
-
// Insert data
|
|
84
|
-
const usersToInsert = [
|
|
85
|
-
{ name: "Alice Wonderland", email: "alice@example.com" },
|
|
86
|
-
{ name: "Bob The Builder", email: "bob@example.com" },
|
|
87
|
-
{ name: "Charlie Chaplin", email: "charlie@example.com" },
|
|
88
|
-
].map((user) => ({
|
|
89
|
-
id: idGenerator.generateRandomString(6), // Generate 6-digit alphanumeric ID directly
|
|
90
|
-
...user,
|
|
91
|
-
}));
|
|
92
|
-
logger.info({
|
|
93
|
-
...context,
|
|
94
|
-
users: usersToInsert.length,
|
|
95
|
-
}, "Inserting data into 'users' table...");
|
|
96
|
-
for (const user of usersToInsert) {
|
|
97
|
-
// Check if user already exists to prevent primary key constraint errors on re-runs
|
|
98
|
-
const existingUser = await service.query("SELECT id FROM users WHERE id = ?", [user.id]);
|
|
99
|
-
if (existingUser.rowCount === 0) {
|
|
100
|
-
await service.run("INSERT INTO users (id, name, email) VALUES (?, ?, ?)", [user.id, user.name, user.email]);
|
|
101
|
-
logger.debug(context, `Inserted user with ID: ${user.id}`);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
logger.debug(context, `User with ID: ${user.id} already exists. Skipping insertion.`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
logger.info(context, "Data insertion complete.");
|
|
108
|
-
// Query data
|
|
109
|
-
const querySql = "SELECT id, name, email, createdAt FROM users ORDER BY id;";
|
|
110
|
-
logger.info({ ...context, sql: querySql }, "Querying 'users' table...");
|
|
111
|
-
const result = await service.query(querySql);
|
|
112
|
-
logger.notice({
|
|
113
|
-
...context,
|
|
114
|
-
rowCount: result.rowCount,
|
|
115
|
-
columnNames: result.columnNames,
|
|
116
|
-
}, "Query Results:");
|
|
117
|
-
result.rows.forEach((row, index) => {
|
|
118
|
-
logger.info({ ...context, rowData: row }, `Row ${index + 1}:`);
|
|
119
|
-
});
|
|
120
|
-
// Example of using an extension function (json)
|
|
121
|
-
// Use the ID of the first inserted user for the query
|
|
122
|
-
if (usersToInsert.length > 0) {
|
|
123
|
-
const firstUser = usersToInsert[0];
|
|
124
|
-
if (!firstUser) {
|
|
125
|
-
logger.warning(context, "Could not get the first user for JSON query example.");
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
const firstUserId = firstUser.id;
|
|
129
|
-
const jsonQuerySql = "SELECT json_object('id', id, 'name', name, 'email', email) AS user_json FROM users WHERE id = ?;"; // Added email to json_object
|
|
130
|
-
logger.info({
|
|
131
|
-
...context,
|
|
132
|
-
sql: jsonQuerySql,
|
|
133
|
-
userId: firstUserId,
|
|
134
|
-
}, "Querying with JSON extension function for a specific user...");
|
|
135
|
-
const jsonResult = await service.query(jsonQuerySql, [firstUserId]);
|
|
136
|
-
if (jsonResult.rowCount > 0) {
|
|
137
|
-
logger.info({
|
|
138
|
-
...context,
|
|
139
|
-
jsonData: jsonResult.rows[0],
|
|
140
|
-
}, "JSON Query Result:");
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
logger.warning(context, `Could not find user with ID ${firstUserId} for JSON query example.`); // Changed warn to warning
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
logger.info(context, "Skipping JSON query example as no users were inserted.");
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
// ErrorHandler.tryCatch is used within the service, so errors should be McpError
|
|
152
|
-
// If an error occurs outside service calls (e.g. directory creation), it might be a standard Error
|
|
153
|
-
logger.error({
|
|
154
|
-
error: error,
|
|
155
|
-
...context,
|
|
156
|
-
isMcpError: error instanceof Object && "errorCode" in error, // Basic check
|
|
157
|
-
}, "An error occurred in the DuckDB example script");
|
|
158
|
-
}
|
|
159
|
-
finally {
|
|
160
|
-
logger.info(context, "Closing DuckDBService...");
|
|
161
|
-
// Wrap close in its own tryCatch as it might also throw
|
|
162
|
-
try {
|
|
163
|
-
await service.close();
|
|
164
|
-
logger.info(context, "DuckDBService closed.");
|
|
165
|
-
}
|
|
166
|
-
catch (closeError) {
|
|
167
|
-
logger.error({
|
|
168
|
-
error: closeError,
|
|
169
|
-
...context,
|
|
170
|
-
}, "Failed to close DuckDBService");
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
logger.notice(context, "DuckDB example script finished.");
|
|
174
|
-
}
|
|
175
|
-
// Self-executing async function
|
|
176
|
-
(async () => {
|
|
177
|
-
// Setup a global error handler for unhandled rejections or exceptions
|
|
178
|
-
// specific to this script's execution context.
|
|
179
|
-
const scriptContext = requestContextService.createRequestContext({
|
|
180
|
-
operation: "DuckDBExampleScript.main",
|
|
181
|
-
});
|
|
182
|
-
try {
|
|
183
|
-
await ErrorHandler.tryCatch(runDuckDBExample, {
|
|
184
|
-
operation: "runDuckDBExample.mainExecution",
|
|
185
|
-
context: scriptContext,
|
|
186
|
-
errorCode: JsonRpcErrorCode.InternalError, // Changed from SCRIPT_EXECUTION_ERROR
|
|
187
|
-
critical: true, // If the main example fails, it's critical for the script
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
catch (e) {
|
|
191
|
-
// This catch is for errors that ErrorHandler.tryCatch itself might rethrow
|
|
192
|
-
// or if ErrorHandler is bypassed.
|
|
193
|
-
logger.crit({ error: e, ...scriptContext }, "Unhandled critical error in DuckDB example script execution.");
|
|
194
|
-
process.exit(1); // Exit with error code
|
|
195
|
-
}
|
|
196
|
-
})();
|
|
197
|
-
//# sourceMappingURL=duckdbExample.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckdbExample.js","sourceRoot":"","sources":["../../src/storage/duckdbExample.ts"],"names":[],"mappings":"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"}
|