@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,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Multi-system parallel execution for the IBM i CLI.
|
|
3
|
-
* Creates a temporary SourceManager to run queries against multiple
|
|
4
|
-
* systems in parallel using independent connection pools.
|
|
5
|
-
* @module cli/utils/multi-connection
|
|
6
|
-
*/
|
|
7
|
-
import { resolvePassword } from "../config/credentials.js";
|
|
8
|
-
import { createCliContext } from "./command-helpers.js";
|
|
9
|
-
/**
|
|
10
|
-
* Execute an action against multiple systems in parallel using SourceManager.
|
|
11
|
-
*
|
|
12
|
-
* Creates a temporary SourceManager instance with one pool per system,
|
|
13
|
-
* fans out the action via Promise.allSettled, and cleans up all pools.
|
|
14
|
-
*/
|
|
15
|
-
export async function executeMultiSystem(systems, action) {
|
|
16
|
-
// Dynamic import to avoid pulling server modules into static CLI chain
|
|
17
|
-
const { SourceManager } = await import("../../ibmi-mcp-server/services/sourceManager.js");
|
|
18
|
-
// Resolve passwords upfront (sequentially — interactive prompts can't interleave)
|
|
19
|
-
const credentials = new Map();
|
|
20
|
-
for (const sys of systems) {
|
|
21
|
-
const password = await resolvePassword(sys.name, sys.config.password, sys.config.user, sys.config.host);
|
|
22
|
-
credentials.set(sys.name, password);
|
|
23
|
-
}
|
|
24
|
-
// Create a temporary SourceManager (not the singleton)
|
|
25
|
-
const mgr = new SourceManager();
|
|
26
|
-
try {
|
|
27
|
-
// Register each system as a named source
|
|
28
|
-
for (const sys of systems) {
|
|
29
|
-
await mgr.registerSource(sys.name, {
|
|
30
|
-
host: sys.config.host,
|
|
31
|
-
user: sys.config.user,
|
|
32
|
-
password: credentials.get(sys.name),
|
|
33
|
-
port: sys.config.port,
|
|
34
|
-
"ignore-unauthorized": sys.config.ignoreUnauthorized,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
// Fan out in parallel
|
|
38
|
-
const settled = await Promise.allSettled(systems.map(async (sys) => {
|
|
39
|
-
const ctx = createCliContext(`multi_sql_${sys.name}`);
|
|
40
|
-
const startTime = Date.now();
|
|
41
|
-
const result = await action(sys.name, mgr, ctx);
|
|
42
|
-
return {
|
|
43
|
-
system: sys.name,
|
|
44
|
-
host: sys.config.host,
|
|
45
|
-
data: result.data,
|
|
46
|
-
rowCount: result.data.length,
|
|
47
|
-
elapsedMs: Date.now() - startTime,
|
|
48
|
-
};
|
|
49
|
-
}));
|
|
50
|
-
// Map settled results
|
|
51
|
-
return settled.map((outcome, i) => {
|
|
52
|
-
if (outcome.status === "fulfilled") {
|
|
53
|
-
return outcome.value;
|
|
54
|
-
}
|
|
55
|
-
const sys = systems[i];
|
|
56
|
-
return {
|
|
57
|
-
system: sys.name,
|
|
58
|
-
host: sys.config.host,
|
|
59
|
-
data: [],
|
|
60
|
-
rowCount: 0,
|
|
61
|
-
elapsedMs: 0,
|
|
62
|
-
error: outcome.reason instanceof Error
|
|
63
|
-
? outcome.reason.message
|
|
64
|
-
: String(outcome.reason),
|
|
65
|
-
};
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
finally {
|
|
69
|
-
await mgr.closeAllSources();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=multi-connection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-connection.js","sourceRoot":"","sources":["../../../src/cli/utils/multi-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Lightweight YAML tool configuration loader for CLI.
|
|
3
|
-
* Reads and parses YAML tool files without pulling in the full MCP server stack.
|
|
4
|
-
* Used by discovery commands (ibmi tools, ibmi toolsets) and tool execution.
|
|
5
|
-
* @module cli/utils/yaml-loader
|
|
6
|
-
*/
|
|
7
|
-
/** Parameter definition from a YAML tool config. */
|
|
8
|
-
export interface YamlToolParameter {
|
|
9
|
-
name: string;
|
|
10
|
-
type: "string" | "boolean" | "integer" | "float" | "array";
|
|
11
|
-
description?: string;
|
|
12
|
-
required?: boolean;
|
|
13
|
-
default?: string | number | boolean | unknown[] | null;
|
|
14
|
-
enum?: Array<string | number | boolean>;
|
|
15
|
-
itemType?: "string" | "boolean" | "integer" | "float";
|
|
16
|
-
min?: number;
|
|
17
|
-
max?: number;
|
|
18
|
-
minLength?: number;
|
|
19
|
-
maxLength?: number;
|
|
20
|
-
pattern?: string;
|
|
21
|
-
}
|
|
22
|
-
/** Security config from a YAML tool. */
|
|
23
|
-
export interface YamlToolSecurity {
|
|
24
|
-
readOnly?: boolean;
|
|
25
|
-
maxQueryLength?: number;
|
|
26
|
-
forbiddenKeywords?: string[];
|
|
27
|
-
}
|
|
28
|
-
/** A single tool definition loaded from YAML. */
|
|
29
|
-
export interface YamlToolConfig {
|
|
30
|
-
source: string;
|
|
31
|
-
description: string;
|
|
32
|
-
statement?: string;
|
|
33
|
-
parameters: YamlToolParameter[];
|
|
34
|
-
security?: YamlToolSecurity;
|
|
35
|
-
responseFormat?: string;
|
|
36
|
-
tableFormat?: string;
|
|
37
|
-
maxDisplayRows?: number;
|
|
38
|
-
enabled?: boolean;
|
|
39
|
-
annotations?: Record<string, unknown>;
|
|
40
|
-
}
|
|
41
|
-
/** Toolset definition from YAML. */
|
|
42
|
-
export interface YamlToolsetConfig {
|
|
43
|
-
title?: string;
|
|
44
|
-
description?: string;
|
|
45
|
-
tools: string[];
|
|
46
|
-
}
|
|
47
|
-
/** Complete YAML tools configuration. */
|
|
48
|
-
export interface YamlToolsConfig {
|
|
49
|
-
tools: Record<string, YamlToolConfig>;
|
|
50
|
-
toolsets: Record<string, YamlToolsetConfig>;
|
|
51
|
-
sources: Record<string, Record<string, unknown>>;
|
|
52
|
-
metadata?: Record<string, unknown>;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Load and parse a single YAML tool file.
|
|
56
|
-
* Performs env var interpolation but no Zod validation (lightweight).
|
|
57
|
-
*/
|
|
58
|
-
export declare function loadYamlFile(filePath: string): YamlToolsConfig;
|
|
59
|
-
/**
|
|
60
|
-
* Load YAML tools from one or more paths.
|
|
61
|
-
* Accepts file paths, directories (scans for *.yaml/*.yml), or comma-separated lists.
|
|
62
|
-
* Merges all configs together, with later files overriding earlier ones.
|
|
63
|
-
*/
|
|
64
|
-
export declare function loadYamlTools(paths: string[]): YamlToolsConfig;
|
|
65
|
-
/**
|
|
66
|
-
* Build a reverse map from tool name → toolset names.
|
|
67
|
-
*/
|
|
68
|
-
export declare function buildToolsetMap(toolsets: Record<string, YamlToolsetConfig>): Map<string, string[]>;
|
|
69
|
-
//# sourceMappingURL=yaml-loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/yaml-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IACvD,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAWD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAgB9D;AA4BD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,CAuB9D;AA0CD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC1C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAUvB"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Lightweight YAML tool configuration loader for CLI.
|
|
3
|
-
* Reads and parses YAML tool files without pulling in the full MCP server stack.
|
|
4
|
-
* Used by discovery commands (ibmi tools, ibmi toolsets) and tool execution.
|
|
5
|
-
* @module cli/utils/yaml-loader
|
|
6
|
-
*/
|
|
7
|
-
import { readFileSync, existsSync, statSync, readdirSync } from "fs";
|
|
8
|
-
import { resolve, join } from "path";
|
|
9
|
-
import { load as yamlLoad } from "js-yaml";
|
|
10
|
-
/**
|
|
11
|
-
* Interpolate ${ENV_VAR} references in a string.
|
|
12
|
-
*/
|
|
13
|
-
function interpolateEnvVars(content) {
|
|
14
|
-
return content.replace(/\$\{([^}]+)\}/g, (_, varName) => {
|
|
15
|
-
return process.env[varName.trim()] ?? "";
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Load and parse a single YAML tool file.
|
|
20
|
-
* Performs env var interpolation but no Zod validation (lightweight).
|
|
21
|
-
*/
|
|
22
|
-
export function loadYamlFile(filePath) {
|
|
23
|
-
const resolved = resolve(filePath);
|
|
24
|
-
if (!existsSync(resolved)) {
|
|
25
|
-
throw new Error(`YAML tool file not found: ${resolved}`);
|
|
26
|
-
}
|
|
27
|
-
const content = readFileSync(resolved, "utf-8");
|
|
28
|
-
const interpolated = interpolateEnvVars(content);
|
|
29
|
-
const parsed = yamlLoad(interpolated);
|
|
30
|
-
return {
|
|
31
|
-
tools: normalizeTools(parsed["tools"]),
|
|
32
|
-
toolsets: (parsed["toolsets"] ?? {}),
|
|
33
|
-
sources: (parsed["sources"] ?? {}),
|
|
34
|
-
metadata: parsed["metadata"],
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Normalize raw tool entries to ensure parameters is always an array.
|
|
39
|
-
*/
|
|
40
|
-
function normalizeTools(raw) {
|
|
41
|
-
if (!raw)
|
|
42
|
-
return {};
|
|
43
|
-
const result = {};
|
|
44
|
-
for (const [name, value] of Object.entries(raw)) {
|
|
45
|
-
const tool = value;
|
|
46
|
-
result[name] = {
|
|
47
|
-
source: tool["source"] ?? "",
|
|
48
|
-
description: tool["description"] ?? "",
|
|
49
|
-
statement: tool["statement"],
|
|
50
|
-
parameters: Array.isArray(tool["parameters"]) ? tool["parameters"] : [],
|
|
51
|
-
security: tool["security"],
|
|
52
|
-
responseFormat: tool["responseFormat"],
|
|
53
|
-
tableFormat: tool["tableFormat"],
|
|
54
|
-
maxDisplayRows: tool["maxDisplayRows"],
|
|
55
|
-
enabled: tool["enabled"],
|
|
56
|
-
annotations: tool["annotations"],
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Load YAML tools from one or more paths.
|
|
63
|
-
* Accepts file paths, directories (scans for *.yaml/*.yml), or comma-separated lists.
|
|
64
|
-
* Merges all configs together, with later files overriding earlier ones.
|
|
65
|
-
*/
|
|
66
|
-
export function loadYamlTools(paths) {
|
|
67
|
-
const merged = {
|
|
68
|
-
tools: {},
|
|
69
|
-
toolsets: {},
|
|
70
|
-
sources: {},
|
|
71
|
-
};
|
|
72
|
-
for (const p of paths) {
|
|
73
|
-
const resolved = resolve(p.trim());
|
|
74
|
-
const filePaths = resolveToFiles(resolved);
|
|
75
|
-
for (const filePath of filePaths) {
|
|
76
|
-
const config = loadYamlFile(filePath);
|
|
77
|
-
Object.assign(merged.tools, config.tools);
|
|
78
|
-
Object.assign(merged.toolsets, config.toolsets);
|
|
79
|
-
Object.assign(merged.sources, config.sources);
|
|
80
|
-
if (config.metadata) {
|
|
81
|
-
merged.metadata = { ...(merged.metadata ?? {}), ...config.metadata };
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return merged;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Resolve a path to a list of YAML files.
|
|
89
|
-
* If it's a file, returns [file]. If directory, scans for *.yaml/*.yml recursively.
|
|
90
|
-
*/
|
|
91
|
-
function resolveToFiles(p) {
|
|
92
|
-
if (!existsSync(p)) {
|
|
93
|
-
throw new Error(`Path not found: ${p}`);
|
|
94
|
-
}
|
|
95
|
-
const stat = statSync(p);
|
|
96
|
-
if (stat.isFile()) {
|
|
97
|
-
return [p];
|
|
98
|
-
}
|
|
99
|
-
if (stat.isDirectory()) {
|
|
100
|
-
return scanDirectory(p);
|
|
101
|
-
}
|
|
102
|
-
return [];
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Recursively scan a directory for YAML files.
|
|
106
|
-
*/
|
|
107
|
-
function scanDirectory(dir) {
|
|
108
|
-
const results = [];
|
|
109
|
-
const entries = readdirSync(dir, { withFileTypes: true });
|
|
110
|
-
for (const entry of entries) {
|
|
111
|
-
const fullPath = join(dir, entry.name);
|
|
112
|
-
if (entry.isDirectory()) {
|
|
113
|
-
results.push(...scanDirectory(fullPath));
|
|
114
|
-
}
|
|
115
|
-
else if (entry.isFile() && /\.ya?ml$/i.test(entry.name)) {
|
|
116
|
-
results.push(fullPath);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return results;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Build a reverse map from tool name → toolset names.
|
|
123
|
-
*/
|
|
124
|
-
export function buildToolsetMap(toolsets) {
|
|
125
|
-
const map = new Map();
|
|
126
|
-
for (const [tsName, tsConfig] of Object.entries(toolsets)) {
|
|
127
|
-
for (const toolName of tsConfig.tools) {
|
|
128
|
-
const existing = map.get(toolName) ?? [];
|
|
129
|
-
existing.push(tsName);
|
|
130
|
-
map.set(toolName, existing);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return map;
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=yaml-loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-loader.js","sourceRoot":"","sources":["../../../src/cli/utils/yaml-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Maps YAML tool parameter definitions to Commander CLI options.
|
|
3
|
-
* Handles snake_case → kebab-case conversion, type coercion, and reverse mapping.
|
|
4
|
-
* @module cli/utils/yaml-to-commander
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from "commander";
|
|
7
|
-
import type { YamlToolParameter } from "./yaml-loader.js";
|
|
8
|
-
/**
|
|
9
|
-
* Register YAML tool parameters as Commander options on a Command.
|
|
10
|
-
* Each parameter becomes a typed CLI option with coercion and defaults.
|
|
11
|
-
*/
|
|
12
|
-
export declare function registerToolOptions(cmd: Command, params: YamlToolParameter[]): void;
|
|
13
|
-
/**
|
|
14
|
-
* Convert Commander options (camelCase from --kebab-case) back to
|
|
15
|
-
* snake_case parameter names for YAML tool execution.
|
|
16
|
-
*
|
|
17
|
-
* Commander converts --schema-name to opts.schemaName.
|
|
18
|
-
* This maps it back to { schema_name: value }.
|
|
19
|
-
*/
|
|
20
|
-
export declare function optsToParams(opts: Record<string, unknown>, params: YamlToolParameter[]): Record<string, unknown>;
|
|
21
|
-
/**
|
|
22
|
-
* Validate required parameters are present.
|
|
23
|
-
* Returns an array of missing required parameter names.
|
|
24
|
-
*/
|
|
25
|
-
export declare function validateRequiredParams(values: Record<string, unknown>, params: YamlToolParameter[]): string[];
|
|
26
|
-
//# sourceMappingURL=yaml-to-commander.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-to-commander.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/yaml-to-commander.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA8C1D;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,iBAAiB,EAAE,GAC1B,IAAI,CA4CN;AA+BD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,iBAAiB,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AASD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,iBAAiB,EAAE,GAC1B,MAAM,EAAE,CAQV"}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Maps YAML tool parameter definitions to Commander CLI options.
|
|
3
|
-
* Handles snake_case → kebab-case conversion, type coercion, and reverse mapping.
|
|
4
|
-
* @module cli/utils/yaml-to-commander
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Convert a snake_case parameter name to a --kebab-case CLI flag.
|
|
8
|
-
*
|
|
9
|
-
* Examples:
|
|
10
|
-
* schema_name → --schema-name <value>
|
|
11
|
-
* include_system → --include-system
|
|
12
|
-
* limit → --limit <n>
|
|
13
|
-
*/
|
|
14
|
-
function toOptionFlag(param) {
|
|
15
|
-
const kebab = param.name.replace(/_/g, "-");
|
|
16
|
-
if (param.type === "boolean") {
|
|
17
|
-
return `--${kebab}`;
|
|
18
|
-
}
|
|
19
|
-
return `--${kebab} <value>`;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Build a description string for a parameter, including enum/range hints.
|
|
23
|
-
*/
|
|
24
|
-
function buildDescription(param) {
|
|
25
|
-
const parts = [];
|
|
26
|
-
if (param.description) {
|
|
27
|
-
parts.push(param.description);
|
|
28
|
-
}
|
|
29
|
-
if (param.enum && param.enum.length > 0) {
|
|
30
|
-
const values = param.enum.map((v) => String(v)).join(", ");
|
|
31
|
-
parts.push(`choices: ${values}`);
|
|
32
|
-
}
|
|
33
|
-
if (param.min !== undefined || param.max !== undefined) {
|
|
34
|
-
const range = [
|
|
35
|
-
param.min !== undefined ? `min: ${param.min}` : null,
|
|
36
|
-
param.max !== undefined ? `max: ${param.max}` : null,
|
|
37
|
-
]
|
|
38
|
-
.filter(Boolean)
|
|
39
|
-
.join(", ");
|
|
40
|
-
parts.push(range);
|
|
41
|
-
}
|
|
42
|
-
return parts.join(". ") || param.name;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Register YAML tool parameters as Commander options on a Command.
|
|
46
|
-
* Each parameter becomes a typed CLI option with coercion and defaults.
|
|
47
|
-
*/
|
|
48
|
-
export function registerToolOptions(cmd, params) {
|
|
49
|
-
for (const param of params) {
|
|
50
|
-
const flag = toOptionFlag(param);
|
|
51
|
-
const desc = buildDescription(param);
|
|
52
|
-
switch (param.type) {
|
|
53
|
-
case "boolean":
|
|
54
|
-
cmd.option(flag, desc);
|
|
55
|
-
break;
|
|
56
|
-
case "integer":
|
|
57
|
-
if (param.default !== undefined) {
|
|
58
|
-
cmd.option(flag, desc, parseIntOption, param.default);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
cmd.option(flag, desc, parseIntOption);
|
|
62
|
-
}
|
|
63
|
-
break;
|
|
64
|
-
case "float":
|
|
65
|
-
if (param.default !== undefined) {
|
|
66
|
-
cmd.option(flag, desc, parseFloatOption, param.default);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
cmd.option(flag, desc, parseFloatOption);
|
|
70
|
-
}
|
|
71
|
-
break;
|
|
72
|
-
case "array":
|
|
73
|
-
if (param.default !== undefined) {
|
|
74
|
-
cmd.option(flag, desc, parseArrayOption, param.default);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
cmd.option(flag, desc, parseArrayOption);
|
|
78
|
-
}
|
|
79
|
-
break;
|
|
80
|
-
default:
|
|
81
|
-
// string
|
|
82
|
-
if (param.default !== undefined) {
|
|
83
|
-
cmd.option(flag, desc, String(param.default));
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
cmd.option(flag, desc);
|
|
87
|
-
}
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Commander parse function for integer options.
|
|
94
|
-
*/
|
|
95
|
-
function parseIntOption(value) {
|
|
96
|
-
const parsed = parseInt(value, 10);
|
|
97
|
-
if (isNaN(parsed)) {
|
|
98
|
-
throw new Error(`Expected an integer but got: ${value}`);
|
|
99
|
-
}
|
|
100
|
-
return parsed;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Commander parse function for float options.
|
|
104
|
-
*/
|
|
105
|
-
function parseFloatOption(value) {
|
|
106
|
-
const parsed = parseFloat(value);
|
|
107
|
-
if (isNaN(parsed)) {
|
|
108
|
-
throw new Error(`Expected a number but got: ${value}`);
|
|
109
|
-
}
|
|
110
|
-
return parsed;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Commander parse function for array options (comma-separated).
|
|
114
|
-
*/
|
|
115
|
-
function parseArrayOption(value) {
|
|
116
|
-
return value.split(",").map((s) => s.trim());
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Convert Commander options (camelCase from --kebab-case) back to
|
|
120
|
-
* snake_case parameter names for YAML tool execution.
|
|
121
|
-
*
|
|
122
|
-
* Commander converts --schema-name to opts.schemaName.
|
|
123
|
-
* This maps it back to { schema_name: value }.
|
|
124
|
-
*/
|
|
125
|
-
export function optsToParams(opts, params) {
|
|
126
|
-
const result = {};
|
|
127
|
-
for (const param of params) {
|
|
128
|
-
// Commander converts --kebab-case → camelCase
|
|
129
|
-
const kebab = param.name.replace(/_/g, "-");
|
|
130
|
-
const camel = kebabToCamel(kebab);
|
|
131
|
-
if (opts[camel] !== undefined) {
|
|
132
|
-
result[param.name] = opts[camel];
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return result;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Convert kebab-case to camelCase (matching Commander's behavior).
|
|
139
|
-
*/
|
|
140
|
-
function kebabToCamel(s) {
|
|
141
|
-
return s.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Validate required parameters are present.
|
|
145
|
-
* Returns an array of missing required parameter names.
|
|
146
|
-
*/
|
|
147
|
-
export function validateRequiredParams(values, params) {
|
|
148
|
-
const missing = [];
|
|
149
|
-
for (const param of params) {
|
|
150
|
-
if (param.required && param.default === undefined && values[param.name] === undefined) {
|
|
151
|
-
missing.push(param.name);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return missing;
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=yaml-to-commander.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-to-commander.js","sourceRoot":"","sources":["../../../src/cli/utils/yaml-to-commander.ts"],"names":[],"mappings":"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"}
|