@alcyone-labs/arg-parser 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +456 -1301
- package/dist/assets/.dxtignore.template +38 -0
- package/dist/assets/logo_1_small.jpg +0 -0
- package/dist/assets/tsdown.dxt.config.ts +37 -0
- package/dist/index.cjs +5871 -3847
- package/dist/index.cjs.map +1 -1
- package/dist/index.min.mjs +9877 -7956
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +5854 -3838
- package/dist/index.mjs.map +1 -1
- package/dist/src/config/ConfigurationManager.d.ts +74 -0
- package/dist/src/config/ConfigurationManager.d.ts.map +1 -0
- package/dist/src/config/plugins/ConfigPlugin.d.ts +60 -0
- package/dist/src/config/plugins/ConfigPlugin.d.ts.map +1 -0
- package/dist/src/config/plugins/ConfigPluginRegistry.d.ts +72 -0
- package/dist/src/config/plugins/ConfigPluginRegistry.d.ts.map +1 -0
- package/dist/src/config/plugins/TomlConfigPlugin.d.ts +30 -0
- package/dist/src/config/plugins/TomlConfigPlugin.d.ts.map +1 -0
- package/dist/src/config/plugins/YamlConfigPlugin.d.ts +29 -0
- package/dist/src/config/plugins/YamlConfigPlugin.d.ts.map +1 -0
- package/dist/src/config/plugins/index.d.ts +5 -0
- package/dist/src/config/plugins/index.d.ts.map +1 -0
- package/dist/src/core/ArgParser.d.ts +332 -0
- package/dist/src/core/ArgParser.d.ts.map +1 -0
- package/dist/src/{ArgParserBase.d.ts → core/ArgParserBase.d.ts} +84 -3
- package/dist/src/core/ArgParserBase.d.ts.map +1 -0
- package/dist/src/core/FlagManager.d.ts.map +1 -0
- package/dist/src/{types.d.ts → core/types.d.ts} +29 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/dxt/DxtGenerator.d.ts +115 -0
- package/dist/src/dxt/DxtGenerator.d.ts.map +1 -0
- package/dist/src/index.d.ts +10 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mcp/ArgParserMcp.d.ts +21 -0
- package/dist/src/mcp/ArgParserMcp.d.ts.map +1 -0
- package/dist/src/mcp/mcp-integration.d.ts +83 -0
- package/dist/src/mcp/mcp-integration.d.ts.map +1 -0
- package/dist/src/mcp/mcp-notifications.d.ts +138 -0
- package/dist/src/mcp/mcp-notifications.d.ts.map +1 -0
- package/dist/src/mcp/mcp-prompts.d.ts +132 -0
- package/dist/src/mcp/mcp-prompts.d.ts.map +1 -0
- package/dist/src/mcp/mcp-resources.d.ts +133 -0
- package/dist/src/mcp/mcp-resources.d.ts.map +1 -0
- package/dist/src/testing/fuzzy-test-cli.d.ts +5 -0
- package/dist/src/testing/fuzzy-test-cli.d.ts.map +1 -0
- package/dist/src/{fuzzy-tester.d.ts → testing/fuzzy-tester.d.ts} +1 -1
- package/dist/src/testing/fuzzy-tester.d.ts.map +1 -0
- package/package.json +31 -17
- package/dist/src/ArgParser.d.ts +0 -148
- package/dist/src/ArgParser.d.ts.map +0 -1
- package/dist/src/ArgParserBase.d.ts.map +0 -1
- package/dist/src/FlagManager.d.ts.map +0 -1
- package/dist/src/fuzzy-test-cli.d.ts +0 -5
- package/dist/src/fuzzy-test-cli.d.ts.map +0 -1
- package/dist/src/fuzzy-tester.d.ts.map +0 -1
- package/dist/src/mcp-integration.d.ts +0 -31
- package/dist/src/mcp-integration.d.ts.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- /package/dist/src/{FlagManager.d.ts → core/FlagManager.d.ts} +0 -0
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type { IFlag, IHandlerContext, ISubCommand, ProcessedFlag, TParsedArgs } from "./types";
|
|
1
|
+
import type { IFlag, IHandlerContext, ISubCommand, ProcessedFlag, TParsedArgs, ParseResult } from "./types";
|
|
2
|
+
import { McpResourcesManager, McpResourceConfig } from "../mcp/mcp-resources.js";
|
|
3
|
+
import { McpPromptsManager, McpPromptConfig } from "../mcp/mcp-prompts.js";
|
|
4
|
+
import { McpNotificationsManager, McpChangeType } from "../mcp/mcp-notifications.js";
|
|
2
5
|
export declare class ArgParserError extends Error {
|
|
3
6
|
cmdChain: string[];
|
|
4
7
|
commandChain: string[];
|
|
@@ -52,6 +55,13 @@ export interface IArgParserParams<THandlerReturn = any> {
|
|
|
52
55
|
* @default true
|
|
53
56
|
*/
|
|
54
57
|
handleErrors?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Whether to automatically call process.exit() based on ParseResult.
|
|
60
|
+
* When true (default), maintains backward compatibility with CLI behavior.
|
|
61
|
+
* When false, returns ParseResult objects for programmatic use.
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
64
|
+
autoExit?: boolean;
|
|
55
65
|
/**
|
|
56
66
|
* The command name to display in help suggestions (e.g., 'dabl').
|
|
57
67
|
* If not provided, it falls back to guessing from the script path.
|
|
@@ -65,7 +75,7 @@ export interface IArgParserParams<THandlerReturn = any> {
|
|
|
65
75
|
*/
|
|
66
76
|
inheritParentFlags?: boolean;
|
|
67
77
|
}
|
|
68
|
-
interface IParseOptions {
|
|
78
|
+
export interface IParseOptions {
|
|
69
79
|
/**
|
|
70
80
|
* When true, skips help flag processing (doesn't exit or show help)
|
|
71
81
|
* @default false
|
|
@@ -76,6 +86,12 @@ interface IParseOptions {
|
|
|
76
86
|
* @default false
|
|
77
87
|
*/
|
|
78
88
|
skipHandlers?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* When true (default), automatically awaits async handlers before returning.
|
|
91
|
+
* When false, returns immediately with _asyncHandlerPromise for manual handling.
|
|
92
|
+
* @default true
|
|
93
|
+
*/
|
|
94
|
+
deep?: boolean;
|
|
79
95
|
}
|
|
80
96
|
type TParsedArgsWithRouting<T = any> = T & {
|
|
81
97
|
$commandChain?: string[];
|
|
@@ -93,6 +109,12 @@ export declare class ArgParserBase<THandlerReturn = any> {
|
|
|
93
109
|
getAppCommandName(): string | undefined;
|
|
94
110
|
getSubCommandName(): string;
|
|
95
111
|
getDescription(): string | undefined;
|
|
112
|
+
getAutoExit(): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Helper method to handle exit logic based on autoExit setting
|
|
115
|
+
* Returns a ParseResult instead of calling process.exit() when autoExit is false
|
|
116
|
+
*/
|
|
117
|
+
private _handleExit;
|
|
96
118
|
getHandler(): ((ctx: IHandlerContext) => void) | undefined;
|
|
97
119
|
getSubCommands(): Map<string, ISubCommand>;
|
|
98
120
|
private _addToOutput;
|
|
@@ -109,7 +131,14 @@ export declare class ArgParserBase<THandlerReturn = any> {
|
|
|
109
131
|
*/
|
|
110
132
|
setHandler(handler: (ctx: IHandlerContext<any, any>) => THandlerReturn | Promise<THandlerReturn>): this;
|
|
111
133
|
printAll(filePath?: string): void;
|
|
112
|
-
parse(processArgs: string[], options?: IParseOptions): TParsedArgsWithRouting<any>;
|
|
134
|
+
parse(processArgs: string[], options?: IParseOptions): Promise<TParsedArgsWithRouting<any> | ParseResult>;
|
|
135
|
+
/**
|
|
136
|
+
* Alias for parse() method for backward compatibility
|
|
137
|
+
* Since parse() is already async, this just calls parse()
|
|
138
|
+
*
|
|
139
|
+
* @deprecated Use parse() instead. This method will be removed in a future version.
|
|
140
|
+
*/
|
|
141
|
+
parseAsync(processArgs: string[], options?: IParseOptions): Promise<TParsedArgsWithRouting<any> | ParseResult>;
|
|
113
142
|
/**
|
|
114
143
|
* Recursive helper for parsing arguments and handling sub-commands.
|
|
115
144
|
* This method assumes the global help check has already been performed in `parse`.
|
|
@@ -120,6 +149,58 @@ export declare class ArgParserBase<THandlerReturn = any> {
|
|
|
120
149
|
hasFlag(name: string): boolean;
|
|
121
150
|
getCommandChain(): string[];
|
|
122
151
|
getLastParseResult(): TParsedArgs<ProcessedFlag[]>;
|
|
152
|
+
/**
|
|
153
|
+
* Add an MCP resource to this parser
|
|
154
|
+
*/
|
|
155
|
+
addMcpResource(config: McpResourceConfig): this;
|
|
156
|
+
/**
|
|
157
|
+
* Remove an MCP resource by name
|
|
158
|
+
*/
|
|
159
|
+
removeMcpResource(name: string): this;
|
|
160
|
+
/**
|
|
161
|
+
* Get all registered MCP resources
|
|
162
|
+
*/
|
|
163
|
+
getMcpResources(): McpResourceConfig[];
|
|
164
|
+
/**
|
|
165
|
+
* Add an MCP prompt to this parser
|
|
166
|
+
*/
|
|
167
|
+
addMcpPrompt(config: McpPromptConfig): this;
|
|
168
|
+
/**
|
|
169
|
+
* Remove an MCP prompt by name
|
|
170
|
+
*/
|
|
171
|
+
removeMcpPrompt(name: string): this;
|
|
172
|
+
/**
|
|
173
|
+
* Get all registered MCP prompts
|
|
174
|
+
*/
|
|
175
|
+
getMcpPrompts(): McpPromptConfig[];
|
|
176
|
+
/**
|
|
177
|
+
* Add a change listener for MCP entities
|
|
178
|
+
*/
|
|
179
|
+
onMcpChange(listener: (event: {
|
|
180
|
+
type: McpChangeType;
|
|
181
|
+
action: string;
|
|
182
|
+
entityName?: string;
|
|
183
|
+
}) => void): this;
|
|
184
|
+
/**
|
|
185
|
+
* Remove a change listener for MCP entities
|
|
186
|
+
*/
|
|
187
|
+
offMcpChange(listener: (event: {
|
|
188
|
+
type: McpChangeType;
|
|
189
|
+
action: string;
|
|
190
|
+
entityName?: string;
|
|
191
|
+
}) => void): this;
|
|
192
|
+
/**
|
|
193
|
+
* Get the MCP notifications manager (for advanced usage)
|
|
194
|
+
*/
|
|
195
|
+
getMcpNotificationsManager(): McpNotificationsManager;
|
|
196
|
+
/**
|
|
197
|
+
* Get the MCP resources manager (for advanced usage)
|
|
198
|
+
*/
|
|
199
|
+
getMcpResourcesManager(): McpResourcesManager;
|
|
200
|
+
/**
|
|
201
|
+
* Get the MCP prompts manager (for advanced usage)
|
|
202
|
+
*/
|
|
203
|
+
getMcpPromptsManager(): McpPromptsManager;
|
|
123
204
|
}
|
|
124
205
|
export {};
|
|
125
206
|
//# sourceMappingURL=ArgParserBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArgParserBase.d.ts","sourceRoot":"","sources":["../../../src/core/ArgParserBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlagManager.d.ts","sourceRoot":"","sources":["../../../src/core/FlagManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpD,qBAAa,WAAW;;gBAKpB,OAAO,GAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAO,EAClD,YAAY,GAAE,SAAS,KAAK,EAAO;IAMrC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa;IAwC5C,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAoB1B,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAQnE,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI;IAOvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD,IAAI,KAAK,IAAI,aAAa,EAAE,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;CACF"}
|
|
@@ -77,6 +77,8 @@ export type IFlag = IFlagCore & {
|
|
|
77
77
|
default?: any;
|
|
78
78
|
/** @alias mandatory */
|
|
79
79
|
required?: boolean | ((parsedArgs: TParsedArgs<any>) => boolean);
|
|
80
|
+
/** Environment variables that should be set from this flag's value in DXT packages */
|
|
81
|
+
env?: string | string[];
|
|
80
82
|
};
|
|
81
83
|
/**
|
|
82
84
|
* A more refined type for a flag after it has been fully processed by ArgParser,
|
|
@@ -155,6 +157,33 @@ export interface ISubCommand<TSubCommandFlags extends FlagsArray = FlagsArray, T
|
|
|
155
157
|
/** MCP tool generation options for DXT generation */
|
|
156
158
|
mcpToolOptions?: any;
|
|
157
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Result of parsing operations that replaces process.exit() calls.
|
|
162
|
+
* Provides structured information about the parsing outcome.
|
|
163
|
+
*/
|
|
164
|
+
export interface ParseResult<T = any> {
|
|
165
|
+
/** Whether the parsing was successful */
|
|
166
|
+
success: boolean;
|
|
167
|
+
/** Exit code that would have been used with process.exit() */
|
|
168
|
+
exitCode: number;
|
|
169
|
+
/** The parsed data/result when successful */
|
|
170
|
+
data?: T;
|
|
171
|
+
/** Human-readable message about the result */
|
|
172
|
+
message?: string;
|
|
173
|
+
/** Whether the process should exit (for help, version, etc.) */
|
|
174
|
+
shouldExit?: boolean;
|
|
175
|
+
/** Type of result for better handling */
|
|
176
|
+
type?: 'success' | 'error' | 'help' | 'version' | 'debug';
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Configuration options for ArgParser behavior
|
|
180
|
+
*/
|
|
181
|
+
export interface ArgParserOptions {
|
|
182
|
+
/** Whether to automatically call process.exit() based on ParseResult (default: true for backward compatibility) */
|
|
183
|
+
autoExit?: boolean;
|
|
184
|
+
/** Whether to handle errors by exiting or throwing (default: true for backward compatibility) */
|
|
185
|
+
handleErrors?: boolean;
|
|
186
|
+
}
|
|
158
187
|
/**
|
|
159
188
|
* Type for the main handler of an ArgParser instance (root command or a command defined by an ArgParser).
|
|
160
189
|
* @template TParserFlags Flags defined for this ArgParser instance.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { ParseResult } from "../core/types";
|
|
2
|
+
/**
|
|
3
|
+
* DxtGenerator handles the generation of DXT (Desktop Extension) packages
|
|
4
|
+
* for MCP servers created from ArgParser instances.
|
|
5
|
+
*/
|
|
6
|
+
export declare class DxtGenerator {
|
|
7
|
+
private argParserInstance;
|
|
8
|
+
constructor(argParserInstance: any);
|
|
9
|
+
/**
|
|
10
|
+
* Helper method to handle exit logic based on autoExit setting
|
|
11
|
+
*/
|
|
12
|
+
private _handleExit;
|
|
13
|
+
/**
|
|
14
|
+
* Handles the --s-build-dxt system flag to generate DXT packages for MCP servers
|
|
15
|
+
*/
|
|
16
|
+
handleBuildDxtFlag(processArgs: string[], buildDxtIndex: number): Promise<boolean | ParseResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Handles DXT generation in test mode by creating mock DXT package structure
|
|
19
|
+
*/
|
|
20
|
+
private handleTestModeDxtGeneration;
|
|
21
|
+
/**
|
|
22
|
+
* Generates a DXT package for the unified MCP server
|
|
23
|
+
* Now supports both withMcp() configuration and legacy addMcpSubCommand()
|
|
24
|
+
*/
|
|
25
|
+
generateDxtPackage(mcpSubCommand?: any, outputDir?: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Reads package.json to extract fallback information for DXT manifest
|
|
28
|
+
*/
|
|
29
|
+
private readPackageJsonInfo;
|
|
30
|
+
/**
|
|
31
|
+
* Extracts server information from MCP configuration
|
|
32
|
+
* Now supports both withMcp() configuration and legacy addMcpSubCommand()
|
|
33
|
+
*/
|
|
34
|
+
private extractMcpServerInfo;
|
|
35
|
+
private generateMcpToolsForDxt;
|
|
36
|
+
private createDxtManifest;
|
|
37
|
+
private validateDxtManifest;
|
|
38
|
+
private createServerScript;
|
|
39
|
+
private createDxtPackageJson;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a .dxtignore file to exclude build artifacts and unnecessary files
|
|
42
|
+
*/
|
|
43
|
+
private createDxtIgnore;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a simple build script that uses TSDown bundling and Anthropic's dxt pack
|
|
46
|
+
*/
|
|
47
|
+
private createSimpleBuildScript;
|
|
48
|
+
private createDxtReadme;
|
|
49
|
+
/**
|
|
50
|
+
* Maps ArgParser flag types to DXT user config types
|
|
51
|
+
*/
|
|
52
|
+
private mapFlagTypeToUserConfigType;
|
|
53
|
+
/**
|
|
54
|
+
* Generates CLI arguments for DXT manifest based on ArgParser flags
|
|
55
|
+
*/
|
|
56
|
+
private generateCliArgsForDxt;
|
|
57
|
+
/**
|
|
58
|
+
* Generates environment variables and user config for DXT manifest
|
|
59
|
+
*/
|
|
60
|
+
private generateEnvAndUserConfig;
|
|
61
|
+
/**
|
|
62
|
+
* Generates a user-friendly title for user config fields
|
|
63
|
+
*/
|
|
64
|
+
private generateUserConfigTitle;
|
|
65
|
+
/**
|
|
66
|
+
* Checks if a field should be marked as sensitive in user config
|
|
67
|
+
*/
|
|
68
|
+
private isSensitiveField;
|
|
69
|
+
/**
|
|
70
|
+
* Adds the logo to the build folder if available
|
|
71
|
+
* @returns The filename of the logo that was added, or undefined if no logo was added
|
|
72
|
+
*/
|
|
73
|
+
private addLogoToFolder;
|
|
74
|
+
/**
|
|
75
|
+
* Processes CLI source code to replace global console with MCP-compliant Logger
|
|
76
|
+
*/
|
|
77
|
+
private processCliSourceForMcp;
|
|
78
|
+
/**
|
|
79
|
+
* Adds the original CLI source to the build folder for handler execution
|
|
80
|
+
*/
|
|
81
|
+
private addOriginalCliToFolder;
|
|
82
|
+
/**
|
|
83
|
+
* Builds a complete DXT package using TSDown CLI for autonomous execution
|
|
84
|
+
*/
|
|
85
|
+
private buildDxtWithTsdown;
|
|
86
|
+
/**
|
|
87
|
+
* Bundles the original CLI using TSDown for autonomous execution (legacy method)
|
|
88
|
+
*/
|
|
89
|
+
private bundleOriginalCliWithTsdown;
|
|
90
|
+
/**
|
|
91
|
+
* Checks if a module ID is a Node.js built-in
|
|
92
|
+
*/
|
|
93
|
+
private isNodeBuiltin;
|
|
94
|
+
/**
|
|
95
|
+
* Gets the TSDown configuration content as a string
|
|
96
|
+
*/
|
|
97
|
+
private getTsdownConfigContent;
|
|
98
|
+
/**
|
|
99
|
+
* Gets the path to the .dxtignore template file in assets
|
|
100
|
+
*/
|
|
101
|
+
private getDxtIgnoreTemplatePath;
|
|
102
|
+
/**
|
|
103
|
+
* Sets up DXT package files (manifest.json) in the dxt output directory
|
|
104
|
+
*/
|
|
105
|
+
private setupDxtPackageFiles;
|
|
106
|
+
/**
|
|
107
|
+
* Maps ArgParser flag types to JSON Schema types
|
|
108
|
+
*/
|
|
109
|
+
private mapFlagTypeToJsonSchema;
|
|
110
|
+
/**
|
|
111
|
+
* Manually copy logo since TSDown's copy option doesn't work programmatically
|
|
112
|
+
*/
|
|
113
|
+
private copyLogoManually;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=DxtGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DxtGenerator.d.ts","sourceRoot":"","sources":["../../../src/dxt/DxtGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,iBAAiB,CAAM;gBAEnB,iBAAiB,EAAE,GAAG;IAIlC;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACU,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;IAmC7G;;OAEG;YACW,2BAA2B;IA2EzC;;;OAGG;IACU,kBAAkB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0FvF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;IA8D9B,OAAO,CAAC,iBAAiB;IAiFzB,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,oBAAoB;IA8D5B;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqF/B,OAAO,CAAC,eAAe;IAkGvB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8DhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;OAGG;YACW,eAAe;IAqF7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2D9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmJ9B;;OAEG;YACW,kBAAkB;IAuHhC;;OAEG;YACW,2BAA2B;IAiIzC;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAyD9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA4BhC;;OAEG;YACW,oBAAoB;IA4JlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;YACW,gBAAgB;CAgC/B"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
export { ArgParserBase, ArgParserError } from "./ArgParserBase";
|
|
2
|
-
export { ArgParser, type McpTransportConfig, type McpSubCommandOptions } from "./ArgParser";
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export type
|
|
1
|
+
export { ArgParserBase, ArgParserError, type IParseOptions } from "./core/ArgParserBase";
|
|
2
|
+
export { ArgParser, type McpTransportConfig, type McpSubCommandOptions, type DxtServerInfo, type McpServerOptions, type WithMcpOptions, type McpToolConfig, type ToolConfig } from "./core/ArgParser";
|
|
3
|
+
export { ArgParserMcp, createMcpArgParser } from "./mcp/ArgParserMcp";
|
|
4
|
+
export { zodFlagSchema, type IFlagCore, type IFlag, type ProcessedFlagCore, type ProcessedFlag, type TParsedArgsTypeFromFlagDef, type FlagsArray, type ResolveType, type ExtractFlagType, type TParsedArgs, type IHandlerContext, type MainHandler, type ISubCommand, type ArgParserInstance, } from "./core/types";
|
|
5
|
+
export { generateMcpToolsFromArgParser, type IMcpToolStructure, type GenerateMcpToolsOptions, type IParseExecutionResult, type SimplifiedToolResponse, extractSimplifiedResponse, convertFlagToJsonSchemaProperty, convertFlagsToJsonSchema, convertFlagsToZodSchema, createMcpSuccessResponse, createMcpErrorResponse, type McpResponse, } from "./mcp/mcp-integration";
|
|
6
|
+
export { type IConfigPlugin, ConfigPlugin, JsonConfigPlugin, EnvConfigPlugin, ConfigPluginRegistry, globalConfigPluginRegistry, enableOptionalConfigPlugins, enableOptionalConfigPluginsAsync, enableConfigPlugins, TomlConfigPlugin, createTomlPlugin, createTomlPluginAsync, YamlConfigPlugin, createYamlPlugin, createYamlPluginAsync, } from "./config/plugins";
|
|
7
|
+
export { ArgParserFuzzyTester } from "./testing/fuzzy-tester";
|
|
8
|
+
export type { FuzzyTestOptions, TestResult, FuzzyTestReport } from "./testing/fuzzy-tester";
|
|
9
|
+
export { default as SimpleChalk } from "@alcyone-labs/simple-chalk";
|
|
10
|
+
export { Logger, logger, createMcpLogger, createCliLogger, type LogLevel, type LoggerConfig } from "@alcyone-labs/simple-mcp-logger";
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EACL,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EACL,aAAa,EACb,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,6BAA6B,EAC7B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,yBAAyB,EACzB,+BAA+B,EAC/B,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,gCAAgC,EAChC,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG5F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EACL,MAAM,EACN,MAAM,EACN,eAAe,EACf,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ArgParser } from "../core/ArgParser";
|
|
2
|
+
import type { IArgParserParams } from "../core/ArgParserBase";
|
|
3
|
+
import type { IFlag } from "../core/types";
|
|
4
|
+
/**
|
|
5
|
+
* MCP-optimized ArgParser that excludes config file functionality
|
|
6
|
+
* This version doesn't load any config plugins, making it suitable for
|
|
7
|
+
* autonomous builds where TOML/YAML dependencies cause bundling issues.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ArgParserMcp<THandlerReturn = any> extends ArgParser<THandlerReturn> {
|
|
10
|
+
constructor(params?: IArgParserParams<THandlerReturn>, initialFlags?: IFlag[]);
|
|
11
|
+
/**
|
|
12
|
+
* Override parse to skip config file processing
|
|
13
|
+
*/
|
|
14
|
+
parse(processArgs: string[], options?: any): any;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convenience function to create MCP-optimized ArgParser
|
|
18
|
+
* This is the recommended way to create ArgParser instances for MCP servers
|
|
19
|
+
*/
|
|
20
|
+
export declare function createMcpArgParser<THandlerReturn = any>(params?: IArgParserParams<THandlerReturn>, initialFlags?: IFlag[]): ArgParserMcp<THandlerReturn>;
|
|
21
|
+
//# sourceMappingURL=ArgParserMcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArgParserMcp.d.ts","sourceRoot":"","sources":["../../../src/mcp/ArgParserMcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;GAIG;AACH,qBAAa,YAAY,CAAC,cAAc,GAAG,GAAG,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC;gBACnE,MAAM,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE;IAS7E;;OAEG;IACI,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG;CAUxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,GAAG,GAAG,EACrD,MAAM,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,EACzC,YAAY,CAAC,EAAE,KAAK,EAAE,GACrB,YAAY,CAAC,cAAc,CAAC,CAE9B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { ZodTypeAny } from "zod";
|
|
2
|
+
import { ArgParserBase } from "../core/ArgParserBase";
|
|
3
|
+
import type { IFlag, ProcessedFlag, TParsedArgs } from "../core/types";
|
|
4
|
+
/**
|
|
5
|
+
* Standard MCP response format
|
|
6
|
+
*/
|
|
7
|
+
export interface McpResponse {
|
|
8
|
+
content: Array<{
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}>;
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a standardized MCP success response
|
|
16
|
+
*/
|
|
17
|
+
export declare function createMcpSuccessResponse(data: any): McpResponse;
|
|
18
|
+
/**
|
|
19
|
+
* Create a standardized MCP error response
|
|
20
|
+
*/
|
|
21
|
+
export declare function createMcpErrorResponse(error: string | Error): McpResponse;
|
|
22
|
+
/**
|
|
23
|
+
* Convert a single ArgParser flag to JSON Schema property
|
|
24
|
+
*/
|
|
25
|
+
export declare function convertFlagToJsonSchemaProperty(flag: IFlag | ProcessedFlag): {
|
|
26
|
+
property: any;
|
|
27
|
+
isRequired: boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Convert ArgParser flags to MCP JSON Schema
|
|
31
|
+
*/
|
|
32
|
+
export declare function convertFlagsToJsonSchema(flags: readonly (IFlag | ProcessedFlag)[]): {
|
|
33
|
+
type: "object";
|
|
34
|
+
properties: Record<string, any>;
|
|
35
|
+
required: string[];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Convert ArgParser flags to Zod schema for MCP tools
|
|
39
|
+
*/
|
|
40
|
+
export declare function convertFlagsToZodSchema(flags: readonly (IFlag | ProcessedFlag)[]): ZodTypeAny;
|
|
41
|
+
/**
|
|
42
|
+
* Simplified response format for testing and validation
|
|
43
|
+
*/
|
|
44
|
+
export interface SimplifiedToolResponse {
|
|
45
|
+
success: boolean;
|
|
46
|
+
data?: any;
|
|
47
|
+
error?: string;
|
|
48
|
+
message?: string;
|
|
49
|
+
exitCode?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extract simplified response from MCP protocol response
|
|
53
|
+
*/
|
|
54
|
+
export declare function extractSimplifiedResponse(mcpResponse: any): SimplifiedToolResponse;
|
|
55
|
+
export interface IMcpToolStructure {
|
|
56
|
+
name: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
inputSchema: ZodTypeAny;
|
|
59
|
+
outputSchema?: ZodTypeAny;
|
|
60
|
+
execute: (args: any) => Promise<any>;
|
|
61
|
+
executeForTesting?: (args: any) => Promise<SimplifiedToolResponse>;
|
|
62
|
+
}
|
|
63
|
+
export interface GenerateMcpToolsOptions {
|
|
64
|
+
outputSchemaMap?: Record<string, ZodTypeAny>;
|
|
65
|
+
defaultOutputSchema?: ZodTypeAny;
|
|
66
|
+
generateToolName?: (commandPath: string[], appName?: string) => string;
|
|
67
|
+
includeSubCommands?: boolean;
|
|
68
|
+
toolNamePrefix?: string;
|
|
69
|
+
toolNameSuffix?: string;
|
|
70
|
+
}
|
|
71
|
+
interface ISpecialParseResultProps {
|
|
72
|
+
$commandChain?: string[];
|
|
73
|
+
$error?: {
|
|
74
|
+
type: string;
|
|
75
|
+
message: string;
|
|
76
|
+
details?: any;
|
|
77
|
+
};
|
|
78
|
+
handlerResponse?: any;
|
|
79
|
+
}
|
|
80
|
+
export type IParseExecutionResult = TParsedArgs<ProcessedFlag[]> & ISpecialParseResultProps;
|
|
81
|
+
export declare function generateMcpToolsFromArgParser(rootParser: ArgParserBase, options?: GenerateMcpToolsOptions): IMcpToolStructure[];
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=mcp-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-integration.d.ts","sourceRoot":"","sources":["../../../src/mcp/mcp-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Change Notifications System
|
|
3
|
+
*
|
|
4
|
+
* This module provides functionality for managing MCP change notifications,
|
|
5
|
+
* allowing clients to subscribe to changes in tools, resources, and prompts.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Types of MCP entities that can change
|
|
9
|
+
*/
|
|
10
|
+
export type McpChangeType = 'tools' | 'resources' | 'prompts';
|
|
11
|
+
/**
|
|
12
|
+
* Change notification event
|
|
13
|
+
*/
|
|
14
|
+
export interface McpChangeEvent {
|
|
15
|
+
type: McpChangeType;
|
|
16
|
+
timestamp: Date;
|
|
17
|
+
action: 'added' | 'removed' | 'updated';
|
|
18
|
+
entityName?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Change listener function type
|
|
22
|
+
*/
|
|
23
|
+
export type McpChangeListener = (event: McpChangeEvent) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Client subscription information
|
|
26
|
+
*/
|
|
27
|
+
export interface McpClientSubscription {
|
|
28
|
+
clientId: string;
|
|
29
|
+
subscriptions: Set<McpChangeType>;
|
|
30
|
+
connection: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* MCP Change Notifications Manager
|
|
34
|
+
*
|
|
35
|
+
* Manages client subscriptions and change notifications for MCP entities
|
|
36
|
+
*/
|
|
37
|
+
export declare class McpNotificationsManager {
|
|
38
|
+
private clients;
|
|
39
|
+
private globalListeners;
|
|
40
|
+
private changeHistory;
|
|
41
|
+
private maxHistorySize;
|
|
42
|
+
/**
|
|
43
|
+
* Add a client connection
|
|
44
|
+
*/
|
|
45
|
+
addClient(clientId: string, connection: any): void;
|
|
46
|
+
/**
|
|
47
|
+
* Remove a client connection
|
|
48
|
+
*/
|
|
49
|
+
removeClient(clientId: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Subscribe a client to changes of a specific type
|
|
52
|
+
*/
|
|
53
|
+
subscribe(clientId: string, type: McpChangeType): void;
|
|
54
|
+
/**
|
|
55
|
+
* Unsubscribe a client from changes of a specific type
|
|
56
|
+
*/
|
|
57
|
+
unsubscribe(clientId: string, type: McpChangeType): void;
|
|
58
|
+
/**
|
|
59
|
+
* Subscribe a client to all change types
|
|
60
|
+
*/
|
|
61
|
+
subscribeToAll(clientId: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Unsubscribe a client from all change types
|
|
64
|
+
*/
|
|
65
|
+
unsubscribeFromAll(clientId: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get client subscription status
|
|
68
|
+
*/
|
|
69
|
+
getClientSubscriptions(clientId: string): Set<McpChangeType> | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a client is subscribed to a specific change type
|
|
72
|
+
*/
|
|
73
|
+
isClientSubscribed(clientId: string, type: McpChangeType): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Notify all subscribed clients of a change
|
|
76
|
+
*/
|
|
77
|
+
notifyChange(type: McpChangeType, action: 'added' | 'removed' | 'updated', entityName?: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Add a global change listener (not client-specific)
|
|
80
|
+
*/
|
|
81
|
+
addGlobalListener(listener: McpChangeListener): void;
|
|
82
|
+
/**
|
|
83
|
+
* Remove a global change listener
|
|
84
|
+
*/
|
|
85
|
+
removeGlobalListener(listener: McpChangeListener): void;
|
|
86
|
+
/**
|
|
87
|
+
* Get change history
|
|
88
|
+
*/
|
|
89
|
+
getChangeHistory(limit?: number): McpChangeEvent[];
|
|
90
|
+
/**
|
|
91
|
+
* Clear change history
|
|
92
|
+
*/
|
|
93
|
+
clearHistory(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Get connected client count
|
|
96
|
+
*/
|
|
97
|
+
getClientCount(): number;
|
|
98
|
+
/**
|
|
99
|
+
* Get subscription statistics
|
|
100
|
+
*/
|
|
101
|
+
getSubscriptionStats(): Record<McpChangeType, number>;
|
|
102
|
+
/**
|
|
103
|
+
* Send notification to a specific client
|
|
104
|
+
*/
|
|
105
|
+
private sendNotificationToClient;
|
|
106
|
+
/**
|
|
107
|
+
* Add event to change history
|
|
108
|
+
*/
|
|
109
|
+
private addToHistory;
|
|
110
|
+
/**
|
|
111
|
+
* Set maximum history size
|
|
112
|
+
*/
|
|
113
|
+
setMaxHistorySize(size: number): void;
|
|
114
|
+
/**
|
|
115
|
+
* Clear all subscriptions and clients
|
|
116
|
+
*/
|
|
117
|
+
clear(): void;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Utility functions for working with change notifications
|
|
121
|
+
*/
|
|
122
|
+
/**
|
|
123
|
+
* Create a debounced change notifier to batch rapid changes
|
|
124
|
+
*/
|
|
125
|
+
export declare function createDebouncedNotifier(manager: McpNotificationsManager, delay?: number): (type: McpChangeType, action: 'added' | 'removed' | 'updated', entityName?: string) => void;
|
|
126
|
+
/**
|
|
127
|
+
* Create a filtered change listener that only responds to specific types
|
|
128
|
+
*/
|
|
129
|
+
export declare function createFilteredListener(types: McpChangeType[], listener: McpChangeListener): McpChangeListener;
|
|
130
|
+
/**
|
|
131
|
+
* Create a logging change listener for debugging
|
|
132
|
+
*/
|
|
133
|
+
export declare function createLoggingListener(prefix?: string): McpChangeListener;
|
|
134
|
+
/**
|
|
135
|
+
* Default global notifications manager instance
|
|
136
|
+
*/
|
|
137
|
+
export declare const globalNotificationsManager: McpNotificationsManager;
|
|
138
|
+
//# sourceMappingURL=mcp-notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-notifications.d.ts","sourceRoot":"","sources":["../../../src/mcp/mcp-notifications.ts"],"names":[],"mappings":"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"}
|