Files
OmniRoute/docs/i18n/uz/docs/architecture/CODEBASE_DOCUMENTATION.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

86 KiB
Raw Blame History

OmniRoute Codebase Documentation (Oʻzbekcha)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


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 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-sseopen-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, konikmalar, 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 metamalumotlari / 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 bolgan ichki skriptlar
├── types/                Muhit va umumiy TS turlari
├── i18n/                 Lokalizatsiya toplamlari
├── 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:

Yol 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/boshlangich sahifa
docs/ Ichki API hujjatlari koruvchisi
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 qobigi

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 ornatish, ishga tushirish, toxtatish va kuzatish uchun marshrutlar. Barcha yollar LOCAL_ONLY (faqat loopback, qatiy qoida #17) sifatida tasniflangan, chunki ular npm install buyrugini 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 konikma: xarajatlar tahlili, holat hisoboti, provayderlarni aniqlash, kvotalarni boshqarish, aqlli marshrutlash, imkoniyatlar royxati)
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 boglash qatlami
db/ SQLite domen modullari (§3.2.1 ga qarang)
display/ API javoblarida ishlatiladigan UI/korsatish yordamchilari
embeddings/ Embedding xizmatlari reyestri
env/ Muhit ozgaruvchilarini 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 ornatilgan xizmatlar freymvorki: ServiceSupervisor.ts (operatsiya qulfi, halqali bufer va holat tekshiruvchisiga ega universal quyi jarayon nazoratchisi), bootstrap.ts (jarayon darajasida royxatdan otkazish 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 konikmalari 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 konikmasi tomonidan ishlatiladi. AGENT-SKILLS.md fayliga qarang.
skills/ Konikmalar 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 boglash 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 koprigi
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)

Manba: 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/ — Oqimli uzatish mexanizmi ish maydoni

@omniroute/open-sse sifatida nashr etiladigan alohida npm ish maydoni. Soʻrovlarni qayta ishlash, ijrochilar, tarjimonlar, xizmatlar, transformator va MCP serverini boshqaradi.

open-sse/
├── index.ts                Ochiq 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/              Provayderga xos 108 ta HTTP ijrochisi
├── translator/             Formatni oʻzgartirish (OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro)
├── transformer/            Responses API ↔ Chat Completions oqim transformatori
├── services/               80 dan ortiq xizmat modullari (kombinatsiyalar, zaxira, kvotalar, identifikatsiya, …)
├── utils/                  Oqimli uzatish yordamchilari, TLS mijozi, AWS SigV4, proksi orqali olish, …
└── mcp-server/             MCP serveri (3 ta transport, 33 ta qamrov, 110 ta vosita)

4.1 open-sse/handlers/

Ishlovchi Vazifasi
chatCore.ts Asosiy chat konveyeri (kesh, tezlik cheklovi, kombinatsion yoʻnaltirish, ijrochini ishga tushirish)
responsesHandler.ts OpenAI Responses API kirish nuqtasi
embeddings.ts Embeddinglar
imageGeneration.ts Tasvir yaratish
audioSpeech.ts Matnni nutqqa aylantirish
audioTranscription.ts Nutqni matnga aylantirish
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 ortiqcha maʼlumotlarni olib tashlash
responseTranslator.ts Provayder javobi va tarjimon qatlami oʻrtasidagi bogʻlovchi

4.2 open-sse/executors/

Har biri BaseExecutor (base.ts) sinfini kengaytiradigan 108 ta provayder ijrochisi:

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 OpenAI bilan mos keluvchi umumiy ijrochidan foydalanadigan default.ts xizmat koʻrsatadi. Provayderlarning toʻliq katalogi (355 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 testlari.
  • Tasvir yordamchilari (translator/image/sizeMapper.ts).
  • Yuqori daraja: bootstrap.ts, formats.ts, registry.ts, index.ts.

4.4 open-sse/transformer/

  • responsesTransformer.tsTransformStream asosidagi Responses API ↔ Chat Completions konvertori (responses/ yoʻnalishining barcha qolgan holatlarni qamrab oluvchi ishlovchisi tomonidan ishlatiladi).

4.5 open-sse/services/

Muhim qismlar (toʻliq roʻyxat open-sse/services/ ichida):

Yoʻnalish Fayllar
Combo marshrutlash combo.ts (19 ta strategiya), comboConfig.ts, comboMetrics.ts, comboManifestMetrics.ts, comboAgentMiddleware.ts
Auto 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 (sovish 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, crofUsageFetcher.ts, antigravityCredits.ts
Keshlash reasoningCache.ts, searchCache.ts, signatureCache.ts, requestDedup.ts
Marshrutlash intellekti intentClassifier.ts, taskAwareRouter.ts, backgroundTaskDetector.ts, volumeDetector.ts, wildcardRouter.ts, workflowFSM.ts, specificityDetector.ts, specificityRules.ts, specificityTypes.ts
Modelni qayta 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 110 ta noyob vosita ulangan (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 tomonidan hisoblanadi).
  • 3 ta transport: stdio, HTTP Streamable, SSE.
  • Ishlash vaqtida 33 ta qamrov qoʻllanadi — asosiy roʻyxat src/shared/constants/mcpScopes.ts ichida, toʻliq toʻplam esa har bir vosita moduli eʼlon qilgan qamrovlarning 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 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.jsonbin ichida ikkita bajariladigan fayl taqdim etilgan:

  • omniroutebin/omniroute.mjs
  • omniroute-reset-passwordbin/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/<file>.test.ts Bitta faylni ishga tushirish

8. scripts/

Maqsadiga kora 6 ta quyi papkaga 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.
  • 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. Sorov konveyeri (qisqacha)

So‘rov konveyeri (/v1/chat/completions)

Manba: diagrams/request-pipeline.mmd

Mijoz sorovi
  → /v1/chat/completions (route.ts)
     CORS dastlabki sorovini 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 koprigi)
  → handleChatCore() (open-sse/handlers/chatCore.ts)
     Keshni tekshirish (semantik + oqish keshi)
     Tezlik cheklovi (rateLimitManager, accountSemaphore)
     Kombinatsiyalangan marshrutlash (agar model kombinatsiyaga mos kelsa)
       comboResolver → har bir maqsad boyicha sikl → handleSingleModel()
     translateRequest()  (open-sse/translator/request/*)
     getExecutor(providerId).execute()  (open-sse/executors/*)
       yuqori oqimga sorov yuborish → accountFallback orqali qayta urinish/kechiktirish
     translateResponse() (open-sse/translator/response/*)
     SSE oqimi YOKI JSON javobi
     Agar Responses API bolsa: 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 va CLAUDE.md ichidagi maxsus bolimga 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 faylini yangilang.

Yangi A2A koʻnikmasini qoʻshish

A2A-SERVER.md § Yangi koʻnikma qoʻshish 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