@alcyone-labs/arg-parser 1.0.0 → 1.2.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@alcyone-labs/arg-parser",
3
- "version": "1.0.0",
4
- "description": "A robust, type-safe command line argument parser with automatic type inference, validation, help generation and complex sub-command support",
3
+ "version": "1.2.0",
4
+ "description": "A robust, type-safe command line argument parser with automatic type inference, validation, help generation and complex sub-command support, now with built-in MCP, DXT and fuzzy testing support.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
7
7
  "module": "dist/index.mjs",
@@ -18,7 +18,14 @@
18
18
  "./package.json": "./package.json"
19
19
  },
20
20
  "files": [
21
- "dist",
21
+ "dist/index.cjs",
22
+ "dist/index.cjs.map",
23
+ "dist/index.mjs",
24
+ "dist/index.mjs.map",
25
+ "dist/index.min.mjs",
26
+ "dist/index.min.mjs.map",
27
+ "dist/src/**/*.d.ts",
28
+ "dist/src/**/*.d.ts.map",
22
29
  "README.md",
23
30
  "LICENSE"
24
31
  ],
@@ -30,40 +37,64 @@
30
37
  "CLI",
31
38
  "Arg Parser",
32
39
  "CLI Commands",
33
- "Sub-commands"
40
+ "Sub-commands",
41
+ "MCP",
42
+ "LLM Tool Calls",
43
+ "DXT"
34
44
  ],
35
45
  "author": "Nicolas Embleton <nicolas.embleton@gmail.com>",
36
46
  "license": "MIT",
37
47
  "dependencies": {
48
+ "@iarna/toml": "^2.2.5",
49
+ "adm-zip": "^0.5.16",
38
50
  "chalk": "^5.4.1",
51
+ "dotenv": "^16.5.0",
52
+ "js-yaml": "^4.1.0",
39
53
  "magic-regexp": "^0.10.0",
40
- "zod": "^3.25.49"
54
+ "node-fetch": "^3.3.2",
55
+ "zod": "^3.25.67"
56
+ },
57
+ "optionalDependencies": {
58
+ "@modelcontextprotocol/sdk": "^1.13.1",
59
+ "express": "^5.1.0"
41
60
  },
42
61
  "devDependencies": {
43
62
  "@ianvs/prettier-plugin-sort-imports": "^4.4.2",
44
- "@types/node": "^22.15.29",
63
+ "@types/adm-zip": "^0.5.7",
64
+ "@types/express": "^5.0.3",
65
+ "@types/js-yaml": "^4.0.9",
66
+ "@types/node": "^22.15.33",
45
67
  "cross-env": "^7.0.3",
46
68
  "madge": "^8.0.0",
47
- "prettier": "^3.5.3",
69
+ "prettier": "^3.6.1",
70
+ "ts-node": "^10.9.2",
48
71
  "typescript": "^5.8.3",
49
72
  "vite": "^6.3.5",
50
73
  "vite-tsconfig-paths": "^5.1.4",
51
- "vitest": "^3.2.0"
74
+ "vitest": "^3.2.4"
52
75
  },
53
76
  "scripts": {
54
- "clean": "rm -rf dist",
77
+ "clean": "rm -rf dist dist-examples",
55
78
  "build:types": "tsc --project tsconfig.json --emitDeclarationOnly",
56
79
  "build:cjs": "cross-env VITE_BUILD_FORMAT=cjs vite build",
57
80
  "build:esm": "cross-env VITE_BUILD_FORMAT=es VITE_MINIFY_BUILD=false vite build",
58
81
  "build:min": "cross-env VITE_BUILD_FORMAT=es VITE_MINIFY_BUILD=true vite build",
59
82
  "build": "pnpm clean && pnpm run build:types && pnpm run build:cjs && pnpm run build:esm && pnpm run build:min",
60
83
  "build:watch": "tsc --watch",
84
+ "build:examples": "tsc --project tsconfig.examples.json",
61
85
  "test:watch": "vitest",
62
86
  "test:run": "vitest run",
63
87
  "test:ui": "vitest --ui",
88
+ "test:mcp": "bun tests/mcp/integration/run-integration-tests.ts",
89
+ "test:mcp:verbose": "bun tests/mcp/integration/run-integration-tests.ts --verbose",
90
+ "test:mcp:e2e": "bun tests/mcp/integration/run-integration-tests.ts --suite end-to-end",
91
+ "test:mcp:compliance": "bun tests/mcp/integration/run-integration-tests.ts --suite protocol-compliance",
92
+ "test:mcp:performance": "bun tests/mcp/integration/run-integration-tests.ts --suite performance",
93
+ "test:mcp:canny": "bun tests/mcp/integration/run-integration-tests.ts --suite canny-cli",
64
94
  "format": "prettier . --write",
65
95
  "check:cir-dep": "madge ./ -c --ts-config tsconfig.dev.json",
66
96
  "check:types": "tsc --project ./tsconfig.dev.json --noEmit",
67
- "build:checks": "pnpm check:cir-dep && pnpm check:types"
97
+ "build:checks": "pnpm check:cir-dep && pnpm check:types",
98
+ "test:built": "node test-built-library.mjs"
68
99
  }
69
100
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArgParser.d.ts","sourceRoot":"","sources":["../src/ArgParser.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EACd,KAAK,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAe,SAAQ,KAAK;IAI9B,QAAQ,EAAE,MAAM,EAAE;IAHpB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAE5B,OAAO,EAAE,MAAM,EACR,QAAQ,GAAE,MAAM,EAAO;CAMjC;AAKD,UAAU,gBAAgB;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,aAAa;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,KAAK,sBAAsB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IACzC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,CAAC;CACnE,CAAC;AAOF,qBAAa,SAAS;;gBAqBlB,OAAO,GAAE,gBAAgB,GAAG;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;KACpC,EACN,YAAY,CAAC,EAAE,SAAS,KAAK,EAAE;IA6DjC,IAAI,KAAK,IAAI,aAAa,EAAE,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAED,OAAO,CAAC,YAAY;IAyDpB,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI;IAKvC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAK1B,aAAa,CAAC,gBAAgB,EAAE,WAAW,GAAG,IAAI;IAsClD;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI;IAKxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA8ajC,KAAK,CACH,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,sBAAsB,CAAC,GAAG,CAAC;IAsD9B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAuLvB,QAAQ,IAAI,MAAM;IAgLX,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK9B,eAAe,IAAI,MAAM,EAAE;IAU3B,kBAAkB,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;CAqR1D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlagManager.d.ts","sourceRoot":"","sources":["../src/FlagManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAE9D,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"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./ArgParser";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,91 +0,0 @@
1
- import { z } from "zod";
2
- type ArgParserInstance = any;
3
- export declare const zodFlagSchema: z.ZodEffects<z.ZodObject<{
4
- name: z.ZodString;
5
- allowLigature: z.ZodDefault<z.ZodBoolean>;
6
- allowMultiple: z.ZodDefault<z.ZodBoolean>;
7
- description: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
8
- options: z.ZodArray<z.ZodString, "many">;
9
- defaultValue: z.ZodOptional<z.ZodAny>;
10
- type: z.ZodDefault<z.ZodUnion<[z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodFunction<z.ZodTuple<[z.ZodString], z.ZodUnknown>, z.ZodAny>, z.ZodEffects<z.ZodString, string, string>]>>;
11
- mandatory: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodBoolean>]>>;
12
- flagOnly: z.ZodDefault<z.ZodBoolean>;
13
- validate: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodOptional<z.ZodAny>, z.ZodOptional<z.ZodAny>], z.ZodUnknown>, z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid, z.ZodPromise<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid]>>]>>>;
14
- enum: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
15
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
16
- name: z.ZodString;
17
- allowLigature: z.ZodDefault<z.ZodBoolean>;
18
- allowMultiple: z.ZodDefault<z.ZodBoolean>;
19
- description: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
20
- options: z.ZodArray<z.ZodString, "many">;
21
- defaultValue: z.ZodOptional<z.ZodAny>;
22
- type: z.ZodDefault<z.ZodUnion<[z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodFunction<z.ZodTuple<[z.ZodString], z.ZodUnknown>, z.ZodAny>, z.ZodEffects<z.ZodString, string, string>]>>;
23
- mandatory: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodBoolean>]>>;
24
- flagOnly: z.ZodDefault<z.ZodBoolean>;
25
- validate: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodOptional<z.ZodAny>, z.ZodOptional<z.ZodAny>], z.ZodUnknown>, z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid, z.ZodPromise<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid]>>]>>>;
26
- enum: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
27
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
28
- name: z.ZodString;
29
- allowLigature: z.ZodDefault<z.ZodBoolean>;
30
- allowMultiple: z.ZodDefault<z.ZodBoolean>;
31
- description: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
32
- options: z.ZodArray<z.ZodString, "many">;
33
- defaultValue: z.ZodOptional<z.ZodAny>;
34
- type: z.ZodDefault<z.ZodUnion<[z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodFunction<z.ZodTuple<[z.ZodString], z.ZodUnknown>, z.ZodAny>, z.ZodEffects<z.ZodString, string, string>]>>;
35
- mandatory: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodBoolean>]>>;
36
- flagOnly: z.ZodDefault<z.ZodBoolean>;
37
- validate: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodOptional<z.ZodAny>, z.ZodOptional<z.ZodAny>], z.ZodUnknown>, z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid, z.ZodPromise<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid]>>]>>>;
38
- enum: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
39
- }, z.ZodTypeAny, "passthrough">>, {
40
- [key: string]: any;
41
- }, z.objectInputType<{
42
- name: z.ZodString;
43
- allowLigature: z.ZodDefault<z.ZodBoolean>;
44
- allowMultiple: z.ZodDefault<z.ZodBoolean>;
45
- description: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
46
- options: z.ZodArray<z.ZodString, "many">;
47
- defaultValue: z.ZodOptional<z.ZodAny>;
48
- type: z.ZodDefault<z.ZodUnion<[z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodEffects<z.ZodAny, any, any>, z.ZodFunction<z.ZodTuple<[z.ZodString], z.ZodUnknown>, z.ZodAny>, z.ZodEffects<z.ZodString, string, string>]>>;
49
- mandatory: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodBoolean>]>>;
50
- flagOnly: z.ZodDefault<z.ZodBoolean>;
51
- validate: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodOptional<z.ZodAny>, z.ZodOptional<z.ZodAny>], z.ZodUnknown>, z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid, z.ZodPromise<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodVoid]>>]>>>;
52
- enum: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
53
- }, z.ZodTypeAny, "passthrough">>;
54
- export type IFlagCore = z.input<typeof zodFlagSchema>;
55
- export type IFlag = IFlagCore & {
56
- /** @alias defaultValue */
57
- default?: any;
58
- /** @alias mandatory */
59
- required?: boolean | ((parsedArgs: TParsedArgs<any>) => boolean);
60
- handler?: (ctx: HandlerContext) => void | Promise<void>;
61
- };
62
- export type ProcessedFlagCore = z.output<typeof zodFlagSchema>;
63
- export type ProcessedFlag = Omit<ProcessedFlagCore, "type" | "validate" | "enum" | "mandatory"> & {
64
- type: StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | ((value: string) => any);
65
- validate?: (value: any, parsedArgs?: TParsedArgs<ProcessedFlag[]>) => boolean | string | void | Promise<boolean | string | void>;
66
- enum?: any[];
67
- mandatory?: boolean | ((parsedArgs: TParsedArgs<ProcessedFlag[]>) => boolean);
68
- };
69
- export type ResolveType<T> = T extends (...args: any[]) => infer R ? R : T extends new (...args: any[]) => infer S ? S : T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "array" ? any[] : T extends "object" ? Record<string, any> : any;
70
- export type ExtractFlagType<Flag extends ProcessedFlag> = Flag["flagOnly"] extends true ? Flag["allowMultiple"] extends true ? boolean[] : boolean : Flag["allowMultiple"] extends true ? Array<ResolveType<Flag["type"]>> : ResolveType<Flag["type"]>;
71
- export type TParsedArgs<Flags extends readonly (IFlag | ProcessedFlag)[]> = {
72
- [K in Flags[number]["name"]]: Flags[number] extends ProcessedFlag ? ExtractFlagType<Extract<Flags[number], {
73
- name: K;
74
- } & ProcessedFlag>> : any;
75
- };
76
- export type HandlerContext = {
77
- args: TParsedArgs<ProcessedFlag[]>;
78
- parentArgs?: TParsedArgs<ProcessedFlag[]>;
79
- commandChain: string[];
80
- parser: ArgParserInstance;
81
- };
82
- type ArgParserForSubcommand = any;
83
- export interface ISubCommand {
84
- name: string;
85
- description?: string;
86
- parser: ArgParserForSubcommand;
87
- handler?: (ctx: HandlerContext) => void | Promise<void>;
88
- }
89
- export type FlagsArray = readonly ProcessedFlag[];
90
- export {};
91
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}