* 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.
15 KiB
Compression Rules Format (Čeština)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇩🇰 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 · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Pravidla komprese jsou soubory JSON načítané za běhu. Záměrně obsahují pouze data, aby bylo možné kontrolovat nové jazykové balíčky a filtry příkazů RTK bez změn v kódu enginu.
Kanonické schéma (zdroj pravdy):
open-sse/services/compression/rules/_schema.json(JSON Schema draft 2020-12). Níže uvedené příklady jsou pouze ilustrativní — v případě pochybností ověřte svůj balíček vůči souboru_schema.json.
Balíčky pravidel Caveman
Balíčky pravidel Caveman se nacházejí v:
open-sse/services/compression/rules/<language>/<pack>.json
Každý balíček obsahuje nahrazení, která se aplikují na běžný text po izolování chráněných oblastí.
{
"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."
}
]
}
Pole Caveman
| Pole | Povinné | Popis |
|---|---|---|
language |
ano | Klíč jazyka podobný BCP-47, například en, pt-BR, es |
category |
ano | Název souboru/kategorie balíčku, například filler nebo dedup |
rules |
ano | Pole pravidel nahrazování pomocí regulárních výrazů |
rules[].name |
ano | Stabilní název pravidla |
rules[].pattern |
ano | Zdroj regulárního výrazu JavaScriptu |
rules[].flags |
ne | Příznaky regulárního výrazu JavaScriptu; výchozí hodnota gi |
rules[].replacement |
ne | Řetězec nahrazení nebo záložní hodnota, když replacementMap nenalezne shodu |
rules[].replacementMap |
ne | Nahrazení pro konkrétní shody, jejichž klíčem je normalizovaný odpovídající text |
rules[].context |
ne | all, user, assistant nebo system; výchozí hodnota all |
rules[].category |
ne | filler, context, structural, dedup, terse nebo ultra |
rules[].minIntensity |
ne | lite, full nebo ultra; výchozí hodnota lite |
rules[].description |
ne | Souhrn pravidla čitelný pro člověka |
Použijte flags, pokud záleží na rozlišování velkých a malých písmen, například při odstraňování členů před textem začínajícím malým písmenem,
aniž by se odstranilo the OpenAI API. Použijte replacementMap, pokud má jeden regulární výraz více alternativ,
které vyžadují různé výstupy; balíčky pravidel JSON tak mohou obsahovat pouze data a přitom zachovat chování
propracovanějších vestavěných nahrazovacích funkcí TypeScriptu.
Balíčky filtrů RTK
Filtry RTK se nacházejí v:
open-sse/services/compression/engines/rtk/filters/<filter>.json
Každý filtr popisuje, jak rozpoznat a komprimovat určitou skupinu výstupů příkazů.
{
"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"
}
]
}
Pole RTK
| Pole | Povinné | Popis |
|---|---|---|
id |
ano | Stabilní ID filtru |
label |
ano | Název čitelný v řídicím panelu |
category |
ano | Skupina filtru: git, test, build, shell, docker, package, infra, cloud, generic |
priority |
ne | Při shodě více filtrů vyhrává filtr s vyšší prioritou |
match.outputTypes |
ne | ID výstupů detektoru, která vybírají tento filtr |
match.commands |
ne | Tokeny příkazů, které vybírají tento filtr |
match.patterns |
ne | Regulární výrazy, které vybírají tento filtr podle textu výstupu |
rules.stripAnsi |
ne | Odstraní řídicí sekvence ANSI před fázemi s regulárními výrazy |
rules.replace |
ne | Seřazené náhrady pomocí regulárních výrazů aplikované řádek po řádku |
rules.matchOutput |
ne | Pravidla pro okamžitý výstup s volitelnou podmínkou unless |
rules.includePatterns |
ne | Řádky, jejichž zachování má být upřednostněno |
rules.dropPatterns |
ne | Řádky, které mají být odstraněny jako šum |
rules.collapsePatterns |
ne | Opakující se odpovídající řádky, které lze sloučit |
rules.deduplicate |
ne | Sloučí duplicitní normalizované řádky |
rules.truncateLineAt |
ne | Limit počtu znaků na řádek bezpečný pro Unicode |
rules.maxLines |
ne | Maximální počet zachovaných řádků před zachováním konce |
rules.headLines |
ne | Počet řádků ze začátku zachovaných při zkracování |
rules.tailLines |
ne | Počet řádků z konce zachovaných pro aktuální kontext |
rules.onEmpty |
ne | Záložní zpráva, pokud filtrování odstraní veškerý obsah |
rules.filterStderr |
ne | Normalizuje běžné předpony stderr před dalšími fázemi filtrování |
preserve.errorPatterns |
ne | Chybové řádky, které mají přežít zkrácení |
preserve.summaryPatterns |
ne | Souhrnné řádky, které mají přežít zkrácení |
tests[] |
ne | Vložené ověřovací vzorky používané kontrolou RTK verify |
RTK používá deklarativní fáze v tomto pořadí: stripAnsi, filterStderr, replace,
matchOutput, dropPatterns/includePatterns, truncateLineAt, headLines/tailLines,
maxLines a onEmpty.
Vlastní filtry lze načíst z:
- Projektových souborů
.rtk/filters.json, ale pouze pokud je přítomen odpovídající hash v.rtk/trust.jsonnebo je povolenotrustProjectFilters. - Globálního souboru
DATA_DIR/rtk/filters.json. - Vestavěných filtrů.
Vlastní projektové/globální soubory mohou obsahovat jeden objekt filtru nebo pole objektů filtrů. Neplatné vlastní filtry jsou přeskočeny s diagnostickými informacemi; neplatné vestavěné filtry způsobí selhání validace.
Soubor důvěryhodnosti projektu:
{
"filtersSha256": "0123456789abcdef..."
}
Přepsání pomocí proměnné prostředí OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1 považuje projektové filtry za důvěryhodné bez
hashe a mělo by být omezeno na kontrolovaný místní vývoj.
Bezpečnostní pravidla
- Zachovávejte idempotenci pravidel: opakované spuštění stejného filtru nesmí poškodit výstup.
- Pokud možno zachovávejte přesné znění chyb, cesty k souborům, čísla řádků a souhrny příkazů.
- Vyhněte se pravidlům, která upravují bloky kódu, datové části JSON, adresy URL nebo tajné údaje.
- Pro nové rodiny příkazů přidejte pokrytí jednotkovými testy v testech detektoru/filtru.
- Ke každému vestavěnému filtru a ke sdíleným vlastním filtrům přidejte vzorky
tests[].
Ověřování
Balíčky pravidel jsou před použitím ověřovány. Vestavěné balíčky Caveman a vestavěné filtry RTK při ověřování okamžitě selžou, aby byly poškozené artefakty vydání odhaleny ještě před distribucí. Vlastní filtry RTK jsou při selhání parsování nebo ověřování důvěryhodnosti přeskočeny a jsou vypsány diagnostické informace.
Cílené ověřování:
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