# Compression Rules Format (Azərbaycan dili) 🌐 **Languages:** 🇺🇸 [English](../../../../compression/COMPRESSION_RULES_FORMAT.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇦 [ar](../../../ar/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇦 [bs](../../../bs/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇨🇿 [cs](../../../cs/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇪🇸 [es](../../../es/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇪 [ga](../../../ga/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇭🇺 [hu](../../../hu/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇦🇲 [hy](../../../hy/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇯🇵 [ja](../../../ja/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [ml](../../../ml/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇲🇾 [ms](../../../ms/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇴 [no](../../../no/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇹 [pt](../../../pt/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇷🇴 [ro](../../../ro/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇰 [sk](../../../sk/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇮 [sl](../../../sl/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇷🇸 [sr](../../../sr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇸🇪 [sv](../../../sv/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_RULES_FORMAT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_RULES_FORMAT.md) --- Sıxılma qaydaları icra zamanı yüklənən JSON fayllarıdır. Onlar qəsdən yalnız verilənlərdən ibarətdir ki, yeni dil paketləri və RTK əmr filtrləri mühərrik kodu dəyişdirilmədən nəzərdən keçirilə bilsin. > **Kanonik sxem (əsas həqiqət mənbəyi):** [`open-sse/services/compression/rules/_schema.json`](../../open-sse/services/compression/rules/_schema.json) (JSON Schema layihəsi 2020-12). > Aşağıdakı nümunələr izah məqsədi daşıyır — şübhə yarandıqda paketinizi `_schema.json` ilə yoxlayın. ## Caveman Qayda Paketləri Caveman qayda paketləri aşağıdakı qovluqda yerləşir: ```txt open-sse/services/compression/rules//.json ``` Hər paket qorunan bölgələr təcrid edildikdən sonra adi mətnə tətbiq olunan əvəzləmələri ehtiva edir. ```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 Sahələri | Sahə | Məcburidir | Təsvir | | ------------------------ | ---------- | --------------------------------------------------------------------------------------- | | `language` | bəli | `en`, `pt-BR`, `es` kimi BCP-47 formatına bənzər dil açarı | | `category` | bəli | Paket kateqoriyasının fayl adı/kateqoriyası, məsələn `filler` və ya `dedup` | | `rules` | bəli | Regex əvəzləmə qaydaları massivi | | `rules[].name` | bəli | Sabit qayda adı | | `rules[].pattern` | bəli | JavaScript regex mənbəyi | | `rules[].flags` | xeyr | JavaScript regex bayraqları; standart dəyər `gi` | | `rules[].replacement` | xeyr | `replacementMap` uyğunluq tapmadıqda istifadə edilən əvəzləmə sətri və ya ehtiyat dəyər | | `rules[].replacementMap` | xeyr | Normallaşdırılmış uyğun mətnə görə açarlanmış uyğunluğa xas əvəzləmələr | | `rules[].context` | xeyr | `all`, `user`, `assistant` və ya `system`; standart dəyər `all` | | `rules[].category` | xeyr | `filler`, `context`, `structural`, `dedup`, `terse` və ya `ultra` | | `rules[].minIntensity` | xeyr | `lite`, `full` və ya `ultra`; standart dəyər `lite` | | `rules[].description` | xeyr | İnsan tərəfindən oxuna bilən qayda xülasəsi | Registrə həssas uyğunlaşdırma vacib olduqda `flags` istifadə edin, məsələn `the OpenAI API` ifadəsini silmədən kiçik hərflə başlayan mətndən əvvəl artiklı silmək üçün. Bir regex müxtəlif nəticələr tələb edən bir neçə alternativə malik olduqda `replacementMap` istifadə edin; bu, daha zəngin daxili TypeScript əvəzləmə funksiyalarının davranışını qoruyarkən JSON qayda paketlərinin yalnız verilənlərdən ibarət qalmasını təmin edir. ## RTK Filtr Paketləri RTK filtrləri burada yerləşir: ```txt open-sse/services/compression/engines/rtk/filters/.json ``` Hər filtr əmr çıxışı ailəsinin necə tanınacağını və sıxılacağını təsvir edir. ```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 Sahələri | Sahə | Məcburidir | Təsvir | | -------------------------- | ---------- | --------------------------------------------------------------------------------- | | `id` | bəli | Stabil filtr identifikatoru | | `label` | bəli | İdarəetmə panelində oxuna bilən ad | | `category` | bəli | Filtr ailəsi: git, test, build, shell, docker, package, infra, cloud, generic | | `priority` | xeyr | Bir neçə filtr uyğun gəldikdə daha yüksək prioritet qalib gəlir | | `match.outputTypes` | xeyr | Bu filtri seçən detektor çıxış identifikatorları | | `match.commands` | xeyr | Bu filtri seçən əmr tokenləri | | `match.patterns` | xeyr | Bu filtri çıxış mətninə əsasən seçən regex nümunələri | | `rules.stripAnsi` | xeyr | Regex mərhələlərindən əvvəl ANSI escape ardıcıllıqlarını silir | | `rules.replace` | xeyr | Sətir-sətir tətbiq edilən sıralanmış regex əvəzləmələri | | `rules.matchOutput` | xeyr | İstəyə bağlı `unless` şərti olan erkən dayandırma çıxış qaydaları | | `rules.includePatterns` | xeyr | Qorunmasına üstünlük verilən sətirlər | | `rules.dropPatterns` | xeyr | Səs-küy kimi silinəcək sətirlər | | `rules.collapsePatterns` | xeyr | Yığcamlaşdırıla bilən təkrarlanan uyğun sətirlər | | `rules.deduplicate` | xeyr | Təkrarlanan normallaşdırılmış sətirləri yığcamlaşdırır | | `rules.truncateLineAt` | xeyr | Hər sətir üçün Unicode-təhlükəsiz simvol həddi | | `rules.maxLines` | xeyr | Son hissə qorunmazdan əvvəl saxlanılan maksimum sətir sayı | | `rules.headLines` | xeyr | Qısaltma zamanı saxlanılan başlanğıc sətirləri | | `rules.tailLines` | xeyr | Son kontekst üçün saxlanılan son sətirlər | | `rules.onEmpty` | xeyr | Filtrləmə bütün məzmunu sildikdə istifadə olunan ehtiyat mesaj | | `rules.filterStderr` | xeyr | Sonrakı filtrləmə mərhələlərindən əvvəl ümumi stderr prefikslərini normallaşdırır | | `preserve.errorPatterns` | xeyr | Qısaltmadan sonra qalmalı olan xəta sətirləri | | `preserve.summaryPatterns` | xeyr | Qısaltmadan sonra qalmalı olan xülasə sətirləri | | `tests[]` | xeyr | RTK yoxlama keçidi tərəfindən istifadə olunan daxili yoxlama nümunələri | RTK deklarativ mərhələləri bu ardıcıllıqla tətbiq edir: `stripAnsi`, `filterStderr`, `replace`, `matchOutput`, `dropPatterns`/`includePatterns`, `truncateLineAt`, `headLines`/`tailLines`, `maxLines` və `onEmpty`. Fərdi filtrlər aşağıdakı mənbələrdən yüklənə bilər: 1. Layihə `.rtk/filters.json` faylları yalnız uyğun `.rtk/trust.json` heşi mövcud olduqda və ya `trustProjectFilters` aktivləşdirildikdə. 2. Qlobal `DATA_DIR/rtk/filters.json`. 3. Daxili filtrlər. Layihə/qlobal fərdi fayllar bir filtr obyekti və ya filtr obyektləri massivi ehtiva edə bilər. Etibarsız fərdi filtrlər diaqnostika məlumatları ilə ötürülür; etibarsız daxili filtrlər yoxlamanın uğursuz olmasına səbəb olur. Layihənin etibar faylı: ```json { "filtersSha256": "0123456789abcdef..." } ``` `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1` mühit dəyişəni ilə edilən üstələmə layihə filtrlərinə heş olmadan etibar edir və yalnız idarə olunan lokal inkişaf mühiti ilə məhdudlaşdırılmalıdır. ## Təhlükəsizlik qaydaları - Qaydaları idempotent saxlayın: eyni filtrin iki dəfə icra edilməsi çıxış məlumatını korlamamalıdır. - Mümkün olduqda xəta mətnini, fayl yollarını, sətir nömrələrini və əmr xülasələrini olduğu kimi qoruyun. - Kod bloklarını, JSON faydalı yüklərini, URL-ləri və ya məxfi məlumatları dəyişdirən qaydalardan çəkinin. - Detektor/filtr testlərində yeni əmr ailələri üçün modul test əhatəsi əlavə edin. - Hər daxili filtrə və paylaşılan xüsusi filtrlərə `tests[]` nümunələri əlavə edin. ## Validasiya Qayda paketləri istifadədən əvvəl validasiya edilir. Daxili Caveman paketləri və daxili RTK filtrləri validasiya zamanı dərhal xəta verir ki, buraxılışın nasaz resursları göndərilməzdən əvvəl aşkar edilsin. Xüsusi RTK filtrləri sintaktik təhlil və ya etibar validasiyası uğursuz olduqda diaqnostika məlumatları ilə birlikdə ötürülür. Fokuslanmış validasiya: ```bash 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 ```