# RTK Compression (हिन्दी) 🌐 **Languages:** 🇺🇸 [English](../../../../compression/RTK_COMPRESSION.md) · 🇪🇹 [am](../../../am/docs/compression/RTK_COMPRESSION.md) · 🇸🇦 [ar](../../../ar/docs/compression/RTK_COMPRESSION.md) · 🇦🇿 [az](../../../az/docs/compression/RTK_COMPRESSION.md) · 🇧🇬 [bg](../../../bg/docs/compression/RTK_COMPRESSION.md) · 🇧🇩 [bn](../../../bn/docs/compression/RTK_COMPRESSION.md) · 🇧🇦 [bs](../../../bs/docs/compression/RTK_COMPRESSION.md) · 🇨🇿 [cs](../../../cs/docs/compression/RTK_COMPRESSION.md) · 🇩🇰 [da](../../../da/docs/compression/RTK_COMPRESSION.md) · 🇩🇪 [de](../../../de/docs/compression/RTK_COMPRESSION.md) · 🇬🇷 [el](../../../el/docs/compression/RTK_COMPRESSION.md) · 🇪🇸 [es](../../../es/docs/compression/RTK_COMPRESSION.md) · 🇪🇪 [et](../../../et/docs/compression/RTK_COMPRESSION.md) · 🇮🇷 [fa](../../../fa/docs/compression/RTK_COMPRESSION.md) · 🇫🇮 [fi](../../../fi/docs/compression/RTK_COMPRESSION.md) · 🇫🇷 [fr](../../../fr/docs/compression/RTK_COMPRESSION.md) · 🇮🇪 [ga](../../../ga/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [gu](../../../gu/docs/compression/RTK_COMPRESSION.md) · 🇳🇬 [ha](../../../ha/docs/compression/RTK_COMPRESSION.md) · 🇮🇱 [he](../../../he/docs/compression/RTK_COMPRESSION.md) · 🇭🇷 [hr](../../../hr/docs/compression/RTK_COMPRESSION.md) · 🇭🇺 [hu](../../../hu/docs/compression/RTK_COMPRESSION.md) · 🇦🇲 [hy](../../../hy/docs/compression/RTK_COMPRESSION.md) · 🇮🇩 [id](../../../id/docs/compression/RTK_COMPRESSION.md) · 🇳🇬 [ig](../../../ig/docs/compression/RTK_COMPRESSION.md) · 🇮🇹 [it](../../../it/docs/compression/RTK_COMPRESSION.md) · 🇯🇵 [ja](../../../ja/docs/compression/RTK_COMPRESSION.md) · 🇬🇪 [ka](../../../ka/docs/compression/RTK_COMPRESSION.md) · 🇰🇭 [km](../../../km/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [kn](../../../kn/docs/compression/RTK_COMPRESSION.md) · 🇰🇷 [ko](../../../ko/docs/compression/RTK_COMPRESSION.md) · 🇱🇹 [lt](../../../lt/docs/compression/RTK_COMPRESSION.md) · 🇱🇻 [lv](../../../lv/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [ml](../../../ml/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [mr](../../../mr/docs/compression/RTK_COMPRESSION.md) · 🇲🇾 [ms](../../../ms/docs/compression/RTK_COMPRESSION.md) · 🇲🇹 [mt](../../../mt/docs/compression/RTK_COMPRESSION.md) · 🇲🇲 [my](../../../my/docs/compression/RTK_COMPRESSION.md) · 🇳🇵 [ne](../../../ne/docs/compression/RTK_COMPRESSION.md) · 🇳🇱 [nl](../../../nl/docs/compression/RTK_COMPRESSION.md) · 🇳🇴 [no](../../../no/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [or](../../../or/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [pa](../../../pa/docs/compression/RTK_COMPRESSION.md) · 🇵🇭 [phi](../../../phi/docs/compression/RTK_COMPRESSION.md) · 🇵🇱 [pl](../../../pl/docs/compression/RTK_COMPRESSION.md) · 🇵🇹 [pt](../../../pt/docs/compression/RTK_COMPRESSION.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/RTK_COMPRESSION.md) · 🇷🇴 [ro](../../../ro/docs/compression/RTK_COMPRESSION.md) · 🇷🇺 [ru](../../../ru/docs/compression/RTK_COMPRESSION.md) · 🇱🇰 [si](../../../si/docs/compression/RTK_COMPRESSION.md) · 🇸🇰 [sk](../../../sk/docs/compression/RTK_COMPRESSION.md) · 🇸🇮 [sl](../../../sl/docs/compression/RTK_COMPRESSION.md) · 🇷🇸 [sr](../../../sr/docs/compression/RTK_COMPRESSION.md) · 🇸🇪 [sv](../../../sv/docs/compression/RTK_COMPRESSION.md) · 🇰🇪 [sw](../../../sw/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [ta](../../../ta/docs/compression/RTK_COMPRESSION.md) · 🇮🇳 [te](../../../te/docs/compression/RTK_COMPRESSION.md) · 🇹🇭 [th](../../../th/docs/compression/RTK_COMPRESSION.md) · 🇹🇷 [tr](../../../tr/docs/compression/RTK_COMPRESSION.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/RTK_COMPRESSION.md) · 🇵🇰 [ur](../../../ur/docs/compression/RTK_COMPRESSION.md) · 🇺🇿 [uz](../../../uz/docs/compression/RTK_COMPRESSION.md) · 🇻🇳 [vi](../../../vi/docs/compression/RTK_COMPRESSION.md) · 🇳🇬 [yo](../../../yo/docs/compression/RTK_COMPRESSION.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/compression/RTK_COMPRESSION.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/RTK_COMPRESSION.md) --- RTK compression, टर्मिनल और टूल आउटपुट के लिए OmniRoute का कमांड-सजग कम्प्रेशन इंजन है। इसे कोडिंग-एजेंट सत्रों के लिए डिज़ाइन किया गया है, जहाँ संदर्भ में अधिकांश वृद्धि टेस्ट लॉग, बिल्ड आउटपुट, पैकेज मैनेजर के अनावश्यक आउटपुट, शेल ट्रांस्क्रिप्ट, Docker आउटपुट, git आउटपुट और स्टैक ट्रेस से होती है। RTK सीधे `defaultMode: "rtk"` के साथ या स्टैक्ड पाइपलाइन के पहले चरण के रूप में चल सकता है, आमतौर पर: ```txt rtk -> caveman ``` यह क्रम पहले अव्यवस्थित मशीन आउटपुट को कम्प्रेस करता है, फिर Caveman को शेष गद्य को संक्षिप्त करने देता है। अपस्ट्रीम RTK कमांड आउटपुट में `60-90%` बचत की रिपोर्ट करता है। इसके README का नमूना सत्र `~118,000` मानक टोकन से घटकर `~23,900` RTK टोकन रह जाता है, जो `79.7%` बचत (`~80%`) है। OmniRoute, Caveman इनपुट कम्प्रेशन के साथ स्टैक्ड बचत की गणना के लिए इसी अपस्ट्रीम औसत का उपयोग करता है: ```txt RTK औसत: 80% बचत Caveman इनपुट: 46% बचत स्टैक्ड: 1 - (1 - 0.80) * (1 - 0.46) = 89.2% बचत सीमा: 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6% ``` ## यह क्या कम्प्रेस करता है अंतर्निहित कैटलॉग वर्तमान में इन श्रेणियों में 49 फ़िल्टर प्रदान करता है: | श्रेणी | उदाहरण | | --------- | ------------------------------------------------------------- | | `git` | `git status`, `git branch`, `git diff`, `git log` | | `test` | Vitest, Jest, Pytest, Playwright, Go टेस्ट, Cargo टेस्ट | | `build` | TypeScript, ESLint, Biome, Prettier, Vite, Webpack, Turbo, Nx | | `package` | `npm install`, `npm audit`, `pip`, `uv sync`, Poetry, Bundler | | `shell` | `ls`, `find`, `grep`, सामान्य शेल लॉग | | `docker` | `docker ps`, Docker लॉग | | `infra` | Terraform, OpenTofu, `systemctl status` | | `generic` | JSON आउटपुट, स्टैक ट्रेस, सामान्य आउटपुट फ़ॉलबैक | `open-sse/services/compression/engines/rtk/commandDetector.ts` में मौजूद डिटेक्टर, फ़िल्टर चयन से पहले आउटपुट को वर्गीकृत करता है। जब कोई कमांड वर्ग पर्याप्त न हो, तब फ़िल्टर कमांड पैटर्न या आउटपुट रेगेक्स के आधार पर भी मिलान कर सकते हैं। ## फ़िल्टर रिज़ॉल्यूशन RTK फ़िल्टरों को इस क्रम में लोड करता है: 1. `.rtk/filters.toml` और `.rtk/filters.json` से प्रोजेक्ट फ़िल्टर, केवल विश्वसनीय होने पर। 2. `DATA_DIR/rtk/filters.toml` और `DATA_DIR/rtk/filters.json` से ग्लोबल फ़िल्टर। 3. `open-sse/services/compression/engines/rtk/filters/` से अंतर्निहित फ़िल्टर। एक ही स्कोप के भीतर, RTK TOML स्कीमा v1 फ़िल्टरों को OmniRoute JSON फ़िल्टरों पर प्राथमिकता मिलती है। TOML `match_command` एक्सप्रेशन की जाँच कमांड-टाइप मिलान से पहले की जाती है, ताकि आयातित कमांड-विशिष्ट फ़िल्टर उस स्कोप के अधिक व्यापक फ़िल्टर को ओवरराइड कर सके। फ़ाइल फ़ॉर्मेट चाहे जो भी हो, प्रोजेक्ट स्कोप को ग्लोबल स्कोप पर प्राथमिकता मिलती है। प्रोजेक्ट फ़िल्टर जानबूझकर विश्वास-नियंत्रित हैं, क्योंकि रेगेक्स फ़िल्टर यह बदल सकते हैं कि एजेंटों को टूल आउटपुट कैसे दिखाया जाता है। प्रोजेक्ट फ़िल्टर फ़ाइल तब स्वीकार की जाती है, जब इनमें से कोई एक शर्त सत्य हो: - `rtkConfig.trustProjectFilters` का मान `true` हो। - `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=1` सेट हो। - `.rtk/trust.json` में प्रोजेक्ट फ़िल्टर फ़ाइल का मेल खाता SHA-256 हैश मौजूद हो। ट्रस्ट फ़ाइल का उदाहरण: ```json { "filtersSha256": "0123456789abcdef...", "filtersTomlSha256": "fedcba9876543210..." } ``` हैश अलग-अलग हैं: `filtersSha256`, `.rtk/filters.json` को विश्वसनीय बनाता है, जबकि `filtersTomlSha256`, `.rtk/filters.toml` को विश्वसनीय बनाता है। किसी भी फ़ाइल को संपादित करने पर केवल उसकी अपनी ट्रस्ट प्रविष्टि अमान्य होती है। ग्लोबल फ़ाइलें व्यवस्थापक द्वारा इंस्टॉल की जाती हैं और मौजूदा ग्लोबल-फ़िल्टर ट्रस्ट व्यवहार का उपयोग करती हैं। कस्टम फ़िल्टर एक फ़िल्टर ऑब्जेक्ट या फ़िल्टर ऑब्जेक्टों की एक ऐरे हो सकते हैं। अमान्य कस्टम फ़िल्टर छोड़ दिए जाते हैं और `/api/context/rtk/filters` डायग्नोस्टिक्स द्वारा रिपोर्ट किए जाते हैं। अमान्य अंतर्निहित फ़िल्टर तुरंत विफल हो जाते हैं। ## RTK TOML स्कीमा v1 संगतता OmniRoute, RTK TOML स्कीमा v1 का उपयोग करके घोषणात्मक फ़िल्टर फ़ाइलों को पार्स, सत्यापित, परीक्षण और इंस्टॉल कर सकता है। समर्थित फ़ील्ड हैं: `description`, `match_command`, `strip_ansi`, `filter_stderr`, `strip_lines_matching`, `keep_lines_matching`, `replace`, `match_output`, `truncate_lines_at`, `head_lines`, `tail_lines`, `max_lines`, `on_empty`, और `[[tests.]]` इनलाइन परीक्षण। अज्ञात फ़ील्ड, अमान्य या असुरक्षित रेगुलर एक्सप्रेशन, एक साथ मौजूद strip/keep नियम, 1 MiB से बड़ी फ़ाइलें, और अज्ञात फ़िल्टर के संदर्भ अस्वीकार कर दिए जाते हैं। जिस फ़ाइल के इनलाइन परीक्षण विफल होते हैं, उसे निरीक्षण के लिए सत्यापित किया जा सकता है, लेकिन इंस्टॉल या लोड नहीं किया जा सकता। कस्टम फ़ाइल लोड होने की विफलताएँ fail-open रहती हैं: अमान्य फ़ाइल छोड़ दी जाती है और शेष फ़िल्टर काम करना जारी रखते हैं। क्लाइंट द्वारा टूल आउटपुट पहले ही कैप्चर किए जाने के बाद OmniRoute उसे प्राप्त करता है, इसलिए `filter_stderr = true` प्रोसेस कैप्चर को नहीं बदल सकता। इस फ़ील्ड को no-op के रूप में स्वीकार किया जाता है और सत्यापन एक चेतावनी लौटाता है। इसे जानबूझकर **RTK TOML स्कीमा v1 संगतता** के रूप में वर्णित किया गया है, न कि RTK निष्पादन योग्य फ़ाइल, शेल हुक, Rust कमांड कार्यान्वयन या उसके ट्रस्ट-स्टोर लेआउट के साथ पूर्ण संगतता के रूप में। डैशबोर्ड का उन्नत RTK दृश्य पेस्ट या अपलोड किए गए TOML को स्वीकार करता है। सत्यापन केवल-पढ़ने योग्य है। इंस्टॉलेशन प्रतिबंधात्मक अनुमतियों के साथ `DATA_DIR/rtk/filters.toml` को परमाण्विक रूप से लिखता है और बिना पुनः आरंभ किए सक्रिय फ़िल्टर कैटलॉग को रीफ़्रेश करता है। किसी मौजूदा फ़ाइल को बदलने के लिए स्पष्ट `overwrite` पुष्टि आवश्यक है और पहले `DATA_DIR/rtk/filters.toml.bak` बनाया जाता है। ## फ़िल्टर DSL फ़िल्टर [Compression Rules Format](./COMPRESSION_RULES_FORMAT.md) में वर्णित JSON स्कीमा का उपयोग करते हैं। रनटाइम इन चरणों को क्रम से लागू करता है: ```txt stripAnsi -> filterStderr -> replace -> matchOutput -> पंक्तियाँ हटाएँ/शामिल करें -> truncateLineAt -> head/tail/maxLines -> onEmpty ``` महत्वपूर्ण फ़ील्ड: | फ़ील्ड | उद्देश्य | | ---------------------------- | ---------------------------------------------------------------------------- | | `rules.stripAnsi` | मिलान से पहले टर्मिनल रंग/नियंत्रण अनुक्रम हटाएँ | | `rules.filterStderr` | मिलान/फ़िल्टरिंग से पहले सामान्य stderr उपसर्गों को सामान्यीकृत करें | | `rules.replace` | क्रमबद्ध रेगुलर एक्सप्रेशन प्रतिस्थापन लागू करें | | `rules.matchOutput` | आउटपुट के किसी ज्ञात स्थिति से मेल खाने पर संक्षिप्त सारांश लौटाएँ | | `rules.matchOutput[].unless` | त्रुटि/विफलता पैटर्न मौजूद होने पर शॉर्टकट छोड़ दें | | `rules.dropPatterns` | अनावश्यक पंक्तियाँ हटाएँ | | `rules.includePatterns` | कार्रवाई योग्य पंक्तियों को प्राथमिकता दें | | `rules.collapsePatterns` | बार-बार आने वाली मेल खाती पंक्तियों को संक्षिप्त करें | | `rules.deduplicate` | प्रति-फ़िल्टर ऑप्ट-इन: लगातार आने वाली डुप्लिकेट पंक्तियों को संक्षिप्त करें | | `rules.truncateLineAt` | Unicode-सुरक्षित प्रति-पंक्ति ट्रंकेशन | | `rules.onEmpty` | सभी पंक्तियाँ फ़िल्टर हो जाने पर फ़ॉलबैक संदेश | | `tests[]` | सत्यापन गेट द्वारा उपयोग किए जाने वाले इनलाइन नमूने | अंतर्निर्मित फ़िल्टर में इनलाइन `tests[]` नमूने शामिल होना अपेक्षित है। कस्टम फ़िल्टर में भी उन्हें शामिल किया जाना चाहिए, विशेष रूप से जब उन्हें विभिन्न प्रोजेक्टों में साझा किया जाता है। ## पंक्ति डीडुप्लिकेशन (दो स्तर) RTK डुप्लिकेट पंक्तियों को दो स्वतंत्र स्तरों पर संक्षिप्त करता है: 1. **प्रति-फ़िल्टर `deduplicate` (ऑप्ट-इन, डिफ़ॉल्ट `false`)।** कोई फ़िल्टर `rules.deduplicate: true` सेट करके, काट-छाँट से पहले, _उस फ़िल्टर के मिलान किए गए आउटपुट के भीतर_ लगातार आने वाली डुप्लिकेट पंक्तियों को संक्षिप्त कर सकता है। यह `lineFilter.ts` के अंदर चलता है। लीगेसी फ़िल्टरों के लिए, जब फ़िल्टर `collapsePatterns` परिभाषित करता है, तो यह अपने-आप सक्षम हो जाता है। स्कीमा: `open-sse/services/compression/engines/rtk/filterSchema.ts` में `deduplicate: z.boolean().default(false)`। 2. **इंजन-व्यापी `deduplicateThreshold` (डिफ़ॉल्ट `3`)।** सभी फ़िल्टर चलने के बाद, इंजन पूरे परिणाम में एक जैसी लगातार पंक्तियों के `>= deduplicateThreshold` लंबे किसी भी क्रम को संक्षिप्त करता है (`deduplicateRepeatedLines`, जिसे `engines/rtk/index.ts` में लागू किया जाता है)। सामान्यीकरण के दौरान मान को 2–100 के बीच सीमित किया जाता है। प्रति-फ़िल्टर पास पहले (फ़िल्टर के अंदर) चलता है और इंजन-व्यापी पास अंत में (जोड़े गए आउटपुट पर) चलता है, इसलिए दोनों बिना दोहरी गणना के एक साथ काम करते हैं। ## पंक्ति समूहीकरण (`enableGrouping`) जब `rtkConfig.enableGrouping`, `true` (डिफ़ॉल्ट `false`) होता है, तो RTK डीडुप्लिकेशन के बाद प्राप्त परिणाम पर एक अतिरिक्त `groupSimilarLines` पास चलाता है, जो _लगभग समान_ (बाइट-स्तर पर पूरी तरह समान नहीं) लगातार पंक्तियों के क्रमों को संक्षिप्त करता है। `rtkConfig.groupingThreshold` (डिफ़ॉल्ट `3`) वह न्यूनतम क्रम-लंबाई है जो समूहीकरण को ट्रिगर करती है। यह `deduplicateThreshold` का संरचनात्मक समकक्ष है: डीडुप्लिकेशन सटीक पुनरावृत्तियों को संभालता है, जबकि समूहीकरण "छोटे अंतरों के साथ समान संरचना" को संभालता है। दोनों फ़्लैग `key_value` तालिका में संरक्षित `rtkConfig` JSON का भाग हैं (ऊपर कॉन्फ़िगरेशन देखें), इसलिए सेटिंग पुनरारंभ के बाद भी बनी रहती है। ## कोड टिप्पणियाँ हटाना (`stripCodeComments` / `preserveDocstrings`) जब `rtkConfig.applyToCodeBlocks` सक्षम होता है, तब RTK फ़ेंस किए गए कोड ब्लॉक से टिप्पणियाँ भी हटा सकता है: - `stripCodeComments` (डिफ़ॉल्ट `false`) — ऑप्ट-इन। `true` होने पर, RTK JavaScript और TypeScript के फ़ेंस किए गए ब्लॉक से टिप्पणियाँ हटा देता है। ऐतिहासिक रूप से इस फ़्लैग को पढ़ा तो जाता था, लेकिन कभी लागू नहीं किया गया, इसलिए उत्पादन में बिना सूचना के परिवर्तन से बचने के लिए डिफ़ॉल्ट "संरक्षित रखें" ही रहता है। - `preserveDocstrings` (डिफ़ॉल्ट `true`) — टिप्पणियाँ हटाते समय, JSDoc/`/** … */` ब्लॉक टिप्पणियाँ रखी जाती हैं (वे ऐसी API दस्तावेज़ीकरण रखती हैं जिसका महत्व उनके द्वारा लिए गए बाइट्स से अधिक है)। इन्हें भी हटाने के लिए इसे `false` पर सेट करें। टिप्पणी हटाने की प्रक्रिया `open-sse/services/compression/engines/rtk/codeStripper.ts` में कार्यान्वित है। यह **TypeScript पार्सर** (रेगेक्स नहीं) का उपयोग करती है, ताकि स्ट्रिंग, टेम्पलेट और रेगेक्स लिटरल को कभी गलती से टिप्पणी न माना जाए, और JSX मिलने पर यह प्रक्रिया पूरी तरह रोक देती है (ताकि JSX एक्सप्रेशन-कंटेनर टिप्पणियाँ कभी खराब न हों)। टिप्पणी हटाना वर्तमान में केवल **JavaScript और TypeScript** पर लागू होता है — स्ट्रिपर के `CodeLanguage` सेट की अन्य भाषाओं (Python, Rust, Go, Ruby, Java) में खाली पंक्तियाँ और व्हाइटस्पेस संक्षिप्त किए जाते हैं, लेकिन टिप्पणियाँ नहीं हटाई जातीं। स्ट्रिप किए गए ब्लॉक के रन को `rulesApplied` में `rtk:code-strip` टैग दिया जाता है। > **नोट — GCF / सारणीबद्ध एन्कोडिंग एक अलग इंजन है।** RTK में "GCF" > (Graph Compact Format) सारणीबद्ध/स्तंभात्मक JSON एन्कोडर **नहीं** है। वह एन्कोडर — जिसने पुराने > `omni-tabular` एन्कोडर को प्रतिस्थापित किया था — **headroom** इंजन में स्थित है > (`open-sse/services/compression/engines/headroom/`, जबकि साथ दिया गया कोडेक > `headroom/gcf/` के अंतर्गत है)। इसका यहाँ दस्तावेज़ीकृत RTK फ़िल्टर पाइपलाइन से कोई संबंध नहीं है। ## कॉन्फ़िगरेशन वैश्विक सेटिंग्स `/api/settings/compression` के माध्यम से उपलब्ध हैं। RTK-विशिष्ट सेटिंग्स भी `/api/context/rtk/config` के माध्यम से उपलब्ध हैं। ```json { "defaultMode": "stacked", "autoTriggerMode": "stacked", "autoTriggerTokens": 32000, "stackedPipeline": [ { "engine": "rtk", "intensity": "standard" }, { "engine": "caveman", "intensity": "full" } ], "rtkConfig": { "enabled": true, "intensity": "standard", "applyToToolResults": true, "applyToCodeBlocks": false, "applyToAssistantMessages": false, "enabledFilters": [], "disabledFilters": [], "maxLinesPerResult": 120, "maxCharsPerResult": 12000, "deduplicateThreshold": 3, "customFiltersEnabled": true, "trustProjectFilters": false, "rawOutputRetention": "never", "rawOutputMaxBytes": 1048576, "enableGrouping": false, "groupingThreshold": 3, "stripCodeComments": false, "preserveDocstrings": true } } ``` `enabledFilters` और `disabledFilters` फ़िल्टर आईडी का उपयोग करते हैं, उदाहरण के लिए `test-vitest` या `git-diff`। `rtkConfig` की पूर्ण संरचना `open-sse/services/compression/types.ts` में `RtkConfig` / `DEFAULT_RTK_CONFIG` द्वारा परिभाषित है। पूरे ऑब्जेक्ट को SQLite की `key_value` तालिका में `namespace = "compression"`, `key = "rtkConfig"` के अंतर्गत एकल JSON मान के रूप में सहेजा जाता है (`src/lib/db/compression.ts`), और पढ़ते समय `normalizeRtkConfig` द्वारा सामान्यीकृत किया जाता है। इसलिए नीचे दिया गया प्रत्येक फ़ील्ड — जिसमें `enableGrouping`, `groupingThreshold`, `stripCodeComments`, और `preserveDocstrings` शामिल हैं — उसी स्टोर के माध्यम से राउंड-ट्रिप करता है और पुनः आरंभ होने के बाद भी बना रहता है। | कुंजी | डिफ़ॉल्ट | उद्देश्य | | ---------------------- | -------- | ----------------------------------------------------------------------------------------- | | `deduplicateThreshold` | `3` | पूरे इंजन में: संक्षिप्त करने के लिए लगातार समान पंक्तियों की न्यूनतम संख्या (सीमा 2–100) | | `enableGrouping` | `false` | वैकल्पिक: लगभग समान लगातार पंक्तियों के क्रमों को संक्षिप्त करें | | `groupingThreshold` | `3` | समूहबद्धता ट्रिगर करने वाले लगातार समान-पंक्ति क्रम की न्यूनतम संख्या | | `stripCodeComments` | `false` | वैकल्पिक: फ़ेन्स्ड कोड ब्लॉक से टिप्पणियाँ हटाएँ (`applyToCodeBlocks` आवश्यक) | | `preserveDocstrings` | `true` | टिप्पणियाँ हटाते समय JSDoc/`/** … */` ब्लॉक बनाए रखें | ## API | रूट | विधि | उद्देश्य | | ---------------------------------- | ---- | --------------------------------------------------------- | | `/api/context/rtk/config` | GET | RTK कॉन्फ़िगरेशन पढ़ें | | `/api/context/rtk/config` | PUT | RTK कॉन्फ़िगरेशन अपडेट करें | | `/api/context/rtk/filters` | GET | फ़िल्टर कैटलॉग और लोड डायग्नोस्टिक्स सूचीबद्ध करें | | `/api/context/rtk/import` | POST | RTK TOML स्कीमा v1 फ़ाइलों को सत्यापित या इंस्टॉल करें | | `/api/context/rtk/test` | POST | एक टेक्स्ट पेलोड के लिए RTK कम्प्रेशन का पूर्वावलोकन करें | | `/api/context/rtk/raw-output/[id]` | GET | बनाए रखा गया संशोधित रॉ आउटपुट पढ़ें | | `/api/compression/preview` | POST | किसी भी कम्प्रेशन मोड का पूर्वावलोकन करें | RTK परीक्षण पेलोड: ```json { "command": "npm test", "text": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed", "config": { "intensity": "standard" } } ``` कम्प्रेशन पूर्वावलोकन पेलोड: ```json { "mode": "stacked", "messages": [ { "role": "tool", "content": "FAIL tests/example.test.ts\nAssertionError: expected true\nTest Files 1 failed" } ], "config": { "rtkConfig": { "rawOutputRetention": "failures" } } } ``` प्रबंधन रूट के लिए डैशबोर्ड प्रबंधन प्रमाणीकरण या मेल खाने वाली API-कुंजी नीति आवश्यक है। RTK TOML सत्यापन पेलोड: ```json { "action": "validate", "content": "schema_version = 1\n\n[filters.my-tool]\nmatch_command = \"^my-tool\\\\b\"\nmax_lines = 20\n" } ``` सत्यापित फ़ाइल को वैश्विक रूप से इंस्टॉल करने के लिए `"action": "install"` का उपयोग करें। किसी मौजूदा वैश्विक फ़ाइल को बदलने की समीक्षा और पुष्टि करने के बाद ही `"overwrite": true` जोड़ें। ## रॉ आउटपुट पुनर्प्राप्ति RTK सामान्यतः केवल संपीड़ित टेक्स्ट लौटाता है। डीबगिंग के लिए, `rawOutputRetention` संशोधित रॉ आउटपुट को बनाए रख सकता है: | मान | व्यवहार | | ---------- | ---------------------------------------------------------- | | `never` | रॉ आउटपुट बनाए न रखें | | `failures` | केवल संभावित विफलता वाले आउटपुट को बनाए रखें | | `always` | संशोधन के बाद प्रत्येक संपीड़ित RTK रॉ आउटपुट को बनाए रखें | बनाए रखी गई फ़ाइलें यहाँ लिखी जाती हैं: ```txt DATA_DIR/rtk/raw-output/ ``` स्थायी रूप से सहेजने से पहले गोपनीय जानकारी को संशोधित कर दिया जाता है, जिसमें सामान्य बेयरर टोकन, API कुंजियाँ, Slack टोकन, AWS एक्सेस कुंजियाँ और असाइनमेंट-शैली के `token=...`, `secret=...`, `password=...` मान शामिल हैं। एनालिटिक्स केवल पॉइंटर आईडी, आकार और हैश मेटाडेटा संग्रहीत करता है। ## सत्यापन गेट केंद्रित सत्यापन गेट बाहरी कमांड का उपयोग किए बिना अंतर्निहित इनलाइन फ़िल्टर परीक्षण चलाता है: ```bash node --import tsx/esm --test tests/unit/compression/rtk-verify.test.ts ``` व्यापक RTK गेट यह है: ```bash node --import tsx/esm --test \ tests/unit/compression/rtk-*.test.ts \ tests/unit/compression/pipeline-integration.test.ts \ tests/unit/compression/context-compression-api.test.ts ``` रिलीज़ से पहले व्यापक संपीड़न गेट चलाएँ: ```bash node --import tsx/esm --test \ tests/unit/compression/*.test.ts \ tests/golden-set/*.test.ts \ tests/integration/compression-pipeline.test.ts \ tests/unit/api/compression/compression-api.test.ts ``` ## RTK का विस्तार करना 1. कोई फ़िल्टर JSON फ़ाइल जोड़ें या अपडेट करें। 2. कम-से-कम एक `tests[]` नमूना शामिल करें जो महत्वपूर्ण व्यवहार को प्रमाणित करता हो। 3. नए कमांड परिवारों के लिए `tests/unit/compression/fixtures/rtk/` के अंतर्गत कोई फ़िक्स्चर जोड़ें। 4. नया आउटपुट वर्ग प्रस्तुत करते समय कमांड पहचान कवरेज जोड़ें। 5. सत्यापन और व्यापक RTK गेट चलाएँ। 6. यदि फ़िल्टर प्रोजेक्ट-स्थानीय है, तो समीक्षा के बाद ही `.rtk/filters.json` को कमिट और `.rtk/trust.json` को रीफ़्रेश करें। --- ## तीव्रता स्तर (v3.8.16+) RTK **3 तीव्रता स्तरों** का समर्थन करता है, जो **संपीड़न की आक्रामकता** और **सुरक्षा** के बीच संतुलन बनाते हैं। स्तर को इंजन कॉन्फ़िगरेशन में `config.intensity` के माध्यम से सेट किया जाता है। ### 3 स्तर | स्तर | ट्रंकेशन सीमा | टोकन बचत | जोखिम | इसके लिए सर्वोत्तम | | --------------------- | ------------------------- | -------- | ------- | -------------------------------- | | `minimal` | प्रति अनुभाग 24 पंक्तियाँ | ~20-40% | बहुत कम | महत्वपूर्ण संदर्भ वाला प्रोडक्शन | | `standard` (डिफ़ॉल्ट) | प्रति अनुभाग 24 पंक्तियाँ | ~50-70% | कम | दैनिक कोडिंग सत्र | | `aggressive` | प्रति अनुभाग 16 पंक्तियाँ | ~70-90% | मध्यम | लंबे सत्र, अधिकतम बचत | ### ट्रंकेशन कहाँ होता है ट्रंकेशन सीमा `lineFilter.ts` को प्रभावित करती है: ```ts // open-sse/services/compression/engines/rtk/index.ts:329-330 से config.intensity === "aggressive" ? 16 : 24, config.intensity === "aggressive" ? 16 : 24, ``` प्रत्येक अनुभाग के **आरंभ** और **अंत**, दोनों को सुरक्षित रखा जाता है; ट्रंकेशन लागू होने पर बीच की सामग्री हटा दी जाती है। ### क्या बना रहता है बनाम क्या काटा जाता है | सामग्री | minimal | standard | aggressive | | --------------------------- | ------------ | ------------ | ------------ | | त्रुटियाँ / स्टैक ट्रेस | ✅ सुरक्षित | ✅ सुरक्षित | ✅ सुरक्षित | | परीक्षण विफलताएँ | ✅ सुरक्षित | ✅ सुरक्षित | ✅ सुरक्षित | | बिल्ड त्रुटियाँ | ✅ सुरक्षित | ✅ सुरक्षित | ✅ सुरक्षित | | परीक्षण सफलताएँ (विस्तृत) | ✅ सुरक्षित | 🟡 संक्षिप्त | 🟡 संक्षिप्त | | नियमित आउटपुट (जानकारी लॉग) | 🟡 संक्षिप्त | 🟡 संक्षिप्त | ❌ हटाया गया | | प्रगति बार | 🟡 संक्षिप्त | ❌ हटाया गया | ❌ हटाया गया | | बैनर / ASCII कला | 🟡 संक्षिप्त | ❌ हटाया गया | ❌ हटाया गया | ### सही तीव्रता चुनना ``` क्या संदर्भ खोना विनाशकारी है? │ ┌───────────┼───────────┐ │ │ │ हाँ नहीं निश्चित नहीं │ │ │ ▼ │ │ minimal │ │ │ │ │ │ ▼ ▼ │ थ्रूपुट कितना पहले `standard` आज़माएँ │ महत्वपूर्ण है? (80% मामलों में │ │ काम करता है) │ ┌────┴────┐ │ │ │ │ कम अधिक │ │ │ │ ▼ ▼ │ standard aggressive │ │ │ └──────┴─────────┘ ``` ### तीव्रता कॉन्फ़िगर करना **प्रति-कॉम्बो** (कॉम्बो कॉन्फ़िगरेशन में): ```json { "combo": "my-coding-combo", "routing": {/* ... */}, "compression": { "engine": "rtk", "intensity": "aggressive" } } ``` **प्रोग्राम के माध्यम से**: `rtkEngine` (`@omniroute/open-sse/services/compression/engines/rtk`) एक `CompressionEngine` है और इसमें कोई `updateConfig` विधि नहीं है। इसके बजाय रजिस्ट्री हेल्पर के माध्यम से इंजन का कॉन्फ़िगरेशन अपडेट करें: ```ts import { updateEngineConfig } from "@omniroute/open-sse/services/compression/engines/registry"; updateEngineConfig("rtk", { intensity: "aggressive" }); ``` ### प्रभाव सत्यापित करना यह पुष्टि करने के लिए कि आपका फ़िल्टर आपकी चुनी गई तीव्रता पर सुरक्षित है, **सत्यापन गेट** (नीचे देखें) का उपयोग करें: ```ts import { runRtkFilterTests } from "omniroute/compression/engines/rtk/verify"; const result = runRtkFilterTests({ intensity: "aggressive" }); if (!result.passed) { console.error("आक्रामक तीव्रता पर फ़िल्टर विफल हुए"); } ``` --- ## कस्टम फ़िल्टर डेवलपमेंट (v3.8.16+) `engines/rtk/filters/` डायरेक्टरी में **49+ बिल्ट-इन फ़िल्टर JSON फ़ाइलें** हैं। आप उन कस्टम टूल्स के आउटपुट को संपीड़ित करने के लिए अपने फ़िल्टर जोड़ सकते हैं जो डिफ़ॉल्ट फ़िल्टर्स में शामिल नहीं हैं। ### फ़िल्टर स्कीमा (Zod) ```ts { "id": "string", // आवश्यक। फ़िल्टर पहचानकर्ता (kebab-case, उदाहरण: "python-traceback") "label": "string", // आवश्यक। मानव-पठनीय फ़िल्टर नाम "description": "string", // वैकल्पिक (डिफ़ॉल्ट: "")। फ़िल्टर क्या करता है, इसका संक्षिप्त विवरण "category": "git|test|build|shell|docker|package|infra|cloud|generic", "priority": number, // वैकल्पिक (0-100, डिफ़ॉल्ट: 50)। निष्पादन क्रम (अधिक मान = पहले) "match": { "commands": ["string"], // मिलान किए जाने वाले कमांड नाम (उदाहरण: "python", "pytest") "patterns": ["string"], // आउटपुट से मिलान करने वाले रेगुलर एक्सप्रेशन पैटर्न "outputTypes": ["string"] // पहचानी गई आउटपुट श्रेणियाँ (उदाहरण: "test-failure") }, "rules": { "stripAnsi": boolean, // वैकल्पिक (डिफ़ॉल्ट: false)। ANSI रंग कोड हटाएँ "replace": [ // खोजने-और-बदलने के नियम (डिफ़ॉल्ट: []) { "pattern": "regex", "replacement": "..." } ], "matchOutput": [ // पैटर्न मिलते ही आगे की प्रक्रिया रोकें (डिफ़ॉल्ट: []) { "pattern": "regex", "message": "short summary", "unless": "regex" // यदि यह पैटर्न मेल खाता है, तो छोड़ दें } ], "includePatterns": ["string"], // रखी जाने वाली पंक्तियाँ (रेगुलर एक्सप्रेशन पैटर्न, डिफ़ॉल्ट: []) "dropPatterns": ["string"], // हटाई जाने वाली पंक्तियाँ (रेगुलर एक्सप्रेशन पैटर्न, डिफ़ॉल्ट: []) "collapsePatterns": ["string"], // एकल आवृत्ति में समेटी जाने वाली पंक्तियाँ (डिफ़ॉल्ट: []) "deduplicate": boolean, // वैकल्पिक (डिफ़ॉल्ट: false)। डुप्लिकेट पंक्तियाँ हटाएँ "truncateLineAt": number, // वैकल्पिक (डिफ़ॉल्ट: 0)। पंक्तियों को अधिकतम वर्णों तक छोटा करें "maxLines": number, // वैकल्पिक (डिफ़ॉल्ट: 0)। कुल पंक्तियों की कठोर सीमा "headLines": number, // वैकल्पिक (डिफ़ॉल्ट: 20)। मेल खाने वाले आउटपुट की पहली N पंक्तियाँ रखें "tailLines": number, // वैकल्पिक (डिफ़ॉल्ट: 20)। मेल खाने वाले आउटपुट की अंतिम N पंक्तियाँ रखें "onEmpty": "string", // वैकल्पिक (डिफ़ॉल्ट: "")। सभी पंक्तियाँ फ़िल्टर हो जाने पर फ़ॉलबैक संदेश "filterStderr": boolean // वैकल्पिक (डिफ़ॉल्ट: false)। stderr आउटपुट को भी फ़िल्टर करें }, "preserve": { "errorPatterns": ["string"], // वे पैटर्न जिन्हें हमेशा सुरक्षित रखा जाना चाहिए (डिफ़ॉल्ट: []) "summaryPatterns": ["string"] // अंतिम सारांश पंक्ति के पैटर्न (डिफ़ॉल्ट: []) }, "tests": [ // सत्यापन के लिए इनलाइन परीक्षण (डिफ़ॉल्ट: []) { "name": "string", // आवश्यक। परीक्षण का नाम "input": "sample output", // आवश्यक। नमूना इनपुट टेक्स्ट "expected": "expected output", // आवश्यक। अपेक्षित संपीड़ित आउटपुट "command": "optional command" // वैकल्पिक। कमांड संदर्भ } ] } ``` ### उदाहरण: Python ट्रेसबैक फ़िल्टर ```json { "id": "python-traceback", "label": "Python Traceback Filter", "description": "Compresses Python tracebacks to essential file/line locations and error type", "category": "test", "priority": 60, "match": { "commands": ["python", "python3", "pytest", "uv", "poetry"], "patterns": ["Traceback \\(most recent call last\\)", "Error", "Exception"], "outputTypes": ["error-traceback"] }, "rules": { "stripAnsi": true, "includePatterns": [ "Traceback \\(most recent call last\\)", "^\\s*File \".+\", line \\d+", "^\\s*[A-Z][a-zA-Z]+Error:", "^\\s*[A-Z][a-zA-Z]+Exception" ], "dropPatterns": ["site-packages/", "^\\s+[a-z_]+\\([^)]*\\)$"], "headLines": 5, "tailLines": 3, "maxLines": 25, "filterStderr": true }, "preserve": { "errorPatterns": ["Error:", "Exception:", "Traceback"], "summaryPatterns": ["^[A-Z][a-zA-Z]+(?:Error|Exception):"] }, "tests": [ { "name": "preserves-error-type-and-location", "input": "Traceback (most recent call last):\n File \"app.py\", line 42, in main\n do_thing()\n File \"lib/utils.py\", line 17, in helper\n return 1 / 0\nZeroDivisionError: division by zero", "expected": "Traceback (most recent call last):\n File \"app.py\", line 42, in main\n File \"lib/utils.py\", line 17, in helper\nZeroDivisionError: division by zero", "command": "python app.py" } ] } ``` ### कस्टम फ़िल्टर लोड करना फ़ाइल को किसी मान्यता-प्राप्त स्थान पर रखें: ``` ~/.omniroute/rtk/filters/my-filter.json # उपयोगकर्ता-स्तर /.rtk/filters/my-filter.json # प्रोजेक्ट-स्तर ``` स्टार्टअप पर फ़िल्टर `open-sse/services/compression/engines/rtk/filterLoader.ts` में मौजूद `loadRtkFilters()` के माध्यम से स्वचालित रूप से लोड होते हैं। लोडर निम्न स्थानों से फ़िल्टर खोजता है: - बिल्ट-इन कैटलॉग: `open-sse/services/compression/engines/rtk/filters/` - उपयोगकर्ता डायरेक्टरी: `~/.omniroute/rtk/filters/` - प्रोजेक्ट डायरेक्टरी: `/.rtk/filters/` फ़िल्टर को प्रोग्रामेटिक रूप से लोड करने के लिए: ```ts import { loadRtkFilters } from "@omniroute/open-sse/services/compression/engines/rtk/filterLoader"; // विकल्प: customFiltersEnabled (उपयोगकर्ता/प्रोजेक्ट फ़िल्टर लोड करें, डिफ़ॉल्ट रूप से चालू), // trustProjectFilters, refresh. const filters = loadRtkFilters({ customFiltersEnabled: true }); ``` ### सत्यापन लोड किए जाते समय फ़िल्टर को Zod स्कीमा के विरुद्ध सत्यापित किया जाता है। गलत संरचना वाला फ़िल्टर लोड होने में विफल रहेगा और एक त्रुटि लॉग करेगा: ``` RTK_FILTER_LOADER: filter "my-filter" failed validation: - rules.replace.0.pattern: Invalid regex - match.commands: must not be empty ``` इंस्टॉल किए गए सभी फ़िल्टर सत्यापित करने के लिए, `runRtkFilterTests()` को कॉल करें, जिसे `open-sse/services/compression/engines/rtk/verify.ts` से एक्सपोर्ट किया गया है। ### सर्वोत्तम अभ्यास 1. **हमेशा `tests[]` शामिल करें** — ये साबित करते हैं कि आपका फ़िल्टर काम करता है और रिग्रेशन रोकते हैं 2. **शॉर्ट-सर्किट के लिए `matchOutput` का उपयोग करें** — यदि एक पंक्ति पूरी बात बता देती है, तो पूरे ब्लॉक को बदल दें 3. **`strip` के बजाय `keep` को प्राथमिकता दें** — स्पष्ट "हमेशा सुरक्षित रखें" नियम, "हमेशा हटाएँ" नियमों से अधिक सुरक्षित होते हैं 4. **तीनों इंटेंसिटी स्तरों पर परीक्षण करें** — `minimal` को कुछ नहीं करना चाहिए, जबकि `aggressive` को फिर भी त्रुटियों को सुरक्षित रखना चाहिए 5. **`unless` फ़ील्ड का उपयोग करें** — "यदि X मौजूद है, तो ट्रिगर न करें" के साथ शॉर्ट-सर्किट को सुरक्षित करें --- ## रॉ आउटपुट रिकवरी और सत्यापन गेट जब RTK आउटपुट को अत्यधिक संपीड़ित करता है, तो आप डीबगिंग, ऑडिट या रीप्ले के लिए **मूल टेक्स्ट पुनर्प्राप्त** कर सकते हैं। ### रॉ आउटपुट रिकवरी कैसे काम करती है ``` मूल आउटपुट (10K टोकन) │ ▼ RTK संपीड़न (rawOutput.enabled=true के साथ) │ ├─▶ संपीड़ित आउटपुट (2K टोकन) ──▶ LLM को │ └─▶ मूल आउटपुट (10K टोकन) ──▶ DB में संग्रहीत (request_id द्वारा लिंक किया गया) ``` ### रॉ आउटपुट स्टोरेज सक्षम करना **प्रति-अनुरोध** (कॉम्बो कॉन्फ़िगरेशन में): ```json { "compression": { "engine": "rtk", "intensity": "aggressive", "rawOutput": { "enabled": true, "maxBytes": 1048576 // 1MB सीमा } } } ``` **डिफ़ॉल्ट**: `rawOutput.enabled: false` (स्टोरेज बचाता है)। ### स्टोरेज लागत | प्रति-अनुरोध | 1MB सीमा | 10MB सीमा | | ----------------------------- | ------------ | ------------- | | औसत संपीड़ित आउटपुट | ~5KB | ~5KB | | संग्रहीत रॉ आउटपुट | ~50-500KB | ~500KB-5MB | | प्रतिदिन 1000 अनुरोधों के साथ | 50-500MB/दिन | 500MB-5GB/दिन | > **अनुशंसा**: रॉ आउटपुट केवल **डीबगिंग सत्रों** या **सैंपल किए गए ऑडिट** के लिए सक्षम करें, इसे हमेशा चालू न रखें। ### मूल आउटपुट पुनर्प्राप्त करना ```ts import { readRtkRawOutput } from "omniroute/compression/engines/rtk/rawOutput"; const raw = readRtkRawOutput(pointerId); // कंप्रेशन आँकड़ों से pointerId if (raw) { console.log("Original output:", raw); } ``` कंप्रेशन के बाद `pointerId`, `CompressionStats.rtkRawOutputPointers[]` में लौटाया जाता है। फ़ंक्शन सिग्नेचर के लिए `open-sse/services/compression/engines/rtk/rawOutput.ts:102` देखें। ### सत्यापन गेट **RTK फ़िल्टर सत्यापन** (`open-sse/services/compression/engines/rtk/verify.ts`) सभी फ़िल्टरों को उनके `tests[]` के विरुद्ध सत्यापित करता है और सुनिश्चित करता है कि सभी 3 तीव्रता स्तरों पर व्यवहार सही हो। सत्यापन चलाने के लिए **`runRtkFilterTests()` को कॉल करें**: ```ts import { runRtkFilterTests } from "open-sse/services/compression/engines/rtk/verify"; const result = runRtkFilterTests(); console.log(`Passed: ${result.outcomes.filter((o) => o.passed).length}`); console.log(`Failed: ${result.outcomes.filter((o) => !o.passed).length}`); if (!result.passed) { console.error("Filters failed verification"); result.outcomes .filter((o) => !o.passed) .forEach((o) => { console.error( ` - ${o.filterId} / ${o.testName}: expected "${o.expected}", got "${o.actual}"` ); }); } ``` **यह क्या सत्यापित करता है**: 1. प्रत्येक फ़िल्टर लोड होता है और स्कीमा सत्यापन पास करता है 2. प्रत्येक `tests[]` प्रविष्टि अपेक्षित आउटपुट उत्पन्न करती है 3. `minimal` तीव्रता कोई परिवर्तन नहीं करती (मूल को सुरक्षित रखती है, केवल संरचनात्मक फ़िल्टर लागू करती है) 4. `aggressive` तीव्रता त्रुटियों, परीक्षण विफलताओं और स्टैक ट्रेस को सुरक्षित रखती है 5. संपीड़ित आउटपुट कभी भी मूल इनपुट से बड़ा नहीं होता - स्रोत: `open-sse/services/compression/engines/rtk/` (63 फ़ाइलें, ~70KB) - **फ़िल्टर परिवर्तन मर्ज करने से पहले** — हमेशा सुनिश्चित करें कि परीक्षण पास हों - **RTK इंजन अपग्रेड करने के बाद** — स्कीमा बदल चुका हो सकता है - **निगरानी के दौरान समय-समय पर** — परीक्षण फ़िक्स्चर में ड्रिफ़्ट से सुरक्षा करता है - **नया टूल/कमांड परिवार जोड़ते समय** — प्रमाणित करता है कि नया फ़िल्टर काम करता है --- ## यह भी देखें - [COMPRESSION_GUIDE.md](./COMPRESSION_GUIDE.md) — संपूर्ण कम्प्रेशन पाइपलाइन का अवलोकन - [COMPRESSION_ENGINES.md](./COMPRESSION_ENGINES.md) — इंजन रजिस्ट्री और अंतर्निहित इंजन - [EXTENDING_COMPRESSION.md](./EXTENDING_COMPRESSION.md) — कस्टम इंजन, भाषा पैक और स्टैक्ड पाइपलाइन - स्रोत: `open-sse/services/compression/engines/rtk/` (63 फ़ाइलें, ~70KB)