* 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.
18 KiB
Compression Rules Format (Српски)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 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 · 🇸🇪 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.
Прилагођени филтери могу да се учитају из:
- Пројектних датотека
.rtk/filters.jsonтек након што постоји одговарајући хеш у.rtk/trust.jsonили је омогућенtrustProjectFilters. - Глобалне датотеке
DATA_DIR/rtk/filters.json. - Уграђених филтера.
Пројектне/глобалне прилагођене датотеке могу да садрже један објекат филтера или низ објеката филтера. Неважећи прилагођени филтери се прескачу уз дијагностичке поруке; неважећи уграђени филтери доводе до неуспешне валидације.
Пројектна датотека поверења:
{
"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