@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.
- package/README.md +125 -23
- package/dist/cli.d.ts +20 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +392 -143
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +72 -6
- package/dist/errors.js.map +1 -1
- package/dist/flag-name.d.ts +12 -0
- package/dist/flag-name.d.ts.map +1 -0
- package/dist/flag-name.js +19 -0
- package/dist/flag-name.js.map +1 -0
- package/dist/help.d.ts +21 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +151 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +10 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +9 -0
- package/dist/internal.js.map +1 -0
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +10 -3
- package/dist/introspect.js.map +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +5 -3
- package/dist/lifecycle.js.map +1 -1
- package/dist/parse/adapters/zod-v4.d.ts +3 -0
- package/dist/parse/adapters/zod-v4.d.ts.map +1 -0
- package/dist/parse/adapters/zod-v4.js +106 -0
- package/dist/parse/adapters/zod-v4.js.map +1 -0
- package/dist/parse/deprecated.d.ts +12 -0
- package/dist/parse/deprecated.d.ts.map +1 -0
- package/dist/parse/deprecated.js +21 -0
- package/dist/parse/deprecated.js.map +1 -0
- package/dist/parse/parseargs-bridge.d.ts +10 -0
- package/dist/parse/parseargs-bridge.d.ts.map +1 -1
- package/dist/parse/parseargs-bridge.js +20 -6
- package/dist/parse/parseargs-bridge.js.map +1 -1
- package/dist/parse/resolve.d.ts +44 -1
- package/dist/parse/resolve.d.ts.map +1 -1
- package/dist/parse/resolve.js +151 -73
- package/dist/parse/resolve.js.map +1 -1
- package/dist/parse/schema-adapter.d.ts +42 -0
- package/dist/parse/schema-adapter.d.ts.map +1 -0
- package/dist/parse/schema-adapter.js +4 -0
- package/dist/parse/schema-adapter.js.map +1 -0
- package/dist/parse/schema-walker.d.ts +3 -3
- package/dist/parse/schema-walker.d.ts.map +1 -1
- package/dist/parse/schema-walker.js +13 -104
- package/dist/parse/schema-walker.js.map +1 -1
- package/dist/parse/strict.d.ts +52 -0
- package/dist/parse/strict.d.ts.map +1 -0
- package/dist/parse/strict.js +68 -0
- package/dist/parse/strict.js.map +1 -0
- package/dist/parse/variadic.d.ts +2 -1
- package/dist/parse/variadic.d.ts.map +1 -1
- package/dist/parse/variadic.js +4 -24
- package/dist/parse/variadic.js.map +1 -1
- package/dist/plugin.d.ts +41 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +189 -0
- package/dist/plugin.js.map +1 -1
- package/dist/stop.d.ts +25 -0
- package/dist/stop.d.ts.map +1 -0
- package/dist/stop.js +110 -0
- package/dist/stop.js.map +1 -0
- package/dist/suggest.d.ts +18 -0
- package/dist/suggest.d.ts.map +1 -0
- package/dist/suggest.js +56 -0
- package/dist/suggest.js.map +1 -0
- package/dist/tool-channel.d.ts +48 -0
- package/dist/tool-channel.d.ts.map +1 -0
- package/dist/tool-channel.js +46 -0
- package/dist/tool-channel.js.map +1 -0
- package/dist/types.d.ts +51 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +6 -2
package/dist/parse/resolve.js
CHANGED
|
@@ -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
|
-
|
|
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 (
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
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}
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
//
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAgC3C,+DAA+D;AAE/D,SAAS,cAAc,CACtB,WAAqB,EACrB,WAAoC;IAEpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,2CAA2C;QAC3C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,eAAe,CAAC;gBACzB;oBACC,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,oCAAoC,WAAW,CAAC,CAAC,CAAC,GAAG;oBAC9D,IAAI,EAAE,EAAE;iBACR;aACD,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAElE,+CAA+C;IAC/C,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,IAAI,eAAe,CAAC;YACzB;gBACC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oCAAoC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;gBACxE,IAAI,EAAE,EAAE;aACR;SACD,CAAC,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,sEAAsE;IACvE,CAAC;IAED,+DAA+D;IAC/D,IAAI,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC7B,WAAqB,EACrB,IAAc,EACd,WAAoC;IAEpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjD,OAAO;QACN,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACvB,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC/D,OAAO,KAAK,CAAC;AACd,CAAC;AAED,4FAA4F;AAC5F,SAAS,YAAY,CAAC,KAAc,EAAE,IAA0C;IAC/E,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAgC;IACpE,IAAI,CAAC,KAAK,EAAE,OAAO;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,oEAAoE;AACpE,SAAS,YAAY,CAAC,KAAa;IAClC,OAAO,KAAK;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC3B,eAAwC,EACxC,YAAoC,EACpC,cAAuC,EACvC,WAAmD,EACnD,YAAiD,EACjD,GAAuC,EACvC,eAAgC;IAEhC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzE,uDAAuD;IACvD,MAAM,gBAAgB,GAA4B,EAAE,GAAG,eAAe,EAAE,CAAC;IACzE,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC;YAAE,SAAS;QAE3C,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,SAAS;YAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QAC9D,6CAA6C;aACxC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9B,sBAAsB;QACtB,IAAI,GAAG,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACpE,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,SAAS;QACV,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvF,SAAS;QACV,CAAC;QAED,gCAAgC;QAChC,IAAI,YAAY,IAAI,GAAG,IAAI,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5E,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,kDAAkD;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAMD;;;GAGG;AACH,SAAS,iBAAiB,CAAC,MAAkB,EAAE,WAAoC;IAClF,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEnC,wFAAwF;QACxF,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACnF,OAAO;gBACN,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,+BAA+B,IAAI,GAAG;gBAC/C,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;YACzD,OAAO;gBACN,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,sBAAsB,IAAI,uBAAuB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvF,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC5B,MAAkB,EAClB,cAAuC;IAEvC,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEnC,0BAA0B;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACnF,OAAO;gBACN,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,4BAA4B,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACrD,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;YACzD,OAAO;gBACN,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,qBAAqB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC/F,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAI,KAA4C,CAAC,QAAQ,CAAC;YACxE,OAAO;gBACN,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,qBAAqB,QAAQ,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC5E,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,+DAA+D;AAE/D;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAAmB;IAChD,MAAM,EACL,eAAe,EACf,YAAY,GAAG,EAAE,EACjB,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,GAAG,GAAG,OAAO,CAAC,GAAyC,GACvD,GAAG,KAAK,CAAC;IAEV,4EAA4E;IAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAExE,OAAO;QACN,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7C,aAAa,EAAE,eAAe,CAC7B,eAAe,CAAC,MAAM,EACtB,YAAY,EACZ,OAAO,CAAC,OAAO,EACf,IAAI,EAAE,OAAO,EACb,YAAY,EACZ,GAAG,CACH;KACD,CAAC;AACH,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA2B;IAC3D,MAAM,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,GAAG,GAAG,OAAO,CAAC,GAAyC,GACvD,GAAG,SAAS,CAAC;IAEd,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACpD,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAC/D,CAAC;YACL,MAAM,IAAI,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;IACF,CAAC;IAED,OAAO;QACN,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7C,aAAa,EAAE,eAAe,CAC7B,UAAU,EACV,EAAE,EACF,OAAO,CAAC,OAAO,EACf,IAAI,EAAE,OAAO,EACb,YAAY,EACZ,GAAG,CACH;KACD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACpB,OAAgC,EAChC,UAAmC;IAEnC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpD,IAAI,CAAC;QACJ,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CACvB,MAA+B,EAC/B,YAAoC,EACpC,aAAkD,EAClD,WAAmD,EACnD,YAAiD,EACjD,GAAuC;IAEvC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzE,MAAM,UAAU,GAAG,mBAAmB,CACrC,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,GAAG,EACH,UAAU,CAAC,aAAa,CAAC,CACzB,CAAC;IAEF,IAAI,CAAC;QACJ,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,UAAU,CAA4B,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,eAAe,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC"}
|
|
@@ -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 @@
|
|
|
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).
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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,
|
|
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
|
-
|
|
2
|
-
function
|
|
3
|
-
const
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
isOptional,
|
|
54
|
-
defaultValue:
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"
|
|
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"}
|