@ibm/ibmi-mcp-server 0.3.2 → 0.4.1

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 (139) hide show
  1. package/README.md +36 -24
  2. package/dist/cli/commands/columns.d.ts +7 -0
  3. package/dist/cli/commands/columns.d.ts.map +1 -0
  4. package/dist/cli/commands/columns.js +29 -0
  5. package/dist/cli/commands/columns.js.map +1 -0
  6. package/dist/cli/commands/completion.d.ts +10 -0
  7. package/dist/cli/commands/completion.d.ts.map +1 -0
  8. package/dist/cli/commands/completion.js +225 -0
  9. package/dist/cli/commands/completion.js.map +1 -0
  10. package/dist/cli/commands/related.d.ts +7 -0
  11. package/dist/cli/commands/related.d.ts.map +1 -0
  12. package/dist/cli/commands/related.js +32 -0
  13. package/dist/cli/commands/related.js.map +1 -0
  14. package/dist/cli/commands/schemas.d.ts +7 -0
  15. package/dist/cli/commands/schemas.d.ts.map +1 -0
  16. package/dist/cli/commands/schemas.js +49 -0
  17. package/dist/cli/commands/schemas.js.map +1 -0
  18. package/dist/cli/commands/sql.d.ts +8 -0
  19. package/dist/cli/commands/sql.d.ts.map +1 -0
  20. package/dist/cli/commands/sql.js +106 -0
  21. package/dist/cli/commands/sql.js.map +1 -0
  22. package/dist/cli/commands/system.d.ts +11 -0
  23. package/dist/cli/commands/system.d.ts.map +1 -0
  24. package/dist/cli/commands/system.js +263 -0
  25. package/dist/cli/commands/system.js.map +1 -0
  26. package/dist/cli/commands/tables.d.ts +7 -0
  27. package/dist/cli/commands/tables.d.ts.map +1 -0
  28. package/dist/cli/commands/tables.js +48 -0
  29. package/dist/cli/commands/tables.js.map +1 -0
  30. package/dist/cli/commands/tool.d.ts +18 -0
  31. package/dist/cli/commands/tool.d.ts.map +1 -0
  32. package/dist/cli/commands/tool.js +194 -0
  33. package/dist/cli/commands/tool.js.map +1 -0
  34. package/dist/cli/commands/tools-list.d.ts +20 -0
  35. package/dist/cli/commands/tools-list.d.ts.map +1 -0
  36. package/dist/cli/commands/tools-list.js +209 -0
  37. package/dist/cli/commands/tools-list.js.map +1 -0
  38. package/dist/cli/commands/validate.d.ts +7 -0
  39. package/dist/cli/commands/validate.d.ts.map +1 -0
  40. package/dist/cli/commands/validate.js +77 -0
  41. package/dist/cli/commands/validate.js.map +1 -0
  42. package/dist/cli/config/credentials.d.ts +21 -0
  43. package/dist/cli/config/credentials.d.ts.map +1 -0
  44. package/dist/cli/config/credentials.js +96 -0
  45. package/dist/cli/config/credentials.js.map +1 -0
  46. package/dist/cli/config/index.d.ts +10 -0
  47. package/dist/cli/config/index.d.ts.map +1 -0
  48. package/dist/cli/config/index.js +9 -0
  49. package/dist/cli/config/index.js.map +1 -0
  50. package/dist/cli/config/loader.d.ts +36 -0
  51. package/dist/cli/config/loader.d.ts.map +1 -0
  52. package/dist/cli/config/loader.js +206 -0
  53. package/dist/cli/config/loader.js.map +1 -0
  54. package/dist/cli/config/resolver.d.ts +26 -0
  55. package/dist/cli/config/resolver.d.ts.map +1 -0
  56. package/dist/cli/config/resolver.js +102 -0
  57. package/dist/cli/config/resolver.js.map +1 -0
  58. package/dist/cli/config/schema.d.ts +128 -0
  59. package/dist/cli/config/schema.d.ts.map +1 -0
  60. package/dist/cli/config/schema.js +37 -0
  61. package/dist/cli/config/schema.js.map +1 -0
  62. package/dist/cli/config/types.d.ts +59 -0
  63. package/dist/cli/config/types.d.ts.map +1 -0
  64. package/dist/cli/config/types.js +6 -0
  65. package/dist/cli/config/types.js.map +1 -0
  66. package/dist/cli/formatters/output.d.ts +60 -0
  67. package/dist/cli/formatters/output.d.ts.map +1 -0
  68. package/dist/cli/formatters/output.js +190 -0
  69. package/dist/cli/formatters/output.js.map +1 -0
  70. package/dist/cli/index.d.ts +13 -0
  71. package/dist/cli/index.d.ts.map +1 -0
  72. package/dist/cli/index.js +98 -0
  73. package/dist/cli/index.js.map +1 -0
  74. package/dist/cli/utils/command-helpers.d.ts +47 -0
  75. package/dist/cli/utils/command-helpers.d.ts.map +1 -0
  76. package/dist/cli/utils/command-helpers.js +211 -0
  77. package/dist/cli/utils/command-helpers.js.map +1 -0
  78. package/dist/cli/utils/connection.d.ts +20 -0
  79. package/dist/cli/utils/connection.d.ts.map +1 -0
  80. package/dist/cli/utils/connection.js +37 -0
  81. package/dist/cli/utils/connection.js.map +1 -0
  82. package/dist/cli/utils/exit-codes.d.ts +48 -0
  83. package/dist/cli/utils/exit-codes.d.ts.map +1 -0
  84. package/dist/cli/utils/exit-codes.js +111 -0
  85. package/dist/cli/utils/exit-codes.js.map +1 -0
  86. package/dist/cli/utils/yaml-loader.d.ts +69 -0
  87. package/dist/cli/utils/yaml-loader.d.ts.map +1 -0
  88. package/dist/cli/utils/yaml-loader.js +135 -0
  89. package/dist/cli/utils/yaml-loader.js.map +1 -0
  90. package/dist/cli/utils/yaml-to-commander.d.ts +26 -0
  91. package/dist/cli/utils/yaml-to-commander.d.ts.map +1 -0
  92. package/dist/cli/utils/yaml-to-commander.js +156 -0
  93. package/dist/cli/utils/yaml-to-commander.js.map +1 -0
  94. package/dist/config/index.d.ts +1 -0
  95. package/dist/config/index.d.ts.map +1 -1
  96. package/dist/config/index.js +9 -10
  97. package/dist/config/index.js.map +1 -1
  98. package/dist/config/resolver.d.ts.map +1 -1
  99. package/dist/config/resolver.js +6 -0
  100. package/dist/config/resolver.js.map +1 -1
  101. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -1
  102. package/dist/ibmi-mcp-server/tools/executeSql.tool.js +6 -2
  103. package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -1
  104. package/dist/ibmi-mcp-server/tools/generateSql.tool.js +1 -1
  105. package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -1
  106. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.d.ts +93 -0
  107. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.d.ts.map +1 -0
  108. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.js +198 -0
  109. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.js.map +1 -0
  110. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.d.ts +87 -0
  111. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.d.ts.map +1 -0
  112. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.js +163 -0
  113. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.js.map +1 -0
  114. package/dist/ibmi-mcp-server/tools/index.d.ts +175 -0
  115. package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -1
  116. package/dist/ibmi-mcp-server/tools/index.js +27 -1
  117. package/dist/ibmi-mcp-server/tools/index.js.map +1 -1
  118. package/dist/ibmi-mcp-server/tools/listSchemas.tool.d.ts +107 -0
  119. package/dist/ibmi-mcp-server/tools/listSchemas.tool.d.ts.map +1 -0
  120. package/dist/ibmi-mcp-server/tools/listSchemas.tool.js +195 -0
  121. package/dist/ibmi-mcp-server/tools/listSchemas.tool.js.map +1 -0
  122. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.d.ts +107 -0
  123. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.d.ts.map +1 -0
  124. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.js +198 -0
  125. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.js.map +1 -0
  126. package/dist/ibmi-mcp-server/tools/validateQuery.tool.d.ts +229 -0
  127. package/dist/ibmi-mcp-server/tools/validateQuery.tool.d.ts.map +1 -0
  128. package/dist/ibmi-mcp-server/tools/validateQuery.tool.js +401 -0
  129. package/dist/ibmi-mcp-server/tools/validateQuery.tool.js.map +1 -0
  130. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +2 -0
  131. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -1
  132. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +21 -7
  133. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -1
  134. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +1 -1
  135. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
  136. package/dist/mcp-server/tools/index.d.ts.map +1 -1
  137. package/dist/mcp-server/tools/index.js +5 -3
  138. package/dist/mcp-server/tools/index.js.map +1 -1
  139. package/package.json +6 -4
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Get Related Objects Tool
3
+ *
4
+ * Discovers all objects that depend on a specified database file using
5
+ * the SYSTOOLS.RELATED_OBJECTS table function. Returns views, indexes,
6
+ * triggers, foreign keys, logical files, and other dependent objects.
7
+ * Part of the default text-to-SQL toolset.
8
+ *
9
+ * @module getRelatedObjects.tool
10
+ */
11
+ import { z } from "zod";
12
+ import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
13
+ import { logger } from "../../utils/internal/logger.js";
14
+ import { IBMiConnectionPool } from "../services/connectionPool.js";
15
+ import { defineTool } from "../../mcp-server/tools/utils/tool-factory.js";
16
+ // =============================================================================
17
+ // Constants
18
+ // =============================================================================
19
+ const VALID_OBJECT_TYPES = [
20
+ "ALIAS",
21
+ "FOREIGN KEY",
22
+ "FUNCTION",
23
+ "HISTORY TABLE",
24
+ "INDEX",
25
+ "KEYED LOGICAL FILE",
26
+ "LOGICAL FILE",
27
+ "MASK",
28
+ "MATERIALIZED QUERY TABLE",
29
+ "PERMISSION",
30
+ "PROCEDURE",
31
+ "TEXT INDEX",
32
+ "TRIGGER",
33
+ "VARIABLE",
34
+ "VIEW",
35
+ "XML SCHEMA",
36
+ ];
37
+ // =============================================================================
38
+ // Schemas
39
+ // =============================================================================
40
+ const GetRelatedObjectsInputSchema = z.object({
41
+ library_name: z
42
+ .string()
43
+ .min(1, "Library name cannot be empty.")
44
+ .max(10, "Library name cannot exceed 10 characters.")
45
+ .describe("Library containing the database file (e.g., 'APPLIB', 'MYLIB')"),
46
+ file_name: z
47
+ .string()
48
+ .min(1, "File name cannot be empty.")
49
+ .max(10, "File name cannot exceed 10 characters.")
50
+ .describe("System name of the database file to find dependents for (e.g., 'ORDERS', 'CUSTOMER')"),
51
+ object_type_filter: z
52
+ .enum(VALID_OBJECT_TYPES)
53
+ .optional()
54
+ .describe("Optional: filter results to a specific dependent object type (e.g., 'INDEX', 'VIEW', 'TRIGGER'). Omit to return all types."),
55
+ });
56
+ const GetRelatedObjectsOutputSchema = z.object({
57
+ success: z.boolean().describe("Whether the query executed successfully."),
58
+ data: z
59
+ .array(z.record(z.unknown()))
60
+ .optional()
61
+ .describe("Array of dependent object records. Each record contains: SOURCE_SCHEMA_NAME, SOURCE_SQL_NAME (referenced object), SQL_OBJECT_TYPE (dependent type), SCHEMA_NAME, SQL_NAME (dependent object), LIBRARY_NAME, SYSTEM_NAME, OBJECT_OWNER, LONG_COMMENT, OBJECT_TEXT, LAST_ALTERED."),
62
+ rowCount: z
63
+ .number()
64
+ .optional()
65
+ .describe("Number of dependent objects returned."),
66
+ executionTime: z
67
+ .number()
68
+ .optional()
69
+ .describe("Query execution time in milliseconds."),
70
+ error: z
71
+ .object({
72
+ code: z.string().describe("Error code"),
73
+ message: z.string().describe("Error message"),
74
+ details: z.record(z.unknown()).optional().describe("Error details"),
75
+ })
76
+ .optional()
77
+ .describe("Error information if the query failed."),
78
+ });
79
+ // =============================================================================
80
+ // Business Logic
81
+ // =============================================================================
82
+ export async function getRelatedObjectsLogic(params, appContext, _sdkContext) {
83
+ logger.debug({ ...appContext, toolInput: params }, "Processing get related objects logic.");
84
+ const startTime = Date.now();
85
+ const bindParams = [
86
+ params.library_name,
87
+ params.file_name,
88
+ ];
89
+ const whereClause = params.object_type_filter
90
+ ? "\n WHERE SQL_OBJECT_TYPE = ?"
91
+ : "";
92
+ if (params.object_type_filter) {
93
+ bindParams.push(params.object_type_filter);
94
+ }
95
+ const sql = `
96
+ SELECT *
97
+ FROM TABLE(SYSTOOLS.RELATED_OBJECTS(
98
+ LIBRARY_NAME => ?,
99
+ FILE_NAME => ?
100
+ ))${whereClause}
101
+ ORDER BY SQL_OBJECT_TYPE, SQL_NAME
102
+ `.trim();
103
+ try {
104
+ const result = await IBMiConnectionPool.executeQuery(sql, bindParams, appContext);
105
+ const executionTime = Date.now() - startTime;
106
+ if (!result.data) {
107
+ return {
108
+ success: true,
109
+ data: [],
110
+ rowCount: 0,
111
+ executionTime,
112
+ };
113
+ }
114
+ const typedData = result.data;
115
+ // Strip null/undefined values from each row to reduce response size
116
+ const filteredData = typedData?.map((row) => Object.fromEntries(Object.entries(row).filter(([, v]) => v != null)));
117
+ return {
118
+ success: true,
119
+ data: filteredData,
120
+ rowCount: filteredData?.length ?? 0,
121
+ executionTime,
122
+ };
123
+ }
124
+ catch (error) {
125
+ const executionTime = Date.now() - startTime;
126
+ logger.error({
127
+ ...appContext,
128
+ error: error instanceof Error ? error.message : String(error),
129
+ library: params.library_name,
130
+ file: params.file_name,
131
+ executionTime,
132
+ }, "Get related objects query failed.");
133
+ if (error instanceof McpError) {
134
+ return {
135
+ success: false,
136
+ executionTime,
137
+ error: {
138
+ code: String(error.code),
139
+ message: error.message,
140
+ details: error.details,
141
+ },
142
+ };
143
+ }
144
+ return {
145
+ success: false,
146
+ executionTime,
147
+ error: {
148
+ code: String(JsonRpcErrorCode.DatabaseError),
149
+ message: `Failed to get related objects: ${error instanceof Error ? error.message : String(error)}`,
150
+ },
151
+ };
152
+ }
153
+ }
154
+ // =============================================================================
155
+ // Response Formatter
156
+ // =============================================================================
157
+ const getRelatedObjectsResponseFormatter = (result) => {
158
+ if (!result.success) {
159
+ const errorMessage = result.error?.message || "Failed to get related objects";
160
+ const errorDetails = result.error?.details
161
+ ? `\n\nDetails:\n${JSON.stringify(result.error.details, null, 2)}`
162
+ : "";
163
+ return [{ type: "text", text: `Error: ${errorMessage}${errorDetails}` }];
164
+ }
165
+ if (!result.data || result.data.length === 0) {
166
+ return [
167
+ {
168
+ type: "text",
169
+ text: `No dependent objects found.\nExecution time: ${result.executionTime}ms\n\nNote: Returns no results if the input is an SQL alias, program-described file, or does not exist.`,
170
+ },
171
+ ];
172
+ }
173
+ const resultJson = JSON.stringify(result.data, null, 2);
174
+ return [
175
+ {
176
+ type: "text",
177
+ text: `Found ${result.rowCount} dependent object(s).\nExecution time: ${result.executionTime}ms\n\nRelated objects:\n${resultJson}`,
178
+ },
179
+ ];
180
+ };
181
+ // =============================================================================
182
+ // Tool Definition
183
+ // =============================================================================
184
+ export const getRelatedObjectsTool = defineTool({
185
+ name: "get_related_objects",
186
+ title: "Get Related Objects",
187
+ description: "Get all objects that depend on a database file — views, indexes, triggers, foreign keys, logical files, and more. Use for impact analysis before schema changes or to understand a table's dependency graph.",
188
+ inputSchema: GetRelatedObjectsInputSchema,
189
+ outputSchema: GetRelatedObjectsOutputSchema,
190
+ logic: getRelatedObjectsLogic,
191
+ responseFormatter: getRelatedObjectsResponseFormatter,
192
+ annotations: {
193
+ readOnlyHint: true,
194
+ destructiveHint: false,
195
+ openWorldHint: false,
196
+ },
197
+ });
198
+ //# sourceMappingURL=getRelatedObjects.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRelatedObjects.tool.js","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/getRelatedObjects.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Get Table Columns Tool
3
+ *
4
+ * Returns column details for a table including name, type, length,
5
+ * nullable, and description. Part of the default text-to-SQL toolset.
6
+ *
7
+ * @module getTableColumns.tool
8
+ */
9
+ import { z } from "zod";
10
+ import type { RequestContext } from "../../utils/index.js";
11
+ import type { SdkContext } from "../../mcp-server/tools/utils/types.js";
12
+ declare const GetTableColumnsInputSchema: z.ZodObject<{
13
+ schema_name: z.ZodString;
14
+ table_name: z.ZodString;
15
+ }, "strip", z.ZodTypeAny, {
16
+ schema_name: string;
17
+ table_name: string;
18
+ }, {
19
+ schema_name: string;
20
+ table_name: string;
21
+ }>;
22
+ declare const GetTableColumnsOutputSchema: z.ZodObject<{
23
+ success: z.ZodBoolean;
24
+ data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
25
+ rowCount: z.ZodOptional<z.ZodNumber>;
26
+ executionTime: z.ZodOptional<z.ZodNumber>;
27
+ error: z.ZodOptional<z.ZodObject<{
28
+ code: z.ZodString;
29
+ message: z.ZodString;
30
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ code: string;
33
+ message: string;
34
+ details?: Record<string, unknown> | undefined;
35
+ }, {
36
+ code: string;
37
+ message: string;
38
+ details?: Record<string, unknown> | undefined;
39
+ }>>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ success: boolean;
42
+ error?: {
43
+ code: string;
44
+ message: string;
45
+ details?: Record<string, unknown> | undefined;
46
+ } | undefined;
47
+ data?: Record<string, unknown>[] | undefined;
48
+ executionTime?: number | undefined;
49
+ rowCount?: number | undefined;
50
+ }, {
51
+ success: boolean;
52
+ error?: {
53
+ code: string;
54
+ message: string;
55
+ details?: Record<string, unknown> | undefined;
56
+ } | undefined;
57
+ data?: Record<string, unknown>[] | undefined;
58
+ executionTime?: number | undefined;
59
+ rowCount?: number | undefined;
60
+ }>;
61
+ type GetTableColumnsInput = z.infer<typeof GetTableColumnsInputSchema>;
62
+ type GetTableColumnsOutput = z.infer<typeof GetTableColumnsOutputSchema>;
63
+ export declare function getTableColumnsLogic(params: GetTableColumnsInput, appContext: RequestContext, _sdkContext: SdkContext): Promise<GetTableColumnsOutput>;
64
+ export declare const getTableColumnsTool: import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
65
+ schema_name: z.ZodString;
66
+ table_name: z.ZodString;
67
+ }, {
68
+ success: z.ZodBoolean;
69
+ data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
70
+ rowCount: z.ZodOptional<z.ZodNumber>;
71
+ executionTime: z.ZodOptional<z.ZodNumber>;
72
+ error: z.ZodOptional<z.ZodObject<{
73
+ code: z.ZodString;
74
+ message: z.ZodString;
75
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ code: string;
78
+ message: string;
79
+ details?: Record<string, unknown> | undefined;
80
+ }, {
81
+ code: string;
82
+ message: string;
83
+ details?: Record<string, unknown> | undefined;
84
+ }>>;
85
+ }>;
86
+ export {};
87
+ //# sourceMappingURL=getTableColumns.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableColumns.tool.d.ts","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/getTableColumns.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAMxE,QAAA,MAAM,0BAA0B;;;;;;;;;EAa9B,CAAC;AAEH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB/B,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACvE,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAMzE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,qBAAqB,CAAC,CAgGhC;AA8BD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAc9B,CAAC"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Get Table Columns Tool
3
+ *
4
+ * Returns column details for a table including name, type, length,
5
+ * nullable, and description. Part of the default text-to-SQL toolset.
6
+ *
7
+ * @module getTableColumns.tool
8
+ */
9
+ import { z } from "zod";
10
+ import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
11
+ import { logger } from "../../utils/internal/logger.js";
12
+ import { IBMiConnectionPool } from "../services/connectionPool.js";
13
+ import { defineTool } from "../../mcp-server/tools/utils/tool-factory.js";
14
+ // =============================================================================
15
+ // Schemas
16
+ // =============================================================================
17
+ const GetTableColumnsInputSchema = z.object({
18
+ schema_name: z
19
+ .string()
20
+ .min(1, "Schema name cannot be empty.")
21
+ .max(128, "Schema name cannot exceed 128 characters.")
22
+ .describe("Schema name containing the table (e.g., 'QIWS', 'SAMPLE', 'MYLIB')"),
23
+ table_name: z
24
+ .string()
25
+ .min(1, "Table name cannot be empty.")
26
+ .max(128, "Table name cannot exceed 128 characters.")
27
+ .describe("Table name to get columns for (e.g., 'QCUSTCDT', 'EMPLOYEE')"),
28
+ });
29
+ const GetTableColumnsOutputSchema = z.object({
30
+ success: z.boolean().describe("Whether the query executed successfully."),
31
+ data: z
32
+ .array(z.record(z.unknown()))
33
+ .optional()
34
+ .describe("Array of column detail records. Each record contains: COLUMN_NAME, SYSTEM_COLUMN_NAME (10-char DDS name), DATA_TYPE, LENGTH, NUMERIC_SCALE, NUMERIC_PRECISION, IS_NULLABLE (Y/N), HAS_DEFAULT (Y/N), COLUMN_DEFAULT, COLUMN_TEXT, COLUMN_HEADING (DDS heading), ORDINAL_POSITION, CCSID, HIDDEN (P=implicitly hidden, N=visible), IS_IDENTITY (YES/NO)."),
35
+ rowCount: z.number().optional().describe("Number of columns returned."),
36
+ executionTime: z
37
+ .number()
38
+ .optional()
39
+ .describe("Query execution time in milliseconds."),
40
+ error: z
41
+ .object({
42
+ code: z.string().describe("Error code"),
43
+ message: z.string().describe("Error message"),
44
+ details: z.record(z.unknown()).optional().describe("Error details"),
45
+ })
46
+ .optional()
47
+ .describe("Error information if the query failed."),
48
+ });
49
+ // =============================================================================
50
+ // Business Logic
51
+ // =============================================================================
52
+ export async function getTableColumnsLogic(params, appContext, _sdkContext) {
53
+ logger.debug({ ...appContext, toolInput: params }, "Processing get table columns logic.");
54
+ const startTime = Date.now();
55
+ const sql = `
56
+ SELECT COLUMN_NAME,
57
+ SYSTEM_COLUMN_NAME,
58
+ DATA_TYPE,
59
+ LENGTH,
60
+ NUMERIC_SCALE,
61
+ NUMERIC_PRECISION,
62
+ IS_NULLABLE,
63
+ HAS_DEFAULT,
64
+ COLUMN_DEFAULT,
65
+ COLUMN_TEXT,
66
+ COLUMN_HEADING,
67
+ ORDINAL_POSITION,
68
+ CCSID,
69
+ HIDDEN,
70
+ IS_IDENTITY
71
+ FROM QSYS2.SYSCOLUMNS2
72
+ WHERE TABLE_SCHEMA = UPPER(?)
73
+ AND TABLE_NAME = UPPER(?)
74
+ ORDER BY ORDINAL_POSITION
75
+ `.trim();
76
+ try {
77
+ const result = await IBMiConnectionPool.executeQuery(sql, [params.schema_name, params.table_name], appContext);
78
+ const executionTime = Date.now() - startTime;
79
+ if (!result.data) {
80
+ return {
81
+ success: true,
82
+ data: [],
83
+ rowCount: 0,
84
+ executionTime,
85
+ };
86
+ }
87
+ const typedData = result.data;
88
+ // Strip null/undefined values from each row to reduce response size
89
+ const filteredData = typedData?.map((row) => Object.fromEntries(Object.entries(row).filter(([, v]) => v != null)));
90
+ return {
91
+ success: true,
92
+ data: filteredData,
93
+ rowCount: filteredData?.length ?? 0,
94
+ executionTime,
95
+ };
96
+ }
97
+ catch (error) {
98
+ const executionTime = Date.now() - startTime;
99
+ logger.error({
100
+ ...appContext,
101
+ error: error instanceof Error ? error.message : String(error),
102
+ schema: params.schema_name,
103
+ table: params.table_name,
104
+ executionTime,
105
+ }, "Get table columns query failed.");
106
+ if (error instanceof McpError) {
107
+ return {
108
+ success: false,
109
+ executionTime,
110
+ error: {
111
+ code: String(error.code),
112
+ message: error.message,
113
+ details: error.details,
114
+ },
115
+ };
116
+ }
117
+ return {
118
+ success: false,
119
+ executionTime,
120
+ error: {
121
+ code: String(JsonRpcErrorCode.DatabaseError),
122
+ message: `Failed to get table columns: ${error instanceof Error ? error.message : String(error)}`,
123
+ },
124
+ };
125
+ }
126
+ }
127
+ // =============================================================================
128
+ // Response Formatter
129
+ // =============================================================================
130
+ const getTableColumnsResponseFormatter = (result) => {
131
+ if (!result.success) {
132
+ const errorMessage = result.error?.message || "Failed to get table columns";
133
+ const errorDetails = result.error?.details
134
+ ? `\n\nDetails:\n${JSON.stringify(result.error.details, null, 2)}`
135
+ : "";
136
+ return [{ type: "text", text: `Error: ${errorMessage}${errorDetails}` }];
137
+ }
138
+ const resultJson = JSON.stringify(result.data, null, 2);
139
+ return [
140
+ {
141
+ type: "text",
142
+ text: `Found ${result.rowCount} columns.\nExecution time: ${result.executionTime}ms\n\nColumns:\n${resultJson}`,
143
+ },
144
+ ];
145
+ };
146
+ // =============================================================================
147
+ // Tool Definition
148
+ // =============================================================================
149
+ export const getTableColumnsTool = defineTool({
150
+ name: "get_table_columns",
151
+ title: "Get Table Columns",
152
+ description: "Get column metadata for a table including names, data types, lengths, nullability, defaults, and descriptions. Use this to understand table structure before writing SQL queries.",
153
+ inputSchema: GetTableColumnsInputSchema,
154
+ outputSchema: GetTableColumnsOutputSchema,
155
+ logic: getTableColumnsLogic,
156
+ responseFormatter: getTableColumnsResponseFormatter,
157
+ annotations: {
158
+ readOnlyHint: true,
159
+ destructiveHint: false,
160
+ openWorldHint: false,
161
+ },
162
+ });
163
+ //# sourceMappingURL=getTableColumns.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableColumns.tool.js","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/getTableColumns.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAG1E,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;SACtC,GAAG,CAAC,GAAG,EAAE,2CAA2C,CAAC;SACrD,QAAQ,CACP,oEAAoE,CACrE;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;SACrC,GAAG,CAAC,GAAG,EAAE,0CAA0C,CAAC;SACpD,QAAQ,CAAC,8DAA8D,CAAC;CAC5E,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzE,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CACP,yVAAyV,CAC1V;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KACpE,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC,CAAC;AAKH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA4B,EAC5B,UAA0B,EAC1B,WAAuB;IAEvB,MAAM,CAAC,KAAK,CACV,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,EACpC,qCAAqC,CACtC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;GAoBX,CAAC,IAAI,EAAE,CAAC;IAET,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAClD,GAAG,EACH,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,EACvC,UAAU,CACX,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,CAAC;gBACX,aAAa;aACd,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAqC,CAAC;QAE/D,oEAAoE;QACpE,MAAM,YAAY,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CACrE,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;YACnC,aAAa;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE7C,MAAM,CAAC,KAAK,CACV;YACE,GAAG,UAAU;YACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,KAAK,EAAE,MAAM,CAAC,UAAU;YACxB,aAAa;SACd,EACD,iCAAiC,CAClC,CAAC;QAEF,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;gBAC5C,OAAO,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAClG;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,MAAM,gCAAgC,GAAG,CACvC,MAA6B,EACb,EAAE;IAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC;QAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO;YACxC,CAAC,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS,MAAM,CAAC,QAAQ,8BAA8B,MAAM,CAAC,aAAa,mBAAmB,UAAU,EAAE;SAChH;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EACT,mLAAmL;IACrL,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,2BAA2B;IACzC,KAAK,EAAE,oBAAoB;IAC3B,iBAAiB,EAAE,gCAAgC;IACnD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,KAAK;KACrB;CACF,CAAC,CAAC"}
@@ -2,6 +2,8 @@
2
2
  * Tool Definitions Barrel Export
3
3
  *
4
4
  * Centralized export of all factory pattern tool definitions.
5
+ * Includes the default text-to-SQL toolset (controlled by IBMI_ENABLE_DEFAULT_TOOLS)
6
+ * alongside always-available tools.
5
7
  *
6
8
  * @module tools/definitions
7
9
  */
@@ -81,5 +83,178 @@ export declare const allToolDefinitions: (import("../../mcp-server/tools/utils/t
81
83
  message: string;
82
84
  details?: Record<string, unknown> | undefined;
83
85
  }>>;
86
+ }> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
87
+ filter: import("zod").ZodOptional<import("zod").ZodString>;
88
+ include_system: import("zod").ZodDefault<import("zod").ZodBoolean>;
89
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
90
+ offset: import("zod").ZodDefault<import("zod").ZodNumber>;
91
+ }, {
92
+ success: import("zod").ZodBoolean;
93
+ data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
94
+ rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
95
+ hasMore: import("zod").ZodOptional<import("zod").ZodBoolean>;
96
+ limit: import("zod").ZodOptional<import("zod").ZodNumber>;
97
+ offset: import("zod").ZodOptional<import("zod").ZodNumber>;
98
+ executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
99
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
100
+ code: import("zod").ZodString;
101
+ message: import("zod").ZodString;
102
+ details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
103
+ }, "strip", import("zod").ZodTypeAny, {
104
+ code: string;
105
+ message: string;
106
+ details?: Record<string, unknown> | undefined;
107
+ }, {
108
+ code: string;
109
+ message: string;
110
+ details?: Record<string, unknown> | undefined;
111
+ }>>;
112
+ }> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
113
+ schema_name: import("zod").ZodString;
114
+ table_filter: import("zod").ZodDefault<import("zod").ZodString>;
115
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
116
+ offset: import("zod").ZodDefault<import("zod").ZodNumber>;
117
+ }, {
118
+ success: import("zod").ZodBoolean;
119
+ data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
120
+ rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
121
+ hasMore: import("zod").ZodOptional<import("zod").ZodBoolean>;
122
+ limit: import("zod").ZodOptional<import("zod").ZodNumber>;
123
+ offset: import("zod").ZodOptional<import("zod").ZodNumber>;
124
+ executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
125
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
126
+ code: import("zod").ZodString;
127
+ message: import("zod").ZodString;
128
+ details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
129
+ }, "strip", import("zod").ZodTypeAny, {
130
+ code: string;
131
+ message: string;
132
+ details?: Record<string, unknown> | undefined;
133
+ }, {
134
+ code: string;
135
+ message: string;
136
+ details?: Record<string, unknown> | undefined;
137
+ }>>;
138
+ }> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
139
+ schema_name: import("zod").ZodString;
140
+ table_name: import("zod").ZodString;
141
+ }, {
142
+ success: import("zod").ZodBoolean;
143
+ data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
144
+ rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
145
+ executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
146
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
147
+ code: import("zod").ZodString;
148
+ message: import("zod").ZodString;
149
+ details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
150
+ }, "strip", import("zod").ZodTypeAny, {
151
+ code: string;
152
+ message: string;
153
+ details?: Record<string, unknown> | undefined;
154
+ }, {
155
+ code: string;
156
+ message: string;
157
+ details?: Record<string, unknown> | undefined;
158
+ }>>;
159
+ }> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
160
+ sql_statement: import("zod").ZodString;
161
+ }, {
162
+ success: import("zod").ZodBoolean;
163
+ data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
164
+ rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
165
+ executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
166
+ objectValidation: import("zod").ZodOptional<import("zod").ZodObject<{
167
+ tables: import("zod").ZodObject<{
168
+ valid: import("zod").ZodArray<import("zod").ZodString, "many">;
169
+ invalid: import("zod").ZodArray<import("zod").ZodString, "many">;
170
+ }, "strip", import("zod").ZodTypeAny, {
171
+ valid: string[];
172
+ invalid: string[];
173
+ }, {
174
+ valid: string[];
175
+ invalid: string[];
176
+ }>;
177
+ columns: import("zod").ZodObject<{
178
+ valid: import("zod").ZodArray<import("zod").ZodString, "many">;
179
+ invalid: import("zod").ZodArray<import("zod").ZodString, "many">;
180
+ }, "strip", import("zod").ZodTypeAny, {
181
+ valid: string[];
182
+ invalid: string[];
183
+ }, {
184
+ valid: string[];
185
+ invalid: string[];
186
+ }>;
187
+ routines: import("zod").ZodObject<{
188
+ valid: import("zod").ZodArray<import("zod").ZodString, "many">;
189
+ invalid: import("zod").ZodArray<import("zod").ZodString, "many">;
190
+ }, "strip", import("zod").ZodTypeAny, {
191
+ valid: string[];
192
+ invalid: string[];
193
+ }, {
194
+ valid: string[];
195
+ invalid: string[];
196
+ }>;
197
+ }, "strip", import("zod").ZodTypeAny, {
198
+ columns: {
199
+ valid: string[];
200
+ invalid: string[];
201
+ };
202
+ tables: {
203
+ valid: string[];
204
+ invalid: string[];
205
+ };
206
+ routines: {
207
+ valid: string[];
208
+ invalid: string[];
209
+ };
210
+ }, {
211
+ columns: {
212
+ valid: string[];
213
+ invalid: string[];
214
+ };
215
+ tables: {
216
+ valid: string[];
217
+ invalid: string[];
218
+ };
219
+ routines: {
220
+ valid: string[];
221
+ invalid: string[];
222
+ };
223
+ }>>;
224
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
225
+ code: import("zod").ZodString;
226
+ message: import("zod").ZodString;
227
+ details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
228
+ }, "strip", import("zod").ZodTypeAny, {
229
+ code: string;
230
+ message: string;
231
+ details?: Record<string, unknown> | undefined;
232
+ }, {
233
+ code: string;
234
+ message: string;
235
+ details?: Record<string, unknown> | undefined;
236
+ }>>;
237
+ }> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
238
+ library_name: import("zod").ZodString;
239
+ file_name: import("zod").ZodString;
240
+ object_type_filter: import("zod").ZodOptional<import("zod").ZodEnum<["ALIAS", "FOREIGN KEY", "FUNCTION", "HISTORY TABLE", "INDEX", "KEYED LOGICAL FILE", "LOGICAL FILE", "MASK", "MATERIALIZED QUERY TABLE", "PERMISSION", "PROCEDURE", "TEXT INDEX", "TRIGGER", "VARIABLE", "VIEW", "XML SCHEMA"]>>;
241
+ }, {
242
+ success: import("zod").ZodBoolean;
243
+ data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
244
+ rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
245
+ executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
246
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
247
+ code: import("zod").ZodString;
248
+ message: import("zod").ZodString;
249
+ details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
250
+ }, "strip", import("zod").ZodTypeAny, {
251
+ code: string;
252
+ message: string;
253
+ details?: Record<string, unknown> | undefined;
254
+ }, {
255
+ code: string;
256
+ message: string;
257
+ details?: Record<string, unknown> | undefined;
258
+ }>>;
84
259
  }>)[];
85
260
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAI9B,CAAC"}