* 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.
86 KiB
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-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 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.tsbarrel fayli olib tashlandi — isteʼmolchilar muayyansrc/lib/db/*modullarini toʻgʻridan-toʻgʻri import qiladi. proxyHealth.ts,proxyLogger.ts,tokenHealthCheck.ts,localHealthCheck.tsapiBridgeServer.ts,cacheLayer.ts,semanticCache.ts,settingsCache.tscloudSync.ts,initCloudSync.tscloudflaredTunnel.ts,ngrokTunnel.ts,tailscaleTunnel.tsconsoleInterceptor.ts,container.ts,gracefulShutdown.ts,idempotencyLayer.tsipUtils.ts,logEnv.ts,logPayloads.ts,logRotation.tsmodelAliasSeed.ts,modelCapabilities.ts,modelMetadataRegistry.ts,modelsDevSync.tspiiSanitizer.ts,pricingSync.tsapiKeyExposure.ts,cacheControlSettings.ts,dataPaths.ts,toolPolicy.tstranslatorEvents.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.
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.tsxizmat koʻrsatadi. Provayderlarning toʻliq katalogi (355 ta provayder)src/shared/constants/providers.tsichida 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.ts—TransformStreamasosidagi 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.tsichida 110 ta noyob vosita ulangan (schemas/tools.tsichida 45 ta kanonik vosita + xotira, koʻnikmalar, GitHub-koʻnikmalar, pul, geymifikatsiya, plagin, Notion, Obsidian, mahalliy korpus va siqish modullari — birlashmacountUniqueMcpToolstomonidan hisoblanadi).- 3 ta transport: stdio, HTTP Streamable, SSE.
- Ishlash vaqtida 33 ta qamrov qoʻllanadi — asosiy roʻyxat
src/shared/constants/mcpScopes.tsichida, toʻliq toʻplam esa har bir vosita moduli eʼlon qilgan qamrovlarning birlashmasidir. - Audit jadvali:
mcp_tool_audit(audit.tstomonidan 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.json → bin ichida ikkita bajariladigan fayl taqdim etilgan:
omniroute→bin/omniroute.mjsomniroute-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/<file>.test.ts |
Bitta faylni ishga tushirish |
8. scripts/
Maqsadiga ko‘ra 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. So‘rov konveyeri (qisqacha)
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 va CLAUDE.md ichidagi maxsus bo‘limga qarang.
10. Qanday hissa qoʻshish mumkin
Yangi provayder qoʻshish
src/shared/constants/providers.tsfaylida roʻyxatdan oʻtkazing (yuklanish vaqtida Zod orqali tekshiriladi).- Agar maxsus mantiq talab qilinsa,
open-sse/executors/ichiga ijrochini qoʻshing (BaseExecutorsinfini kengaytiring). - Agar u OpenAI formatidan foydalanmasa,
open-sse/translator/ichiga tarjimon qoʻshing. - Agar OAuth asosida boʻlsa,
src/lib/oauth/providers/vasrc/lib/oauth/services/ichiga konfiguratsiya qoʻshing. - Modellarni
open-sse/config/providerRegistry.tsfaylida (yokiopen-sse/config/ichidagi formatga xos reyestrda) roʻyxatdan oʻtkazing. - Testlarni
tests/unit/ichida yozing.
Yangi API marshrutini qoʻshish
src/app/api/your-route/route.tsfaylini yarating.- Quyidagi andozaga amal qiling: CORS → Zod orqali soʻrov tanasini tekshirish → autentifikatsiya → ishlov beruvchiga topshirish.
- Agar soʻrov tuzilmasi yangi boʻlsa, Zod sxemasini
src/shared/validation/schemas.tsfayliga qoʻshing. - Agar u faqat boshqaruv uchun moʻljallangan boʻlsa, yoʻlni
src/shared/constants/publicApiRoutes.tsfayliga qoʻshing (ommaviy API yuzasi uchun taqiqlanganlar roʻyxati). - Testlarni
tests/unit/ichiga qoʻshing. docs/reference/API_REFERENCE.mdvadocs/openapi.yamlfayllarini yangilang.
Yangi DB modulini qoʻshish
src/lib/db/yourModule.tsfaylini yarating vagetDbInstance()funksiyasini./core.tsfaylidan import qiling.- Domeningiz uchun CRUD funksiyalarini eksport qiling.
- Agar yangi jadvallar kerak boʻlsa,
src/lib/db/migrations/ichiga ketma-ket raqamlangan, idempotent va tranzaksion migratsiya qoʻshing. - Import qiluvchilar
@/lib/db/yourModulemanzilidan toʻgʻridan-toʻgʻri importlardan foydalanadi (barrel yoʻq — eskilocalDb.tsqayta eksport qatlami olib tashlangan). - Testlarni
tests/unit/ichiga qoʻshing.
Yangi MCP vositasini qoʻshish
- Vosita taʼrifini
open-sse/mcp-server/tools/ichiga qoʻshing (yokiopen-sse/mcp-server/schemas/tools.tsfaylini kengaytiring). src/shared/constants/mcpScopes.tsfaylida tegishli qamrov(lar)ni belgilang.- Vositani
open-sse/mcp-server/server.tsfaylida roʻyxatdan oʻtkazing. - Testlarni
open-sse/mcp-server/__tests__/ichiga qoʻshing. - 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,
es5yakuniy vergullari —lint-stagedorqali Prettier tomonidan taʼminlanadi. - Importlar: tashqi → ichki (
@/,@omniroute/open-sse) → nisbiy. - Nomlash: fayllar
camelCaseyokikebab-case, komponentlarPascalCase, konstantalarUPPER_SNAKE. - ESLint:
no-eval,no-implied-eval,no-new-func= hamma joydaerror;no-explicit-any=open-sse/vatests/ichidawarn, boshqa joylardaerror. - 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 — muayyansrc/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
anyyoki 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.tsfaylidasaveRequestUsageustidagiexport 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 uchunanyoʻrnigaunknowntipini afzal koʻring (maydonda hujjatlashtiring, masalan,UsageEntry.tokensham provayderning xom shaklidagi foydalanish maʼlumotlarini, ham normallashtirilgan shaklni qabul qiladi). Shu yoʻl bilan fayldagianysoni nolga yetgach, unicheck:any-budget:t11ruxsat 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 “anonimanyishlatmaslik” 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.tstaqiqlanganlar 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 bevositamaintarmogʻiga kommit qilmang. - Husky: kommitdan oldin
lint-staged+check:docs-sync+check:any-budget:t11ishga tushadi; yuborishdan oldincheck:any-budget:t11+check:tracked-artifactsishga tushadi (tezkor tekshiruvlar;test:unitbundan mustasno).
12. Qatʼiy qoidalar (CLAUDE.md faylidan)
- Hech qachon maxfiy maʼlumotlar yoki hisob maʼlumotlarini commit qilmang.
- Hech qachon barrel-importdan foydalanmang — bevosita muayyan
src/lib/db/*modullaridan foydalaning. - Hech qachon
eval()/new Function()/ bilvosita evalʼdan foydalanmang. - Hech qachon bevosita
maintarmogʻiga commit qilmang. - Routelarda hech qachon xom SQL yozmang — doimo
src/lib/db/modullari orqali ishlang. - SSE oqimlaridagi xatolarni hech qachon bildirmasdan yutib yubormang.
- Kirish maʼlumotlarini doimo Zod sxemalari bilan tekshiring.
- Ishlab chiqarish kodini oʻzgartirganda doimo testlarni ham kiriting.
- Qamrov ≥ 60% darajada qolishi shart (koʻrsatmalar, satrlar, funksiyalar, tarmoqlar).
13. Shuningdek qarang
- ARCHITECTURE.md — yuqori darajadagi arxitektura va modullar masʼuliyati.
- API_REFERENCE.md — ommaviy va boshqaruv API maʼlumotnomasi.
- FEATURES.md — imkoniyatlar matritsasi va versiyalarning muhim jihatlari.
- RESILIENCE_GUIDE.md — circuit breaker, cooldown va lockout mexanizmlarining batafsil tahlili.
- AUTO-COMBO.md — Auto Combo baholash tizimi va strategiyalari.
- MCP-SERVER.md — MCP vositalarining toʻliq katalogi va transportlar.
- A2A-SERVER.md — A2A protokoli imkoniyatlari va aniqlash mexanizmi.
- COMPRESSION_GUIDE.md — RTK va Caveman siqish mexanizmlari.
- CLI-TOOLS.md — CLI integratsiyalari.
- ELECTRON_GUIDE.md (agar mavjud boʻlsa), DOCKER_GUIDE.md, FLY_IO_DEPLOYMENT_GUIDE.md, VM_DEPLOYMENT_GUIDE.md, TERMUX_GUIDE.md, PWA_GUIDE.md — joylashtirish maqsadlari.
- TROUBLESHOOTING.md — keng tarqalgan operatsion muammolar.
- CONTRIBUTING.md — hissa qoʻshuvchilar uchun ish jarayoni.
- CLAUDE.md — Claude Code uchun repo qoidalari (yuqoridagi koʻplab kelishuvlar uchun asosiy haqiqat manbasi).
- AGENTS.md — agentlar foydalanadigan batafsilroq arxitektura maʼlumotnomasi.