padrone 1.2.0 → 1.4.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/{args-CKNh7Dm9.mjs → args-CVDbyyzG.mjs} +46 -22
  3. package/dist/args-CVDbyyzG.mjs.map +1 -0
  4. package/dist/codegen/index.mjs +12 -2
  5. package/dist/codegen/index.mjs.map +1 -1
  6. package/dist/completion.d.mts +1 -1
  7. package/dist/completion.mjs +2 -2
  8. package/dist/completion.mjs.map +1 -1
  9. package/dist/docs/index.d.mts +1 -1
  10. package/dist/docs/index.mjs +15 -14
  11. package/dist/docs/index.mjs.map +1 -1
  12. package/dist/{formatter-Dvx7jFXr.d.mts → formatter-ClUK5hcQ.d.mts} +4 -2
  13. package/dist/formatter-ClUK5hcQ.d.mts.map +1 -0
  14. package/dist/{help-mUIX0T0V.mjs → help-CcBe91bV.mjs} +89 -30
  15. package/dist/help-CcBe91bV.mjs.map +1 -0
  16. package/dist/index.d.mts +2 -2
  17. package/dist/index.d.mts.map +1 -1
  18. package/dist/index.mjs +50 -17
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/test.d.mts +1 -1
  21. package/dist/{types-qrtt0135.d.mts → types-DjIdJN5G.d.mts} +27 -5
  22. package/dist/types-DjIdJN5G.d.mts.map +1 -0
  23. package/package.json +1 -1
  24. package/src/args.ts +124 -28
  25. package/src/cli/doctor.ts +28 -10
  26. package/src/cli/index.ts +0 -0
  27. package/src/codegen/generators/command-file.ts +16 -3
  28. package/src/command-utils.ts +33 -2
  29. package/src/completion.ts +1 -1
  30. package/src/create.ts +22 -12
  31. package/src/docs/index.ts +16 -16
  32. package/src/formatter.ts +65 -27
  33. package/src/help.ts +10 -4
  34. package/src/parse.ts +22 -6
  35. package/src/type-utils.ts +2 -2
  36. package/dist/args-CKNh7Dm9.mjs.map +0 -1
  37. package/dist/formatter-Dvx7jFXr.d.mts.map +0 -1
  38. package/dist/help-mUIX0T0V.mjs.map +0 -1
  39. package/dist/types-qrtt0135.d.mts.map +0 -1
package/dist/test.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { b as PadroneRuntime, n as AnyPadroneCommand } from "./types-qrtt0135.mjs";
1
+ import { b as PadroneRuntime, n as AnyPadroneCommand } from "./types-DjIdJN5G.mjs";
2
2
 
3
3
  //#region src/test.d.ts
4
4
  /**
@@ -1,16 +1,22 @@
1
- import { n as HelpFormat, t as HelpDetail } from "./formatter-Dvx7jFXr.mjs";
1
+ import { n as HelpFormat, t as HelpDetail } from "./formatter-ClUK5hcQ.mjs";
2
2
  import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
3
3
  import { Tool } from "ai";
4
4
 
5
5
  //#region src/args.d.ts
6
+ type Letter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
7
+ /** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
8
+ type SingleChar = Letter | Uppercase<Letter>;
6
9
  interface PadroneFieldMeta {
7
10
  description?: string;
11
+ /** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
12
+ flags?: SingleChar[] | SingleChar;
13
+ /** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
8
14
  alias?: string[] | string;
9
15
  deprecated?: boolean | string;
10
16
  hidden?: boolean;
11
17
  examples?: unknown[];
12
18
  }
13
- type PositionalArgs<TObj> = TObj extends Record<string, any> ? { [K in keyof TObj]: TObj[K] extends Array<any> ? `...${K & string}` : K & string }[keyof TObj] : string;
19
+ type PositionalArgs<TObj> = TObj extends Record<string, any> ? { [K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string }[keyof TObj] : string;
14
20
  /**
15
21
  * Meta configuration for arguments, including positional arguments.
16
22
  * The `positional` array defines which arguments are positional and their order.
@@ -46,6 +52,22 @@ interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
46
52
  * Per-argument metadata.
47
53
  */
48
54
  fields?: { [K in keyof TObj]?: PadroneFieldMeta };
55
+ /**
56
+ * Automatically generate kebab-case aliases for camelCase option names.
57
+ * For example, `dryRun` automatically gets `--dry-run` as an alias.
58
+ * Defaults to `true`. Set to `false` to disable.
59
+ *
60
+ * @default true
61
+ * @example
62
+ * ```ts
63
+ * // Auto-aliases enabled (default): --dry-run → dryRun
64
+ * .arguments(z.object({ dryRun: z.boolean() }))
65
+ *
66
+ * // Disable auto-aliases
67
+ * .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
68
+ * ```
69
+ */
70
+ autoAlias?: boolean;
49
71
  /**
50
72
  * Read from stdin and inject the data into the specified argument field.
51
73
  * Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
@@ -240,11 +262,11 @@ type OrAsyncMeta<TExisting extends boolean, TMeta> = TExisting extends true ? tr
240
262
  /**
241
263
  * Conditionally wraps a type in Promise based on the TAsync flag.
242
264
  * - `true` → `Promise<T>`
243
- * - `false` → `T`
265
+ * - `false` → `T & PromiseLike<T>` (thenable: supports `.then()` and `await`)
244
266
  * - `boolean` (union of true|false) → `Promise<T>` (safe default when async-ness is uncertain)
245
267
  * - `any` → `T` (for generic/any typed commands like AnyPadroneCommand)
246
268
  */
247
- type MaybePromise<T, TAsync> = IsAny<TAsync> extends true ? T : true extends TAsync ? Promise<T> : T;
269
+ type MaybePromise<T, TAsync> = IsAny<TAsync> extends true ? T : true extends TAsync ? Promise<T> : T & PromiseLike<T>;
248
270
  type SplitString<TName extends string, TSplitBy extends string = ' '> = TName extends `${infer FirstPart}${TSplitBy}${infer RestParts}` ? [FirstPart, ...SplitString<RestParts, TSplitBy>] : [TName];
249
271
  type JoinString<TParts extends string[], TJoinBy extends string = ' '> = TParts extends [infer FirstPart extends string, ...infer RestParts extends string[]] ? RestParts extends [] ? FirstPart : `${FirstPart}${TJoinBy}${JoinString<RestParts, TJoinBy>}` : TParts extends [] ? '' : TParts[number];
250
272
  type SplitLastSpace<S extends string> = SplitString<S> extends [...infer Init extends string[], infer Last extends string] ? Init extends [] ? [S, never] : [JoinString<Init>, Last] : [S, never];
@@ -1034,4 +1056,4 @@ type PadronePlugin = {
1034
1056
  };
1035
1057
  //#endregion
1036
1058
  export { PossibleCommands as _, PadroneActionContext as a, PadroneRuntime as b, PadroneCommandResult as c, PadroneProgram as d, PadroneSchema as f, PickCommandByName as g, UpdateCheckConfig as h, AsyncPadroneSchema as i, PadroneParseResult as l, WrapResult as m, AnyPadroneCommand as n, PadroneBuilder as o, WrapConfig as p, AnyPadroneProgram as r, PadroneCommand as s, AnyPadroneBuilder as t, PadronePlugin as u, InteractiveMode as v, REPL_SIGINT as x, InteractivePromptConfig as y };
1037
- //# sourceMappingURL=types-qrtt0135.d.mts.map
1059
+ //# sourceMappingURL=types-DjIdJN5G.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-DjIdJN5G.d.mts","names":[],"sources":["../src/args.ts","../src/help.ts","../src/runtime.ts","../src/type-utils.ts","../src/update-check.ts","../src/wrap.ts","../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "padrone",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Create type-safe, interactive CLI apps with Zod schemas",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/args.ts CHANGED
@@ -1,7 +1,41 @@
1
1
  import type { StandardJSONSchemaV1 } from '@standard-schema/spec';
2
2
 
3
+ type Letter =
4
+ | 'a'
5
+ | 'b'
6
+ | 'c'
7
+ | 'd'
8
+ | 'e'
9
+ | 'f'
10
+ | 'g'
11
+ | 'h'
12
+ | 'i'
13
+ | 'j'
14
+ | 'k'
15
+ | 'l'
16
+ | 'm'
17
+ | 'n'
18
+ | 'o'
19
+ | 'p'
20
+ | 'q'
21
+ | 'r'
22
+ | 's'
23
+ | 't'
24
+ | 'u'
25
+ | 'v'
26
+ | 'w'
27
+ | 'x'
28
+ | 'y'
29
+ | 'z';
30
+
31
+ /** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
32
+ export type SingleChar = Letter | Uppercase<Letter>;
33
+
3
34
  export interface PadroneFieldMeta {
4
35
  description?: string;
36
+ /** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
37
+ flags?: SingleChar[] | SingleChar;
38
+ /** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
5
39
  alias?: string[] | string;
6
40
  deprecated?: boolean | string;
7
41
  hidden?: boolean;
@@ -11,7 +45,7 @@ export interface PadroneFieldMeta {
11
45
  type PositionalArgs<TObj> =
12
46
  TObj extends Record<string, any>
13
47
  ? {
14
- [K in keyof TObj]: TObj[K] extends Array<any> ? `...${K & string}` : K & string;
48
+ [K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string;
15
49
  }[keyof TObj]
16
50
  : string;
17
51
 
@@ -54,6 +88,22 @@ export interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
54
88
  * Per-argument metadata.
55
89
  */
56
90
  fields?: { [K in keyof TObj]?: PadroneFieldMeta };
91
+ /**
92
+ * Automatically generate kebab-case aliases for camelCase option names.
93
+ * For example, `dryRun` automatically gets `--dry-run` as an alias.
94
+ * Defaults to `true`. Set to `false` to disable.
95
+ *
96
+ * @default true
97
+ * @example
98
+ * ```ts
99
+ * // Auto-aliases enabled (default): --dry-run → dryRun
100
+ * .arguments(z.object({ dryRun: z.boolean() }))
101
+ *
102
+ * // Disable auto-aliases
103
+ * .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
104
+ * ```
105
+ */
106
+ autoAlias?: boolean;
57
107
  /**
58
108
  * Read from stdin and inject the data into the specified argument field.
59
109
  * Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
@@ -110,6 +160,15 @@ export interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
110
160
  optionalInteractive?: true | (keyof TObj & string)[];
111
161
  }
112
162
 
163
+ /**
164
+ * Convert a camelCase string to kebab-case.
165
+ * Returns null if the string has no uppercase letters (no conversion needed).
166
+ */
167
+ export function camelToKebab(str: string): string | null {
168
+ if (!/[A-Z]/.test(str)) return null;
169
+ return str.replace(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`);
170
+ }
171
+
113
172
  /**
114
173
  * Normalizes stdin config into its explicit form.
115
174
  */
@@ -133,17 +192,32 @@ export function parsePositionalConfig(positional: string[]): { name: string; var
133
192
  * Result type for extractSchemaMetadata function.
134
193
  */
135
194
  interface SchemaMetadataResult {
195
+ /** Single-char flags: maps flag char → full arg name (e.g. `{ v: 'verbose' }`) */
196
+ flags: Record<string, string>;
197
+ /** Multi-char aliases: maps alias → full arg name (e.g. `{ 'dry-run': 'dryRun' }`) */
136
198
  aliases: Record<string, string>;
137
199
  }
138
200
 
201
+ function addEntries(target: Record<string, string>, key: string, items: string | string[], filter?: (item: string) => boolean) {
202
+ const list = typeof items === 'string' ? [items] : items;
203
+ for (const item of list) {
204
+ if (typeof item === 'string' && item && item !== key && !(item in target) && (!filter || filter(item))) {
205
+ target[item] = key;
206
+ }
207
+ }
208
+ }
209
+
139
210
  /**
140
211
  * Extract all arg metadata from schema and meta in a single pass.
141
- * This consolidates aliases, env bindings, and config keys extraction.
212
+ * Returns flags (single-char, stackable) and aliases (multi-char, long names) separately.
213
+ * When `autoAlias` is true (default), camelCase property names automatically get kebab-case aliases.
142
214
  */
143
215
  export function extractSchemaMetadata(
144
216
  schema: StandardJSONSchemaV1,
145
217
  meta?: Record<string, PadroneFieldMeta | undefined>,
218
+ autoAlias?: boolean,
146
219
  ): SchemaMetadataResult {
220
+ const flags: Record<string, string> = {};
147
221
  const aliases: Record<string, string> = {};
148
222
 
149
223
  // Extract from meta object
@@ -151,14 +225,11 @@ export function extractSchemaMetadata(
151
225
  for (const [key, value] of Object.entries(meta)) {
152
226
  if (!value) continue;
153
227
 
154
- // Extract aliases
228
+ if (value.flags) {
229
+ addEntries(flags, key, value.flags, (item) => item.length === 1);
230
+ }
155
231
  if (value.alias) {
156
- const list = typeof value.alias === 'string' ? [value.alias] : value.alias;
157
- for (const aliasKey of list) {
158
- if (typeof aliasKey === 'string' && aliasKey && aliasKey !== key) {
159
- aliases[aliasKey] = key;
160
- }
161
- }
232
+ addEntries(aliases, key, value.alias, (item) => item.length > 1);
162
233
  }
163
234
  }
164
235
  }
@@ -170,16 +241,26 @@ export function extractSchemaMetadata(
170
241
  for (const [propertyName, propertySchema] of Object.entries(jsonSchema.properties as Record<string, any>)) {
171
242
  if (!propertySchema) continue;
172
243
 
173
- // Extract aliases from schema
244
+ // Extract flags from schema `.meta({ flags: ... })`
245
+ const propFlags = propertySchema.flags;
246
+ if (propFlags) {
247
+ addEntries(flags, propertyName, propFlags, (item) => item.length === 1);
248
+ }
249
+
250
+ // Extract aliases from schema `.meta({ alias: ... })`
174
251
  const propAlias = propertySchema.alias;
175
252
  if (propAlias) {
176
253
  const list = typeof propAlias === 'string' ? [propAlias] : propAlias;
177
254
  if (Array.isArray(list)) {
178
- for (const aliasKey of list) {
179
- if (typeof aliasKey === 'string' && aliasKey && aliasKey !== propertyName && !(aliasKey in aliases)) {
180
- aliases[aliasKey] = propertyName;
181
- }
182
- }
255
+ addEntries(aliases, propertyName, list, (item) => item.length > 1);
256
+ }
257
+ }
258
+
259
+ // Auto-generate kebab-case alias for camelCase property names
260
+ if (autoAlias !== false) {
261
+ const kebab = camelToKebab(propertyName);
262
+ if (kebab && !(kebab in aliases)) {
263
+ aliases[kebab] = propertyName;
183
264
  }
184
265
  }
185
266
  }
@@ -188,18 +269,18 @@ export function extractSchemaMetadata(
188
269
  // Ignore errors from JSON schema generation
189
270
  }
190
271
 
191
- return { aliases };
272
+ return { flags, aliases };
192
273
  }
193
274
 
194
- function preprocessAliases(data: Record<string, unknown>, aliases: Record<string, string>): Record<string, unknown> {
275
+ function preprocessMappings(data: Record<string, unknown>, mappings: Record<string, string>): Record<string, unknown> {
195
276
  const result = { ...data };
196
277
 
197
- for (const [aliasKey, fullArgName] of Object.entries(aliases)) {
198
- if (aliasKey in data && aliasKey !== fullArgName) {
199
- const aliasValue = data[aliasKey];
278
+ for (const [mappedKey, fullArgName] of Object.entries(mappings)) {
279
+ if (mappedKey in data && mappedKey !== fullArgName) {
280
+ const mappedValue = data[mappedKey];
200
281
  // Prefer full arg name if it exists
201
- if (!(fullArgName in result)) result[fullArgName] = aliasValue;
202
- delete result[aliasKey];
282
+ if (!(fullArgName in result)) result[fullArgName] = mappedValue;
283
+ delete result[mappedKey];
203
284
  }
204
285
  }
205
286
 
@@ -207,6 +288,7 @@ function preprocessAliases(data: Record<string, unknown>, aliases: Record<string
207
288
  }
208
289
 
209
290
  interface ParseArgsContext {
291
+ flags?: Record<string, string>;
210
292
  aliases?: Record<string, string>;
211
293
  stdinData?: Record<string, unknown>;
212
294
  envData?: Record<string, unknown>;
@@ -238,9 +320,12 @@ function applyValues(data: Record<string, unknown>, values: Record<string, unkno
238
320
  export function preprocessArgs(data: Record<string, unknown>, ctx: ParseArgsContext): Record<string, unknown> {
239
321
  let result = { ...data };
240
322
 
241
- // 1. Apply aliases first
323
+ // 1. Apply flags and aliases first
324
+ if (ctx.flags && Object.keys(ctx.flags).length > 0) {
325
+ result = preprocessMappings(result, ctx.flags);
326
+ }
242
327
  if (ctx.aliases && Object.keys(ctx.aliases).length > 0) {
243
- result = preprocessAliases(result, ctx.aliases);
328
+ result = preprocessMappings(result, ctx.aliases);
244
329
  }
245
330
 
246
331
  // 2. Apply stdin data (higher precedence than env)
@@ -297,10 +382,12 @@ export function coerceArgs(data: Record<string, unknown>, schema: StandardJSONSc
297
382
  if (value === 'true' || value === '1') result[key] = true;
298
383
  else if (value === 'false' || value === '0') result[key] = false;
299
384
  }
300
- } else if (targetType === 'array' && Array.isArray(value)) {
385
+ } else if (targetType === 'array') {
386
+ // Coerce single items to array
387
+ const arr = Array.isArray(value) ? value : [value];
301
388
  const itemType = prop.items?.type as string | undefined;
302
389
  if (itemType === 'number' || itemType === 'integer') {
303
- result[key] = value.map((v) => {
390
+ result[key] = arr.map((v) => {
304
391
  if (typeof v === 'string') {
305
392
  const num = Number(v);
306
393
  return Number.isNaN(num) ? v : num;
@@ -308,13 +395,15 @@ export function coerceArgs(data: Record<string, unknown>, schema: StandardJSONSc
308
395
  return v;
309
396
  });
310
397
  } else if (itemType === 'boolean') {
311
- result[key] = value.map((v) => {
398
+ result[key] = arr.map((v) => {
312
399
  if (typeof v === 'string') {
313
400
  if (v === 'true' || v === '1') return true;
314
401
  if (v === 'false' || v === '0') return false;
315
402
  }
316
403
  return v;
317
404
  });
405
+ } else if (!Array.isArray(value)) {
406
+ result[key] = arr;
318
407
  }
319
408
  }
320
409
  }
@@ -333,6 +422,7 @@ const frameworkReservedKeys = new Set(['config', 'c']);
333
422
  export function detectUnknownArgs(
334
423
  data: Record<string, unknown>,
335
424
  schema: StandardJSONSchemaV1,
425
+ flags: Record<string, string>,
336
426
  aliases: Record<string, string>,
337
427
  suggestFn: (input: string, candidates: string[]) => string,
338
428
  ): { key: string; suggestion: string }[] {
@@ -350,7 +440,13 @@ export function detectUnknownArgs(
350
440
 
351
441
  if (isLoose) return [];
352
442
 
353
- const knownKeys = new Set<string>([...Object.keys(properties), ...Object.keys(aliases), ...Object.values(aliases)]);
443
+ const knownKeys = new Set<string>([
444
+ ...Object.keys(properties),
445
+ ...Object.keys(flags),
446
+ ...Object.values(flags),
447
+ ...Object.keys(aliases),
448
+ ...Object.values(aliases),
449
+ ]);
354
450
  const propertyNames = Object.keys(properties);
355
451
  const unknowns: { key: string; suggestion: string }[] = [];
356
452
 
package/src/cli/doctor.ts CHANGED
@@ -160,18 +160,36 @@ function checkShadowedOptionNames(commands: AnyPadroneCommand[], diagnostics: Di
160
160
  }
161
161
  }
162
162
 
163
- // Also check field aliases from meta
163
+ // Also check field flags and aliases from meta
164
164
  if (cmd.meta?.fields) {
165
165
  for (const [fieldName, fieldMeta] of Object.entries(cmd.meta.fields)) {
166
- if (!fieldMeta?.alias) continue;
167
- const aliases = typeof fieldMeta.alias === 'string' ? [fieldMeta.alias] : fieldMeta.alias;
168
- for (const alias of aliases) {
169
- if (builtins.has(alias)) {
170
- diagnostics.push({
171
- severity: 'warning',
172
- command: commandDisplayName(cmd),
173
- message: `Alias "${alias}" on field "${fieldName}" shadows the built-in --${alias} flag.`,
174
- });
166
+ if (!fieldMeta) continue;
167
+
168
+ // Check flags (single-char)
169
+ if (fieldMeta.flags) {
170
+ const flagList = typeof fieldMeta.flags === 'string' ? [fieldMeta.flags] : fieldMeta.flags;
171
+ for (const flag of flagList) {
172
+ if (builtins.has(flag)) {
173
+ diagnostics.push({
174
+ severity: 'warning',
175
+ command: commandDisplayName(cmd),
176
+ message: `Flag "${flag}" on field "${fieldName}" shadows the built-in --${flag} flag.`,
177
+ });
178
+ }
179
+ }
180
+ }
181
+
182
+ // Check aliases (multi-char)
183
+ if (fieldMeta.alias) {
184
+ const aliasList = typeof fieldMeta.alias === 'string' ? [fieldMeta.alias] : fieldMeta.alias;
185
+ for (const alias of aliasList) {
186
+ if (builtins.has(alias)) {
187
+ diagnostics.push({
188
+ severity: 'warning',
189
+ command: commandDisplayName(cmd),
190
+ message: `Alias "${alias}" on field "${fieldName}" shadows the built-in --${alias} flag.`,
191
+ });
192
+ }
175
193
  }
176
194
  }
177
195
  }
package/src/cli/index.ts CHANGED
File without changes
@@ -173,10 +173,23 @@ function buildFieldsMap(fields: FieldMeta[]): string | null {
173
173
  const entries: string[] = [];
174
174
  for (const field of fields) {
175
175
  if (field.aliases && field.aliases.length > 0) {
176
- const alias =
177
- field.aliases.length === 1 ? JSON.stringify(field.aliases[0]) : `[${field.aliases.map((a) => JSON.stringify(a)).join(', ')}]`;
176
+ // Split into flags (single-char) and aliases (multi-char)
177
+ const singleChar = field.aliases.filter((a) => a.replace(/^-+/, '').length === 1).map((a) => a.replace(/^-+/, ''));
178
+ const multiChar = field.aliases.filter((a) => a.replace(/^-+/, '').length > 1).map((a) => a.replace(/^-+/, ''));
179
+
178
180
  const key = /^[a-zA-Z_$][\w$]*$/.test(field.name) ? field.name : JSON.stringify(field.name);
179
- entries.push(`${key}: { alias: ${alias} }`);
181
+ const parts: string[] = [];
182
+ if (singleChar.length > 0) {
183
+ const flags = singleChar.length === 1 ? JSON.stringify(singleChar[0]) : `[${singleChar.map((a) => JSON.stringify(a)).join(', ')}]`;
184
+ parts.push(`flags: ${flags}`);
185
+ }
186
+ if (multiChar.length > 0) {
187
+ const alias = multiChar.length === 1 ? JSON.stringify(multiChar[0]) : `[${multiChar.map((a) => JSON.stringify(a)).join(', ')}]`;
188
+ parts.push(`alias: ${alias}`);
189
+ }
190
+ if (parts.length > 0) {
191
+ entries.push(`${key}: { ${parts.join(', ')} }`);
192
+ }
180
193
  }
181
194
  }
182
195
  if (entries.length === 0) return null;
@@ -103,6 +103,34 @@ export function thenMaybe<T, U>(value: T | Promise<T>, fn: (v: T) => U | Promise
103
103
  return fn(value);
104
104
  }
105
105
 
106
+ /**
107
+ * Makes a sync result object thenable by adding a `.then()` method.
108
+ * If the value is already a Promise, returns it as-is.
109
+ * This allows users to write `await program.cli()` or `program.cli().then(...)` regardless of sync/async.
110
+ *
111
+ * The `.then()` resolves with a plain copy (without `.then`) to avoid infinite
112
+ * recursive unwrapping by the Promise resolution algorithm.
113
+ */
114
+ export function makeThenable<T>(value: T | Promise<T>): T & PromiseLike<T> {
115
+ if (value instanceof Promise) return value as any;
116
+ if (value !== null && typeof value === 'object' && !('then' in value)) {
117
+ // biome-ignore lint/suspicious/noThenProperty: intentional thenable shim for sync results
118
+ (value as any).then = (onfulfilled?: (v: T) => any, onrejected?: (reason: any) => any) => {
119
+ try {
120
+ // Resolve with a plain copy to prevent infinite thenable unwrapping
121
+ const plain = { ...value } as any;
122
+ delete plain.then;
123
+ const result = onfulfilled ? onfulfilled(plain) : plain;
124
+ return Promise.resolve(result);
125
+ } catch (err) {
126
+ if (onrejected) return Promise.resolve(onrejected(err));
127
+ return Promise.reject(err);
128
+ }
129
+ };
130
+ }
131
+ return value as any;
132
+ }
133
+
106
134
  export function isIterator(value: unknown): value is Iterator<unknown> {
107
135
  return typeof value === 'object' && value !== null && Symbol.iterator in value && typeof (value as any)[Symbol.iterator] === 'function';
108
136
  }
@@ -364,14 +392,17 @@ export function buildReplCompleter(
364
392
  if (targetCommand.argsSchema) {
365
393
  try {
366
394
  const argsMeta = targetCommand.meta?.fields;
367
- const { aliases } = extractSchemaMetadata(targetCommand.argsSchema, argsMeta);
395
+ const { flags, aliases } = extractSchemaMetadata(targetCommand.argsSchema, argsMeta, targetCommand.meta?.autoAlias);
368
396
  const jsonSchema = targetCommand.argsSchema['~standard'].jsonSchema.input({ target: 'draft-2020-12' }) as Record<string, any>;
369
397
  if (jsonSchema.type === 'object' && jsonSchema.properties) {
370
398
  for (const key of Object.keys(jsonSchema.properties)) {
371
399
  options.push(`--${key}`);
372
400
  }
401
+ for (const flag of Object.keys(flags)) {
402
+ options.push(`-${flag}`);
403
+ }
373
404
  for (const alias of Object.keys(aliases)) {
374
- options.push(`-${alias}`);
405
+ options.push(`--${alias}`);
375
406
  }
376
407
  }
377
408
  } catch {
package/src/completion.ts CHANGED
@@ -32,7 +32,7 @@ function extractArguments(cmd: AnyPadroneCommand): { name: string; alias?: strin
32
32
 
33
33
  try {
34
34
  const argsMeta = cmd.meta?.fields;
35
- const { aliases } = extractSchemaMetadata(cmd.argsSchema, argsMeta);
35
+ const { aliases } = extractSchemaMetadata(cmd.argsSchema, argsMeta, cmd.meta?.autoAlias);
36
36
 
37
37
  // Reverse aliases map (alias -> arg name)
38
38
  const aliasToArgument: Record<string, string> = {};
package/src/create.ts CHANGED
@@ -7,6 +7,7 @@ import {
7
7
  getCommandRuntime,
8
8
  hasInteractiveConfig,
9
9
  isAsyncBranded,
10
+ makeThenable,
10
11
  mergeCommands,
11
12
  noop,
12
13
  outputValue,
@@ -126,8 +127,10 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
126
127
 
127
128
  // Extract argument metadata from the nested arguments object in meta
128
129
  const argsMeta = curCommand.meta?.fields;
129
- const schemaMetadata = curCommand.argsSchema ? extractSchemaMetadata(curCommand.argsSchema, argsMeta) : { aliases: {} };
130
- const { aliases } = schemaMetadata;
130
+ const schemaMetadata = curCommand.argsSchema
131
+ ? extractSchemaMetadata(curCommand.argsSchema, argsMeta, curCommand.meta?.autoAlias)
132
+ : { flags: {}, aliases: {} };
133
+ const { flags, aliases } = schemaMetadata;
131
134
 
132
135
  // Get array arguments from schema (arrays are always variadic)
133
136
  const arrayArguments = new Set<string>();
@@ -148,9 +151,15 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
148
151
  const rawArgs: Record<string, unknown> = {};
149
152
 
150
153
  for (const arg of argParts) {
151
- // For aliases, resolve to the full key name (aliases map single char to full key name)
152
- // arg.key is now a string[] - for aliases it's always single element like ['v']
153
- const key: string[] = arg.type === 'alias' && arg.key.length === 1 && aliases[arg.key[0]!] ? [aliases[arg.key[0]!]!] : arg.key;
154
+ // Resolve flags (single-char, from alias parts: -v) and aliases (multi-char, from named parts: --dry-run)
155
+ let key: string[];
156
+ if (arg.type === 'alias' && arg.key.length === 1 && flags[arg.key[0]!]) {
157
+ key = [flags[arg.key[0]!]!];
158
+ } else if (arg.type === 'named' && arg.key.length === 1 && aliases[arg.key[0]!]) {
159
+ key = [aliases[arg.key[0]!]!];
160
+ } else {
161
+ key = arg.key;
162
+ }
154
163
 
155
164
  const rootKey = key[0]!;
156
165
 
@@ -202,7 +211,8 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
202
211
  ): Record<string, unknown> => {
203
212
  // Apply preprocessing (stdin, env, and config bindings)
204
213
  let preprocessedArgs = preprocessArgs(rawArgs, {
205
- aliases: {}, // Already resolved aliases in parseCommand
214
+ flags: {}, // Already resolved in parseCommand
215
+ aliases: {}, // Already resolved in parseCommand
206
216
  stdinData: context?.stdinData,
207
217
  envData: context?.envData,
208
218
  configData: context?.configData,
@@ -255,9 +265,9 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
255
265
  if (!command.argsSchema) return [];
256
266
 
257
267
  const argsMeta = command.meta?.fields;
258
- const { aliases } = extractSchemaMetadata(command.argsSchema, argsMeta);
268
+ const { flags, aliases } = extractSchemaMetadata(command.argsSchema, argsMeta, command.meta?.autoAlias);
259
269
 
260
- return detectUnknownArgs(preprocessedArgs, command.argsSchema, aliases, suggestSimilar);
270
+ return detectUnknownArgs(preprocessedArgs, command.argsSchema, flags, aliases, suggestSimilar);
261
271
  };
262
272
 
263
273
  /**
@@ -408,7 +418,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
408
418
  );
409
419
  };
410
420
 
411
- return thenMaybe(parsedOrPromise, continueAfterParse) as any;
421
+ return makeThenable(thenMaybe(parsedOrPromise, continueAfterParse)) as any;
412
422
  };
413
423
 
414
424
  const stringify: AnyPadroneProgram['stringify'] = (command = '' as any, args) => {
@@ -1128,7 +1138,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
1128
1138
  });
1129
1139
  };
1130
1140
 
1131
- return warnIfUnexpectedAsync(thenMaybe(validatedOrPromise, continueAfterValidate), command) as any;
1141
+ return thenMaybe(warnIfUnexpectedAsync(validatedOrPromise, command), continueAfterValidate) as any;
1132
1142
  };
1133
1143
 
1134
1144
  return thenMaybe(parsedOrPromise, continueAfterParse) as any;
@@ -1143,7 +1153,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
1143
1153
  };
1144
1154
 
1145
1155
  const evalCommand: AnyPadroneProgram['eval'] = (input, evalOptions) => {
1146
- return execCommand(input as string, evalOptions, 'soft');
1156
+ return makeThenable(execCommand(input as string, evalOptions, 'soft'));
1147
1157
  };
1148
1158
 
1149
1159
  /**
@@ -1229,7 +1239,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
1229
1239
  updateCheckPromise.then((show) => show?.());
1230
1240
  }
1231
1241
 
1232
- return result;
1242
+ return makeThenable(result);
1233
1243
  };
1234
1244
 
1235
1245
  const run: AnyPadroneProgram['run'] = (command, args) => {