STET

agent_patch

runs/2026-02-27__21-30-28__gpt-5-1-codex-mini/flux-pr-5409/flux-pr-5409.1-of-1.2026-02-27__21-30-28__gpt-5-1-codex-mini/agent-logs/agent.patch

8560 bytes

Back to adjudication
diff --git a/tmp/agent-patch-flux-pr-5409.1-of-1.2026-02-27__21-30-28__gpt-5-1-codex-mini/app/packages/zod/src/v4/locales/he.ts b/app/packages/zod/src/v4/locales/he.ts
index d5dcc8f..1e888bb 100644
--- a/tmp/agent-patch-flux-pr-5409.1-of-1.2026-02-27__21-30-28__gpt-5-1-codex-mini/app/packages/zod/src/v4/locales/he.ts
+++ b/app/packages/zod/src/v4/locales/he.ts
@@ -14,6 +14,42 @@ const error: () => errors.$ZodErrorMap = () => {
     return Sizable[origin] ?? null;
   }
 
+  type TypeDescriptor = { label: string; feminine?: boolean };
+  const TypeDescriptors: Record<string, TypeDescriptor> = {
+    string: { label: "מחרוזת", feminine: true },
+    number: { label: "מספר" },
+    int: { label: "מספר שלם" },
+    bigint: { label: "BigInt" },
+    boolean: { label: "ערך בוליאני" },
+    object: { label: "אובייקט" },
+    array: { label: "מערך" },
+    set: { label: "קבוצה", feminine: true },
+    map: { label: "מפה", feminine: true },
+    record: { label: "רקורד" },
+    date: { label: "תאריך" },
+    file: { label: "קובץ" },
+    function: { label: "פונקציה", feminine: true },
+    symbol: { label: "Symbol" },
+    promise: { label: "Promise" },
+    null: { label: "null" },
+    undefined: { label: "undefined" },
+    nan: { label: "NaN" },
+  };
+
+  const hebrewLetter = /^[\u0590-\u05FF]/;
+  const addHebrewArticle = (text: string): string => {
+    if (!text) return text;
+    const trimmed = text.trimStart();
+    if (trimmed.startsWith("ה")) return trimmed;
+    return hebrewLetter.test(trimmed) ? `ה${trimmed}` : trimmed;
+  };
+
+  const describeTypeName = (type?: string): TypeDescriptor => {
+    if (!type) return { label: "הערך" };
+    const normalized = type.toLowerCase();
+    return TypeDescriptors[normalized] ?? { label: type };
+  };
+
   const parsedType = (data: any): string => {
     const t = typeof data;
 
@@ -72,46 +108,73 @@ const error: () => errors.$ZodErrorMap = () => {
 
   return (issue) => {
     switch (issue.code) {
-      case "invalid_type":
-        return `קלט לא תקין: צריך ${issue.expected}, התקבל ${parsedType(issue.input)}`;
-      // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;
+      case "invalid_type": {
+        const expectedType = describeTypeName(issue.expected);
+        const receivedType = describeTypeName(parsedType(issue.input));
+        const expectedLabel = addHebrewArticle(expectedType.label);
+        const receivedLabel = addHebrewArticle(receivedType.label);
+        return `הסוג הצפוי הוא ${expectedLabel}, אך התקבל ${receivedLabel}`;
+      }
       case "invalid_value":
-        if (issue.values.length === 1) return `קלט לא תקין: צריך ${util.stringifyPrimitive(issue.values[0])}`;
-        return `קלט לא תקין: צריך אחת מהאפשרויות  ${util.joinValues(issue.values, "|")}`;
+        if (issue.values.length === 1) return `הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;
+        return `הערך חייב להיות אחד מהבאים: ${util.joinValues(issue.values, "|")}`;
       case "too_big": {
-        const adj = issue.inclusive ? "<=" : "<";
         const sizing = getSizing(issue.origin);
-        if (sizing)
-          return `גדול מדי: ${issue.origin ?? "value"} צריך להיות ${adj}${issue.maximum.toString()} ${sizing.unit ?? "elements"}`;
-        return `גדול מדי: ${issue.origin ?? "value"} צריך להיות ${adj}${issue.maximum.toString()}`;
+        const originDescriptor = issue.origin ? describeTypeName(issue.origin) : undefined;
+        const originLabel = originDescriptor ? addHebrewArticle(originDescriptor.label) : "הערך";
+        const originVerb = originDescriptor?.feminine ? "צריכה" : "צריך";
+        if (sizing) {
+          const rangeText = issue.inclusive
+            ? `עד ${issue.maximum.toString()} ${sizing.unit}`
+            : `פחות מ-${issue.maximum.toString()} ${sizing.unit}`;
+          return `${originLabel} גדול מדי: ${originLabel} ${originVerb} ${sizing.verb} ${rangeText}`;
+        }
+        const comparison = issue.inclusive ? "לא יעלה על" : "יהיה פחות מ";
+        return `${originLabel} גדול מדי: ${originLabel} ${originVerb} ${comparison} ${issue.maximum.toString()}`;
       }
       case "too_small": {
-        const adj = issue.inclusive ? ">=" : ">";
         const sizing = getSizing(issue.origin);
+        const originDescriptor = issue.origin ? describeTypeName(issue.origin) : undefined;
+        const originLabel = originDescriptor ? addHebrewArticle(originDescriptor.label) : "הערך";
+        const originVerb = originDescriptor?.feminine ? "צריכה" : "צריך";
         if (sizing) {
-          return `קטן מדי: ${issue.origin} צריך להיות ${adj}${issue.minimum.toString()} ${sizing.unit}`;
+          const rangeText = issue.inclusive
+            ? `לפחות ${issue.minimum.toString()} ${sizing.unit}`
+            : `יותר מ-${issue.minimum.toString()} ${sizing.unit}`;
+          return `${originLabel} קטן מדי: ${originLabel} ${originVerb} ${sizing.verb} ${rangeText}`;
         }
-
-        return `קטן מדי: ${issue.origin} צריך להיות ${adj}${issue.minimum.toString()}`;
+        const comparison = issue.inclusive ? "לפחות" : "יותר מ";
+        return `${originLabel} קטן מדי: ${originLabel} ${originVerb} ${comparison} ${issue.minimum.toString()}`;
       }
       case "invalid_format": {
         const _issue = issue as errors.$ZodStringFormatIssues;
-        if (_issue.format === "starts_with") return `מחרוזת לא תקינה: חייבת להתחיל ב"${_issue.prefix}"`;
-        if (_issue.format === "ends_with") return `מחרוזת לא תקינה: חייבת להסתיים ב "${_issue.suffix}"`;
-        if (_issue.format === "includes") return `מחרוזת לא תקינה: חייבת לכלול "${_issue.includes}"`;
-        if (_issue.format === "regex") return `מחרוזת לא תקינה: חייבת להתאים לתבנית ${_issue.pattern}`;
-        return `${Nouns[_issue.format] ?? issue.format} לא תקין`;
+        const stringLabel = addHebrewArticle("מחרוזת");
+        if (_issue.format === "starts_with") return `${stringLabel} צריכה להתחיל ב"${_issue.prefix}"`;
+        if (_issue.format === "ends_with") return `${stringLabel} צריכה להסתיים ב"${_issue.suffix}"`;
+        if (_issue.format === "includes") return `${stringLabel} חייבת לכלול "${_issue.includes}"`;
+        if (_issue.format === "regex") return `${stringLabel} חייבת להתאים לתבנית ${_issue.pattern}`;
+        const noun = Nouns[_issue.format] ?? _issue.format;
+        return `${addHebrewArticle(noun)} לא תקין`;
       }
       case "not_multiple_of":
         return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;
-      case "unrecognized_keys":
-        return `מפתח${issue.keys.length > 1 ? "ות" : ""} לא מזוה${issue.keys.length > 1 ? "ים" : "ה"}: ${util.joinValues(issue.keys, ", ")}`;
-      case "invalid_key":
-        return `מפתח לא תקין ב${issue.origin}`;
+      case "unrecognized_keys": {
+        const plural = issue.keys.length > 1;
+        const subject = plural ? "המפתחות" : "המפתח";
+        const verb = plural ? "אינן מזוהות" : "אינו מזוהה";
+        return `${subject} ${util.joinValues(issue.keys, ", ")} ${verb}`;
+      }
+      case "invalid_key": {
+        const container = issue.origin === "map" ? "המפה" : issue.origin === "record" ? "הרקורד" : issue.origin ?? "הקלט";
+        return `המפתח ב${container} אינו תקין`;
+      }
       case "invalid_union":
-        return "קלט לא תקין";
-      case "invalid_element":
-        return `ערך לא תקין ב${issue.origin}`;
+        return "הקלט לא תואם אף אחת מהאפשרויות";
+      case "invalid_element": {
+        const container = issue.origin === "map" ? "המפה" : issue.origin === "set" ? "הקבוצה" : issue.origin ?? "הקולקציה";
+        const keyLabel = util.stringifyPrimitive(issue.key);
+        return `הפריט עבור המפתח ${keyLabel} ב${container} אינו תקין`;
+      }
       default:
         return `קלט לא תקין`;
     }