@ibm/ibmi-mcp-server 0.4.5 → 0.5.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.
- package/README.md +2 -0
- package/dist/config/index.d.ts +20 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +95 -0
- package/dist/config/index.js.map +1 -1
- package/dist/ibmi-mcp-server/schemas/config.d.ts +58 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/schemas/config.js +35 -0
- package/dist/ibmi-mcp-server/schemas/config.js.map +1 -1
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +19 -1
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +30 -2
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -1
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +6 -2
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js +68 -8
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -1
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts +4 -2
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/services/connectionPool.js +6 -3
- package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -1
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts +19 -1
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/services/sourceManager.js +31 -2
- package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js +17 -3
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/index.d.ts +1 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js +42 -4
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -1
- package/dist/public/context.d.ts +5 -0
- package/dist/public/context.d.ts.map +1 -0
- package/dist/public/context.js +5 -0
- package/dist/public/context.js.map +1 -0
- package/dist/public/formatting.d.ts +5 -0
- package/dist/public/formatting.d.ts.map +1 -0
- package/dist/public/formatting.js +5 -0
- package/dist/public/formatting.js.map +1 -0
- package/dist/public/services.d.ts +8 -0
- package/dist/public/services.d.ts.map +1 -0
- package/dist/public/services.js +8 -0
- package/dist/public/services.js.map +1 -0
- package/dist/public/tools.d.ts +16 -0
- package/dist/public/tools.d.ts.map +1 -0
- package/dist/public/tools.js +15 -0
- package/dist/public/tools.js.map +1 -0
- package/package.json +20 -17
- package/dist/cli/commands/columns.d.ts +0 -7
- package/dist/cli/commands/columns.d.ts.map +0 -1
- package/dist/cli/commands/columns.js +0 -29
- package/dist/cli/commands/columns.js.map +0 -1
- package/dist/cli/commands/completion.d.ts +0 -10
- package/dist/cli/commands/completion.d.ts.map +0 -1
- package/dist/cli/commands/completion.js +0 -247
- package/dist/cli/commands/completion.js.map +0 -1
- package/dist/cli/commands/config.d.ts +0 -11
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -124
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/describe.d.ts +0 -9
- package/dist/cli/commands/describe.d.ts.map +0 -1
- package/dist/cli/commands/describe.js +0 -82
- package/dist/cli/commands/describe.js.map +0 -1
- package/dist/cli/commands/related.d.ts +0 -7
- package/dist/cli/commands/related.d.ts.map +0 -1
- package/dist/cli/commands/related.js +0 -32
- package/dist/cli/commands/related.js.map +0 -1
- package/dist/cli/commands/schemas.d.ts +0 -7
- package/dist/cli/commands/schemas.d.ts.map +0 -1
- package/dist/cli/commands/schemas.js +0 -49
- package/dist/cli/commands/schemas.js.map +0 -1
- package/dist/cli/commands/sql.d.ts +0 -8
- package/dist/cli/commands/sql.d.ts.map +0 -1
- package/dist/cli/commands/sql.js +0 -187
- package/dist/cli/commands/sql.js.map +0 -1
- package/dist/cli/commands/system.d.ts +0 -11
- package/dist/cli/commands/system.d.ts.map +0 -1
- package/dist/cli/commands/system.js +0 -263
- package/dist/cli/commands/system.js.map +0 -1
- package/dist/cli/commands/tables.d.ts +0 -7
- package/dist/cli/commands/tables.d.ts.map +0 -1
- package/dist/cli/commands/tables.js +0 -48
- package/dist/cli/commands/tables.js.map +0 -1
- package/dist/cli/commands/tool.d.ts +0 -18
- package/dist/cli/commands/tool.d.ts.map +0 -1
- package/dist/cli/commands/tool.js +0 -194
- package/dist/cli/commands/tool.js.map +0 -1
- package/dist/cli/commands/tools-list.d.ts +0 -20
- package/dist/cli/commands/tools-list.d.ts.map +0 -1
- package/dist/cli/commands/tools-list.js +0 -209
- package/dist/cli/commands/tools-list.js.map +0 -1
- package/dist/cli/commands/validate.d.ts +0 -7
- package/dist/cli/commands/validate.d.ts.map +0 -1
- package/dist/cli/commands/validate.js +0 -77
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/config/credentials.d.ts +0 -21
- package/dist/cli/config/credentials.d.ts.map +0 -1
- package/dist/cli/config/credentials.js +0 -96
- package/dist/cli/config/credentials.js.map +0 -1
- package/dist/cli/config/index.d.ts +0 -11
- package/dist/cli/config/index.d.ts.map +0 -1
- package/dist/cli/config/index.js +0 -9
- package/dist/cli/config/index.js.map +0 -1
- package/dist/cli/config/loader.d.ts +0 -52
- package/dist/cli/config/loader.d.ts.map +0 -1
- package/dist/cli/config/loader.js +0 -237
- package/dist/cli/config/loader.js.map +0 -1
- package/dist/cli/config/resolver.d.ts +0 -31
- package/dist/cli/config/resolver.d.ts.map +0 -1
- package/dist/cli/config/resolver.js +0 -115
- package/dist/cli/config/resolver.js.map +0 -1
- package/dist/cli/config/schema.d.ts +0 -128
- package/dist/cli/config/schema.d.ts.map +0 -1
- package/dist/cli/config/schema.js +0 -37
- package/dist/cli/config/schema.js.map +0 -1
- package/dist/cli/config/types.d.ts +0 -59
- package/dist/cli/config/types.d.ts.map +0 -1
- package/dist/cli/config/types.js +0 -6
- package/dist/cli/config/types.js.map +0 -1
- package/dist/cli/formatters/output.d.ts +0 -70
- package/dist/cli/formatters/output.d.ts.map +0 -1
- package/dist/cli/formatters/output.js +0 -279
- package/dist/cli/formatters/output.js.map +0 -1
- package/dist/cli/index.d.ts +0 -13
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -102
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/utils/command-helpers.d.ts +0 -47
- package/dist/cli/utils/command-helpers.d.ts.map +0 -1
- package/dist/cli/utils/command-helpers.js +0 -211
- package/dist/cli/utils/command-helpers.js.map +0 -1
- package/dist/cli/utils/connection.d.ts +0 -20
- package/dist/cli/utils/connection.d.ts.map +0 -1
- package/dist/cli/utils/connection.js +0 -37
- package/dist/cli/utils/connection.js.map +0 -1
- package/dist/cli/utils/exit-codes.d.ts +0 -48
- package/dist/cli/utils/exit-codes.d.ts.map +0 -1
- package/dist/cli/utils/exit-codes.js +0 -111
- package/dist/cli/utils/exit-codes.js.map +0 -1
- package/dist/cli/utils/multi-connection.d.ts +0 -26
- package/dist/cli/utils/multi-connection.d.ts.map +0 -1
- package/dist/cli/utils/multi-connection.js +0 -72
- package/dist/cli/utils/multi-connection.js.map +0 -1
- package/dist/cli/utils/yaml-loader.d.ts +0 -69
- package/dist/cli/utils/yaml-loader.d.ts.map +0 -1
- package/dist/cli/utils/yaml-loader.js +0 -135
- package/dist/cli/utils/yaml-loader.js.map +0 -1
- package/dist/cli/utils/yaml-to-commander.d.ts +0 -26
- package/dist/cli/utils/yaml-to-commander.d.ts.map +0 -1
- package/dist/cli/utils/yaml-to-commander.js +0 -156
- package/dist/cli/utils/yaml-to-commander.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sql.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0GzD"}
|
package/dist/cli/commands/sql.js
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview `ibmi sql "<sql>"` command — execute SQL queries.
|
|
3
|
-
* Supports inline SQL, --file, stdin piping, and multi-system parallel execution.
|
|
4
|
-
* @module cli/commands/sql
|
|
5
|
-
*/
|
|
6
|
-
import { readFileSync } from "fs";
|
|
7
|
-
import { withConnection, getFormat, createCliContext } from "../utils/command-helpers.js";
|
|
8
|
-
import { renderMessage, renderMultiSystemOutput, renderMultiSystemNdjson } from "../formatters/output.js";
|
|
9
|
-
import { ExitCode } from "../utils/exit-codes.js";
|
|
10
|
-
/**
|
|
11
|
-
* Read SQL from stdin (piped input).
|
|
12
|
-
* Returns null if stdin is a TTY (interactive).
|
|
13
|
-
*/
|
|
14
|
-
function readStdin() {
|
|
15
|
-
if (process.stdin.isTTY)
|
|
16
|
-
return null;
|
|
17
|
-
try {
|
|
18
|
-
return readFileSync(0, "utf-8").trim();
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Resolve SQL from the various sources: argument, --file, or stdin.
|
|
26
|
-
* Returns the SQL string or undefined if no source provided.
|
|
27
|
-
*/
|
|
28
|
-
function resolveSql(statement, opts) {
|
|
29
|
-
if (statement)
|
|
30
|
-
return statement;
|
|
31
|
-
if (opts["file"]) {
|
|
32
|
-
try {
|
|
33
|
-
return readFileSync(opts["file"], "utf-8").trim();
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
process.stderr.write(`Error reading file: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
37
|
-
process.exitCode = ExitCode.USAGE;
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return readStdin() ?? undefined;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Apply FETCH FIRST N ROWS ONLY if not already present.
|
|
45
|
-
*/
|
|
46
|
-
function applyRowLimit(sql, maxRows) {
|
|
47
|
-
if (maxRows &&
|
|
48
|
-
!sql.toUpperCase().includes("FETCH FIRST") &&
|
|
49
|
-
!sql.toUpperCase().includes("FETCH NEXT")) {
|
|
50
|
-
return `${sql.replace(/;\s*$/, "")} FETCH FIRST ${maxRows} ROWS ONLY`;
|
|
51
|
-
}
|
|
52
|
-
return sql;
|
|
53
|
-
}
|
|
54
|
-
export function registerSqlCommand(program) {
|
|
55
|
-
program
|
|
56
|
-
.command("sql [statement]")
|
|
57
|
-
.description("Execute a SQL query against the target system")
|
|
58
|
-
.option("--file <path>", "Read SQL from a file")
|
|
59
|
-
.option("--limit <n>", "Maximum rows to return")
|
|
60
|
-
.option("--read-only", "Enforce read-only mode (default: true)", true)
|
|
61
|
-
.option("--no-read-only", "Allow mutation queries")
|
|
62
|
-
.option("--dry-run", "Print SQL without executing", false)
|
|
63
|
-
.action(async (statement, opts, cmd) => {
|
|
64
|
-
const sql = resolveSql(statement, opts);
|
|
65
|
-
if (!sql) {
|
|
66
|
-
if (!process.exitCode) {
|
|
67
|
-
process.stderr.write("Error: No SQL provided. Pass as argument, use --file, or pipe via stdin.\n");
|
|
68
|
-
process.exitCode = ExitCode.USAGE;
|
|
69
|
-
}
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Dry run: print SQL and exit
|
|
73
|
-
if (opts["dryRun"]) {
|
|
74
|
-
const format = getFormat(cmd);
|
|
75
|
-
renderMessage(sql, format);
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
// Multi-system detection
|
|
79
|
-
const systemFlag = cmd.optsWithGlobals()["system"];
|
|
80
|
-
if (systemFlag && systemFlag.includes(",")) {
|
|
81
|
-
// Reject --watch + multi-system for v1
|
|
82
|
-
if (cmd.optsWithGlobals()["watch"]) {
|
|
83
|
-
process.stderr.write("Error: --watch is not supported with multiple systems.\n");
|
|
84
|
-
process.exitCode = ExitCode.USAGE;
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
await handleMultiSystemSql(sql, opts, cmd, systemFlag);
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
// Existing single-system path (unchanged)
|
|
91
|
-
await withConnection(cmd, "execute_sql", async (resolved, ctx) => {
|
|
92
|
-
// Configure read-only mode based on CLI flag and system config
|
|
93
|
-
const readOnly = opts["readOnly"] || resolved.config.readOnly;
|
|
94
|
-
// Confirm execution if system requires it
|
|
95
|
-
if (resolved.config.confirm && process.stdin.isTTY) {
|
|
96
|
-
const { promptPassword } = await import("../config/credentials.js");
|
|
97
|
-
const answer = await promptPassword(`Execute on [${resolved.name}]? (y/N) `);
|
|
98
|
-
if (answer.toLowerCase() !== "y") {
|
|
99
|
-
throw new Error("Execution cancelled by user");
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Apply maxRows limit
|
|
103
|
-
let execSql = sql;
|
|
104
|
-
let maxRows = resolved.config.maxRows;
|
|
105
|
-
if (opts["limit"]) {
|
|
106
|
-
maxRows = parseInt(opts["limit"], 10);
|
|
107
|
-
if (isNaN(maxRows) || maxRows <= 0) {
|
|
108
|
-
throw new Error(`Invalid --limit value: "${opts["limit"]}". Must be a positive integer.`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
execSql = applyRowLimit(execSql, maxRows);
|
|
112
|
-
// Configure execute_sql tool security before importing
|
|
113
|
-
const { configureExecuteSqlTool } = await import("../../ibmi-mcp-server/tools/executeSql.tool.js");
|
|
114
|
-
configureExecuteSqlTool({
|
|
115
|
-
enabled: true,
|
|
116
|
-
security: { readOnly },
|
|
117
|
-
});
|
|
118
|
-
const { executeSqlTool } = await import("../../ibmi-mcp-server/tools/executeSql.tool.js");
|
|
119
|
-
const logicFn = executeSqlTool.logic;
|
|
120
|
-
const result = await logicFn({ sql: execSql }, ctx, {});
|
|
121
|
-
if (!result.success) {
|
|
122
|
-
throw new Error(result.error?.message ?? "SQL execution failed");
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
data: (result.data ?? []),
|
|
126
|
-
meta: {
|
|
127
|
-
rowCount: result.rowCount ?? 0,
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Execute SQL against multiple systems in parallel via SourceManager.
|
|
135
|
-
* Creates a temporary SourceManager — each system gets its own pool.
|
|
136
|
-
*/
|
|
137
|
-
async function handleMultiSystemSql(sql, opts, cmd, systemFlag) {
|
|
138
|
-
const format = getFormat(cmd);
|
|
139
|
-
const isStream = cmd.optsWithGlobals()["stream"] === true;
|
|
140
|
-
try {
|
|
141
|
-
const { resolveSystems } = await import("../config/resolver.js");
|
|
142
|
-
const { executeMultiSystem } = await import("../utils/multi-connection.js");
|
|
143
|
-
const systems = resolveSystems(systemFlag);
|
|
144
|
-
// Enforce read-only: true if CLI flag is set OR any target system requires it
|
|
145
|
-
const readOnly = opts["readOnly"] ||
|
|
146
|
-
systems.some((s) => s.config.readOnly);
|
|
147
|
-
if (readOnly) {
|
|
148
|
-
const { SqlSecurityValidator } = await import("../../ibmi-mcp-server/utils/security/sqlSecurityValidator.js");
|
|
149
|
-
const ctx = createCliContext("multi_sql_security");
|
|
150
|
-
SqlSecurityValidator.validateQuery(sql, { readOnly: true, maxQueryLength: 10000 }, ctx);
|
|
151
|
-
}
|
|
152
|
-
// Respect the most restrictive system's row limit when none is explicit
|
|
153
|
-
let maxRows;
|
|
154
|
-
if (opts["limit"]) {
|
|
155
|
-
maxRows = parseInt(opts["limit"], 10);
|
|
156
|
-
if (isNaN(maxRows) || maxRows <= 0) {
|
|
157
|
-
process.stderr.write(`Error: Invalid --limit value: "${opts["limit"]}". Must be a positive integer.\n`);
|
|
158
|
-
process.exitCode = ExitCode.USAGE;
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
maxRows = Math.min(...systems.map((s) => s.config.maxRows ?? Infinity));
|
|
164
|
-
if (!isFinite(maxRows))
|
|
165
|
-
maxRows = undefined;
|
|
166
|
-
}
|
|
167
|
-
const execSql = applyRowLimit(sql, maxRows);
|
|
168
|
-
const results = await executeMultiSystem(systems, async (sourceName, mgr, ctx) => {
|
|
169
|
-
const result = await mgr.executeQuery(sourceName, execSql, [], ctx);
|
|
170
|
-
const data = (result.data ?? []);
|
|
171
|
-
return { data, meta: { rowCount: data.length } };
|
|
172
|
-
});
|
|
173
|
-
if (isStream && format === "json") {
|
|
174
|
-
renderMultiSystemNdjson(results);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
renderMultiSystemOutput(results, format);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
const { renderError } = await import("../formatters/output.js");
|
|
182
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
183
|
-
renderError(error, format);
|
|
184
|
-
process.exitCode = ExitCode.GENERAL;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=sql.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../src/cli/commands/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview `ibmi system` commands for managing IBM i system configurations.
|
|
3
|
-
* Provides list, show, add, remove, default, and test subcommands.
|
|
4
|
-
* @module cli/commands/system
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from "commander";
|
|
7
|
-
/**
|
|
8
|
-
* Register all `ibmi system` subcommands.
|
|
9
|
-
*/
|
|
10
|
-
export declare function registerSystemCommand(program: Command): void;
|
|
11
|
-
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/system.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoQ5D"}
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview `ibmi system` commands for managing IBM i system configurations.
|
|
3
|
-
* Provides list, show, add, remove, default, and test subcommands.
|
|
4
|
-
* @module cli/commands/system
|
|
5
|
-
*/
|
|
6
|
-
import * as readline from "readline";
|
|
7
|
-
import { loadConfig, upsertSystem, removeSystem, setDefaultSystem, getUserConfigPath, getProjectConfigPath, } from "../config/index.js";
|
|
8
|
-
import { renderOutput, renderError, renderMessage, } from "../formatters/output.js";
|
|
9
|
-
import { ExitCode, classifyError } from "../utils/exit-codes.js";
|
|
10
|
-
import { connectSystem } from "../utils/connection.js";
|
|
11
|
-
import { getFormat } from "../utils/command-helpers.js";
|
|
12
|
-
/**
|
|
13
|
-
* Test connectivity to an IBM i system by establishing and closing a connection.
|
|
14
|
-
*/
|
|
15
|
-
async function testSystemConnection(name, sys) {
|
|
16
|
-
const base = { NAME: name, HOST: sys.host, PORT: sys.port, USER: sys.user };
|
|
17
|
-
let cleanup;
|
|
18
|
-
try {
|
|
19
|
-
const resolved = {
|
|
20
|
-
name,
|
|
21
|
-
config: sys,
|
|
22
|
-
source: "flag",
|
|
23
|
-
};
|
|
24
|
-
cleanup = await connectSystem(resolved);
|
|
25
|
-
return { ...base, STATUS: "connected" };
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
29
|
-
return { ...base, STATUS: "error", ERROR: msg };
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
if (cleanup)
|
|
33
|
-
await cleanup();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Register all `ibmi system` subcommands.
|
|
38
|
-
*/
|
|
39
|
-
export function registerSystemCommand(program) {
|
|
40
|
-
const system = program
|
|
41
|
-
.command("system")
|
|
42
|
-
.description("Manage IBM i system connections");
|
|
43
|
-
// ── ibmi system list ──
|
|
44
|
-
system
|
|
45
|
-
.command("list")
|
|
46
|
-
.description("List all configured systems")
|
|
47
|
-
.action((_opts, cmd) => {
|
|
48
|
-
const format = getFormat(cmd);
|
|
49
|
-
try {
|
|
50
|
-
const config = loadConfig();
|
|
51
|
-
const systems = Object.entries(config.systems);
|
|
52
|
-
if (systems.length === 0) {
|
|
53
|
-
renderMessage("No systems configured. Run: ibmi system add <name>", format);
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const data = systems.map(([name, sys]) => ({
|
|
57
|
-
NAME: name,
|
|
58
|
-
HOST: sys.host,
|
|
59
|
-
USER: sys.user,
|
|
60
|
-
PORT: sys.port,
|
|
61
|
-
READ_ONLY: sys.readOnly ? "yes" : "no",
|
|
62
|
-
DEFAULT: name === config.default ? "✓" : "",
|
|
63
|
-
}));
|
|
64
|
-
renderOutput(data, format, { rowCount: data.length });
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
renderError(err instanceof Error ? err : new Error(String(err)), format);
|
|
68
|
-
process.exitCode = ExitCode.GENERAL;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
// ── ibmi system show <name> ──
|
|
72
|
-
system
|
|
73
|
-
.command("show <name>")
|
|
74
|
-
.description("Show configuration for a system")
|
|
75
|
-
.action((name, _opts, cmd) => {
|
|
76
|
-
const format = getFormat(cmd);
|
|
77
|
-
try {
|
|
78
|
-
const config = loadConfig();
|
|
79
|
-
const sys = config.systems[name];
|
|
80
|
-
if (!sys) {
|
|
81
|
-
throw new Error(`System "${name}" not found. Run: ibmi system list`);
|
|
82
|
-
}
|
|
83
|
-
const data = [
|
|
84
|
-
{ PROPERTY: "host", VALUE: sys.host },
|
|
85
|
-
{ PROPERTY: "port", VALUE: String(sys.port) },
|
|
86
|
-
{ PROPERTY: "user", VALUE: sys.user },
|
|
87
|
-
{ PROPERTY: "password", VALUE: sys.password ? "****" : "(not set)" },
|
|
88
|
-
{ PROPERTY: "defaultSchema", VALUE: sys.defaultSchema ?? "(none)" },
|
|
89
|
-
{ PROPERTY: "readOnly", VALUE: String(sys.readOnly) },
|
|
90
|
-
{ PROPERTY: "confirm", VALUE: String(sys.confirm) },
|
|
91
|
-
{ PROPERTY: "timeout", VALUE: `${sys.timeout}s` },
|
|
92
|
-
{ PROPERTY: "maxRows", VALUE: String(sys.maxRows) },
|
|
93
|
-
{ PROPERTY: "description", VALUE: sys.description ?? "(none)" },
|
|
94
|
-
{
|
|
95
|
-
PROPERTY: "default",
|
|
96
|
-
VALUE: name === config.default ? "yes" : "no",
|
|
97
|
-
},
|
|
98
|
-
];
|
|
99
|
-
renderOutput(data, format, { rowCount: data.length });
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
renderError(err instanceof Error ? err : new Error(String(err)), format);
|
|
103
|
-
process.exitCode = ExitCode.GENERAL;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
// ── ibmi system add <name> ──
|
|
107
|
-
system
|
|
108
|
-
.command("add <name>")
|
|
109
|
-
.description("Add a new system configuration")
|
|
110
|
-
.option("--host <host>", "IBM i hostname")
|
|
111
|
-
.option("--port <port>", "Mapepire port", "8076")
|
|
112
|
-
.option("--user <user>", "User profile")
|
|
113
|
-
.option("--password <password>", "Password (or use env var reference: ${MY_PASS})")
|
|
114
|
-
.option("--description <desc>", "Description")
|
|
115
|
-
.option("--read-only", "Block mutation queries", false)
|
|
116
|
-
.option("--default-schema <schema>", "Default schema/library")
|
|
117
|
-
.action(async (name, opts, cmd) => {
|
|
118
|
-
const format = getFormat(cmd);
|
|
119
|
-
try {
|
|
120
|
-
let host = opts["host"];
|
|
121
|
-
let user = opts["user"];
|
|
122
|
-
// Interactive prompts for required fields
|
|
123
|
-
if (!host || !user) {
|
|
124
|
-
if (!process.stdin.isTTY) {
|
|
125
|
-
throw new Error("Missing required options --host and --user. In non-interactive mode, all options must be provided.");
|
|
126
|
-
}
|
|
127
|
-
const rl = readline.createInterface({
|
|
128
|
-
input: process.stdin,
|
|
129
|
-
output: process.stderr,
|
|
130
|
-
});
|
|
131
|
-
const ask = (question) => new Promise((resolve) => rl.question(question, resolve));
|
|
132
|
-
if (!host)
|
|
133
|
-
host = await ask("Host: ");
|
|
134
|
-
if (!user)
|
|
135
|
-
user = await ask("User: ");
|
|
136
|
-
rl.close();
|
|
137
|
-
}
|
|
138
|
-
const port = parseInt(opts["port"], 10);
|
|
139
|
-
if (isNaN(port) || port <= 0 || port > 65535) {
|
|
140
|
-
throw new Error(`Invalid --port value: "${opts["port"]}". Must be a number between 1 and 65535.`);
|
|
141
|
-
}
|
|
142
|
-
const system = {
|
|
143
|
-
host,
|
|
144
|
-
port,
|
|
145
|
-
user,
|
|
146
|
-
password: opts["password"],
|
|
147
|
-
description: opts["description"],
|
|
148
|
-
defaultSchema: opts["defaultSchema"],
|
|
149
|
-
readOnly: opts["readOnly"],
|
|
150
|
-
confirm: false,
|
|
151
|
-
timeout: 60,
|
|
152
|
-
maxRows: 5000,
|
|
153
|
-
ignoreUnauthorized: true,
|
|
154
|
-
};
|
|
155
|
-
upsertSystem(name, system);
|
|
156
|
-
renderMessage(`System "${name}" added. Config saved to ${getUserConfigPath()}`, format);
|
|
157
|
-
}
|
|
158
|
-
catch (err) {
|
|
159
|
-
renderError(err instanceof Error ? err : new Error(String(err)), format);
|
|
160
|
-
process.exitCode = ExitCode.GENERAL;
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
// ── ibmi system remove <name> ──
|
|
164
|
-
system
|
|
165
|
-
.command("remove <name>")
|
|
166
|
-
.description("Remove a system configuration")
|
|
167
|
-
.action((name, _opts, cmd) => {
|
|
168
|
-
const format = getFormat(cmd);
|
|
169
|
-
try {
|
|
170
|
-
const removed = removeSystem(name);
|
|
171
|
-
if (removed) {
|
|
172
|
-
renderMessage(`System "${name}" removed.`, format);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
throw new Error(`System "${name}" not found.`);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
catch (err) {
|
|
179
|
-
renderError(err instanceof Error ? err : new Error(String(err)), format);
|
|
180
|
-
process.exitCode = ExitCode.GENERAL;
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
// ── ibmi system default <name> ──
|
|
184
|
-
system
|
|
185
|
-
.command("default <name>")
|
|
186
|
-
.description("Set the default system")
|
|
187
|
-
.action((name, _opts, cmd) => {
|
|
188
|
-
const format = getFormat(cmd);
|
|
189
|
-
try {
|
|
190
|
-
setDefaultSystem(name);
|
|
191
|
-
renderMessage(`Default system set to "${name}".`, format);
|
|
192
|
-
}
|
|
193
|
-
catch (err) {
|
|
194
|
-
renderError(err instanceof Error ? err : new Error(String(err)), format);
|
|
195
|
-
process.exitCode = ExitCode.GENERAL;
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
// ── ibmi system test [name] ──
|
|
199
|
-
system
|
|
200
|
-
.command("test [name]")
|
|
201
|
-
.description("Test connectivity to a system")
|
|
202
|
-
.option("--all", "Test all configured systems")
|
|
203
|
-
.action(async (name, opts, cmd) => {
|
|
204
|
-
const format = getFormat(cmd);
|
|
205
|
-
try {
|
|
206
|
-
const config = loadConfig();
|
|
207
|
-
if (opts["all"]) {
|
|
208
|
-
const results = [];
|
|
209
|
-
let hasFailure = false;
|
|
210
|
-
for (const [sysName, sys] of Object.entries(config.systems)) {
|
|
211
|
-
const result = await testSystemConnection(sysName, sys);
|
|
212
|
-
results.push(result);
|
|
213
|
-
if (result.STATUS === "error")
|
|
214
|
-
hasFailure = true;
|
|
215
|
-
}
|
|
216
|
-
renderOutput(results, format, { rowCount: results.length });
|
|
217
|
-
if (hasFailure)
|
|
218
|
-
process.exitCode = ExitCode.GENERAL;
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
// Resolve which system to test
|
|
222
|
-
const targetName = name ??
|
|
223
|
-
cmd.optsWithGlobals()["system"] ??
|
|
224
|
-
config.default;
|
|
225
|
-
if (!targetName) {
|
|
226
|
-
throw new Error("No system specified. Pass a name or set a default.");
|
|
227
|
-
}
|
|
228
|
-
const sys = config.systems[targetName];
|
|
229
|
-
if (!sys) {
|
|
230
|
-
throw new Error(`System "${targetName}" not found.`);
|
|
231
|
-
}
|
|
232
|
-
const result = await testSystemConnection(targetName, sys);
|
|
233
|
-
renderOutput([
|
|
234
|
-
{ PROPERTY: "system", VALUE: result.NAME },
|
|
235
|
-
{ PROPERTY: "host", VALUE: `${result.HOST}:${result.PORT}` },
|
|
236
|
-
{ PROPERTY: "user", VALUE: result.USER },
|
|
237
|
-
{ PROPERTY: "status", VALUE: result.STATUS },
|
|
238
|
-
...(result.ERROR ? [{ PROPERTY: "error", VALUE: result.ERROR }] : []),
|
|
239
|
-
], format, { rowCount: 1 });
|
|
240
|
-
if (result.STATUS === "error") {
|
|
241
|
-
process.exitCode = ExitCode.GENERAL;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
catch (err) {
|
|
245
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
246
|
-
const classified = classifyError(error);
|
|
247
|
-
renderError(error, format, undefined, classified.errorCode);
|
|
248
|
-
process.exitCode = classified.exitCode;
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
|
-
// ── ibmi system config-path ──
|
|
252
|
-
system
|
|
253
|
-
.command("config-path")
|
|
254
|
-
.description("Show config file paths")
|
|
255
|
-
.action((_opts, cmd) => {
|
|
256
|
-
const format = getFormat(cmd);
|
|
257
|
-
renderOutput([
|
|
258
|
-
{ SCOPE: "user", PATH: getUserConfigPath() },
|
|
259
|
-
{ SCOPE: "project", PATH: getProjectConfigPath() },
|
|
260
|
-
], format, { rowCount: 2 });
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
//# sourceMappingURL=system.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/cli/commands/system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkD5D"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview `ibmi tables <schema>` command — list tables in a schema.
|
|
3
|
-
* @module cli/commands/tables
|
|
4
|
-
*/
|
|
5
|
-
import { withConnection } from "../utils/command-helpers.js";
|
|
6
|
-
import { ExitCode } from "../utils/exit-codes.js";
|
|
7
|
-
export function registerTablesCommand(program) {
|
|
8
|
-
program
|
|
9
|
-
.command("tables <schema>")
|
|
10
|
-
.description("List tables, views, and physical files in a schema")
|
|
11
|
-
.option("--filter <pattern>", "Filter by table name (SQL LIKE pattern, e.g. 'CUST%')")
|
|
12
|
-
.option("--limit <n>", "Maximum rows to return", "50")
|
|
13
|
-
.option("--offset <n>", "Rows to skip for pagination", "0")
|
|
14
|
-
.action(async (schema, opts, cmd) => {
|
|
15
|
-
const limit = parseInt(opts["limit"], 10);
|
|
16
|
-
const offset = parseInt(opts["offset"], 10);
|
|
17
|
-
if (isNaN(limit) || limit < 0) {
|
|
18
|
-
process.stderr.write(`Error: Invalid --limit value: "${opts["limit"]}". Must be a positive integer.\n`);
|
|
19
|
-
process.exitCode = ExitCode.USAGE;
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if (isNaN(offset) || offset < 0) {
|
|
23
|
-
process.stderr.write(`Error: Invalid --offset value: "${opts["offset"]}". Must be a non-negative integer.\n`);
|
|
24
|
-
process.exitCode = ExitCode.USAGE;
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
await withConnection(cmd, "list_tables_in_schema", async (_resolved, ctx) => {
|
|
28
|
-
const { listTablesLogic } = await import("../../ibmi-mcp-server/tools/listTablesInSchema.tool.js");
|
|
29
|
-
const result = await listTablesLogic({
|
|
30
|
-
schema_name: schema,
|
|
31
|
-
table_filter: opts["filter"] ?? "*ALL",
|
|
32
|
-
limit,
|
|
33
|
-
offset,
|
|
34
|
-
}, ctx, {});
|
|
35
|
-
if (!result.success) {
|
|
36
|
-
throw new Error(result.error?.message ?? "Failed to list tables");
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
data: (result.data ?? []),
|
|
40
|
-
meta: {
|
|
41
|
-
rowCount: result.rowCount ?? 0,
|
|
42
|
-
hasMore: result.hasMore,
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=tables.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/cli/commands/tables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,oBAAoB,EAAE,uDAAuD,CAAC;SACrF,MAAM,CAAC,aAAa,EAAE,wBAAwB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,cAAc,EAAE,6BAA6B,EAAE,GAAG,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAW,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAW,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;YACxG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;YAC9G,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,cAAc,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;YAC1E,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CACtC,wDAAwD,CACzD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC;gBACE,WAAW,EAAE,MAAM;gBACnB,YAAY,EAAG,IAAI,CAAC,QAAQ,CAAwB,IAAI,MAAM;gBAC9D,KAAK;gBACL,MAAM;aACP,EACD,GAAG,EACH,EAAgB,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,uBAAuB,CAAC,CAAC;YACpE,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAA8B;gBACtD,IAAI,EAAE;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;oBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Dynamic YAML tool execution command.
|
|
3
|
-
*
|
|
4
|
-
* `ibmi tool <name> [options]` — run any YAML-defined tool from the CLI.
|
|
5
|
-
*
|
|
6
|
-
* The command uses allowUnknownOption() to accept arbitrary tool-specific
|
|
7
|
-
* options, then resolves them against the YAML parameter definitions.
|
|
8
|
-
*
|
|
9
|
-
* Supports --dry-run to show the resolved SQL and parameters without executing.
|
|
10
|
-
*
|
|
11
|
-
* @module cli/commands/tool
|
|
12
|
-
*/
|
|
13
|
-
import { Command } from "commander";
|
|
14
|
-
/**
|
|
15
|
-
* Register `ibmi tool <name>` — dynamic YAML tool execution.
|
|
16
|
-
*/
|
|
17
|
-
export declare function registerToolCommand(program: Command): void;
|
|
18
|
-
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+E1D"}
|