1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors. ⚠️ base-red inherited: #12732
84 KiB
OmniRoute Codebase Documentation (Čeština)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇩🇰 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 · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Verze: v3.8.51 Poslední aktualizace: 2026-06-28 Cílová skupina: Inženýři přispívající do OmniRoute nebo vytvářející integrace nad touto platformou.
Přehledová schémata architektury a zdůvodnění jednotlivých subsystémů najdete v ARCHITECTURE.md. Podrobné informace o jednotlivých subsystémech (Auto Combo, server MCP, server A2A, Skills, Memory, Cloud Agents, Resilience, Compression atd.) najdete v jejich vyhrazených souborech v tomto adresáři
docs/.
Tento soubor popisuje aktuální obsah repozitáře, aby se nový inženýr dokázal zorientovat v jeho stromové struktuře, porozuměl vrstvám běhového prostředí a věděl, kam přidat kód, aniž by vytvářel nové moduly.
1. Technologický stack
| Oblast | Volba |
|---|---|
| Webový framework | Next.js 16 (App Router, samostatný výstup, bez globálního middlewaru) |
| Jazyk | TypeScript 6.0+ — cíl ES2022, module: esnext, moduleResolution: bundler, strict: false |
| Běhové prostředí | Node.js >=22.22.2 <23 nebo >=24.0.0 <27 (vynuceno prostřednictvím engines + SUPPORTED_NODE_RANGE) |
| Databáze | SQLite prostřednictvím better-sqlite3 (singleton, žurnálování WAL) |
| Desktop | Electron 41 + electron-builder 26.10 (samostatný pracovní prostor v electron/) |
| Testy | Nativní testovací nástroj Node (jednotkové/integrační), Vitest (MCP, autoCombo, mezipaměť), Playwright (e2e + protocols-e2e) |
| Sestavení | Samostatné sestavení Next.js prostřednictvím scripts/build/build-next-isolated.mjs |
| Lintování/formátování | Plochá konfigurace ESLint + Prettier (lint-staged prostřednictvím pre-commitu Husky) |
| Systém modulů | Všude ESM ("type": "module") |
| Pracovní prostory | Pracovní prostor npm — open-sse je jediný dílčí pracovní prostor |
Aliasy cest (tsconfig.json):
@/*→src/*@omniroute/open-sse→open-sse/index.ts@omniroute/open-sse/*→open-sse/*
Výchozí port HTTP: 20128 (API a řídicí panel sdílejí stejný proces). Datový
adresář se určuje proměnnou prostředí DATA_DIR; výchozí hodnota je ~/.omniroute/.
2. Struktura repozitáře
OmniRoute/
├── src/ Aplikace Next.js (App Router, knihovny, doména, server, sdílené součásti)
├── open-sse/ Pracovní prostor streamovacího enginu (@omniroute/open-sse)
├── electron/ Desktopová nadstavba (hlavní proces Electron 41 + preload)
├── bin/ Vstupní body CLI (omniroute, reset-password)
├── tests/ Jednotkové, integrační, e2e, protocols-e2e, překladové a bezpečnostní testy a testovací data
├── scripts/ Pomocné skripty pro sestavení, synchronizaci, kontroly, migraci a běhové prostředí
├── docs/ Veřejná dokumentace (tento adresář)
├── public/ Statické prostředky, manifest PWA, service worker
├── config/ Ukázky konfigurace běhového prostředí
├── images/ Marketingové materiály a snímky obrazovky
├── _ideia/, _references/, _mono_repo/, _tasks/ Interní pracovní materiály / plánování (nejsou součástí distribuce)
├── CLAUDE.md Pravidla repozitáře pro Claude Code
├── AGENTS.md Podrobnější referenční dokumentace architektury pro agenty
├── package.json v3.8.51, kořen pracovního prostoru
└── tsconfig.json Aliasy cest + základní volby kompilátoru
3. src/ — Aplikace Next.js
src/
├── app/ Stránky App Routeru + API trasy
├── lib/ Základní knihovny (DB, ověřování, OAuth, dovednosti, paměť, …)
├── domain/ Čistá doménová vrstva (zásady, záložní mechanismy, náklady, uzamčení, …)
├── server/ Moduly pouze pro server (autorizace, CORS, ověřování)
├── shared/ Typy, konstanty, validace, kontrakty, nástroje (bezpečné napříč hranicemi)
├── mitm/ Pomocné funkce proxy typu man-in-the-middle pro integraci CLI
├── models/ Metadata / aliasy lokálních modelů
├── sse/ Starší obslužné rutiny SSE, které stále zůstávají v src/ (nikoli v open-sse/)
├── store/ Úložiště stavu na straně klienta
├── middleware/ Nástroje middlewaru na úrovni tras (nikoli globální middleware Next.js)
├── scripts/ Skripty ve zdrojovém stromu, které lze importovat kódem aplikace
├── types/ Globální a sdílené typy TS
├── i18n/ Lokalizační balíčky
├── instrumentation.ts Instrumentační hook Next.js
├── instrumentation-node.ts
└── proxy.ts Pomocný modul pro zavedení proxy na nejvyšší úrovni
3.1 src/app/ — App Router
App Router zpřístupňuje jak uživatelské rozhraní řídicího panelu, tak veřejné/správcovské HTTP API. Globální middleware neexistuje — zachytávání se provádí pro každou trasu samostatně.
Segmenty nejvyšší úrovně v src/app/:
| Cesta | Účel |
|---|---|
api/ |
Všechny trasy HTTP API (viz rozpis níže) |
a2a/ |
Koncový bod A2A JSON-RPC 2.0 (POST /a2a) |
.well-known/agent.json/ |
Dokument pro zjišťování karty agenta A2A |
(dashboard)/ |
Uživatelské rozhraní řídicího panelu (skupina tras, bez prefixu URL) |
auth/, login/, forgot-password/, callback/ |
Toky ověřování |
landing/ |
Marketingová/vstupní stránka |
docs/ |
Integrovaný prohlížeč dokumentace API |
status/, maintenance/, offline/ |
Provozní stránky |
privacy/, terms/ |
Právní stránky |
400/, 401/, 403/, 408/, 429/, 500/, 502/, 503/ |
Statické chybové stránky |
error.tsx, global-error.tsx, not-found.tsx, forbidden/, loading.tsx |
Hranice frameworku pro chyby/načítání |
layout.tsx, page.tsx, globals.css, manifest.ts |
Kořenový rámec |
3.1.1 src/app/(dashboard)/dashboard/ — Stránky uživatelského rozhraní
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 a dále kořenové soubory page.tsx, HomePageClient.tsx,
BootstrapBanner.tsx.
3.1.2 src/app/api/ — Skupiny API nejvyšší úrovně
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/ Správa vestavěných služeb (9router, cliproxy) — LOCAL_ONLY
├── upstream-proxy/
├── usage/
├── v1/ Veřejné API kompatibilní s OpenAI
├── v1beta/ Kompatibilita ve stylu Gemini
├── version-manager/
└── webhooks/
3.1.2a src/app/api/services/ — Správa vestavěných služeb
Trasy pro instalaci, spouštění, zastavování a monitorování 9Router a CLIProxyAPI.
Všechny cesty jsou klasifikovány jako LOCAL_ONLY (pouze loopback, pevné pravidlo č. 17), protože
mohou spouštět npm install a vytvářet podřízené procesy.
src/app/api/services/
├── 9router/
│ ├── _lib.ts pomocná funkce getOrInitSupervisor()
│ ├── install/route.ts POST — npm install prostřednictvím execFile
│ ├── start/route.ts POST — supervisor.start()
│ ├── stop/route.ts POST — supervisor.stop()
│ ├── restart/route.ts POST — supervisor.restart()
│ ├── update/route.ts POST — npm install novější verze
│ ├── rotate-key/route.ts POST — vygenerování nového klíče API + restart
│ ├── status/route.ts GET — aktuální stav + stav DB + metadata verze
│ └── auto-start/route.ts POST — přepnutí příznaku auto_start
├── cliproxy/
│ ├── _lib.ts pomocná funkce getOrInitSupervisor()
│ ├── 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 — npm install novější verze
│ ├── status/route.ts GET — aktuální stav + stav DB + metadata verze
│ └── auto-start/route.ts POST — přepnutí příznaku auto_start
└── [name]/
└── logs/route.ts GET — průběžný výpis protokolu přes SSE (sdílený všemi službami)
Odpovídající uživatelské rozhraní řídicího panelu:
src/app/(dashboard)/dashboard/providers/services/ — stránka se dvěma kartami (CLIProxyAPI + 9Router).
Reverzní proxy pro vložené uživatelské rozhraní 9Router:
src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts
Podrobný rozbor: docs/frameworks/EMBEDDED-SERVICES.md
3.1.3 src/app/api/v1/ — Veřejné API kompatibilní s OpenAI
v1/
├── accounts/[id]/ vyhledání účtu
├── agents/tasks/[id]/, agents/tasks/ koncové body úloh ve stylu A2A
├── api/ interní pomocné funkce API zpřístupněné pod v1/api
├── audio/{speech, transcriptions}/ TTS + STT
├── batches/[id]/{cancel}, batches/ OpenAI Batches API
├── chat/completions/ Chat Completions (hlavní koncový bod)
├── completions/ starší textová dokončování
├── embeddings/ vektorová vložení
├── files/[id]/, files/ Files API
├── _helpers/ sdílené pomocné funkce tras (bez veřejné URL)
├── images/{edits, generations}/ generování + úpravy obrázků
├── issues/ pomocné koncové body pro třídění problémů
├── management/{proxies}/ trasy se správním rozsahem uvnitř v1
├── messages/{count_tokens}/ kompatibilita zpráv ve stylu Anthropic
├── models/ výpis modelů (`route.ts`, `catalog.ts`)
├── moderations/ moderování
├── music/ generování hudby
├── providers/[provider]/ operace jednotlivých poskytovatelů
├── quotas/{check} kontroly kvót
├── registered-keys/ správa registrovaných klíčů
├── rerank/ změna pořadí
├── responses/[...path]/ OpenAI Responses API (záchytná trasa)
├── search/ vyhledávání na webu
├── videos/ generování videí
├── ws/ most WebSocket
└── route.ts obslužná rutina indexu
Každý soubor trasy používá stejný vzor:
Trasa → předběžný požadavek CORS → validace těla pomocí Zod → volitelné ověření
→ vynucení zásad klíče API → delegování obslužné rutině (open-sse)
v1beta/ je rozhraní kompatibility ve stylu Gemini (tenká obálka, která provádí překlad do
stejného zpracovatelského řetězce open-sse/handlers/).
3.2 src/lib/ — Základní knihovny
Data, synchronizaci, OAuth, dovednosti, paměť atd. vždy importujte prostřednictvím těchto modulů. Tabulka seskupuje skutečné adresáře a významné soubory nejvyšší úrovně.
| Modul | Účel |
|---|---|
a2a/ |
Server protokolu A2A: taskManager.ts, streaming.ts, taskExecution.ts, routingLogger.ts, skills/ (6 dovedností: analýza nákladů, zpráva o stavu, vyhledávání poskytovatelů, správa kvót, inteligentní směrování, výpis schopností) |
acp/ |
Agent-Control-Protocol: index.ts, manager.ts, registry.ts |
api/ |
Pomocné funkce interního API: requireManagementAuth.ts, requireCliToolsAuth.ts, errorResponse.ts |
auth/ |
managementPassword.ts (resetování / hashování hesla) |
batches/ |
Služba OpenAI Batches API (service.ts) |
catalog/ |
Synchronizace katalogu OpenRouter (openrouterCatalog.ts) |
cloudAgent/ |
Registr cloudových agentů: api.ts, baseAgent.ts, db.ts, index.ts, registry.ts, types.ts, agents/{codex, devin, jules}.ts |
combos/ |
Pomocné funkce pro vyhodnocování kombinací |
compliance/ |
Audit + audit poskytovatelů: index.ts, providerAudit.ts |
config/ |
Propojení konfigurace běhového prostředí |
db/ |
Doménové moduly SQLite (viz §3.2.1) |
display/ |
Pomocné funkce uživatelského rozhraní/zobrazení používané odpověďmi API |
embeddings/ |
Registr služeb vektorových reprezentací |
env/ |
Načítání + introspekce prostředí |
evals/ |
Běhové prostředí evaluací |
guardrails/ |
piiMasker.ts, promptInjection.ts, visionBridge.ts, visionBridgeHelpers.ts, registry.ts, base.ts |
jobs/ |
Úlohy na pozadí (autoUpdate.ts, …) |
memory/ |
Trvalá paměť: 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/ |
Moduly OAuth/importu poskytovatelů (22): 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, plus services/, utils/ a constants/oauth.ts |
plugins/ |
Načítání pluginů (index.ts) |
promptCache/ |
prefixAnalyzer.ts, index.ts |
providerModels/ |
Spravovaný životní cyklus modelů: modelDiscovery.ts, managedModelImport.ts, managedAvailableModels.ts, cursorAgent.ts |
providers/ |
Pomocné funkce poskytovatelů: catalog.ts, validation.ts, imageValidation.ts, claudeExtraUsage.ts, codexConnectionDefaults.ts, codexFastTier.ts, webCookieAuth.ts, managedAvailableModels.ts, requestDefaults.ts |
resilience/ |
settings.ts — nastavení pro jistič, dobu zklidnění a uzamčení |
runtime/ |
Detekce funkcí běhového prostředí |
search/ |
executeWebSearch.ts |
services/ |
Framework vestavěných služeb: ServiceSupervisor.ts (obecný správce podřízených procesů se zámkem operací, kruhovou vyrovnávací pamětí a kontrolou stavu), bootstrap.ts (registrace na úrovni procesu a automatické spuštění), registry.ts (mapování nástroj → správce), apiKey.ts (úložiště klíčů AES-256-GCM), modelSync.ts (pravidelná synchronizace modelů), ringBuffer.ts (5 MB kruhová vyrovnávací paměť protokolu), healthCheck.ts (HTTP sonda stavu), types.ts, embedWsProxy.ts (WebSocket proxy), installers/{ninerouter,cliproxy}.ts. Viz docs/frameworks/EMBEDDED-SERVICES.md |
agentSkills/ |
Katalog + generátor dovedností agentů: catalog.ts (getCatalog/getSkillById/filterCatalog/computeCoverage), generator.ts (generateAgentSkills → zapisuje skills/{id}/SKILL.md), openapiParser.ts (extrahuje koncové body REST ze specifikace OpenAPI), cliRegistryParser.ts (extrahuje podřízené příkazy CLI z bin/cli-registry), schemas.ts (Zod: AgentSkillSchema, SkillCoverageSchema, ListQuerySchema, GenerateBodySchema), types.ts (AgentSkill, SkillCoverage, SkillMarkdown, GeneratorReport). Používají jej trasy REST (/api/agent-skills/*), nástroje MCP (omniroute_agent_skills_*) a dovednost A2A list-capabilities. Viz AGENT-SKILLS.md. |
skills/ |
Framework dovedností: 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 a builtin/browser.ts |
spend/ |
batchWriter.ts (vyrovnávací paměť pro odložený zápis) |
sync/ |
bundle.ts, tokens.ts (cloudová synchronizace) |
system/ |
Pomocné funkce na systémové úrovni |
translator/ |
Propojení překladače nejvyšší úrovně (deleguje do open-sse/translator/) |
usage/ |
Účtování využití: costCalculator.ts, tokenAccounting.ts, usageHistory.ts, aggregateHistory.ts, usageStats.ts, callLogs.ts, callLogArtifacts.ts, fetcher.ts, providerLimits.ts, migrations.ts |
versionManager/ |
Automatické aktualizace + manifest verzí |
ws/ |
Most WebSocket |
zed-oauth/ |
Tok OAuth editoru Zed |
Soubory nejvyšší úrovně v src/lib/:
- Původní souhrnný modul
localDb.tsbyl odstraněn — konzumenti importují konkrétní modulysrc/lib/db/*přímo. 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/
Databáze SQLite implementovaná jako singleton (getDbInstance() v core.ts, žurnálování WAL).
Nikdy nezapisujte nezpracované SQL přímo do tras nebo obslužných rutin — používejte tyto moduly.
Doménové moduly (každý spravuje jednu nebo více tabulek): 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.
Adresář migrations/ obsahuje 168 verzovaných souborů .sql (idempotentních a transakčních), které
při spuštění provádí migrationRunner.ts.
Tabulky vytvořené napříč migracemi (celkem 123):
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 (plus virtuální tabulky FTS5 pro vyhledávání v paměti).
3.3 src/domain/ — Doménová vrstva
Čistá obchodní logika bez vstupu a výstupu. Importují ji trasy a obslužné rutiny.
| Soubor | Účel |
|---|---|
policyEngine.ts |
Hlavní překladač zásad |
fallbackPolicy.ts |
Rozhodovací strom záložních možností |
costRules.ts |
Pravidla výpočtu nákladů |
lockoutPolicy.ts |
Rozhodnutí o blokování modelu |
tagRouter.ts |
Směrování na základě značek |
comboResolver.ts |
Překlad kombinace z požadavku → seznam cílů |
connectionModelRules.ts |
Filtry modelů pro jednotlivá připojení |
modelAvailability.ts |
Kontrola dostupnosti modelu |
degradation.ts |
Přechody do degradovaného režimu |
providerExpiration.ts |
Detekce účtů nebo klíčů s ukončenou platností |
quotaCache.ts |
Rozhodnutí o kvótách uložená v mezipaměti |
responses.ts, omnirouteResponseMeta.ts |
Pomocné funkce pro strukturu odpovědí |
configAudit.ts |
Audit změn konfigurace |
assessment/ |
Hodnocení modelu (podle RFC, částečně implementováno) |
types.ts |
Sdílené doménové typy |
3.4 src/server/ — Pouze pro server
Nelze importovat z klientských komponent.
server/
├── auth/loginGuard.ts
├── authz/
│ ├── classify.ts Klasifikuje trasy jako veřejné nebo správcovské
│ ├── assertAuth.ts Pomocná funkce pro ověřování tvrzení
│ ├── context.ts Kontext autorizace pro jednotlivé požadavky
│ ├── headers.ts
│ ├── pipeline.ts Autorizační řetězec
│ ├── policies/ Konkrétní zásady
│ └── types.ts
└── cors/origins.ts Seznam povolených zdrojů CORS
3.5 src/shared/ — Bezpečné pro sdílení
Rozděleno do účelově zaměřených podadresářů:
constants/—providers.ts(katalog poskytovatelů ověřovaný pomocí Zod),models.ts,modelSpecs.ts,modelCompat.ts,pricing.ts,cliTools.ts,cliCompatProviders.ts,routingStrategies.ts,comboConfigMode.ts,headers.ts,upstreamHeaders.ts(seznam zakázaných položek),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 schémat Zod),compressionConfigSchemas.ts,providerSchema.ts,settingsSchemas.ts,helpers.ts.contracts/— veřejné kontrakty API distribuované prostřednictvím npm.types/— sdílené typy TS.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.tsa také hooky/komponenty řídicího panelu v adresáříchservices/,network/,middleware/,schemas/,hooks/,components/.
4. open-sse/ — pracovní prostor streamovacího enginu
Samostatný npm pracovní prostor publikovaný jako @omniroute/open-sse. Zajišťuje zpracování požadavků, exekutory, překladače, služby, transformátor a MCP server.
open-sse/
├── index.ts Veřejné exporty
├── package.json Manifest pracovního prostoru
├── tsconfig.json
├── types.d.ts
├── config/ Registry poskytovatelů, profily hlaviček, identita, …
├── handlers/ Obslužné rutiny požadavků (chat, vnoření, zvuk, obrázky, …)
├── executors/ 108 HTTP exekutorů specifických pro jednotlivé poskytovatele
├── translator/ Převod formátů (OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro)
├── transformer/ Transformátor streamů Responses API ↔ Chat Completions
├── services/ Více než 80 modulů služeb (kombinace, záložní mechanismy, kvóty, identita, …)
├── utils/ Pomocné nástroje pro streamování, TLS klient, AWS SigV4, načítání přes proxy, …
└── mcp-server/ MCP server (3 transporty, 33 rozsahů, 110 nástrojů)
4.1 open-sse/handlers/
| Obslužná rutina | Účel |
|---|---|
chatCore.ts |
Hlavní chatovací pipeline (mezipaměť, omezení rychlosti, kombinované směrování, předání exekutoru) |
responsesHandler.ts |
Vstupní bod OpenAI Responses API |
embeddings.ts |
Vnoření |
imageGeneration.ts |
Generování obrázků |
audioSpeech.ts |
Převod textu na řeč |
audioTranscription.ts |
Převod řeči na text |
videoGeneration.ts |
Generování videa |
musicGeneration.ts |
Generování hudby |
rerank.ts |
Změna pořadí |
moderations.ts |
Moderování |
search.ts |
Vyhledávání na webu |
sseParser.ts |
Parser událostí SSE |
usageExtractor.ts |
Získávání počtů tokenů ze streamů nadřazených služeb |
responseSanitizer.ts |
Odstranění rušivých prvků specifických pro poskytovatele |
responseTranslator.ts |
Propojení mezi odpovědí poskytovatele a překladovou vrstvou |
4.2 open-sse/executors/
108 exekutorů poskytovatelů, z nichž každý rozšiřuje BaseExecutor (base.ts):
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, dále claudeIdentity.ts
(sdílená pomocná funkce pro identitu) a index.ts (registr).
Poznámka: poskytovatelé, kteří zde nejsou uvedeni, jsou obsluhováni souborem
default.tspomocí obecného exekutoru kompatibilního s OpenAI. Úplný katalog poskytovatelů (355 poskytovatelů) se nachází vsrc/shared/constants/providers.ts.
4.3 open-sse/translator/
Překlad podle modelu hub-and-spoke (OpenAI je centrálním uzlem).
- 9 překladačů požadavků (
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 překladačů odpovědí (
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 pomocných nástrojů (
translator/helpers/):claudeHelper,geminiHelper,geminiToolsSanitizer,maxTokensHelper,openaiHelper,responsesApiHelper,schemaCoercion,toolCallHelpera testy pomocných nástrojů. - Pomocné nástroje pro obrázky (
translator/image/sizeMapper.ts). - Na nejvyšší úrovni:
bootstrap.ts,formats.ts,registry.ts,index.ts.
4.4 open-sse/transformer/
responsesTransformer.ts— převodník Responses API ↔ Chat Completions založený naTransformStream(používaný záchytnou trasouresponses/).
4.5 open-sse/services/
Nejdůležitější části (úplný seznam se nachází v open-sse/services/):
| Oblast | Soubory |
|---|---|
| Směrování Combo | combo.ts (19 strategií), comboConfig.ts, comboMetrics.ts, comboManifestMetrics.ts, comboAgentMiddleware.ts |
| Engine Auto Combo | 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 |
| Odolnost | accountFallback.ts (doba čekání + uzamčení), errorClassifier.ts, emergencyFallback.ts, rateLimitManager.ts, rateLimitSemaphore.ts, accountSemaphore.ts, accountSelector.ts |
| Kvóty | quotaMonitor.ts, quotaPreflight.ts, bailianQuotaFetcher.ts, codexQuotaFetcher.ts, deepseekQuotaFetcher.ts, openrouterQuotaFetcher.ts, openrouterFreeWindow.ts, crofUsageFetcher.ts, antigravityCredits.ts |
| Ukládání do mezipaměti | reasoningCache.ts, searchCache.ts, signatureCache.ts, requestDedup.ts |
| Inteligentní směrování | intentClassifier.ts, taskAwareRouter.ts, backgroundTaskDetector.ts, volumeDetector.ts, wildcardRouter.ts, workflowFSM.ts, specificityDetector.ts, specificityRules.ts, specificityTypes.ts |
| Zpracování modelů | modelCapabilities.ts, modelDeprecation.ts, modelFamilyFallback.ts, modelStrip.ts, model.ts, provider.ts, providerRequestDefaults.ts, providerCostData.ts, payloadRules.ts |
| Komprese | compression/ — kompletní propojení kompresního enginu |
| Tokeny + relace | tokenRefresh.ts, sessionManager.ts, apiKeyRotator.ts, contextManager.ts, contextHandoff.ts, systemPrompt.ts, roleNormalizer.ts, responsesInputSanitizer.ts, toolSchemaSanitizer.ts, toolLimitDetector.ts, thinkingBudget.ts |
| Úroveň / manifest | tierResolver.ts, tierConfig.ts, tierDefaults.json, tierTypes.ts, manifestAdapter.ts |
| IP / síť | ipFilter.ts, webSearchFallback.ts |
| Dávky | batchProcessor.ts |
| Využití | usage.ts |
4.6 open-sse/mcp-server/
- 110 jedinečných nástrojů propojených v
server.ts(45 kanonických vschemas/tools.ts+ moduly paměti, dovedností, GitHub dovedností, fondu, gamifikace, pluginů, Notionu, Obsidianu, lokálního korpusu a komprese — sjednocení spočítané pomocícountUniqueMcpTools). - 3 transporty: stdio, HTTP Streamable, SSE.
- 33 rozsahů oprávnění vynucovaných za běhu — základní seznam v
src/shared/constants/mcpScopes.ts, úplná sada je sjednocením rozsahů deklarovaných jednotlivými moduly nástrojů. - Tabulka auditu:
mcp_tool_audit(naplňovaná souboremaudit.ts). - Soubory:
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, plus testy v__tests__/. - Úplný katalog nástrojů najdete v MCP-SERVER.md.
4.7 open-sse/config/
Registry poskytovatelů (providerRegistry.ts, providerModels.ts,
providerHeaderProfiles.ts), registry modelů pro jednotlivé formáty (audioRegistry.ts,
embeddingRegistry.ts, imageRegistry.ts, moderationRegistry.ts,
musicRegistry.ts, rerankRegistry.ts, searchRegistry.ts, videoRegistry.ts),
pomocné nástroje pro identitu (codexIdentity.ts, codexInstructions.ts,
anthropicHeaders.ts, antigravityUpstream.ts, antigravityModelAliases.ts,
cliFingerprints.ts, toolCloaking.ts, defaultThinkingSignature.ts),
pomocné nástroje pro přihlašovací údaje (credentialLoader.ts, codexClient.ts) a cloudové
adaptéry (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/
Streamovací primitiva a pomocné nástroje poskytovatele: 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/ — Desktopový obal
electron/
├── main.js Hlavní proces Electronu
├── preload.js Most preload (contextIsolation povoleno)
├── types.d.ts
├── package.json Konfigurace electron-builder, verze 3.8.51
├── README.md
├── assets/ Prostředky pro sestavení (ikony, oprávnění, …)
├── node_modules/ Vyhrazené node_modules (better-sqlite3, electron-updater)
└── dist-electron/ Výstup sestavení (není součástí repozitáře)
Pět npm skriptů v kořenovém adresáři pracovního prostoru: electron:dev, electron:build,
electron:build:{win,mac,linux}, electron:smoke:packaged. Automatické aktualizace zajišťuje
electron-updater odkazující na kanál vydání na GitHubu.
6. bin/ — CLI
bin/
├── omniroute.mjs Hlavní vstupní bod CLI (Node ESM)
├── reset-password.mjs Reset hesla pro správu z CLI
├── mcp-server.mjs Spouštěč serveru MCP (stdio)
├── nodeRuntimeSupport.mjs Kontrola verze Node
└── cli/
├── program.mjs Tvůrce programu Commander
├── runtime.mjs Pomocná funkce withRuntime (nejprve server, záložně DB)
├── output.mjs Formátovače výstupu (json/jsonl/table/csv)
├── i18n.mjs Pomocná funkce t() s lokalizacemi
├── api.mjs Pomocná funkce pro načítání z API
├── data-dir.mjs
├── encryption.mjs
├── sqlite.mjs
└── commands/
├── registry.mjs Registrace příkazů
├── setup.mjs
├── doctor.mjs
├── providers.mjs
└── ... (jeden soubor pro každý příkaz/skupinu)
V package.json → bin jsou zpřístupněny dva binární soubory:
omniroute→bin/omniroute.mjsomniroute-reset-password→bin/reset-password.mjs
7. tests/
| Adresář | Typ |
|---|---|
tests/unit/ |
Jednotkové testy prostřednictvím nativního testovacího nástroje Node (1821 souborů a podadresáře api/, auth/, authz/) |
tests/integration/ |
Testy napříč moduly a testy stavu DB |
tests/e2e/ |
Testy uživatelského rozhraní pomocí Playwrightu |
tests/e2e/protocol-clients.test.ts |
E2E testy protokolů MCP/A2A |
tests/translator/ |
Testy specifické pro překladač |
tests/security/ |
Bezpečnostní regresní testy |
tests/load/ |
Zátěžové testy / testy odolnosti |
tests/golden-set/ |
Referenční výstupy pro regresní testy překladače |
tests/helpers/, tests/fixtures/, tests/manual/ |
Podpůrné soubory |
Běžné příkazy:
| Příkaz | Co spouští |
|---|---|
npm run test:unit |
Všechny tests/unit/*.test.ts prostřednictvím testovacího nástroje Node (souběžnost 10) |
npm run test:vitest |
Sada testů Vitest (MCP, autoCombo, cache) |
npm run test:e2e |
Sada testů uživatelského rozhraní Playwright |
npm run test:protocols:e2e |
E2E testy protokolů MCP + A2A |
npm run test:coverage |
Kontrola pokrytí (≥60 % řádků/příkazů/funkcí/větví) |
node --import tsx/esm --test tests/unit/<file>.test.ts |
Spuštění jednoho souboru |
8. scripts/
Uspořádáno podle účelu do 6 podsložek.
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. Kanál zpracování požadavků (shrnutí)
Požadavek klienta
→ /v1/chat/completions (route.ts)
Kontrola předběžného požadavku CORS
Ověření pomocí Zod (chatCompletionsSchema v shared/validation/schemas.ts)
Ověření identity (extractApiKey + isValidApiKey NEBO requireManagementAuth)
Modul zásad (src/server/authz/pipeline.ts)
Ochranná opatření (maskování PII, ochrana před vložením instrukcí, most pro obrazové vstupy)
→ handleChatCore() (open-sse/handlers/chatCore.ts)
Kontrola mezipaměti (sémantická mezipaměť + mezipaměť pro čtení)
Omezení četnosti požadavků (rateLimitManager, accountSemaphore)
Kombinované směrování (pokud se model přeloží na kombinaci)
comboResolver → smyčka pro každý cíl → handleSingleModel()
translateRequest() (open-sse/translator/request/*)
getExecutor(providerId).execute() (open-sse/executors/*)
načtení z nadřazené služby → opakování/exponenciální prodleva prostřednictvím accountFallback
translateResponse() (open-sse/translator/response/*)
Datový proud SSE NEBO odpověď JSON
Pokud jde o Responses API: TransformStream prostřednictvím open-sse/transformer/responsesTransformer.ts
→ Audit souladu s předpisy (src/lib/compliance/)
→ Odpověď klientovi
Běhový stav odolnosti (tři mechanismy)
| Mechanismus | Rozsah | Kde |
|---|---|---|
| Jistič poskytovatele | Celý poskytovatel | src/shared/utils/circuitBreaker.ts, uchováváno v domain_circuit_breakers |
| Prodleva připojení | Jeden účet/klíč | markAccountUnavailable() v src/sse/services/auth.ts; používáno funkcí accountFallback.checkFallbackError() |
| Uzamčení modelu | Poskytovatel + připojení + model | open-sse/services/accountFallback.ts, uchováváno v domain_lockout_state |
Viz RESILIENCE_GUIDE.md a vyhrazená část v souboru CLAUDE.md.
10. Jak přispívat
Přidání nového poskytovatele
- Zaregistrujte jej v
src/shared/constants/providers.ts(při načtení se validuje pomocí Zod). - Pokud je vyžadována vlastní logika, přidejte executor do
open-sse/executors/(rozšiřteBaseExecutor). - Pokud nepoužívá formát OpenAI, přidejte překladač do
open-sse/translator/. - Pokud je založen na OAuth, přidejte konfiguraci do
src/lib/oauth/providers/asrc/lib/oauth/services/. - Zaregistrujte modely v
open-sse/config/providerRegistry.ts(nebo v registru příslušného formátu vopen-sse/config/). - Napište testy v
tests/unit/.
Přidání nové API trasy
- Vytvořte
src/app/api/your-route/route.ts. - Dodržujte vzor: CORS → validace těla pomocí Zod → autentizace → delegování obsluze.
- Pokud má požadavek nový tvar, přidejte schéma Zod do
src/shared/validation/schemas.ts. - Pokud je určena pouze pro správu, přidejte cestu do
src/shared/constants/publicApiRoutes.ts(seznam zakázaných cest pro veřejné API). - Přidejte testy do
tests/unit/. - Aktualizujte
docs/reference/API_REFERENCE.mdadocs/openapi.yaml.
Přidání nového DB modulu
- Vytvořte
src/lib/db/yourModule.tsa importujtegetDbInstance()z./core.ts. - Exportujte CRUD funkce pro vaši doménu.
- Pokud přidáváte nové tabulky, přidejte migraci do
src/lib/db/migrations/, číslovanou sekvenčně, idempotentní a transakční. - Importující moduly používají přímé importy z
@/lib/db/yourModule(bez souhrnného exportu — stará reexportní vrstvalocalDb.tsbyla odstraněna). - Přidejte testy do
tests/unit/.
Přidání nového nástroje MCP
- Přidejte definici nástroje do
open-sse/mcp-server/tools/(nebo rozšiřteopen-sse/mcp-server/schemas/tools.ts). - Přiřaďte odpovídající rozsah či rozsahy v
src/shared/constants/mcpScopes.ts. - Zaregistrujte nástroj v
open-sse/mcp-server/server.ts. - Přidejte testy do
open-sse/mcp-server/__tests__/. - Aktualizujte MCP-SERVER.md.
Přidání nové dovednosti A2A
Viz A2A-SERVER.md § Přidání nové dovednosti. Dovednosti se nacházejí v
src/lib/a2a/skills/ a registrují se prostřednictvím správce úloh A2A.
11. Konvence
- Styl kódu: odsazení 2 mezerami, dvojité uvozovky, šířka 100 znaků, středníky,
koncové čárky
es5— vynucováno nástrojem Prettier prostřednictvímlint-staged. - Importy: externí → interní (
@/,@omniroute/open-sse) → relativní. - Pojmenování: soubory
camelCasenebokebab-case, komponentyPascalCase, konstantyUPPER_SNAKE. - ESLint:
no-eval,no-implied-eval,no-new-func=errorvšude;no-explicit-any=warnvopen-sse/atests/, jindeerror. - TypeScript:
strict: false(kvůli zpětné kompatibilitě). Na hranicích mezi moduly upřednostňujte explicitní typy před inferencí. - Databáze: nikdy nezapisujte nezpracované SQL do tras ani obslužných funkcí — vždy používejte
moduly v
src/lib/db/. Nikdy nepoužívejte souhrnné importy — importujte přímo konkrétní modulysrc/lib/db/*. - Typování DB entit (#3512): funkce, která zapisuje nebo čte tvar řádku
databázové tabulky, by měla přijímat/vracet pojmenované rozhraní TS, které
zrcadlí sloupce této tabulky v poměru 1:1, nikoli
anyani anonymní typ definovaný přímo v místě volání. Umístěte rozhraní vedle funkce (např.export interface UsageEntryvsrc/lib/usage/usageHistory.tsnadsaveRequestUsage), ponechte jednotlivá pole volitelná nebo s možností hodnoty null, pokud různí zapisující doplňují řádek postupně, a pro pole, jehož tvar se mezi volajícími liší, upřednostněteunknownpředany(zdokumentujte to u pole, např.UsageEntry.tokenspřijímá jak nezpracovaná data o využití ve tvaru poskytovatele, tak normalizovaný tvar). Jakmile tímto způsobem počet výskytůanyv souboru klesne na nulu, přidejte jej na seznam povolených položekcheck:any-budget:t11(scripts/check/check-t11-any-budget.mjs,maxAny: 0), aby nedošlo k regresi. Toto je konvence pro první dílčí etapu — širší odstraňování „anonymníhoany“ probíhá iterativně ve zbytku kódové základny. - Chyby: používejte try/catch s konkrétními typy chyb a protokolujte s kontextem pino. Nikdy tiše nepotlačujte chyby v proudech SSE; pro úklid používejte signály přerušení.
- Zabezpečení: nikdy nepoužívejte
eval()/new Function()/ implicitní eval. Validujte všechny vstupy pomocí Zod. Přihlašovací údaje v úložišti šifrujte (AES-256-GCM). Udržujte seznam zakázaných položeksrc/shared/constants/upstreamHeaders.tsv souladu s vrstvou sanitizace/validace. - Commity: Conventional Commits —
feat(scope): subject. Povolené rozsahy:db,sse,oauth,dashboard,api,cli,docker,ci,mcp,a2a,memory,skills. - Větve: prefixy
feat/,fix/,refactor/,docs/,test/,chore/. Nikdy necommitujte přímo domain. - Husky: před commitem se spouští
lint-staged+check:docs-sync+check:any-budget:t11; před odesláním se spouštícheck:any-budget:t11+check:tracked-artifacts(rychlé kontroly; nezahrnujítest:unit).
12. Pevná pravidla (z CLAUDE.md)
- Nikdy necommitujte tajné údaje ani přihlašovací údaje.
- Nikdy nepoužívejte souhrnné importy — používejte přímo konkrétní moduly
src/lib/db/*. - Nikdy nepoužívejte
eval()/new Function()/ implicitní eval. - Nikdy necommitujte přímo do
main. - Nikdy nezapisujte nezpracované SQL v routách — vždy používejte moduly
src/lib/db/. - Nikdy tiše nepotlačujte chyby v SSE streamech.
- Vstupy vždy validujte pomocí schémat Zod.
- Při změnách produkčního kódu vždy zahrňte testy.
- Pokrytí musí zůstat ≥ 60 % (příkazy, řádky, funkce, větve).
13. Viz také
- ARCHITECTURE.md — vysokoúrovňová architektura a odpovědnosti modulů.
- API_REFERENCE.md — referenční dokumentace veřejného a administračního API.
- FEATURES.md — přehled funkcí a hlavní novinky jednotlivých verzí.
- RESILIENCE_GUIDE.md — podrobný rozbor mechanismů circuit breaker, cooldown a lockout.
- AUTO-COMBO.md — hodnocení a strategie Auto Combo.
- MCP-SERVER.md — kompletní katalog nástrojů MCP a transportních mechanismů.
- A2A-SERVER.md — dovednosti protokolu A2A a jejich zjišťování.
- COMPRESSION_GUIDE.md — komprese RTK a Caveman.
- CLI-TOOLS.md — integrace CLI.
- ELECTRON_GUIDE.md (pokud je k dispozici), DOCKER_GUIDE.md, FLY_IO_DEPLOYMENT_GUIDE.md, VM_DEPLOYMENT_GUIDE.md, TERMUX_GUIDE.md, PWA_GUIDE.md — cílová prostředí pro nasazení.
- TROUBLESHOOTING.md — běžné provozní problémy.
- CONTRIBUTING.md — pracovní postup pro přispěvatele.
- CLAUDE.md — pravidla repozitáře pro Claude Code (autoritativní zdroj mnoha výše uvedených konvencí).
- AGENTS.md — podrobnější referenční dokumentace architektury používaná agenty.