Files
OmniRoute/docs/i18n/he/docs/compression/COMPRESSION_RULES_FORMAT.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

16 KiB
Raw Blame History

Compression Rules Format (עברית)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


כללי דחיסה הם קובצי JSON שנטענים בזמן ריצה. הם מבוססי נתונים בלבד במכוון, כך שניתן לסקור חבילות שפה חדשות ומסנני פקודות RTK מבלי לשנות את קוד המנוע.

סכמה קנונית (מקור האמת): open-sse/services/compression/rules/_schema.json (טיוטת JSON Schema 2020-12). הדוגמאות שלהלן נועדו להמחשה — במקרה של ספק, אמתו את החבילה שלכם מול _schema.json.

חבילות כללים של Caveman

חבילות הכללים של Caveman נמצאות תחת:

open-sse/services/compression/rules/<language>/<pack>.json

כל חבילה מכילה החלפות שמוחלות על טקסט רגיל לאחר בידוד האזורים המוגנים.

{
  "language": "en",
  "category": "filler",
  "rules": [
    {
      "name": "question_to_directive",
      "pattern": "\\b(?:Can you explain why|Could you show me how)\\b\\s*",
      "replacement": "Explain why ",
      "replacementMap": {
        "can you explain why": "Explain why ",
        "could you show me how": "Show how "
      },
      "flags": "gi",
      "context": "all",
      "category": "context",
      "minIntensity": "lite",
      "description": "Convert verbose questions into direct requests."
    }
  ]
}

שדות Caveman

שדה חובה תיאור
language כן מפתח שפה דמוי BCP-47, כגון en, pt-BR, es
category כן שם קובץ/קטגוריה של החבילה, לדוגמה filler או dedup
rules כן מערך של כללי החלפה באמצעות ביטויים רגולריים
rules[].name כן שם יציב של הכלל
rules[].pattern כן מקור של ביטוי רגולרי ב-JavaScript
rules[].flags לא דגלי ביטוי רגולרי של JavaScript; ברירת המחדל היא gi
rules[].replacement לא מחרוזת החלפה או ערך חלופי כאשר אין התאמה ב-replacementMap
rules[].replacementMap לא החלפות ייעודיות להתאמה, שממופות לפי הטקסט המותאם לאחר נרמול
rules[].context לא all, user, assistant או system; ברירת המחדל היא all
rules[].category לא filler, context, structural, dedup, terse או ultra
rules[].minIntensity לא lite, full או ultra; ברירת המחדל היא lite
rules[].description לא תקציר קריא לאדם של הכלל

השתמשו ב-flags כאשר יש חשיבות להתאמה תלוית רישיות, לדוגמה להסרת תווית לפני טקסט באותיות קטנות מבלי להסיר את the OpenAI API. השתמשו ב-replacementMap כאשר ביטוי רגולרי אחד כולל כמה חלופות שזקוקות לפלטים שונים; כך חבילות כללי JSON נשארות מבוססות נתונים בלבד, תוך שימור ההתנהגות של פונקציות ההחלפה המובנות והעשירות יותר של TypeScript.

חבילות מסנני RTK

מסנני RTK נמצאים תחת:

open-sse/services/compression/engines/rtk/filters/<filter>.json

כל מסנן מתאר כיצד לזהות ולדחוס משפחה של פלטי פקודות.

{
  "id": "test-vitest",
  "label": "Vitest output",
  "category": "test",
  "priority": 92,
  "match": {
    "outputTypes": ["test-vitest"],
    "commands": ["vitest", "npm test", "npm run test"],
    "patterns": ["\\bFAIL\\b", "\\bPASS\\b", "\\bTest Files\\b"]
  },
  "rules": {
    "stripAnsi": true,
    "replace": [{ "pattern": "\\s+\\[[0-9]+ms\\]", "replacement": "" }],
    "matchOutput": [
      {
        "pattern": "All tests passed",
        "message": "vitest: ok",
        "unless": "FAIL|Error:"
      }
    ],
    "includePatterns": ["FAIL", "Error:", "Test Files", "Tests"],
    "dropPatterns": ["^\\s*$", "Duration\\s+\\d+"],
    "collapsePatterns": ["^\\s+at "],
    "deduplicate": true,
    "truncateLineAt": 240,
    "maxLines": 160,
    "headLines": 24,
    "tailLines": 40,
    "onEmpty": "vitest: ok",
    "filterStderr": false
  },
  "preserve": {
    "errorPatterns": ["FAIL", "Error:", "AssertionError"],
    "summaryPatterns": ["Test Files", "Tests", "Snapshots"]
  },
  "tests": [
    {
      "name": "keeps failing tests",
      "command": "vitest",
      "input": "FAIL test/a.test.ts\\nError: boom\\nTest Files 1 failed",
      "expected": "FAIL test/a.test.ts\\nError: boom\\nTest Files 1 failed"
    }
  ]
}

שדות RTK

שדה חובה תיאור
id כן מזהה מסנן יציב
label כן שם קריא בלוח הבקרה
category כן משפחת המסנן: git, test, build, shell, docker, package, infra, cloud, generic
priority לא עדיפות גבוהה יותר מנצחת כאשר מספר מסננים תואמים
match.outputTypes לא מזהי פלט של הגלאי שבוחרים במסנן זה
match.commands לא אסימוני פקודות שבוחרים במסנן זה
match.patterns לא תבניות ביטויים רגולריים שבוחרות במסנן זה מתוך טקסט הפלט
rules.stripAnsi לא הסרת רצפי מילוט ANSI לפני שלבי הביטויים הרגולריים
rules.replace לא החלפות ביטויים רגולריים מסודרות המוחלות שורה אחר שורה
rules.matchOutput לא כללי פלט שעוצרים את העיבוד מוקדם, עם תנאי unless אופציונלי
rules.includePatterns לא שורות שיש להעדיף לשמר
rules.dropPatterns לא שורות שיש להסיר כרעש
rules.collapsePatterns לא שורות תואמות חוזרות שניתן לכווץ
rules.deduplicate לא כיווץ שורות מנורמלות כפולות
rules.truncateLineAt לא מגבלת תווים לכל שורה, בטוחה ל-Unicode
rules.maxLines לא מספר השורות המרבי שיישמר לפני שימור הסוף
rules.headLines לא שורות מתחילת הפלט שנשמרות במהלך הקיטוע
rules.tailLines לא שורות מסוף הפלט שנשמרות לצורך הקשר עדכני
rules.onEmpty לא הודעת ברירת מחדל כאשר הסינון מסיר את כל התוכן
rules.filterStderr לא נרמול קידומות stderr נפוצות לפני שלבי הסינון הבאים
preserve.errorPatterns לא שורות שגיאה שאמורות לשרוד את הקיטוע
preserve.summaryPatterns לא שורות סיכום שאמורות לשרוד את הקיטוע
tests[] לא דוגמאות אימות מובנות המשמשות את שער האימות של RTK

RTK מחיל שלבים הצהרתיים בסדר הבא: stripAnsi, filterStderr, replace, matchOutput, dropPatterns/includePatterns, truncateLineAt, headLines/tailLines, maxLines ו-onEmpty.

ניתן לטעון מסננים מותאמים אישית מתוך:

  1. קובצי .rtk/filters.json של הפרויקט, רק לאחר שקיים גיבוב תואם בקובץ .rtk/trust.json, או כאשר trustProjectFilters מופעל.
  2. הקובץ הגלובלי DATA_DIR/rtk/filters.json.
  3. מסננים מובנים.

קבצים מותאמים אישית של הפרויקט או ברמה הגלובלית עשויים להכיל אובייקט מסנן יחיד או מערך של אובייקטי מסנן. מסננים מותאמים אישית לא תקינים מדולגים תוך הפקת מידע אבחוני; מסננים מובנים לא תקינים גורמים לכשל באימות.

קובץ האמון של הפרויקט:

{
  "filtersSha256": "0123456789abcdef..."
}

דריסת הסביבה OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1 נותנת אמון במסנני הפרויקט ללא גיבוב, ויש להגביל את השימוש בה לפיתוח מקומי מבוקר.

כללי בטיחות

  • יש לשמור על אידמפוטנטיות של הכללים: הפעלת אותו מסנן פעמיים לא אמורה להשחית את הפלט.
  • יש לשמר במידת האפשר את הנוסח המדויק של שגיאות, נתיבי קבצים, מספרי שורות וסיכומי פקודות.
  • יש להימנע מכללים שמשנים בלוקי קוד, מטעני JSON, כתובות URL או סודות.
  • יש להוסיף כיסוי בדיקות יחידה למשפחות פקודות חדשות בבדיקות הגלאי/המסנן.
  • יש להוסיף דוגמאות tests[] לכל מסנן מובנה ולמסננים מותאמים אישית משותפים.

אימות

חבילות כללים מאומתות לפני השימוש. חבילות Caveman מובנות ומסנני RTK מובנים נכשלים מיד במהלך האימות, כך שנכסי הפצה פגומים מתגלים לפני המשלוח. מסנני RTK מותאמים אישית מדולגים עם מידע אבחוני כאשר ניתוח התחביר או אימות האמון נכשלים.

אימות ממוקד:

node --import tsx/esm --test tests/unit/compression/rule-loader.test.ts tests/unit/compression/language-packs.test.ts
node --import tsx/esm --test tests/unit/compression/rtk-verify.test.ts tests/unit/compression/rtk-dsl-pipeline.test.ts