agent_patch
runs/2026-02-27__21-30-28__gpt-5-3-codex/flux-pr-4970/flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/agent-logs/agent.patch
6266 bytes
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/docs/content/api.mdx b/app/packages/docs/content/api.mdx
index 1bcb69d..c8713cb 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/docs/content/api.mdx
+++ b/app/packages/docs/content/api.mdx
@@ -205,6 +205,7 @@ To perform some simple string transforms:
<Tab value="Zod">
```ts
z.string().trim(); // trim whitespace
+z.string().normalize(); // Unicode normalization
z.string().toLowerCase(); // toLowerCase
z.string().toUpperCase(); // toUpperCase
```
@@ -212,6 +213,7 @@ z.string().toUpperCase(); // toUpperCase
<Tab value="Zod Mini">
```ts
z.string().check(z.trim()); // trim whitespace
+z.string().check(z.normalize()); // Unicode normalization
z.string().check(z.toLowerCase()); // toLowerCase
z.string().check(z.toUpperCase()); // toUpperCase
```
@@ -2742,4 +2744,3 @@ const MyFunction = z.function({
const computeTrimmedLength = MyFunction.implement((input) => input.trim.length);
```
-
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/jsr.json b/app/packages/zod/jsr.json
index 4005c45..20e6e2a 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/jsr.json
+++ b/app/packages/zod/jsr.json
@@ -1,6 +1,6 @@
{
"name": "@zod/zod",
- "version": "4.0.8",
+ "version": "4.0.9",
"exports": {
"./package.json": "./package.json",
".": "./src/index.ts",
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/package.json b/app/packages/zod/package.json
index d079aab..751c4e0 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/package.json
+++ b/app/packages/zod/package.json
@@ -1,6 +1,6 @@
{
"name": "zod",
- "version": "4.0.8",
+ "version": "4.0.9",
"type": "module",
"author": "Colin McDonnell <zod@colinhacks.com>",
"description": "TypeScript-first schema declaration and validation library with static type inference",
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/classic/tests/literal.test.ts b/app/packages/zod/src/v4/classic/tests/literal.test.ts
index 8c48b20..0d83a42 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/classic/tests/literal.test.ts
+++ b/app/packages/zod/src/v4/classic/tests/literal.test.ts
@@ -91,6 +91,10 @@ test("readonly", () => {
z.literal(a);
});
+test("literal must have at least one value", () => {
+ expect(() => z.literal([])).toThrow("`z.literal()` must be passed at least one value.");
+});
+
test("literal pattern", () => {
expect(z.literal(1.1)._zod.pattern).toMatchInlineSnapshot(`/\\^\\(1\\\\\\.1\\)\\$/`);
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/classic/tests/union.test.ts b/app/packages/zod/src/v4/classic/tests/union.test.ts
index f787693..56fffd5 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/classic/tests/union.test.ts
+++ b/app/packages/zod/src/v4/classic/tests/union.test.ts
@@ -134,3 +134,16 @@ test("non-aborted errors", () => {
}
`);
});
+
+test("multiple non-aborted union branches should report invalid_union", () => {
+ const schema = z.union([
+ z.string().refine(() => false, { error: "first branch failed" }),
+ z.string().refine(() => false, { error: "second branch failed" }),
+ ]);
+
+ const res = schema.safeParse("input");
+ expect(res.success).toBe(false);
+ if (!res.success) {
+ expect(res.error.issues[0]?.code).toBe("invalid_union");
+ }
+});
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/core/api.ts b/app/packages/zod/src/v4/core/api.ts
index 10cab7f..dbeb28e 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/core/api.ts
+++ b/app/packages/zod/src/v4/core/api.ts
@@ -1255,9 +1255,13 @@ export function _literal<const T extends util.Literal>(
params?: string | $ZodLiteralParams
): schemas.$ZodLiteral<T>;
export function _literal(Class: util.SchemaClass<schemas.$ZodLiteral>, value: any, params: any) {
+ const values = Array.isArray(value) ? value : [value];
+ if (values.length === 0) {
+ throw new Error("`z.literal()` must be passed at least one value.");
+ }
return new Class({
type: "literal",
- values: Array.isArray(value) ? value : [value],
+ values,
...util.normalizeParams(params),
});
}
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/core/schemas.ts b/app/packages/zod/src/v4/core/schemas.ts
index 0622c5d..710a2eb 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/core/schemas.ts
+++ b/app/packages/zod/src/v4/core/schemas.ts
@@ -1911,7 +1911,7 @@ function handleUnionResults(results: ParsePayload[], final: ParsePayload, inst:
}
const nonaborted = results.filter((r) => !util.aborted(r));
- if (nonaborted.length > 0) {
+ if (nonaborted.length === 1) {
final.value = nonaborted[0].value;
return nonaborted[0];
}
@@ -2781,6 +2781,9 @@ export const $ZodLiteral: core.$constructor<$ZodLiteral> = /*@__PURE__*/ core.$c
"$ZodLiteral",
(inst, def) => {
$ZodType.init(inst, def);
+ if (def.values.length === 0) {
+ throw new Error("`z.literal()` must be passed at least one value.");
+ }
inst._zod.values = new Set<util.Literal>(def.values);
inst._zod.pattern = new RegExp(
diff --git a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/core/versions.ts b/app/packages/zod/src/v4/core/versions.ts
index ce46253..c2f6e4d 100644
--- a/tmp/agent-patch-flux-pr-4970.1-of-1.2026-02-27__21-30-28__gpt-5-3-codex/app/packages/zod/src/v4/core/versions.ts
+++ b/app/packages/zod/src/v4/core/versions.ts
@@ -1,5 +1,5 @@
export const version = {
major: 4,
minor: 0,
- patch: 8 as number,
+ patch: 9 as number,
} as const;