Files
OmniRoute/docs/i18n/am/CONTRIBUTING.md
Diego Rodrigues de Sa e Souza 58f88a83e4 feat(i18n): 7 new locales — Hausa, Yoruba, Igbo, Amharic, Uzbek, Georgian, Armenian (66 locales) (#13727)
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
2026-09-15 09:50:01 -03:00

29 KiB

Contributing to OmniRoute (አማርኛ)

🌐 Languages: 🇺🇞 English · 🇞🇊 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 · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇚🇳 zh-CN · 🇹🇌 zh-TW


ለማበርኚት ፍላጎት ስላሳዩ እናመሰግናለን! ይህ መመሪያ ለመጀመር ዚሚያስፈልግዎትን ሁሉ ይሞፍናል።

ለእያንዳንዱ ለውጥ ይፋዊ ዚሥራ ፍሰት፣ በ ዚአስተዋጜኊ ወርቃማ መንገድ ይጀምሩ። ይህም provider፣ routing፣ UI/UX፣ i18n፣ CLI፣ database እና build/deploy ለውጊቜን ኚውሎቻ቞ው፣ ኚተኮሩ ሙኚራዎቜ፣ ኹCI ሜፋን እና ኚማስታሚቅ ደሚጃዎቜ ጋር ያዛምዳል።


ዚልማት ማዋቀር

ቅድመ ሁኔታዎቜ

  • Node.js >=22.22.3 <23፣ ወይም >=24.0.0 <27 (ዹሚመኹር፩ 24 LTS)
  • npm 10+

ዹnpm v11+ ተጠቃሚዎቜ (Node 24+): ኹnpm install በኋላ native modules መጫና቞ውን ያሚጋግጡፊ node -e "require('better-sqlite3')". በMODULE_NOT_FOUND ካልተሳካ፣ npm approve-scripts better-sqlite3 && npm install ያስኪዱ። መላ ፍለጋን ይመልኚቱ።

  • Git

Clone ማድሚግ እና መጫን

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 ዹfrontend መሠሚታዊ URL
JWT_SECRET (ኹላይ ይፍጠሩ) ዹJWT ፊርማ ሚስጥር
INITIAL_PASSWORD CHANGEME ዚመጀመሪያ መግቢያ ዹይለፍ ቃል
APP_LOG_LEVEL info ዹlog ዝርዝርነት ደሹጃ

ዹDashboard ቅንብሮቜ

Dashboardው በአካባቢ ተለዋዋጮቜም ሊዋቀሩ ለሚቜሉ ባህሪያት ዹUI ማብሪያ/ማጥፊያዎቜን ያቀርባልፊ

ዚቅንብር መገኛ ማብሪያ/ማጥፊያ መግለጫ
Settings → Advanced Debug Mode ዹdebug request logsን አንቃ (UI)
Settings → General Sidebar Visibility ዹsidebar ክፍሎቜን አሳይ/ደብቅ

እነዚህ ቅንብሮቜ በdatabase ውስጥ ይኚማቻሉ፣ እና ሲቀናበሩ ዹenv var ነባሪ እሎቶቜን በመሻር ኚዳግም ማስጀመር በኋላም ይቆያሉ።

በአካባቢያዊ ሁኔታ ማስኬድ

# ዚልማት ሁነታ (ፈጣን ዳግም ጭነት)
npm run dev

# ዚምርት build
npm run build    # next build → .build/next/ ኚዚያ assembleStandalone → dist/
npm run start

# ለአስተዋጜኊ አድራጊ ለውጊቜ ፈጣን backend/API-ብቻ compile
npm run build:contributor

# ዹrelease build (ንጹሕ ዳግም build + HEAD sentinel — ለdeploy ያስፈልጋል)
npm run build:release   # rm -rf .build dist && build + dist/BUILD_SHAን ይጜፋል

# ዹተለመደ ዚወደብ ውቅር
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev

ዚአስተዋጜኊ አድራጊው build compile-ብቻ ማሚጋገጫን ያኚናውናልፊ standalone ስርጭቱን ወይም አማራጭ native packaging assetsን አይገነባም። ሊላክ ዚሚቜለውን bundle ማሚጋገጥ ሲፈልጉ መደበኛውን ዚምርት build ይጠቀሙ።

ዹBuild ውጀት አቀማመጥ

ማውጫ ይዘቶቜ በGit ዚሚኚታተል
src/ ዚመተግበሪያ ምንጭ (TypeScript / TSX) አዎ
.build/ መካኚለኛ ውጀቶቜ — ዹnext build ውጀት (gitignored፣ distDir = .build/next) አይ
dist/ ሊላክ ዚሚቜል bundle — በassembleStandalone ዚሚገነባ (gitignored) አይ

ዹbuild pipeline አንድ ዙር ብቻ ነው፩

npm run build
  └─ next build → .build/next/standalone  (ዹNext.js ውጀት)
  └─ assembleStandalone()                 (standalone + static + public + native assetsን ይቀዳል)
       └─ ውጀትፊ dist/                   (server.js, .next/static/, public/, node_modules/)

npm run build:release በተጚማሪ በመጀመሪያ ሁለቱንም ማውጫዎቜ ያጞዳል፣ እና dist/BUILD_SHA (= git rev-parse --short HEAD)ን እንደ deploy integrity sentinel ይጜፋል።

npm run build:contributor backend-ብቻ ዹሆነውን build profile ይጠቀማል። በbuild ጊዜ ዹdashboard UI ፋይሎቜን ለጊዜው stub ያደርጋል፣ ዹAPI route handlersን ያቆያል፣ እና ኹbuild በኋላ ዋናዎቹን ፋይሎቜ ወደነበሩበት ይመልሳል። Dashboard UIን ለሚነኩ ለውጊቜ ወይም ለሙሉ release ማሚጋገጫ npm run buildን ይጠቀሙፀ ዚአስተዋጜኊ አድራጊው profile ዹrelease build ምትክ አይደለም።

ዹVPS deploy ማስታወሻፊ ዚሩቅ image ማውጫ /usr/lib/node_modules/omniroute/app/ አልተለወጠም። ዹdeploy skills ዹdist/ን ይዘቶቜ ወደዚያ rsync ያደርጋሉ። ዹተለወጠው በrepo ውስጥ ያለው ዹbuild ውጀት ዱካ ብቻ ነው (app/ → dist/)።

ነባሪ URLsፊ

  • Dashboard: http://localhost:20128/dashboard
  • API: http://localhost:20128/v1

ዹGit ዚሥራ ፍሰት

⚠ በፍጹም በቀጥታ ወደ main commit አታድርጉ። ሁልጊዜ feature branch-ዎቜን ይጠቀሙ።

ዹPR base: ንቁውን release/vX.Y.Z branch (mainን ሳይሆን) ዒላማ ያድርጉ። ስለ release-per-branch + tag-at-ship ሞዮል docs/ops/BRANCHING_MODEL.mdን ይመልኚቱ።

# ኹንቁው release ጫፍ branch ይፍጠሩ (ምሳሌፊ release/v3.8.49)
git fetch origin
git checkout -b feat/your-feature-name origin/release/v3.8.49
# ... ለውጊቜን ያድርጉ ...
git commit -m "feat: describe your change"
git push -u origin feat/your-feature-name
# base = release/v3.8.49 ዹሆነ Pull Request ይክፈቱ

ዹBranch አሰያዚም

Prefix ዓላማ
feat/ አዳዲስ ባህሪያት
fix/ ዚስህተት ማስተካኚያዎቜ
refactor/ ዚኮድ መዋቅር ማሻሻያ
docs/ ዚሰነድ ለውጊቜ
test/ ዚሙኚራ ጭማሪዎቜ/ማስተካኚያዎቜ
chore/ መሣሪያዎቜ፣ CI፣ ጥገኛ ጥቅሎቜ

ዹCommit መልዕክቶቜ

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

Scopes (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 ቀተኛ test runner — አብዛኞቹ ሙኚራዎቜ ይህን ይጠቀማሉ)
node --import tsx/esm --test tests/unit/your-file.test.ts

# በለውጥዎ ዚተነኩት unit tests ብቻ (ኹCI gate ጋር ተመሳሳይ TIA selector፣ #8084)
npm run test:scoped            # በመጚሚሻው commit (ወይም በworking tree) ውስጥ ያሉ ለውጊቜ
npm run test:scoped:staged     # staged ለውጊቜ ብቻ — ኹpre-commit ማስኬድ ጋር በሚገባ ይጣመራል
npm run test:scoped:full       # በመጀመሪያ import-graph mapን እንደገና ይገነባል (ፋይሎቜን ካኚሉ/ካንቀሳቀሱ በኋላ)
# Exit 1 + "run the full suite" ማለት hub file (tsconfig፣ package.json፣ 
) ወይም
# unmapped source ተለውጧል ማለት ነው — selector በደህንነት ሁኔታ ይወድቃልፀ በጭራሜ ያለማሳወቅ አይዘልም።

# Vitest (MCP server፣ autoCombo፣ cache)
npm run test:vitest

# E2E ሙኚራዎቜ (Playwrightን ይፈልጋል)
npm run test:e2e

# ዹProtocol clients E2E (MCP transports፣ A2A)
npm run test:protocols:e2e

# ዹEcosystem ተኳኋኝነት ሙኚራዎቜ
npm run test:ecosystem

# ዹCoverage gate፩ 60% statements/lines/functions/branches
npm run test:coverage
npm run coverage:report

# Lint + ዚቅርጞት ማሚጋገጫ
npm run lint
npm run check

# Gated real-upstream combo smoke (ዹVPS መዳሚሻ + ዚእውነተኛ provider credits ይፈልጋል)
# እውነተኛ providersን ይጠቀማል — ትንሜ ወጪ አለው። በCI ውስጥ በፍጹም አይሰራም። gate ኹሌለ በአግባቡ ይዘላል።
# ዚሚያስፈልገውፊ ssh root@192.168.0.15 መዳሚሻ (ኹVPS ዹread-only DB snapshot ይጭናል)።
RUN_COMBO_LIVE=1 npm run test:combo:live

# Phase-3 VPS live smoke — ተራ Node ESM scriptsፀ live .15 serverን በቀጥታ ይጠቀማሉ።
# ዚሚያስፈልገውፊ ssh root@192.168.0.15 መዳሚሻ (combos በSSH sqlite በኩል ይፈጠራሉ/ይወገዳሉ)።
# እውነተኛ providersን ይጠቀማል (አነስተኛ ወጪ)። __live_test__* combosን ብቻ ይፈጥራል/ይሰርዛል። በCI ውስጥ በፍጹም አይሰራም።
# REQUIRE_API_KEY=false በ.15 ላይ ስለሆነ API key አያስፈልግምፀ ነገር ግን COMBO_LIVE_BASE_URL / COMBO_LIVE_API_KEY ኚተዋቀሩ ያኚብራ቞ዋል።
npm run test:combo:live:vps              # 7 HTTP scenarios (priority/round-robin/weighted/cost/fusion/auto + health)
npm run test:combo:live:vps:failover     # እውነተኛ cross-provider failover scenario ይጚምራል (በድምሩ 8)

ዹCoverage ማስታወሻዎቜፊ

  • npm run test:coverage ለዋናው unit test suite ዹsource coverageን ይለካል፣ tests/**ን ያስወግዳል፣ እና open-sse/**ን ያካትታል
  • Pull requests ዹcoverage gateን በ60%+ statements/lines/functions/branches ማቆዚት አለባ቞ው
  • PR በsrc/፣ open-sse/፣ electron/፣ ወይም bin/ ውስጥ ያለ production codeን ኚለወጠ፣ በዚያው PR ውስጥ automated testsን ማኹል ወይም ማዘመን አለበት
  • npm run coverage:report ኚቅርብ ጊዜው coverage run ዹተገኘውን ዝርዝር ዹፋይል-በ-ፋይል ሪፖርት ያትማል
  • npm run test:coverage:legacy ለታሪካዊ ንጜጜር ዚቀድሞውን metric ይጠብቃል
  • ደሹጃ በደሹጃ ዹcoverage ማሻሻያ roadmapን ለማዚት docs/ops/COVERAGE_PLAN.mdን ይመልኚቱ

ዹPull Request መስፈርቶቜ

PR ኚመክፈትዎ በፊት፣ ለለወጡት ነገር ያተኮሚውን loop ለማስኬድ Contribution Golden Pathን ይጠቀሙ። ሙሉው unit suite (4 CI shards)፣ Vitest፣ 60%+ coverage gate፣ እና production build ዹCI ኃላፊነት ናቾው — እነዚህን በአካባቢዎ ማስኬድ PR checks አስቀድመው ኚሚሰጡት ውጭ ተጚማሪ መሹጃ አይሰጥም፣ እና አነስተኛ ማሜኖቜ ላይ hostን ሊያጚናንቅ ይቜላል (#8084)ፊ

  • ለውጥዎን ዹሚሾፍኑ ዚሙኚራ ፋይሎቜን ያስኪዱፊ node --import tsx/esm --test tests/unit/<file>.test.ts
  • npm run lintን ያስኪዱ
  • production code በተለወጠ ቁጥር automated testsን በዚያው PR ውስጥ ያካትቱ ወይም ያዘምኑ
  • production code ሲለወጥ ዚተለወጡትን ወይም ዚታኚሉትን ዚሙኚራ ፋይሎቜ በPR መግለጫ ውስጥ ያካትቱ
  • ዹproject secrets በCI ውስጥ ሲዋቀሩ በPR ላይ ያለውን ዹSonarQube ውጀት ያሚጋግጡ

ዹአሁኑ ዚሙኚራ ሁኔታፊ 122 unit test files ዚሚኚተሉትን ይሾፍናሉ፩

  • ዹProvider translators እና ዚቅርጞት ልወጣ
  • Rate limiting፣ circuit breaker፣ እና resilience
  • Semantic cache፣ idempotency፣ እና progress tracking
  • ዹDatabase operations እና schema (21 DB modules)
  • OAuth flows እና authentication
  • ዹAPI endpoint validation (Zod v4)
  • ዹMCP server tools እና scope enforcement
  • ዹMemory እና Skills systems

ዚኮድ ዘይቀ

  • ESLint — commit ኚማድሚግዎ በፊት npm run lint ያሂዱ
  • Prettier — commit ሲደሚግ በ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 {} // ደንበኛው ግንኙነቱን ካቋሚጠ በኋላ አስቀድሞ ዹተዘጋ controllerን መዝጋት ዹሚጠበቅ ነው
    
  • ሎግ መደሹግ ያለበት (ውጫዊ/በጠሪው ዹቀሹበ ኮድ፣ ወይም ስህተቱን ማውጣት ዚቁጥጥር ፍሰቱን ሲቀይር) — catchን ያቆዩት (ዥሚቱን እንዲያቋርጥ ፈጜሞ አይፍቀዱለት)፣ ነገር ግን ውድቀቱ ሊገኝ እንዲቜል አውዳዊ console.debug/warn ያውጡ።

    } catch (e) {
      console.debug("[STREAM] ዹonFailure callback ስህተትፊ", 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/              # ዚጥያቄ middleware (promptInjectionGuard)
├── mitm/                   # MITM ፕሮክሲ (ዚምስክር ወሚቀት፣ DNS፣ ዹዒላማ ማዞሪያ)
├── shared/
│   ├── components/         # React ኮምፖነንቶቜ (.tsx)
│   ├── constants/          # ዚአቅራቢ ትርጓሜዎቜ (329)፣ MCP ወሰኖቜ፣ 19 ዚማዞሪያ ስልቶቜ
│   ├── utils/              # Circuit breaker፣ sanitizer፣ ዚማሚጋገጫ አጋዥ ተግባራት
│   └── validation/         # ዹZod v4 ንድፎቜ
└── sse/                    # ዹSSE ፕሮክሲ pipeline

open-sse/                   # @omniroute/open-sse workspace
├── executors/              # 89 ዹexecutor ትግበራ ሞጁሎቜ
├── handlers/               # 11 ዚጥያቄ handlers (ውይይት፣ ምላሟቜ፣ embeddings፣ ምስሎቜ፣ ወዘተ)
├── mcp-server/             # MCP ሰርቹር (110 ልዩ መሳሪያዎቜ፣ 3 transports፣ 33 ወሰኖቜ)
├── services/               # 178 ኹፍተኛ-ደሹጃ አገልግሎቶቜ (combo, autoCombo, rateLimitManager, ወዘተ)
├── translator/             # ዚቅርጞት ተርጓሚዎቜ (OpenAI ↔ Claude ↔ Gemini ↔ Responses ↔ Ollama)
├── transformer/            # Responses API transformer
└── utils/                  # 22 ዚመገልገያ ሞጁሎቜ (ዥሚት፣ TLS፣ ፕሮክሲ፣ ሎግ ማድሚግ)

electron/                   # Electron ዚዎስክቶፕ መተግበሪያ (ብዙ-መድሚክ)

tests/
├── unit/                   # Node.js test runner (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 ማጣቀሻ፣ env vars፣ CLI መሳሪያዎቜ፣ ነጻ ደሚጃዎቜ
├── releases/                # ዚልቀት ማስታወሻዎቜ
├── routing/                 # Auto-combo ሞተር፣ ዚአመክንዮ ዳግም ማጫወት
├── screenshots/             # ዚዳሜቊርድ ቅጜበታዊ ገጜ ዕይታዎቜ
├── security/                # ዚመኚላኚያ ገደቊቜ፣ ተገዢነት፣ ድብቅነት፣ tokens
└── specs/                   # ዚንድፍ ዝርዝር መግለጫዎቜ

አዲስ አቅራቢ ማኹል

ደሹጃ 1ፊ ዚአቅራቢ ቋሚዎቜን ይመዝግቡ

ወደ src/shared/constants/providers.ts ያክሉ — ሞጁሉ ሲጫን በZod ዚሚሚጋገጥ።

ደሹጃ 2ፊ Executor ያክሉ (ብጁ ሎጂክ ካስፈለገ)

መሠሚታዊውን executor ዚሚያራዝም executor በopen-sse/executors/your-provider.ts ውስጥ ይፍጠሩ።

ደሹጃ 3ፊ Translator ያክሉ (OpenAI ያልሆነ ቅርጞት ኹሆነ)

ዚጥያቄ/ምላሜ translators በopen-sse/translator/ ውስጥ ይፍጠሩ።

ደሹጃ 4ፊ OAuth ውቅር ያክሉ (በOAuth ላይ ዹተመሠሹተ ኹሆነ)

ዹOAuth ማሚጋገጫ መሚጃዎቜን በsrc/lib/oauth/constants/oauth.ts እና serviceን በsrc/lib/oauth/services/ ውስጥ ያክሉ።

ዹላይኛው አቅራቢ ይፋዊ OAuth client_id/secret ወይም Firebase Web API keyን በይፋዊ CLI / browser bundle ውስጥ ዚሚያሰራጭ ኚሆነ፣ እንደ string literal አያካትቱት። resolvePublicCred()ን ኹopen-sse/utils/publicCreds.ts ይጠቀሙ እና ዹተሾፈነ byte entry ወደ EMBEDDED_DEFAULTS ያክሉ። ሙሉው አስገዳጅ ዚሥራ ፍሰት በdocs/security/PUBLIC_CREDS.md ውስጥ ተመዝግቧል።

በhandlers/executors ውስጥ፣ client ዚሚደርሱ ዚስህተት መልዕክቶቜ በbuildErrorBody() / sanitizeErrorMessage() ኹopen-sse/utils/error.ts ማለፍ አለባ቞ው — ጥሬ err.stack ወይም err.messageን በResponse body ውስጥ ፈጜሞ አያስቀምጡ። docs/security/ERROR_SANITIZATION.mdን ይመልኚቱ።

ደሹጃ 5ፊ Modelsን ይመዝግቡ

ዹmodel ትርጓሜዎቜን በopen-sse/config/providerRegistry.ts ውስጥ ያክሉ።

ደሹጃ 6ፊ Tests ያክሉ

ቢያንስ ዚሚኚተሉትን ዹሚሾፍኑ unit tests በtests/unit/ ውስጥ ይጻፉፊ

  • ዚአቅራቢ ምዝገባ
  • ዚጥያቄ/ምላሜ ትርጉም
  • ዚስህተት አያያዝ

ዹPull Request ማሚጋገጫ ዝርዝር

  • Tests በትክክል ያልፋሉ (npm test)
  • Linting በትክክል ያልፋል (npm run lint)
  • Build ይሳካል (npm run build)
  • ለአዲስ ይፋዊ functions እና interfaces ዹTypeScript types ታክለዋል
  • በኮድ ውስጥ በቀጥታ ዚተጻፉ secrets ወይም fallback values ዹሉም
  • ይፋዊ ዹupstream ማሚጋገጫ መሚጃዎቜ በresolvePublicCred() ተካትተዋል (docs/security/PUBLIC_CREDS.mdን ይመልኚቱ)፣ ፈጜሞ እንደ literals አልተጻፉም
  • ዚስህተት ምላሟቜ በbuildErrorBody() / sanitizeErrorMessage() ያልፋሉ — በresponse bodies ውስጥ ጥሬ stack traces ዹሉም (docs/security/ERROR_SANITIZATION.mdን ይመልኚቱ)
  • Shell commands (exec / spawn) ዹruntime valuesን በstring interpolation ሳይሆን በenv ያስተላልፋሉ
  • ሁሉም inputs በZod schemas ተሹጋግጠዋል
  • ለተጠቃሚ ዚሚታዩ ለውጊቜ Changelog fragment በchangelog.d/{features|fixes|maintenance}/<PR>-<slug>.md ስር ታክሏል (changelog.d/README.mdን ይመልኚቱ) — CHANGELOG.mdን በቀጥታ አያርትዑፀ fragments በrelease ጊዜ አንድ ላይ ይሰበሰባሉ እና በPRs መካኚል ፈጜሞ አይጋጩም
  • Documentation ዘምኗል (አስፈላጊ ኹሆነ)
  • ምንም አዲስ CodeQL / Secret-Scanning alerts አልተኚፈቱም፣ ወይም እያንዳንዳ቞ው ተዛማጁን docs/security/ doc በሚጠቅስ ቎ክኒካዊ ምክንያት ውድቅ ተደርገዋል
  • child processes ዚሚጀምሩ Routes (/api/mcp/, /api/cli-tools/runtime/) በsrc/server/authz/routeGuard.ts ውስጥ እንደ isLocalOnlyPath() ተመድበዋል — Hard Rule #15ን ይመልኚቱ
  • በcommit messages ውስጥ Co-Authored-By trailers ዹሉም — commits በrepository owner Git identity ስር ብቻ መታዚት አለባ቞ው (Hard Rule #16)

ልቀት ማውጣት

ልቀቶቜ በ/generate-release ዚሥራ ሂደት ይተዳደራሉ። አዲስ GitHub Release ሲፈጠር፣ ፓኬጁ በGitHub Actions አማካኝነት በራስ-ሰር ወደ npm ይታተማል።

ለVPS ማሰማራቶቜ፣ npm run build:releaseን (npm run buildን ሳይሆን) ይጠቀሙ — ሙሉ ንጹሕ ዳግም ግንባታ ያኚናውናል፣ ጥቅሉን በdist/ ውስጥ ያዘጋጃል፣ እንዲሁም ዹdist/BUILD_SHA ምልክት ፋይልን ይጜፋል። ኚዚያ dist/ን ወደ ርቀት ዹapp/ ማውጫ rsync ዚሚያደርጉትን ዹ/deploy-vps-*-cc ክህሎቶቜ ይጠቀሙ።


እገዛ ማግኘት