Batch 1 of the locale expansion: Greek, Croatian, Serbian, Lithuanian, Estonian, Latvian, Slovenian, Maltese and Irish across the dashboard catalog, docs mirrors, CLI catalog, README, locale index and the site. 42 → 51 locales. Also fixes the ICU literal escape the translation backend dropped around angle placeholders, four translations that invented or renamed a placeholder, the language bars that linked to mirrors that do not exist, and the migration count drift (171 → 172). ⚠️ base-red inherited: #12732 — the four unit shards and Fast Quality Gates fail identically on unrelated PRs cut from the same base.
25 KiB
Contributing to OmniRoute (Latviešu)
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇱🇹 lt · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Paldies par interesi sniegt ieguldījumu! Šajā rokasgrāmatā ir aprakstīts viss nepieciešamais, lai sāktu darbu.
Oficiālo katras izmaiņas darbplūsmu skatiet sadaļā Zelta ceļš ieguldījumu veikšanai. Tajā pakalpojumu sniedzēja, maršrutēšanas, UI/UX, i18n, CLI, datubāzes un būvēšanas/izvietošanas izmaiņas ir sasaistītas ar to līgumiem, mērķētiem testiem, CI pārklājumu un saskaņošanas darbībām.
Izstrādes iestatīšana
Priekšnosacījumi
- Node.js
>=22.22.3 <23vai>=24.0.0 <27(ieteicams: 24 LTS) - npm 10+
npm v11+ lietotājiem (Node 24+): Pēc
npm installpārbaudiet, vai vietējie moduļi ir instalēti:node -e "require('better-sqlite3')". Ja komanda neizdodas arMODULE_NOT_FOUND, palaidietnpm approve-scripts better-sqlite3 && npm install. Skatiet Problēmu novēršana.
- Git
Klonēšana un instalēšana
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute
npm install
Vides mainīgie
# Izveidojiet .env failu no veidnes
cp .env.example .env
# Ģenerējiet nepieciešamos noslēpumus
echo "JWT_SECRET=$(openssl rand -base64 48)" >> .env
echo "API_KEY_SECRET=$(openssl rand -hex 32)" >> .env
Galvenie izstrādes mainīgie:
| Mainīgais | Noklusējuma vērtība izstrādē | Apraksts |
|---|---|---|
PORT |
20128 |
Servera ports |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
Frontend pamata URL |
JWT_SECRET |
(ģenerējiet iepriekš) | JWT parakstīšanas noslēpums |
INITIAL_PASSWORD |
CHANGEME |
Pirmās pieteikšanās parole |
APP_LOG_LEVEL |
info |
Žurnāla detalizācijas līmenis |
Informācijas paneļa iestatījumi
Informācijas panelī ir pieejami funkciju pārslēgi, kurus var konfigurēt arī, izmantojot vides mainīgos:
| Iestatījuma atrašanās vieta | Pārslēgs | Apraksts |
|---|---|---|
| Settings → Advanced | Atkļūdošanas režīms | Iespējot atkļūdošanas pieprasījumu žurnālus (UI) |
| Settings → General | Sānjoslas redzamība | Rādīt/slēpt sānjoslas sadaļas |
Šie iestatījumi tiek glabāti datubāzē un saglabājas pēc atkārtotas palaišanas; ja tie ir iestatīti, tie aizstāj vides mainīgo noklusējuma vērtības.
Darbināšana lokāli
# Izstrādes režīms (automātiska pārlāde)
npm run dev
# Produkcijas būvējums
npm run build # next build → .build/next/ un pēc tam assembleStandalone → dist/
npm run start
# Ātra tikai backend/API kompilēšana izmaiņām, ko veic ieguldītāji
npm run build:contributor
# Izlaiduma būvējums (tīra pārbūve + HEAD marķieris — nepieciešams izvietošanai)
npm run build:release # rm -rf .build dist un build + ieraksta dist/BUILD_SHA
# Izplatīta porta konfigurācija
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
Ieguldītāja būvējums veic tikai kompilēšanas validāciju: tas neizveido patstāvīgo izplatīšanu un nebūvē neobligātos vietējās pakotnes līdzekļus. Izmantojiet parasto produkcijas būvējumu, ja nepieciešams validēt izplatāmo pakotni.
Būvējuma izvades struktūra
| Direktorija | Saturs | Tiek izsekota |
|---|---|---|
src/ |
Lietotnes pirmkods (TypeScript / TSX) | Jā |
.build/ |
Starpfaili — next build izvade (ignorēta, distDir = .build/next) |
Nē |
dist/ |
Izplatāmā pakotne — to izveido assembleStandalone (ignorēta) |
Nē |
Būvēšanas konveijers darbojas vienā piegājienā:
npm run build
└─ next build → .build/next/standalone (Next.js izvade)
└─ assembleStandalone() (kopē standalone + static + public + native assets)
└─ izvade: dist/ (server.js, .next/static/, public/, node_modules/)
npm run build:release papildus vispirms notīra abas direktorijas un ieraksta
dist/BUILD_SHA (= git rev-parse --short HEAD) kā izvietošanas integritātes marķieri.
npm run build:contributor izmanto tikai backend paredzēto būvējuma profilu. Būvēšanas laikā tas īslaicīgi aizstāj informācijas paneļa UI failus, saglabā API maršrutu apstrādātājus un pēc būvēšanas atjauno sākotnējos failus. Izmantojiet npm run build, lai pārbaudītu izmaiņas, kas ietekmē informācijas paneļa UI, vai veiktu pilnu izlaiduma validāciju; ieguldītāja profils neaizstāj izlaiduma būvējumu.
Piezīme par izvietošanu VPS: attālā attēla direktorija
/usr/lib/node_modules/omniroute/app/netiek mainīta. Izvietošanas prasmes tajā sinhronizēdist/saturu, izmantojot rsync. Mainījies ir tikai repozitorijā esošais būvējuma izvades ceļš (app/→dist/).
Noklusējuma URL:
- Informācijas panelis:
http://localhost:20128/dashboard - API:
http://localhost:20128/v1
Git darbplūsma
⚠️ NEKAD neveiciet tiešu commit uz
main. Vienmēr izmantojiet funkciju zarus.PR bāze: mērķējiet uz aktīvo
release/vX.Y.Zzaru (nevismain). Skatietdocs/ops/BRANCHING_MODEL.md, lai iepazītos ar modeli “release-per-branch + tag-at-ship”.
# Izveidot zaru no aktīvā release gala (piemērs: release/v3.8.49)
git fetch origin
git checkout -b feat/your-feature-name origin/release/v3.8.49
# ... veikt izmaiņas ...
git commit -m "feat: describe your change"
git push -u origin feat/your-feature-name
# Atveriet Pull Request ar base = release/v3.8.49
Zaru nosaukumi
| Prefix | Nolūks |
|---|---|
feat/ |
Jaunas funkcijas |
fix/ |
Kļūdu labojumi |
refactor/ |
Koda pārstrukturēšana |
docs/ |
Dokumentācijas izmaiņas |
test/ |
Testu pievienošana/labošana |
chore/ |
Rīki, CI, atkarības |
Commit ziņojumi
Ievērojiet Conventional Commits:
feat: add circuit breaker for provider calls
fix: resolve JWT secret validation edge case
docs: update SECURITY.md with PII protection
test: add observability unit tests
refactor(db): consolidate rate limit tables
Tvērumi (v3.8): db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz.
Testu palaišana
# Visi testi (unit + vitest + ecosystem + e2e)
npm run test:all
# Viens testa fails (Node.js native test runner — lielākā daļa testu izmanto šo)
node --import tsx/esm --test tests/unit/your-file.test.ts
# Tikai izmaiņu ietekmētie unit testi (tas pats TIA selektors, ko izmanto CI vārteja, #8084)
npm run test:scoped # izmaiņas pēdējā commit (vai darba kokā)
npm run test:scoped:staged # tikai staged izmaiņas — labi piemērots pre-commit palaišanai
npm run test:scoped:full # vispirms atkārtoti izveidot import-graph karti (pēc failu pievienošanas/pārvietošanas)
# Exit 1 + "run the full suite" nozīmē, ka mainīts hub fails (tsconfig, package.json, …) vai
# nekartēts avots — selektors neuzņemas risku, tas nekad klusi neizlaiž testus.
# Vitest (MCP server, autoCombo, cache)
npm run test:vitest
# E2E testi (nepieciešams Playwright)
npm run test:e2e
# Protokola klientu E2E (MCP transports, A2A)
npm run test:protocols:e2e
# Ecosystem saderības testi
npm run test:ecosystem
# Pārklājuma vārteja: 60% statements/lines/functions/branches
npm run test:coverage
npm run coverage:report
# Lint + format pārbaude
npm run lint
npm run check
# Kontrolēta reālo upstream kombināciju smoke pārbaude (nepieciešama VPS piekļuve + reāla provideru kredītu bilance)
# Izmanto REAL providerus — izmaksas ir nelielas. NEKAD netiek palaists CI. Bez vārtejas tiek korekti izlaists.
# Nepieciešama: ssh root@192.168.0.15 piekļuve (no VPS tiek iegūts tikai lasāms DB momentuzņēmums).
RUN_COMBO_LIVE=1 npm run test:combo:live
# 3. fāzes VPS live smoke pārbaude — vienkārši Node ESM skripti, kas tieši piekļūst live .15 serverim.
# Nepieciešama: ssh root@192.168.0.15 piekļuve (kombinācijas tiek izveidotas/noņemtas, izmantojot SSH sqlite).
# Izmanto REAL providerus (nelielas izmaksas). Izveido/dzēš tikai __live_test__* kombinācijas. NEKAD netiek palaists CI.
# REQUIRE_API_KEY=false uz .15, tāpēc API atslēga nav nepieciešama, bet, ja iestatīti, tiek ņemti vērā COMBO_LIVE_BASE_URL / COMBO_LIVE_API_KEY.
npm run test:combo:live:vps # 7 HTTP scenāriji (priority/round-robin/weighted/cost/fusion/auto + health)
npm run test:combo:live:vps:failover # pievieno reālu starp-provideru failover scenāriju (kopā 8)
Pārklājuma piezīmes:
npm run test:coveragemēra avota pārklājumu galvenajai unit testu kopai, izslēdztests/**un ietveropen-sse/**- Pull Request ir jāsaglabā pārklājuma vārteja vismaz 60%+ apmērā statements/lines/functions/branches
- Ja PR maina produkcijas kodu mapēs
src/,open-sse/,electron/vaibin/, tajā pašā PR ir jāpievieno vai jāatjaunina automatizētie testi npm run coverage:reportizvada detalizētu pārskatu par katru failu no jaunākās pārklājuma palaišanasnpm run test:coverage:legacysaglabā vecāko metriku vēsturiskai salīdzināšanai- Skatiet
docs/ops/COVERAGE_PLAN.md, lai iepazītos ar pakāpenisku pārklājuma uzlabošanas ceļvedi
Pull Request prasības
Pirms PR atvēršanas izmantojiet Contribution Golden Path, lai palaistu mērķēto ciklu atbilstoši veiktajām izmaiņām. Pilnā unit testu kopa (4 CI shards), Vitest, 60%+ pārklājuma vārteja un produkcijas build ir CI atbildība — to palaišana lokāli nedod nekādu papildu informāciju, ko PR pārbaudes jau nesniegs, turklāt mazākās ierīcēs tas var pārslogot hostu (#8084):
- Palaidiet testa failus, kas aptver jūsu izmaiņas:
node --import tsx/esm --test tests/unit/<file>.test.ts - Palaidiet
npm run lint - Ikreiz, kad mainās produkcijas kods, tajā pašā PR iekļaujiet vai atjauniniet automatizētos testus
- Ja mainījies produkcijas kods, PR aprakstā iekļaujiet mainītos vai pievienotos testa failus
- Ja CI ir konfigurēti projekta noslēpumi, pārbaudiet SonarQube rezultātu PR
Pašreizējais testu statuss: 122 unit testu faili, kas aptver:
- Provideru translatorus un formātu konvertēšanu
- Ātruma ierobežošanu, circuit breaker un noturību
- Semantisko kešatmiņu, idempotenci, progresa izsekošanu
- Datu bāzes darbības un shēmu (21 DB modulis)
- OAuth plūsmas un autentifikāciju
- API galapunktu validāciju (Zod v4)
- MCP servera rīkus un tvērumu izpildes kontroli
- Memory un Skills sistēmas
Koda stils
- ESLint — Pirms komita izpildiet
npm run lint - Prettier — Komita laikā automātiski formatē, izmantojot
lint-staged(2 atstarpes, semikoli, dubultās pēdiņas, 100 rakstzīmju platums,es5beigu komati) - TypeScript — Viss
src/kods izmanto.ts/.tsx;open-sse/izmanto.ts/.js; dokumentējiet ar TSDoc (@param,@returns,@throws) - Bez
eval()— ESLint ievērono-eval,no-implied-eval,no-new-func - Zod validācija — Visai API ievades validācijai izmantojiet Zod v4 shēmas
- Nosaukumi: faili = camelCase/kebab-case, komponenti = PascalCase, konstantes = UPPER_SNAKE
Kļūdu apstrāde / tukši catch bloki
Nekad neatstājiet catch bez paskaidrojuma. Klasificējiet to vienā no divām kategorijām (tādējādi tiek ieviests stingrais noteikums “nekad klusi neignorēt kļūdas SSE straumēs”):
-
Apzināta (mūsu pašu labāko centienu tīrīšana/telemetrija) — kļūme šeit ir sagaidāma un nekaitīga; pievienojiet vienas rindiņas pamatojuma komentāru, neveiciet reģistrēšanu (reģistrēšana katra pieprasījuma laikā ir troksnis, no kura šī konvencija palīdz izvairīties).
} catch {} // jau aizvērta kontrollera aizvēršana pēc klienta atvienošanās ir sagaidāma -
Jāreģistrē (ārējs/zvanītāja nodrošināts kods vai kļūdas ignorēšana maina vadības plūsmu) — saglabājiet
catch(nekad neļaujiet tam pārtraukt straumi), bet izvadiet kontekstuāluconsole.debug/warn, lai kļūme būtu atklājama.} catch (e) { console.debug("[STREAM] onFailure callback error:", e); }
Skatiet open-sse/utils/stream.ts un open-sse/utils/streamHandler.ts, lai iepazītos ar pielietotajiem piemēriem.
Projekta struktūra
src/ # TypeScript (.ts / .tsx)
├── app/ # Next.js 16 App Router
│ ├── (dashboard)/ # Informācijas paneļa lapas (23 sadaļas)
│ ├── api/ # API maršruti (51 direktorija)
│ └── login/ # Autentifikācijas lapas (.tsx)
├── domain/ # Politiku dzinis (policyEngine, comboResolver, costRules u.c.)
├── lib/ # Galvenā biznesa loģika (.ts)
│ ├── a2a/ # Agent-to-Agent v0.3 protokola serveris
│ ├── acp/ # Agent Communication Protocol reģistrs
│ ├── compliance/ # Atbilstības politiku dzinis
│ ├── db/ # SQLite domēna moduļi + 130 migrācijas
│ ├── memory/ # Pastāvīga sarunu atmiņa
│ ├── oauth/ # OAuth nodrošinātāji, pakalpojumi un utilītas
│ ├── skills/ # Paplašināma prasmju infrastruktūra
│ ├── usage/ # Lietojuma uzskaite un izmaksu aprēķināšana
│ └── localDb.ts # Tikai atkārtotas eksportēšanas slānis — nekad šeit nepievienojiet loģiku
├── middleware/ # Pieprasījumu starpprogrammatūra (promptInjectionGuard)
├── mitm/ # MITM starpniekserveris (sertifikāts, DNS, mērķa maršrutēšana)
├── shared/
│ ├── components/ # React komponenti (.tsx)
│ ├── constants/ # Nodrošinātāju definīcijas (329), MCP tvērumi, 19 maršrutēšanas stratēģijas
│ ├── utils/ # Automātiskais slēdzis, sanitizētājs, autentifikācijas palīgi
│ └── validation/ # Zod v4 shēmas
└── sse/ # SSE starpniekservera konveijers
open-sse/ # @omniroute/open-sse workspace
├── executors/ # 89 izpildītāju ieviešanas moduļi
├── handlers/ # 11 pieprasījumu apstrādātāji (chat, responses, embeddings, images u.c.)
├── mcp-server/ # MCP serveris (110 unikāli rīki, 3 transporti, 33 tvērumi)
├── services/ # 178 augstākā līmeņa pakalpojumi (combo, autoCombo, rateLimitManager u.c.)
├── translator/ # Formātu tulkotāji (OpenAI ↔ Claude ↔ Gemini ↔ Responses ↔ Ollama)
├── transformer/ # Responses API pārveidotājs
└── utils/ # 22 utilītas moduļi (straume, TLS, starpniekserveris, reģistrēšana)
electron/ # Electron darbvirsmas lietotne (daudzplatformu)
tests/
├── unit/ # Node.js testu palaidējs (1,574 testu faili)
├── integration/ # Integrācijas testi
├── e2e/ # Playwright testi
├── security/ # Drošības testi
├── translator/ # Tulkotājam specifiski testi
└── load/ # Slodzes testi
docs/
├── adr/ # Arhitektūras lēmumu ieraksti
├── architecture/ # Sistēmas arhitektūra un noturība
├── comparison/ # OmniRoute salīdzinājumā ar alternatīvām
├── compression/ # Saspiešanas ceļveži un noteikumi
├── dev/ # Izstrādes ceļveži
├── diagrams/ # Arhitektūras diagrammas
├── frameworks/ # MCP, A2A, OpenCode, Memory, Skills
├── guides/ # Lietotāja ceļvedis, Docker, iestatīšana, problēmu novēršana
├── i18n/ # Internacionalizēti README tulkojumi
├── marketing/ # Mārketinga materiāli
├── ops/ # Izvietošana, starpniekserveris, pārklājums, laidieni
├── providers/ # Konkrētiem nodrošinātājiem paredzēta dokumentācija
├── reference/ # API atsauce, vides mainīgie, CLI rīki, bezmaksas līmeņi
├── releases/ # Laidienu piezīmes
├── routing/ # Automātiskās kombinēšanas dzinis, spriešanas atkārtošana
├── screenshots/ # Informācijas paneļa ekrānuzņēmumi
├── security/ # Drošības vadīklas, atbilstība, slēpšana, pilnvarojuma marķieri
└── specs/ # Izstrādes specifikācijas
Jauna nodrošinātāja pievienošana
1. darbība: reģistrējiet nodrošinātāja konstantes
Pievienojiet src/shared/constants/providers.ts — validācija ar Zod tiek veikta moduļa ielādes laikā.
2. darbība: pievienojiet izpildītāju (ja nepieciešama pielāgota loģika)
Izveidojiet izpildītāju open-sse/executors/your-provider.ts, paplašinot bāzes izpildītāju.
3. darbība: pievienojiet tulkotāju (ja formāts nav OpenAI formāts)
Izveidojiet pieprasījumu/atbilžu tulkotājus direktorijā open-sse/translator/.
4. darbība: pievienojiet OAuth konfigurāciju (ja tiek izmantots OAuth)
Pievienojiet OAuth akreditācijas datus failā src/lib/oauth/constants/oauth.ts un pakalpojumu direktorijā src/lib/oauth/services/.
Ja augšupējais nodrošinātājs izplata publisku OAuth client_id/secret vai Firebase Web API key savā publiskajā CLI / pārlūkprogrammas komplektā, neieguliet to kā virknes literāli. Izmantojiet resolvePublicCred() no open-sse/utils/publicCreds.ts un pievienojiet maskētu baitu ierakstu kolekcijai EMBEDDED_DEFAULTS. Pilnā obligātā darbplūsma ir dokumentēta failā docs/security/PUBLIC_CREDS.md.
Apstrādātājos/izpildītājos kļūdu ziņojumiem, kas sasniedz klientu, ir jāizmanto buildErrorBody() / sanitizeErrorMessage() no open-sse/utils/error.ts — nekad neievietojiet neapstrādātu err.stack vai err.message objekta Response pamattekstā. Skatiet docs/security/ERROR_SANITIZATION.md.
5. darbība: reģistrējiet modeļus
Pievienojiet modeļu definīcijas failā open-sse/config/providerRegistry.ts.
6. darbība: pievienojiet testus
Uzrakstiet vienību testus direktorijā tests/unit/, kas aptver vismaz:
- Nodrošinātāja reģistrāciju
- Pieprasījumu/atbilžu tulkošanu
- Kļūdu apstrādi
Pull Request kontrolsaraksts
- Testi ir veiksmīgi (
npm test) - Lint pārbaude ir veiksmīga (
npm run lint) - Būvēšana ir veiksmīga (
npm run build) - Jaunām publiskajām funkcijām un saskarnēm ir pievienoti TypeScript tipi
- Nav cietkodētu noslēpumu vai rezerves vērtību
- Publiskie augšupējā nodrošinātāja akreditācijas dati ir iegulti, izmantojot
resolvePublicCred()(skatietdocs/security/PUBLIC_CREDS.md), nekad kā literāļi - Kļūdu atbildes tiek novirzītas caur
buildErrorBody()/sanitizeErrorMessage()— atbildes pamattekstā nav neapstrādātu steka izsekojumu (skatietdocs/security/ERROR_SANITIZATION.md) - Čaulas komandas (
exec/spawn) izpildlaika vērtības padod, izmantojotenv, nevis virkņu interpolāciju - Visas ievades tiek validētas ar Zod shēmām
- Lietotājiem redzamām izmaiņām ir pievienots izmaiņu žurnāla fragment fails
changelog.d/{features|fixes|maintenance}/<PR>-<slug>.md(skatietchangelog.d/README.md) — nerediģējietCHANGELOG.mdtieši; fragmenti tiek apkopoti laidiena izveides laikā un nekad nerada konfliktus starp PR - Dokumentācija ir atjaunināta (ja piemērojams)
- Nav atvērti jauni CodeQL / Secret-Scanning brīdinājumi, vai arī katrs no tiem ir noraidīts ar tehnisku pamatojumu, atsaucoties uz atbilstošo
docs/security/dokumentu - Maršruti, kas palaiž bērnprocesus (
/api/mcp/,/api/cli-tools/runtime/), failāsrc/server/authz/routeGuard.tsir klasificēti arisLocalOnlyPath()— skatiet Stingro noteikumu #15 - Komitziņojumos nav
Co-Authored-Bypapildinājumu — komitiem ir jāparādās tikai repozitorija īpašnieka Git identitātes vārdā (Stingrais noteikums #16)
Izlaides
Izlaides tiek pārvaldītas, izmantojot /generate-release darbplūsmu. Kad tiek izveidots jauns GitHub laidiens, pakotne tiek automātiski publicēta npm platformā, izmantojot GitHub Actions.
VPS izvietošanai izmantojiet npm run build:release (nevis npm run build) — tas veic tīru
pārbūvi, apkopo komplektu mapē dist/ un izveido dist/BUILD_SHA indikatorfailu.
Pēc tam izmantojiet /deploy-vps-*-cc prasmes, kas ar rsync sinhronizē dist/ ar attālo app/ mapi.
Palīdzības saņemšana
- Arhitektūra: skatiet
docs/architecture/ARCHITECTURE.md - API atsauce: skatiet
docs/reference/API_REFERENCE.md - Drošības dokumentācija:
docs/security/CLI_TOKEN.md,docs/security/ROUTE_GUARD_TIERS.md,docs/security/ERROR_SANITIZATION.md,docs/security/PUBLIC_CREDS.md - Operāciju dokumentācija:
docs/ops/SQLITE_RUNTIME.md - Problēmas: github.com/diegosouzapw/OmniRoute/issues
- ADR: skatiet
docs/adr/, lai iepazītos ar arhitektūras lēmumu ierakstiem