@runa-cmd/core 0.1.0 → 0.2.0-beta.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 (49) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +69 -58
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/lifecycle.d.ts.map +1 -1
  8. package/dist/lifecycle.js +5 -3
  9. package/dist/lifecycle.js.map +1 -1
  10. package/dist/parse/adapters/zod-v4.d.ts +3 -0
  11. package/dist/parse/adapters/zod-v4.d.ts.map +1 -0
  12. package/dist/parse/adapters/zod-v4.js +103 -0
  13. package/dist/parse/adapters/zod-v4.js.map +1 -0
  14. package/dist/parse/parseargs-bridge.d.ts +10 -0
  15. package/dist/parse/parseargs-bridge.d.ts.map +1 -1
  16. package/dist/parse/parseargs-bridge.js +10 -0
  17. package/dist/parse/parseargs-bridge.js.map +1 -1
  18. package/dist/parse/resolve.d.ts +13 -0
  19. package/dist/parse/resolve.d.ts.map +1 -1
  20. package/dist/parse/resolve.js +26 -28
  21. package/dist/parse/resolve.js.map +1 -1
  22. package/dist/parse/schema-adapter.d.ts +40 -0
  23. package/dist/parse/schema-adapter.d.ts.map +1 -0
  24. package/dist/parse/schema-adapter.js +4 -0
  25. package/dist/parse/schema-adapter.js.map +1 -0
  26. package/dist/parse/schema-walker.d.ts +3 -3
  27. package/dist/parse/schema-walker.d.ts.map +1 -1
  28. package/dist/parse/schema-walker.js +12 -104
  29. package/dist/parse/schema-walker.js.map +1 -1
  30. package/dist/parse/strict.d.ts +21 -0
  31. package/dist/parse/strict.d.ts.map +1 -0
  32. package/dist/parse/strict.js +42 -0
  33. package/dist/parse/strict.js.map +1 -0
  34. package/dist/parse/variadic.d.ts +2 -1
  35. package/dist/parse/variadic.d.ts.map +1 -1
  36. package/dist/parse/variadic.js +4 -24
  37. package/dist/parse/variadic.js.map +1 -1
  38. package/dist/plugin.d.ts +31 -0
  39. package/dist/plugin.d.ts.map +1 -1
  40. package/dist/plugin.js +138 -0
  41. package/dist/plugin.js.map +1 -1
  42. package/dist/suggest.d.ts +17 -0
  43. package/dist/suggest.d.ts.map +1 -0
  44. package/dist/suggest.js +55 -0
  45. package/dist/suggest.js.map +1 -0
  46. package/dist/types.d.ts +8 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js.map +1 -1
  49. package/package.json +2 -2
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACX,GAAG,EACH,SAAS,EACT,OAAO,EAOP,MAAM,YAAY,CAAC;AA0cpB;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAShD;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EACX,GAAG,EACH,SAAS,EACT,OAAO,EAOP,MAAM,YAAY,CAAC;AAkdpB;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAShD;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E"}
package/dist/cli.js CHANGED
@@ -18,60 +18,15 @@ import { createHookRegistry } from './lifecycle.js';
18
18
  import { buildParseArgsConfig } from './parse/parseargs-bridge.js';
19
19
  import { resolveValues } from './parse/resolve.js';
20
20
  import { walkSchema } from './parse/schema-walker.js';
21
- import { resolvePlugins, runPluginCleanup, runPluginSetup, topologicalSort } from './plugin.js';
21
+ import { assertKnownOptions } from './parse/strict.js';
22
+ import { resolvePlugins, runPluginCleanup, runPluginSetup, STATIC_GLOBAL_OPTION_SOURCE, topologicalSort, validateOptionCollisions, } from './plugin.js';
23
+ import { findSuggestion } from './suggest.js';
22
24
  /**
23
25
  * Check if a value is a Command (branded object).
24
26
  */
25
27
  function isCommand(value) {
26
28
  return '_type' in value && value._type === 'runa:command';
27
29
  }
28
- /**
29
- * Levenshtein distance for "did you mean" suggestions.
30
- */
31
- function levenshtein(a, b) {
32
- const rows = b.length + 1;
33
- const cols = a.length + 1;
34
- // Use a flat array for guaranteed index access without non-null assertions
35
- const matrix = new Array(rows * cols).fill(0);
36
- const at = (i, j) => matrix[i * cols + j] ?? 0;
37
- const set = (i, j, v) => {
38
- matrix[i * cols + j] = v;
39
- };
40
- for (let i = 0; i < rows; i++)
41
- set(i, 0, i);
42
- for (let j = 0; j < cols; j++)
43
- set(0, j, j);
44
- for (let i = 1; i < rows; i++) {
45
- for (let j = 1; j < cols; j++) {
46
- if (b[i - 1] === a[j - 1]) {
47
- set(i, j, at(i - 1, j - 1));
48
- }
49
- else {
50
- set(i, j, Math.min(at(i - 1, j - 1) + 1, // substitution
51
- at(i, j - 1) + 1, // insertion
52
- at(i - 1, j) + 1));
53
- }
54
- }
55
- }
56
- return at(b.length, a.length);
57
- }
58
- /**
59
- * Find the best suggestion for a misspelled command name.
60
- * Returns undefined if no close match exists (distance > 3).
61
- */
62
- function findSuggestion(input, candidates) {
63
- let best;
64
- let bestDist = Infinity;
65
- for (const candidate of candidates) {
66
- const dist = levenshtein(input, candidate);
67
- if (dist < bestDist) {
68
- bestDist = dist;
69
- best = candidate;
70
- }
71
- }
72
- // Only suggest if reasonably close
73
- return bestDist <= 3 ? best : undefined;
74
- }
75
30
  /**
76
31
  * Resolve a command from the command tree by walking argv tokens.
77
32
  * Supports nested subcommands.
@@ -149,6 +104,12 @@ async function runCLILifecycle(config, argv) {
149
104
  };
150
105
  const mutableMiddleware = [...(config.middleware ?? [])];
151
106
  let sortedPlugins = [];
107
+ // Registrant per global option name (Decision 9): statically-declared
108
+ // globals are seeded here; plugin registrations append via addGlobalOption.
109
+ const globalOptionSources = new Map();
110
+ for (const name of Object.keys(mutableGlobalOptions)) {
111
+ globalOptionSources.set(name, [STATIC_GLOBAL_OPTION_SOURCE]);
112
+ }
152
113
  // Hook context that grows as we progress through the lifecycle
153
114
  const hookCtx = {
154
115
  cli: config.meta,
@@ -169,13 +130,30 @@ async function runCLILifecycle(config, argv) {
169
130
  middleware: mutableMiddleware,
170
131
  hookRegister: (name, handler) => hookRegistry.register(name, handler),
171
132
  getSchema: () => getSchema({ ...config, commands: mutableCommands }, mutableGlobalOptions, mutableGlobalMeta.options),
133
+ globalOptionSources,
172
134
  };
173
135
  await runPluginSetup(sortedPlugins, pluginRefs);
174
136
  }
137
+ // ─── Option collision validation (Decision 9) ─────
138
+ // Post-plugin-setup is the earliest point where the full option
139
+ // surface (plugin globals + plugin commands) exists. Runs before
140
+ // any parsing on every invocation; throws RunaError OPTION_COLLISION.
141
+ validateOptionCollisions(mutableCommands, mutableGlobalOptions, mutableGlobalMeta, globalOptionSources);
175
142
  // ─── beforeParse ──────────────────────────────────
176
143
  await hookRegistry.emit('beforeParse', hookCtx);
177
144
  // Handlers may have mutated hookCtx.rawArgs
178
145
  const currentArgv = hookCtx.rawArgs;
146
+ // ─── Rest split (Decision 5) ──────────────────────
147
+ // Split at the FIRST `--`: `head` flows through the entire pipeline
148
+ // (global extraction → resolution → parseArgs → strict check), `rest`
149
+ // bypasses everything and lands verbatim on the run context. Because
150
+ // the global extractor below only ever sees `head`, a token like
151
+ // `--help` after `--` can never be stolen as a global flag.
152
+ // Only the first `--` splits; later `--` tokens are ordinary rest content.
153
+ const sepIdx = currentArgv.indexOf('--');
154
+ const head = sepIdx === -1 ? currentArgv : currentArgv.slice(0, sepIdx);
155
+ const rest = sepIdx === -1 ? [] : currentArgv.slice(sepIdx + 1);
156
+ hookCtx.rawArgs = head;
179
157
  // ─── Parse global options ─────────────────────────
180
158
  let parsedGlobalOptions = {};
181
159
  if (Object.keys(mutableGlobalOptions).length > 0) {
@@ -205,12 +183,13 @@ async function runCLILifecycle(config, argv) {
205
183
  for (const [alias, canonical] of Object.entries(longAliasMap)) {
206
184
  longNames.set(`--${alias}`, canonical);
207
185
  }
208
- // Manual argv split: extract global option tokens, leave the rest
186
+ // Manual argv split: extract global option tokens, leave the rest.
187
+ // Operates on `head` only — post-`--` tokens are never candidates.
209
188
  const globalArgv = [];
210
189
  const commandArgv = [];
211
190
  let i = 0;
212
- while (i < currentArgv.length) {
213
- const token = currentArgv[i] ?? '';
191
+ while (i < head.length) {
192
+ const token = head[i] ?? '';
214
193
  // Handle --opt=val form
215
194
  const eqIdx = token.indexOf('=');
216
195
  const tokenKey = eqIdx > 0 ? token.slice(0, eqIdx) : token;
@@ -231,8 +210,8 @@ async function runCLILifecycle(config, argv) {
231
210
  // --opt val — string option, extract both tokens
232
211
  globalArgv.push(token);
233
212
  i++;
234
- if (i < currentArgv.length) {
235
- globalArgv.push(currentArgv[i] ?? '');
213
+ if (i < head.length) {
214
+ globalArgv.push(head[i] ?? '');
236
215
  i++;
237
216
  }
238
217
  }
@@ -273,11 +252,38 @@ async function runCLILifecycle(config, argv) {
273
252
  hookCtx.command = command.meta;
274
253
  // ─── Parse command args + options ──────────────────
275
254
  const optionMetadata = command.options ? walkSchema(command.options) : [];
276
- const { parseArgsConfig, longAliasMap } = buildParseArgsConfig(optionMetadata, command.meta.options, !!command.args);
255
+ const { parseArgsConfig, longAliasMap, knownKeys, booleanKeys } = buildParseArgsConfig(optionMetadata, command.meta.options, !!command.args);
277
256
  const cmdParseResult = parseArgs({
278
257
  ...parseArgsConfig,
279
258
  args: remainingArgv,
280
259
  });
260
+ // ─── Strict options check ─────────────────────────
261
+ if (config.strictOptions !== false) {
262
+ // Command canonical names + long aliases (= keys of the parseArgs config)
263
+ const suggestionCandidates = Object.keys(parseArgsConfig.options ?? {});
264
+ // Globals are extracted before command parsing, but their names must
265
+ // still be known here: parseArgs maps a stray global short flag to its
266
+ // bare character, and typo'd globals should suggest the global name.
267
+ for (const name of Object.keys(mutableGlobalOptions)) {
268
+ knownKeys.add(name);
269
+ suggestionCandidates.push(name);
270
+ for (const alias of mutableGlobalMeta.options[name]?.alias ?? []) {
271
+ if (alias.startsWith('--')) {
272
+ knownKeys.add(alias.slice(2));
273
+ suggestionCandidates.push(alias.slice(2));
274
+ }
275
+ else if (alias.startsWith('-') && alias.length === 2) {
276
+ knownKeys.add(alias.slice(1));
277
+ }
278
+ }
279
+ }
280
+ assertKnownOptions({
281
+ producedKeys: Object.keys(cmdParseResult.values),
282
+ knownKeys,
283
+ booleanKeys,
284
+ suggestionCandidates,
285
+ });
286
+ }
281
287
  // Load config values if configured
282
288
  let configValues;
283
289
  if (config.config) {
@@ -309,6 +315,7 @@ async function runCLILifecycle(config, argv) {
309
315
  globalOptions: parsedGlobalOptions,
310
316
  command: command.meta,
311
317
  rawArgs: argv,
318
+ rest,
312
319
  };
313
320
  const innerFn = async () => {
314
321
  commandResult = await command.run(runContext);
@@ -329,8 +336,11 @@ async function runCLILifecycle(config, argv) {
329
336
  try {
330
337
  await hookRegistry.emit('onError', hookCtx);
331
338
  }
332
- catch {
333
- // onError handler threw — swallow it, cleanup still needs to run
339
+ catch (hookErr) {
340
+ // D8: log to stderr, never rethrow — a broken error handler must
341
+ // not prevent cleanup, but its own defect must not vanish either
342
+ // (spec 2.5). The ORIGINAL error still drives exit behavior below.
343
+ console.error('runa: onError handler threw:', hookErr);
334
344
  }
335
345
  // If error was not handled, fall back to default behavior
336
346
  if (!hookCtx.handled) {
@@ -344,8 +354,9 @@ async function runCLILifecycle(config, argv) {
344
354
  try {
345
355
  await hookRegistry.emit('cleanup', hookCtx);
346
356
  }
347
- catch {
348
- // Cleanup hook errors are swallowed
357
+ catch (hookErr) {
358
+ // D8: same treatment as onError — log the defect, keep cleaning up.
359
+ console.error('runa: cleanup hook threw:', hookErr);
349
360
  }
350
361
  // Plugin cleanup in reverse topological order
351
362
  if (sortedPlugins.length > 0) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { jsonLoader } from './config/loader.js';
10
10
  export { CommandError, CommandNotFoundError, RunaError, ValidationError, } from './errors.js';
11
11
  export { getSchema } from './introspect.js';
12
12
  export { defineMiddleware } from './middleware.js';
13
+ export type { SchemaAdapter, SchemaDescription } from './parse/schema-adapter.js';
13
14
  export { definePlugin } from './plugin.js';
14
15
  export type { ArgSchema, CLI, CLIConfig, CLIConfigOptions, CLIMeta, CLISchema, Command, CommandConfig, CommandMeta, CommandSchema, CommandTree, ConfigLoader, HookContext, HookHandler, HookName, InferArgs, InferOptions, Middleware, MiddlewareContext, MiddlewareFn, OptionMeta, OptionSchema, ParamMetadata, ParamType, PluginAPI, PluginCapabilities, PluginConfig, PluginMeta, RunContext, RunReturn, } from './types.js';
15
16
  export { HOOK_NAMES, PARAM_TYPES } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,eAAe,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,YAAY,EACX,SAAS,EACT,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,OAAO,EAEP,SAAS,EAET,OAAO,EAEP,aAAa,EAEb,WAAW,EACX,aAAa,EACb,WAAW,EAEX,YAAY,EACZ,WAAW,EACX,WAAW,EAEX,QAAQ,EAER,SAAS,EACT,YAAY,EAEZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,YAAY,EAEZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,kBAAkB,EAElB,YAAY,EACZ,UAAU,EAEV,UAAU,EACV,SAAS,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,eAAe,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,YAAY,EACX,SAAS,EACT,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,OAAO,EAEP,SAAS,EAET,OAAO,EAEP,aAAa,EAEb,WAAW,EACX,aAAa,EACb,WAAW,EAEX,YAAY,EACZ,WAAW,EACX,WAAW,EAEX,QAAQ,EAER,SAAS,EACT,YAAY,EAEZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,YAAY,EAEZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,kBAAkB,EAElB,YAAY,EACZ,UAAU,EAEV,UAAU,EACV,SAAS,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,+DAA+D;AAC/D,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+C3C,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,+DAA+D;AAC/D,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+C3C,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIrE,MAAM,WAAW,UAAU;IAC1B,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrD,8DAA8D;IAC9D,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,8DAA8D;IAC9D,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,EAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CA+DjD"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIrE,MAAM,WAAW,UAAU;IAC1B,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrD,8DAA8D;IAC9D,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,8DAA8D;IAC9D,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,EAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAiEjD"}
package/dist/lifecycle.js CHANGED
@@ -41,9 +41,11 @@ export function createHookRegistry() {
41
41
  try {
42
42
  await handler(context);
43
43
  }
44
- catch {
45
- // Cleanup errors are swallowed to ensure all handlers run.
46
- // Plugin cleanup errors are reported separately.
44
+ catch (err) {
45
+ // D8: never rethrown (all handlers must run), but the
46
+ // handler's own defect must not vanish — log to stderr.
47
+ // Plugin cleanup() errors are reported separately.
48
+ console.error('runa: cleanup hook threw:', err);
47
49
  }
48
50
  }
49
51
  return { shortCircuited: false };
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,OAAO;QACN,QAAQ,CAAC,IAAc,EAAE,OAAoB;YAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;QACF,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAc,EAAE,OAAoB;YAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC9B,kEAAkE;gBAClE,IAAI,eAAe,GAAG,KAAK,CAAC;gBAC5B,MAAM,mBAAmB,GAAgB;oBACxC,GAAG,OAAO;oBACV,YAAY,EAAE,GAAG,EAAE;wBAClB,eAAe,GAAG,IAAI,CAAC;oBACxB,CAAC;iBACD,CAAC;gBAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;oBACpC,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBACnC,IAAI,eAAe,EAAE,CAAC;wBACrB,cAAc,GAAG,IAAI,CAAC;wBACtB,MAAM;oBACP,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,cAAc,EAAE,CAAC;YAC3B,CAAC;YAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,4DAA4D;gBAC5D,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;oBACpC,IAAI,CAAC;wBACJ,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACR,2DAA2D;wBAC3D,iDAAiD;oBAClD,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;YAED,qDAAqD;YACrD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAED,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,WAAW,CAAC,IAAc;YACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,OAAO;QACN,QAAQ,CAAC,IAAc,EAAE,OAAoB;YAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;QACF,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAc,EAAE,OAAoB;YAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC9B,kEAAkE;gBAClE,IAAI,eAAe,GAAG,KAAK,CAAC;gBAC5B,MAAM,mBAAmB,GAAgB;oBACxC,GAAG,OAAO;oBACV,YAAY,EAAE,GAAG,EAAE;wBAClB,eAAe,GAAG,IAAI,CAAC;oBACxB,CAAC;iBACD,CAAC;gBAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;oBACpC,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBACnC,IAAI,eAAe,EAAE,CAAC;wBACrB,cAAc,GAAG,IAAI,CAAC;wBACtB,MAAM;oBACP,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,cAAc,EAAE,CAAC;YAC3B,CAAC;YAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,4DAA4D;gBAC5D,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;oBACpC,IAAI,CAAC;wBACJ,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACd,sDAAsD;wBACtD,wDAAwD;wBACxD,mDAAmD;wBACnD,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;oBACjD,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;YAED,qDAAqD;YACrD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAED,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,WAAW,CAAC,IAAc;YACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SchemaAdapter } from '../schema-adapter.js';
2
+ export declare const zodV4Adapter: SchemaAdapter;
3
+ //# sourceMappingURL=zod-v4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-v4.d.ts","sourceRoot":"","sources":["../../../src/parse/adapters/zod-v4.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AA2I7E,eAAO,MAAM,YAAY,EAAE,aAwB1B,CAAC"}
@@ -0,0 +1,103 @@
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
+ return {
49
+ baseDef: getZodDef(current),
50
+ isOptional,
51
+ hasDefault,
52
+ defaultValue: hasDefault ? defaultValue : undefined,
53
+ description,
54
+ };
55
+ }
56
+ // ─── Detect base type ───────────────────────────────────────
57
+ function detectParamType(def) {
58
+ switch (def.type) {
59
+ case 'string':
60
+ return { kind: 'string' };
61
+ case 'number':
62
+ case 'int':
63
+ return { kind: 'number' };
64
+ case 'boolean':
65
+ return { kind: 'boolean' };
66
+ case 'enum': {
67
+ // Zod v4 uses `entries` (object { staging: 'staging', prod: 'prod' })
68
+ // not `values` (array). Extract the values from the entries object.
69
+ const entries = def.entries;
70
+ const values = entries ? Object.values(entries) : undefined;
71
+ return { kind: 'enum', enumValues: values };
72
+ }
73
+ case 'array':
74
+ return { kind: 'array' };
75
+ default:
76
+ // Fallback: treat unknown types as string
77
+ return { kind: 'string' };
78
+ }
79
+ }
80
+ // ─── Adapter ────────────────────────────────────────────────
81
+ export const zodV4Adapter = {
82
+ name: 'zod-v4',
83
+ supports(schema) {
84
+ if (schema === null || (typeof schema !== 'object' && typeof schema !== 'function')) {
85
+ return false;
86
+ }
87
+ const s = schema;
88
+ return s._zod?.def !== undefined;
89
+ },
90
+ describe(schema) {
91
+ const { baseDef, isOptional, hasDefault, defaultValue, description } = unwrapSchema(schema);
92
+ const { kind, enumValues } = detectParamType(baseDef);
93
+ return {
94
+ kind,
95
+ isOptional,
96
+ hasDefault,
97
+ defaultValue,
98
+ enumValues,
99
+ description,
100
+ };
101
+ },
102
+ };
103
+ //# sourceMappingURL=zod-v4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-v4.js","sourceRoot":"","sources":["../../../src/parse/adapters/zod-v4.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,16 @@ export interface ParseArgsBridgeConfig {
10
10
  parseArgsConfig: ParseArgsConfig;
11
11
  /** Maps long alias names → canonical option name */
12
12
  longAliasMap: Record<string, string>;
13
+ /**
14
+ * Every key util.parseArgs may legitimately produce for this config:
15
+ * canonical option names + registered long aliases, plus a defensive
16
+ * `no-{name}` per boolean option (parseArgs folds `--no-x` into `x: false`
17
+ * under allowNegative — pinned by parseargs-negation.test.ts — but the
18
+ * allowance guards against a future representation change).
19
+ */
20
+ knownKeys: Set<string>;
21
+ /** Canonical names of boolean options (for the strict check's `no-*` allowance) */
22
+ booleanKeys: Set<string>;
13
23
  }
14
24
  /**
15
25
  * Build a util.parseArgs configuration from schema walker output.
@@ -1 +1 @@
1
- {"version":3,"file":"parseargs-bridge.d.ts","sourceRoot":"","sources":["../../src/parse/parseargs-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,qBAAqB;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,aAAa,EAAE,EACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,CAAC,EAAE,OAAO,GACf,qBAAqB,CAsDvB"}
1
+ {"version":3,"file":"parseargs-bridge.d.ts","sourceRoot":"","sources":["../../src/parse/parseargs-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,qBAAqB;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,mFAAmF;IACnF,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,aAAa,EAAE,EACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,CAAC,EAAE,OAAO,GACf,qBAAqB,CAgEvB"}
@@ -9,6 +9,8 @@
9
9
  export function buildParseArgsConfig(metadata, optionMeta, hasArgs) {
10
10
  const options = {};
11
11
  const longAliasMap = {};
12
+ const knownKeys = new Set();
13
+ const booleanKeys = new Set();
12
14
  for (const param of metadata) {
13
15
  // Map Zod type → parseArgs type
14
16
  // boolean → 'boolean' (enables --no-* negation)
@@ -27,6 +29,7 @@ export function buildParseArgsConfig(metadata, optionMeta, hasArgs) {
27
29
  longAliasMap[longName] = param.name;
28
30
  // Register the long alias in parseArgs too
29
31
  options[longName] = { type: parseArgsType };
32
+ knownKeys.add(longName);
30
33
  }
31
34
  else if (alias.startsWith('-') && alias.length === 2) {
32
35
  // Short alias: single char after '-'
@@ -40,6 +43,11 @@ export function buildParseArgsConfig(metadata, optionMeta, hasArgs) {
40
43
  optConfig.default = param.defaultValue;
41
44
  }
42
45
  options[param.name] = optConfig;
46
+ knownKeys.add(param.name);
47
+ if (parseArgsType === 'boolean') {
48
+ booleanKeys.add(param.name);
49
+ knownKeys.add(`no-${param.name}`);
50
+ }
43
51
  }
44
52
  return {
45
53
  parseArgsConfig: {
@@ -49,6 +57,8 @@ export function buildParseArgsConfig(metadata, optionMeta, hasArgs) {
49
57
  allowNegative: true, // Enable --no-* boolean negation
50
58
  },
51
59
  longAliasMap,
60
+ knownKeys,
61
+ booleanKeys,
52
62
  };
53
63
  }
54
64
  //# sourceMappingURL=parseargs-bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseargs-bridge.js","sourceRoot":"","sources":["../../src/parse/parseargs-bridge.ts"],"names":[],"mappings":"AAiBA,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CACnC,QAAyB,EACzB,UAAuC,EACvC,OAAiB;IAEjB,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,gCAAgC;QAChC,gDAAgD;QAChD,0DAA0D;QAC1D,MAAM,aAAa,GAAyB,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE/F,MAAM,SAAS,GAKX;YACH,IAAI,EAAE,aAAa;SACnB,CAAC;QAEF,4BAA4B;QAC5B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,sEAAsE;oBACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChC,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;oBACpC,2CAA2C;oBAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC7C,CAAC;qBAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxD,qCAAqC;oBACrC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC;QAED,2DAA2D;QAC3D,4DAA4D;QAC5D,IAAI,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrE,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,YAAuB,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACjC,CAAC;IAED,OAAO;QACN,eAAe,EAAE;YAChB,OAAO;YACP,gBAAgB,EAAE,OAAO,IAAI,KAAK;YAClC,MAAM,EAAE,KAAK,EAAE,uCAAuC;YACtD,aAAa,EAAE,IAAI,EAAE,iCAAiC;SACtD;QACD,YAAY;KACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"parseargs-bridge.js","sourceRoot":"","sources":["../../src/parse/parseargs-bridge.ts"],"names":[],"mappings":"AA2BA,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CACnC,QAAyB,EACzB,UAAuC,EACvC,OAAiB;IAEjB,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,gCAAgC;QAChC,gDAAgD;QAChD,0DAA0D;QAC1D,MAAM,aAAa,GAAyB,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE/F,MAAM,SAAS,GAKX;YACH,IAAI,EAAE,aAAa;SACnB,CAAC;QAEF,4BAA4B;QAC5B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,sEAAsE;oBACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChC,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;oBACpC,2CAA2C;oBAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;oBAC5C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;qBAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxD,qCAAqC;oBACrC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC;QAED,2DAA2D;QAC3D,4DAA4D;QAC5D,IAAI,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrE,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,YAAuB,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,OAAO;QACN,eAAe,EAAE;YAChB,OAAO;YACP,gBAAgB,EAAE,OAAO,IAAI,KAAK;YAClC,MAAM,EAAE,KAAK,EAAE,uCAAuC;YACtD,aAAa,EAAE,IAAI,EAAE,iCAAiC;SACtD;QACD,YAAY;QACZ,SAAS;QACT,WAAW;KACX,CAAC;AACH,CAAC"}
@@ -34,6 +34,19 @@ export interface ResolveOutput {
34
34
  parsedArgs: Record<string, unknown>;
35
35
  parsedOptions: Record<string, unknown>;
36
36
  }
37
+ /**
38
+ * Pre-coerce a string to a number for z.number() fields.
39
+ * Empty/whitespace-only strings are returned UNCHANGED — Number('') === 0
40
+ * and Number(' ') === 0 would silently fabricate a value. Leaving the
41
+ * string intact lets Zod reject it as invalid_type, which flows through
42
+ * the existing humanizer to a ValidationError (exit 2).
43
+ *
44
+ * The single coercion site for ALL resolution sources (CLI arg, env var,
45
+ * config value) — a new source added later inherits the rule by construction.
46
+ *
47
+ * Exported for unit testing only — not part of the public API (not in index.ts).
48
+ */
49
+ export declare function coerceNumberValue(value: unknown): unknown;
37
50
  /**
38
51
  * Resolve values from all sources and validate through Zod.
39
52
  *
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/parse/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAY,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,aAAa,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,qCAAqC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sBAAsB;IACtB,OAAO,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,4CAA4C;IAC5C,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE,CAAC;IAChD,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAkOD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAwDhE"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/parse/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAY,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,aAAa,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,qCAAqC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sBAAsB;IACtB,OAAO,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,4CAA4C;IAC5C,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE,CAAC;IAChD,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AA+DD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKzD;AA+ID;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAwDhE"}
@@ -60,6 +60,26 @@ function mapPositionals(positionals, argsSchemas) {
60
60
  return result;
61
61
  }
62
62
  // ─── Value Resolution ───────────────────────────────────────
63
+ /**
64
+ * Pre-coerce a string to a number for z.number() fields.
65
+ * Empty/whitespace-only strings are returned UNCHANGED — Number('') === 0
66
+ * and Number(' ') === 0 would silently fabricate a value. Leaving the
67
+ * string intact lets Zod reject it as invalid_type, which flows through
68
+ * the existing humanizer to a ValidationError (exit 2).
69
+ *
70
+ * The single coercion site for ALL resolution sources (CLI arg, env var,
71
+ * config value) — a new source added later inherits the rule by construction.
72
+ *
73
+ * Exported for unit testing only — not part of the public API (not in index.ts).
74
+ */
75
+ export function coerceNumberValue(value) {
76
+ if (typeof value !== 'string')
77
+ return value;
78
+ if (value.trim() === '')
79
+ return value;
80
+ const num = Number(value);
81
+ return Number.isNaN(num) ? value : num;
82
+ }
63
83
  function resolveOptionValues(parseArgsValues, longAliasMap, optionsSchemas, optionsMeta, configValues, env, optionsMetadata) {
64
84
  const resolved = {};
65
85
  // Build a set of number fields for pre-coercion
@@ -80,43 +100,21 @@ function resolveOptionValues(parseArgsValues, longAliasMap, optionsSchemas, opti
80
100
  for (const key of Object.keys(optionsSchemas)) {
81
101
  // Priority 1: CLI arg
82
102
  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;
103
+ const value = normalizedValues[key];
104
+ resolved[key] = numberFields.has(key) ? coerceNumberValue(value) : value;
92
105
  continue;
93
106
  }
94
107
  // Priority 2: Environment variable
95
108
  const envName = optionsMeta?.[key]?.env;
96
109
  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;
110
+ const value = env[envName];
111
+ resolved[key] = numberFields.has(key) ? coerceNumberValue(value) : value;
106
112
  continue;
107
113
  }
108
114
  // Priority 3: Config file value
109
115
  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;
116
+ const value = configValues[key];
117
+ resolved[key] = numberFields.has(key) ? coerceNumberValue(value) : value;
120
118
  }
121
119
  // Priority 4: Omit — let Zod .default() handle it
122
120
  }