@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.
Files changed (159) hide show
  1. package/README.md +2 -0
  2. package/dist/config/index.d.ts +20 -0
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/index.js +95 -0
  5. package/dist/config/index.js.map +1 -1
  6. package/dist/ibmi-mcp-server/schemas/config.d.ts +58 -0
  7. package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -1
  8. package/dist/ibmi-mcp-server/schemas/config.js +35 -0
  9. package/dist/ibmi-mcp-server/schemas/config.js.map +1 -1
  10. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +19 -1
  11. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -1
  12. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +30 -2
  13. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -1
  14. package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +6 -2
  15. package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -1
  16. package/dist/ibmi-mcp-server/services/baseConnectionPool.js +68 -8
  17. package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -1
  18. package/dist/ibmi-mcp-server/services/connectionPool.d.ts +4 -2
  19. package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -1
  20. package/dist/ibmi-mcp-server/services/connectionPool.js +6 -3
  21. package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -1
  22. package/dist/ibmi-mcp-server/services/sourceManager.d.ts +19 -1
  23. package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -1
  24. package/dist/ibmi-mcp-server/services/sourceManager.js +31 -2
  25. package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -1
  26. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts +1 -0
  27. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -1
  28. package/dist/ibmi-mcp-server/tools/executeSql.tool.js +17 -3
  29. package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -1
  30. package/dist/ibmi-mcp-server/tools/index.d.ts +1 -0
  31. package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -1
  32. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -1
  33. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +1 -1
  34. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -1
  35. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +1 -1
  36. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -1
  37. package/dist/ibmi-mcp-server/utils/config/toolFactory.js +42 -4
  38. package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -1
  39. package/dist/public/context.d.ts +5 -0
  40. package/dist/public/context.d.ts.map +1 -0
  41. package/dist/public/context.js +5 -0
  42. package/dist/public/context.js.map +1 -0
  43. package/dist/public/formatting.d.ts +5 -0
  44. package/dist/public/formatting.d.ts.map +1 -0
  45. package/dist/public/formatting.js +5 -0
  46. package/dist/public/formatting.js.map +1 -0
  47. package/dist/public/services.d.ts +8 -0
  48. package/dist/public/services.d.ts.map +1 -0
  49. package/dist/public/services.js +8 -0
  50. package/dist/public/services.js.map +1 -0
  51. package/dist/public/tools.d.ts +16 -0
  52. package/dist/public/tools.d.ts.map +1 -0
  53. package/dist/public/tools.js +15 -0
  54. package/dist/public/tools.js.map +1 -0
  55. package/package.json +20 -17
  56. package/dist/cli/commands/columns.d.ts +0 -7
  57. package/dist/cli/commands/columns.d.ts.map +0 -1
  58. package/dist/cli/commands/columns.js +0 -29
  59. package/dist/cli/commands/columns.js.map +0 -1
  60. package/dist/cli/commands/completion.d.ts +0 -10
  61. package/dist/cli/commands/completion.d.ts.map +0 -1
  62. package/dist/cli/commands/completion.js +0 -247
  63. package/dist/cli/commands/completion.js.map +0 -1
  64. package/dist/cli/commands/config.d.ts +0 -11
  65. package/dist/cli/commands/config.d.ts.map +0 -1
  66. package/dist/cli/commands/config.js +0 -124
  67. package/dist/cli/commands/config.js.map +0 -1
  68. package/dist/cli/commands/describe.d.ts +0 -9
  69. package/dist/cli/commands/describe.d.ts.map +0 -1
  70. package/dist/cli/commands/describe.js +0 -82
  71. package/dist/cli/commands/describe.js.map +0 -1
  72. package/dist/cli/commands/related.d.ts +0 -7
  73. package/dist/cli/commands/related.d.ts.map +0 -1
  74. package/dist/cli/commands/related.js +0 -32
  75. package/dist/cli/commands/related.js.map +0 -1
  76. package/dist/cli/commands/schemas.d.ts +0 -7
  77. package/dist/cli/commands/schemas.d.ts.map +0 -1
  78. package/dist/cli/commands/schemas.js +0 -49
  79. package/dist/cli/commands/schemas.js.map +0 -1
  80. package/dist/cli/commands/sql.d.ts +0 -8
  81. package/dist/cli/commands/sql.d.ts.map +0 -1
  82. package/dist/cli/commands/sql.js +0 -187
  83. package/dist/cli/commands/sql.js.map +0 -1
  84. package/dist/cli/commands/system.d.ts +0 -11
  85. package/dist/cli/commands/system.d.ts.map +0 -1
  86. package/dist/cli/commands/system.js +0 -263
  87. package/dist/cli/commands/system.js.map +0 -1
  88. package/dist/cli/commands/tables.d.ts +0 -7
  89. package/dist/cli/commands/tables.d.ts.map +0 -1
  90. package/dist/cli/commands/tables.js +0 -48
  91. package/dist/cli/commands/tables.js.map +0 -1
  92. package/dist/cli/commands/tool.d.ts +0 -18
  93. package/dist/cli/commands/tool.d.ts.map +0 -1
  94. package/dist/cli/commands/tool.js +0 -194
  95. package/dist/cli/commands/tool.js.map +0 -1
  96. package/dist/cli/commands/tools-list.d.ts +0 -20
  97. package/dist/cli/commands/tools-list.d.ts.map +0 -1
  98. package/dist/cli/commands/tools-list.js +0 -209
  99. package/dist/cli/commands/tools-list.js.map +0 -1
  100. package/dist/cli/commands/validate.d.ts +0 -7
  101. package/dist/cli/commands/validate.d.ts.map +0 -1
  102. package/dist/cli/commands/validate.js +0 -77
  103. package/dist/cli/commands/validate.js.map +0 -1
  104. package/dist/cli/config/credentials.d.ts +0 -21
  105. package/dist/cli/config/credentials.d.ts.map +0 -1
  106. package/dist/cli/config/credentials.js +0 -96
  107. package/dist/cli/config/credentials.js.map +0 -1
  108. package/dist/cli/config/index.d.ts +0 -11
  109. package/dist/cli/config/index.d.ts.map +0 -1
  110. package/dist/cli/config/index.js +0 -9
  111. package/dist/cli/config/index.js.map +0 -1
  112. package/dist/cli/config/loader.d.ts +0 -52
  113. package/dist/cli/config/loader.d.ts.map +0 -1
  114. package/dist/cli/config/loader.js +0 -237
  115. package/dist/cli/config/loader.js.map +0 -1
  116. package/dist/cli/config/resolver.d.ts +0 -31
  117. package/dist/cli/config/resolver.d.ts.map +0 -1
  118. package/dist/cli/config/resolver.js +0 -115
  119. package/dist/cli/config/resolver.js.map +0 -1
  120. package/dist/cli/config/schema.d.ts +0 -128
  121. package/dist/cli/config/schema.d.ts.map +0 -1
  122. package/dist/cli/config/schema.js +0 -37
  123. package/dist/cli/config/schema.js.map +0 -1
  124. package/dist/cli/config/types.d.ts +0 -59
  125. package/dist/cli/config/types.d.ts.map +0 -1
  126. package/dist/cli/config/types.js +0 -6
  127. package/dist/cli/config/types.js.map +0 -1
  128. package/dist/cli/formatters/output.d.ts +0 -70
  129. package/dist/cli/formatters/output.d.ts.map +0 -1
  130. package/dist/cli/formatters/output.js +0 -279
  131. package/dist/cli/formatters/output.js.map +0 -1
  132. package/dist/cli/index.d.ts +0 -13
  133. package/dist/cli/index.d.ts.map +0 -1
  134. package/dist/cli/index.js +0 -102
  135. package/dist/cli/index.js.map +0 -1
  136. package/dist/cli/utils/command-helpers.d.ts +0 -47
  137. package/dist/cli/utils/command-helpers.d.ts.map +0 -1
  138. package/dist/cli/utils/command-helpers.js +0 -211
  139. package/dist/cli/utils/command-helpers.js.map +0 -1
  140. package/dist/cli/utils/connection.d.ts +0 -20
  141. package/dist/cli/utils/connection.d.ts.map +0 -1
  142. package/dist/cli/utils/connection.js +0 -37
  143. package/dist/cli/utils/connection.js.map +0 -1
  144. package/dist/cli/utils/exit-codes.d.ts +0 -48
  145. package/dist/cli/utils/exit-codes.d.ts.map +0 -1
  146. package/dist/cli/utils/exit-codes.js +0 -111
  147. package/dist/cli/utils/exit-codes.js.map +0 -1
  148. package/dist/cli/utils/multi-connection.d.ts +0 -26
  149. package/dist/cli/utils/multi-connection.d.ts.map +0 -1
  150. package/dist/cli/utils/multi-connection.js +0 -72
  151. package/dist/cli/utils/multi-connection.js.map +0 -1
  152. package/dist/cli/utils/yaml-loader.d.ts +0 -69
  153. package/dist/cli/utils/yaml-loader.d.ts.map +0 -1
  154. package/dist/cli/utils/yaml-loader.js +0 -135
  155. package/dist/cli/utils/yaml-loader.js.map +0 -1
  156. package/dist/cli/utils/yaml-to-commander.d.ts +0 -26
  157. package/dist/cli/utils/yaml-to-commander.d.ts.map +0 -1
  158. package/dist/cli/utils/yaml-to-commander.js +0 -156
  159. package/dist/cli/utils/yaml-to-commander.js.map +0 -1
@@ -1,96 +0,0 @@
1
- /**
2
- * @fileoverview Credential management for the IBM i CLI.
3
- * Handles environment variable expansion in config values and interactive password prompting.
4
- * @module cli/config/credentials
5
- */
6
- import * as readline from "readline";
7
- /**
8
- * Expand ${ENV_VAR} references in a string value.
9
- * Returns the original string if no env var pattern is found or the var is not set.
10
- */
11
- export function expandEnvVars(value) {
12
- return value.replace(/\$\{([^}]+)\}/g, (_match, varName) => {
13
- const envValue = process.env[varName];
14
- if (envValue === undefined) {
15
- return _match; // Leave unexpanded if not set
16
- }
17
- return envValue;
18
- });
19
- }
20
- /**
21
- * Prompt the user for a password interactively (hidden input).
22
- * Returns the entered password string.
23
- */
24
- export async function promptPassword(prompt) {
25
- return new Promise((resolve, reject) => {
26
- const rl = readline.createInterface({
27
- input: process.stdin,
28
- output: process.stderr, // Use stderr so it doesn't interfere with piped output
29
- terminal: true,
30
- });
31
- // Disable echoing for password entry
32
- if (process.stdin.isTTY) {
33
- process.stderr.write(prompt);
34
- const stdin = process.stdin;
35
- const wasRaw = stdin.isRaw;
36
- stdin.setRawMode(true);
37
- let password = "";
38
- const onData = (char) => {
39
- const c = char.toString("utf8");
40
- if (c === "\n" || c === "\r") {
41
- stdin.setRawMode(wasRaw ?? false);
42
- stdin.removeListener("data", onData);
43
- process.stderr.write("\n");
44
- rl.close();
45
- resolve(password);
46
- }
47
- else if (c === "\u0003") {
48
- // Ctrl+C — throw to let withConnection's finally block run cleanup
49
- stdin.setRawMode(wasRaw ?? false);
50
- stdin.removeListener("data", onData);
51
- process.stderr.write("\n");
52
- rl.close();
53
- reject(new Error("Cancelled"));
54
- return;
55
- }
56
- else if (c === "\u007f" || c === "\b") {
57
- // Backspace
58
- if (password.length > 0) {
59
- password = password.slice(0, -1);
60
- }
61
- }
62
- else {
63
- password += c;
64
- }
65
- };
66
- stdin.on("data", onData);
67
- }
68
- else {
69
- // Non-interactive: read a line
70
- rl.question(prompt, (answer) => {
71
- rl.close();
72
- resolve(answer);
73
- });
74
- }
75
- });
76
- }
77
- /**
78
- * Resolve the password for a system config.
79
- * Priority: config password (with env expansion) → interactive prompt.
80
- */
81
- export async function resolvePassword(systemName, configPassword, user, host) {
82
- if (configPassword) {
83
- const expanded = expandEnvVars(configPassword);
84
- // If expansion resolved to a non-empty value, use it
85
- if (expanded && !expanded.includes("${")) {
86
- return expanded;
87
- }
88
- }
89
- // Fall back to interactive prompt
90
- if (!process.stdin.isTTY) {
91
- throw new Error(`No password configured for system "${systemName}" and stdin is not a terminal. ` +
92
- `Set the password in config or via environment variable.`);
93
- }
94
- return promptPassword(`Password for ${user}@${host} [${systemName}]: `);
95
- }
96
- //# sourceMappingURL=credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/cli/config/credentials.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * @fileoverview Barrel export for CLI configuration modules.
3
- * @module cli/config
4
- */
5
- export { CliConfigSchema, SystemConfigSchema, validateConfig } from "./schema.js";
6
- export { loadConfig, loadConfigLayers, saveUserConfig, upsertSystem, removeSystem, setDefaultSystem, getProjectConfigPath, getUserConfigPath, } from "./loader.js";
7
- export type { ConfigLayer } from "./loader.js";
8
- export { resolveSystem } from "./resolver.js";
9
- export { expandEnvVars, promptPassword, resolvePassword, } from "./credentials.js";
10
- export type { CliConfig, SystemConfig, ResolvedSystem, OutputFormat, GlobalOptions, } from "./types.js";
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,SAAS,EACT,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * @fileoverview Barrel export for CLI configuration modules.
3
- * @module cli/config
4
- */
5
- export { CliConfigSchema, SystemConfigSchema, validateConfig } from "./schema.js";
6
- export { loadConfig, loadConfigLayers, saveUserConfig, upsertSystem, removeSystem, setDefaultSystem, getProjectConfigPath, getUserConfigPath, } from "./loader.js";
7
- export { resolveSystem } from "./resolver.js";
8
- export { expandEnvVars, promptPassword, resolvePassword, } from "./credentials.js";
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,52 +0,0 @@
1
- /**
2
- * @fileoverview Configuration file loader for the IBM i CLI.
3
- * Finds and parses .ibmi/config.yaml from project and user directories,
4
- * merging them with project-level taking precedence.
5
- * @module cli/config/loader
6
- */
7
- import type { CliConfig, SystemConfig } from "./types.js";
8
- /** Get the project-level config file path (nearest .ibmi/config.yaml walking up from cwd). */
9
- export declare function getProjectConfigPath(): string;
10
- /** Get the user-level config file path. */
11
- export declare function getUserConfigPath(): string;
12
- /**
13
- * Load the full CLI configuration by merging user-level and project-level configs.
14
- * Project-level config takes precedence over user-level.
15
- *
16
- * @returns The merged, validated, and env-expanded configuration.
17
- */
18
- export declare function loadConfig(): CliConfig;
19
- /** Metadata about a single configuration layer (user or project). */
20
- export interface ConfigLayer {
21
- /** Which config layer this represents. */
22
- scope: "user" | "project";
23
- /** Absolute path to the config file. */
24
- path: string;
25
- /** Whether the config file exists on disk. */
26
- exists: boolean;
27
- /** Parsed config, or null if the file doesn't exist. */
28
- config: CliConfig | null;
29
- }
30
- /**
31
- * Load individual config layers without merging.
32
- * Used by `ibmi config show` to display per-setting origin information.
33
- */
34
- export declare function loadConfigLayers(): ConfigLayer[];
35
- /**
36
- * Save a config to the user-level config file.
37
- */
38
- export declare function saveUserConfig(config: CliConfig): void;
39
- /**
40
- * Add or update a system in the user config.
41
- */
42
- export declare function upsertSystem(name: string, system: SystemConfig): void;
43
- /**
44
- * Remove a system from the user config.
45
- * @returns true if the system existed and was removed.
46
- */
47
- export declare function removeSystem(name: string): boolean;
48
- /**
49
- * Set the default system in the user config.
50
- */
51
- export declare function setDefaultSystem(name: string): void;
52
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsC1D,8FAA8F;AAC9F,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAkED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAsBtC;AAED,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAuBhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAatD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,GACnB,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAsBlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAkBnD"}
@@ -1,237 +0,0 @@
1
- /**
2
- * @fileoverview Configuration file loader for the IBM i CLI.
3
- * Finds and parses .ibmi/config.yaml from project and user directories,
4
- * merging them with project-level taking precedence.
5
- * @module cli/config/loader
6
- */
7
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
8
- import { homedir } from "os";
9
- import path from "path";
10
- import yaml from "js-yaml";
11
- import { CliConfigSchema, validateConfig } from "./schema.js";
12
- import { expandEnvVars } from "./credentials.js";
13
- /** Default config file name. */
14
- const CONFIG_FILE = "config.yaml";
15
- /** Project-level config directory. */
16
- const PROJECT_CONFIG_DIR = ".ibmi";
17
- /** User-level config directory. */
18
- const USER_CONFIG_DIR = path.join(homedir(), ".ibmi");
19
- /**
20
- * Walk up from cwd to find the nearest .ibmi/config.yaml.
21
- * Stops at the home directory boundary (user config lives there)
22
- * and at the filesystem root. Returns null if not found.
23
- */
24
- function findProjectConfigPath() {
25
- let dir = path.resolve(process.cwd());
26
- const root = path.parse(dir).root;
27
- const home = path.resolve(homedir());
28
- while (true) {
29
- // ~/.ibmi/config.yaml is the user config — never treat it as project config
30
- if (dir === home) {
31
- return null;
32
- }
33
- const candidate = path.join(dir, PROJECT_CONFIG_DIR, CONFIG_FILE);
34
- if (existsSync(candidate)) {
35
- return candidate;
36
- }
37
- const parent = path.dirname(dir);
38
- if (parent === dir || dir === root) {
39
- return null;
40
- }
41
- dir = parent;
42
- }
43
- }
44
- /** Get the project-level config file path (nearest .ibmi/config.yaml walking up from cwd). */
45
- export function getProjectConfigPath() {
46
- return findProjectConfigPath() ?? path.join(process.cwd(), PROJECT_CONFIG_DIR, CONFIG_FILE);
47
- }
48
- /** Get the user-level config file path. */
49
- export function getUserConfigPath() {
50
- return path.join(USER_CONFIG_DIR, CONFIG_FILE);
51
- }
52
- /**
53
- * Load and parse a single YAML config file.
54
- * Returns null if file doesn't exist.
55
- */
56
- function loadConfigFile(filePath) {
57
- if (!existsSync(filePath)) {
58
- return null;
59
- }
60
- const raw = readFileSync(filePath, "utf-8");
61
- const parsed = yaml.load(raw);
62
- if (!parsed || typeof parsed !== "object") {
63
- return null;
64
- }
65
- const result = CliConfigSchema.safeParse(parsed);
66
- if (!result.success) {
67
- const errors = result.error.issues
68
- .map((i) => ` ${i.path.join(".")}: ${i.message}`)
69
- .join("\n");
70
- throw new Error(`Invalid config at ${filePath}:\n${errors}`);
71
- }
72
- return result.data;
73
- }
74
- /**
75
- * Expand environment variables in all system configs.
76
- */
77
- function expandSystemEnvVars(config) {
78
- const expanded = {
79
- default: config.default,
80
- format: config.format,
81
- systems: {},
82
- };
83
- for (const [name, system] of Object.entries(config.systems)) {
84
- expanded.systems[name] = {
85
- ...system,
86
- host: expandEnvVars(system.host),
87
- user: expandEnvVars(system.user),
88
- password: system.password ? expandEnvVars(system.password) : undefined,
89
- };
90
- }
91
- return expanded;
92
- }
93
- /**
94
- * Merge two configs. Source overrides target on a per-system basis.
95
- * Systems in source completely replace same-named systems in target.
96
- */
97
- function mergeConfigs(target, source) {
98
- return {
99
- default: source.default ?? target.default,
100
- format: source.format ?? target.format,
101
- systems: {
102
- ...target.systems,
103
- ...source.systems,
104
- },
105
- };
106
- }
107
- /**
108
- * Load the full CLI configuration by merging user-level and project-level configs.
109
- * Project-level config takes precedence over user-level.
110
- *
111
- * @returns The merged, validated, and env-expanded configuration.
112
- */
113
- export function loadConfig() {
114
- const userConfig = loadConfigFile(getUserConfigPath());
115
- const projectConfig = loadConfigFile(getProjectConfigPath());
116
- let config;
117
- if (userConfig && projectConfig) {
118
- config = mergeConfigs(userConfig, projectConfig);
119
- }
120
- else if (projectConfig) {
121
- config = projectConfig;
122
- }
123
- else if (userConfig) {
124
- config = userConfig;
125
- }
126
- else {
127
- config = { systems: {} };
128
- }
129
- // Validate cross-references
130
- const errors = validateConfig(config);
131
- if (errors.length > 0) {
132
- throw new Error(`Configuration errors:\n${errors.map((e) => ` - ${e}`).join("\n")}`);
133
- }
134
- return expandSystemEnvVars(config);
135
- }
136
- /**
137
- * Load individual config layers without merging.
138
- * Used by `ibmi config show` to display per-setting origin information.
139
- */
140
- export function loadConfigLayers() {
141
- const userPath = getUserConfigPath();
142
- const projectPath = findProjectConfigPath();
143
- const layers = [
144
- {
145
- scope: "user",
146
- path: userPath,
147
- exists: existsSync(userPath),
148
- config: loadConfigFile(userPath),
149
- },
150
- ];
151
- if (projectPath) {
152
- layers.push({
153
- scope: "project",
154
- path: projectPath,
155
- exists: true,
156
- config: loadConfigFile(projectPath),
157
- });
158
- }
159
- return layers;
160
- }
161
- /**
162
- * Save a config to the user-level config file.
163
- */
164
- export function saveUserConfig(config) {
165
- const configDir = USER_CONFIG_DIR;
166
- if (!existsSync(configDir)) {
167
- mkdirSync(configDir, { recursive: true });
168
- }
169
- const yamlStr = yaml.dump(config, {
170
- indent: 2,
171
- lineWidth: 120,
172
- noRefs: true,
173
- });
174
- writeFileSync(getUserConfigPath(), yamlStr, "utf-8");
175
- }
176
- /**
177
- * Add or update a system in the user config.
178
- */
179
- export function upsertSystem(name, system) {
180
- let config;
181
- try {
182
- config = loadConfigFile(getUserConfigPath()) ?? { systems: {} };
183
- }
184
- catch {
185
- config = { systems: {} };
186
- }
187
- config.systems[name] = system;
188
- // If this is the first system, make it the default
189
- if (!config.default && Object.keys(config.systems).length === 1) {
190
- config.default = name;
191
- }
192
- saveUserConfig(config);
193
- }
194
- /**
195
- * Remove a system from the user config.
196
- * @returns true if the system existed and was removed.
197
- */
198
- export function removeSystem(name) {
199
- let config;
200
- try {
201
- config = loadConfigFile(getUserConfigPath()) ?? { systems: {} };
202
- }
203
- catch {
204
- return false;
205
- }
206
- if (!(name in config.systems)) {
207
- return false;
208
- }
209
- delete config.systems[name];
210
- // Clear default if it pointed to the removed system
211
- if (config.default === name) {
212
- const remaining = Object.keys(config.systems);
213
- config.default = remaining.length > 0 ? remaining[0] : undefined;
214
- }
215
- saveUserConfig(config);
216
- return true;
217
- }
218
- /**
219
- * Set the default system in the user config.
220
- */
221
- export function setDefaultSystem(name) {
222
- let config;
223
- try {
224
- config = loadConfigFile(getUserConfigPath()) ?? { systems: {} };
225
- }
226
- catch {
227
- config = { systems: {} };
228
- }
229
- // Load project config to check if system exists there
230
- const fullConfig = loadConfig();
231
- if (!(name in fullConfig.systems)) {
232
- throw new Error(`System "${name}" not found. Available systems: ${Object.keys(fullConfig.systems).join(", ") || "(none)"}`);
233
- }
234
- config.default = name;
235
- saveUserConfig(config);
236
- }
237
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/cli/config/loader.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * @fileoverview System resolution for the IBM i CLI.
3
- * Resolves which IBM i system to connect to based on:
4
- * 1. --system flag (highest priority)
5
- * 2. IBMI_SYSTEM environment variable
6
- * 3. Config file default
7
- * 4. DB2i_* environment variables (legacy fallback)
8
- * @module cli/config/resolver
9
- */
10
- import type { CliConfig, ResolvedSystem } from "./types.js";
11
- /**
12
- * Resolve which system to use for a CLI command.
13
- *
14
- * Resolution priority:
15
- * 1. --system <name> flag
16
- * 2. IBMI_SYSTEM environment variable
17
- * 3. Config file `default:` setting
18
- * 4. DB2i_* environment variables (creates implicit "env" system)
19
- *
20
- * @param systemFlag - The --system flag value, if provided.
21
- * @param config - Pre-loaded config (optional, will load if not provided).
22
- * @returns The resolved system context.
23
- * @throws If no system can be resolved.
24
- */
25
- export declare function resolveSystem(systemFlag?: string, config?: CliConfig): ResolvedSystem;
26
- /**
27
- * Resolve one or more systems from a potentially comma-delimited flag.
28
- * Returns a single-element array for normal usage, multiple for `--system dev,test`.
29
- */
30
- export declare function resolveSystems(systemFlag?: string, config?: CliConfig): ResolvedSystem[];
31
- //# sourceMappingURL=resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/cli/config/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AA6B1E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,SAAS,GACjB,cAAc,CAiEhB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,SAAS,GACjB,cAAc,EAAE,CAQlB"}
@@ -1,115 +0,0 @@
1
- /**
2
- * @fileoverview System resolution for the IBM i CLI.
3
- * Resolves which IBM i system to connect to based on:
4
- * 1. --system flag (highest priority)
5
- * 2. IBMI_SYSTEM environment variable
6
- * 3. Config file default
7
- * 4. DB2i_* environment variables (legacy fallback)
8
- * @module cli/config/resolver
9
- */
10
- import { loadConfig } from "./loader.js";
11
- /**
12
- * Build a SystemConfig from legacy DB2i_* environment variables.
13
- * Returns null if the required env vars are not set.
14
- */
15
- function buildLegacySystemConfig() {
16
- const host = process.env["DB2i_HOST"];
17
- const user = process.env["DB2i_USER"];
18
- const password = process.env["DB2i_PASS"];
19
- if (!host || !user) {
20
- return null;
21
- }
22
- return {
23
- host,
24
- user,
25
- password,
26
- port: 8076,
27
- readOnly: false,
28
- confirm: false,
29
- timeout: 60,
30
- maxRows: 5000,
31
- ignoreUnauthorized: process.env["DB2i_IGNORE_UNAUTHORIZED"] !== "false",
32
- };
33
- }
34
- /**
35
- * Resolve which system to use for a CLI command.
36
- *
37
- * Resolution priority:
38
- * 1. --system <name> flag
39
- * 2. IBMI_SYSTEM environment variable
40
- * 3. Config file `default:` setting
41
- * 4. DB2i_* environment variables (creates implicit "env" system)
42
- *
43
- * @param systemFlag - The --system flag value, if provided.
44
- * @param config - Pre-loaded config (optional, will load if not provided).
45
- * @returns The resolved system context.
46
- * @throws If no system can be resolved.
47
- */
48
- export function resolveSystem(systemFlag, config) {
49
- const cfg = config ?? loadConfig();
50
- // 1. --system flag
51
- if (systemFlag) {
52
- const system = cfg.systems[systemFlag];
53
- if (!system) {
54
- const available = Object.keys(cfg.systems);
55
- throw new Error(`System "${systemFlag}" not found in configuration. ` +
56
- (available.length > 0
57
- ? `Available systems: ${available.join(", ")}`
58
- : `No systems configured. Run "ibmi system add" to add one.`));
59
- }
60
- return { name: systemFlag, config: system, source: "flag" };
61
- }
62
- // 2. IBMI_SYSTEM env var
63
- const envSystem = process.env["IBMI_SYSTEM"];
64
- if (envSystem) {
65
- const system = cfg.systems[envSystem];
66
- if (!system) {
67
- const available = Object.keys(cfg.systems);
68
- throw new Error(`System "${envSystem}" (from IBMI_SYSTEM env var) not found. ` +
69
- (available.length > 0
70
- ? `Available systems: ${available.join(", ")}`
71
- : `No systems configured.`));
72
- }
73
- return { name: envSystem, config: system, source: "env" };
74
- }
75
- // 3. Config default
76
- if (cfg.default) {
77
- const system = cfg.systems[cfg.default];
78
- if (system) {
79
- return { name: cfg.default, config: system, source: "config-default" };
80
- }
81
- }
82
- // 4. If there's only one system, use it
83
- const systemNames = Object.keys(cfg.systems);
84
- if (systemNames.length === 1 && systemNames[0]) {
85
- return {
86
- name: systemNames[0],
87
- config: cfg.systems[systemNames[0]],
88
- source: "config-default",
89
- };
90
- }
91
- // 5. Legacy DB2i_* env vars
92
- const legacyConfig = buildLegacySystemConfig();
93
- if (legacyConfig) {
94
- return { name: "env", config: legacyConfig, source: "legacy-env" };
95
- }
96
- // Nothing found
97
- throw new Error("No IBM i system configured. Options:\n" +
98
- " 1. Run: ibmi system add <name>\n" +
99
- " 2. Set IBMI_SYSTEM environment variable\n" +
100
- " 3. Set DB2i_HOST, DB2i_USER, DB2i_PASS environment variables");
101
- }
102
- /**
103
- * Resolve one or more systems from a potentially comma-delimited flag.
104
- * Returns a single-element array for normal usage, multiple for `--system dev,test`.
105
- */
106
- export function resolveSystems(systemFlag, config) {
107
- if (!systemFlag || !systemFlag.includes(",")) {
108
- return [resolveSystem(systemFlag, config)];
109
- }
110
- const cfg = config ?? loadConfig();
111
- return systemFlag
112
- .split(",")
113
- .map((name) => resolveSystem(name.trim(), cfg));
114
- }
115
- //# sourceMappingURL=resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/cli/config/resolver.ts"],"names":[],"mappings":"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"}