@runa-cmd/core 0.1.0 → 0.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +125 -23
  2. package/dist/cli.d.ts +20 -4
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +392 -143
  5. package/dist/cli.js.map +1 -1
  6. package/dist/errors.d.ts +25 -0
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +72 -6
  9. package/dist/errors.js.map +1 -1
  10. package/dist/flag-name.d.ts +12 -0
  11. package/dist/flag-name.d.ts.map +1 -0
  12. package/dist/flag-name.js +19 -0
  13. package/dist/flag-name.js.map +1 -0
  14. package/dist/help.d.ts +21 -0
  15. package/dist/help.d.ts.map +1 -0
  16. package/dist/help.js +151 -0
  17. package/dist/help.js.map +1 -0
  18. package/dist/index.d.ts +2 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/internal.d.ts +10 -0
  22. package/dist/internal.d.ts.map +1 -0
  23. package/dist/internal.js +9 -0
  24. package/dist/internal.js.map +1 -0
  25. package/dist/introspect.d.ts.map +1 -1
  26. package/dist/introspect.js +10 -3
  27. package/dist/introspect.js.map +1 -1
  28. package/dist/lifecycle.d.ts.map +1 -1
  29. package/dist/lifecycle.js +5 -3
  30. package/dist/lifecycle.js.map +1 -1
  31. package/dist/parse/adapters/zod-v4.d.ts +3 -0
  32. package/dist/parse/adapters/zod-v4.d.ts.map +1 -0
  33. package/dist/parse/adapters/zod-v4.js +106 -0
  34. package/dist/parse/adapters/zod-v4.js.map +1 -0
  35. package/dist/parse/deprecated.d.ts +12 -0
  36. package/dist/parse/deprecated.d.ts.map +1 -0
  37. package/dist/parse/deprecated.js +21 -0
  38. package/dist/parse/deprecated.js.map +1 -0
  39. package/dist/parse/parseargs-bridge.d.ts +10 -0
  40. package/dist/parse/parseargs-bridge.d.ts.map +1 -1
  41. package/dist/parse/parseargs-bridge.js +20 -6
  42. package/dist/parse/parseargs-bridge.js.map +1 -1
  43. package/dist/parse/resolve.d.ts +44 -1
  44. package/dist/parse/resolve.d.ts.map +1 -1
  45. package/dist/parse/resolve.js +151 -73
  46. package/dist/parse/resolve.js.map +1 -1
  47. package/dist/parse/schema-adapter.d.ts +42 -0
  48. package/dist/parse/schema-adapter.d.ts.map +1 -0
  49. package/dist/parse/schema-adapter.js +4 -0
  50. package/dist/parse/schema-adapter.js.map +1 -0
  51. package/dist/parse/schema-walker.d.ts +3 -3
  52. package/dist/parse/schema-walker.d.ts.map +1 -1
  53. package/dist/parse/schema-walker.js +13 -104
  54. package/dist/parse/schema-walker.js.map +1 -1
  55. package/dist/parse/strict.d.ts +52 -0
  56. package/dist/parse/strict.d.ts.map +1 -0
  57. package/dist/parse/strict.js +68 -0
  58. package/dist/parse/strict.js.map +1 -0
  59. package/dist/parse/variadic.d.ts +2 -1
  60. package/dist/parse/variadic.d.ts.map +1 -1
  61. package/dist/parse/variadic.js +4 -24
  62. package/dist/parse/variadic.js.map +1 -1
  63. package/dist/plugin.d.ts +41 -1
  64. package/dist/plugin.d.ts.map +1 -1
  65. package/dist/plugin.js +189 -0
  66. package/dist/plugin.js.map +1 -1
  67. package/dist/stop.d.ts +25 -0
  68. package/dist/stop.d.ts.map +1 -0
  69. package/dist/stop.js +110 -0
  70. package/dist/stop.js.map +1 -0
  71. package/dist/suggest.d.ts +18 -0
  72. package/dist/suggest.d.ts.map +1 -0
  73. package/dist/suggest.js +56 -0
  74. package/dist/suggest.js.map +1 -0
  75. package/dist/tool-channel.d.ts +48 -0
  76. package/dist/tool-channel.d.ts.map +1 -0
  77. package/dist/tool-channel.js +46 -0
  78. package/dist/tool-channel.js.map +1 -0
  79. package/dist/types.d.ts +51 -7
  80. package/dist/types.d.ts.map +1 -1
  81. package/dist/types.js.map +1 -1
  82. package/package.json +6 -2
@@ -3,10 +3,11 @@
3
3
  *
4
4
  * Merge priority: CLI args > env vars > config file > Zod defaults.
5
5
  * Maps positionals to args by insertion order.
6
- * Pre-coerces number strings before Zod .parse().
6
+ * Pre-coerces number and boolean strings before Zod .parse().
7
7
  */
8
8
  import { ZodError, z } from 'zod';
9
9
  import { ValidationError } from '../errors.js';
10
+ import { longFlag } from '../flag-name.js';
10
11
  import { walkSchema } from './schema-walker.js';
11
12
  import { isVariadic } from './variadic.js';
12
13
  // ─── Positional Mapping ─────────────────────────────────────
@@ -59,64 +60,116 @@ function mapPositionals(positionals, argsSchemas) {
59
60
  }
60
61
  return result;
61
62
  }
63
+ /**
64
+ * Decide which tokens after `--` are operands and which stay in ctx.rest
65
+ * (ADR-0022): they fill the positionals still empty, where a variadic counts
66
+ * as one. So `lint -- -a -b` fills `files`, while `lint a.ts -- --fix` keeps
67
+ * `--fix` for ctx.rest.
68
+ */
69
+ export function distributeRest(positionals, rest, argsSchemas) {
70
+ const keys = Object.keys(argsSchemas);
71
+ const free = Math.max(0, keys.length - positionals.length);
72
+ const lastSchema = argsSchemas[keys.at(-1) ?? ''];
73
+ const fillsVariadic = free > 0 && lastSchema !== undefined && isVariadic(lastSchema);
74
+ const taken = fillsVariadic ? rest.length : free;
75
+ return {
76
+ positionals: [...positionals, ...rest.slice(0, taken)],
77
+ rest: rest.slice(taken),
78
+ };
79
+ }
62
80
  // ─── Value Resolution ───────────────────────────────────────
81
+ /**
82
+ * Pre-coerce a string to a number for z.number() fields.
83
+ * Empty/whitespace-only strings are returned UNCHANGED — Number('') === 0
84
+ * and Number(' ') === 0 would silently fabricate a value. Leaving the
85
+ * string intact lets Zod reject it as invalid_type, which flows through
86
+ * the existing humanizer to a ValidationError (exit 2).
87
+ *
88
+ * Exported for unit testing only — not part of the public API (not in index.ts).
89
+ */
90
+ export function coerceNumberValue(value) {
91
+ if (typeof value !== 'string')
92
+ return value;
93
+ if (value.trim() === '')
94
+ return value;
95
+ const num = Number(value);
96
+ return Number.isNaN(num) ? value : num;
97
+ }
98
+ /**
99
+ * Pre-coerce a string to a boolean for z.boolean() fields. Env vars are always
100
+ * strings, and `--flag=false` also reaches here as one. Anything but
101
+ * true/false/1/0 is returned UNCHANGED so Zod rejects it instead of guessing:
102
+ * `MINIFY=quizas` must not silently mean either value.
103
+ *
104
+ * Exported for unit testing only — not part of the public API (not in index.ts).
105
+ */
106
+ export function coerceBooleanValue(value) {
107
+ if (typeof value !== 'string')
108
+ return value;
109
+ const normalized = value.trim().toLowerCase();
110
+ if (normalized === 'true' || normalized === '1')
111
+ return true;
112
+ if (normalized === 'false' || normalized === '0')
113
+ return false;
114
+ return value;
115
+ }
116
+ /** The single coercion site for ALL resolution sources (CLI arg, env var, config value). */
117
+ function coerceByType(value, type) {
118
+ if (type === 'number')
119
+ return coerceNumberValue(value);
120
+ if (type === 'boolean')
121
+ return coerceBooleanValue(value);
122
+ return value;
123
+ }
124
+ function coerceField(value, field) {
125
+ if (!field?.isArray)
126
+ return coerceByType(value, field?.zodType);
127
+ if (!Array.isArray(value))
128
+ return value;
129
+ return value.map((item) => coerceByType(item, field.itemType));
130
+ }
131
+ /** An env var is one string, and a list needs a rule (ADR-0035). */
132
+ function splitEnvList(value) {
133
+ return value
134
+ .split(',')
135
+ .map((item) => item.trim())
136
+ .filter(Boolean);
137
+ }
63
138
  function resolveOptionValues(parseArgsValues, longAliasMap, optionsSchemas, optionsMeta, configValues, env, optionsMetadata) {
64
139
  const resolved = {};
65
- // Build a set of number fields for pre-coercion
66
- const numberFields = new Set();
67
- for (const meta of optionsMetadata) {
68
- if (meta.zodType === 'number') {
69
- numberFields.add(meta.name);
70
- }
71
- }
140
+ const fields = new Map(optionsMetadata.map((meta) => [meta.name, meta]));
72
141
  // First, apply long alias mappings to parseArgs values
73
142
  const normalizedValues = { ...parseArgsValues };
74
143
  for (const [alias, canonical] of Object.entries(longAliasMap)) {
75
- if (alias in normalizedValues && !(canonical in normalizedValues)) {
76
- normalizedValues[canonical] = normalizedValues[alias];
77
- delete normalizedValues[alias];
144
+ if (!(alias in normalizedValues))
145
+ continue;
146
+ const own = normalizedValues[canonical];
147
+ const viaAlias = normalizedValues[alias];
148
+ if (own === undefined)
149
+ normalizedValues[canonical] = viaAlias;
150
+ // Two names for one list: every value counts
151
+ else if (Array.isArray(own) && Array.isArray(viaAlias)) {
152
+ normalizedValues[canonical] = [...own, ...viaAlias];
78
153
  }
154
+ delete normalizedValues[alias];
79
155
  }
80
156
  for (const key of Object.keys(optionsSchemas)) {
157
+ const field = fields.get(key);
81
158
  // Priority 1: CLI arg
82
159
  if (key in normalizedValues && normalizedValues[key] !== undefined) {
83
- let value = normalizedValues[key];
84
- // Pre-coerce numbers from string
85
- if (numberFields.has(key) && typeof value === 'string') {
86
- const num = Number(value);
87
- if (!Number.isNaN(num)) {
88
- value = num;
89
- }
90
- }
91
- resolved[key] = value;
160
+ resolved[key] = coerceField(normalizedValues[key], field);
92
161
  continue;
93
162
  }
94
163
  // Priority 2: Environment variable
95
164
  const envName = optionsMeta?.[key]?.env;
96
- if (envName && envName in env && env[envName] !== undefined) {
97
- let value = env[envName];
98
- // Pre-coerce numbers from string
99
- if (numberFields.has(key) && typeof value === 'string') {
100
- const num = Number(value);
101
- if (!Number.isNaN(num)) {
102
- value = num;
103
- }
104
- }
105
- resolved[key] = value;
165
+ const envValue = envName ? env[envName] : undefined;
166
+ if (envValue !== undefined) {
167
+ resolved[key] = coerceField(field?.isArray ? splitEnvList(envValue) : envValue, field);
106
168
  continue;
107
169
  }
108
170
  // Priority 3: Config file value
109
171
  if (configValues && key in configValues && configValues[key] !== undefined) {
110
- let value = configValues[key];
111
- // Pre-coerce numbers from string (config values are usually already typed,
112
- // but defensive handling)
113
- if (numberFields.has(key) && typeof value === 'string') {
114
- const num = Number(value);
115
- if (!Number.isNaN(num)) {
116
- value = num;
117
- }
118
- }
119
- resolved[key] = value;
172
+ resolved[key] = coerceField(configValues[key], field);
120
173
  }
121
174
  // Priority 4: Omit — let Zod .default() handle it
122
175
  }
@@ -138,7 +191,7 @@ function humanizeArgIssues(issues, argsSchemas) {
138
191
  if (issue.code === 'invalid_type' && issue.message.includes('received undefined')) {
139
192
  return {
140
193
  code: 'custom',
141
- message: `Missing required argument: <${name}>${param?.description ? ` — ${param.description}` : ''}`,
194
+ message: `Missing required argument: <${name}>`,
142
195
  path: issue.path,
143
196
  };
144
197
  }
@@ -165,7 +218,7 @@ function humanizeOptionIssues(issues, optionsSchemas) {
165
218
  if (issue.code === 'invalid_type' && issue.message.includes('received undefined')) {
166
219
  return {
167
220
  code: 'custom',
168
- message: `Missing required option: --${name}${param?.description ? ` — ${param.description}` : ''}`,
221
+ message: `Missing required option: ${longFlag(name)}`,
169
222
  path: issue.path,
170
223
  };
171
224
  }
@@ -173,7 +226,7 @@ function humanizeOptionIssues(issues, optionsSchemas) {
173
226
  if (issue.code === 'invalid_value' && param?.enumValues) {
174
227
  return {
175
228
  code: 'custom',
176
- message: `Invalid value for --${name}. Expected one of: ${param.enumValues.join(', ')}`,
229
+ message: `Invalid value for ${longFlag(name)}. Expected one of: ${param.enumValues.join(', ')}`,
177
230
  path: issue.path,
178
231
  };
179
232
  }
@@ -182,7 +235,7 @@ function humanizeOptionIssues(issues, optionsSchemas) {
182
235
  const expected = issue.expected;
183
236
  return {
184
237
  code: 'custom',
185
- message: `Invalid value for --${name}: expected ${String(expected)}`,
238
+ message: `Invalid value for ${longFlag(name)}: expected ${String(expected)}`,
186
239
  path: issue.path,
187
240
  };
188
241
  }
@@ -202,39 +255,64 @@ function humanizeOptionIssues(issues, optionsSchemas) {
202
255
  */
203
256
  export function resolveValues(input) {
204
257
  const { parseArgsResult, longAliasMap = {}, schemas, meta, configValues, env = process.env, } = input;
205
- // ─── Args resolution ─────────────────────────────────
206
- let parsedArgs = {};
207
- if (schemas.args && Object.keys(schemas.args).length > 0) {
208
- const rawArgs = mapPositionals(parseArgsResult.positionals, schemas.args);
209
- // Build Zod object schema for args and validate
210
- const argsZodSchema = z.object(schemas.args);
211
- try {
212
- parsedArgs = argsZodSchema.parse(rawArgs);
213
- }
214
- catch (err) {
215
- if (err instanceof ZodError) {
216
- throw new ValidationError(humanizeArgIssues(err.issues, schemas.args));
217
- }
218
- throw err;
258
+ // Mapped even without declared args: that's what rejects extra positionals.
259
+ const argSchemas = schemas.args ?? {};
260
+ const rawArgs = mapPositionals(parseArgsResult.positionals, argSchemas);
261
+ return {
262
+ parsedArgs: validateArgs(rawArgs, argSchemas),
263
+ parsedOptions: validateOptions(parseArgsResult.values, longAliasMap, schemas.options, meta?.options, configValues, env),
264
+ };
265
+ }
266
+ /**
267
+ * Same resolution as resolveValues, from an object instead of parsed argv. Each
268
+ * key names its target, so there are no positions, tokens or aliases to read:
269
+ * arrays, objects and numbers arrive as they are, and data is never a route.
270
+ */
271
+ export function resolveToolInput(toolInput) {
272
+ const { input, schemas, meta, configValues, env = process.env, } = toolInput;
273
+ const argSchemas = schemas.args ?? {};
274
+ const optionSchemas = schemas.options ?? {};
275
+ const rawArgs = {};
276
+ const rawOptions = {};
277
+ for (const [key, value] of Object.entries(input)) {
278
+ if (Object.hasOwn(argSchemas, key))
279
+ rawArgs[key] = value;
280
+ else if (Object.hasOwn(optionSchemas, key))
281
+ rawOptions[key] = value;
282
+ else {
283
+ throw new ValidationError([{ code: 'custom', message: `Unknown input: ${key}`, path: [] }]);
219
284
  }
220
285
  }
221
- // ─── Options resolution ──────────────────────────────
222
- let parsedOptions = {};
223
- if (schemas.options && Object.keys(schemas.options).length > 0) {
224
- const optionsMetadata = walkSchema(schemas.options);
225
- const rawOptions = resolveOptionValues(parseArgsResult.values, longAliasMap, schemas.options, meta?.options, configValues, env, optionsMetadata);
226
- // Build Zod object schema for options and validate
227
- const optionsZodSchema = z.object(schemas.options);
228
- try {
229
- parsedOptions = optionsZodSchema.parse(rawOptions);
286
+ return {
287
+ parsedArgs: validateArgs(rawArgs, argSchemas),
288
+ parsedOptions: validateOptions(rawOptions, {}, schemas.options, meta?.options, configValues, env),
289
+ };
290
+ }
291
+ function validateArgs(rawArgs, argSchemas) {
292
+ if (Object.keys(argSchemas).length === 0)
293
+ return {};
294
+ try {
295
+ return z.object(argSchemas).parse(rawArgs);
296
+ }
297
+ catch (err) {
298
+ if (err instanceof ZodError) {
299
+ throw new ValidationError(humanizeArgIssues(err.issues, argSchemas));
230
300
  }
231
- catch (err) {
232
- if (err instanceof ZodError) {
233
- throw new ValidationError(humanizeOptionIssues(err.issues, schemas.options));
234
- }
235
- throw err;
301
+ throw err;
302
+ }
303
+ }
304
+ function validateOptions(values, longAliasMap, optionSchemas, optionsMeta, configValues, env) {
305
+ if (!optionSchemas || Object.keys(optionSchemas).length === 0)
306
+ return {};
307
+ const rawOptions = resolveOptionValues(values, longAliasMap, optionSchemas, optionsMeta, configValues, env, walkSchema(optionSchemas));
308
+ try {
309
+ return z.object(optionSchemas).parse(rawOptions);
310
+ }
311
+ catch (err) {
312
+ if (err instanceof ZodError) {
313
+ throw new ValidationError(humanizeOptionIssues(err.issues, optionSchemas));
236
314
  }
315
+ throw err;
237
316
  }
238
- return { parsedArgs, parsedOptions };
239
317
  }
240
318
  //# sourceMappingURL=resolve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/parse/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/parse/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @runa-cmd/core — SchemaAdapter seam
3
+ *
4
+ * Introspection-only abstraction over schema-library internals (ADR-0010).
5
+ * The adapter answers structural questions (kind, optionality, default,
6
+ * enum values, description) — it does NOT validate; `resolve.ts` keeps
7
+ * calling Zod's `.parse()` directly.
8
+ *
9
+ * The `SchemaAdapter`/`SchemaDescription` types are public (exported from
10
+ * the package barrel) to enable external experimentation, but adapter
11
+ * SELECTION stays internal: no `schemaAdapter` config option ships until
12
+ * a second implementation exists.
13
+ */
14
+ import type { ZodType } from 'zod';
15
+ import type { ParamType } from '../types.js';
16
+ export interface SchemaAdapter {
17
+ /** Adapter identity for diagnostics, e.g. 'zod-v4' */
18
+ readonly name: string;
19
+ /** Whether this adapter can introspect the given schema object */
20
+ supports(schema: unknown): boolean;
21
+ /** Full structural description: unwraps optional/default/nullable internally */
22
+ describe(schema: ZodType): SchemaDescription;
23
+ }
24
+ export interface SchemaDescription {
25
+ /** Base type kind after unwrapping (int maps to 'number'; unknown falls back to 'string') */
26
+ kind: ParamType;
27
+ /** Optional from the user's perspective: explicitly optional OR carrying a default */
28
+ isOptional: boolean;
29
+ /** Whether a `default` wrapper is present */
30
+ hasDefault: boolean;
31
+ /** The default value; undefined when hasDefault is false */
32
+ defaultValue: unknown;
33
+ /** Enum member values, of the kind itself or of its items */
34
+ enumValues?: string[];
35
+ /** Kind of each element, present only when kind is 'array' */
36
+ itemKind?: ParamType;
37
+ /** Schema description, preferring the outermost layer that has one */
38
+ description?: string;
39
+ }
40
+ /** The adapter used by schema-walker/variadic. Internal — not exported from the barrel. */
41
+ export declare const defaultAdapter: SchemaAdapter;
42
+ //# sourceMappingURL=schema-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-adapter.d.ts","sourceRoot":"","sources":["../../src/parse/schema-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IACjC,6FAA6F;IAC7F,IAAI,EAAE,SAAS,CAAC;IAChB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,aAA4B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { zodV4Adapter } from './adapters/zod-v4.js';
2
+ /** The adapter used by schema-walker/variadic. Internal — not exported from the barrel. */
3
+ export const defaultAdapter = zodV4Adapter;
4
+ //# sourceMappingURL=schema-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-adapter.js","sourceRoot":"","sources":["../../src/parse/schema-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA4BpD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAkB,YAAY,CAAC"}
@@ -2,9 +2,9 @@
2
2
  * @runa-cmd/core — Zod Schema Walker
3
3
  *
4
4
  * Walks Zod schemas to extract parameter metadata (type, default, required,
5
- * description, enum values, variadic). This is the ONLY module that accesses
6
- * Zod v4 internal `._zod.def` — if Zod changes internals, only this file
7
- * needs updating.
5
+ * description, enum values, variadic). Introspection is delegated to the
6
+ * SchemaAdapter seam (see `schema-adapter.ts`); this module only maps
7
+ * `SchemaDescription` onto the `ParamMetadata` shape.
8
8
  */
9
9
  import type { ZodType } from 'zod';
10
10
  import type { ParamMetadata } from '../types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"schema-walker.d.ts","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,aAAa,CAAC;AA6I5D;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,EAAE,CAmB5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,aAAa,CAa7E"}
1
+ {"version":3,"file":"schema-walker.d.ts","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoBjD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,EAAE,CAE5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,aAAa,CAE7E"}
@@ -1,121 +1,30 @@
1
- // ─── Helper: access ._zod.def safely ───────────────────────
2
- function getZodDef(schema) {
3
- const s = schema;
4
- if (!s._zod?.def) {
5
- throw new Error('Cannot introspect Zod schema: ._zod.def is missing. Ensure you are using Zod v4.');
6
- }
7
- return s._zod.def;
8
- }
9
- function getDescription(schema) {
10
- const s = schema;
11
- return s.description;
12
- }
13
- function unwrapSchema(schema) {
14
- let isOptional = false;
15
- let defaultValue;
16
- let hasDefault = false;
17
- let description = getDescription(schema);
18
- let current = schema;
19
- // Iteratively unwrap layers
20
- const maxDepth = 10; // safety limit
21
- for (let i = 0; i < maxDepth; i++) {
22
- const def = getZodDef(current);
23
- if (def.type === 'optional') {
24
- isOptional = true;
25
- current = def.innerType;
26
- if (!description)
27
- description = getDescription(current);
28
- continue;
29
- }
30
- if (def.type === 'default') {
31
- isOptional = true; // defaults make the field optional from the user's perspective
32
- hasDefault = true;
33
- defaultValue = def.defaultValue;
34
- current = def.innerType;
35
- if (!description)
36
- description = getDescription(current);
37
- continue;
38
- }
39
- if (def.type === 'nullable') {
40
- current = def.innerType;
41
- if (!description)
42
- description = getDescription(current);
43
- continue;
44
- }
45
- // Base type reached
46
- break;
47
- }
48
- // If we found a default via the wrapper, keep it.
49
- // If not, defaultValue stays undefined.
1
+ import { defaultAdapter } from './schema-adapter.js';
2
+ function toParamMetadata(name, schema) {
3
+ const desc = defaultAdapter.describe(schema);
50
4
  return {
51
- baseSchema: current,
52
- baseDef: getZodDef(current),
53
- isOptional,
54
- defaultValue: hasDefault ? defaultValue : undefined,
55
- description,
5
+ name,
6
+ zodType: desc.kind,
7
+ isOptional: desc.isOptional,
8
+ defaultValue: desc.defaultValue,
9
+ isArray: desc.kind === 'array',
10
+ itemType: desc.itemKind,
11
+ enumValues: desc.enumValues,
12
+ description: desc.description,
56
13
  };
57
14
  }
58
- // ─── Detect base type ───────────────────────────────────────
59
- function detectParamType(def) {
60
- switch (def.type) {
61
- case 'string':
62
- return { zodType: 'string' };
63
- case 'number':
64
- case 'int':
65
- return { zodType: 'number' };
66
- case 'boolean':
67
- return { zodType: 'boolean' };
68
- case 'enum': {
69
- // Zod v4 uses `entries` (object { staging: 'staging', prod: 'prod' })
70
- // not `values` (array). Extract the values from the entries object.
71
- const entries = def.entries;
72
- const values = entries ? Object.values(entries) : undefined;
73
- return { zodType: 'enum', enumValues: values };
74
- }
75
- case 'array':
76
- return { zodType: 'array' };
77
- default:
78
- // Fallback: treat unknown types as string
79
- return { zodType: 'string' };
80
- }
81
- }
82
15
  // ─── Public API ─────────────────────────────────────────────
83
16
  /**
84
17
  * Walk a record of Zod schemas and extract parameter metadata for each key.
85
18
  * Keys are returned in insertion order (Object.entries preserves it).
86
19
  */
87
20
  export function walkSchema(schemas) {
88
- const result = [];
89
- for (const [name, schema] of Object.entries(schemas)) {
90
- const { baseDef, isOptional, defaultValue, description } = unwrapSchema(schema);
91
- const { zodType, enumValues } = detectParamType(baseDef);
92
- result.push({
93
- name,
94
- zodType,
95
- isOptional,
96
- defaultValue,
97
- isArray: zodType === 'array',
98
- enumValues,
99
- description,
100
- });
101
- }
102
- return result;
21
+ return Object.entries(schemas).map(([name, schema]) => toParamMetadata(name, schema));
103
22
  }
104
23
  /**
105
24
  * Walk a single Zod schema and extract its metadata.
106
25
  * Used by other modules that need to inspect individual schemas.
107
26
  */
108
27
  export function walkSingleSchema(name, schema) {
109
- const { baseDef, isOptional, defaultValue, description } = unwrapSchema(schema);
110
- const { zodType, enumValues } = detectParamType(baseDef);
111
- return {
112
- name,
113
- zodType,
114
- isOptional,
115
- defaultValue,
116
- isArray: zodType === 'array',
117
- enumValues,
118
- description,
119
- };
28
+ return toParamMetadata(name, schema);
120
29
  }
121
30
  //# sourceMappingURL=schema-walker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-walker.js","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-walker.js","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,SAAS,eAAe,CAAC,IAAY,EAAE,MAAe;IACrD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;QACN,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC7B,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgC;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAe;IAC7D,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @runa-cmd/core — Strict unknown-option checking
3
+ *
4
+ * Post-parse validation: util.parseArgs runs with `strict: false` (required
5
+ * for the alias/negation handling and the two-pass global/command parse), so
6
+ * unknown flags surface here as unexpected keys in the parse result. This is
7
+ * the SINGLE place the check lives — disabling it is one call-site guard
8
+ * (`CLIConfig.strictOptions: false`).
9
+ */
10
+ import type { ParseArgsConfig } from 'node:util';
11
+ import type { OptionMeta } from '../types.js';
12
+ export interface AssertKnownOptionsInput {
13
+ /** Object.keys() of the util.parseArgs result `.values` */
14
+ producedKeys: string[];
15
+ /**
16
+ * Keys parseArgs may legitimately produce: canonical names + long aliases
17
+ * (+ defensive `no-*` negations) from parseargs-bridge, plus global option
18
+ * names, long aliases, and short-alias characters added by the caller.
19
+ */
20
+ knownKeys: Set<string>;
21
+ /** Canonical names of boolean options — accepts `no-{name}` keys defensively */
22
+ booleanKeys: Set<string>;
23
+ /** Candidate names for did-you-mean: command + global canonical names and long aliases */
24
+ suggestionCandidates: string[];
25
+ }
26
+ /** The option tokens of a `parseArgs({ tokens: true })` result. */
27
+ export interface OptionToken {
28
+ kind: string;
29
+ name?: string;
30
+ value?: string;
31
+ inlineValue?: boolean;
32
+ }
33
+ export interface AssertOptionValuesInput {
34
+ tokens: OptionToken[] | undefined;
35
+ /** Options registered in the parseArgs config */
36
+ options: NonNullable<ParseArgsConfig['options']>;
37
+ longAliasMap: Record<string, string>;
38
+ optionMeta?: Record<string, OptionMeta>;
39
+ }
40
+ /**
41
+ * Throw a ValidationError (exit 2) on the first option that takes a value but
42
+ * got none. Tokens tell the cases apart: with `--tag --force`, parseArgs takes
43
+ * `--force` as the value and silently drops the flag, while `--tag=--force`
44
+ * and `--tag -text` are values the user meant.
45
+ */
46
+ export declare function assertOptionValues(input: AssertOptionValuesInput): void;
47
+ /**
48
+ * Throw a ValidationError (exit 2) on the first parseArgs-produced key that
49
+ * is not registered, with a did-you-mean suggestion when a candidate is close.
50
+ */
51
+ export declare function assertKnownOptions(input: AssertKnownOptionsInput): void;
52
+ //# sourceMappingURL=strict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/parse/strict.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,WAAW,uBAAuB;IACvC,2DAA2D;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;OAIG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,gFAAgF;IAChF,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,0FAA0F;IAC1F,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAWD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAClC,iDAAiD;IACjD,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACxC;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAcvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAuBvE"}