test(cli): treat omitted exactOptional inputs as optional

The advertised-schema check parsed undefined on each field.
exactOptional rejects that value and still accepts a missing key, so
inspect-wasm-artifact looked required for commandTimeoutMs.

Judge omission with an object parse that leaves the key out. The
advertised required list already matched that parse for every other
primary command.

Co-authored-by: morluto <morluto@users.noreply.github.com>
This commit is contained in:
Cursor Agentandmorluto authored and morluto committed 2026-10-21 18:14:39 +08:00
1 parent ea3534759f
commit 5eebe2fdf8
1 file changed
+8 -1
@@ -61,12 +61,19 @@ const parserSchema = (
return schema instanceof z.ZodObject ? schema : undefined;
};
/**
* Reject a key only when an object parse that omits it fails.
* `exactOptional()` rejects explicit `undefined` and still accepts omission.
*/
const omissionRejected = (schema: z.ZodObject | undefined): string[] =>
Object.entries(schema?.shape ?? {})
.filter(([key, field]) => !z.object({ [key]: field }).safeParse({}).success)
.filter(([key, field]) => !acceptsOmittedKey(key, field))
.map(([key]) => key)
.sort();
const acceptsOmittedKey = (key: string, field: z.ZodType): boolean =>
z.object({ [key]: field }).safeParse({}).success;
describe("CLI advertised input schemas", () => {
it("require exactly the inputs whose omission the parser rejects", async () => {
const cli = createCli({});