mcp-server-db2i 2.2.1 → 2.4.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 +19 -3
- package/dist/cli.d.ts +26 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +36 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -1
- package/dist/customTools/execute.d.ts +23 -0
- package/dist/customTools/execute.d.ts.map +1 -1
- package/dist/customTools/execute.js +50 -28
- package/dist/customTools/execute.js.map +1 -1
- package/dist/customTools/loader.d.ts +23 -1
- package/dist/customTools/loader.d.ts.map +1 -1
- package/dist/customTools/loader.js +86 -2
- package/dist/customTools/loader.js.map +1 -1
- package/dist/customTools/masking.d.ts +66 -0
- package/dist/customTools/masking.d.ts.map +1 -0
- package/dist/customTools/masking.js +383 -0
- package/dist/customTools/masking.js.map +1 -0
- package/dist/customTools/registry.js +1 -1
- package/dist/customTools/registry.js.map +1 -1
- package/dist/customTools/schema.d.ts +11 -0
- package/dist/customTools/schema.d.ts.map +1 -1
- package/dist/customTools/schema.js +6 -2
- package/dist/customTools/schema.js.map +1 -1
- package/dist/customTools/watch.d.ts +23 -0
- package/dist/customTools/watch.d.ts.map +1 -0
- package/dist/customTools/watch.js +126 -0
- package/dist/customTools/watch.js.map +1 -0
- package/dist/db/queries.d.ts +39 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +111 -0
- package/dist/db/queries.js.map +1 -1
- package/dist/db/sqlServices.d.ts +3 -0
- package/dist/db/sqlServices.d.ts.map +1 -1
- package/dist/db/sqlServices.js +3 -0
- package/dist/db/sqlServices.js.map +1 -1
- package/dist/index.js +48 -7
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +21 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +252 -27
- package/dist/server.js.map +1 -1
- package/dist/tools/metadata.d.ts +23 -0
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +80 -2
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +46 -1
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/sqlServices.d.ts.map +1 -1
- package/dist/tools/sqlServices.js +1 -2
- package/dist/tools/sqlServices.js.map +1 -1
- package/dist/transports/http.d.ts +5 -0
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +7 -0
- package/dist/transports/http.js.map +1 -1
- package/dist/transports/sessionManager.d.ts +5 -0
- package/dist/transports/sessionManager.d.ts.map +1 -1
- package/dist/transports/sessionManager.js +13 -0
- package/dist/transports/sessionManager.js.map +1 -1
- package/dist/utils/auditLog.d.ts +23 -0
- package/dist/utils/auditLog.d.ts.map +1 -0
- package/dist/utils/auditLog.js +104 -0
- package/dist/utils/auditLog.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://modelcontextprotocol.io/)
|
|
7
7
|
[](https://www.ibm.com/products/ibm-i)
|
|
8
8
|
[](https://www.typescriptlang.org/)
|
|
9
|
-
[](https://nodejs.org/)
|
|
10
10
|
[](docs/docker.md)
|
|
11
11
|
[](https://www.npmjs.com/package/mcp-server-db2i)
|
|
12
12
|
[](https://github.com/Strom-Capital/mcp-server-db2i/pulls)
|
|
@@ -58,7 +58,7 @@ graph LR
|
|
|
58
58
|
- **Current MCP spec** - Speaks [2026-07-28](https://modelcontextprotocol.io/) and still serves stateless 2025-era clients
|
|
59
59
|
- **Dual Transport** - Run stdio and HTTP simultaneously
|
|
60
60
|
- **Tool selection** - Enable or disable individual tools, e.g. a metadata-only mode without `execute_query`
|
|
61
|
-
- **Business SQL tools** - Load read-only ERP queries and table notes from YAML. See [Business SQL tools](docs/custom-tools.md)
|
|
61
|
+
- **Business SQL tools** - Load read-only ERP queries and table notes from YAML, and check the files with `mcp-server-db2i validate-tools` before the server starts. See [Business SQL tools](docs/custom-tools.md)
|
|
62
62
|
- **Compact responses** - Compact JSON by default, or markdown tables to save tokens
|
|
63
63
|
- **Statement checks and DDL** - Validate object names, return the SQL that recreates an object, and list what depends on a table
|
|
64
64
|
|
|
@@ -118,6 +118,8 @@ See the [Client Setup Guide](docs/client-setup.md) for Cursor, Claude Desktop, C
|
|
|
118
118
|
| `execute_query` | Execute read-only SELECT queries |
|
|
119
119
|
| `list_schemas` | List schemas/libraries (with optional filter) |
|
|
120
120
|
| `list_tables` | List tables in a schema (with optional filter) |
|
|
121
|
+
| `search_tables` | Find tables by name or description across libraries |
|
|
122
|
+
| `search_columns` | Find columns by name or description across libraries |
|
|
121
123
|
| `describe_table` | Get detailed column information |
|
|
122
124
|
| `list_views` | List views in a schema (with optional filter) |
|
|
123
125
|
| `list_indexes` | List SQL indexes for a table |
|
|
@@ -134,6 +136,17 @@ The list tools support pattern matching:
|
|
|
134
136
|
- `CUST*` - Starts with "CUST"
|
|
135
137
|
- `*LOG` - Ends with "LOG"
|
|
136
138
|
|
|
139
|
+
## Use cases
|
|
140
|
+
|
|
141
|
+
I've used this server on projects where the source system was the Iptor DC1 ERP on IBM i. The same patterns work with any IBM i ERP.
|
|
142
|
+
|
|
143
|
+
- **Building REST APIs** - The agent finds the ERP tables and keys, checks its SQL with `validate_query`, tests it on sample rows, and then writes the endpoint.
|
|
144
|
+
- **ETL and ELT pipelines for BI** - Profile source tables, generate staging DDL with `get_object_ddl`, and draft incremental extracts and code mappings for the warehouse.
|
|
145
|
+
- **Near-real-time replication to BI** - Check which tables are journaled, and with which images, before a journal-based tool such as Fivetran streams changes to the warehouse.
|
|
146
|
+
- **Ad-hoc analysis** - Connect Claude or Cursor directly to the ERP and ask business questions in plain language, with vetted Business SQL tools and column masking for sensitive fields.
|
|
147
|
+
|
|
148
|
+
See [Use cases](docs/use-cases.md) for sample prompts and the guardrails that go with each one.
|
|
149
|
+
|
|
137
150
|
## Example Usage
|
|
138
151
|
|
|
139
152
|
Once connected, you can ask the AI assistant:
|
|
@@ -143,11 +156,14 @@ Once connected, you can ask the AI assistant:
|
|
|
143
156
|
- "Describe the columns in MYLIB/CUSTOMERS"
|
|
144
157
|
- "What indexes exist on the ORDERS table?"
|
|
145
158
|
- "Run this query: SELECT * FROM MYLIB.CUSTOMERS WHERE STATUS = 'A'"
|
|
159
|
+
- "Find the order header and line tables in MYLIB and write a GET /orders/:orderNo endpoint"
|
|
160
|
+
- "Draft an incremental extract of MYLIB.ORDERHDR rows changed since yesterday"
|
|
146
161
|
|
|
147
162
|
## Documentation
|
|
148
163
|
|
|
149
164
|
| Guide | Description |
|
|
150
165
|
|-------|-------------|
|
|
166
|
+
| [Use cases](docs/use-cases.md) | REST APIs, BI pipelines, journal replication, and ad-hoc ERP analysis |
|
|
151
167
|
| [HTTP Transport](docs/http-transport.md) | HTTP API, auth, and protocol versions |
|
|
152
168
|
| [Configuration](docs/configuration.md) | All environment variables and JDBC options |
|
|
153
169
|
| [Security](docs/security.md) | Credentials, rate limiting, query validation |
|
|
@@ -161,7 +177,7 @@ Once connected, you can ask the AI assistant:
|
|
|
161
177
|
- IBM i V7R3 and later (V7R5 recommended)
|
|
162
178
|
- `validate_query` and the `execute_query` parse check need `QSYS2.PARSE_STATEMENT` (IBM i 7.3 with Db2 PTF group SF99703 level 3, or 7.4 and later)
|
|
163
179
|
- `get_related_objects` needs IBM i 7.3 Technology Refresh 9, IBM i 7.4 Technology Refresh 3, or a later release
|
|
164
|
-
- Node.js
|
|
180
|
+
- Node.js 22 or higher
|
|
165
181
|
- Java Runtime Environment (JRE) 11 or higher
|
|
166
182
|
- MCP spec 2026-07-28, plus stateless clients from the 2025-era revisions (through 2025-11-25)
|
|
167
183
|
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command-line entry points that do not start a transport.
|
|
3
|
+
*
|
|
4
|
+
* `validate-tools` checks YAML tool files and exits.
|
|
5
|
+
*/
|
|
6
|
+
export type CliCommand = {
|
|
7
|
+
kind: 'serve';
|
|
8
|
+
} | {
|
|
9
|
+
kind: 'validate-tools';
|
|
10
|
+
paths: string[];
|
|
11
|
+
connect: boolean;
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'usage';
|
|
14
|
+
message: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* No arguments starts the server. Anything else is validate-tools or a usage error.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseCliArgs(argv: readonly string[]): CliCommand;
|
|
20
|
+
export declare function runValidateTools(options: {
|
|
21
|
+
paths: string[];
|
|
22
|
+
connect: boolean;
|
|
23
|
+
stdout?: NodeJS.WritableStream;
|
|
24
|
+
stderr?: NodeJS.WritableStream;
|
|
25
|
+
}): Promise<number>;
|
|
26
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAkChE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAChC,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBlB"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command-line entry points that do not start a transport.
|
|
3
|
+
*
|
|
4
|
+
* `validate-tools` checks YAML tool files and exits.
|
|
5
|
+
*/
|
|
6
|
+
import { parseArgs } from 'node:util';
|
|
7
|
+
import { getAllowedSchemas, loadConfig } from './config.js';
|
|
8
|
+
import { classifyParsedStatement } from './customTools/execute.js';
|
|
9
|
+
import { validateCustomToolFiles, } from './customTools/loader.js';
|
|
10
|
+
import { closeGlobalPool, initializePool } from './db/connection.js';
|
|
11
|
+
import { isParseStatementMissing, parseStatement, PARSE_STATEMENT_REQUIREMENT, } from './db/sqlServices.js';
|
|
12
|
+
const USAGE = `Usage: mcp-server-db2i [validate-tools [--connect] <path...>]
|
|
13
|
+
|
|
14
|
+
validate-tools <path...> Check YAML tool files and exit
|
|
15
|
+
--connect Also parse each statement with QSYS2.PARSE_STATEMENT
|
|
16
|
+
`;
|
|
17
|
+
/**
|
|
18
|
+
* No arguments starts the server. Anything else is validate-tools or a usage error.
|
|
19
|
+
*/
|
|
20
|
+
export function parseCliArgs(argv) {
|
|
21
|
+
if (argv.length === 0) {
|
|
22
|
+
return { kind: 'serve' };
|
|
23
|
+
}
|
|
24
|
+
const [command, ...rest] = argv;
|
|
25
|
+
if (command !== 'validate-tools') {
|
|
26
|
+
return { kind: 'usage', message: `Unknown command: ${command}\n\n${USAGE}` };
|
|
27
|
+
}
|
|
28
|
+
let parsed;
|
|
29
|
+
try {
|
|
30
|
+
parsed = parseArgs({
|
|
31
|
+
args: [...rest],
|
|
32
|
+
options: {
|
|
33
|
+
connect: { type: 'boolean' },
|
|
34
|
+
},
|
|
35
|
+
strict: true,
|
|
36
|
+
allowPositionals: true,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const message = error instanceof Error ? error.message : 'Invalid arguments';
|
|
41
|
+
return { kind: 'usage', message: `${message}\n\n${USAGE}` };
|
|
42
|
+
}
|
|
43
|
+
if (parsed.positionals.length === 0) {
|
|
44
|
+
return { kind: 'usage', message: `validate-tools requires at least one path.\n\n${USAGE}` };
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
kind: 'validate-tools',
|
|
48
|
+
paths: parsed.positionals,
|
|
49
|
+
connect: parsed.values.connect === true,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export async function runValidateTools(options) {
|
|
53
|
+
const stdout = options.stdout ?? process.stdout;
|
|
54
|
+
const stderr = options.stderr ?? process.stderr;
|
|
55
|
+
const { results, loaded } = validateCustomToolFiles(options.paths, {
|
|
56
|
+
allowedSchemas: getAllowedSchemas(),
|
|
57
|
+
defaultSchema: process.env.DB2I_SCHEMA,
|
|
58
|
+
});
|
|
59
|
+
let failed = reportFiles(results, stdout, stderr);
|
|
60
|
+
if (options.connect && !failed) {
|
|
61
|
+
const connectFailed = await checkOnServer(loaded.tools, stderr);
|
|
62
|
+
failed = failed || connectFailed;
|
|
63
|
+
}
|
|
64
|
+
const fileCount = results.filter((result) => result.path !== '').length;
|
|
65
|
+
const staticFailures = results.filter((result) => result.error).length;
|
|
66
|
+
const summary = !failed
|
|
67
|
+
? `${fileCount} files checked, all passed.`
|
|
68
|
+
: staticFailures > 0
|
|
69
|
+
? `${fileCount} files checked, ${staticFailures} failed.`
|
|
70
|
+
: `${fileCount} files checked, PARSE_STATEMENT check failed.`;
|
|
71
|
+
stdout.write(`${summary}\n`);
|
|
72
|
+
return failed ? 1 : 0;
|
|
73
|
+
}
|
|
74
|
+
function reportFiles(results, stdout, stderr) {
|
|
75
|
+
let failed = false;
|
|
76
|
+
for (const result of results) {
|
|
77
|
+
if (result.error) {
|
|
78
|
+
failed = true;
|
|
79
|
+
const where = result.path ? `${result.path}: ` : '';
|
|
80
|
+
stderr.write(`FAIL ${where}${result.error}\n`);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
stdout.write(`ok ${result.path} (${result.tools} tools, ${result.annotations} annotations)\n`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return failed;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Run each statement through QSYS2.PARSE_STATEMENT.
|
|
90
|
+
* A missing function stops the command and names the host.
|
|
91
|
+
*/
|
|
92
|
+
async function checkOnServer(tools, stderr) {
|
|
93
|
+
let config;
|
|
94
|
+
try {
|
|
95
|
+
config = loadConfig();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const message = error instanceof Error ? error.message : 'Could not load database configuration';
|
|
99
|
+
stderr.write(`FAIL ${message}\n`);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
initializePool(config);
|
|
103
|
+
try {
|
|
104
|
+
let failed = false;
|
|
105
|
+
for (const tool of tools) {
|
|
106
|
+
try {
|
|
107
|
+
const parsed = await parseStatement(tool.sql);
|
|
108
|
+
const outcome = classifyParsedStatement(parsed);
|
|
109
|
+
if (!outcome.ok) {
|
|
110
|
+
failed = true;
|
|
111
|
+
stderr.write(`FAIL ${tool.source}: tool ${tool.name}: ${outcome.error}\n`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
if (isParseStatementMissing(error)) {
|
|
116
|
+
stderr.write(`FAIL QSYS2.PARSE_STATEMENT is not available on ${config.hostname}. ${PARSE_STATEMENT_REQUIREMENT}\n`);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
failed = true;
|
|
120
|
+
const message = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
121
|
+
stderr.write(`FAIL ${tool.source}: tool ${tool.name}: ${message}\n`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return failed;
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
await closeGlobalPool();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -74,6 +74,11 @@ export declare function jdbcConnectionSecurity(options?: Record<string, string>)
|
|
|
74
74
|
accessOverride?: string;
|
|
75
75
|
secure: boolean;
|
|
76
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* JT400 `extended metadata=true` replaces column names with LABEL ON text.
|
|
79
|
+
* Masking matches result keys, so that option would let a value through.
|
|
80
|
+
*/
|
|
81
|
+
export declare function assertExtendedMetadataAllowsMasking(maskingLoaded: boolean): void;
|
|
77
82
|
/**
|
|
78
83
|
* Load configuration from environment variables.
|
|
79
84
|
*
|
|
@@ -158,7 +163,7 @@ export declare function applyQueryLimit(requestedLimit: number | undefined, conf
|
|
|
158
163
|
/**
|
|
159
164
|
* Names of all tools the server can register
|
|
160
165
|
*/
|
|
161
|
-
export declare const TOOL_NAMES: readonly ["execute_query", "list_schemas", "list_tables", "describe_table", "list_views", "list_indexes", "get_table_constraints", "validate_query", "get_object_ddl", "get_related_objects", "get_business_context"];
|
|
166
|
+
export declare const TOOL_NAMES: readonly ["execute_query", "list_schemas", "list_tables", "search_tables", "search_columns", "describe_table", "list_views", "list_indexes", "get_table_constraints", "validate_query", "get_object_ddl", "get_related_objects", "get_business_context"];
|
|
162
167
|
export type ToolName = (typeof TOOL_NAMES)[number];
|
|
163
168
|
/**
|
|
164
169
|
* A YAML-defined tool that tool selection can name directly or by toolset.
|
|
@@ -214,6 +219,36 @@ export declare function getAllowedSchemas(): string[] | undefined;
|
|
|
214
219
|
* - QUERY_PARSE_CHECK: `false` or `0` turns the check off. Anything else, including unset, leaves it on.
|
|
215
220
|
*/
|
|
216
221
|
export declare function isQueryParseCheckEnabled(): boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Whether YAML tool files are re-read when they change.
|
|
224
|
+
*
|
|
225
|
+
* Environment variable:
|
|
226
|
+
* - MCP_CUSTOM_TOOLS_WATCH: `true` or `1` turns watching on. Anything else, including unset, leaves it off.
|
|
227
|
+
*/
|
|
228
|
+
export declare function isCustomToolsWatchEnabled(): boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Watching with no files is a startup error. A blank MCP_CUSTOM_TOOLS would
|
|
231
|
+
* otherwise look like a successful watch of nothing.
|
|
232
|
+
*/
|
|
233
|
+
export declare function assertCustomToolsWatch(): void;
|
|
234
|
+
export type AuditSqlMode = 'hash' | 'full';
|
|
235
|
+
export interface AuditConfig {
|
|
236
|
+
/** `stderr` writes the line directly. A path is opened for append at startup. */
|
|
237
|
+
target: 'stderr' | {
|
|
238
|
+
path: string;
|
|
239
|
+
};
|
|
240
|
+
sql: AuditSqlMode;
|
|
241
|
+
/** When true, bound parameter values are written. Otherwise only the count is. */
|
|
242
|
+
params: boolean;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Query audit log. Unset MCP_AUDIT_LOG means no audit log.
|
|
246
|
+
*
|
|
247
|
+
* - MCP_AUDIT_LOG: `stderr`, or a file path to append.
|
|
248
|
+
* - MCP_AUDIT_SQL: `hash` (default) or `full`. Anything else stops startup.
|
|
249
|
+
* - MCP_AUDIT_PARAMS: `true` includes bound values. Anything else records only the count.
|
|
250
|
+
*/
|
|
251
|
+
export declare function getAuditConfig(): AuditConfig | undefined;
|
|
217
252
|
/**
|
|
218
253
|
* Transport mode options
|
|
219
254
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAStC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAwB1D;AAqCD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAmD,GAChF;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAO9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,UAAU,CAiCvC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAkDA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAIhC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAGjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAQtD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,MAAM,GAAE,gBAAwC,GAC/C,MAAM,CAGR;AAMD;;GAEG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAStC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAwB1D;AAqCD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAmD,GAChF;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAO9C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI,CAUhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,UAAU,CAiCvC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAkDA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAIhC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAGjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAQtD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,MAAM,GAAE,gBAAwC,GAC/C,MAAM,CAGR;AAMD;;GAEG;AACH,eAAO,MAAM,UAAU,0PAcb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA+CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,WAAW,GAAE,SAAS,kBAAkB,EAAO,GAAG,MAAM,EAAE,CAyBzF;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAMlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,GAAG,SAAS,CAgBxD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAU7C;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,MAAM,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,GAAG,EAAE,YAAY,CAAC;IAClB,kFAAkF;IAClF,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAaxD;AAcD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,SAAS,EAAE,aAAa,CAAC;IACzB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,WAAW,EAAE,WAAW,CAAC;IACzB,wEAAwE;IACxE,QAAQ,EAAE,QAAQ,CAAC;IACnB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,GAAG,EAAE,SAAS,CAAC;IACf,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uEAAuE;IACvE,wBAAwB,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAejC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAMzC;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiCjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGpD;AAwBD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,GAAG,IAAI,CAgBvD;AAOD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAMhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAM5C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAMtC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CA8BxC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CA4B1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,UAAU,CAqCb"}
|
package/dist/config.js
CHANGED
|
@@ -136,6 +136,19 @@ export function jdbcConnectionSecurity(options = parseJdbcOptions(process.env.DB
|
|
|
136
136
|
secure: secureValue?.toLowerCase() === 'true',
|
|
137
137
|
};
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* JT400 `extended metadata=true` replaces column names with LABEL ON text.
|
|
141
|
+
* Masking matches result keys, so that option would let a value through.
|
|
142
|
+
*/
|
|
143
|
+
export function assertExtendedMetadataAllowsMasking(maskingLoaded) {
|
|
144
|
+
if (!maskingLoaded) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const value = jdbcOption(parseJdbcOptions(process.env.DB2I_JDBC_OPTIONS), 'extended metadata');
|
|
148
|
+
if (value?.toLowerCase() === 'true') {
|
|
149
|
+
throw new Error('DB2I_JDBC_OPTIONS sets extended metadata=true, which renames result columns, so masking rules cannot be applied. Remove that option or the masking rules.');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
139
152
|
/**
|
|
140
153
|
* Load configuration from environment variables.
|
|
141
154
|
*
|
|
@@ -271,6 +284,8 @@ export const TOOL_NAMES = [
|
|
|
271
284
|
'execute_query',
|
|
272
285
|
'list_schemas',
|
|
273
286
|
'list_tables',
|
|
287
|
+
'search_tables',
|
|
288
|
+
'search_columns',
|
|
274
289
|
'describe_table',
|
|
275
290
|
'list_views',
|
|
276
291
|
'list_indexes',
|
|
@@ -395,6 +410,55 @@ export function isQueryParseCheckEnabled() {
|
|
|
395
410
|
const value = process.env.QUERY_PARSE_CHECK?.trim().toLowerCase();
|
|
396
411
|
return value !== 'false' && value !== '0';
|
|
397
412
|
}
|
|
413
|
+
/**
|
|
414
|
+
* Whether YAML tool files are re-read when they change.
|
|
415
|
+
*
|
|
416
|
+
* Environment variable:
|
|
417
|
+
* - MCP_CUSTOM_TOOLS_WATCH: `true` or `1` turns watching on. Anything else, including unset, leaves it off.
|
|
418
|
+
*/
|
|
419
|
+
export function isCustomToolsWatchEnabled() {
|
|
420
|
+
const value = process.env.MCP_CUSTOM_TOOLS_WATCH?.trim().toLowerCase();
|
|
421
|
+
return value === 'true' || value === '1';
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Watching with no files is a startup error. A blank MCP_CUSTOM_TOOLS would
|
|
425
|
+
* otherwise look like a successful watch of nothing.
|
|
426
|
+
*/
|
|
427
|
+
export function assertCustomToolsWatch() {
|
|
428
|
+
if (!isCustomToolsWatchEnabled()) {
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
const raw = process.env.MCP_CUSTOM_TOOLS;
|
|
432
|
+
if (raw === undefined || raw.trim() === '') {
|
|
433
|
+
throw new Error('MCP_CUSTOM_TOOLS_WATCH is set but MCP_CUSTOM_TOOLS is empty. There is nothing to watch.');
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Query audit log. Unset MCP_AUDIT_LOG means no audit log.
|
|
438
|
+
*
|
|
439
|
+
* - MCP_AUDIT_LOG: `stderr`, or a file path to append.
|
|
440
|
+
* - MCP_AUDIT_SQL: `hash` (default) or `full`. Anything else stops startup.
|
|
441
|
+
* - MCP_AUDIT_PARAMS: `true` includes bound values. Anything else records only the count.
|
|
442
|
+
*/
|
|
443
|
+
export function getAuditConfig() {
|
|
444
|
+
const sql = auditSqlMode();
|
|
445
|
+
const target = process.env.MCP_AUDIT_LOG?.trim();
|
|
446
|
+
if (!target) {
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
target: target === 'stderr' ? 'stderr' : { path: target },
|
|
451
|
+
sql,
|
|
452
|
+
params: process.env.MCP_AUDIT_PARAMS?.trim().toLowerCase() === 'true',
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
function auditSqlMode() {
|
|
456
|
+
const sqlRaw = process.env.MCP_AUDIT_SQL?.trim().toLowerCase() || 'hash';
|
|
457
|
+
if (sqlRaw === 'hash' || sqlRaw === 'full') {
|
|
458
|
+
return sqlRaw;
|
|
459
|
+
}
|
|
460
|
+
throw new Error(`MCP_AUDIT_SQL must be "hash" or "full", got "${process.env.MCP_AUDIT_SQL}".`);
|
|
461
|
+
}
|
|
398
462
|
/**
|
|
399
463
|
* Default HTTP configuration values
|
|
400
464
|
*/
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiBnD;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IACnD,MAAM,WAAW,GAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5E,IAAI,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAiB,CAAC,EAAE,CAAC;QACrD,OAAO,KAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,UAAkB;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,8CAA8C;IAC9C,MAAM,WAAW,GAAG,8CAA8C,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,SAAS,EAAE,CAAC;QACd,+BAA+B;QAC/B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,6BAA6B;IAC7B,iFAAiF;IACjF,iCAAiC;IACjC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,eAAe,GACnB,+FAA+F,CAAC;IAClG,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,aAAiC;IACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAA+B,EAAE,IAAY;IAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;IACvF,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAEjF,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,OAAO;QACL,cAAc;QACd,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,MAAM;KAC9C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CAAC,aAAsB;IACxE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC/F,IAAI,KAAK,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,2JAA2J,CAC5J,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAElE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,8CAA8C,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,EAAE,EAAE,CAAC;QAClD,QAAQ;QACR,QAAQ;QACR,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ;QAC/C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACrC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,qBAAqB,CAAC,MAAkB,EAAE,OAAgC;IAMxF,MAAM,gBAAgB,GAKlB;QACF,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;IAEF,6EAA6E;IAC7E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IACxC,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,gBAAgB,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC;IAE7C,sEAAsE;IACtE,gEAAgE;IAChE,yEAAyE;IACzE,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QACvE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;IAC3C,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,sCAAsC;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACvD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,WAAW,CAC3C,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,gBAAgB,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,CAAC;IAED,gCAAgC;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QACD,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,OAAO,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;AACpC,CAAC;AAcD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IACjD,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IACvC,WAAW,EAAE,GAAG;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAYF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;IAEtE,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;QACvC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,cAAkC,EAClC,SAA2B,mBAAmB,EAAE;IAEhD,MAAM,KAAK,GAAG,cAAc,IAAI,MAAM,CAAC,YAAY,CAAC;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,eAAe;IACf,cAAc;IACd,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,uBAAuB;IACvB,gBAAgB;IAChB,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;CACd,CAAC;AAYX;;;GAGG;AACH,SAAS,aAAa,CACpB,KAAyB,EACzB,MAAc,EACd,KAA0B,EAC1B,QAA6B;IAE7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC;YACnC,CAAC,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzF,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,WAAW,EAAE,CAChG,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAY,EAAE,OAA2B;IAClF,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,cAA6C,EAAE;IAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrG,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE5G,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,OAA2B,EAAW,EAAE;QACrE,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/F,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/E,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,WAAW;SACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;AAClC,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAChD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,GAAG,CACR,KAAK;aACF,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;aACxC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC;KACF,CAAC;IAEF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClE,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvE,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACzC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAE3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;QACzD,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC;IACzE,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC;AACjG,CAAC;AAuED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE;QACH,OAAO,EAAE,KAAK;KACf;IACD,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC;IAC/C,wBAAwB,EAAE,KAAK;IAC/B,kBAAkB,EAAE,IAAI;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC9B,IACE,CAAC,GAAG;QACJ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EACd,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,UAAU,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;SACrD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACjC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACvD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG;YACZ,GAAG,IAAI,GAAG,CACR,QAAQ;iBACL,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC3D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC;SACF,CAAC;QACF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,WAAW,EAAE,CAAC;IACxE,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;IACtD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC;IACzD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;IACtD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,GAAG,CAAC;IAExD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE7C,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,6CAA6C;IAC7C,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,WAAW,CAAC;IAEtD,OAAO;QACL,SAAS,EAAE,gBAAgB,EAAE;QAC7B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,EAAE,CAAC;QACvD,IAAI;QACJ,WAAW,EAAE,cAAc,EAAE;QAC7B,QAAQ;QACR,WAAW;QACX,GAAG,EAAE,YAAY,EAAE;QACnB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,EAAE,EAAE,CAAC;QACjE,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,EAAE,EAAE,CAAC;QAChE,WAAW,EAAE,cAAc,EAAE;QAC7B,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC;QACnC,wBAAwB,EAAE,wBAAwB,EAAE;QACpD,kBAAkB,EAAE,qBAAqB,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAOjC;IACC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACjE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC;IAC7E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,8CAA8C,CACpF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,yEAAyE"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Run one business SQL tool on the read-only connection.
|
|
3
3
|
*/
|
|
4
|
+
import { type ParsedName } from '../db/sqlServices.js';
|
|
4
5
|
import type { StoredTool } from './loader.js';
|
|
6
|
+
export type ParseOutcome = {
|
|
7
|
+
ok: true;
|
|
8
|
+
} | {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: string;
|
|
11
|
+
violations?: string[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Decide whether PARSE_STATEMENT rows describe a query.
|
|
15
|
+
* Shared by tool execution and `validate-tools --connect`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function classifyParsedStatement(parsed: ParsedName[]): ParseOutcome;
|
|
5
18
|
export interface CustomToolQueryResult {
|
|
6
19
|
success: boolean;
|
|
7
20
|
data?: unknown[];
|
|
@@ -19,4 +32,14 @@ export declare function executeCustomTool(tool: StoredTool, args: Record<string,
|
|
|
19
32
|
sessionId?: string;
|
|
20
33
|
defaultSchema?: string;
|
|
21
34
|
}): Promise<CustomToolQueryResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Parameter values in bind order, after defaults. The audit log uses the same list the query runs.
|
|
37
|
+
*/
|
|
38
|
+
export declare function bindCustomToolArgs(tool: StoredTool, args: Record<string, unknown>): {
|
|
39
|
+
ok: true;
|
|
40
|
+
params: unknown[];
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
error: string;
|
|
44
|
+
};
|
|
22
45
|
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/customTools/execute.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/customTools/execute.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9C,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAExD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAiB1E;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3D,OAAO,CAAC,qBAAqB,CAAC,CAoDhC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAUhE"}
|
|
@@ -8,19 +8,41 @@ import { applySqlRowLimit } from '../tools/sqlLimit.js';
|
|
|
8
8
|
import { createChildLogger } from '../utils/logger.js';
|
|
9
9
|
import { checkQuerySchemas } from '../utils/security/schemaAllowlist.js';
|
|
10
10
|
import { cacheParse, cachedParse } from './registry.js';
|
|
11
|
+
import { maskRows } from './masking.js';
|
|
11
12
|
import { formatSchemaIssues, inputSchemaFor } from './schema.js';
|
|
12
13
|
const log = createChildLogger({ component: 'custom-tools' });
|
|
14
|
+
/**
|
|
15
|
+
* Decide whether PARSE_STATEMENT rows describe a query.
|
|
16
|
+
* Shared by tool execution and `validate-tools --connect`.
|
|
17
|
+
*/
|
|
18
|
+
export function classifyParsedStatement(parsed) {
|
|
19
|
+
const types = [
|
|
20
|
+
...new Set(parsed.map((row) => row.statementType).filter((type) => Boolean(type))),
|
|
21
|
+
];
|
|
22
|
+
if (parsed.length === 0 || types.length === 0 || types.some((type) => type !== 'QUERY')) {
|
|
23
|
+
const found = types.join(', ') || 'unknown';
|
|
24
|
+
return {
|
|
25
|
+
ok: false,
|
|
26
|
+
error: parsed.length === 0
|
|
27
|
+
? 'The statement could not be parsed. Fix the SQL, or set QUERY_PARSE_CHECK=false to skip this check.'
|
|
28
|
+
: `PARSE_STATEMENT rejected the statement (type: ${found}). Only queries are allowed.`,
|
|
29
|
+
violations: parsed.length === 0
|
|
30
|
+
? ['The statement could not be parsed.']
|
|
31
|
+
: [`Statement type is ${found}.`],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return { ok: true };
|
|
35
|
+
}
|
|
13
36
|
/**
|
|
14
37
|
* Bind the tool's parameters and run its statement.
|
|
15
38
|
* The row cap is the tool's maxRows, or the default query limit, and never above QUERY_MAX_LIMIT.
|
|
16
39
|
*/
|
|
17
40
|
export async function executeCustomTool(tool, args, options = {}) {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return { success: false, error: formatSchemaIssues(parsed.error) };
|
|
41
|
+
const bound = bindCustomToolArgs(tool, args);
|
|
42
|
+
if (!bound.ok) {
|
|
43
|
+
return { success: false, error: bound.error };
|
|
22
44
|
}
|
|
23
|
-
const values =
|
|
45
|
+
const values = bound.params;
|
|
24
46
|
const allowedSchemas = getAllowedSchemas();
|
|
25
47
|
if (allowedSchemas) {
|
|
26
48
|
const schemaResult = checkQuerySchemas(tool.sql, {
|
|
@@ -47,12 +69,16 @@ export async function executeCustomTool(tool, args, options = {}) {
|
|
|
47
69
|
const limitedSql = applySqlRowLimit(tool.sql, effectiveLimit);
|
|
48
70
|
try {
|
|
49
71
|
const result = await executeQuery(limitedSql, values, options.sessionId);
|
|
50
|
-
const
|
|
51
|
-
|
|
72
|
+
const limited = result.rows.slice(0, effectiveLimit);
|
|
73
|
+
const masked = maskRows(limited, new Map(Object.entries(tool.maskedColumns)));
|
|
74
|
+
if (!masked.ok) {
|
|
75
|
+
return { success: false, error: masked.error };
|
|
76
|
+
}
|
|
77
|
+
log.info({ tool: tool.name, rowCount: masked.rows.length, effectiveLimit }, 'Custom tool executed');
|
|
52
78
|
return {
|
|
53
79
|
success: true,
|
|
54
|
-
data: rows,
|
|
55
|
-
rowCount: rows.length,
|
|
80
|
+
data: masked.rows,
|
|
81
|
+
rowCount: masked.rows.length,
|
|
56
82
|
limitApplied: effectiveLimit,
|
|
57
83
|
};
|
|
58
84
|
}
|
|
@@ -62,6 +88,20 @@ export async function executeCustomTool(tool, args, options = {}) {
|
|
|
62
88
|
return { success: false, error: message };
|
|
63
89
|
}
|
|
64
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Parameter values in bind order, after defaults. The audit log uses the same list the query runs.
|
|
93
|
+
*/
|
|
94
|
+
export function bindCustomToolArgs(tool, args) {
|
|
95
|
+
const filled = applyDefaults(tool.parameters, args);
|
|
96
|
+
const parsed = inputSchemaFor(tool.parameters).safeParse(filled);
|
|
97
|
+
if (!parsed.success) {
|
|
98
|
+
return { ok: false, error: formatSchemaIssues(parsed.error) };
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
ok: true,
|
|
102
|
+
params: tool.placeholderNames.map((name) => bindValue(parsed.data[name])),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
65
105
|
function applyDefaults(parameters, args) {
|
|
66
106
|
const filled = { ...args };
|
|
67
107
|
for (const [name, param] of Object.entries(parameters)) {
|
|
@@ -96,25 +136,7 @@ async function ensureParsed(tool, sessionId) {
|
|
|
96
136
|
}
|
|
97
137
|
try {
|
|
98
138
|
const parsed = await parseStatement(tool.sql, sessionId);
|
|
99
|
-
const
|
|
100
|
-
...new Set(parsed.map((row) => row.statementType).filter((type) => Boolean(type))),
|
|
101
|
-
];
|
|
102
|
-
let outcome;
|
|
103
|
-
if (parsed.length === 0 || types.length === 0 || types.some((type) => type !== 'QUERY')) {
|
|
104
|
-
const found = types.join(', ') || 'unknown';
|
|
105
|
-
outcome = {
|
|
106
|
-
ok: false,
|
|
107
|
-
error: parsed.length === 0
|
|
108
|
-
? 'The statement could not be parsed. Fix the SQL, or set QUERY_PARSE_CHECK=false to skip this check.'
|
|
109
|
-
: `PARSE_STATEMENT rejected the statement (type: ${found}). Only queries are allowed.`,
|
|
110
|
-
violations: parsed.length === 0
|
|
111
|
-
? ['The statement could not be parsed.']
|
|
112
|
-
: [`Statement type is ${found}.`],
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
outcome = { ok: true };
|
|
117
|
-
}
|
|
139
|
+
const outcome = classifyParsedStatement(parsed);
|
|
118
140
|
cacheParse(tool.name, outcome);
|
|
119
141
|
return outcome;
|
|
120
142
|
}
|