Batch 3 (last) of the locale-expansion plan: ha, yo, ig, am, uz, ka, hy on every surface â dashboard catalog, docs mirror (22-file core + llm.txt + CHANGELOG), CLI catalog, README flag block, locale tables and đ language bars. Also closes the key gap the batch-1 (43 keys) and batch-2 (10 keys) catalogs carried since their base merges, fixes the Igbo "Model" copy and allowlists the Uzbek cognate. Translation-ratio baseline covers 65 locales. â ïž base-red inherited: #12732
46 KiB
Contributing to OmniRoute (á„áá ááŁáá)
đ 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 · đ°đ 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
áááááááá ááááąá áááŁáȘááá áááááąáá ááĄááááĄááááĄ! áᥠáĄááźáááá«áŠáááááá ááááȘááᥠá§ááááá€áá áĄ, á ááȘ áááĄááŹá§áááá áááá ááááá.
ááááááŁáá áȘááááááááĄáááᥠááááĄáááŠáá áŁáá áá€ááȘááááŁá á áĄáááŁášáá áá ááȘááĄáᥠáááĄááȘááááá ááááŹá§áá ááááąá áááŁáȘááᥠá«áá ááááá áááá. áᥠáá ááááááá ááĄ, ááá ášá áŁáąááááȘáááĄ, UI/UX-ááĄ, i18n-ááĄ, CLI-ááĄ, áááááȘáááá áááááĄá áá ááááááĄ/áááááááĄáááᥠáȘááááááááᥠááááášáá ááᥠááá ááááąá áá„áąááááá, ááááááá áá áąááĄáąááááá, CI-áᥠááá€áá áááĄá áá ášááŻáá áááᥠááąááááááá.
áááááááááááąáᥠááá áááᥠááááá ááá
áŹáááááá ááááá
- Node.js
>=22.22.3 <23, áá>=24.0.0 <27(á ááááááááááŁááá: 24 LTS) - npm 10+
npm v11+-áᥠááááźááá áááááá (Node 24+):
npm install-áᥠášááááá ááááááááŹááá, á áá áááąááŁá á ááááŁáááá áááááĄáąáááá áá:node -e "require('better-sqlite3')". áᣠááĄMODULE_NOT_FOUNDášááȘááááá áááĄá áŁááááá, áááŁášááánpm approve-scripts better-sqlite3 && npm install. ááźáááá áá ááááááááᥠáááááá ááá.
- Git
áááááá ááá áá áááĄáąááááȘáá
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute
npm install
ááá áááᥠáȘááááááá
# ášáá„ááááá áá„áááá .env ášááááááááá
cp .env.example .env
# áááááááá áá áá áĄáááá á áĄááááŁááá áááášááááááááá
echo "JWT_SECRET=$(openssl rand -base64 48)" >> .env
echo "API_KEY_SECRET=$(openssl rand -hex 32)" >> .env
áááááááááááąááĄáááᥠáááášááááááááá áȘááááááá:
| áȘááááá | áááááááááááąáᥠááááŁáááĄáźáááá áááášááááááá | ááŠáŹáá á |
|---|---|---|
PORT |
20128 |
áĄáá ááá áᥠááá áąá |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
á€á áááąááááᥠáĄááááááĄá URL |
JWT_SECRET |
(áááááááá áá áá ááááá) | JWT-áᥠáźáááááŹáá áᥠáĄááááŁááá |
INITIAL_PASSWORD |
CHANGEME |
ááá áááá ášááĄáááᥠááá ááá |
APP_LOG_LEVEL |
info |
ááŁá ááááᥠáááąááááááȘááᥠáááá |
ááá áááᥠááááááᥠááá ááááąá ááá
ááá áááᥠáááááá ááááááááá UI áááááá ááááááᥠáá á€áŁáá„áȘáááááĄááááĄ, á áááááá áááá€áááŁá ááȘáááȘ ááá áááᥠáȘáááááááá áá áᥠášááĄáá«áááááá:
| ááá ááááąá áᥠáááááá áááá | áááááá ááááá | ááŠáŹáá á |
|---|---|---|
| ááá ááááąá ááá â ááá€áá áááááŁáá | ááááá áááᥠá ááááá | ááááá áááᥠááááźááááááᥠááŁá ááááááᥠá©áá ááá (UI) |
| ááá ááááąá ááá â áááááá | áááá áááá ááááᥠáźáááááááá | áááá áááá ááááᥠáĄáá„áȘááááᥠá©áááááá/ááááááá |
áᥠááá ááááąá ááá áááááȘáááá ááááášá ááááźááá áá áźááááźáá ááášááááᥠášáááááááȘ ááá á©áŁááááá; ááá§ááááááĄáᥠááĄááá ááá áááᥠáȘáááááááᥠááááŁáááĄáźááá áááášááááááááᥠááááȘáááááĄ.
ááááááŁá áá ááášáááá
# áááááááááááąáᥠá ááááá (áȘáźááá áááááąááá ááá)
npm run dev
# áĄááŹáá ááá ááááá
npm run build # next build â .build/next/, ášááááá assembleStandalone â dist/
npm run start
# áĄáŹá áá€á, ááźáááá ááááááááĄ/API-áᥠááááááááȘáá ááááąá áááŁáąáá áᥠáȘááááááááááĄááááĄ
npm run build:contributor
# á áááááᥠááááá (áĄáŁá€áá áźááááźááá ááááá + HEAD sentinel â ááŁáȘáááááááá áááááááĄááááĄááááĄ)
npm run build:release # rm -rf .build dist && ááááá + áŹáá ᥠdist/BUILD_SHA-áĄ
# ááá áąáᥠáááá áȘáááááŁáá áááá€áááŁá ááȘáá
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
ááááąá áááŁáąáá áᥠááááá ááźáááá ááááááááȘááᥠáááááááȘááᥠááĄá áŁááááĄ: áᥠáá ááŹá§ááᥠáááááŁááááááá áááĄáąá áááŁáȘááᥠáá áá ááááᥠáá á©áááá áááąááŁá ááá€ááĄááááá á ááĄáŁá áĄáááĄ. áááááá§áááá á©áááŁáááá ááá áĄááŹáá ááá ááááá, á ááááĄááȘ áááĄááá áȘááááááá ááá áááááąáᥠáááááááȘáá áááá ááááá.
áááááᥠášáááááááᥠááááááááá
| ááá áá„áąáá áá | ášááááááĄá | ááááąá áááááá |
|---|---|---|
src/ |
áááááááȘááᥠáĄááŹá§ááĄá áááá (TypeScript / TSX) | ááááź |
.build/ |
ášáŁáááááŁá á á€áááááá â next build-áᥠášááááá (gitignored, distDir = .build/next) |
áá á |
dist/ |
áááĄááá áȘááááááá ááá áááááąá â ááŹá§áááááá assembleStandalone-áᥠáááá (gitignored) |
áá á |
áááááᥠáááááááá á áá á áááááᥠáá§áááááĄ:
npm run build
ââ next build â .build/next/standalone (Next.js-áᥠášááááá)
ââ assembleStandalone() (áááááá ááᥠstandalone + static + public + áááąááŁá á ááĄáŁá áĄáááĄ)
ââ ášááááá: dist/ (server.js, .next/static/, public/, node_modules/)
npm run build:release áááááąáááá áŻáá áá ááá ááá áá„áąáá ááᥠááĄáŁá€áááááᥠáá
áááááááĄáááᥠáááááááááᥠsentinel-áᥠáĄááźáá áŹáá ᥠdist/BUILD_SHA-ᥠ(= git rev-parse --short HEAD).
npm run build:contributor ááźáááá áááááááᥠáááááᥠáá áá€ááᥠáá§áááááĄ. ááááááĄáᥠáᥠáá ááááá ááááȘáááááĄ
ááá áááᥠááááááᥠUI á€áááááᥠáá áááááá á©ááááȘáááááááá, áááá á©áŁáááᥠAPI ááá ášá áŁáąáááᥠáááááŁášáááááááᥠáá áááááᥠášááááá ááŠáááááᥠáááááááá ááá á€ááááááĄ.
áááááá§áááá npm run build áá áȘááááááááááĄááááĄ, á áááááááȘ áááááááᥠááźáááᥠááá áááᥠááááááᥠUI-áá, áá á áááááᥠáĄá áŁáá
áááááááȘáááĄááááĄ; ááááąá áááŁáąáá áᥠáá áá€ááá á áááááᥠáááááᥠáá ááááȘáááááĄ.
VPS-áá áááááááĄáááᥠášáááášááá: áááĄáąáááȘááŁá á ááááŻáᥠááá áá„áąáá áá
/usr/lib/node_modules/omniroute/app/áŁáȘáááááá. áááááááĄáááᥠáŁááá ááádist/-áᥠášááááááĄáĄ áááĄášá rsync-áá ááĄááá„á áááááĄ. ášáááȘáááá ááźáááá á ááááááąáá ááášá áá áĄáááŁáá áááááᥠášáááááᥠááá (app/âdist/).
ááááŁáááĄáźáááá URL-ááá:
- ááá áááᥠáááááá:
http://localhost:20128/dashboard - API:
http://localhost:20128/v1
Git-áᥠáĄáááŁášáá áá ááȘááĄá
â ïž áá ááĄáááᥠášáááąáááá commit ááá ááááá
main-ášá. á§áááááááᥠáááááá§áááá á€áŁáá„áȘááŁá á áááášáąáááááá.PR-áᥠáĄááááááĄá áááášáąáááá: áĄááááááá áááŁááááá áá„áąááŁá á
release/vX.Y.Záááášáąáááá (áá áá ámain). áááá ááááášáááááá áȘáááá áááášáąáááááĄá áá ááááášáááááĄáᥠáąáááᥠášáá„áááᥠááááááᥠášááĄááźáá ááźáááádocs/ops/BRANCHING_MODEL.md.
# ášáá„ááááá áááášáąáááá áá„áąááŁá á ááááášááááᥠáááá áŹáá áąáááááá (ááááááááá: release/v3.8.49)
git fetch origin
git checkout -b feat/your-feature-name origin/release/v3.8.49
# ... ášáááąáááá áȘááááááááá ...
git commit -m "feat: ááŠáŹáá áá áá„áááá áȘááááááá"
git push -u origin feat/your-feature-name
# áááźáĄáááá Pull Request, áĄááááȘ base = release/v3.8.49
áááášáąááááááᥠáááĄááźááááá
| áá áá€áá„áĄá | ááááášááŁáááá |
|---|---|
feat/ |
ááźááá á€áŁáá„áȘáááá |
fix/ |
ášááȘááááááᥠáááááĄáŹáá ááá |
refactor/ |
ááááᥠá ááĄáąá áŁá„áąáŁá ááááȘáá |
docs/ |
ááááŁááááąááȘááᥠáȘááááááááá |
test/ |
áąááĄáąáááᥠáááááąááá/ášááĄáŹáá ááá |
chore/ |
áááĄáąá áŁááááąááá, CI, ááááááááááŁáááááá |
Commit-ášááąá§ááááááááá
ááááȘáááá Conventional Commits-áᥠáŹááĄááá:
feat: áá ááááááá áᥠááááá«ááźááááááĄáááᥠcircuit breaker-áᥠáááááąááá
fix: JWT áĄááááŁáááᥠáááááááȘááᥠááááĄáááŁáá áááŁáá ášááááźááááᥠáááááá ááá
docs: SECURITY.md-áᥠáááááźáááá PII-áᥠáááȘááá
test: áááááá ááááááááᥠááááŁááŁá á áąááĄáąáááᥠáááááąááá
refactor(db): áĄááźášáá áᥠášáááŠáŁáááᥠáȘáźá áááááᥠáááá ááááááá
áá áááá (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.
áąááĄáąáááᥠááášáááá
# á§áááá áąááĄáąá (unit + vitest + ecosystem + e2e)
npm run test:all
# áá áá áĄááąááĄáąá á€áááá (Node.js-áᥠá©áášáááááŁáá áąááĄáąáááᥠáááášáááá â áąááĄáąáááᥠáŁáááąááĄááá áááᥠáá§áááááĄ)
node --import tsx/esm --test tests/unit/your-file.test.ts
# ááźáááá áá„áááá áȘáááááááá ááááá áááááŁáá ááááŁááŁá á áąááĄáąááá (ááááá TIA áĄáááá„áąáá á, á ááȘ CI ááá ááá ášá, #8084)
npm run test:scoped # áááá commit-ášá (áá áĄáááŁášáá áźáášá) ášááąááááá áȘááááááááá
npm run test:scoped:staged # ááźáááá staged áȘááááááááá â ááá ááá áá áŹá§ááᥠpre-commit ááášáááááĄ
npm run test:scoped:full # áŻáá áźááááźáá ááááá import-graph á áŁáá (á€ááááááᥠáááááąááááĄ/ááááááááááááᥠášááááá)
# Exit 1 + "run the full suite" ááášááááĄ, á áá ášáááȘáááá áȘáááąá áááŁá á á€áááá (tsconfig, package.json, âŠ) áá
# á áŁáááá áá áá áĄáááŁáá áĄááŹá§ááĄá áááá â áĄáááá„áąáá á áŁáĄáá€á ááźáá ááĄá áŁáááᥠááŁášááááᥠášááȘááááá áá áá ááĄáááᥠáááááąááááᥠáąááĄáąááᥠášááŁáá©áááááá.
# Vitest (MCP áĄáá ááá á, autoCombo, cache)
npm run test:vitest
# E2E áąááĄáąááá (áĄáááá áááᥠPlaywright-áĄ)
npm run test:e2e
# áá ááąáááááᥠááááááąáááᥠE2E (MCP áąá áááĄááá áąááá, A2A)
npm run test:protocols:e2e
# ááááĄááĄáąááááĄááá ááááĄáááááááᥠáąááĄáąááá
npm run test:ecosystem
# ááá€áá ááᥠááá ááá á: ááááŁáááááááĄ/áĄáąá áá„ááááááĄ/á€áŁáá„áȘáááááĄ/áááášáąááááááᥠ60%
npm run test:coverage
npm run coverage:report
# Lint + á€áá áááąáá áááᥠášááááŹáááá
npm run lint
npm run check
# ááá ááá áá áááȘáŁáá á ááááŁá upstream-áá combo-ᥠsmoke-áąááĄáąá (áĄáááá áááᥠVPS-áá áŹáááááᥠ+ á ááááŁá á áá ááááááá áᥠáá ááááąáááĄ)
# ááááá áááᥠá ááááŁá áá ááááááá ááᥠâ ááȘáá á áźáá áŻááááá áááááášáá áááŁáá. áá ááĄáááᥠáášáááá CI-ášá. ááá ááá áᥠááá áášá áŁáá ááááááá ááááááąááááá.
# áĄáááá áá: ssh root@192.168.0.15 áŹááááá (VPS-áááá áá§ááááᥠDB-áᥠááźáááá áŹáááááźááá snapshot-áĄ).
RUN_COMBO_LIVE=1 npm run test:combo:live
# áá-3 á€áááᥠVPS-áᥠáȘááȘáźááá smoke-áąááĄáąá â á©áááŁáááá ááá Node ESM áĄáá áááąááá, á áááááááȘ ááá ááááá áȘááȘáźáá .15 áĄáá ááá ᥠááááá ááááá.
# áĄáááá áá: ssh root@192.168.0.15 áŹááááá (combo-ááá áá„ááááá/áášáááá SSH sqlite-áᥠááášáááááá).
# ááááá áááᥠá ááááŁá áá ááááááá ááᥠ(ááȘáá á áźáá áŻá). á„ááááĄ/ášááᥠááźáááá __live_test__* combo-áááĄ. áá ááĄáááᥠáášáááá CI-ášá.
# .15-áá REQUIRE_API_KEY=false, ááááąáá API áááĄááŠááá áĄáááá á áá áá ááĄ, ááŁááȘá ááá§áááááᥠášááááźááááášá áááááááĄáŹááááᥠCOMBO_LIVE_BASE_URL / COMBO_LIVE_API_KEY-áĄ.
npm run test:combo:live:vps # 7 HTTP áĄáȘáááá á (priority/round-robin/weighted/cost/fusion/auto + health)
npm run test:combo:live:vps:failover # ááááąááᥠáá ááááááá ááᥠášáá áᥠá ááááŁá failover áĄáȘáááá ᥠ(áĄáŁá 8)
ááá€áá ááᥠášáááášááááá:
npm run test:coverageáááááᥠáĄááŹá§ááĄá ááááᥠááá€áá ááᥠá«áá ááááá ááááŁááŁá á áąááĄáąáááᥠáááá ááááĄááááĄ, ááááá ááȘáźáááĄtests/**-ᥠáá ááááȘáááĄopen-sse/**-áĄ- Pull Request-áááá ááááŁáááááááĄ/áĄáąá áá„ááááááĄ/á€áŁáá„áȘáááááĄ/áááášáąááááááᥠááá€áá ááᥠááá ááá á 60%+-áá áŁááá ášááááá á©áŁááá
- áᣠPR áȘáááᥠáĄááŹáá ááá ááááĄ
src/,open-sse/,electron/áábin/-ášá, ááááá PR-ášá áŁááá ááááááąáᥠáá áááááźáááᥠáááąááááąáááááŁáá áąááĄáąááá npm run coverage:reportááááááᥠáááá ááá€áá ááᥠááášááááᥠáááąáááŁá , á€ááááááᥠáááźááááá ááá§áá€áá ááááá áášáĄnpm run test:coverage:legacyááĄáąáá ááŁáá ášáááá ááááĄáááᥠáááá á©áŁáááᥠá«ááá áááąá ááááĄ- ááá€áá ááᥠááąááááá ááá áááŁááŻááááĄáááᥠáĄáááá„áááá ááááááĄáááᥠááźáááá
docs/ops/COVERAGE_PLAN.md
Pull Request-áᥠááááźáááááá
PR-áᥠáááźáĄááááá áááááá§áááá Contribution Golden Path, á ááá áá„áááá áȘááááááááĄáááᥠááááááá ááá áȘáááá áááŁášááá. ááááŁááŁá á áąááĄáąáááᥠáĄá áŁáá áááá ááá (CI-áᥠ4 shard), Vitest, 60%+ ááá€áá ááᥠááá ááá á áá áĄááŹáá ááá build CI-áᥠáááĄáŁáźááĄááááááááá â áááá ááááááŁá áá ááášáááá áá áá«áááá áááááąáááá ááá€áá áááȘáááĄ, á áááááĄááȘ PR-áᥠášááááŹáááááá áŁááá áá áááááŹáááá, áźááá ášáááá áááá áĄáŁáĄáą ááááááŁáąáá áááá ášááá«áááá áĄááĄáąááá áĄá áŁááá áááąááá ááᥠ(#8084):
- áááŁášááá áĄááąááĄáąá á€áááááá, á áááááááȘ áá„áááᥠáȘáááááááᥠá€áá áááĄ:
node --import tsx/esm --test tests/unit/<file>.test.ts - áááŁášááá
npm run lint - áĄááŹáá ááá ááááᥠáȘááááááááĄáᥠááááá PR-ášá ááááááąáá áá ááááááźááá áááąááááąáááááŁáá áąááĄáąááá
- áĄááŹáá ááá ááááᥠáȘááááááááĄáᥠPR-áᥠááŠáŹáá áášá áááŁááááá ášááȘááááá áá áááááąáááŁáá áĄááąááĄáąá á€áááááá
- áᣠáá ááá„áąáᥠáĄááááŁáááááá CI-ášá áááá€áááŁá áá áááŁááá, ášáááááŹááá PR-áᥠSonarQube ášááááá
áąááĄáąáááᥠáááááááá á áĄáąááąáŁáĄá: 122 ááááŁááŁá á áĄááąááĄáąá á€áááá, á áááááááȘ á€áá áááĄ:
- áá ááááááá áᥠáąá áááĄáááąáá áááĄá áá á€áá áááąáᥠááá ááá„ááááĄ
- áĄááźášáá áᥠášáááŠáŁááááĄ, circuit breaker-áĄá áá áááá ááááááĄ
- áĄáááááąáááŁá cache-áĄ, idempotency-áĄá áá áá ááá ááĄáᥠááááá§áŁá áᥠááááááááĄ
- áááááȘáááá ááááᥠáááá ááȘááááĄá áá áĄá„áááᥠ(21 DB ááááŁáá)
- OAuth ááááááááĄá áá ááááááąáá€ááááȘáááĄ
- API endpoint-áááᥠáááááááȘááᥠ(Zod v4)
- MCP áĄáá ááá áᥠáááĄáąá áŁááááąáááĄá áá áá ááááᥠááŠáĄá áŁáááááĄ
- Memory áá Skills áĄááĄáąáááááĄ
ááááᥠáĄáąááá
- ESLint â áááááąáááá áááŁášááá
npm run lint - Prettier â áááááąááĄáᥠáááąááááąáŁá áá á€áá áááąáá áááá
lint-staged-áᥠááášáááááá (2 áĄááá áȘá, áŹáá áąáá-áá«áááááá, áá áááá áá áá§ááááá, 100-áĄáááááááááá áĄááááá, es5-áᥠáĄáąáááᥠáááá áá«áááááá) - TypeScript â
src/-ášá áá áĄáááŁáá á§áááá áááá áá§áááááĄ.ts/.tsx-áĄ;open-sse/áá§áááááĄ.ts/.js-áĄ; ááááŁááááąáá ááá ááááźááááá TSDoc-áá (@param,@returns,@throws) eval()ááá á«áááŁááá â ESLint áŁáá áŁááááá§áá€áĄno-eval,no-implied-eval,no-new-funcáŹááĄáááᥠáááȘáááĄ- Zod-áá áááááááȘáá â API-áᥠá§áááá ášáá§ááááᥠáááááááȘáááĄáááᥠáááááá§áááá Zod v4-áᥠáĄá„ááááá
- áááĄááźááááá: á€áááááá = camelCase/kebab-case, áááááááááąááá = PascalCase, ááááĄáąáááąááá = UPPER_SNAKE
ášááȘááááááᥠááááŁášááááá / áȘáá áááá catch ááááááá
áá ááĄáááᥠáááąáááá catch áááááá áąáááᥠááá áášá. áááááŁááááá áᥠáá á áááąáááá ááááá áá á-áá áᥠ(áᥠáá áá„áąáááášá ááźáá áȘáááááᥠááááȘá áŹááĄáĄ â âáá ááĄáááᥠá©áá§ááááá ášááȘáááááá áŁáźááá SSE áááááááášáâ):
-
ááááá ááźáŁáá (á©áááááá ááá„áĄáááááŁá á á«ááááĄáźááááá ášááĄá áŁááááŁáá áááĄáŁá€áááááá/áąááááááąá áá) â áá„ ášááȘáááá áááĄáááááááá áá áŁáááááááá; ááááááąáá ááááááᥠáááááá áąáááᥠáá ááĄáąá áá„áááááá ááááááąáá á, ááááá áááᥠááá áášá (áᥠášáááááźáááá ááááááá ááááȘááááᥠá§áááá ááááźáááááá ááááá áááá áŹáá ááá„áááá áźáááŁá áĄ).
} catch {} // ááááááąáᥠááááášááᥠášááááá áŁááá áááźáŁá áŁáá ááááąá áááá áᥠáááźáŁá áá áááĄááááááááá -
áŁááá ááááááá ááᥠ(ááá á/áááááá«ááźááááᥠáááá áááŹáááááŁáá áááá, áá á©áá§ááááá áȘáááᥠááá áááᥠááááááĄ) â ášááááá á©áŁááá catch (áá ááĄáááᥠáááĄáȘáá ááᥠááááááᥠááá áŠááááᥠáŁá€áááá), áááá áá ááááááąáááá ááááąáá„áĄáąáŁá á
console.debug/warn, á ááá ášááȘááááᥠááŠááá©ááá ášááĄáá«áááááá áá§ááĄ.} catch (e) { console.debug("[STREAM] onFailure áŁááŁááááá«ááźáááᥠášááȘáááá:", e); }
áá áá„áąáááášá ááááá§áááááŁáá áááááááááááĄáááᥠááźáááá open-sse/utils/stream.ts áá open-sse/utils/streamHandler.ts.
áá ááá„áąáᥠáĄáąá áŁá„áąáŁá á
src/ # TypeScript (.ts / .tsx)
âââ app/ # Next.js 16 App Router
â âââ (dashboard)/ # ááá áááᥠááááááᥠáááá áááá (23 áĄáá„áȘáá)
â âââ api/ # API ááá ášá áŁáąááá (51 ááá áá„áąáá áá)
â âââ login/ # ááááááąáá€ááááȘááᥠáááá áááá (.tsx)
âââ domain/ # áááááąáááááᥠá«á ááá (policyEngine, comboResolver, costRules áá áĄáźá.)
âââ lib/ # á«áá ááááá ááááááĄáááááá (.ts)
â âââ a2a/ # Agent-to-Agent v0.3 áá ááąáááááᥠáĄáá ááá á
â âââ acp/ # Agent Communication Protocol-áᥠá áááĄáąá á
â âââ compliance/ # ášááĄááááááĄáááᥠáááááąáááááᥠá«á ááá
â âââ db/ # SQLite ááááááᥠááááŁáááá + 130 áááá ááȘáá
â âââ memory/ # ááŁááááá áĄááĄááŁáá á áááźáĄááá ááá
â âââ oauth/ # OAuth-áᥠááááŹáááááááá, áĄáá áááĄááá áá ááááźááá á áĄáášáŁááááááá
â âââ skills/ # ááá€áá ááááááá áŁááá áááᥠá€á áááááá áá
â âââ usage/ # ááááá§áááááᥠááŠá ááȘáźáá áá áŠáá áááŁááááᥠáááááááá
â âââ localDb.ts # ááźáááá á ááá„áĄááá áąáᥠá€ááá â áá„ áááááá áá ááĄáááᥠááááááąáá
âââ middleware/ # ááááźááááááᥠášáŁáááááŁá á áá ááá áááŁáá áŁáá áŁááááá§áá€á (promptInjectionGuard)
âââ mitm/ # MITM áá áá„áĄá (áĄáá áąáá€ááááąá, DNS, áĄááááááᥠááá ášá áŁáąááááȘáá)
âââ shared/
â âââ components/ # React áááááááááąááá (.tsx)
â âââ constants/ # ááááŹááááááááᥠááááĄáááŠáá ááááá (329), MCP-áᥠá€áá ááááá, ááá ášá áŁáąááááȘááᥠ19 áĄáąá ááąáááá
â âââ utils/ # áááąááááąáŁá á ááááá ááááá, áĄááááąááááá á, ááááááąáá€ááááȘááᥠááááźááá á áĄáášáŁááááááá
â âââ validation/ # Zod v4 áĄá„ááááá
âââ sse/ # SSE áá áá„áĄáá áááᥠáááááááá á
open-sse/ # @omniroute/open-sse áĄáááŁášáá áĄááá áȘá
âââ executors/ # ášáááĄá áŁáááááᥠáááááááááąááȘááᥠ89 ááááŁáá
âââ handlers/ # ááááźááááááᥠ11 áááááŁášááááááá (á©ááąá, áááĄáŁáźááá, ááááááááááá, áĄáŁá ááááá áá áĄáźá.)
âââ mcp-server/ # MCP áĄáá ááá á (110 áŁááááááŁá á áźáááĄááŹá§á, 3 áąá áááĄááá áąá, 33 ááá„ááááááᥠáĄá€áá á)
âââ services/ # áááá ááááᥠ178 áĄáá áááĄá (combo, autoCombo, rateLimitManager áá áĄáźá.)
âââ translator/ # á€áá áááąáááᥠááá áááá„ááááááá (OpenAI â Claude â Gemini â Responses â Ollama)
âââ transformer/ # Responses API-áᥠááá áááá„ááááá
âââ utils/ # 22 ááááźááá á ááááŁáá (áááááá, TLS, áá áá„áĄá, ááááá ááá)
electron/ # Electron-áᥠáááĄááąáá-áááááááȘáá (áá ááááááááąá€áá ááŁáá)
tests/
âââ unit/ # Node.js áąááĄáąáááᥠáááášáááá (1,574 áĄááąááĄáąá á€áááá)
âââ integration/ # áááąááá ááȘááŁáá áąááĄáąááá
âââ e2e/ # Playwright-áᥠáąááĄáąááá
âââ security/ # áŁáĄáá€á ááźááááᥠáąááĄáąááá
âââ translator/ # ááá áááá„ááááááĄáááᥠáĄáááȘáá€áááŁá á áąááĄáąááá
âââ load/ # áááąááá áááᥠáąááĄáąááá
docs/
âââ adr/ # áá á„ááąáá„áąáŁá áŁáá áááááŹá§áááąáááááááᥠá©ááááŹáá ááá
âââ architecture/ # áĄááĄáąáááᥠáá á„ááąáá„áąáŁá á áá áááá ááááá
âââ comparison/ # OmniRoute áááąáá áááąááááááá ášáááá áááá
âââ compression/ # ášáááŁáášááᥠáĄááźáááá«áŠááááááááá áá áŹááĄááá
âââ dev/ # áááááááááááąáᥠáĄááźáááá«áŠááááááááá
âââ diagrams/ # áá á„ááąáá„áąáŁá áŁáá ááááá ááááá
âââ frameworks/ # MCP, A2A, OpenCode, áááźáĄááá ááá, áŁááá ááá
âââ guides/ # ááááźááá ááááᥠáĄááźáááá«áŠáááááá, Docker, ááááá ááá, áá ááááááááᥠáááááá ááá
âââ i18n/ # README-áᥠáááąáá áááȘááááááááááŁáá ááá ááááááá
âââ marketing/ # ááá áááąááááŁáá áááĄááááá
âââ ops/ # áááááááĄááá, áá áá„áĄá, ááá€áá áá, ááááášáááááá
âââ providers/ # ááááŹáááááááááĄáááᥠáĄáááȘáá€áááŁá á ááááŁááááąááȘáá
âââ reference/ # API áȘááááá á, ááá áááᥠáȘááááááá, CLI áźáááĄááŹá§áááá, áŁá€ááĄá ááááááá
âââ releases/ # ááááášááááᥠášáááášááááá
âââ routing/ # áááąááááąáŁá á ááááááááȘááááᥠá«á ááá, ááĄáŻáááááᥠááááááá ááááá ášááĄá áŁáááá
âââ screenshots/ # ááá áááᥠááááááᥠááá áááᥠáááááááááá
âââ security/ # ááááȘááá ááá„áááááááá, ášááĄááááááĄááá, á€áá áŁáááá, áąááááááá
âââ specs/ # áááááááᥠáĄáááȘáá€ááááȘáááá
ááźááá áá ááááááá áᥠáááááąááá
áááááŻá 1: áá ááááááá áᥠááááĄáąáááąáááᥠá ááááĄáąá ááȘáá
ááááááąáá src/shared/constants/providers.ts-ášá â ááááŁááᥠá©ááąááá ááááĄáᥠáááŹááááá Zod-áᥠááášáááááá.
áááááŻá 2: ášáááĄá áŁáááááᥠáááááąááá (áᣠáĄáááá áá ááá ááááŁáá áááááá)
ášáá„ááááá ášáááĄá áŁáááááá open-sse/executors/your-provider.ts-ášá, á ááááááȘ áĄááááá ášáááĄá áŁáááááᥠáááá€áá áááááĄ.
áááááŻá 3: áąá áááĄáááąáá áᥠáááááąááá (áᣠá€áá áááąá OpenAI-áᥠáá áá ááĄ)
ášáá„ááááá ááááźáááááĄ/áááĄáŁáźáᥠáąá áááĄáááąáá ááá open-sse/translator/-ášá.
áááááŻá 4: OAuth-áᥠáááá€áááŁá ááȘááᥠáááááąááá (áᣠOAuth-ááá ááá€áŁá«ááááŁáá)
ááááááąáá OAuth-áᥠáááąáá ááááȘááᥠáááááȘááááá src/lib/oauth/constants/oauth.ts-ášá, áźááá áĄáá áááĄá â src/lib/oauth/services/-ášá.
áᣠáááá ááááᥠáá ááááááá á áĄááŻáá á OAuth client_id/áĄááááŁáááᥠáá Firebase Web API áááĄááŠááᥠááááᥠáĄááŻáá á CLI-ášá / áá ááŁááá áᥠáááááąášá ááá áȘáááááĄ, áá á©ááĄááá áᥠáĄáąá áá„áááŁá áááąáá áááá. áááááá§áááá resolvePublicCred() á€ááááááá open-sse/utils/publicCreds.ts áá ááááááąáá ášááááŠááŁáá ááááąáŁá á á©ááááŹáá á EMBEDDED_DEFAULTS-ášá. áĄá áŁáá áĄááááááááŁáá áĄáááŁášáá áá ááȘááĄá ááŠáŹáá áááá docs/security/PUBLIC_CREDS.md-ášá.
áááááŁášááááááááĄá/ášáááĄá áŁááááááášá ááááááąáááá áááĄáŁáá ášááȘááááᥠášááąá§ááááááááá áŁááá ááááŁášááááᥠbuildErrorBody() / sanitizeErrorMessage() á€áŁáá„áȘááááá á€ááááááá open-sse/utils/error.ts â áá ááĄáááᥠá©ááĄááá áááŁááŁášááááááá err.stack áá err.message Response-áᥠáĄáźááŁáášá. ááźáááá docs/security/ERROR_SANITIZATION.md.
áááááŻá 5: ááááááááᥠá ááááĄáąá ááȘáá
ááááááąáá ááááááááᥠááááĄáááŠáá ááááá open-sse/config/providerRegistry.ts-ášá.
áááááŻá 6: áąááĄáąáááᥠáááááąááá
áááŹáá áá áá áááŁáááááá áąááĄáąááá tests/unit/-ášá, á áááááááȘ ááááááŁá ášáááááᥠááááȘáááĄ:
- áá ááááááá áᥠá ááááĄáąá ááȘáá
- ááááźáááááĄ/áááĄáŁáźáᥠáąá áááĄáááȘáá
- ášááȘááááááᥠááááŁášááááá
Pull Request-áᥠáĄáááááąá ááá áĄáá
- áąááĄáąááá áŹáá áááąáááá áĄá áŁááááá (
npm test) - ááááąáááá áŹáá áááąáááá áĄá áŁááááá (
npm run lint) - ááááá áŹáá áááąáááá áĄá áŁááááá (
npm run build) - ááźááá áĄááŻáá á á€áŁáá„áȘáááááĄá áá áááąáá á€áááĄááááĄáááᥠáááááąáááŁááá TypeScript-áᥠáąááááá
- áá áá áᥠáá§áá áá áááŹáá ááá áĄááááŁáááááá áá áĄáá áááá áá áááášááááááááá
- áááá ááááᥠáĄááŻáá á áááąáá ááááȘááᥠáááááȘááááá á©áášáááááŁááá
resolvePublicCred()-áᥠááášáááááá (ááźáááádocs/security/PUBLIC_CREDS.md) áá áá ááĄáááᥠâ áááąáá áááááᥠáĄááźáá - ášááȘááááᥠáááĄáŁáźááá ááŁášáááááá
buildErrorBody()/sanitizeErrorMessage()-áᥠááášáááááá â áááĄáŁáźáᥠáĄáźááŁáááášá áá áá áᥠáááŁááŁášááááááá áĄáąáááᥠááááááá (ááźáááádocs/security/ERROR_SANITIZATION.md) - ááá áĄáᥠáá á«ááááááá (
exec/spawn) ášááĄá áŁááááᥠáá ááᥠáááášááááááááᥠáááááĄáȘáááĄenv-áᥠááášáááááá áá áá á áĄáąá áá„áááŁáá áááąáá áááááȘááá - á§áááá ášáá§áááááá áááááȘááá ášááááŹááááŁááá Zod-áᥠáĄá„áááááá
- ááááźááá áááááĄáááᥠáźáááŁáá áȘááááááááááĄáááᥠáȘáááááááááᥠááŁá ááááᥠá€á ááááááąá áááááąáááŁááá
changelog.d/{features|fixes|maintenance}/<PR>-<slug>.md-ášá (ááźááááchangelog.d/README.md) â áá áááá áááá„áąáá ááCHANGELOG.mdááá ááááá ; á€á ááááááąááá áááá áááááááá ááááášáááááĄáᥠáá Pull Request-ááᥠášáá áᥠáááá€ááá„áąáĄ áá ááĄáááᥠáŹáá ááá„áááᥠ- ááááŁááááąááȘáá áááááźááááŁááá (áᣠáĄáááá áá)
- áá áá áᥠáááźáĄáááá CodeQL-áᥠ/ Secret-Scanning-áᥠááźááá ááá€á ááźááááááá, áá ááááááŁáá ááááááá áŁáá á§áá€áááá áąáá„ááááŁá á áááĄáááŁááááá, á ááááááȘ ášááĄááááááĄ
docs/security/ááááŁááááąáĄ áááŁáááááᥠ- ááá ášá áŁáąááá, á áááááááȘ ášááááááá áá ááȘááĄááᥠáŁášáááᥠ(
/api/mcp/,/api/cli-tools/runtime/), ááááĄáá€ááȘáá áááŁááá á áááá áȘisLocalOnlyPath()á€áááášásrc/server/authz/routeGuard.tsâ ááźáááá ááááȘá á áŹááĄá #15 - commit-áᥠášááąá§ááááááááášá áá áá ááĄ
Co-Authored-Byáąá ááááá ááá â commit-ááá ááźáááá á ááááááąáá ááᥠáá€ááááááᥠGit-áᥠáááááąáááᥠá„áááš áŁááá ááááá©áááᥠ(ááááȘá á áŹááĄá #16)
á áááááááᥠááááášáááá
á ááááááá áááá áááá /generate-release áĄáááŁášáá áá ááȘááĄáᥠááášáááááá. ááźááá GitHub Release-áᥠášáá„ááááĄáᥠáááááąá GitHub Actions-áᥠááášáááááá áááąááááąáŁá áá á„ááá§ááááá npm-áá.
VPS-áá áááááááĄááááĄáááᥠáááááá§áááá npm run build:release (npm run build-áᥠáááȘáááá) â áᥠááĄá áŁááááĄ
áĄáŁá€áá áźááááźáá ááááááĄ, áá ááᥠáááááąáĄ dist/-ášá áá á„áááᥠdist/BUILD_SHA áĄáááááąá ááá á€ááááĄ.
ášááááá áááááá§áááá /deploy-vps-*-cc áŁááá ááá, á áááááááȘ rsync-áᥠááášáááááá dist/-ᥠáááĄáąáááȘááŁá app/ ááá áá„áąáá ááášá ááĄááá„á áááááá.
áááźááá áááᥠáááŠááá
- áá á„ááąáá„áąáŁá á: ááźáááá
docs/architecture/ARCHITECTURE.md - API-áᥠáȘááááá á: ááźáááá
docs/reference/API_REFERENCE.md - áŁáĄáá€á ááźááááᥠááááŁááááąááȘáá:
docs/security/CLI_TOKEN.md,docs/security/ROUTE_GUARD_TIERS.md,docs/security/ERROR_SANITIZATION.md,docs/security/PUBLIC_CREDS.md - áááá ááȘááááᥠááááŁááááąááȘáá:
docs/ops/SQLITE_RUNTIME.md - áĄáááááźááá: github.com/diegosouzapw/OmniRoute/issues
- ADR-ááá: áá á„ááąáá„áąáŁá áŁáá áááááŹá§áááąáááááááᥠá©ááááŹáá ááááĄáááᥠááźáááá
docs/adr/