@alcyone-labs/arg-parser 3.0.0-beta.1 → 3.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 +4 -4
- package/dist/core/ArgParser.d.ts +2 -2
- package/dist/core/ArgParser.d.ts.map +1 -1
- package/dist/core/FlagManager.d.ts +1 -1
- package/dist/core/FlagManager.d.ts.map +1 -1
- package/dist/core/PromptManager.d.ts +1 -1
- package/dist/core/log-path-utils.d.ts +1 -1
- package/dist/core/types.d.ts +9 -9
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -11,13 +11,13 @@ npm install @alcyone-labs/arg-parser
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
|
-
import { ArgParser } from
|
|
14
|
+
import { ArgParser } from "@alcyone-labs/arg-parser";
|
|
15
15
|
|
|
16
16
|
const parser = new ArgParser({
|
|
17
|
-
appName:
|
|
17
|
+
appName: "my-cli",
|
|
18
18
|
handler: async (ctx) => {
|
|
19
|
-
console.log(
|
|
20
|
-
}
|
|
19
|
+
console.log("Hello", ctx.args.name);
|
|
20
|
+
},
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
await parser.parse();
|
package/dist/core/ArgParser.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* This is the main ArgParser class with full CLI parsing capabilities.
|
|
5
5
|
* It has NO dependencies on MCP, DXT, or TUI - those are provided by plugins.
|
|
6
6
|
*/
|
|
7
|
-
import type { IArgParserPlugin } from
|
|
8
|
-
import type { IFlag, IHandlerContext, ISubCommand, ProcessedFlag, PromptWhen, TFlagInheritance } from
|
|
7
|
+
import type { IArgParserPlugin } from "../plugin/types";
|
|
8
|
+
import type { IFlag, IHandlerContext, ISubCommand, ProcessedFlag, PromptWhen, TFlagInheritance } from "./types";
|
|
9
9
|
/**
|
|
10
10
|
* Error thrown by ArgParser
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgParser.d.ts","sourceRoot":"","sources":["../../src/core/ArgParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EACf,WAAW,EAEX,aAAa,EACb,UAAU,EACV,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"ArgParser.d.ts","sourceRoot":"","sources":["../../src/core/ArgParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This class handles the registration, storage, and retrieval of CLI flags.
|
|
5
5
|
* It provides collision detection to prevent duplicate flag definitions.
|
|
6
6
|
*/
|
|
7
|
-
import { type IFlag, type ProcessedFlag } from
|
|
7
|
+
import { type IFlag, type ProcessedFlag } from "./types";
|
|
8
8
|
export interface FlagManagerOptions {
|
|
9
9
|
/** Throw an error if a flag is added more than once */
|
|
10
10
|
throwForDuplicateFlags?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlagManager.d.ts","sourceRoot":"","sources":["../../src/core/FlagManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,kBAAuB,EAAE,YAAY,GAAE,SAAS,KAAK,EAAO;IAYjF;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"FlagManager.d.ts","sourceRoot":"","sources":["../../src/core/FlagManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,kBAAuB,EAAE,YAAY,GAAE,SAAS,KAAK,EAAO;IAYjF;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IA6B1B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI;IAMvC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAYjC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD;;OAEG;IACH,WAAW,IAAI,aAAa,EAAE;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAM3D;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,+BAA+B,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAO1D;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,aAAa,IAAI,mBAAmB,EAAE;CAoBvC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This class handles the collection and execution of interactive prompts
|
|
5
5
|
* for CLI applications.
|
|
6
6
|
*/
|
|
7
|
-
import type { IHandlerContext, IPromptableFlag } from
|
|
7
|
+
import type { IHandlerContext, IPromptableFlag } from "./types";
|
|
8
8
|
export interface PromptManagerOptions {
|
|
9
9
|
/** Default prompt sequence offset */
|
|
10
10
|
sequenceOffset?: number;
|
|
@@ -16,7 +16,7 @@ export interface LogPathConfig {
|
|
|
16
16
|
/** The path string */
|
|
17
17
|
path: string;
|
|
18
18
|
/** How to resolve the path */
|
|
19
|
-
relativeTo?:
|
|
19
|
+
relativeTo?: "entry" | "cwd" | "absolute";
|
|
20
20
|
/** Optional base path for 'entry' resolution */
|
|
21
21
|
basePath?: string;
|
|
22
22
|
}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* These types define the shape of flags, commands, and configuration
|
|
5
5
|
* for the argument parser.
|
|
6
6
|
*/
|
|
7
|
-
import { z, type ZodTypeAny } from
|
|
7
|
+
import { z, type ZodTypeAny } from "zod";
|
|
8
8
|
/**
|
|
9
9
|
* Defines the behavior for flag inheritance in sub-commands.
|
|
10
10
|
*/
|
|
@@ -74,7 +74,7 @@ export type ProcessedFlagCore = z.output<typeof zodFlagSchema>;
|
|
|
74
74
|
export interface IDxtOptions {
|
|
75
75
|
sensitive?: boolean;
|
|
76
76
|
localDefault?: string;
|
|
77
|
-
type?:
|
|
77
|
+
type?: "string" | "directory" | "file" | "boolean" | "number";
|
|
78
78
|
multiple?: boolean;
|
|
79
79
|
min?: number;
|
|
80
80
|
max?: number;
|
|
@@ -100,12 +100,12 @@ export type DynamicRegisterContext = {
|
|
|
100
100
|
};
|
|
101
101
|
export type DynamicRegisterFn = (ctx: DynamicRegisterContext) => Promise<readonly IFlag[] | void> | readonly IFlag[] | void;
|
|
102
102
|
export type ProcessedFlag = ProcessedFlagCore;
|
|
103
|
-
export type TParsedArgsTypeFromFlagDef = StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | ((value: string) => any) | ((value: string) => Promise<any>) | ZodTypeAny |
|
|
104
|
-
export type ResolveType<T extends TParsedArgsTypeFromFlagDef> = T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends ArrayConstructor ? any[] : T extends ObjectConstructor ? Record<string, any> : T extends ZodTypeAny ? z.infer<T> : T extends
|
|
103
|
+
export type TParsedArgsTypeFromFlagDef = StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | ((value: string) => any) | ((value: string) => Promise<any>) | ZodTypeAny | "string" | "number" | "boolean" | "array" | "object";
|
|
104
|
+
export type ResolveType<T extends TParsedArgsTypeFromFlagDef> = T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends ArrayConstructor ? any[] : T extends ObjectConstructor ? Record<string, any> : T extends ZodTypeAny ? z.infer<T> : T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "array" ? any[] : T extends "object" ? Record<string, any> : T extends (value: string) => infer R ? R : any;
|
|
105
105
|
export type ExtractFlagType<_TFlag extends ProcessedFlag> = any;
|
|
106
106
|
export type FlagsArray = readonly ProcessedFlag[];
|
|
107
107
|
export type TParsedArgs<TFlags extends readonly ProcessedFlag[]> = {
|
|
108
|
-
[K in TFlags[number][
|
|
108
|
+
[K in TFlags[number]["name"]]: ExtractFlagType<Extract<TFlags[number], {
|
|
109
109
|
name: K;
|
|
110
110
|
}>>;
|
|
111
111
|
};
|
|
@@ -158,7 +158,7 @@ export interface ISubCommand {
|
|
|
158
158
|
promptWhen?: PromptWhen;
|
|
159
159
|
onCancel?: (ctx: IHandlerContext) => void | Promise<void>;
|
|
160
160
|
}
|
|
161
|
-
export type PromptType =
|
|
161
|
+
export type PromptType = "text" | "password" | "confirm" | "select" | "multiselect";
|
|
162
162
|
export interface PromptFieldConfig {
|
|
163
163
|
type: PromptType;
|
|
164
164
|
message: string;
|
|
@@ -173,7 +173,7 @@ export interface PromptFieldConfig {
|
|
|
173
173
|
maxItems?: number;
|
|
174
174
|
skip?: boolean;
|
|
175
175
|
}
|
|
176
|
-
export type PromptWhen =
|
|
176
|
+
export type PromptWhen = "interactive-flag" | "missing" | "always";
|
|
177
177
|
export interface IPromptableFlag extends IFlag {
|
|
178
178
|
prompt?: (ctx: IHandlerContext) => PromptFieldConfig | Promise<PromptFieldConfig>;
|
|
179
179
|
promptSequence?: number;
|
|
@@ -189,7 +189,7 @@ export interface ParseResult<T = any> {
|
|
|
189
189
|
data?: T;
|
|
190
190
|
message?: string;
|
|
191
191
|
shouldExit?: boolean;
|
|
192
|
-
type?:
|
|
192
|
+
type?: "success" | "error" | "help" | "version" | "debug";
|
|
193
193
|
}
|
|
194
194
|
export interface ArgParserOptions {
|
|
195
195
|
autoExit?: boolean;
|
|
@@ -199,7 +199,7 @@ export interface ArgParserBehaviorOptions {
|
|
|
199
199
|
autoExit?: boolean;
|
|
200
200
|
handleErrors?: boolean;
|
|
201
201
|
}
|
|
202
|
-
export declare function getJsonSchemaTypeFromFlag(flagType: TParsedArgsTypeFromFlagDef):
|
|
202
|
+
export declare function getJsonSchemaTypeFromFlag(flagType: TParsedArgsTypeFromFlagDef): "string" | "number" | "boolean" | "array" | "object";
|
|
203
203
|
export declare const OutputSchemaPatterns: {
|
|
204
204
|
readonly successError: () => z.ZodObject<{
|
|
205
205
|
success: z.ZodBoolean;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAMzC;;GAEG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,GAAG,OAAO,CAAC;AAEhG;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;kBAuB7B,CAAC;AAEJ,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["rawFlag: any","collisions: FlagOptionCollision[]","answers: Record<string, any>","results: PromptResult['results']","cmdChain: string[]","#appName","#appCommandName","#description","#handler","#mandatoryCharacter","#throwForDuplicateFlags","#handleErrors","#autoExit","#inheritParentFlags","#promptWhen","#flagManager","#promptManager","#plugins","#subCommands","#parentParser","#subCommandName","context: IHandlerContext","#rootPath","result: any","missingFlags: string[]","currentParser: ArgParser","commandChain: string[]","systemArgs: ISystemArgs","filteredArgs: string[]","result: ParseResult","lines: string[]"],"sources":["../src/core/types.ts","../src/core/FlagManager.ts","../src/core/PromptManager.ts","../src/core/ArgParser.ts","../src/plugin/types.ts","../src/config/plugins/index.ts","../src/utils/debug-utils.ts","../src/core/log-path-utils.ts"],"sourcesContent":["/**\n * Core types for ArgParser\n * \n * These types define the shape of flags, commands, and configuration\n * for the argument parser.\n */\n\nimport { z, type ZodTypeAny } from 'zod';\n\n// ============================================================================\n// Flag Types\n// ============================================================================\n\n/**\n * Defines the behavior for flag inheritance in sub-commands.\n */\nexport const FlagInheritance = {\n NONE: 'none',\n DirectParentOnly: 'direct-parent-only',\n AllParents: 'all-parents',\n} as const;\n\nexport type TFlagInheritance = (typeof FlagInheritance)[keyof typeof FlagInheritance] | boolean;\n\n/**\n * Zod schema for validating DXT-specific options\n */\nexport const zodDxtOptionsSchema = z\n .object({\n sensitive: z.boolean().optional(),\n localDefault: z.string().optional(),\n type: z.enum(['string', 'directory', 'file', 'boolean', 'number']).optional(),\n multiple: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n })\n .strict()\n .refine(\n (data) => {\n if (data.min !== undefined && data.max !== undefined) {\n return data.min <= data.max;\n }\n return true;\n },\n {\n message: 'min cannot be greater than max',\n path: ['min'],\n },\n );\n\nexport const zodFlagSchema = z.object({\n name: z.string().min(1),\n allowLigature: z.boolean().default(true),\n allowMultiple: z.boolean().default(false),\n description: z.union([z.string(), z.array(z.string())]).optional(),\n valueHint: z.string().optional(),\n options: z.array(z.string().min(1)).min(1),\n defaultValue: z.any().optional(),\n type: z.union([\n z.custom((val) => val === String),\n z.custom((val) => val === Number),\n z.custom((val) => val === Boolean),\n z.custom((val) => val === Array),\n z.custom((val) => val === Object),\n z.custom((val) => typeof val === 'function'),\n z.custom((val) => val && typeof val === 'object' && (val as any)._def),\n z.string(),\n ]).default('string'),\n mandatory: z.union([z.boolean(), z.custom((val) => typeof val === 'function')]).optional(),\n flagOnly: z.boolean().default(false),\n validate: z.custom((val) => typeof val === 'function').optional(),\n enum: z.array(z.any()).optional(),\n env: z.union([z.string(), z.array(z.string())]).optional(),\n dxtOptions: zodDxtOptionsSchema.optional(),\n dynamicRegister: z.custom((val) => typeof val === 'function').optional(),\n setWorkingDirectory: z.boolean().optional(),\n positional: z.number().int().positive().optional(),\n prompt: z.custom((val) => typeof val === 'function').optional(),\n promptSequence: z.number().int().positive().optional(),\n});\n\nexport type IFlagCore = z.input<typeof zodFlagSchema>;\nexport type ProcessedFlagCore = z.output<typeof zodFlagSchema>;\n\nexport interface IDxtOptions {\n sensitive?: boolean;\n localDefault?: string;\n type?: 'string' | 'directory' | 'file' | 'boolean' | 'number';\n multiple?: boolean;\n min?: number;\n max?: number;\n default?: any;\n title?: string;\n}\n\nexport type IFlag = IFlagCore & {\n default?: any;\n required?: boolean | ((parsedArgs: any) => boolean);\n env?: string | string[];\n dxtOptions?: IDxtOptions;\n dynamicRegister?: DynamicRegisterFn;\n setWorkingDirectory?: boolean;\n positional?: number;\n};\n\nexport type DynamicRegisterContext = {\n value: any | any[];\n argsSoFar: Record<string, any>;\n parser: any;\n processArgs: string[];\n forHelp?: boolean;\n registerFlags: (flags: readonly IFlag[]) => void;\n};\n\nexport type DynamicRegisterFn = (\n ctx: DynamicRegisterContext,\n) => Promise<readonly IFlag[] | void> | readonly IFlag[] | void;\n\nexport type ProcessedFlag = ProcessedFlagCore;\n\n// ============================================================================\n// Type Resolution\n// ============================================================================\n\nexport type TParsedArgsTypeFromFlagDef =\n | StringConstructor\n | NumberConstructor\n | BooleanConstructor\n | ArrayConstructor\n | ObjectConstructor\n | ((value: string) => any)\n | ((value: string) => Promise<any>)\n | ZodTypeAny\n | 'string'\n | 'number'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type ResolveType<T extends TParsedArgsTypeFromFlagDef> = T extends StringConstructor\n ? string\n : T extends NumberConstructor\n ? number\n : T extends BooleanConstructor\n ? boolean\n : T extends ArrayConstructor\n ? any[]\n : T extends ObjectConstructor\n ? Record<string, any>\n : T extends ZodTypeAny\n ? z.infer<T>\n : T extends 'string'\n ? string\n : T extends 'number'\n ? number\n : T extends 'boolean'\n ? boolean\n : T extends 'array'\n ? any[]\n : T extends 'object'\n ? Record<string, any>\n : T extends (value: string) => infer R\n ? R\n : any;\n\nexport type ExtractFlagType<_TFlag extends ProcessedFlag> = any;\n\nexport type FlagsArray = readonly ProcessedFlag[];\n\nexport type TParsedArgs<TFlags extends readonly ProcessedFlag[]> = {\n [K in TFlags[number]['name']]: ExtractFlagType<Extract<TFlags[number], { name: K }>>;\n};\n\n// ============================================================================\n// Handler Context\n// ============================================================================\n\nexport interface ISystemArgs {\n debug?: boolean;\n debugPrint?: boolean;\n enableFuzzy?: boolean;\n withEnv?: string | true;\n saveToEnv?: boolean;\n buildDxt?: string | true;\n mcpServe?: boolean;\n mcpTransport?: string;\n mcpPort?: number;\n mcpHost?: string;\n mcpPath?: string;\n mcpTransports?: string;\n mcpLogPath?: string;\n mcpCors?: any;\n mcpAuth?: any;\n [key: string]: any;\n}\n\nexport type IHandlerContext<TCurrentCommandArgs = any, TParentCommandArgs = any> = {\n args: TCurrentCommandArgs;\n parentArgs?: TParentCommandArgs;\n commandChain: string[];\n parser: any;\n parentParser?: any;\n isMcp?: boolean;\n isInteractive?: boolean;\n getFlag?: (name: string) => any;\n displayHelp: () => void;\n rootPath?: string;\n systemArgs?: ISystemArgs;\n promptAnswers?: Record<string, any>;\n logger: any;\n};\n\nexport type MainHandler<\n TParserFlags extends FlagsArray = FlagsArray,\n TParentParserFlags extends FlagsArray = FlagsArray,\n THandlerReturn = any,\n> = (\n ctx: IHandlerContext<TParsedArgs<TParserFlags>, TParsedArgs<TParentParserFlags>>,\n) => THandlerReturn | Promise<THandlerReturn>;\n\n// ============================================================================\n// Subcommand Types\n// ============================================================================\n\nexport interface ISubCommand {\n name: string;\n description?: string;\n parser: any;\n handler?: (ctx: IHandlerContext) => any;\n isMcp?: boolean;\n mcpServerInfo?: {\n name: string;\n version: string;\n description?: string;\n };\n mcpToolOptions?: any;\n promptWhen?: PromptWhen;\n onCancel?: (ctx: IHandlerContext) => void | Promise<void>;\n}\n\nexport type PromptType = 'text' | 'password' | 'confirm' | 'select' | 'multiselect';\n\nexport interface PromptFieldConfig {\n type: PromptType;\n message: string;\n placeholder?: string;\n initial?: any;\n validate?: (value: any, ctx: IHandlerContext) => boolean | string | Promise<boolean | string>;\n options?: Array<string | { label: string; value: any; hint?: string }>;\n maxItems?: number;\n skip?: boolean;\n}\n\nexport type PromptWhen = 'interactive-flag' | 'missing' | 'always';\n\nexport interface IPromptableFlag extends IFlag {\n prompt?: (ctx: IHandlerContext) => PromptFieldConfig | Promise<PromptFieldConfig>;\n promptSequence?: number;\n}\n\nexport interface IInteractiveSubCommand extends ISubCommand {\n promptWhen?: PromptWhen;\n onCancel?: (ctx: IHandlerContext) => void | Promise<void>;\n}\n\n// ============================================================================\n// Parser Types\n// ============================================================================\n\nexport type ArgParserInstance = any;\n\nexport interface ParseResult<T = any> {\n success: boolean;\n exitCode: number;\n data?: T;\n message?: string;\n shouldExit?: boolean;\n type?: 'success' | 'error' | 'help' | 'version' | 'debug';\n}\n\nexport interface ArgParserOptions {\n autoExit?: boolean;\n handleErrors?: boolean;\n}\n\nexport interface ArgParserBehaviorOptions {\n autoExit?: boolean;\n handleErrors?: boolean;\n}\n\n// ============================================================================\n// JSON Schema Utilities\n// ============================================================================\n\nexport function getJsonSchemaTypeFromFlag(\n flagType: TParsedArgsTypeFromFlagDef,\n): 'string' | 'number' | 'boolean' | 'array' | 'object' {\n if (flagType && typeof flagType === 'object' && (flagType as ZodTypeAny)._def) {\n return 'object';\n }\n\n if (typeof flagType === 'function') {\n if (flagType === String) return 'string';\n if (flagType === Number) return 'number';\n if (flagType === Boolean) return 'boolean';\n if (flagType === Array) return 'array';\n if (flagType === Object) return 'object';\n return 'string';\n }\n\n if (typeof flagType === 'string') {\n const normalizedType = flagType.toLowerCase();\n switch (normalizedType) {\n case 'string':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'array':\n return 'array';\n case 'object':\n return 'object';\n default:\n return 'string';\n }\n }\n\n return 'string';\n}\n\n// ============================================================================\n// Output Schema Patterns\n// ============================================================================\n\nexport const OutputSchemaPatterns = {\n successError: () =>\n z.object({\n success: z.boolean(),\n message: z.string().optional(),\n error: z.string().optional(),\n }),\n\n successWithData: (dataSchema?: z.ZodTypeAny) =>\n z.object({\n success: z.boolean(),\n data: dataSchema || z.any(),\n message: z.string().optional(),\n error: z.string().optional(),\n }),\n\n list: (itemSchema?: z.ZodTypeAny) =>\n z.object({\n items: z.array(itemSchema || z.any()),\n count: z.number().optional(),\n hasMore: z.boolean().optional(),\n }),\n\n fileOperation: () =>\n z.object({\n path: z.string(),\n size: z.number().optional(),\n created: z.boolean().optional(),\n modified: z.boolean().optional(),\n exists: z.boolean().optional(),\n }),\n\n processExecution: () =>\n z.object({\n exitCode: z.number(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n duration: z.number().optional(),\n command: z.string().optional(),\n }),\n} as const;\n\nexport type OutputSchemaPatternName = keyof typeof OutputSchemaPatterns;\n\nexport type OutputSchemaConfig = OutputSchemaPatternName | z.ZodTypeAny | Record<string, z.ZodTypeAny>;\n\nexport function createOutputSchema(pattern: OutputSchemaConfig): z.ZodTypeAny {\n if (typeof pattern === 'string' && pattern in OutputSchemaPatterns) {\n return OutputSchemaPatterns[pattern as OutputSchemaPatternName]();\n }\n\n if (pattern && typeof pattern === 'object' && '_def' in pattern) {\n return pattern as z.ZodTypeAny;\n }\n\n if (pattern && typeof pattern === 'object') {\n return z.object(pattern as Record<string, z.ZodTypeAny>);\n }\n\n return OutputSchemaPatterns.successError();\n}\n\n/**\n * Result of executing prompts\n */\nexport interface PromptResult {\n /** Collected answers */\n answers: Record<string, any>;\n /** Individual prompt results */\n results: Array<{\n flagName: string;\n success: boolean;\n value?: any;\n error?: string;\n }>;\n /** Whether the user cancelled */\n cancelled: boolean;\n}\n","/**\n * FlagManager - Manages flag definitions and collision detection\n * \n * This class handles the registration, storage, and retrieval of CLI flags.\n * It provides collision detection to prevent duplicate flag definitions.\n */\n\nimport { zodFlagSchema, type IFlag, type ProcessedFlag } from './types';\n\nexport interface FlagManagerOptions {\n /** Throw an error if a flag is added more than once */\n throwForDuplicateFlags?: boolean;\n}\n\nexport interface FlagOptionCollision {\n flagName: string;\n option: string;\n existingFlagName: string;\n}\n\n/**\n * Manages flag definitions for an ArgParser instance\n */\nexport class FlagManager {\n private flags: Map<string, ProcessedFlag> = new Map();\n private optionToFlagMap: Map<string, string> = new Map();\n private options: FlagManagerOptions;\n \n constructor(options: FlagManagerOptions = {}, initialFlags: readonly IFlag[] = []) {\n this.options = {\n throwForDuplicateFlags: false,\n ...options,\n };\n \n // Add initial flags\n for (const flag of initialFlags) {\n this.addFlag(flag);\n }\n }\n \n /**\n * Add a single flag\n */\n addFlag(flag: IFlag): void {\n const processedFlag = this.processFlag(flag);\n \n // Check for name collision\n if (this.flags.has(processedFlag.name)) {\n if (this.options.throwForDuplicateFlags) {\n throw new Error(`Flag with name '${processedFlag.name}' already exists`);\n }\n console.warn(`[FlagManager] Flag '${processedFlag.name}' is being overwritten`);\n }\n \n // Check for option collisions\n for (const option of processedFlag.options) {\n const existingFlag = this.optionToFlagMap.get(option);\n if (existingFlag && existingFlag !== processedFlag.name) {\n if (this.options.throwForDuplicateFlags) {\n throw new Error(\n `Option '${option}' is already used by flag '${existingFlag}'`\n );\n }\n console.warn(\n `[FlagManager] Option '${option}' is already used by flag '${existingFlag}'. ` +\n `Reassigning to '${processedFlag.name}'`\n );\n }\n this.optionToFlagMap.set(option, processedFlag.name);\n }\n \n this.flags.set(processedFlag.name, processedFlag);\n }\n \n /**\n * Add multiple flags\n */\n addFlags(flags: readonly IFlag[]): void {\n for (const flag of flags) {\n this.addFlag(flag);\n }\n }\n \n /**\n * Remove a flag by name\n */\n removeFlag(name: string): boolean {\n const flag = this.flags.get(name);\n if (!flag) return false;\n \n // Remove option mappings\n for (const option of flag.options) {\n this.optionToFlagMap.delete(option);\n }\n \n return this.flags.delete(name);\n }\n \n /**\n * Check if a flag exists\n */\n hasFlag(name: string): boolean {\n return this.flags.has(name);\n }\n \n /**\n * Get a flag by name\n */\n getFlag(name: string): ProcessedFlag | undefined {\n return this.flags.get(name);\n }\n \n /**\n * Get all flags as an array\n */\n getAllFlags(): ProcessedFlag[] {\n return Array.from(this.flags.values());\n }\n \n /**\n * Get all flag names\n */\n getFlagNames(): string[] {\n return Array.from(this.flags.keys());\n }\n \n /**\n * Find flag by option\n */\n findFlagByOption(option: string): ProcessedFlag | undefined {\n const flagName = this.optionToFlagMap.get(option);\n if (!flagName) return undefined;\n return this.flags.get(flagName);\n }\n \n /**\n * Process a raw flag into a ProcessedFlag\n */\n private processFlag(flag: IFlag): ProcessedFlag {\n // Basic mapping for aliases before validation\n const rawFlag: any = { ...flag };\n \n if ('default' in rawFlag && rawFlag.default !== undefined && !('defaultValue' in rawFlag)) {\n rawFlag.defaultValue = rawFlag.default;\n }\n \n if ('required' in rawFlag && rawFlag.required !== undefined && !('mandatory' in rawFlag)) {\n rawFlag.mandatory = rawFlag.required;\n }\n\n // Validate with Zod\n return zodFlagSchema.parse(rawFlag) as ProcessedFlag;\n }\n \n /**\n * Internal method to set a processed flag directly (for inheritance)\n */\n _setProcessedFlagForInheritance(flag: ProcessedFlag): void {\n this.flags.set(flag.name, flag);\n for (const option of flag.options) {\n this.optionToFlagMap.set(option, flag.name);\n }\n }\n \n /**\n * Clear all flags\n */\n clear(): void {\n this.flags.clear();\n this.optionToFlagMap.clear();\n }\n \n /**\n * Get collision report\n */\n getCollisions(): FlagOptionCollision[] {\n const collisions: FlagOptionCollision[] = [];\n const seen = new Map<string, string>();\n \n for (const [name, flag] of this.flags) {\n for (const option of flag.options) {\n const existing = seen.get(option);\n if (existing && existing !== name) {\n collisions.push({\n flagName: name,\n option,\n existingFlagName: existing,\n });\n }\n seen.set(option, name);\n }\n }\n \n return collisions;\n }\n}\n","/**\n * PromptManager - Manages interactive prompts with @clack/prompts\n * \n * This class handles the collection and execution of interactive prompts\n * for CLI applications.\n */\n\nimport type { IHandlerContext, IPromptableFlag } from './types';\n\nexport interface PromptManagerOptions {\n /** Default prompt sequence offset */\n sequenceOffset?: number;\n}\n\n/**\n * Manages interactive prompts for an ArgParser instance\n */\nexport class PromptManager {\n private promptableFlags: Map<string, IPromptableFlag> = new Map();\n private _options: PromptManagerOptions;\n\n constructor(options: PromptManagerOptions = {}) {\n this._options = {\n sequenceOffset: 0,\n ...options,\n };\n }\n\n get sequenceOffset(): number {\n return this._options.sequenceOffset ?? 0;\n }\n \n /**\n * Register a promptable flag\n */\n registerPromptableFlag(flag: IPromptableFlag): void {\n this.promptableFlags.set(flag.name, flag);\n }\n \n /**\n * Unregister a promptable flag\n */\n unregisterPromptableFlag(name: string): boolean {\n return this.promptableFlags.delete(name);\n }\n \n /**\n * Check if a flag has a prompt\n */\n hasPrompt(name: string): boolean {\n return this.promptableFlags.has(name);\n }\n \n /**\n * Get all promptable flags sorted by sequence\n */\n getPromptableFlags(): IPromptableFlag[] {\n return Array.from(this.promptableFlags.values()).sort((a, b) => {\n const seqA = a.promptSequence ?? Infinity;\n const seqB = b.promptSequence ?? Infinity;\n return seqA - seqB;\n });\n }\n \n /**\n * Execute prompts for missing flags\n * \n * This is a placeholder implementation. The actual implementation\n * would integrate with @clack/prompts.\n */\n async executePrompts(\n context: IHandlerContext,\n missingFlagNames: string[],\n ): Promise<PromptResult> {\n const answers: Record<string, any> = {};\n const results: PromptResult['results'] = [];\n \n for (const flagName of missingFlagNames) {\n const flag = this.promptableFlags.get(flagName);\n if (!flag || !flag.prompt) continue;\n \n try {\n const promptConfig = await flag.prompt(context);\n \n // TODO: Integrate with @clack/prompts\n // For now, this is a placeholder\n console.log(`[PromptManager] Would prompt for '${flagName}': ${promptConfig.message}`);\n \n results.push({\n flagName,\n success: true,\n value: undefined, // Would be the actual answer\n });\n } catch (error) {\n results.push({\n flagName,\n success: false,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n \n return {\n answers,\n results,\n cancelled: false,\n };\n }\n \n /**\n * Clear all registered flags\n */\n clear(): void {\n this.promptableFlags.clear();\n }\n}\n\n/**\n * Result of executing prompts\n */\nexport interface PromptResult {\n /** Collected answers */\n answers: Record<string, any>;\n /** Individual prompt results */\n results: Array<{\n flagName: string;\n success: boolean;\n value?: any;\n error?: string;\n }>;\n /** Whether the user cancelled */\n cancelled: boolean;\n}\n","/**\n * Core ArgParser implementation\n * \n * This is the main ArgParser class with full CLI parsing capabilities.\n * It has NO dependencies on MCP, DXT, or TUI - those are provided by plugins.\n */\n\nimport chalk from '@alcyone-labs/simple-chalk';\nimport type { IArgParserPlugin } from '../plugin/types';\nimport { FlagManager } from './FlagManager';\nimport { PromptManager } from './PromptManager';\nimport type {\n IFlag,\n IHandlerContext,\n ISubCommand,\n ParseResult,\n ProcessedFlag,\n PromptWhen,\n TFlagInheritance,\n ISystemArgs,\n} from './types';\n\n/**\n * Error thrown by ArgParser\n */\nexport class ArgParserError extends Error {\n public commandChain: string[];\n \n constructor(message: string, public cmdChain: string[] = []) {\n super(message);\n this.name = 'ArgParserError';\n this.commandChain = cmdChain;\n }\n}\n\n/**\n * Parameters for creating an ArgParser\n */\nexport interface IArgParserParams<THandlerReturn = any> {\n /** Display name of the application */\n appName?: string;\n /** Command name for help text */\n appCommandName?: string;\n /** Description of the application */\n description?: string;\n /** Handler function */\n handler?: (ctx: IHandlerContext<any, any>) => THandlerReturn | Promise<THandlerReturn>;\n /** Subcommands */\n subCommands?: ISubCommand[];\n /** Extra newline between flag groups in help */\n extraNewLine?: boolean;\n /** Wrap help text at this width */\n wrapAtWidth?: number;\n /** Width of blank space in help */\n blankSpaceWidth?: number;\n /** Character for mandatory flags */\n mandatoryCharacter?: string;\n /** Throw error for duplicate flags */\n throwForDuplicateFlags?: boolean;\n /** Handle errors automatically */\n handleErrors?: boolean;\n /** Auto exit on parse result */\n autoExit?: boolean;\n /** Trigger auto-help if no handler */\n triggerAutoHelpIfNoHandler?: boolean;\n /** Flag inheritance behavior */\n inheritParentFlags?: TFlagInheritance;\n /** When to trigger interactive prompts */\n promptWhen?: PromptWhen;\n /** Cancel callback for prompts */\n onCancel?: (ctx: IHandlerContext) => void | Promise<void>;\n}\n\n/**\n * Parse options\n */\nexport interface IParseOptions {\n /** Skip help handling */\n skipHelpHandling?: boolean;\n /** Skip handler execution */\n skipHandlers?: boolean;\n /** Await async handlers */\n deep?: boolean;\n /** MCP mode flag */\n isMcp?: boolean;\n /** Dynamic help preload */\n dynamicHelpPreload?: boolean;\n /** Auto execute */\n autoExecute?: boolean;\n /** Import meta URL */\n importMetaUrl?: string;\n}\n\n/**\n * Core ArgParser class\n * \n * Provides complete CLI argument parsing with support for:\n * - Flags (with types, validation, defaults)\n * - Subcommands\n * - Interactive prompts\n * - Help generation\n * - Plugin system\n */\nexport class ArgParser<THandlerReturn = any> {\n // Private fields\n #appName: string = 'Argument Parser';\n #appCommandName?: string;\n #subCommandName: string = '';\n #description?: string;\n #handler?: (ctx: IHandlerContext) => any;\n #subCommands: Map<string, ISubCommand> = new Map();\n #flagManager: FlagManager;\n #promptManager: PromptManager;\n #plugins: Map<string, IArgParserPlugin> = new Map();\n \n // Configuration\n #mandatoryCharacter: string = '*';\n #throwForDuplicateFlags: boolean = false;\n #handleErrors: boolean = true;\n #autoExit: boolean = true;\n #inheritParentFlags: TFlagInheritance = false;\n #promptWhen: PromptWhen = 'interactive-flag';\n\n // State\n #parentParser?: ArgParser;\n #rootPath: string | null = null;\n \n constructor(params: IArgParserParams<THandlerReturn> = {}, initialFlags?: readonly IFlag[]) {\n // Set basic properties\n this.#appName = params.appName || 'app';\n this.#appCommandName = params.appCommandName;\n this.#description = params.description;\n this.#handler = params.handler;\n \n // Set formatting options\n if (params.mandatoryCharacter !== undefined) this.#mandatoryCharacter = params.mandatoryCharacter;\n\n // Set behavior options\n if (params.throwForDuplicateFlags !== undefined) this.#throwForDuplicateFlags = params.throwForDuplicateFlags;\n if (params.handleErrors !== undefined) this.#handleErrors = params.handleErrors;\n if (params.autoExit !== undefined) this.#autoExit = params.autoExit;\n if (params.inheritParentFlags !== undefined) this.#inheritParentFlags = params.inheritParentFlags;\n if (params.promptWhen !== undefined) this.#promptWhen = params.promptWhen;\n \n // Initialize managers\n this.#flagManager = new FlagManager(\n { throwForDuplicateFlags: this.#throwForDuplicateFlags },\n initialFlags || []\n );\n this.#promptManager = new PromptManager();\n \n // Add help flag\n this.addFlag({\n name: 'help',\n description: 'Display this help message and exit',\n mandatory: false,\n type: Boolean,\n options: ['-h', '--help'],\n flagOnly: true,\n });\n \n // Add subcommands\n if (params.subCommands) {\n for (const sub of params.subCommands) {\n this.addSubCommand(sub);\n }\n }\n }\n \n // ==================== Plugin System ====================\n \n /**\n * Install a plugin\n */\n use(plugin: IArgParserPlugin): this {\n if (this.#plugins.has(plugin.name)) {\n throw new Error(`Plugin '${plugin.name}' is already installed`);\n }\n \n const result = plugin.install(this);\n this.#plugins.set(plugin.name, plugin);\n \n return (result as ArgParser) as this || this;\n }\n \n /**\n * Check if a plugin is installed\n */\n hasPlugin(name: string): boolean {\n return this.#plugins.has(name);\n }\n \n /**\n * Get an installed plugin\n */\n getPlugin(name: string): IArgParserPlugin | undefined {\n return this.#plugins.get(name);\n }\n \n /**\n * List all installed plugins\n */\n listPlugins(): string[] {\n return Array.from(this.#plugins.keys());\n }\n \n // ==================== Flag Management ====================\n \n /**\n * Add a flag\n */\n addFlag(flag: IFlag): this {\n this.#flagManager.addFlag(flag);\n \n // Register with prompt manager if promptable\n if ('prompt' in flag && typeof flag.prompt === 'function') {\n this.#promptManager.registerPromptableFlag(flag as any);\n }\n \n return this;\n }\n \n /**\n * Add multiple flags\n */\n addFlags(flags: readonly IFlag[]): this {\n for (const flag of flags) {\n this.addFlag(flag);\n }\n return this;\n }\n \n /**\n * Check if a flag exists\n */\n hasFlag(name: string): boolean {\n return this.#flagManager.hasFlag(name);\n }\n \n /**\n * Get a flag definition\n */\n getFlagDefinition(name: string): ProcessedFlag | undefined {\n return this.#flagManager.getFlag(name);\n }\n \n /**\n * Get all flags\n */\n get flags(): ProcessedFlag[] {\n return this.#flagManager.getAllFlags();\n }\n \n /**\n * Get all flag names\n */\n get flagNames(): string[] {\n return this.#flagManager.getFlagNames();\n }\n \n // ==================== Subcommand Management ====================\n \n /**\n * Add a subcommand\n */\n addSubCommand(subCommand: ISubCommand): this {\n if (this.#subCommands.has(subCommand.name)) {\n throw new Error(`Subcommand '${subCommand.name}' already exists`);\n }\n \n // Set up parent relationship\n const subParser = subCommand.parser as ArgParser;\n if (subParser) {\n subParser.#parentParser = this;\n subParser.#subCommandName = subCommand.name;\n \n // Inherit flags if configured\n if (subParser.#inheritParentFlags) {\n this.inheritFlagsToSubParser(subParser);\n }\n }\n \n this.#subCommands.set(subCommand.name, subCommand);\n return this;\n }\n \n /**\n * Get a subcommand\n */\n getSubCommand(name: string): ISubCommand | undefined {\n return this.#subCommands.get(name);\n }\n \n /**\n * Get all subcommands\n */\n getSubCommands(): Map<string, ISubCommand> {\n return new Map(this.#subCommands);\n }\n \n /**\n * Inherit flags to a sub-parser\n */\n private inheritFlagsToSubParser(subParser: ArgParser): void {\n const parentFlags = this.#flagManager.getAllFlags();\n for (const flag of parentFlags) {\n if (!subParser.hasFlag(flag.name)) {\n (subParser.#flagManager as any)._setProcessedFlagForInheritance(flag);\n }\n }\n }\n \n // ==================== Handler Management ====================\n \n /**\n * Set the handler\n */\n setHandler(handler: (ctx: IHandlerContext<any, any>) => THandlerReturn | Promise<THandlerReturn>): this {\n this.#handler = handler;\n return this;\n }\n \n /**\n * Get the handler\n */\n getHandler(): ((ctx: IHandlerContext) => any) | undefined {\n return this.#handler;\n }\n \n // ==================== Getters ====================\n \n getAppName(): string {\n return this.#appName;\n }\n \n getAppCommandName(): string | undefined {\n return this.#appCommandName;\n }\n \n getDescription(): string | undefined {\n return this.#description;\n }\n \n getSubCommandName(): string {\n return this.#subCommandName;\n }\n \n getAutoExit(): boolean {\n return this.#autoExit;\n }\n \n getPromptWhen(): PromptWhen {\n return this.#promptWhen;\n }\n \n // ==================== Parsing ====================\n \n /**\n * Parse command line arguments\n */\n async parse(processArgs?: string[], options: IParseOptions = {}): Promise<any> {\n const args = processArgs || process.argv.slice(2);\n \n try {\n // Detect and strip system flags\n const { systemArgs, filteredArgs } = this.detectAndStripSystemFlags(args);\n \n // Handle help\n if (!options.skipHelpHandling && filteredArgs.includes('--help')) {\n console.log(this.helpText());\n return this.handleExit(0, 'Help displayed', 'help');\n }\n \n // Find subcommand chain\n const { finalParser, commandChain, remainingArgs } = this.findCommandChain(filteredArgs);\n \n // Parse flags\n const parsedArgs = await finalParser.parseFlags(remainingArgs, options);\n \n // Create handler context\n const context: IHandlerContext = {\n args: parsedArgs,\n commandChain,\n parser: finalParser,\n parentParser: finalParser.#parentParser,\n isMcp: options.isMcp || false,\n displayHelp: () => console.log(finalParser.helpText()),\n rootPath: this.#rootPath || process.cwd(),\n systemArgs,\n logger: console,\n };\n \n // Execute handler\n if (finalParser.#handler && !options.skipHandlers) {\n const result = await finalParser.#handler(context);\n return result;\n }\n \n return parsedArgs;\n } catch (error) {\n if (error instanceof ArgParserError) {\n if (!this.#handleErrors) {\n throw error;\n }\n console.error(chalk.red(error.message));\n return this.handleExit(1, error.message, 'error');\n }\n throw error;\n }\n }\n \n /**\n * Parse flags only\n */\n private async parseFlags(args: string[], _options: IParseOptions = {}): Promise<any> {\n const result: any = {};\n const flags = this.#flagManager.getAllFlags();\n\n // Set defaults\n for (const flag of flags) {\n if (flag.defaultValue !== undefined) {\n result[flag.name] = flag.defaultValue;\n }\n }\n\n // Parse arguments\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n const flag = this.#flagManager.findFlagByOption(arg);\n\n if (flag) {\n if (flag.flagOnly) {\n result[flag.name] = true;\n } else {\n const nextArg = args[i + 1];\n if (nextArg && !nextArg.startsWith('-')) {\n const value = this.parseFlagValue(nextArg, flag.type);\n\n // Handle allowMultiple - accumulate into array\n if (flag.allowMultiple) {\n if (!Array.isArray(result[flag.name])) {\n result[flag.name] = result[flag.name] !== undefined ? [result[flag.name]] : [];\n }\n result[flag.name].push(value);\n } else {\n result[flag.name] = value;\n }\n\n i++;\n } else if (flag.type === Boolean) {\n result[flag.name] = true;\n }\n }\n }\n\n i++;\n }\n\n // Validate enum values\n for (const flag of flags) {\n if (flag.enum && flag.enum.length > 0 && result[flag.name] !== undefined) {\n const value = result[flag.name];\n if (!flag.enum.includes(value)) {\n throw new ArgParserError(\n `Invalid value '${value}' for flag '${flag.name}'. Allowed values: ${flag.enum.join(', ')}`,\n [this.#appName]\n );\n }\n }\n }\n\n // Validate mandatory flags\n const missingFlags: string[] = [];\n for (const flag of flags) {\n if (flag.mandatory && result[flag.name] === undefined) {\n if (typeof flag.mandatory === 'function') {\n if (flag.mandatory(result)) {\n missingFlags.push(flag.name);\n }\n } else {\n missingFlags.push(flag.name);\n }\n }\n }\n\n if (missingFlags.length > 0) {\n throw new ArgParserError(\n `Missing mandatory flags: ${missingFlags.join(', ')}`,\n [this.#appName]\n );\n }\n\n return result;\n }\n \n /**\n * Parse a flag value based on type\n */\n private parseFlagValue(value: string, type: any): any {\n if (type === Boolean || type === 'boolean') {\n return /^(true|yes|1)$/i.test(value);\n }\n if (type === Number || type === 'number') {\n return Number(value);\n }\n if (type === String || type === 'string') {\n return value;\n }\n if (typeof type === 'function') {\n return type(value);\n }\n return value;\n }\n \n /**\n * Find the command chain for subcommands\n */\n private findCommandChain(args: string[]): {\n finalParser: ArgParser;\n commandChain: string[];\n remainingArgs: string[];\n } {\n let currentParser: ArgParser = this;\n const commandChain: string[] = [];\n let remainingArgs = [...args];\n \n while (remainingArgs.length > 0) {\n const subName = remainingArgs[0];\n const subCommand = currentParser.#subCommands.get(subName);\n \n if (!subCommand) break;\n \n commandChain.push(subName);\n currentParser = subCommand.parser as ArgParser;\n remainingArgs = remainingArgs.slice(1);\n }\n \n return { finalParser: currentParser, commandChain, remainingArgs };\n }\n \n /**\n * Detect and strip system flags\n */\n private detectAndStripSystemFlags(args: string[]): {\n systemArgs: ISystemArgs;\n filteredArgs: string[];\n } {\n const systemArgs: ISystemArgs = {};\n const filteredArgs: string[] = [];\n \n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const nextArg = args[i + 1];\n \n switch (arg) {\n case '--s-debug':\n systemArgs.debug = true;\n break;\n case '--s-with-env':\n systemArgs.withEnv = nextArg && !nextArg.startsWith('-') ? nextArg : true;\n if (nextArg && !nextArg.startsWith('-')) i++;\n break;\n default:\n filteredArgs.push(arg);\n }\n }\n \n return { systemArgs, filteredArgs };\n }\n \n /**\n * Handle exit\n */\n private handleExit(exitCode: number, message?: string, type?: ParseResult['type']): ParseResult {\n const result: ParseResult = {\n success: exitCode === 0,\n exitCode,\n message,\n type: type || (exitCode === 0 ? 'success' : 'error'),\n shouldExit: true,\n };\n \n if (this.#autoExit && typeof process !== 'undefined' && process.exit) {\n process.exit(exitCode);\n }\n \n return result;\n }\n \n // ==================== Help Generation ====================\n \n /**\n * Generate help text\n */\n helpText(): string {\n const lines: string[] = [];\n \n // Title\n lines.push(chalk.bold(this.#appName));\n if (this.#description) {\n lines.push(this.#description);\n }\n lines.push('');\n \n // Usage\n const commandName = this.#appCommandName || this.#appName.toLowerCase();\n lines.push(chalk.bold('Usage:'));\n lines.push(` ${commandName} [options] [command]`);\n lines.push('');\n \n // Options\n const flags = this.#flagManager.getAllFlags();\n if (flags.length > 0) {\n lines.push(chalk.bold('Options:'));\n for (const flag of flags) {\n const options = flag.options.join(', ');\n const defaultStr = flag.defaultValue !== undefined ? ` (default: ${flag.defaultValue})` : '';\n const mandatoryStr = flag.mandatory ? ` ${this.#mandatoryCharacter}` : '';\n lines.push(` ${options.padEnd(20)} ${flag.description || ''}${defaultStr}${mandatoryStr}`);\n }\n lines.push('');\n }\n \n // Subcommands\n if (this.#subCommands.size > 0) {\n lines.push(chalk.bold('Commands:'));\n for (const [name, sub] of this.#subCommands) {\n lines.push(` ${name.padEnd(20)} ${sub.description || ''}`);\n }\n lines.push('');\n }\n \n return lines.join('\\n');\n }\n}\n","/**\n * Plugin system for ArgParser\n * \n * This module provides the foundation for extending ArgParser functionality\n * through a plugin architecture. Plugins can add new methods, modify behavior,\n * or integrate with external systems like MCP, DXT, or TUI.\n */\n\n// Forward reference to avoid circular dependency\n// The actual type will be available at runtime\ntype ArgParserBase<_T = any> = any;\n\n/**\n * Plugin interface for extending ArgParser functionality\n * \n * @example\n * ```typescript\n * const myPlugin = (options: MyOptions): IArgParserPlugin => ({\n * name: 'my-plugin',\n * version: '1.0.0',\n * install(parser) {\n * // Extend parser with custom functionality\n * (parser as any).myMethod = () => {\n * // Implementation\n * };\n * }\n * });\n * \n * const parser = new ArgParser({...})\n * .use(myPlugin({...}));\n * ```\n */\nexport interface IArgParserPlugin {\n /** Unique plugin identifier (should be reverse-DNS style, e.g., 'com.alcyone.mcp') */\n readonly name: string;\n \n /** Plugin version (semver) */\n readonly version?: string;\n \n /**\n * Install the plugin into an ArgParser instance\n * @param parser - The ArgParser instance to extend\n * @returns The modified parser or void\n */\n install<T>(parser: ArgParserBase<T>): ArgParserBase<T> | void;\n \n /**\n * Optional cleanup when parser is destroyed\n */\n destroy?(): void;\n}\n\n/**\n * Plugin metadata for introspection and dependency management\n */\nexport interface IPluginMetadata {\n name: string;\n version: string;\n description?: string;\n author?: string;\n dependencies?: string[];\n peerDependencies?: string[];\n}\n\n/**\n * Plugin registry for managing installed plugins\n * \n * This class tracks which plugins are installed on a parser instance\n * and provides methods for introspection.\n */\nexport class PluginRegistry {\n private plugins = new Map<string, IArgParserPlugin>();\n private metadata = new Map<string, IPluginMetadata>();\n \n /**\n * Register a plugin in the registry\n */\n register(plugin: IArgParserPlugin, metadata?: IPluginMetadata): void {\n if (this.plugins.has(plugin.name)) {\n console.warn(`[ArgParser] Plugin '${plugin.name}' is already registered`);\n return;\n }\n this.plugins.set(plugin.name, plugin);\n if (metadata) {\n this.metadata.set(plugin.name, metadata);\n }\n }\n \n /**\n * Get a registered plugin by name\n */\n get(name: string): IArgParserPlugin | undefined {\n return this.plugins.get(name);\n }\n \n /**\n * Check if a plugin is registered\n */\n has(name: string): boolean {\n return this.plugins.has(name);\n }\n \n /**\n * List all registered plugin names\n */\n list(): string[] {\n return Array.from(this.plugins.keys());\n }\n \n /**\n * Get metadata for a plugin\n */\n getMetadata(name: string): IPluginMetadata | undefined {\n return this.metadata.get(name);\n }\n \n /**\n * Unregister a plugin\n */\n unregister(name: string): boolean {\n const plugin = this.plugins.get(name);\n if (plugin?.destroy) {\n plugin.destroy();\n }\n this.metadata.delete(name);\n return this.plugins.delete(name);\n }\n \n /**\n * Clear all registered plugins\n */\n clear(): void {\n for (const [, plugin] of this.plugins) {\n if (plugin.destroy) {\n plugin.destroy();\n }\n }\n this.plugins.clear();\n this.metadata.clear();\n }\n}\n\n/**\n * Global plugin registry for system-wide plugin management\n */\nexport const globalPluginRegistry = new PluginRegistry();\n\n/**\n * Decorator for plugin methods that should be exposed on the parser\n * \n * @example\n * ```typescript\n * class MyPlugin implements IArgParserPlugin {\n * name = 'my-plugin';\n * \n @expose()\n * myMethod(parser: ArgParserBase, ...args: any[]) {\n * // Implementation\n * }\n * }\n * ```\n */\nexport function expose(_target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n // Mark the method as exposed\n descriptor.value._isExposed = true;\n descriptor.value._exposedName = propertyKey;\n return descriptor;\n}\n\n/**\n * Utility type for extracting plugin methods\n */\nexport type PluginMethods<T> = T extends IArgParserPlugin \n ? { [K in keyof T as T[K] extends Function ? K : never]: T[K] }\n : never;\n","/**\n * Configuration plugin system\n * \n * Provides extensible configuration loading from various sources\n * like JSON files, environment variables, YAML, and TOML.\n */\n\n// Base plugin interface\nexport interface IConfigPlugin {\n name: string;\n canLoad(source: string): boolean;\n load(source: string): Promise<Record<string, any>> | Record<string, any>;\n}\n\n// Base plugin class\nexport abstract class ConfigPlugin implements IConfigPlugin {\n abstract name: string;\n abstract canLoad(source: string): boolean;\n abstract load(source: string): Promise<Record<string, any>> | Record<string, any>;\n}\n\n// JSON plugin\nexport class JsonConfigPlugin extends ConfigPlugin {\n name = 'json';\n \n canLoad(source: string): boolean {\n return source.endsWith('.json');\n }\n \n load(source: string): Record<string, any> {\n const fs = require('node:fs');\n const content = fs.readFileSync(source, 'utf-8');\n return JSON.parse(content);\n }\n}\n\n// Environment variable plugin\nexport class EnvConfigPlugin extends ConfigPlugin {\n name = 'env';\n \n canLoad(source: string): boolean {\n return source === '.env' || source.endsWith('.env');\n }\n \n load(_source: string): Record<string, any> {\n // Placeholder - would use dotenv in actual implementation\n return {};\n }\n}\n\n// Plugin registry\nexport class ConfigPluginRegistry {\n private plugins: Map<string, IConfigPlugin> = new Map();\n \n register(plugin: IConfigPlugin): void {\n this.plugins.set(plugin.name, plugin);\n }\n \n get(name: string): IConfigPlugin | undefined {\n return this.plugins.get(name);\n }\n \n findForSource(source: string): IConfigPlugin | undefined {\n for (const plugin of this.plugins.values()) {\n if (plugin.canLoad(source)) {\n return plugin;\n }\n }\n return undefined;\n }\n}\n\n// Global registry\nexport const globalConfigPluginRegistry = new ConfigPluginRegistry();\n\n// Register default plugins\nglobalConfigPluginRegistry.register(new JsonConfigPlugin());\nglobalConfigPluginRegistry.register(new EnvConfigPlugin());\n\n// Enable optional plugins (YAML, TOML)\nexport async function enableOptionalConfigPlugins(): Promise<void> {\n // Would dynamically import and register YAML/TOML plugins\n}\n\nexport async function enableOptionalConfigPluginsAsync(): Promise<void> {\n await enableOptionalConfigPlugins();\n}\n\nexport function enableConfigPlugins(): void {\n // Synchronous version\n}\n","/**\n * Debug utilities for ArgParser\n */\n\n/**\n * Debug logger that only logs when DEBUG environment variable is set\n */\nexport const debug = {\n log: (...args: any[]) => {\n if (process.env['DEBUG'] || process.env['ARG_PARSER_DEBUG']) {\n console.log('[ArgParser Debug]', ...args);\n }\n },\n \n error: (...args: any[]) => {\n if (process.env['DEBUG'] || process.env['ARG_PARSER_DEBUG']) {\n console.error('[ArgParser Debug]', ...args);\n }\n },\n \n warn: (...args: any[]) => {\n if (process.env['DEBUG'] || process.env['ARG_PARSER_DEBUG']) {\n console.warn('[ArgParser Debug]', ...args);\n }\n },\n};\n","/**\n * Log path utilities for ArgParser\n * \n * Provides flexible path resolution for log files, supporting\n * relative paths (to entry point or cwd), absolute paths, and\n * configuration objects.\n */\n\nimport * as path from 'node:path';\n\n/**\n * Log path can be a simple string or a configuration object\n */\nexport type LogPath = string | LogPathConfig;\n\n/**\n * Configuration for log path resolution\n */\nexport interface LogPathConfig {\n /** The path string */\n path: string;\n /** How to resolve the path */\n relativeTo?: 'entry' | 'cwd' | 'absolute';\n /** Optional base path for 'entry' resolution */\n basePath?: string;\n}\n\n/**\n * Detect the entry point of the application\n */\nexport function detectEntryPoint(): string {\n // Try to get from process.argv[1]\n if (process.argv[1]) {\n return path.resolve(process.argv[1]);\n }\n \n // Fallback to cwd\n return process.cwd();\n}\n\n/**\n * Get entry point from import.meta.url\n */\nexport function getEntryPointFromImportMeta(importMetaUrl: string): string {\n try {\n const url = new URL(importMetaUrl);\n return url.pathname;\n } catch {\n return process.cwd();\n }\n}\n\n/**\n * Resolve a log path to an absolute path\n */\nexport function resolveLogPath(logPath: LogPath): string {\n if (typeof logPath === 'string') {\n // Handle explicit prefixes\n if (logPath.startsWith('cwd:')) {\n return path.resolve(process.cwd(), logPath.slice(4));\n }\n \n if (logPath.startsWith('entry:')) {\n const entryPoint = detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, logPath.slice(6));\n }\n \n if (path.isAbsolute(logPath)) {\n return logPath;\n }\n \n // Default: relative to entry point\n const entryPoint = detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, logPath);\n }\n \n // Handle LogPathConfig\n const { path: pathStr, relativeTo = 'entry', basePath } = logPath;\n \n if (relativeTo === 'absolute') {\n return pathStr;\n }\n \n if (relativeTo === 'cwd') {\n return path.resolve(process.cwd(), pathStr);\n }\n \n // relativeTo === 'entry'\n const entryPoint = basePath || detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, pathStr);\n}\n\n/**\n * Create a path relative to the entry point\n */\nexport function entryRelative(subPath: string): string {\n const entryPoint = detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, subPath);\n}\n\n/**\n * Create a path relative to the current working directory\n */\nexport function cwdRelative(subPath: string): string {\n return path.resolve(process.cwd(), subPath);\n}\n\n/**\n * Create an absolute path\n */\nexport function absolutePath(pathStr: string): string {\n return path.resolve(pathStr);\n}\n\n/**\n * Legacy cwd-relative path (for backward compatibility)\n */\nexport function legacyCwdPath(subPath: string): string {\n return cwdRelative(subPath);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["rawFlag: any","collisions: FlagOptionCollision[]","answers: Record<string, any>","results: PromptResult[\"results\"]","cmdChain: string[]","#appName","#appCommandName","#description","#handler","#mandatoryCharacter","#throwForDuplicateFlags","#handleErrors","#autoExit","#inheritParentFlags","#promptWhen","#flagManager","#promptManager","#plugins","#subCommands","#parentParser","#subCommandName","context: IHandlerContext","#rootPath","result: any","missingFlags: string[]","currentParser: ArgParser","commandChain: string[]","systemArgs: ISystemArgs","filteredArgs: string[]","result: ParseResult","lines: string[]"],"sources":["../src/core/types.ts","../src/core/FlagManager.ts","../src/core/PromptManager.ts","../src/core/ArgParser.ts","../src/plugin/types.ts","../src/config/plugins/index.ts","../src/utils/debug-utils.ts","../src/core/log-path-utils.ts"],"sourcesContent":["/**\n * Core types for ArgParser\n *\n * These types define the shape of flags, commands, and configuration\n * for the argument parser.\n */\n\nimport { z, type ZodTypeAny } from \"zod\";\n\n// ============================================================================\n// Flag Types\n// ============================================================================\n\n/**\n * Defines the behavior for flag inheritance in sub-commands.\n */\nexport const FlagInheritance = {\n NONE: \"none\",\n DirectParentOnly: \"direct-parent-only\",\n AllParents: \"all-parents\",\n} as const;\n\nexport type TFlagInheritance = (typeof FlagInheritance)[keyof typeof FlagInheritance] | boolean;\n\n/**\n * Zod schema for validating DXT-specific options\n */\nexport const zodDxtOptionsSchema = z\n .object({\n sensitive: z.boolean().optional(),\n localDefault: z.string().optional(),\n type: z.enum([\"string\", \"directory\", \"file\", \"boolean\", \"number\"]).optional(),\n multiple: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n })\n .strict()\n .refine(\n (data) => {\n if (data.min !== undefined && data.max !== undefined) {\n return data.min <= data.max;\n }\n return true;\n },\n {\n message: \"min cannot be greater than max\",\n path: [\"min\"],\n },\n );\n\nexport const zodFlagSchema = z.object({\n name: z.string().min(1),\n allowLigature: z.boolean().default(true),\n allowMultiple: z.boolean().default(false),\n description: z.union([z.string(), z.array(z.string())]).optional(),\n valueHint: z.string().optional(),\n options: z.array(z.string().min(1)).min(1),\n defaultValue: z.any().optional(),\n type: z\n .union([\n z.custom((val) => val === String),\n z.custom((val) => val === Number),\n z.custom((val) => val === Boolean),\n z.custom((val) => val === Array),\n z.custom((val) => val === Object),\n z.custom((val) => typeof val === \"function\"),\n z.custom((val) => val && typeof val === \"object\" && (val as any)._def),\n z.string(),\n ])\n .default(\"string\"),\n mandatory: z.union([z.boolean(), z.custom((val) => typeof val === \"function\")]).optional(),\n flagOnly: z.boolean().default(false),\n validate: z.custom((val) => typeof val === \"function\").optional(),\n enum: z.array(z.any()).optional(),\n env: z.union([z.string(), z.array(z.string())]).optional(),\n dxtOptions: zodDxtOptionsSchema.optional(),\n dynamicRegister: z.custom((val) => typeof val === \"function\").optional(),\n setWorkingDirectory: z.boolean().optional(),\n positional: z.number().int().positive().optional(),\n prompt: z.custom((val) => typeof val === \"function\").optional(),\n promptSequence: z.number().int().positive().optional(),\n});\n\nexport type IFlagCore = z.input<typeof zodFlagSchema>;\nexport type ProcessedFlagCore = z.output<typeof zodFlagSchema>;\n\nexport interface IDxtOptions {\n sensitive?: boolean;\n localDefault?: string;\n type?: \"string\" | \"directory\" | \"file\" | \"boolean\" | \"number\";\n multiple?: boolean;\n min?: number;\n max?: number;\n default?: any;\n title?: string;\n}\n\nexport type IFlag = IFlagCore & {\n default?: any;\n required?: boolean | ((parsedArgs: any) => boolean);\n env?: string | string[];\n dxtOptions?: IDxtOptions;\n dynamicRegister?: DynamicRegisterFn;\n setWorkingDirectory?: boolean;\n positional?: number;\n};\n\nexport type DynamicRegisterContext = {\n value: any | any[];\n argsSoFar: Record<string, any>;\n parser: any;\n processArgs: string[];\n forHelp?: boolean;\n registerFlags: (flags: readonly IFlag[]) => void;\n};\n\nexport type DynamicRegisterFn = (\n ctx: DynamicRegisterContext,\n) => Promise<readonly IFlag[] | void> | readonly IFlag[] | void;\n\nexport type ProcessedFlag = ProcessedFlagCore;\n\n// ============================================================================\n// Type Resolution\n// ============================================================================\n\nexport type TParsedArgsTypeFromFlagDef =\n | StringConstructor\n | NumberConstructor\n | BooleanConstructor\n | ArrayConstructor\n | ObjectConstructor\n | ((value: string) => any)\n | ((value: string) => Promise<any>)\n | ZodTypeAny\n | \"string\"\n | \"number\"\n | \"boolean\"\n | \"array\"\n | \"object\";\n\nexport type ResolveType<T extends TParsedArgsTypeFromFlagDef> = T extends StringConstructor\n ? string\n : T extends NumberConstructor\n ? number\n : T extends BooleanConstructor\n ? boolean\n : T extends ArrayConstructor\n ? any[]\n : T extends ObjectConstructor\n ? Record<string, any>\n : T extends ZodTypeAny\n ? z.infer<T>\n : T extends \"string\"\n ? string\n : T extends \"number\"\n ? number\n : T extends \"boolean\"\n ? boolean\n : T extends \"array\"\n ? any[]\n : T extends \"object\"\n ? Record<string, any>\n : T extends (value: string) => infer R\n ? R\n : any;\n\nexport type ExtractFlagType<_TFlag extends ProcessedFlag> = any;\n\nexport type FlagsArray = readonly ProcessedFlag[];\n\nexport type TParsedArgs<TFlags extends readonly ProcessedFlag[]> = {\n [K in TFlags[number][\"name\"]]: ExtractFlagType<Extract<TFlags[number], { name: K }>>;\n};\n\n// ============================================================================\n// Handler Context\n// ============================================================================\n\nexport interface ISystemArgs {\n debug?: boolean;\n debugPrint?: boolean;\n enableFuzzy?: boolean;\n withEnv?: string | true;\n saveToEnv?: boolean;\n buildDxt?: string | true;\n mcpServe?: boolean;\n mcpTransport?: string;\n mcpPort?: number;\n mcpHost?: string;\n mcpPath?: string;\n mcpTransports?: string;\n mcpLogPath?: string;\n mcpCors?: any;\n mcpAuth?: any;\n [key: string]: any;\n}\n\nexport type IHandlerContext<TCurrentCommandArgs = any, TParentCommandArgs = any> = {\n args: TCurrentCommandArgs;\n parentArgs?: TParentCommandArgs;\n commandChain: string[];\n parser: any;\n parentParser?: any;\n isMcp?: boolean;\n isInteractive?: boolean;\n getFlag?: (name: string) => any;\n displayHelp: () => void;\n rootPath?: string;\n systemArgs?: ISystemArgs;\n promptAnswers?: Record<string, any>;\n logger: any;\n};\n\nexport type MainHandler<\n TParserFlags extends FlagsArray = FlagsArray,\n TParentParserFlags extends FlagsArray = FlagsArray,\n THandlerReturn = any,\n> = (\n ctx: IHandlerContext<TParsedArgs<TParserFlags>, TParsedArgs<TParentParserFlags>>,\n) => THandlerReturn | Promise<THandlerReturn>;\n\n// ============================================================================\n// Subcommand Types\n// ============================================================================\n\nexport interface ISubCommand {\n name: string;\n description?: string;\n parser: any;\n handler?: (ctx: IHandlerContext) => any;\n isMcp?: boolean;\n mcpServerInfo?: {\n name: string;\n version: string;\n description?: string;\n };\n mcpToolOptions?: any;\n promptWhen?: PromptWhen;\n onCancel?: (ctx: IHandlerContext) => void | Promise<void>;\n}\n\nexport type PromptType = \"text\" | \"password\" | \"confirm\" | \"select\" | \"multiselect\";\n\nexport interface PromptFieldConfig {\n type: PromptType;\n message: string;\n placeholder?: string;\n initial?: any;\n validate?: (value: any, ctx: IHandlerContext) => boolean | string | Promise<boolean | string>;\n options?: Array<string | { label: string; value: any; hint?: string }>;\n maxItems?: number;\n skip?: boolean;\n}\n\nexport type PromptWhen = \"interactive-flag\" | \"missing\" | \"always\";\n\nexport interface IPromptableFlag extends IFlag {\n prompt?: (ctx: IHandlerContext) => PromptFieldConfig | Promise<PromptFieldConfig>;\n promptSequence?: number;\n}\n\nexport interface IInteractiveSubCommand extends ISubCommand {\n promptWhen?: PromptWhen;\n onCancel?: (ctx: IHandlerContext) => void | Promise<void>;\n}\n\n// ============================================================================\n// Parser Types\n// ============================================================================\n\nexport type ArgParserInstance = any;\n\nexport interface ParseResult<T = any> {\n success: boolean;\n exitCode: number;\n data?: T;\n message?: string;\n shouldExit?: boolean;\n type?: \"success\" | \"error\" | \"help\" | \"version\" | \"debug\";\n}\n\nexport interface ArgParserOptions {\n autoExit?: boolean;\n handleErrors?: boolean;\n}\n\nexport interface ArgParserBehaviorOptions {\n autoExit?: boolean;\n handleErrors?: boolean;\n}\n\n// ============================================================================\n// JSON Schema Utilities\n// ============================================================================\n\nexport function getJsonSchemaTypeFromFlag(\n flagType: TParsedArgsTypeFromFlagDef,\n): \"string\" | \"number\" | \"boolean\" | \"array\" | \"object\" {\n if (flagType && typeof flagType === \"object\" && (flagType as ZodTypeAny)._def) {\n return \"object\";\n }\n\n if (typeof flagType === \"function\") {\n if (flagType === String) return \"string\";\n if (flagType === Number) return \"number\";\n if (flagType === Boolean) return \"boolean\";\n if (flagType === Array) return \"array\";\n if (flagType === Object) return \"object\";\n return \"string\";\n }\n\n if (typeof flagType === \"string\") {\n const normalizedType = flagType.toLowerCase();\n switch (normalizedType) {\n case \"string\":\n return \"string\";\n case \"number\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"array\":\n return \"array\";\n case \"object\":\n return \"object\";\n default:\n return \"string\";\n }\n }\n\n return \"string\";\n}\n\n// ============================================================================\n// Output Schema Patterns\n// ============================================================================\n\nexport const OutputSchemaPatterns = {\n successError: () =>\n z.object({\n success: z.boolean(),\n message: z.string().optional(),\n error: z.string().optional(),\n }),\n\n successWithData: (dataSchema?: z.ZodTypeAny) =>\n z.object({\n success: z.boolean(),\n data: dataSchema || z.any(),\n message: z.string().optional(),\n error: z.string().optional(),\n }),\n\n list: (itemSchema?: z.ZodTypeAny) =>\n z.object({\n items: z.array(itemSchema || z.any()),\n count: z.number().optional(),\n hasMore: z.boolean().optional(),\n }),\n\n fileOperation: () =>\n z.object({\n path: z.string(),\n size: z.number().optional(),\n created: z.boolean().optional(),\n modified: z.boolean().optional(),\n exists: z.boolean().optional(),\n }),\n\n processExecution: () =>\n z.object({\n exitCode: z.number(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n duration: z.number().optional(),\n command: z.string().optional(),\n }),\n} as const;\n\nexport type OutputSchemaPatternName = keyof typeof OutputSchemaPatterns;\n\nexport type OutputSchemaConfig =\n | OutputSchemaPatternName\n | z.ZodTypeAny\n | Record<string, z.ZodTypeAny>;\n\nexport function createOutputSchema(pattern: OutputSchemaConfig): z.ZodTypeAny {\n if (typeof pattern === \"string\" && pattern in OutputSchemaPatterns) {\n return OutputSchemaPatterns[pattern as OutputSchemaPatternName]();\n }\n\n if (pattern && typeof pattern === \"object\" && \"_def\" in pattern) {\n return pattern as z.ZodTypeAny;\n }\n\n if (pattern && typeof pattern === \"object\") {\n return z.object(pattern as Record<string, z.ZodTypeAny>);\n }\n\n return OutputSchemaPatterns.successError();\n}\n\n/**\n * Result of executing prompts\n */\nexport interface PromptResult {\n /** Collected answers */\n answers: Record<string, any>;\n /** Individual prompt results */\n results: Array<{\n flagName: string;\n success: boolean;\n value?: any;\n error?: string;\n }>;\n /** Whether the user cancelled */\n cancelled: boolean;\n}\n","/**\n * FlagManager - Manages flag definitions and collision detection\n *\n * This class handles the registration, storage, and retrieval of CLI flags.\n * It provides collision detection to prevent duplicate flag definitions.\n */\n\nimport { zodFlagSchema, type IFlag, type ProcessedFlag } from \"./types\";\n\nexport interface FlagManagerOptions {\n /** Throw an error if a flag is added more than once */\n throwForDuplicateFlags?: boolean;\n}\n\nexport interface FlagOptionCollision {\n flagName: string;\n option: string;\n existingFlagName: string;\n}\n\n/**\n * Manages flag definitions for an ArgParser instance\n */\nexport class FlagManager {\n private flags: Map<string, ProcessedFlag> = new Map();\n private optionToFlagMap: Map<string, string> = new Map();\n private options: FlagManagerOptions;\n\n constructor(options: FlagManagerOptions = {}, initialFlags: readonly IFlag[] = []) {\n this.options = {\n throwForDuplicateFlags: false,\n ...options,\n };\n\n // Add initial flags\n for (const flag of initialFlags) {\n this.addFlag(flag);\n }\n }\n\n /**\n * Add a single flag\n */\n addFlag(flag: IFlag): void {\n const processedFlag = this.processFlag(flag);\n\n // Check for name collision\n if (this.flags.has(processedFlag.name)) {\n if (this.options.throwForDuplicateFlags) {\n throw new Error(`Flag with name '${processedFlag.name}' already exists`);\n }\n console.warn(`[FlagManager] Flag '${processedFlag.name}' is being overwritten`);\n }\n\n // Check for option collisions\n for (const option of processedFlag.options) {\n const existingFlag = this.optionToFlagMap.get(option);\n if (existingFlag && existingFlag !== processedFlag.name) {\n if (this.options.throwForDuplicateFlags) {\n throw new Error(`Option '${option}' is already used by flag '${existingFlag}'`);\n }\n console.warn(\n `[FlagManager] Option '${option}' is already used by flag '${existingFlag}'. ` +\n `Reassigning to '${processedFlag.name}'`,\n );\n }\n this.optionToFlagMap.set(option, processedFlag.name);\n }\n\n this.flags.set(processedFlag.name, processedFlag);\n }\n\n /**\n * Add multiple flags\n */\n addFlags(flags: readonly IFlag[]): void {\n for (const flag of flags) {\n this.addFlag(flag);\n }\n }\n\n /**\n * Remove a flag by name\n */\n removeFlag(name: string): boolean {\n const flag = this.flags.get(name);\n if (!flag) return false;\n\n // Remove option mappings\n for (const option of flag.options) {\n this.optionToFlagMap.delete(option);\n }\n\n return this.flags.delete(name);\n }\n\n /**\n * Check if a flag exists\n */\n hasFlag(name: string): boolean {\n return this.flags.has(name);\n }\n\n /**\n * Get a flag by name\n */\n getFlag(name: string): ProcessedFlag | undefined {\n return this.flags.get(name);\n }\n\n /**\n * Get all flags as an array\n */\n getAllFlags(): ProcessedFlag[] {\n return Array.from(this.flags.values());\n }\n\n /**\n * Get all flag names\n */\n getFlagNames(): string[] {\n return Array.from(this.flags.keys());\n }\n\n /**\n * Find flag by option\n */\n findFlagByOption(option: string): ProcessedFlag | undefined {\n const flagName = this.optionToFlagMap.get(option);\n if (!flagName) return undefined;\n return this.flags.get(flagName);\n }\n\n /**\n * Process a raw flag into a ProcessedFlag\n */\n private processFlag(flag: IFlag): ProcessedFlag {\n // Basic mapping for aliases before validation\n const rawFlag: any = { ...flag };\n\n if (\"default\" in rawFlag && rawFlag.default !== undefined && !(\"defaultValue\" in rawFlag)) {\n rawFlag.defaultValue = rawFlag.default;\n }\n\n if (\"required\" in rawFlag && rawFlag.required !== undefined && !(\"mandatory\" in rawFlag)) {\n rawFlag.mandatory = rawFlag.required;\n }\n\n // Validate with Zod\n return zodFlagSchema.parse(rawFlag) as ProcessedFlag;\n }\n\n /**\n * Internal method to set a processed flag directly (for inheritance)\n */\n _setProcessedFlagForInheritance(flag: ProcessedFlag): void {\n this.flags.set(flag.name, flag);\n for (const option of flag.options) {\n this.optionToFlagMap.set(option, flag.name);\n }\n }\n\n /**\n * Clear all flags\n */\n clear(): void {\n this.flags.clear();\n this.optionToFlagMap.clear();\n }\n\n /**\n * Get collision report\n */\n getCollisions(): FlagOptionCollision[] {\n const collisions: FlagOptionCollision[] = [];\n const seen = new Map<string, string>();\n\n for (const [name, flag] of this.flags) {\n for (const option of flag.options) {\n const existing = seen.get(option);\n if (existing && existing !== name) {\n collisions.push({\n flagName: name,\n option,\n existingFlagName: existing,\n });\n }\n seen.set(option, name);\n }\n }\n\n return collisions;\n }\n}\n","/**\n * PromptManager - Manages interactive prompts with @clack/prompts\n *\n * This class handles the collection and execution of interactive prompts\n * for CLI applications.\n */\n\nimport type { IHandlerContext, IPromptableFlag } from \"./types\";\n\nexport interface PromptManagerOptions {\n /** Default prompt sequence offset */\n sequenceOffset?: number;\n}\n\n/**\n * Manages interactive prompts for an ArgParser instance\n */\nexport class PromptManager {\n private promptableFlags: Map<string, IPromptableFlag> = new Map();\n private _options: PromptManagerOptions;\n\n constructor(options: PromptManagerOptions = {}) {\n this._options = {\n sequenceOffset: 0,\n ...options,\n };\n }\n\n get sequenceOffset(): number {\n return this._options.sequenceOffset ?? 0;\n }\n\n /**\n * Register a promptable flag\n */\n registerPromptableFlag(flag: IPromptableFlag): void {\n this.promptableFlags.set(flag.name, flag);\n }\n\n /**\n * Unregister a promptable flag\n */\n unregisterPromptableFlag(name: string): boolean {\n return this.promptableFlags.delete(name);\n }\n\n /**\n * Check if a flag has a prompt\n */\n hasPrompt(name: string): boolean {\n return this.promptableFlags.has(name);\n }\n\n /**\n * Get all promptable flags sorted by sequence\n */\n getPromptableFlags(): IPromptableFlag[] {\n return Array.from(this.promptableFlags.values()).sort((a, b) => {\n const seqA = a.promptSequence ?? Infinity;\n const seqB = b.promptSequence ?? Infinity;\n return seqA - seqB;\n });\n }\n\n /**\n * Execute prompts for missing flags\n *\n * This is a placeholder implementation. The actual implementation\n * would integrate with @clack/prompts.\n */\n async executePrompts(\n context: IHandlerContext,\n missingFlagNames: string[],\n ): Promise<PromptResult> {\n const answers: Record<string, any> = {};\n const results: PromptResult[\"results\"] = [];\n\n for (const flagName of missingFlagNames) {\n const flag = this.promptableFlags.get(flagName);\n if (!flag || !flag.prompt) continue;\n\n try {\n const promptConfig = await flag.prompt(context);\n\n // TODO: Integrate with @clack/prompts\n // For now, this is a placeholder\n console.log(`[PromptManager] Would prompt for '${flagName}': ${promptConfig.message}`);\n\n results.push({\n flagName,\n success: true,\n value: undefined, // Would be the actual answer\n });\n } catch (error) {\n results.push({\n flagName,\n success: false,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n return {\n answers,\n results,\n cancelled: false,\n };\n }\n\n /**\n * Clear all registered flags\n */\n clear(): void {\n this.promptableFlags.clear();\n }\n}\n\n/**\n * Result of executing prompts\n */\nexport interface PromptResult {\n /** Collected answers */\n answers: Record<string, any>;\n /** Individual prompt results */\n results: Array<{\n flagName: string;\n success: boolean;\n value?: any;\n error?: string;\n }>;\n /** Whether the user cancelled */\n cancelled: boolean;\n}\n","/**\n * Core ArgParser implementation\n *\n * This is the main ArgParser class with full CLI parsing capabilities.\n * It has NO dependencies on MCP, DXT, or TUI - those are provided by plugins.\n */\n\nimport chalk from \"@alcyone-labs/simple-chalk\";\nimport type { IArgParserPlugin } from \"../plugin/types\";\nimport { FlagManager } from \"./FlagManager\";\nimport { PromptManager } from \"./PromptManager\";\nimport type {\n IFlag,\n IHandlerContext,\n ISubCommand,\n ParseResult,\n ProcessedFlag,\n PromptWhen,\n TFlagInheritance,\n ISystemArgs,\n} from \"./types\";\n\n/**\n * Error thrown by ArgParser\n */\nexport class ArgParserError extends Error {\n public commandChain: string[];\n\n constructor(\n message: string,\n public cmdChain: string[] = [],\n ) {\n super(message);\n this.name = \"ArgParserError\";\n this.commandChain = cmdChain;\n }\n}\n\n/**\n * Parameters for creating an ArgParser\n */\nexport interface IArgParserParams<THandlerReturn = any> {\n /** Display name of the application */\n appName?: string;\n /** Command name for help text */\n appCommandName?: string;\n /** Description of the application */\n description?: string;\n /** Handler function */\n handler?: (ctx: IHandlerContext<any, any>) => THandlerReturn | Promise<THandlerReturn>;\n /** Subcommands */\n subCommands?: ISubCommand[];\n /** Extra newline between flag groups in help */\n extraNewLine?: boolean;\n /** Wrap help text at this width */\n wrapAtWidth?: number;\n /** Width of blank space in help */\n blankSpaceWidth?: number;\n /** Character for mandatory flags */\n mandatoryCharacter?: string;\n /** Throw error for duplicate flags */\n throwForDuplicateFlags?: boolean;\n /** Handle errors automatically */\n handleErrors?: boolean;\n /** Auto exit on parse result */\n autoExit?: boolean;\n /** Trigger auto-help if no handler */\n triggerAutoHelpIfNoHandler?: boolean;\n /** Flag inheritance behavior */\n inheritParentFlags?: TFlagInheritance;\n /** When to trigger interactive prompts */\n promptWhen?: PromptWhen;\n /** Cancel callback for prompts */\n onCancel?: (ctx: IHandlerContext) => void | Promise<void>;\n}\n\n/**\n * Parse options\n */\nexport interface IParseOptions {\n /** Skip help handling */\n skipHelpHandling?: boolean;\n /** Skip handler execution */\n skipHandlers?: boolean;\n /** Await async handlers */\n deep?: boolean;\n /** MCP mode flag */\n isMcp?: boolean;\n /** Dynamic help preload */\n dynamicHelpPreload?: boolean;\n /** Auto execute */\n autoExecute?: boolean;\n /** Import meta URL */\n importMetaUrl?: string;\n}\n\n/**\n * Core ArgParser class\n *\n * Provides complete CLI argument parsing with support for:\n * - Flags (with types, validation, defaults)\n * - Subcommands\n * - Interactive prompts\n * - Help generation\n * - Plugin system\n */\nexport class ArgParser<THandlerReturn = any> {\n // Private fields\n #appName: string = \"Argument Parser\";\n #appCommandName?: string;\n #subCommandName: string = \"\";\n #description?: string;\n #handler?: (ctx: IHandlerContext) => any;\n #subCommands: Map<string, ISubCommand> = new Map();\n #flagManager: FlagManager;\n #promptManager: PromptManager;\n #plugins: Map<string, IArgParserPlugin> = new Map();\n\n // Configuration\n #mandatoryCharacter: string = \"*\";\n #throwForDuplicateFlags: boolean = false;\n #handleErrors: boolean = true;\n #autoExit: boolean = true;\n #inheritParentFlags: TFlagInheritance = false;\n #promptWhen: PromptWhen = \"interactive-flag\";\n\n // State\n #parentParser?: ArgParser;\n #rootPath: string | null = null;\n\n constructor(params: IArgParserParams<THandlerReturn> = {}, initialFlags?: readonly IFlag[]) {\n // Set basic properties\n this.#appName = params.appName || \"app\";\n this.#appCommandName = params.appCommandName;\n this.#description = params.description;\n this.#handler = params.handler;\n\n // Set formatting options\n if (params.mandatoryCharacter !== undefined)\n this.#mandatoryCharacter = params.mandatoryCharacter;\n\n // Set behavior options\n if (params.throwForDuplicateFlags !== undefined)\n this.#throwForDuplicateFlags = params.throwForDuplicateFlags;\n if (params.handleErrors !== undefined) this.#handleErrors = params.handleErrors;\n if (params.autoExit !== undefined) this.#autoExit = params.autoExit;\n if (params.inheritParentFlags !== undefined)\n this.#inheritParentFlags = params.inheritParentFlags;\n if (params.promptWhen !== undefined) this.#promptWhen = params.promptWhen;\n\n // Initialize managers\n this.#flagManager = new FlagManager(\n { throwForDuplicateFlags: this.#throwForDuplicateFlags },\n initialFlags || [],\n );\n this.#promptManager = new PromptManager();\n\n // Add help flag\n this.addFlag({\n name: \"help\",\n description: \"Display this help message and exit\",\n mandatory: false,\n type: Boolean,\n options: [\"-h\", \"--help\"],\n flagOnly: true,\n });\n\n // Add subcommands\n if (params.subCommands) {\n for (const sub of params.subCommands) {\n this.addSubCommand(sub);\n }\n }\n }\n\n // ==================== Plugin System ====================\n\n /**\n * Install a plugin\n */\n use(plugin: IArgParserPlugin): this {\n if (this.#plugins.has(plugin.name)) {\n throw new Error(`Plugin '${plugin.name}' is already installed`);\n }\n\n const result = plugin.install(this);\n this.#plugins.set(plugin.name, plugin);\n\n return (result as ArgParser as this) || this;\n }\n\n /**\n * Check if a plugin is installed\n */\n hasPlugin(name: string): boolean {\n return this.#plugins.has(name);\n }\n\n /**\n * Get an installed plugin\n */\n getPlugin(name: string): IArgParserPlugin | undefined {\n return this.#plugins.get(name);\n }\n\n /**\n * List all installed plugins\n */\n listPlugins(): string[] {\n return Array.from(this.#plugins.keys());\n }\n\n // ==================== Flag Management ====================\n\n /**\n * Add a flag\n */\n addFlag(flag: IFlag): this {\n this.#flagManager.addFlag(flag);\n\n // Register with prompt manager if promptable\n if (\"prompt\" in flag && typeof flag.prompt === \"function\") {\n this.#promptManager.registerPromptableFlag(flag as any);\n }\n\n return this;\n }\n\n /**\n * Add multiple flags\n */\n addFlags(flags: readonly IFlag[]): this {\n for (const flag of flags) {\n this.addFlag(flag);\n }\n return this;\n }\n\n /**\n * Check if a flag exists\n */\n hasFlag(name: string): boolean {\n return this.#flagManager.hasFlag(name);\n }\n\n /**\n * Get a flag definition\n */\n getFlagDefinition(name: string): ProcessedFlag | undefined {\n return this.#flagManager.getFlag(name);\n }\n\n /**\n * Get all flags\n */\n get flags(): ProcessedFlag[] {\n return this.#flagManager.getAllFlags();\n }\n\n /**\n * Get all flag names\n */\n get flagNames(): string[] {\n return this.#flagManager.getFlagNames();\n }\n\n // ==================== Subcommand Management ====================\n\n /**\n * Add a subcommand\n */\n addSubCommand(subCommand: ISubCommand): this {\n if (this.#subCommands.has(subCommand.name)) {\n throw new Error(`Subcommand '${subCommand.name}' already exists`);\n }\n\n // Set up parent relationship\n const subParser = subCommand.parser as ArgParser;\n if (subParser) {\n subParser.#parentParser = this;\n subParser.#subCommandName = subCommand.name;\n\n // Inherit flags if configured\n if (subParser.#inheritParentFlags) {\n this.inheritFlagsToSubParser(subParser);\n }\n }\n\n this.#subCommands.set(subCommand.name, subCommand);\n return this;\n }\n\n /**\n * Get a subcommand\n */\n getSubCommand(name: string): ISubCommand | undefined {\n return this.#subCommands.get(name);\n }\n\n /**\n * Get all subcommands\n */\n getSubCommands(): Map<string, ISubCommand> {\n return new Map(this.#subCommands);\n }\n\n /**\n * Inherit flags to a sub-parser\n */\n private inheritFlagsToSubParser(subParser: ArgParser): void {\n const parentFlags = this.#flagManager.getAllFlags();\n for (const flag of parentFlags) {\n if (!subParser.hasFlag(flag.name)) {\n (subParser.#flagManager as any)._setProcessedFlagForInheritance(flag);\n }\n }\n }\n\n // ==================== Handler Management ====================\n\n /**\n * Set the handler\n */\n setHandler(\n handler: (ctx: IHandlerContext<any, any>) => THandlerReturn | Promise<THandlerReturn>,\n ): this {\n this.#handler = handler;\n return this;\n }\n\n /**\n * Get the handler\n */\n getHandler(): ((ctx: IHandlerContext) => any) | undefined {\n return this.#handler;\n }\n\n // ==================== Getters ====================\n\n getAppName(): string {\n return this.#appName;\n }\n\n getAppCommandName(): string | undefined {\n return this.#appCommandName;\n }\n\n getDescription(): string | undefined {\n return this.#description;\n }\n\n getSubCommandName(): string {\n return this.#subCommandName;\n }\n\n getAutoExit(): boolean {\n return this.#autoExit;\n }\n\n getPromptWhen(): PromptWhen {\n return this.#promptWhen;\n }\n\n // ==================== Parsing ====================\n\n /**\n * Parse command line arguments\n */\n async parse(processArgs?: string[], options: IParseOptions = {}): Promise<any> {\n const args = processArgs || process.argv.slice(2);\n\n try {\n // Detect and strip system flags\n const { systemArgs, filteredArgs } = this.detectAndStripSystemFlags(args);\n\n // Handle help\n if (!options.skipHelpHandling && filteredArgs.includes(\"--help\")) {\n console.log(this.helpText());\n return this.handleExit(0, \"Help displayed\", \"help\");\n }\n\n // Find subcommand chain\n const { finalParser, commandChain, remainingArgs } = this.findCommandChain(filteredArgs);\n\n // Parse flags\n const parsedArgs = await finalParser.parseFlags(remainingArgs, options);\n\n // Create handler context\n const context: IHandlerContext = {\n args: parsedArgs,\n commandChain,\n parser: finalParser,\n parentParser: finalParser.#parentParser,\n isMcp: options.isMcp || false,\n displayHelp: () => console.log(finalParser.helpText()),\n rootPath: this.#rootPath || process.cwd(),\n systemArgs,\n logger: console,\n };\n\n // Execute handler\n if (finalParser.#handler && !options.skipHandlers) {\n const result = await finalParser.#handler(context);\n return result;\n }\n\n return parsedArgs;\n } catch (error) {\n if (error instanceof ArgParserError) {\n if (!this.#handleErrors) {\n throw error;\n }\n console.error(chalk.red(error.message));\n return this.handleExit(1, error.message, \"error\");\n }\n throw error;\n }\n }\n\n /**\n * Parse flags only\n */\n private async parseFlags(args: string[], _options: IParseOptions = {}): Promise<any> {\n const result: any = {};\n const flags = this.#flagManager.getAllFlags();\n\n // Set defaults\n for (const flag of flags) {\n if (flag.defaultValue !== undefined) {\n result[flag.name] = flag.defaultValue;\n }\n }\n\n // Parse arguments\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n const flag = this.#flagManager.findFlagByOption(arg);\n\n if (flag) {\n if (flag.flagOnly) {\n result[flag.name] = true;\n } else {\n const nextArg = args[i + 1];\n if (nextArg && !nextArg.startsWith(\"-\")) {\n const value = this.parseFlagValue(nextArg, flag.type);\n\n // Handle allowMultiple - accumulate into array\n if (flag.allowMultiple) {\n if (!Array.isArray(result[flag.name])) {\n result[flag.name] = result[flag.name] !== undefined ? [result[flag.name]] : [];\n }\n result[flag.name].push(value);\n } else {\n result[flag.name] = value;\n }\n\n i++;\n } else if (flag.type === Boolean) {\n result[flag.name] = true;\n }\n }\n }\n\n i++;\n }\n\n // Validate enum values\n for (const flag of flags) {\n if (flag.enum && flag.enum.length > 0 && result[flag.name] !== undefined) {\n const value = result[flag.name];\n if (!flag.enum.includes(value)) {\n throw new ArgParserError(\n `Invalid value '${value}' for flag '${flag.name}'. Allowed values: ${flag.enum.join(\", \")}`,\n [this.#appName],\n );\n }\n }\n }\n\n // Validate mandatory flags\n const missingFlags: string[] = [];\n for (const flag of flags) {\n if (flag.mandatory && result[flag.name] === undefined) {\n if (typeof flag.mandatory === \"function\") {\n if (flag.mandatory(result)) {\n missingFlags.push(flag.name);\n }\n } else {\n missingFlags.push(flag.name);\n }\n }\n }\n\n if (missingFlags.length > 0) {\n throw new ArgParserError(`Missing mandatory flags: ${missingFlags.join(\", \")}`, [\n this.#appName,\n ]);\n }\n\n return result;\n }\n\n /**\n * Parse a flag value based on type\n */\n private parseFlagValue(value: string, type: any): any {\n if (type === Boolean || type === \"boolean\") {\n return /^(true|yes|1)$/i.test(value);\n }\n if (type === Number || type === \"number\") {\n return Number(value);\n }\n if (type === String || type === \"string\") {\n return value;\n }\n if (typeof type === \"function\") {\n return type(value);\n }\n return value;\n }\n\n /**\n * Find the command chain for subcommands\n */\n private findCommandChain(args: string[]): {\n finalParser: ArgParser;\n commandChain: string[];\n remainingArgs: string[];\n } {\n let currentParser: ArgParser = this;\n const commandChain: string[] = [];\n let remainingArgs = [...args];\n\n while (remainingArgs.length > 0) {\n const subName = remainingArgs[0];\n const subCommand = currentParser.#subCommands.get(subName);\n\n if (!subCommand) break;\n\n commandChain.push(subName);\n currentParser = subCommand.parser as ArgParser;\n remainingArgs = remainingArgs.slice(1);\n }\n\n return { finalParser: currentParser, commandChain, remainingArgs };\n }\n\n /**\n * Detect and strip system flags\n */\n private detectAndStripSystemFlags(args: string[]): {\n systemArgs: ISystemArgs;\n filteredArgs: string[];\n } {\n const systemArgs: ISystemArgs = {};\n const filteredArgs: string[] = [];\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const nextArg = args[i + 1];\n\n switch (arg) {\n case \"--s-debug\":\n systemArgs.debug = true;\n break;\n case \"--s-with-env\":\n systemArgs.withEnv = nextArg && !nextArg.startsWith(\"-\") ? nextArg : true;\n if (nextArg && !nextArg.startsWith(\"-\")) i++;\n break;\n default:\n filteredArgs.push(arg);\n }\n }\n\n return { systemArgs, filteredArgs };\n }\n\n /**\n * Handle exit\n */\n private handleExit(exitCode: number, message?: string, type?: ParseResult[\"type\"]): ParseResult {\n const result: ParseResult = {\n success: exitCode === 0,\n exitCode,\n message,\n type: type || (exitCode === 0 ? \"success\" : \"error\"),\n shouldExit: true,\n };\n\n if (this.#autoExit && typeof process !== \"undefined\" && process.exit) {\n process.exit(exitCode);\n }\n\n return result;\n }\n\n // ==================== Help Generation ====================\n\n /**\n * Generate help text\n */\n helpText(): string {\n const lines: string[] = [];\n\n // Title\n lines.push(chalk.bold(this.#appName));\n if (this.#description) {\n lines.push(this.#description);\n }\n lines.push(\"\");\n\n // Usage\n const commandName = this.#appCommandName || this.#appName.toLowerCase();\n lines.push(chalk.bold(\"Usage:\"));\n lines.push(` ${commandName} [options] [command]`);\n lines.push(\"\");\n\n // Options\n const flags = this.#flagManager.getAllFlags();\n if (flags.length > 0) {\n lines.push(chalk.bold(\"Options:\"));\n for (const flag of flags) {\n const options = flag.options.join(\", \");\n const defaultStr =\n flag.defaultValue !== undefined ? ` (default: ${flag.defaultValue})` : \"\";\n const mandatoryStr = flag.mandatory ? ` ${this.#mandatoryCharacter}` : \"\";\n lines.push(` ${options.padEnd(20)} ${flag.description || \"\"}${defaultStr}${mandatoryStr}`);\n }\n lines.push(\"\");\n }\n\n // Subcommands\n if (this.#subCommands.size > 0) {\n lines.push(chalk.bold(\"Commands:\"));\n for (const [name, sub] of this.#subCommands) {\n lines.push(` ${name.padEnd(20)} ${sub.description || \"\"}`);\n }\n lines.push(\"\");\n }\n\n return lines.join(\"\\n\");\n }\n}\n","/**\n * Plugin system for ArgParser\n *\n * This module provides the foundation for extending ArgParser functionality\n * through a plugin architecture. Plugins can add new methods, modify behavior,\n * or integrate with external systems like MCP, DXT, or TUI.\n */\n\n// Forward reference to avoid circular dependency\n// The actual type will be available at runtime\ntype ArgParserBase<_T = any> = any;\n\n/**\n * Plugin interface for extending ArgParser functionality\n *\n * @example\n * ```typescript\n * const myPlugin = (options: MyOptions): IArgParserPlugin => ({\n * name: 'my-plugin',\n * version: '1.0.0',\n * install(parser) {\n * // Extend parser with custom functionality\n * (parser as any).myMethod = () => {\n * // Implementation\n * };\n * }\n * });\n *\n * const parser = new ArgParser({...})\n * .use(myPlugin({...}));\n * ```\n */\nexport interface IArgParserPlugin {\n /** Unique plugin identifier (should be reverse-DNS style, e.g., 'com.alcyone.mcp') */\n readonly name: string;\n\n /** Plugin version (semver) */\n readonly version?: string;\n\n /**\n * Install the plugin into an ArgParser instance\n * @param parser - The ArgParser instance to extend\n * @returns The modified parser or void\n */\n install<T>(parser: ArgParserBase<T>): ArgParserBase<T> | void;\n\n /**\n * Optional cleanup when parser is destroyed\n */\n destroy?(): void;\n}\n\n/**\n * Plugin metadata for introspection and dependency management\n */\nexport interface IPluginMetadata {\n name: string;\n version: string;\n description?: string;\n author?: string;\n dependencies?: string[];\n peerDependencies?: string[];\n}\n\n/**\n * Plugin registry for managing installed plugins\n *\n * This class tracks which plugins are installed on a parser instance\n * and provides methods for introspection.\n */\nexport class PluginRegistry {\n private plugins = new Map<string, IArgParserPlugin>();\n private metadata = new Map<string, IPluginMetadata>();\n\n /**\n * Register a plugin in the registry\n */\n register(plugin: IArgParserPlugin, metadata?: IPluginMetadata): void {\n if (this.plugins.has(plugin.name)) {\n console.warn(`[ArgParser] Plugin '${plugin.name}' is already registered`);\n return;\n }\n this.plugins.set(plugin.name, plugin);\n if (metadata) {\n this.metadata.set(plugin.name, metadata);\n }\n }\n\n /**\n * Get a registered plugin by name\n */\n get(name: string): IArgParserPlugin | undefined {\n return this.plugins.get(name);\n }\n\n /**\n * Check if a plugin is registered\n */\n has(name: string): boolean {\n return this.plugins.has(name);\n }\n\n /**\n * List all registered plugin names\n */\n list(): string[] {\n return Array.from(this.plugins.keys());\n }\n\n /**\n * Get metadata for a plugin\n */\n getMetadata(name: string): IPluginMetadata | undefined {\n return this.metadata.get(name);\n }\n\n /**\n * Unregister a plugin\n */\n unregister(name: string): boolean {\n const plugin = this.plugins.get(name);\n if (plugin?.destroy) {\n plugin.destroy();\n }\n this.metadata.delete(name);\n return this.plugins.delete(name);\n }\n\n /**\n * Clear all registered plugins\n */\n clear(): void {\n for (const [, plugin] of this.plugins) {\n if (plugin.destroy) {\n plugin.destroy();\n }\n }\n this.plugins.clear();\n this.metadata.clear();\n }\n}\n\n/**\n * Global plugin registry for system-wide plugin management\n */\nexport const globalPluginRegistry = new PluginRegistry();\n\n/**\n * Decorator for plugin methods that should be exposed on the parser\n * \n * @example\n * ```typescript\n * class MyPlugin implements IArgParserPlugin {\n * name = 'my-plugin';\n * \n @expose()\n * myMethod(parser: ArgParserBase, ...args: any[]) {\n * // Implementation\n * }\n * }\n * ```\n */\nexport function expose(_target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n // Mark the method as exposed\n descriptor.value._isExposed = true;\n descriptor.value._exposedName = propertyKey;\n return descriptor;\n}\n\n/**\n * Utility type for extracting plugin methods\n */\nexport type PluginMethods<T> = T extends IArgParserPlugin\n ? { [K in keyof T as T[K] extends Function ? K : never]: T[K] }\n : never;\n","/**\n * Configuration plugin system\n *\n * Provides extensible configuration loading from various sources\n * like JSON files, environment variables, YAML, and TOML.\n */\n\n// Base plugin interface\nexport interface IConfigPlugin {\n name: string;\n canLoad(source: string): boolean;\n load(source: string): Promise<Record<string, any>> | Record<string, any>;\n}\n\n// Base plugin class\nexport abstract class ConfigPlugin implements IConfigPlugin {\n abstract name: string;\n abstract canLoad(source: string): boolean;\n abstract load(source: string): Promise<Record<string, any>> | Record<string, any>;\n}\n\n// JSON plugin\nexport class JsonConfigPlugin extends ConfigPlugin {\n name = \"json\";\n\n canLoad(source: string): boolean {\n return source.endsWith(\".json\");\n }\n\n load(source: string): Record<string, any> {\n const fs = require(\"node:fs\");\n const content = fs.readFileSync(source, \"utf-8\");\n return JSON.parse(content);\n }\n}\n\n// Environment variable plugin\nexport class EnvConfigPlugin extends ConfigPlugin {\n name = \"env\";\n\n canLoad(source: string): boolean {\n return source === \".env\" || source.endsWith(\".env\");\n }\n\n load(_source: string): Record<string, any> {\n // Placeholder - would use dotenv in actual implementation\n return {};\n }\n}\n\n// Plugin registry\nexport class ConfigPluginRegistry {\n private plugins: Map<string, IConfigPlugin> = new Map();\n\n register(plugin: IConfigPlugin): void {\n this.plugins.set(plugin.name, plugin);\n }\n\n get(name: string): IConfigPlugin | undefined {\n return this.plugins.get(name);\n }\n\n findForSource(source: string): IConfigPlugin | undefined {\n for (const plugin of this.plugins.values()) {\n if (plugin.canLoad(source)) {\n return plugin;\n }\n }\n return undefined;\n }\n}\n\n// Global registry\nexport const globalConfigPluginRegistry = new ConfigPluginRegistry();\n\n// Register default plugins\nglobalConfigPluginRegistry.register(new JsonConfigPlugin());\nglobalConfigPluginRegistry.register(new EnvConfigPlugin());\n\n// Enable optional plugins (YAML, TOML)\nexport async function enableOptionalConfigPlugins(): Promise<void> {\n // Would dynamically import and register YAML/TOML plugins\n}\n\nexport async function enableOptionalConfigPluginsAsync(): Promise<void> {\n await enableOptionalConfigPlugins();\n}\n\nexport function enableConfigPlugins(): void {\n // Synchronous version\n}\n","/**\n * Debug utilities for ArgParser\n */\n\n/**\n * Debug logger that only logs when DEBUG environment variable is set\n */\nexport const debug = {\n log: (...args: any[]) => {\n if (process.env[\"DEBUG\"] || process.env[\"ARG_PARSER_DEBUG\"]) {\n console.log(\"[ArgParser Debug]\", ...args);\n }\n },\n\n error: (...args: any[]) => {\n if (process.env[\"DEBUG\"] || process.env[\"ARG_PARSER_DEBUG\"]) {\n console.error(\"[ArgParser Debug]\", ...args);\n }\n },\n\n warn: (...args: any[]) => {\n if (process.env[\"DEBUG\"] || process.env[\"ARG_PARSER_DEBUG\"]) {\n console.warn(\"[ArgParser Debug]\", ...args);\n }\n },\n};\n","/**\n * Log path utilities for ArgParser\n *\n * Provides flexible path resolution for log files, supporting\n * relative paths (to entry point or cwd), absolute paths, and\n * configuration objects.\n */\n\nimport * as path from \"node:path\";\n\n/**\n * Log path can be a simple string or a configuration object\n */\nexport type LogPath = string | LogPathConfig;\n\n/**\n * Configuration for log path resolution\n */\nexport interface LogPathConfig {\n /** The path string */\n path: string;\n /** How to resolve the path */\n relativeTo?: \"entry\" | \"cwd\" | \"absolute\";\n /** Optional base path for 'entry' resolution */\n basePath?: string;\n}\n\n/**\n * Detect the entry point of the application\n */\nexport function detectEntryPoint(): string {\n // Try to get from process.argv[1]\n if (process.argv[1]) {\n return path.resolve(process.argv[1]);\n }\n\n // Fallback to cwd\n return process.cwd();\n}\n\n/**\n * Get entry point from import.meta.url\n */\nexport function getEntryPointFromImportMeta(importMetaUrl: string): string {\n try {\n const url = new URL(importMetaUrl);\n return url.pathname;\n } catch {\n return process.cwd();\n }\n}\n\n/**\n * Resolve a log path to an absolute path\n */\nexport function resolveLogPath(logPath: LogPath): string {\n if (typeof logPath === \"string\") {\n // Handle explicit prefixes\n if (logPath.startsWith(\"cwd:\")) {\n return path.resolve(process.cwd(), logPath.slice(4));\n }\n\n if (logPath.startsWith(\"entry:\")) {\n const entryPoint = detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, logPath.slice(6));\n }\n\n if (path.isAbsolute(logPath)) {\n return logPath;\n }\n\n // Default: relative to entry point\n const entryPoint = detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, logPath);\n }\n\n // Handle LogPathConfig\n const { path: pathStr, relativeTo = \"entry\", basePath } = logPath;\n\n if (relativeTo === \"absolute\") {\n return pathStr;\n }\n\n if (relativeTo === \"cwd\") {\n return path.resolve(process.cwd(), pathStr);\n }\n\n // relativeTo === 'entry'\n const entryPoint = basePath || detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, pathStr);\n}\n\n/**\n * Create a path relative to the entry point\n */\nexport function entryRelative(subPath: string): string {\n const entryPoint = detectEntryPoint();\n const entryDir = path.dirname(entryPoint);\n return path.resolve(entryDir, subPath);\n}\n\n/**\n * Create a path relative to the current working directory\n */\nexport function cwdRelative(subPath: string): string {\n return path.resolve(process.cwd(), subPath);\n}\n\n/**\n * Create an absolute path\n */\nexport function absolutePath(pathStr: string): string {\n return path.resolve(pathStr);\n}\n\n/**\n * Legacy cwd-relative path (for backward compatibility)\n */\nexport function legacyCwdPath(subPath: string): string {\n return cwdRelative(subPath);\n}\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
* await parser.parse();
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
|
-
export { ArgParser, ArgParserError } from
|
|
21
|
-
export type { IArgParserParams, IParseOptions } from
|
|
22
|
-
export { FlagManager, type FlagManagerOptions, type FlagOptionCollision } from
|
|
23
|
-
export { PromptManager, type PromptManagerOptions, type PromptResult } from
|
|
24
|
-
export { type IArgParserPlugin, type IPluginMetadata, PluginRegistry, globalPluginRegistry, expose, type PluginMethods, } from
|
|
25
|
-
export { zodFlagSchema, zodDxtOptionsSchema, FlagInheritance, type TFlagInheritance, type IFlagCore, type IFlag, type IDxtOptions, type ProcessedFlagCore, type ProcessedFlag, type TParsedArgsTypeFromFlagDef, type FlagsArray, type ResolveType, type ExtractFlagType, type TParsedArgs, type IHandlerContext, type MainHandler, type ISubCommand, type ArgParserInstance, type DynamicRegisterContext, type DynamicRegisterFn, getJsonSchemaTypeFromFlag, OutputSchemaPatterns, type OutputSchemaPatternName, type OutputSchemaConfig, createOutputSchema, type ArgParserOptions, type ArgParserBehaviorOptions, type ISystemArgs, type PromptType, type PromptFieldConfig, type PromptWhen, type IPromptableFlag, type IInteractiveSubCommand, type ParseResult, } from
|
|
26
|
-
export { type IConfigPlugin, ConfigPlugin, JsonConfigPlugin, EnvConfigPlugin, ConfigPluginRegistry, globalConfigPluginRegistry, enableOptionalConfigPlugins, enableOptionalConfigPluginsAsync, enableConfigPlugins, } from
|
|
27
|
-
export { debug } from
|
|
28
|
-
export { resolveLogPath, detectEntryPoint, getEntryPointFromImportMeta, entryRelative, cwdRelative, absolutePath, legacyCwdPath, type LogPath, type LogPathConfig, } from
|
|
29
|
-
export { default as SimpleChalk } from
|
|
20
|
+
export { ArgParser, ArgParserError } from "./core/ArgParser";
|
|
21
|
+
export type { IArgParserParams, IParseOptions } from "./core/ArgParser";
|
|
22
|
+
export { FlagManager, type FlagManagerOptions, type FlagOptionCollision } from "./core/FlagManager";
|
|
23
|
+
export { PromptManager, type PromptManagerOptions, type PromptResult } from "./core/PromptManager";
|
|
24
|
+
export { type IArgParserPlugin, type IPluginMetadata, PluginRegistry, globalPluginRegistry, expose, type PluginMethods, } from "./plugin/types";
|
|
25
|
+
export { zodFlagSchema, zodDxtOptionsSchema, FlagInheritance, type TFlagInheritance, type IFlagCore, type IFlag, type IDxtOptions, type ProcessedFlagCore, type ProcessedFlag, type TParsedArgsTypeFromFlagDef, type FlagsArray, type ResolveType, type ExtractFlagType, type TParsedArgs, type IHandlerContext, type MainHandler, type ISubCommand, type ArgParserInstance, type DynamicRegisterContext, type DynamicRegisterFn, getJsonSchemaTypeFromFlag, OutputSchemaPatterns, type OutputSchemaPatternName, type OutputSchemaConfig, createOutputSchema, type ArgParserOptions, type ArgParserBehaviorOptions, type ISystemArgs, type PromptType, type PromptFieldConfig, type PromptWhen, type IPromptableFlag, type IInteractiveSubCommand, type ParseResult, } from "./core/types";
|
|
26
|
+
export { type IConfigPlugin, ConfigPlugin, JsonConfigPlugin, EnvConfigPlugin, ConfigPluginRegistry, globalConfigPluginRegistry, enableOptionalConfigPlugins, enableOptionalConfigPluginsAsync, enableConfigPlugins, } from "./config/plugins";
|
|
27
|
+
export { debug } from "./utils/debug-utils";
|
|
28
|
+
export { resolveLogPath, detectEntryPoint, getEntryPointFromImportMeta, entryRelative, cwdRelative, absolutePath, legacyCwdPath, type LogPath, type LogPathConfig, } from "./core/log-path-utils";
|
|
29
|
+
export { default as SimpleChalk } from "@alcyone-labs/simple-chalk";
|
|
30
30
|
//# sourceMappingURL=index.d.ts.map
|