# OmniRoute Codebase Documentation (Oʻzbekcha) 🌐 **Languages:** 🇺🇸 [English](../../../../architecture/CODEBASE_DOCUMENTATION.md) · 🇪🇹 [am](../../../am/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇦 [ar](../../../ar/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇦🇿 [az](../../../az/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇬 [bg](../../../bg/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇩 [bn](../../../bn/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇦 [bs](../../../bs/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇨🇿 [cs](../../../cs/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇩🇰 [da](../../../da/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇩🇪 [de](../../../de/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇬🇷 [el](../../../el/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇪🇸 [es](../../../es/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇪🇪 [et](../../../et/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇷 [fa](../../../fa/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇫🇮 [fi](../../../fi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇫🇷 [fr](../../../fr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇪 [ga](../../../ga/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [gu](../../../gu/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇬 [ha](../../../ha/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇱 [he](../../../he/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [hi](../../../hi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇭🇷 [hr](../../../hr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇭🇺 [hu](../../../hu/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇦🇲 [hy](../../../hy/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇩 [id](../../../id/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇬 [ig](../../../ig/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇹 [it](../../../it/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇯🇵 [ja](../../../ja/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇬🇪 [ka](../../../ka/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇰🇭 [km](../../../km/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [kn](../../../kn/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇰🇷 [ko](../../../ko/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇱🇹 [lt](../../../lt/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇱🇻 [lv](../../../lv/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [ml](../../../ml/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [mr](../../../mr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇲🇾 [ms](../../../ms/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇲🇹 [mt](../../../mt/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇲🇲 [my](../../../my/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇵 [ne](../../../ne/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇱 [nl](../../../nl/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇴 [no](../../../no/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [or](../../../or/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [pa](../../../pa/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇭 [phi](../../../phi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇱 [pl](../../../pl/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇹 [pt](../../../pt/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇷🇴 [ro](../../../ro/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇷🇺 [ru](../../../ru/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇱🇰 [si](../../../si/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇰 [sk](../../../sk/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇮 [sl](../../../sl/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇷🇸 [sr](../../../sr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇪 [sv](../../../sv/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇰🇪 [sw](../../../sw/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [ta](../../../ta/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [te](../../../te/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇹🇭 [th](../../../th/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇹🇷 [tr](../../../tr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇰 [ur](../../../ur/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇻🇳 [vi](../../../vi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇬 [yo](../../../yo/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/architecture/CODEBASE_DOCUMENTATION.md) --- > **Versiya:** v3.8.51 > **Soʻnggi yangilanish:** 2026-06-28 > **Auditoriya:** OmniRouteʼga hissa qoʻshayotgan yoki uning asosida integratsiyalar yaratayotgan muhandislar. > > Yuqori darajadagi arxitektura diagrammalari va har bir quyi tizim asosidagi mantiq bilan tanishish uchun > [ARCHITECTURE.md](./ARCHITECTURE.md) faylini oʻqing. Alohida quyi tizimlar > (Auto Combo, MCP serveri, A2A serveri, Skills, Memory, Cloud Agents, Resilience, > Compression va boshqalar) haqida batafsil maʼlumot olish uchun ushbu `docs/` katalogidagi ularga bagʻishlangan fayllarni koʻring. Ushbu fayl yangi muhandis kataloglar tuzilmasida yoʻl topishi, bajarilish vaqtida qatlamlarning qanday tashkil etilganini tushunishi va yangi modullarni oʻylab topmasdan kodni qayerga qoʻshish kerakligini bilishi uchun **bugungi kunda repozitoriyda nimalar mavjudligini** tavsiflaydi. --- ## 1. Texnologiyalar toʻplami | Yoʻnalish | Tanlov | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------- | | Veb-freymvork | **Next.js 16** (App Router, mustaqil chiqish, global middleware mavjud emas) | | Dasturlash tili | **TypeScript 6.0+** — maqsad `ES2022`, `module: esnext`, `moduleResolution: bundler`, `strict: false` | | Bajarilish muhiti | **Node.js** `>=22.22.2 <23` yoki `>=24.0.0 <27` (`engines` + `SUPPORTED_NODE_RANGE` orqali majburiy belgilanadi) | | Maʼlumotlar bazasi | `better-sqlite3` orqali **SQLite** (yagona nusxa, WAL jurnallash) | | Ish stoli | **Electron 41** + `electron-builder` 26.10 (`electron/` ichidagi alohida ish maydoni) | | Testlar | **Node mahalliy test bajaruvchisi** (modul/integratsiya), **Vitest** (MCP, autoCombo, kesh), **Playwright** (e2e + protocols-e2e) | | Yigʻish | `scripts/build/build-next-isolated.mjs` orqali Next.js mustaqil yigʻilishi | | Lint/formatlash | ESLint yassi konfiguratsiyasi + Prettier (Husky pre-commit orqali `lint-staged`) | | Modul tizimi | Hamma joyda ESM (`"type": "module"`) | | Ish maydonlari | npm ish maydoni — `open-sse` yagona quyi ish maydonidir | Yoʻl taxalluslari (`tsconfig.json`): - `@/*` → `src/*` - `@omniroute/open-sse` → `open-sse/index.ts` - `@omniroute/open-sse/*` → `open-sse/*` Standart HTTP porti: **`20128`** (API va boshqaruv paneli bir xil jarayondan foydalanadi). Maʼlumotlar katalogi `DATA_DIR` muhit oʻzgaruvchisi orqali belgilanadi; standart qiymati `~/.omniroute/`. --- ## 2. Repozitoriy tuzilmasi ``` OmniRoute/ ├── src/ Next.js ilovasi (App Router, kutubxonalar, domen, server, umumiy qismlar) ├── open-sse/ Oqimli uzatish mexanizmi ish maydoni (@omniroute/open-sse) ├── electron/ Ish stoli qobigʻi (Electron 41 asosiy jarayoni + preload) ├── bin/ CLI kirish nuqtalari (omniroute, reset-password) ├── tests/ Modul, integratsiya, e2e, protocols-e2e, tarjimon, xavfsizlik testlari va sinov maʼlumotlari ├── scripts/ Yigʻish, sinxronlash, tekshirish, migratsiya va bajarilish muhiti yordamchi skriptlari ├── docs/ Ommaviy hujjatlar (ushbu katalog) ├── public/ Statik resurslar, PWA manifesti, service worker ├── config/ Bajarilish muhiti konfiguratsiyasi namunalari ├── images/ Marketing/skrinshot resurslari ├── _ideia/, _references/, _mono_repo/, _tasks/ Ichki qoralamalar/rejalashtirish (tarqatilmaydi) ├── CLAUDE.md Claude Code uchun repozitoriy qoidalari ├── AGENTS.md Agentlar uchun batafsil arxitektura maʼlumotnomasi ├── package.json v3.8.51, ish maydoni ildizi └── tsconfig.json Yoʻl taxalluslari + kompilyatorning asosiy parametrlari ``` --- ## 3. `src/` — Next.js ilovasi ``` src/ ├── app/ App Router sahifalari + API marshrutlari ├── lib/ Asosiy kutubxonalar (DB, autentifikatsiya, OAuth, ko‘nikmalar, xotira, …) ├── domain/ Sof domen qatlami (siyosat, zaxira mexanizmi, xarajat, bloklash, …) ├── server/ Faqat serverga oid modullar (avtorizatsiya, cors, autentifikatsiya) ├── shared/ Turlar, konstantalar, validatsiya, shartnomalar, yordamchi vositalar (chegaralararo foydalanish uchun xavfsiz) ├── mitm/ CLI integratsiyasi uchun vositachi proksi yordamchilari ├── models/ Mahalliy model metama’lumotlari / taxalluslari ├── sse/ Hali ham src/ ichida joylashgan eski SSE ishlov beruvchilari (open-sse/ emas) ├── store/ Mijoz tomonidagi holat omborlari ├── middleware/ Marshrut darajasidagi oraliq dastur yordamchi vositalari (Next.js global oraliq dasturi emas) ├── scripts/ Ilova kodi tomonidan import qilinishi mumkin bo‘lgan ichki skriptlar ├── types/ Muhit va umumiy TS turlari ├── i18n/ Lokalizatsiya to‘plamlari ├── instrumentation.ts Next.js instrumentatsiya ilgagi ├── instrumentation-node.ts └── proxy.ts Yuqori darajadagi proksini ishga tushirish yordamchisi ``` ### 3.1 `src/app/` — App Router App Router boshqaruv paneli interfeysini hamda ommaviy/boshqaruv HTTP APIʼsini taqdim etadi. **Global oraliq dastur mavjud emas** — tutib olish har bir marshrutda alohida amalga oshiriladi. `src/app/` ostidagi yuqori darajali segmentlar: | Yo‘l | Maqsad | | ----------------------------------------------------------------------------- | -------------------------------------------------------------- | | `api/` | Barcha HTTP API marshrutlari (quyidagi tafsilotlar) | | `a2a/` | A2A JSON-RPC 2.0 oxirgi nuqtasi (`POST /a2a`) | | `.well-known/agent.json/` | A2A Agent Card aniqlash hujjati | | `(dashboard)/` | Boshqaruv paneli interfeysi (marshrut guruhi, URL prefiksisiz) | | `auth/`, `login/`, `forgot-password/`, `callback/` | Autentifikatsiya jarayonlari | | `landing/` | Marketing/boshlang‘ich sahifa | | `docs/` | Ichki API hujjatlari ko‘ruvchisi | | `status/`, `maintenance/`, `offline/` | Operatsion sahifalar | | `privacy/`, `terms/` | Huquqiy sahifalar | | `400/`, `401/`, `403/`, `408/`, `429/`, `500/`, `502/`, `503/` | Statik xato sahifalari | | `error.tsx`, `global-error.tsx`, `not-found.tsx`, `forbidden/`, `loading.tsx` | Freymvorkning xato/yuklanish chegaralari | | `layout.tsx`, `page.tsx`, `globals.css`, `manifest.ts` | Ildiz qobig‘i | #### 3.1.1 `src/app/(dashboard)/dashboard/` — Interfeys sahifalari `agents`, `analytics`, `api-manager`, `audit`, `auto-combo`, `batch`, `cache`, `changelog`, `cli-tools`, `cloud-agents`, `combos`, `compression`, `context`, `costs`, `endpoint`, `health`, `limits`, `logs`, `memory`, `onboarding`, `playground`, `providers`, `search-tools`, `settings`, `skills`, `system`, `translator`, `usage`, `webhooks`, shuningdek, ildizdagi `page.tsx`, `HomePageClient.tsx`, `BootstrapBanner.tsx`. #### 3.1.2 `src/app/api/` — Yuqori darajali API guruhlari ``` src/app/api/ ├── a2a/{status, tasks} ├── acp/ ├── admin/ ├── analytics/ ├── assess/ ├── auth/ ├── batches/ ├── cache/ ├── cli-tools/ ├── cloud/{codex-responses-ws} ├── combos/ ├── compliance/ ├── compression/ ├── context/ ├── db/, db-backups/ ├── evals/ ├── fallback/ ├── files/ ├── health/ ├── init/ ├── internal/{concurrency} ├── keys/ ├── logs/ ├── mcp/{audit, sse, status, stream, tools} ├── memory/{health, [id]/, route.ts} ├── model-combo-mappings/ ├── models/ ├── monitoring/ ├── oauth/ ├── openapi/ ├── policies/ ├── pricing/ ├── provider-metrics/, provider-models/, provider-nodes/ ├── providers/ ├── rate-limit/, rate-limits/ ├── resilience/ ├── restart/, shutdown/ ├── search/ ├── sessions/ ├── settings/ ├── skills/{executions, [id], install, marketplace, route.ts, skillssh} ├── storage/ ├── sync/, synced-available-models/ ├── system/ ├── tags/ ├── telemetry/ ├── token-health/ ├── translator/ ├── tunnels/ ├── services/ Ichki xizmatlarni boshqarish (9router, cliproxy) — LOCAL_ONLY ├── upstream-proxy/ ├── usage/ ├── v1/ OpenAI bilan mos ommaviy API ├── v1beta/ Gemini uslubidagi muvofiqlik ├── version-manager/ └── webhooks/ ``` #### 3.1.2a `src/app/api/services/` — Ichki xizmatlarni boshqarish 9Router va CLIProxyAPIʼni o‘rnatish, ishga tushirish, to‘xtatish va kuzatish uchun marshrutlar. Barcha yo‘llar **LOCAL_ONLY** (faqat loopback, qat’iy qoida #17) sifatida tasniflangan, chunki ular `npm install` buyrug‘ini chaqirishi va ichki jarayonlarni ishga tushirishi mumkin. ``` src/app/api/services/ ├── 9router/ │ ├── _lib.ts getOrInitSupervisor() yordamchisi │ ├── install/route.ts POST — execFile orqali npm install │ ├── start/route.ts POST — supervisor.start() │ ├── stop/route.ts POST — supervisor.stop() │ ├── restart/route.ts POST — supervisor.restart() │ ├── update/route.ts POST — yangiroq versiyani npm install orqali oʻrnatish │ ├── rotate-key/route.ts POST — yangi API kalitini yaratish + qayta ishga tushirish │ ├── status/route.ts GET — jonli holat + DB holati + versiya metamaʼlumotlari │ └── auto-start/route.ts POST — auto_start bayrogʻini almashtirish ├── cliproxy/ │ ├── _lib.ts getOrInitSupervisor() yordamchisi │ ├── install/route.ts POST — npm install │ ├── start/route.ts POST — supervisor.start() │ ├── stop/route.ts POST — supervisor.stop() │ ├── restart/route.ts POST — supervisor.restart() │ ├── update/route.ts POST — yangiroq versiyani npm install orqali oʻrnatish │ ├── status/route.ts GET — jonli holat + DB holati + versiya metamaʼlumotlari │ └── auto-start/route.ts POST — auto_start bayrogʻini almashtirish └── [name]/ └── logs/route.ts GET — SSE jurnalining oxirgi qismi (barcha xizmatlar tomonidan umumiy foydalaniladi) ``` Tegishli boshqaruv paneli interfeysi: `src/app/(dashboard)/dashboard/providers/services/` — ikki ichki oynali sahifa (CLIProxyAPI + 9Router). 9Router ichki interfeysi uchun teskari proksi: `src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts` Batafsil: `docs/frameworks/EMBEDDED-SERVICES.md` #### 3.1.3 `src/app/api/v1/` — OpenAI bilan mos keluvchi ommaviy API ``` v1/ ├── accounts/[id]/ hisobni izlash ├── agents/tasks/[id]/, agents/tasks/ A2A uslubidagi vazifa endpointlari ├── api/ v1/api ostida taqdim etilgan ichki API yordamchilari ├── audio/{speech, transcriptions}/ TTS + STT ├── batches/[id]/{cancel}, batches/ OpenAI Batches API ├── chat/completions/ Chat Completions (asosiy endpoint) ├── completions/ Eski matnni yakunlash ├── embeddings/ Embeddinglar ├── files/[id]/, files/ Files API ├── _helpers/ Umumiy marshrut yordamchilari (ommaviy URL yoʻq) ├── images/{edits, generations}/ Tasvir yaratish + tahrirlash ├── issues/ Muammolarni saralash yordamchi endpointlari ├── management/{proxies}/ v1 ichidagi boshqaruv doirasidagi marshrutlar ├── messages/{count_tokens}/ Anthropic uslubidagi xabarlar bilan moslik ├── models/ Modellar roʻyxati (`route.ts`, `catalog.ts`) ├── moderations/ Moderatsiya ├── music/ Musiqa yaratish ├── providers/[provider]/ Har bir provayderga oid amallar ├── quotas/{check} Kvotani tekshirish ├── registered-keys/ Roʻyxatdan oʻtgan kalitlarni boshqarish ├── rerank/ Qayta tartiblash ├── responses/[...path]/ OpenAI Responses API (barcha yoʻllarni qamrab oluvchi) ├── search/ Veb-qidiruv ├── videos/ Video yaratish ├── ws/ WebSocket koʻprigi └── route.ts Indeks ishlov beruvchisi ``` Har bir marshrut fayli bir xil andozaga amal qiladi: ``` Marshrut → CORS dastlabki soʻrovi → Zod orqali soʻrov tanasini tekshirish → ixtiyoriy autentifikatsiya → API kaliti siyosatini qoʻllash → ishlov beruvchiga yoʻnaltirish (open-sse) ``` `v1beta/` — Gemini uslubidagi moslik qatlami (soʻrovlarni ayni `open-sse/handlers/` konveyeriga oʻgiruvchi yupqa oʻrama). ### 3.2 `src/lib/` — Asosiy kutubxonalar Maʼlumotlar, sinxronlash, OAuth, koʻnikmalar, xotira va boshqalarni doimo ushbu modullar orqali import qiling. Quyidagi jadval haqiqiy kataloglar va eʼtiborga molik yuqori darajadagi fayllarni guruhlaydi. | Modul | Maqsadi | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `a2a/` | A2A protokoli serveri: `taskManager.ts`, `streaming.ts`, `taskExecution.ts`, `routingLogger.ts`, `skills/` (6 ta ko‘nikma: xarajatlar tahlili, holat hisoboti, provayderlarni aniqlash, kvotalarni boshqarish, aqlli marshrutlash, imkoniyatlar ro‘yxati) | | `acp/` | Agent-Control-Protocol: `index.ts`, `manager.ts`, `registry.ts` | | `api/` | Ichki API yordamchilari: `requireManagementAuth.ts`, `requireCliToolsAuth.ts`, `errorResponse.ts` | | `auth/` | `managementPassword.ts` (parolni tiklash / xeshlash) | | `batches/` | OpenAI Batches API xizmati (`service.ts`) | | `catalog/` | OpenRouter katalogini sinxronlash (`openrouterCatalog.ts`) | | `cloudAgent/` | Bulut agentlari reyestri: `api.ts`, `baseAgent.ts`, `db.ts`, `index.ts`, `registry.ts`, `types.ts`, `agents/{codex, devin, jules}.ts` | | `combos/` | Kombinatsiyalarni aniqlash yordamchilari | | `compliance/` | Audit + provayder auditi: `index.ts`, `providerAudit.ts` | | `config/` | Ish vaqti konfiguratsiyasini bog‘lash qatlami | | `db/` | SQLite domen modullari (§3.2.1 ga qarang) | | `display/` | API javoblarida ishlatiladigan UI/ko‘rsatish yordamchilari | | `embeddings/` | Embedding xizmatlari reyestri | | `env/` | Muhit o‘zgaruvchilarini yuklash + introspeksiya | | `evals/` | Baholashning ish vaqti muhiti | | `guardrails/` | `piiMasker.ts`, `promptInjection.ts`, `visionBridge.ts`, `visionBridgeHelpers.ts`, `registry.ts`, `base.ts` | | `jobs/` | Fon vazifalari (`autoUpdate.ts`, …) | | `memory/` | Doimiy xotira: `store.ts`, `cache.ts`, `retrieval.ts`, `summarization.ts`, `extraction.ts`, `injection.ts`, `qdrant.ts`, `settings.ts`, `verify.ts`, `schemas.ts`, `types.ts` | | `monitoring/` | `observability.ts` | | `oauth/` | OAuth/import provayder modullari (22 ta): `agy`, `antigravity`, `claude`, `cline`, `codebuddy-cn`, `codex`, `cursor`, `devin-desktop`, `ghe-copilot`, `github`, `gitlab-duo`, `grok-cli-oauth`, `grok-cli`, `kilocode`, `kimi-coding`, `kiro`, `openference`, `qoder`, `trae`, `xai-oauth`, `zed-hosted`, `zed`, shuningdek, `services/`, `utils/` va `constants/oauth.ts` | | `plugins/` | Plagin yuklagichi (`index.ts`) | | `promptCache/` | `prefixAnalyzer.ts`, `index.ts` | | `providerModels/` | Boshqariladigan modellar hayotiy sikli: `modelDiscovery.ts`, `managedModelImport.ts`, `managedAvailableModels.ts`, `cursorAgent.ts` | | `providers/` | Provayder yordamchilari: `catalog.ts`, `validation.ts`, `imageValidation.ts`, `claudeExtraUsage.ts`, `codexConnectionDefaults.ts`, `codexFastTier.ts`, `webCookieAuth.ts`, `managedAvailableModels.ts`, `requestDefaults.ts` | | `resilience/` | `settings.ts` — avtomatik uzgich, sovitish davri va bloklash sozlamalari | | `runtime/` | Ish vaqti muhiti imkoniyatlarini aniqlash | | `search/` | `executeWebSearch.ts` | | `services/` | Ichki o‘rnatilgan xizmatlar freymvorki: `ServiceSupervisor.ts` (operatsiya qulfi, halqali bufer va holat tekshiruvchisiga ega universal quyi jarayon nazoratchisi), `bootstrap.ts` (jarayon darajasida ro‘yxatdan o‘tkazish va avtomatik ishga tushirish), `registry.ts` (vosita → nazoratchi xaritasi), `apiKey.ts` (AES-256-GCM kalitlar ombori), `modelSync.ts` (modellarni davriy sinxronlash), `ringBuffer.ts` (5 MB hajmli halqali jurnal buferi), `healthCheck.ts` (HTTP holat tekshiruvi), `types.ts`, `embedWsProxy.ts` (WebSocket proksisi), `installers/{ninerouter,cliproxy}.ts`. `docs/frameworks/EMBEDDED-SERVICES.md` fayliga qarang | | `agentSkills/` | Agent ko‘nikmalari katalogi + generatori: `catalog.ts` (getCatalog/getSkillById/filterCatalog/computeCoverage), `generator.ts` (generateAgentSkills → `skills/{id}/SKILL.md` fayliga yozadi), `openapiParser.ts` (OpenAPI spetsifikatsiyasidan REST oxirgi nuqtalarini ajratib oladi), `cliRegistryParser.ts` (bin/cli-registry dan CLI quyi buyruqlarini ajratib oladi), `schemas.ts` (Zod: AgentSkillSchema, SkillCoverageSchema, ListQuerySchema, GenerateBodySchema), `types.ts` (AgentSkill, SkillCoverage, SkillMarkdown, GeneratorReport). REST marshrutlari (`/api/agent-skills/*`), MCP vositalari (`omniroute_agent_skills_*`) va A2A `list-capabilities` ko‘nikmasi tomonidan ishlatiladi. [AGENT-SKILLS.md](../frameworks/AGENT-SKILLS.md) fayliga qarang. | | `skills/` | Ko‘nikmalar freymvorki: `registry.ts`, `executor.ts`, `interception.ts`, `injection.ts`, `sandbox.ts`, `custom.ts`, `hybrid.ts`, `builtins.ts`, `a2a.ts`, `providerSettings.ts`, `schemas.ts`, `skillssh.ts`, `types.ts`, shuningdek, `builtin/browser.ts` | | `spend/` | `batchWriter.ts` (kechiktirib yozish buferi) | | `sync/` | `bundle.ts`, `tokens.ts` (Cloud Sync) | | `system/` | Tizim darajasidagi yordamchilar | | `translator/` | Yuqori darajadagi tarjimonni bog‘lash qatlami (`open-sse/translator/` ichiga vakolat beradi) | | `usage/` | Foydalanishni hisobga olish: `costCalculator.ts`, `tokenAccounting.ts`, `usageHistory.ts`, `aggregateHistory.ts`, `usageStats.ts`, `callLogs.ts`, `callLogArtifacts.ts`, `fetcher.ts`, `providerLimits.ts`, `migrations.ts` | | `versionManager/` | Avtomatik yangilash + versiyalar manifesti | | `ws/` | WebSocket ko‘prigi | | `zed-oauth/` | Zed muharririning OAuth jarayoni | `src/lib/` ichidagi yuqori darajali fayllar: - Eski `localDb.ts` barrel fayli olib tashlandi — isteʼmolchilar muayyan `src/lib/db/*` modullarini toʻgʻridan-toʻgʻri import qiladi. - `proxyHealth.ts`, `proxyLogger.ts`, `tokenHealthCheck.ts`, `localHealthCheck.ts` - `apiBridgeServer.ts`, `cacheLayer.ts`, `semanticCache.ts`, `settingsCache.ts` - `cloudSync.ts`, `initCloudSync.ts` - `cloudflaredTunnel.ts`, `ngrokTunnel.ts`, `tailscaleTunnel.ts` - `consoleInterceptor.ts`, `container.ts`, `gracefulShutdown.ts`, `idempotencyLayer.ts` - `ipUtils.ts`, `logEnv.ts`, `logPayloads.ts`, `logRotation.ts` - `modelAliasSeed.ts`, `modelCapabilities.ts`, `modelMetadataRegistry.ts`, `modelsDevSync.ts` - `piiSanitizer.ts`, `pricingSync.ts` - `apiKeyExposure.ts`, `cacheControlSettings.ts`, `dataPaths.ts`, `toolPolicy.ts` - `translatorEvents.ts`, `usageDb.ts`, `usageAnalytics.ts`, `webhookDispatcher.ts` #### 3.2.1 `src/lib/db/` Yagona nusxadagi SQLite maʼlumotlar bazasi (`core.ts` ichidagi `getDbInstance()`, WAL jurnallash). **Marshrutlar yoki ishlov beruvchilarda hech qachon bevosita SQL yozmang** — ushbu modullardan foydalaning. ![Maʼlumotlar bazasi sxemasining umumiy koʻrinishi (tanlangan asosiy jadvallar)](../diagrams/exported/db-schema-overview.svg) > Manba: [diagrams/db-schema-overview.mmd](../diagrams/db-schema-overview.mmd) Domen modullari (har biri bir yoki bir nechta jadvalga egalik qiladi): `apiKeys.ts`, `backup.ts`, `batches.ts`, `cleanup.ts`, `cliToolState.ts`, `combos.ts`, `commandCodeAuth.ts`, `compression.ts`, `compressionAnalytics.ts`, `compressionCacheStats.ts`, `compressionCombos.ts`, `compressionScheduler.ts`, `contextHandoffs.ts`, `core.ts`, `creditBalance.ts`, `databaseSettings.ts`, `detailedLogs.ts`, `domainState.ts`, `encryption.ts`, `evals.ts`, `files.ts`, `healthCheck.ts`, `jsonMigration.ts`, `migrationRunner.ts`, `modelComboMappings.ts`, `models.ts`, `oneproxy.ts`, `prompts.ts`, `providers.ts`, `providerLimits.ts`, `proxies.ts`, `quotaSnapshots.ts`, `readCache.ts`, `reasoningCache.ts`, `registeredKeys.ts`, `secrets.ts`, `sessionAccountAffinity.ts`, `settings.ts`, `stateReset.ts`, `stats.ts`, `syncTokens.ts`, `tierConfig.ts`, `upstreamProxy.ts`, `versionManager.ts`, `webhooks.ts`. `migrations/` 168 ta versiyalangan `.sql` faylini (idempotent va tranzaksiyali) oʻz ichiga oladi hamda ular ishga tushish vaqtida `migrationRunner.ts` tomonidan bajariladi. Migratsiyalar davomida yaratiladigan jadvallar (jami 123 ta): `a`, `account_key_limits`, `api_keys`, `batches`, `call_logs`, `combo_adaptation_state`, `combos`, `command_code_auth_sessions`, `compression_analytics`, `compression_cache_stats`, `compression_combo_assignments`, `compression_combos`, `context_handoffs`, `daily_usage_summary`, `db_meta`, `domain_budgets`, `domain_circuit_breakers`, `domain_cost_history`, `domain_fallback_chains`, `domain_lockout_state`, `eval_cases`, `eval_runs`, `eval_suites`, `files`, `hourly_usage_summary`, `key_value`, `mcp_tool_audit`, `memories`, `model_combo_mappings`, `provider_connections`, `provider_key_limits`, `provider_nodes`, `proxy_assignments`, `proxy_logs`, `proxy_registry`, `quota_snapshots`, `reasoning_cache`, `registered_keys`, `request_detail_logs`, `routing_decisions`, `semantic_cache`, `session_account_affinity`, `skill_executions`, `skills`, `sync_tokens`, `tier_assignments`, `tier_config`, `upstream_proxy_config`, `usage_history`, `version_manager`, `webhooks` (shuningdek, xotira qidiruvi uchun FTS5 virtual jadvallari). ### 3.3 `src/domain/` — Domen qatlami Kiritish-chiqarishsiz sof biznes mantiqi. Marshrutlar va ishlov beruvchilar tomonidan import qilinadi. | Fayl | Vazifasi | | ------------------------------------------ | --------------------------------------------------------- | | `policyEngine.ts` | Yuqori darajali siyosat aniqlagichi | | `fallbackPolicy.ts` | Zaxira variantini tanlash qarorlar daraxti | | `costRules.ts` | Xarajatlarni hisoblash qoidalari | | `lockoutPolicy.ts` | Modelni bloklash qarorlari | | `tagRouter.ts` | Teglarga asoslangan yoʻnaltirish | | `comboResolver.ts` | Soʻrovdan maqsadlar roʻyxatiga kombo aniqlash | | `connectionModelRules.ts` | Har bir ulanish uchun model filtrlari | | `modelAvailability.ts` | Model mavjudligini tekshirish | | `degradation.ts` | Degradatsiyalangan rejimga oʻtishlar | | `providerExpiration.ts` | Muddati tugagan hisob/kalitni aniqlash | | `quotaCache.ts` | Keshlangan kvota qarorlari | | `responses.ts`, `omnirouteResponseMeta.ts` | Javob shakli yordamchilari | | `configAudit.ts` | Konfiguratsiya oʻzgarishlari auditi | | `assessment/` | Modelni baholash (RFC boʻyicha, qisman amalga oshirilgan) | | `types.ts` | Umumiy domen turlari | ### 3.4 `src/server/` — Faqat server uchun Mijoz komponentlaridan import qilib boʻlmaydi. ``` server/ ├── auth/loginGuard.ts ├── authz/ │ ├── classify.ts Marshrutlarni ommaviy yoki boshqaruv marshrutlari sifatida tasniflaydi │ ├── assertAuth.ts Tasdiqlash yordamchisi │ ├── context.ts Har bir soʻrov uchun authz konteksti │ ├── headers.ts │ ├── pipeline.ts Authz konveyeri │ ├── policies/ Muayyan siyosatlar │ └── types.ts └── cors/origins.ts Ruxsat etilgan CORS manbalari roʻyxati ``` ### 3.5 `src/shared/` — Ulashish uchun xavfsiz Aniq vazifalarga yoʻnaltirilgan quyi kataloglarga ajratilgan: - `constants/` — `providers.ts` (Zod orqali tekshiriladigan provayderlar katalogi), `models.ts`, `modelSpecs.ts`, `modelCompat.ts`, `pricing.ts`, `cliTools.ts`, `cliCompatProviders.ts`, `routingStrategies.ts`, `comboConfigMode.ts`, `headers.ts`, `upstreamHeaders.ts` (taqiqlanganlar roʻyxati), `mcpScopes.ts`, `errorCodes.ts`, `publicApiRoutes.ts`, `batch.ts`, `batchEndpoints.ts`, `bodySize.ts`, `colors.ts`, `appConfig.ts`, `config.ts`, `sidebarVisibility.ts`, `visionBridgeDefaults.ts`. - `validation/` — `schemas.ts` (~80 ta Zod sxemasi), `compressionConfigSchemas.ts`, `providerSchema.ts`, `settingsSchemas.ts`, `helpers.ts`. - `contracts/` — npm orqali tarqatiladigan ommaviy API shartnomalari. - `types/` — umumiy TS turlari. - `utils/` — `circuitBreaker.ts`, `apiAuth.ts`, `apiKey.ts`, `apiKeyPolicy.ts`, `api.ts`, `classify429.ts`, `cliCompat.ts`, `clipboard.ts`, `cloud.ts`, `cn.ts`, `cors.ts`, `featureFlags.ts`, `fetchTimeout.ts`, `formatting.ts`, `inputSanitizer.ts`, `logger.ts`, `machine.ts`, `machineId.ts`, `maskEmail.ts`, `modelCatalogSearch.ts`, `nodeRuntimeSupport.ts`, `parseApiKeys.ts`, `providerHints.ts`, `providerModelAliases.ts`, `rateLimiter.ts`, `releaseNotes.ts`, `a11yAudit.ts`, shuningdek, `services/`, `network/`, `middleware/`, `schemas/`, `hooks/`, `components/` ichidagi boshqaruv paneli huklari/komponentlari. --- ## 4. `open-sse/` — Striming mexanizmi ish maydoni `@omniroute/open-sse` nomi bilan eʼlon qilinadigan alohida npm ish maydoni. Soʻrovlarni qayta ishlash, ijrochilar, tarjimonlar, xizmatlar, transformator va MCP serveriga egalik qiladi. ``` open-sse/ ├── index.ts Ommaviy eksportlar ├── package.json Ish maydoni manifesti ├── tsconfig.json ├── types.d.ts ├── config/ Provayder registrlari, sarlavha profillari, identifikatsiya, … ├── handlers/ Soʻrov ishlovchilari (chat, embeddinglar, audio, tasvir, …) ├── executors/ 156 ta provayder ijrochisi moduli (ijrochi sinflari + har bir provayder uchun yordamchilar) ├── translator/ Formatlarni oʻzgartirish (OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro) ├── transformer/ Responses API ↔ Chat Completions oqim transformatori ├── services/ 80+ xizmat moduli (kombinatsiyalar, zaxira, kvotalar, identifikatsiya, …) ├── utils/ Striming yordamchilari, TLS mijozi, AWS SigV4, proksi fetch, … └── mcp-server/ MCP serveri (3 ta transport, 33 ta qamrov, 110 ta vosita) ``` ### 4.1 `open-sse/handlers/` | Ishlovchi | Maqsadi | | ----------------------- | -------------------------------------------------------------------------------------------- | | `chatCore.ts` | Asosiy chat konveyeri (kesh, tezlik cheklovi, kombinatsion marshrutlash, ijrochini yuborish) | | `responsesHandler.ts` | OpenAI Responses API kirish nuqtasi | | `embeddings.ts` | Embeddinglar | | `imageGeneration.ts` | Tasvir yaratish | | `audioSpeech.ts` | Matndan nutqqa | | `audioTranscription.ts` | Nutqdan matnga | | `videoGeneration.ts` | Video yaratish | | `musicGeneration.ts` | Musiqa yaratish | | `rerank.ts` | Qayta tartiblash | | `moderations.ts` | Moderatsiya | | `search.ts` | Veb-qidiruv | | `sseParser.ts` | SSE hodisalari tahlilchisi | | `usageExtractor.ts` | Yuqori oqimlardan tokenlar sonini ajratib olish | | `responseSanitizer.ts` | Provayderga xos shovqinni olib tashlash | | `responseTranslator.ts` | Provayder javobi va tarjimon qatlami oʻrtasidagi bogʻlovchi | ### 4.2 `open-sse/executors/` 156 ta yuqori darajadagi ijrochi moduli (`*.ts`, `base.ts`, `index.ts` va testlardan tashqari — bu sonni `npm run check:docs-counts` oʻlchaydi). Har bir ijrochi sinfi `BaseExecutor` (`base.ts`) sinfini bevosita yoki `DefaultExecutor` yoxud boshqa ijrochi orqali kengaytiradi; qolgan modullar har bir provayder uchun yordamchilardir (vosita sxemalari, fetch/TTS adapterlari, oʻziga xoslik ishlovchilari). Ijrochilar quyidagilarni oʻz ichiga oladi: `antigravity`, `azure-openai`, `blackbox-web`, `cliproxyapi`, `chatgpt-web-codex`, `cloudflare-ai`, `codex`, `commandCode`, `cursor`, `default`, `devin-cli`, `muse-spark-web`, `nlpcloud`, `opencode`, `perplexity-web`, `petals`, `pollinations`, `qoder`, `vertex`, `devin-desktop`, shuningdek `claudeIdentity.ts` (umumiy identifikatsiya yordamchisi) va `index.ts` (registr). > Eslatma: bu yerda koʻrsatilmagan provayderlarga umumiy > OpenAI-mos ijrochidan foydalangan holda `default.ts` xizmat koʻrsatadi. Toʻliq provayderlar katalogi (375 ta provayder) > `src/shared/constants/providers.ts` ichida joylashgan. ### 4.3 `open-sse/translator/` Markaz va tarmoqlar asosidagi tarjima (OpenAI — markaz). - **9 ta soʻrov tarjimoni** (`translator/request/`): `antigravity-to-openai`, `claude-to-gemini`, `claude-to-openai`, `gemini-to-openai`, `openai-responses`, `openai-to-claude`, `openai-to-cursor`, `openai-to-gemini`, `openai-to-kiro`. - **9 ta javob tarjimoni** (`translator/response/`): `claude-to-openai`, `cursor-to-openai`, `gemini-to-claude`, `gemini-to-openai`, `kiro-to-openai`, `openai-responses`, `openai-to-antigravity`, `openai-to-claude`. - **9 ta yordamchi** (`translator/helpers/`): `claudeHelper`, `geminiHelper`, `geminiToolsSanitizer`, `maxTokensHelper`, `openaiHelper`, `responsesApiHelper`, `schemaCoercion`, `toolCallHelper`, shuningdek yordamchi testlar. - **Tasvir yordamchilari** (`translator/image/sizeMapper.ts`). - Yuqori daraja: `bootstrap.ts`, `formats.ts`, `registry.ts`, `index.ts`. ### 4.4 `open-sse/transformer/` - `responsesTransformer.ts` — `TransformStream` asosidagi Responses API ↔ Chat Completions konvertori (`responses/` marshrutining barcha qolgan holatlarni tutuvchi qismi tomonidan ishlatiladi). ### 4.5 `open-sse/services/` Asosiylari (toʻliq roʻyxat `open-sse/services/` ichida): | Yoʻnalish | Fayllar | | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Combo marshrutlash | `combo.ts` (20 ta strategiya), `comboConfig.ts`, `comboMetrics.ts`, `comboManifestMetrics.ts`, `comboAgentMiddleware.ts` | | Avtomatik Combo mexanizmi | `autoCombo/` — `engine.ts`, `scoring.ts`, `taskFitness.ts`, `virtualFactory.ts`, `modePacks.ts`, `autoPrefix.ts`, `persistence.ts`, `providerDiversity.ts`, `providerRegistryAccessor.ts`, `routerStrategy.ts`, `selfHealing.ts`, `index.ts` | | Barqarorlik | `accountFallback.ts` (kutish davri + bloklash), `errorClassifier.ts`, `requestRejectedStreak.ts`, `emergencyFallback.ts`, `rateLimitManager.ts`, `rateLimitSemaphore.ts`, `accountSemaphore.ts`, `accountSelector.ts` | | Kvotalar | `quotaMonitor.ts`, `quotaPreflight.ts`, `bailianQuotaFetcher.ts`, `codexQuotaFetcher.ts`, `deepseekQuotaFetcher.ts`, `openrouterQuotaFetcher.ts`, `openrouterFreeWindow.ts`, `llmgatewayQuotaFetcher.ts`, `crofUsageFetcher.ts`, `antigravityCredits.ts` | | Keshlash | `reasoningCache.ts`, `searchCache.ts`, `signatureCache.ts`, `requestDedup.ts` | | Aqlli marshrutlash | `intentClassifier.ts`, `taskAwareRouter.ts`, `backgroundTaskDetector.ts`, `volumeDetector.ts`, `wildcardRouter.ts`, `workflowFSM.ts`, `specificityDetector.ts`, `specificityRules.ts`, `specificityTypes.ts` | | Model bilan ishlash | `modelCapabilities.ts`, `modelDeprecation.ts`, `modelFamilyFallback.ts`, `modelStrip.ts`, `model.ts`, `provider.ts`, `providerRequestDefaults.ts`, `providerCostData.ts`, `payloadRules.ts` | | Siqish | `compression/` — toʻliq siqish mexanizmi ulanishlari | | Token + seans | `tokenRefresh.ts`, `sessionManager.ts`, `apiKeyRotator.ts`, `contextManager.ts`, `contextHandoff.ts`, `systemPrompt.ts`, `roleNormalizer.ts`, `responsesInputSanitizer.ts`, `toolSchemaSanitizer.ts`, `toolLimitDetector.ts`, `thinkingBudget.ts` | | Daraja / manifest | `tierResolver.ts`, `tierConfig.ts`, `tierDefaults.json`, `tierTypes.ts`, `manifestAdapter.ts` | | IP / tarmoq | `ipFilter.ts`, `webSearchFallback.ts` | | Paketlar | `batchProcessor.ts` | | Foydalanish | `usage.ts` | ### 4.6 `open-sse/mcp-server/` - `server.ts` ichida ulangan **110 ta noyob vosita** (`schemas/tools.ts` ichida 45 ta kanonik vosita + xotira, koʻnikmalar, GitHub-koʻnikmalar, pul, geymifikatsiya, plagin, Notion, Obsidian, mahalliy korpus va siqish modullari — birlashma `countUniqueMcpTools` orqali hisoblangan). - **3 ta transport**: stdio, HTTP Streamable, SSE. - Ishlash vaqtida **33 ta qamrov** majburiy qoʻllanadi — asosiy roʻyxat `src/shared/constants/mcpScopes.ts` ichida, toʻliq toʻplam esa har bir vosita moduli eʼlon qilgan qamrovlar birlashmasidir. - Audit jadvali: `mcp_tool_audit` (`audit.ts` tomonidan toʻldiriladi). - Fayllar: `server.ts`, `index.ts`, `httpTransport.ts`, `audit.ts`, `scopeEnforcement.ts`, `runtimeHeartbeat.ts`, `descriptionCompressor.ts`, `schemas/{tools, a2a, audit, index}.ts`, `tools/{advancedTools, compressionTools, memoryTools, skillTools}.ts`, shuningdek, `__tests__/` ichidagi testlar. - Vositalarning toʻliq katalogi uchun [MCP-SERVER.md](../frameworks/MCP-SERVER.md) fayliga qarang. ### 4.7 `open-sse/config/` Provayder registrlari (`providerRegistry.ts`, `providerModels.ts`, `providerHeaderProfiles.ts`), har bir format uchun model registrlari (`audioRegistry.ts`, `embeddingRegistry.ts`, `imageRegistry.ts`, `moderationRegistry.ts`, `musicRegistry.ts`, `rerankRegistry.ts`, `searchRegistry.ts`, `videoRegistry.ts`), identifikatsiya yordamchilari (`codexIdentity.ts`, `codexInstructions.ts`, `anthropicHeaders.ts`, `antigravityUpstream.ts`, `antigravityModelAliases.ts`, `cliFingerprints.ts`, `toolCloaking.ts`, `defaultThinkingSignature.ts`), hisob maʼlumotlari yordamchilari (`credentialLoader.ts`, `codexClient.ts`) va bulut adapterlari (`azureAi.ts`, `bedrock.ts`, `datarobot.ts`, `glmProvider.ts`, `maritalk.ts`, `oci.ts`, `petals.ts`, `runway.ts`, `sap.ts`, `watsonx.ts`, `ollamaModels.ts`, `errorConfig.ts`, `constants.ts`, `registryUtils.ts`). ### 4.8 `open-sse/utils/` Oqimli uzatish primitivlari va provayder yordamchilari: `stream.ts`, `streamHandler.ts`, `streamHelpers.ts`, `streamPayloadCollector.ts`, `streamReadiness.ts`, `sseHeartbeat.ts`, `proxyFetch.ts`, `proxyDispatcher.ts`, `tlsClient.ts`, `networkProxy.ts`, `awsSigV4.ts`, `cacheControlPolicy.ts`, `cursorChecksum.ts`, `cursorAgentProtobuf.ts`, `cursorVersionDetector.ts`, `comfyuiClient.ts`, `kieTask.ts`, `bypassHandler.ts`, `aiSdkCompat.ts`, `thinkTagParser.ts`, `urlSanitize.ts`, `usageTracking.ts`, `requestLogger.ts`, `progressTracker.ts`, `cors.ts`, `error.ts`, `logger.ts`, `sleep.ts`, `ollamaTransform.ts`. --- ## 5. `electron/` — Ish stoli ilovasi qobigʻi ``` electron/ ├── main.js Electron asosiy jarayoni ├── preload.js Oldindan yuklash koʻprigi (contextIsolation yoqilgan) ├── types.d.ts ├── package.json electron-builder konfiguratsiyasi, 3.8.51 versiyasi ├── README.md ├── assets/ Yigʻish resurslari (ikonalar, ruxsatlar, …) ├── node_modules/ Alohida node_modules (better-sqlite3, electron-updater) └── dist-electron/ Yigʻish natijasi (repozitoriyga kiritilmaydi) ``` Ish maydoni ildizida beshta npm skripti mavjud: `electron:dev`, `electron:build`, `electron:build:{win,mac,linux}`, `electron:smoke:packaged`. Avtomatik yangilash GitHub relizlar tasmasiga yoʻnaltirilgan `electron-updater` orqali amalga oshiriladi. --- ## 6. `bin/` — CLI ``` bin/ ├── omniroute.mjs Asosiy CLI kirish nuqtasi (Node ESM) ├── reset-password.mjs Boshqaruv parolini CLI orqali tiklash ├── mcp-server.mjs MCP serverini ishga tushirgich (stdio) ├── nodeRuntimeSupport.mjs Node versiyasini tekshirish └── cli/ ├── program.mjs Commander dasturi yaratuvchisi ├── runtime.mjs withRuntime yordamchisi (avval server/zaxira sifatida DB) ├── output.mjs Chiqish formatlagichlari (json/jsonl/table/csv) ├── i18n.mjs Lokalizatsiyalarga ega t() yordamchisi ├── api.mjs API soʻrov yordamchisi ├── data-dir.mjs ├── encryption.mjs ├── sqlite.mjs └── commands/ ├── registry.mjs Buyruqlarni roʻyxatdan oʻtkazish ├── setup.mjs ├── doctor.mjs ├── providers.mjs └── ... (har bir buyruq/guruh uchun bittadan fayl) ``` `package.json` → `bin` ichida ikkita bajariladigan fayl taqdim etilgan: - `omniroute` → `bin/omniroute.mjs` - `omniroute-reset-password` → `bin/reset-password.mjs` --- ## 7. `tests/` | Katalog | Turi | | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `tests/unit/` | Nodeʼning ichki test ishga tushirgichi orqali modul testlari (1821 ta fayl, shuningdek, `api/`, `auth/`, `authz/` quyi kataloglari) | | `tests/integration/` | Modullararo + DB holati testlari | | `tests/e2e/` | Playwright UI testlari | | `tests/e2e/protocol-clients.test.ts` | MCP/A2A protokoli e2e testlari | | `tests/translator/` | Tarjimonga xos testlar | | `tests/security/` | Xavfsizlik regressiyalari | | `tests/load/` | Yuklama / stress testlari | | `tests/golden-set/` | Tarjimon regressiyalari uchun etalon natijalar | | `tests/helpers/`, `tests/fixtures/`, `tests/manual/` | Yordamchi vositalar | Koʻp ishlatiladigan buyruqlar: | Buyruq | Nima ishga tushiriladi | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------ | | `npm run test:unit` | Node test ishga tushirgichi orqali barcha `tests/unit/*.test.ts` fayllari (parallellik 10) | | `npm run test:vitest` | Vitest testlar toʻplami (MCP, autoCombo, cache) | | `npm run test:e2e` | Playwright UI testlar toʻplami | | `npm run test:protocols:e2e` | MCP + A2A protokoli e2e testlari | | `npm run test:coverage` | Qamrov chegarasi (satrlar/operatorlar/funksiyalar/tarmoqlar ≥60%) | | `node --import tsx/esm --test tests/unit/.test.ts` | Bitta faylni ishga tushirish | --- ## 8. `scripts/` Maqsadiga ko‘ra 6 ta quyi jildga ajratilgan. - **`scripts/build/`** — `build-next-isolated.mjs`, `prepublish.ts`, `prepare-electron-standalone.mjs`, `pack-artifact-policy.ts`, `validate-pack-artifact.ts`, `postinstall.mjs`, `postinstallSupport.mjs`, `uninstall.mjs`, `bootstrap-env.mjs`, `runtime-env.mjs`, `native-binary-compat.mjs`. - **`scripts/dev/`** — `run-next.mjs`, `run-next-playwright.mjs`, `run-standalone.mjs`, `standalone-server-ws.mjs`, `responses-ws-proxy.mjs`, `v1-ws-bridge.mjs`, `smoke-electron-packaged.mjs`, `run-playwright-tests.mjs`, `run-ecosystem-tests.mjs`, `run-protocol-clients-tests.mjs`, `sync-env.mjs`, `healthcheck.mjs`, `system-info.mjs`, shuningdek, PR’larni faqat o‘qish rejimida nazorat qilish yordamchilari: `ci-discriminate.sh` (PR’dagi muvaffaqiyatsiz tekshiruv signaturalarini etalon PR yoki asosiy tarmoqdagi xatolik muammosiga nisbatan o‘ziga tegishli / meros bo‘lib o‘tgan / noma’lum toifalarga ajratadi) va `audit-worktree.sh` (o‘zgartirilgan fayllar, himoyalangan qismlar, olib tashlangan assert’lar, bostirishlar soni, qolib ketgan vaqtinchalik tsconfig’lar, PR’dagi head va mahalliy HEAD taqqoslanishi — worker’ning PR’i qabul qilinishidan oldin). - **`scripts/check/`** — `check-cycles.mjs`, `check-docs-sync.mjs`, `check-docs-counts-sync.mjs`, `check-env-doc-sync.mjs`, `check-deprecated-versions.mjs`, `check-route-validation.mjs`, `check-t11-any-budget.mjs`, `check-pr-test-policy.mjs`, `check-supported-node-runtime.ts`, `test-report-summary.mjs`. - **`scripts/docs/`** — `generate-docs-index.mjs`, `gen-provider-reference.ts`. - **`scripts/i18n/`** — `generate-multilang.mjs`, `run-visual-qa.mjs`, `generate-qa-checklist.mjs`, `apply-priority-overrides.mjs`, `validate_translation.py`, `check_translations.py`, `i18n_autotranslate.py`, `untranslatable-keys.json`. - **`scripts/ad-hoc/`** — `cursor-tap.cjs`, `sync-cursor-models.mjs`, `migrate-env.mjs`, `dbsetup.js`. --- ## 9. So‘rov konveyeri (qisqacha) ![So‘rov konveyeri (/v1/chat/completions)](../diagrams/exported/request-pipeline.svg) > Manba: [diagrams/request-pipeline.mmd](../diagrams/request-pipeline.mmd) ``` Mijoz so‘rovi → /v1/chat/completions (route.ts) CORS dastlabki so‘rovini tekshirish Zod validatsiyasi (shared/validation/schemas.ts ichidagi chatCompletionsSchema) Autentifikatsiya (extractApiKey + isValidApiKey YOKI requireManagementAuth) Siyosat mexanizmi (src/server/authz/pipeline.ts) Himoya cheklovlari (PII maskalovchisi, prompt inyeksiyasi, tasvir ko‘prigi) → handleChatCore() (open-sse/handlers/chatCore.ts) Keshni tekshirish (semantik + o‘qish keshi) Tezlik cheklovi (rateLimitManager, accountSemaphore) Kombinatsiyalangan marshrutlash (agar model kombinatsiyaga mos kelsa) comboResolver → har bir maqsad bo‘yicha sikl → handleSingleModel() translateRequest() (open-sse/translator/request/*) getExecutor(providerId).execute() (open-sse/executors/*) yuqori oqimga so‘rov yuborish → accountFallback orqali qayta urinish/kechiktirish translateResponse() (open-sse/translator/response/*) SSE oqimi YOKI JSON javobi Agar Responses API bo‘lsa: open-sse/transformer/responsesTransformer.ts orqali TransformStream → Muvofiqlik auditi (src/lib/compliance/) → Mijozga javob ``` ### Barqarorlikning ish vaqtidagi holati (uchta mexanizm) | Mexanizm | Qamrov | Joylashuvi | | ------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | Provayderning avtomatik uzgichi | Butun provayder | `src/shared/utils/circuitBreaker.ts`, `domain_circuit_breakers` ichida saqlanadi | | Ulanishning kutish davri | Bitta hisob/qalit | `src/sse/services/auth.ts` ichidagi `markAccountUnavailable()`; `accountFallback.checkFallbackError()` tomonidan ishlatiladi | | Modelni bloklash | Provayder + ulanish + model | `open-sse/services/accountFallback.ts`, `domain_lockout_state` ichida saqlanadi | [RESILIENCE_GUIDE.md](./RESILIENCE_GUIDE.md) va [CLAUDE.md](../../CLAUDE.md) ichidagi maxsus bo‘limga qarang. --- ## 10. Qanday hissa qoʻshish mumkin ### Yangi provayder qoʻshish 1. `src/shared/constants/providers.ts` faylida roʻyxatdan oʻtkazing (yuklanish vaqtida Zod orqali tekshiriladi). 2. Agar maxsus mantiq talab qilinsa, `open-sse/executors/` ichiga ijrochini qoʻshing (`BaseExecutor` sinfini kengaytiring). 3. Agar u OpenAI formatidan foydalanmasa, `open-sse/translator/` ichiga tarjimon qoʻshing. 4. Agar OAuth asosida boʻlsa, `src/lib/oauth/providers/` va `src/lib/oauth/services/` ichiga konfiguratsiya qoʻshing. 5. Modellarni `open-sse/config/providerRegistry.ts` faylida (yoki `open-sse/config/` ichidagi formatga xos reyestrda) roʻyxatdan oʻtkazing. 6. Testlarni `tests/unit/` ichida yozing. ### Yangi API marshrutini qoʻshish 1. `src/app/api/your-route/route.ts` faylini yarating. 2. Quyidagi andozaga amal qiling: CORS → Zod orqali soʻrov tanasini tekshirish → autentifikatsiya → ishlov beruvchiga topshirish. 3. Agar soʻrov tuzilmasi yangi boʻlsa, Zod sxemasini `src/shared/validation/schemas.ts` fayliga qoʻshing. 4. Agar u faqat boshqaruv uchun moʻljallangan boʻlsa, yoʻlni `src/shared/constants/publicApiRoutes.ts` fayliga qoʻshing (ommaviy API yuzasi uchun taqiqlanganlar roʻyxati). 5. Testlarni `tests/unit/` ichiga qoʻshing. 6. `docs/reference/API_REFERENCE.md` va `docs/openapi.yaml` fayllarini yangilang. ### Yangi DB modulini qoʻshish 1. `src/lib/db/yourModule.ts` faylini yarating va `getDbInstance()` funksiyasini `./core.ts` faylidan import qiling. 2. Domeningiz uchun CRUD funksiyalarini eksport qiling. 3. Agar yangi jadvallar kerak boʻlsa, `src/lib/db/migrations/` ichiga ketma-ket raqamlangan, idempotent va tranzaksion migratsiya qoʻshing. 4. Import qiluvchilar `@/lib/db/yourModule` manzilidan toʻgʻridan-toʻgʻri importlardan foydalanadi (barrel yoʻq — eski `localDb.ts` qayta eksport qatlami olib tashlangan). 5. Testlarni `tests/unit/` ichiga qoʻshing. ### Yangi MCP vositasini qoʻshish 1. Vosita taʼrifini `open-sse/mcp-server/tools/` ichiga qoʻshing (yoki `open-sse/mcp-server/schemas/tools.ts` faylini kengaytiring). 2. `src/shared/constants/mcpScopes.ts` faylida tegishli qamrov(lar)ni belgilang. 3. Vositani `open-sse/mcp-server/server.ts` faylida roʻyxatdan oʻtkazing. 4. Testlarni `open-sse/mcp-server/__tests__/` ichiga qoʻshing. 5. [MCP-SERVER.md](../frameworks/MCP-SERVER.md) faylini yangilang. ### Yangi A2A koʻnikmasini qoʻshish [A2A-SERVER.md § Yangi koʻnikma qoʻshish](../frameworks/A2A-SERVER.md) boʻlimiga qarang. Koʻnikmalar `src/lib/a2a/skills/` ichida joylashadi va A2A vazifalar menejeri orqali roʻyxatdan oʻtkaziladi. --- ## 11. Qoidalar - **Kod uslubi**: 2 boʻsh joyli chekinish, qoʻshtirnoqlar, 100 belgilik kenglik, nuqtali vergullar, `es5` yakuniy vergullari — `lint-staged` orqali Prettier tomonidan taʼminlanadi. - **Importlar**: tashqi → ichki (`@/`, `@omniroute/open-sse`) → nisbiy. - **Nomlash**: fayllar `camelCase` yoki `kebab-case`, komponentlar `PascalCase`, konstantalar `UPPER_SNAKE`. - **ESLint**: `no-eval`, `no-implied-eval`, `no-new-func` = hamma joyda `error`; `no-explicit-any` = `open-sse/` va `tests/` ichida `warn`, boshqa joylarda `error`. - **TypeScript**: `strict: false` (eski yondashuv). Modullararo chegaralarda tiplarni aniqlashdan koʻra aniq tiplarni afzal koʻring. - **Maʼlumotlar bazasi**: marshrutlar yoki ishlov beruvchilarda hech qachon bevosita SQL yozmang — har doim `src/lib/db/` modullari orqali ishlang. Hech qachon barrel-import ishlatmang — muayyan `src/lib/db/*` modullaridan toʻgʻridan-toʻgʻri foydalaning. - **DB obyektlarini tiplash (#3512)**: DB jadvalidagi satr tuzilmasini yozadigan yoki oʻqiydigan funksiya chaqiruv joyidagi `any` yoki ichki anonim tipni emas, balki shu jadval ustunlarini 1:1 aks ettiradigan nomlangan TS interfeysini qabul qilishi/qaytarishi kerak. Interfeysni funksiya yonida joylashtiring (masalan, `src/lib/usage/usageHistory.ts` faylida `saveRequestUsage` ustidagi `export interface UsageEntry`), turli yozuvchilar satrni bosqichma-bosqich toʻldirganda alohida maydonlarni ixtiyoriy/null boʻlishi mumkin holatda saqlang va tuzilmasi chaqiruvchilar orasida farq qiladigan maydon uchun `any` oʻrniga `unknown` tipini afzal koʻring (maydonda hujjatlashtiring, masalan, `UsageEntry.tokens` ham provayderning xom shaklidagi foydalanish maʼlumotlarini, ham normallashtirilgan shaklni qabul qiladi). Shu yoʻl bilan fayldagi `any` soni nolga yetgach, uni `check:any-budget:t11` ruxsat etilganlar roʻyxatiga (`scripts/check/check-t11-any-budget.mjs`, `maxAny: 0`) qoʻshing, shunda ortga qaytishning oldi olinadi. Bu dastlabki qism uchun qoida — kengroq “anonim `any` ishlatmaslik” tozalash jarayoni kod bazasining qolgan qismida iterativ tarzda amalga oshiriladi. - **Xatolar**: aniq xato turlari bilan try/catch ishlating, pino konteksti bilan jurnalga yozing. SSE oqimlaridagi xatolarni hech qachon jimgina yutib yubormang; tozalash uchun bekor qilish signallaridan foydalaning. - **Xavfsizlik**: hech qachon `eval()` / `new Function()` / bilvosita eval ishlatmang. Barcha kirish maʼlumotlarini Zod bilan tekshiring. Hisob maʼlumotlarini saqlashda shifrlang (AES-256-GCM). `src/shared/constants/upstreamHeaders.ts` taqiqlanganlar roʻyxatini sanitizatsiya/tekshirish qatlami bilan mos holda saqlang. - **Kommitlar**: Conventional Commits — `feat(scope): subject`. Ruxsat etilgan qamrovlar: `db`, `sse`, `oauth`, `dashboard`, `api`, `cli`, `docker`, `ci`, `mcp`, `a2a`, `memory`, `skills`. - **Tarmoqlar**: prefikslar `feat/`, `fix/`, `refactor/`, `docs/`, `test/`, `chore/`. Hech qachon bevosita `main` tarmogʻiga kommit qilmang. - **Husky**: kommitdan oldin `lint-staged` + `check:docs-sync` + `check:any-budget:t11` ishga tushadi; yuborishdan oldin `check:any-budget:t11` + `check:tracked-artifacts` ishga tushadi (tezkor tekshiruvlar; `test:unit` bundan mustasno). --- ## 12. Qatʼiy qoidalar (CLAUDE.md faylidan) 1. Hech qachon maxfiy maʼlumotlar yoki hisob maʼlumotlarini commit qilmang. 2. Hech qachon barrel-importdan foydalanmang — bevosita muayyan `src/lib/db/*` modullaridan foydalaning. 3. Hech qachon `eval()` / `new Function()` / bilvosita evalʼdan foydalanmang. 4. Hech qachon bevosita `main` tarmogʻiga commit qilmang. 5. Routelarda hech qachon xom SQL yozmang — doimo `src/lib/db/` modullari orqali ishlang. 6. SSE oqimlaridagi xatolarni hech qachon bildirmasdan yutib yubormang. 7. Kirish maʼlumotlarini doimo Zod sxemalari bilan tekshiring. 8. Ishlab chiqarish kodini oʻzgartirganda doimo testlarni ham kiriting. 9. Qamrov ≥ 60% darajada qolishi shart (koʻrsatmalar, satrlar, funksiyalar, tarmoqlar). --- ## 13. Shuningdek qarang - [ARCHITECTURE.md](./ARCHITECTURE.md) — yuqori darajadagi arxitektura va modullar masʼuliyati. - [API_REFERENCE.md](../reference/API_REFERENCE.md) — ommaviy va boshqaruv API maʼlumotnomasi. - [FEATURES.md](../guides/FEATURES.md) — imkoniyatlar matritsasi va versiyalarning muhim jihatlari. - [RESILIENCE_GUIDE.md](./RESILIENCE_GUIDE.md) — circuit breaker, cooldown va lockout mexanizmlarining batafsil tahlili. - [AUTO-COMBO.md](../routing/AUTO-COMBO.md) — Auto Combo baholash tizimi va strategiyalari. - [MCP-SERVER.md](../frameworks/MCP-SERVER.md) — MCP vositalarining toʻliq katalogi va transportlar. - [A2A-SERVER.md](../frameworks/A2A-SERVER.md) — A2A protokoli imkoniyatlari va aniqlash mexanizmi. - [COMPRESSION_GUIDE.md](../compression/COMPRESSION_GUIDE.md) — RTK va Caveman siqish mexanizmlari. - [CLI-TOOLS.md](../reference/CLI-TOOLS.md) — CLI integratsiyalari. - [ELECTRON_GUIDE.md](../guides/ELECTRON_GUIDE.md) (agar mavjud boʻlsa), [DOCKER_GUIDE.md](../guides/DOCKER_GUIDE.md), [FLY_IO_DEPLOYMENT_GUIDE.md](../ops/FLY_IO_DEPLOYMENT_GUIDE.md), [VM_DEPLOYMENT_GUIDE.md](../ops/VM_DEPLOYMENT_GUIDE.md), [TERMUX_GUIDE.md](../guides/TERMUX_GUIDE.md), [PWA_GUIDE.md](../guides/PWA_GUIDE.md) — joylashtirish maqsadlari. - [TROUBLESHOOTING.md](../guides/TROUBLESHOOTING.md) — keng tarqalgan operatsion muammolar. - [CONTRIBUTING.md](../../CONTRIBUTING.md) — hissa qoʻshuvchilar uchun ish jarayoni. - [CLAUDE.md](../../CLAUDE.md) — Claude Code uchun repo qoidalari (yuqoridagi koʻplab kelishuvlar uchun asosiy haqiqat manbasi). - [AGENTS.md](../../AGENTS.md) — agentlar foydalanadigan batafsilroq arxitektura maʼlumotnomasi.