# OmniRoute Codebase Documentation (ಕನ್ನಡ) 🌐 **Languages:** 🇺🇸 [English](../../../../architecture/CODEBASE_DOCUMENTATION.md) · 🇪🇹 [am](../../../am/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇦 [ar](../../../ar/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇦🇿 [az](../../../az/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇬 [bg](../../../bg/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇩 [bn](../../../bn/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇦 [bs](../../../bs/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇨🇿 [cs](../../../cs/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇩🇰 [da](../../../da/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇩🇪 [de](../../../de/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇬🇷 [el](../../../el/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇪🇸 [es](../../../es/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇪🇪 [et](../../../et/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇷 [fa](../../../fa/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇫🇮 [fi](../../../fi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇫🇷 [fr](../../../fr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇪 [ga](../../../ga/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [gu](../../../gu/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇬 [ha](../../../ha/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇱 [he](../../../he/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [hi](../../../hi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇭🇷 [hr](../../../hr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇭🇺 [hu](../../../hu/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇦🇲 [hy](../../../hy/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇩 [id](../../../id/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇬 [ig](../../../ig/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇹 [it](../../../it/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇯🇵 [ja](../../../ja/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇬🇪 [ka](../../../ka/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇰🇭 [km](../../../km/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇰🇷 [ko](../../../ko/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇱🇹 [lt](../../../lt/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇱🇻 [lv](../../../lv/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [ml](../../../ml/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [mr](../../../mr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇲🇾 [ms](../../../ms/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇲🇹 [mt](../../../mt/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇲🇲 [my](../../../my/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇵 [ne](../../../ne/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇱 [nl](../../../nl/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇴 [no](../../../no/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [or](../../../or/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [pa](../../../pa/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇭 [phi](../../../phi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇱 [pl](../../../pl/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇹 [pt](../../../pt/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇷🇴 [ro](../../../ro/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇷🇺 [ru](../../../ru/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇱🇰 [si](../../../si/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇰 [sk](../../../sk/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇮 [sl](../../../sl/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇷🇸 [sr](../../../sr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇸🇪 [sv](../../../sv/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇰🇪 [sw](../../../sw/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [ta](../../../ta/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇮🇳 [te](../../../te/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇹🇭 [th](../../../th/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇹🇷 [tr](../../../tr/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇵🇰 [ur](../../../ur/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇺🇿 [uz](../../../uz/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇻🇳 [vi](../../../vi/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇳🇬 [yo](../../../yo/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/architecture/CODEBASE_DOCUMENTATION.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/architecture/CODEBASE_DOCUMENTATION.md) --- > **ಆವೃತ್ತಿ:** v3.8.51 > **ಕೊನೆಯ ನವೀಕರಣ:** 2026-06-28 > **ಉದ್ದೇಶಿತ ಓದುಗರು:** OmniRouteಗೆ ಕೊಡುಗೆ ನೀಡುವ ಅಥವಾ ಅದರ ಮೇಲೆ ಏಕೀಕರಣಗಳನ್ನು ನಿರ್ಮಿಸುವ ಎಂಜಿನಿಯರ್ಗಳು. > > ಉನ್ನತ ಮಟ್ಟದ ಆರ್ಕಿಟೆಕ್ಚರ್ ರೇಖಾಚಿತ್ರಗಳು ಮತ್ತು ಪ್ರತಿಯೊಂದು ಉಪವ್ಯವಸ್ಥೆಯ ಹಿಂದಿನ ತಾರ್ಕಿಕ ವಿವರಣೆಗಾಗಿ, > [ARCHITECTURE.md](./ARCHITECTURE.md) ಓದಿ. ಪ್ರತ್ಯೇಕ ಉಪವ್ಯವಸ್ಥೆಗಳ > (Auto Combo, MCP server, A2A server, Skills, Memory, Cloud Agents, Resilience, > Compression, ಇತ್ಯಾದಿ) ಆಳವಾದ ವಿವರಗಳಿಗಾಗಿ, ಈ `docs/` ಡೈರೆಕ್ಟರಿಯಲ್ಲಿರುವ ಅವುಗಳಿಗೆ ಮೀಸಲಾದ ಫೈಲ್ಗಳನ್ನು ನೋಡಿ. ಈ ಫೈಲ್ **ಇಂದು ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಏನಿದೆ** ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ; ಇದರಿಂದ ಹೊಸ ಎಂಜಿನಿಯರ್ ಟ್ರೀನಲ್ಲಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಬಹುದು, ರನ್ಟೈಮ್ ಲೇಯರಿಂಗ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು ಮತ್ತು ಹೊಸ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ರಚಿಸದೆಯೇ ಕೋಡ್ ಅನ್ನು ಎಲ್ಲಿ ಸೇರಿಸಬೇಕು ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳಬಹುದು. --- ## 1. ತಂತ್ರಜ್ಞಾನ ಸ್ಟ್ಯಾಕ್ | ಪರಿಗಣನೆ | ಆಯ್ಕೆ | | ----------------- | ------------------------------------------------------------------------------------------------------------------ | | ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್ | **Next.js 16** (App Router, ಸ್ವತಂತ್ರ ಔಟ್ಪುಟ್, ಜಾಗತಿಕ middleware ಇಲ್ಲ) | | ಭಾಷೆ | **TypeScript 6.0+** — ಗುರಿ `ES2022`, `module: esnext`, `moduleResolution: bundler`, `strict: false` | | ರನ್ಟೈಮ್ | **Node.js** `>=22.22.2 <23` ಅಥವಾ `>=24.0.0 <27` (`engines` + `SUPPORTED_NODE_RANGE` ಮೂಲಕ ಕಡ್ಡಾಯಗೊಳಿಸಲಾಗಿದೆ) | | ಡೇಟಾಬೇಸ್ | `better-sqlite3` ಮೂಲಕ **SQLite** (singleton, WAL journaling) | | ಡೆಸ್ಕ್ಟಾಪ್ | **Electron 41** + `electron-builder` 26.10 (`electron/`ನಲ್ಲಿ ಪ್ರತ್ಯೇಕ workspace) | | ಪರೀಕ್ಷೆಗಳು | **Node native test runner** (ಘಟಕ/ಏಕೀಕರಣ), **Vitest** (MCP, autoCombo, cache), **Playwright** (e2e + protocols-e2e) | | ಬಿಲ್ಡ್ | `scripts/build/build-next-isolated.mjs` ಮೂಲಕ Next.js standalone | | ಲಿಂಟ್/ಫಾರ್ಮ್ಯಾಟ್ | ESLint flat config + Prettier (Husky pre-commit ಮೂಲಕ `lint-staged`) | | ಮಾಡ್ಯೂಲ್ ವ್ಯವಸ್ಥೆ | ಎಲ್ಲೆಡೆ ESM (`"type": "module"`) | | ವರ್ಕ್ಸ್ಪೇಸ್ಗಳು | npm workspace — `open-sse` ಮಾತ್ರ ಏಕೈಕ ಉಪ-ವರ್ಕ್ಸ್ಪೇಸ್ | ಪಥ ಅಲಿಯಾಸ್ಗಳು (`tsconfig.json`): - `@/*` → `src/*` - `@omniroute/open-sse` → `open-sse/index.ts` - `@omniroute/open-sse/*` → `open-sse/*` ಡೀಫಾಲ್ಟ್ HTTP ಪೋರ್ಟ್: **`20128`** (API ಮತ್ತು ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಒಂದೇ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ). ಡೇಟಾ ಡೈರೆಕ್ಟರಿಯು `DATA_DIR` env var ಆಗಿದ್ದು, ಅದರ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯ `~/.omniroute/` ಆಗಿದೆ. --- ## 2. ರೆಪೊಸಿಟರಿ ವಿನ್ಯಾಸ ``` OmniRoute/ ├── src/ Next.js ಅಪ್ಲಿಕೇಶನ್ (App Router, ಲೈಬ್ರರಿಗಳು, ಡೊಮೇನ್, ಸರ್ವರ್, ಹಂಚಿದ ಸಂಪನ್ಮೂಲಗಳು) ├── open-sse/ ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಜಿನ್ ವರ್ಕ್ಸ್ಪೇಸ್ (@omniroute/open-sse) ├── electron/ ಡೆಸ್ಕ್ಟಾಪ್ ರ್ಯಾಪರ್ (Electron 41 main + preload) ├── bin/ CLI ಪ್ರವೇಶ ಬಿಂದುಗಳು (omniroute, reset-password) ├── tests/ ಘಟಕ, ಏಕೀಕರಣ, e2e, protocols-e2e, ಅನುವಾದಕ, ಭದ್ರತೆ, fixtures ├── scripts/ ಬಿಲ್ಡ್, ಸಿಂಕ್, ಪರಿಶೀಲನೆ, migration ಮತ್ತು ರನ್ಟೈಮ್ ಸಹಾಯಕ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ├── docs/ ಸಾರ್ವಜನಿಕ ದಸ್ತಾವೇಜೀಕರಣ (ಈ ಡೈರೆಕ್ಟರಿ) ├── public/ ಸ್ಥಿರ assets, PWA manifest, service worker ├── config/ ರನ್ಟೈಮ್ config ಮಾದರಿಗಳು ├── images/ ಮಾರ್ಕೆಟಿಂಗ್/ಸ್ಕ್ರೀನ್ಶಾಟ್ assets ├── _ideia/, _references/, _mono_repo/, _tasks/ ಆಂತರಿಕ ಕರಡು / ಯೋಜನೆ (ವಿತರಿಸಲಾಗುವುದಿಲ್ಲ) ├── CLAUDE.md Claude Codeಗಾಗಿ ರೆಪೊ ನಿಯಮಗಳು ├── AGENTS.md ಏಜೆಂಟ್ಗಳಿಗಾಗಿ ಹೆಚ್ಚು ಆಳವಾದ ಆರ್ಕಿಟೆಕ್ಚರ್ ಉಲ್ಲೇಖ ├── package.json v3.8.51, ವರ್ಕ್ಸ್ಪೇಸ್ ರೂಟ್ └── tsconfig.json ಪಥ ಅಲಿಯಾಸ್ಗಳು + ಪ್ರಮುಖ ಕಂಪೈಲರ್ ಆಯ್ಕೆಗಳು ``` --- ## 3. `src/` — Next.js ಅಪ್ಲಿಕೇಶನ್ ``` src/ ├── app/ App Router ಪುಟಗಳು + API ರೂಟ್ಗಳು ├── lib/ ಮೂಲ ಲೈಬ್ರರಿಗಳು (DB, auth, OAuth, skills, memory, …) ├── domain/ ಶುದ್ಧ ಡೊಮೇನ್ ಲೇಯರ್ (policy, fallback, cost, lockout, …) ├── server/ ಸರ್ವರ್ಗೆ ಮಾತ್ರ ಸೀಮಿತವಾದ ಮಾಡ್ಯೂಲ್ಗಳು (authz, cors, auth) ├── shared/ ಪ್ರಕಾರಗಳು, ಸ್ಥಿರಾಂಕಗಳು, ಮೌಲ್ಯೀಕರಣ, ಒಪ್ಪಂದಗಳು, ಉಪಯುಕ್ತತೆಗಳು (ಗಡಿಗಳಾದ್ಯಂತ ಸುರಕ್ಷಿತ) ├── mitm/ CLI ಏಕೀಕರಣಕ್ಕಾಗಿ ಮ್ಯಾನ್-ಇನ್-ದಿ-ಮಿಡಲ್ ಪ್ರಾಕ್ಸಿ ಸಹಾಯಕಗಳು ├── models/ ಸ್ಥಳೀಯ ಮಾಡೆಲ್ ಮೆಟಾಡೇಟಾ / ಅಲಿಯಾಸಿಂಗ್ ├── sse/ ಇನ್ನೂ src/ ಅಡಿಯಲ್ಲಿ ಇರುವ ಹಳೆಯ SSE ಹ್ಯಾಂಡ್ಲರ್ಗಳು (open-sse/ ಅಲ್ಲ) ├── store/ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಸ್ಥಿತಿ ಸ್ಟೋರ್ಗಳು ├── middleware/ ರೂಟ್-ಮಟ್ಟದ middleware ಉಪಯುಕ್ತತೆಗಳು (Next.js ಜಾಗತಿಕ middleware ಅಲ್ಲ) ├── scripts/ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ನಿಂದ ಆಮದು ಮಾಡಬಹುದಾದ ಇನ್-ಟ್ರೀ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ├── types/ ಆಂಬಿಯೆಂಟ್ ಮತ್ತು ಹಂಚಿಕೆಯ TS ಪ್ರಕಾರಗಳು ├── i18n/ ಲೋಕೇಲ್ ಬಂಡಲ್ಗಳು ├── instrumentation.ts Next.js ಇನ್ಸ್ಟ್ರುಮೆಂಟೇಶನ್ ಹುಕ್ ├── instrumentation-node.ts └── proxy.ts ಉನ್ನತ-ಮಟ್ಟದ ಪ್ರಾಕ್ಸಿ ಬೂಟ್ಸ್ಟ್ರ್ಯಾಪ್ ಸಹಾಯಕ ``` ### 3.1 `src/app/` — App Router App Router ಡ್ಯಾಶ್ಬೋರ್ಡ್ UI ಮತ್ತು ಸಾರ್ವಜನಿಕ/ನಿರ್ವಹಣಾ HTTP API ಎರಡನ್ನೂ ಒದಗಿಸುತ್ತದೆ. ಇಲ್ಲಿ **ಜಾಗತಿಕ middleware ಇಲ್ಲ** — ಇಂಟರ್ಸೆಪ್ಶನ್ ಅನ್ನು ಪ್ರತಿ ರೂಟ್ಗೆ ಪ್ರತ್ಯೇಕವಾಗಿ ಮಾಡಲಾಗುತ್ತದೆ. `src/app/` ಅಡಿಯಲ್ಲಿನ ಉನ್ನತ-ಮಟ್ಟದ ಸೆಗ್ಮೆಂಟ್ಗಳು: | ಪಥ | ಉದ್ದೇಶ | | ----------------------------------------------------------------------------- | --------------------------------------------------- | | `api/` | ಎಲ್ಲಾ HTTP API ರೂಟ್ಗಳು (ಕೆಳಗಿನ ವಿವರ ನೋಡಿ) | | `a2a/` | A2A JSON-RPC 2.0 ಎಂಡ್ಪಾಯಿಂಟ್ (`POST /a2a`) | | `.well-known/agent.json/` | A2A Agent Card ಡಿಸ್ಕವರಿ ಡಾಕ್ಯುಮೆಂಟ್ | | `(dashboard)/` | ಡ್ಯಾಶ್ಬೋರ್ಡ್ UI (ರೂಟ್ ಗುಂಪು, URL ಪೂರ್ವಪ್ರತ್ಯಯವಿಲ್ಲ) | | `auth/`, `login/`, `forgot-password/`, `callback/` | ದೃಢೀಕರಣ ಫ್ಲೋಗಳು | | `landing/` | ಮಾರ್ಕೆಟಿಂಗ್/ಲ್ಯಾಂಡಿಂಗ್ ಪುಟ | | `docs/` | ಎಂಬೆಡ್ ಮಾಡಿದ API ಡಾಕ್ಸ್ ವೀಕ್ಷಕ | | `status/`, `maintenance/`, `offline/` | ಕಾರ್ಯಾಚರಣಾ ಪುಟಗಳು | | `privacy/`, `terms/` | ಕಾನೂನು ಪುಟಗಳು | | `400/`, `401/`, `403/`, `408/`, `429/`, `500/`, `502/`, `503/` | ಸ್ಥಿರ ದೋಷ ಪುಟಗಳು | | `error.tsx`, `global-error.tsx`, `not-found.tsx`, `forbidden/`, `loading.tsx` | ಫ್ರೇಮ್ವರ್ಕ್ ದೋಷ/ಲೋಡಿಂಗ್ ಗಡಿಗಳು | | `layout.tsx`, `page.tsx`, `globals.css`, `manifest.ts` | ರೂಟ್ ಶೆಲ್ | #### 3.1.1 `src/app/(dashboard)/dashboard/` — UI ಪುಟಗಳು `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`, ಜೊತೆಗೆ ರೂಟ್ `page.tsx`, `HomePageClient.tsx`, `BootstrapBanner.tsx`. #### 3.1.2 `src/app/api/` — ಉನ್ನತ-ಮಟ್ಟದ API ಗುಂಪುಗಳು ``` 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/ ಎಂಬೆಡ್ ಮಾಡಿದ ಸೇವೆಗಳ ನಿರ್ವಹಣೆ (9router, cliproxy) — LOCAL_ONLY ├── upstream-proxy/ ├── usage/ ├── v1/ OpenAI-ಹೊಂದಾಣಿಕೆಯ ಸಾರ್ವಜನಿಕ API ├── v1beta/ Gemini-ಶೈಲಿಯ ಹೊಂದಾಣಿಕೆ ├── version-manager/ └── webhooks/ ``` #### 3.1.2a `src/app/api/services/` — ಎಂಬೆಡ್ ಮಾಡಿದ ಸೇವೆಗಳ ನಿರ್ವಹಣೆ 9Router ಮತ್ತು CLIProxyAPI ಅನ್ನು ಸ್ಥಾಪಿಸಲು, ಪ್ರಾರಂಭಿಸಲು, ನಿಲ್ಲಿಸಲು ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ರೂಟ್ಗಳು. ಎಲ್ಲಾ ಪಥಗಳನ್ನು **LOCAL_ONLY** ಎಂದು ವರ್ಗೀಕರಿಸಲಾಗಿದೆ (ಲೂಪ್ಬ್ಯಾಕ್ ಮಾತ್ರ, ಕಟ್ಟುನಿಟ್ಟಿನ ನಿಯಮ #17), ಏಕೆಂದರೆ ಅವು `npm install` ಅನ್ನು ಆಹ್ವಾನಿಸಬಹುದು ಮತ್ತು ಚೈಲ್ಡ್ ಪ್ರೊಸೆಸ್ಗಳನ್ನು ಸ್ಪಾನ್ ಮಾಡಬಹುದು. ``` src/app/api/services/ ├── 9router/ │ ├── _lib.ts getOrInitSupervisor() ಸಹಾಯಕ │ ├── install/route.ts POST — execFile ಮೂಲಕ 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 │ ├── rotate-key/route.ts POST — ಹೊಸ API ಕೀ ರಚಿಸಿ + ಮರುಪ್ರಾರಂಭಿಸಿ │ ├── status/route.ts GET — ಲೈವ್ + DB ಸ್ಥಿತಿ + ಆವೃತ್ತಿ ಮೆಟಾಡೇಟಾ │ └── auto-start/route.ts POST — auto_start ಫ್ಲ್ಯಾಗ್ ಟಾಗಲ್ ಮಾಡಿ ├── cliproxy/ │ ├── _lib.ts 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 │ ├── status/route.ts GET — ಲೈವ್ + DB ಸ್ಥಿತಿ + ಆವೃತ್ತಿ ಮೆಟಾಡೇಟಾ │ └── auto-start/route.ts POST — auto_start ಫ್ಲ್ಯಾಗ್ ಟಾಗಲ್ ಮಾಡಿ └── [name]/ └── logs/route.ts GET — SSE ಲಾಗ್ ಟೇಲ್ (ಎಲ್ಲಾ ಸೇವೆಗಳು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ) ``` ಅನುಗುಣವಾದ ಡ್ಯಾಶ್ಬೋರ್ಡ್ UI: `src/app/(dashboard)/dashboard/providers/services/` — ಎರಡು-ಟ್ಯಾಬ್ ಪುಟ (CLIProxyAPI + 9Router). 9Router ಎಂಬೆಡ್ ಮಾಡಿದ UI ಗಾಗಿ ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿ: `src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts` ಆಳವಾದ ವಿವರಣೆ: `docs/frameworks/EMBEDDED-SERVICES.md` #### 3.1.3 `src/app/api/v1/` — OpenAI-ಹೊಂದಾಣಿಕೆಯ ಸಾರ್ವಜನಿಕ API ``` v1/ ├── accounts/[id]/ ಖಾತೆ ಲುಕ್ಅಪ್ ├── agents/tasks/[id]/, agents/tasks/ A2A-ಶೈಲಿಯ ಕಾರ್ಯ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ├── api/ v1/api ಅಡಿಯಲ್ಲಿ ಬಹಿರಂಗಗೊಳಿಸಿದ ಆಂತರಿಕ API ಸಹಾಯಕಗಳು ├── audio/{speech, transcriptions}/ TTS + STT ├── batches/[id]/{cancel}, batches/ OpenAI Batches API ├── chat/completions/ Chat Completions (ಮುಖ್ಯ ಎಂಡ್ಪಾಯಿಂಟ್) ├── completions/ ಹಳೆಯ ಪಠ್ಯ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ├── embeddings/ ಎಂಬೆಡಿಂಗ್ಗಳು ├── files/[id]/, files/ Files API ├── _helpers/ ಹಂಚಿಕೆಯ ರೂಟ್ ಸಹಾಯಕಗಳು (ಸಾರ್ವಜನಿಕ URL ಇಲ್ಲ) ├── images/{edits, generations}/ ಚಿತ್ರ ರಚನೆ + ಸಂಪಾದನೆ ├── issues/ ಟ್ರಿಯಾಜ್ ಸಹಾಯಕ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ├── management/{proxies}/ v1 ಒಳಗಿನ ನಿರ್ವಹಣೆ-ಸ್ಕೋಪ್ ರೂಟ್ಗಳು ├── messages/{count_tokens}/ Anthropic-ಶೈಲಿಯ ಸಂದೇಶ ಹೊಂದಾಣಿಕೆ ├── models/ ಮಾಡೆಲ್ ಪಟ್ಟಿ (`route.ts`, `catalog.ts`) ├── moderations/ ಮಾಡರೇಶನ್ ├── music/ ಸಂಗೀತ ರಚನೆ ├── providers/[provider]/ ಪ್ರತಿ ಪ್ರೊವೈಡರ್ಗೆ ಕಾರ್ಯಾಚರಣೆಗಳು ├── quotas/{check} ಕೋಟಾ ಪ್ರೋಬ್ಗಳು ├── registered-keys/ ನೋಂದಾಯಿತ ಕೀ ನಿರ್ವಹಣೆ ├── rerank/ ಮರುಶ್ರೇಯಾಂಕ ├── responses/[...path]/ OpenAI Responses API (ಕ್ಯಾಚ್-ಆಲ್) ├── search/ ವೆಬ್ ಹುಡುಕಾಟ ├── videos/ ವೀಡಿಯೊ ರಚನೆ ├── ws/ WebSocket ಬ್ರಿಡ್ಜ್ └── route.ts ಸೂಚ್ಯಂಕ ಹ್ಯಾಂಡ್ಲರ್ ``` ಪ್ರತಿಯೊಂದು ರೂಟ್ ಫೈಲ್ ಒಂದೇ ಮಾದರಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ: ``` ರೂಟ್ → CORS ಪ್ರೀಫ್ಲೈಟ್ → Zod ಬಾಡಿ ಮೌಲ್ಯೀಕರಣ → ಐಚ್ಛಿಕ ದೃಢೀಕರಣ → API ಕೀ ನೀತಿ ಜಾರಿಗೊಳಿಸುವಿಕೆ → ಹ್ಯಾಂಡ್ಲರ್ ಡೆಲಿಗೇಶನ್ (open-sse) ``` `v1beta/` ಎಂಬುದು Gemini-ಶೈಲಿಯ ಹೊಂದಾಣಿಕೆ ಮೇಲ್ಮೈಯಾಗಿದೆ (ಅದೇ `open-sse/handlers/` ಪೈಪ್ಲೈನ್ಗೆ ಅನುವಾದಿಸುವ ತೆಳುವಾದ ರ್ಯಾಪರ್). ### 3.2 `src/lib/` — ಮೂಲ ಲೈಬ್ರರಿಗಳು ಡೇಟಾ, ಸಿಂಕ್, OAuth, ಸ್ಕಿಲ್, ಮೆಮೊರಿ ಮುಂತಾದವುಗಳನ್ನು ಯಾವಾಗಲೂ ಈ ಮಾಡ್ಯೂಲ್ಗಳ ಮೂಲಕ ಆಮದು ಮಾಡಿ. ಕೋಷ್ಟಕವು ನೈಜ ಡೈರೆಕ್ಟರಿಗಳು ಮತ್ತು ಗಮನಾರ್ಹ ಉನ್ನತ-ಮಟ್ಟದ ಫೈಲ್ಗಳನ್ನು ಗುಂಪು ಮಾಡುತ್ತದೆ. | ಮಾಡ್ಯೂಲ್ | ಉದ್ದೇಶ | | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `a2a/` | A2A ಪ್ರೋಟೋಕಾಲ್ ಸರ್ವರ್: `taskManager.ts`, `streaming.ts`, `taskExecution.ts`, `routingLogger.ts`, `skills/` (6 ಸ್ಕಿಲ್ಗಳು: ವೆಚ್ಚ ವಿಶ್ಲೇಷಣೆ, ಆರೋಗ್ಯ ವರದಿ, ಪ್ರೊವೈಡರ್ ಅನ್ವೇಷಣೆ, ಕೋಟಾ ನಿರ್ವಹಣೆ, ಸ್ಮಾರ್ಟ್ ರೂಟಿಂಗ್, ಸಾಮರ್ಥ್ಯಗಳ ಪಟ್ಟಿ) | | `acp/` | Agent-Control-Protocol: `index.ts`, `manager.ts`, `registry.ts` | | `api/` | ಆಂತರಿಕ API ಸಹಾಯಕಗಳು: `requireManagementAuth.ts`, `requireCliToolsAuth.ts`, `errorResponse.ts` | | `auth/` | `managementPassword.ts` (ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಕೆ / ಹ್ಯಾಶಿಂಗ್) | | `batches/` | OpenAI Batches API ಸೇವೆ (`service.ts`) | | `catalog/` | OpenRouter ಕ್ಯಾಟಲಾಗ್ ಸಿಂಕ್ (`openrouterCatalog.ts`) | | `cloudAgent/` | ಕ್ಲೌಡ್ ಏಜೆಂಟ್ ರಿಜಿಸ್ಟ್ರಿ: `api.ts`, `baseAgent.ts`, `db.ts`, `index.ts`, `registry.ts`, `types.ts`, `agents/{codex, devin, jules}.ts` | | `combos/` | ಕಾಂಬೊ ರೆಸಲ್ಯೂಶನ್ ಸಹಾಯಕಗಳು | | `compliance/` | ಆಡಿಟ್ + ಪ್ರೊವೈಡರ್ ಆಡಿಟ್: `index.ts`, `providerAudit.ts` | | `config/` | ರನ್ಟೈಮ್ ಕಾನ್ಫಿಗ್ ಗ್ಲೂ | | `db/` | SQLite ಡೊಮೇನ್ ಮಾಡ್ಯೂಲ್ಗಳು (§3.2.1 ನೋಡಿ) | | `display/` | API ಪ್ರತಿಕ್ರಿಯೆಗಳು ಬಳಸುವ UI/ಪ್ರದರ್ಶನ ಸಹಾಯಕಗಳು | | `embeddings/` | ಎಂಬೆಡಿಂಗ್ ಸೇವಾ ರಿಜಿಸ್ಟ್ರಿ | | `env/` | Env ಲೋಡಿಂಗ್ + ಪರಿಶೀಲನೆ | | `evals/` | Eval ರನ್ಟೈಮ್ | | `guardrails/` | `piiMasker.ts`, `promptInjection.ts`, `visionBridge.ts`, `visionBridgeHelpers.ts`, `registry.ts`, `base.ts` | | `jobs/` | ಹಿನ್ನೆಲೆ ಜಾಬ್ಗಳು (`autoUpdate.ts`, …) | | `memory/` | ಶಾಶ್ವತ ಮೆಮೊರಿ: `store.ts`, `cache.ts`, `retrieval.ts`, `summarization.ts`, `extraction.ts`, `injection.ts`, `qdrant.ts`, `settings.ts`, `verify.ts`, `schemas.ts`, `types.ts` | | `monitoring/` | `observability.ts` | | `oauth/` | OAuth/ಆಮದು ಪ್ರೊವೈಡರ್ ಮಾಡ್ಯೂಲ್ಗಳು (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`, ಜೊತೆಗೆ `services/`, `utils/`, ಮತ್ತು `constants/oauth.ts` | | `plugins/` | ಪ್ಲಗಿನ್ ಲೋಡರ್ (`index.ts`) | | `promptCache/` | `prefixAnalyzer.ts`, `index.ts` | | `providerModels/` | ನಿರ್ವಹಿತ ಮಾಡೆಲ್ ಜೀವನಚಕ್ರ: `modelDiscovery.ts`, `managedModelImport.ts`, `managedAvailableModels.ts`, `cursorAgent.ts` | | `providers/` | ಪ್ರೊವೈಡರ್ ಸಹಾಯಕಗಳು: `catalog.ts`, `validation.ts`, `imageValidation.ts`, `claudeExtraUsage.ts`, `codexConnectionDefaults.ts`, `codexFastTier.ts`, `webCookieAuth.ts`, `managedAvailableModels.ts`, `requestDefaults.ts` | | `resilience/` | `settings.ts` — ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್, ಕೂಲ್ಡೌನ್, ಲಾಕ್ಔಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು | | `runtime/` | ರನ್ಟೈಮ್ ವೈಶಿಷ್ಟ್ಯ ಪತ್ತೆ | | `search/` | `executeWebSearch.ts` | | `services/` | ಎಂಬೆಡ್ ಮಾಡಿದ ಸೇವೆಗಳ ಫ್ರೇಮ್ವರ್ಕ್: `ServiceSupervisor.ts` (ಕಾರ್ಯಾಚರಣೆ ಲಾಕ್, ರಿಂಗ್ ಬಫರ್, ಆರೋಗ್ಯ ಪರೀಕ್ಷಕ ಹೊಂದಿರುವ ಸಾಮಾನ್ಯ ಚೈಲ್ಡ್-ಪ್ರೊಸೆಸ್ ಸೂಪರ್ವೈಸರ್), `bootstrap.ts` (ಪ್ರೊಸೆಸ್-ಮಟ್ಟದ ನೋಂದಣಿ ಮತ್ತು ಸ್ವಯಂ-ಪ್ರಾರಂಭ), `registry.ts` (ಟೂಲ್ → ಸೂಪರ್ವೈಸರ್ ಮ್ಯಾಪ್), `apiKey.ts` (AES-256-GCM ಕೀ ಸ್ಟೋರ್), `modelSync.ts` (ಆವರ್ತಕ ಮಾಡೆಲ್ ಸಿಂಕ್), `ringBuffer.ts` (5 MB ವೃತ್ತಾಕಾರದ ಲಾಗ್ ಬಫರ್), `healthCheck.ts` (HTTP ಆರೋಗ್ಯ ಪ್ರೋಬ್), `types.ts`, `embedWsProxy.ts` (WebSocket ಪ್ರಾಕ್ಸಿ), `installers/{ninerouter,cliproxy}.ts`. `docs/frameworks/EMBEDDED-SERVICES.md` ನೋಡಿ | | `agentSkills/` | Agent Skills ಕ್ಯಾಟಲಾಗ್ + ಜನರೇಟರ್: `catalog.ts` (getCatalog/getSkillById/filterCatalog/computeCoverage), `generator.ts` (generateAgentSkills → `skills/{id}/SKILL.md` ಗೆ ಬರೆಯುತ್ತದೆ), `openapiParser.ts` (OpenAPI ಸ್ಪೆಕ್ನಿಂದ REST ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ), `cliRegistryParser.ts` (bin/cli-registry ಯಿಂದ CLI ಉಪಕಮಾಂಡ್ಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ), `schemas.ts` (Zod: AgentSkillSchema, SkillCoverageSchema, ListQuerySchema, GenerateBodySchema), `types.ts` (AgentSkill, SkillCoverage, SkillMarkdown, GeneratorReport). REST ರೂಟ್ಗಳು (`/api/agent-skills/*`), MCP ಟೂಲ್ಗಳು (`omniroute_agent_skills_*`), ಮತ್ತು A2A ಸ್ಕಿಲ್ `list-capabilities` ಇವುಗಳಿಂದ ಬಳಸಲ್ಪಡುತ್ತದೆ. [AGENT-SKILLS.md](../frameworks/AGENT-SKILLS.md) ನೋಡಿ. | | `skills/` | ಸ್ಕಿಲ್ ಫ್ರೇಮ್ವರ್ಕ್: `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`, ಜೊತೆಗೆ `builtin/browser.ts` | | `spend/` | `batchWriter.ts` (ರೈಟ್-ಬಿಹೈಂಡ್ ಬಫರ್) | | `sync/` | `bundle.ts`, `tokens.ts` (Cloud Sync) | | `system/` | ಸಿಸ್ಟಮ್-ಮಟ್ಟದ ಸಹಾಯಕಗಳು | | `translator/` | ಉನ್ನತ-ಮಟ್ಟದ ಅನುವಾದಕ ಗ್ಲೂ (`open-sse/translator/` ಗೆ ಡೆಲಿಗೇಟ್ ಮಾಡುತ್ತದೆ) | | `usage/` | ಬಳಕೆ ಲೆಕ್ಕಾಚಾರ: `costCalculator.ts`, `tokenAccounting.ts`, `usageHistory.ts`, `aggregateHistory.ts`, `usageStats.ts`, `callLogs.ts`, `callLogArtifacts.ts`, `fetcher.ts`, `providerLimits.ts`, `migrations.ts` | | `versionManager/` | ಸ್ವಯಂ-ಅಪ್ಡೇಟ್ + ಆವೃತ್ತಿ ಮ್ಯಾನಿಫೆಸ್ಟ್ | | `ws/` | WebSocket ಬ್ರಿಡ್ಜ್ | | `zed-oauth/` | Zed ಎಡಿಟರ್ OAuth ಫ್ಲೋ | `src/lib/` ನಲ್ಲಿನ ಉನ್ನತ-ಮಟ್ಟದ ಫೈಲ್ಗಳು: - ಹಳೆಯ `localDb.ts` ಬ್ಯಾರೆಲ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ — ಬಳಕೆದಾರರು ನಿರ್ದಿಷ್ಟ `src/lib/db/*` ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ನೇರವಾಗಿ ಆಮದು ಮಾಡುತ್ತಾರೆ. - `proxyHealth.ts`, `proxyLogger.ts`, `tokenHealthCheck.ts`, `localHealthCheck.ts` - `apiBridgeServer.ts`, `cacheLayer.ts`, `semanticCache.ts`, `settingsCache.ts` - `cloudSync.ts`, `initCloudSync.ts` - `cloudflaredTunnel.ts`, `ngrokTunnel.ts`, `tailscaleTunnel.ts` - `consoleInterceptor.ts`, `container.ts`, `gracefulShutdown.ts`, `idempotencyLayer.ts` - `ipUtils.ts`, `logEnv.ts`, `logPayloads.ts`, `logRotation.ts` - `modelAliasSeed.ts`, `modelCapabilities.ts`, `modelMetadataRegistry.ts`, `modelsDevSync.ts` - `piiSanitizer.ts`, `pricingSync.ts` - `apiKeyExposure.ts`, `cacheControlSettings.ts`, `dataPaths.ts`, `toolPolicy.ts` - `translatorEvents.ts`, `usageDb.ts`, `usageAnalytics.ts`, `webhookDispatcher.ts` #### 3.2.1 `src/lib/db/` ಸಿಂಗಲ್ಟನ್ SQLite ಡೇಟಾಬೇಸ್ (`core.ts` ನಲ್ಲಿ `getDbInstance()`, WAL ಜರ್ನಲಿಂಗ್). **ರೂಟ್ಗಳು ಅಥವಾ ಹ್ಯಾಂಡ್ಲರ್ಗಳಲ್ಲಿ ಎಂದಿಗೂ ಕಚ್ಚಾ SQL ಬರೆಯಬೇಡಿ** — ಈ ಮಾಡ್ಯೂಲ್ಗಳ ಮೂಲಕವೇ ಕಾರ್ಯನಿರ್ವಹಿಸಿ. ![ಡೇಟಾಬೇಸ್ ಸ್ಕೀಮಾ ಅವಲೋಕನ (ಆಯ್ದ ಮೂಲ ಕೋಷ್ಟಕಗಳು)](../diagrams/exported/db-schema-overview.svg) > ಮೂಲ: [diagrams/db-schema-overview.mmd](../diagrams/db-schema-overview.mmd) ಡೊಮೇನ್ ಮಾಡ್ಯೂಲ್ಗಳು (ಪ್ರತಿಯೊಂದೂ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಕೋಷ್ಟಕಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ): `apiKeys.ts`, `backup.ts`, `batches.ts`, `cleanup.ts`, `cliToolState.ts`, `combos.ts`, `commandCodeAuth.ts`, `compression.ts`, `compressionAnalytics.ts`, `compressionCacheStats.ts`, `compressionCombos.ts`, `compressionScheduler.ts`, `contextHandoffs.ts`, `core.ts`, `creditBalance.ts`, `databaseSettings.ts`, `detailedLogs.ts`, `domainState.ts`, `encryption.ts`, `evals.ts`, `files.ts`, `healthCheck.ts`, `jsonMigration.ts`, `migrationRunner.ts`, `modelComboMappings.ts`, `models.ts`, `oneproxy.ts`, `prompts.ts`, `providers.ts`, `providerLimits.ts`, `proxies.ts`, `quotaSnapshots.ts`, `readCache.ts`, `reasoningCache.ts`, `registeredKeys.ts`, `secrets.ts`, `sessionAccountAffinity.ts`, `settings.ts`, `stateReset.ts`, `stats.ts`, `syncTokens.ts`, `tierConfig.ts`, `upstreamProxy.ts`, `versionManager.ts`, `webhooks.ts`. `migrations/` 168 ಆವೃತ್ತಿಗೊಳಿಸಿದ `.sql` ಫೈಲ್ಗಳನ್ನು (ಐಡೆಂಪೊಟೆಂಟ್, ಟ್ರಾನ್ಸಾಕ್ಷನಲ್) ಹೊಂದಿದೆ ಮತ್ತು ಬೂಟ್ ಸಮಯದಲ್ಲಿ `migrationRunner.ts` ಮೂಲಕ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಮೈಗ್ರೇಶನ್ಗಳಾದ್ಯಂತ ರಚಿಸಲಾದ ಕೋಷ್ಟಕಗಳು (ಒಟ್ಟು 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` (ಜೊತೆಗೆ ಮೆಮೊರಿ ಹುಡುಕಾಟಕ್ಕಾಗಿ FTS5 ವರ್ಚುವಲ್ ಕೋಷ್ಟಕಗಳು). ### 3.3 `src/domain/` — ಡೊಮೇನ್ ಲೇಯರ್ ಶುದ್ಧ ವ್ಯವಹಾರ ತರ್ಕ, I/O ಇಲ್ಲ. ರೂಟ್ಗಳು ಮತ್ತು ಹ್ಯಾಂಡ್ಲರ್ಗಳು ಇದನ್ನು ಆಮದು ಮಾಡುತ್ತವೆ. | ಫೈಲ್ | ಉದ್ದೇಶ | | ------------------------------------------ | ---------------------------------------------------------- | | `policyEngine.ts` | ಉನ್ನತ-ಮಟ್ಟದ ನೀತಿ ರೆಸಾಲ್ವರ್ | | `fallbackPolicy.ts` | ಫಾಲ್ಬ್ಯಾಕ್ ನಿರ್ಧಾರ ವೃಕ್ಷ | | `costRules.ts` | ವೆಚ್ಚ ಲೆಕ್ಕಾಚಾರದ ನಿಯಮಗಳು | | `lockoutPolicy.ts` | ಮಾಡೆಲ್ ಲಾಕ್ಔಟ್ ನಿರ್ಧಾರಗಳು | | `tagRouter.ts` | ಟ್ಯಾಗ್-ಆಧಾರಿತ ರೂಟಿಂಗ್ | | `comboResolver.ts` | ವಿನಂತಿ → ಗುರಿ ಪಟ್ಟಿಯಿಂದ ಕಾಂಬೊ ರೆಸಲ್ಯೂಶನ್ | | `connectionModelRules.ts` | ಪ್ರತಿ-ಕನೆಕ್ಷನ್ ಮಾಡೆಲ್ ಫಿಲ್ಟರ್ಗಳು | | `modelAvailability.ts` | ಮಾಡೆಲ್ ಲಭ್ಯತೆ ಪರಿಶೀಲನೆ | | `degradation.ts` | ಡಿಗ್ರೇಡೆಡ್-ಮೋಡ್ ಪರಿವರ್ತನೆಗಳು | | `providerExpiration.ts` | ಅವಧಿ ಮೀರಿದ ಖಾತೆ/ಕೀ ಪತ್ತೆ | | `quotaCache.ts` | ಕ್ಯಾಶ್ ಮಾಡಿದ ಕೋಟಾ ನಿರ್ಧಾರಗಳು | | `responses.ts`, `omnirouteResponseMeta.ts` | ಪ್ರತಿಕ್ರಿಯೆ ಆಕಾರದ ಸಹಾಯಕಗಳು | | `configAudit.ts` | ಕಾನ್ಫಿಗ್ ಬದಲಾವಣೆ ಆಡಿಟ್ | | `assessment/` | ಮಾಡೆಲ್ ಮೌಲ್ಯಮಾಪನ (ಪ್ರತಿ RFC ಪ್ರಕಾರ, ಭಾಗಶಃ ಅನುಷ್ಠಾನಗೊಂಡಿದೆ) | | `types.ts` | ಹಂಚಿಕೆಯ ಡೊಮೇನ್ ಪ್ರಕಾರಗಳು | ### 3.4 `src/server/` — ಸರ್ವರ್ಗೆ ಮಾತ್ರ ಕ್ಲೈಂಟ್ ಕಾಂಪೊನೆಂಟ್ಗಳಿಂದ ಆಮದು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ``` server/ ├── auth/loginGuard.ts ├── authz/ │ ├── classify.ts ರೂಟ್ಗಳನ್ನು ಸಾರ್ವಜನಿಕ ಅಥವಾ ನಿರ್ವಹಣೆ ಎಂದು ವರ್ಗೀಕರಿಸುತ್ತದೆ │ ├── assertAuth.ts ಅಸರ್ಟ್ ಸಹಾಯಕ │ ├── context.ts ಪ್ರತಿ-ವಿನಂತಿಯ authz ಕಾಂಟೆಕ್ಸ್ಟ್ │ ├── headers.ts │ ├── pipeline.ts Authz ಪೈಪ್ಲೈನ್ │ ├── policies/ ನಿರ್ದಿಷ್ಟ ನೀತಿಗಳು │ └── types.ts └── cors/origins.ts CORS ಮೂಲಗಳ ಅನುಮತಿ ಪಟ್ಟಿ ``` ### 3.5 `src/shared/` — ಹಂಚಿಕೊಳ್ಳಲು ಸುರಕ್ಷಿತ ಕೇಂದ್ರೀಕೃತ ಉಪಡೈರೆಕ್ಟರಿಗಳಾಗಿ ವಿಭಜಿಸಲಾಗಿದೆ: - `constants/` — `providers.ts` (Zod-ಮೌಲ್ಯೀಕರಿಸಿದ ಪ್ರೊವೈಡರ್ ಕ್ಯಾಟಲಾಗ್), `models.ts`, `modelSpecs.ts`, `modelCompat.ts`, `pricing.ts`, `cliTools.ts`, `cliCompatProviders.ts`, `routingStrategies.ts`, `comboConfigMode.ts`, `headers.ts`, `upstreamHeaders.ts` (ನಿಷೇಧ ಪಟ್ಟಿ), `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 Zod ಸ್ಕೀಮಾಗಳು), `compressionConfigSchemas.ts`, `providerSchema.ts`, `settingsSchemas.ts`, `helpers.ts`. - `contracts/` — npm ಗೆ ರವಾನಿಸಲಾದ ಸಾರ್ವಜನಿಕ API ಒಪ್ಪಂದಗಳು. - `types/` — ಹಂಚಿಕೆಯ 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.ts`, ಜೊತೆಗೆ `services/`, `network/`, `middleware/`, `schemas/`, `hooks/`, `components/` ಅಡಿಯಲ್ಲಿನ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಹುಕ್ಗಳು/ಕಾಂಪೊನೆಂಟ್ಗಳು. --- ## 4. `open-sse/` — ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಜಿನ್ ಕಾರ್ಯಕ್ಷೇತ್ರ `@omniroute/open-sse` ಆಗಿ ಪ್ರಕಟಿಸಲಾದ ಪ್ರತ್ಯೇಕ npm ಕಾರ್ಯಕ್ಷೇತ್ರ. ವಿನಂತಿ ಸಂಸ್ಕರಣೆ, ಎಕ್ಸಿಕ್ಯೂಟರ್ಗಳು, ಅನುವಾದಕಗಳು, ಸೇವೆಗಳು, ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಮತ್ತು MCP ಸರ್ವರ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ``` open-sse/ ├── index.ts ಸಾರ್ವಜನಿಕ ಎಕ್ಸ್ಪೋರ್ಟ್ಗಳು ├── package.json ಕಾರ್ಯಕ್ಷೇತ್ರ ಮ್ಯಾನಿಫೆಸ್ಟ್ ├── tsconfig.json ├── types.d.ts ├── config/ ಪೂರೈಕೆದಾರರ ರಿಜಿಸ್ಟ್ರಿಗಳು, ಹೆಡರ್ ಪ್ರೊಫೈಲ್ಗಳು, ಗುರುತು, … ├── handlers/ ವಿನಂತಿ ಹ್ಯಾಂಡ್ಲರ್ಗಳು (ಚಾಟ್, ಎಂಬೆಡಿಂಗ್ಗಳು, ಆಡಿಯೊ, ಚಿತ್ರ, …) ├── executors/ 108 ಪೂರೈಕೆದಾರ-ನಿರ್ದಿಷ್ಟ HTTP ಎಕ್ಸಿಕ್ಯೂಟರ್ಗಳು ├── translator/ ಸ್ವರೂಪ ಪರಿವರ್ತನೆ (OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro) ├── transformer/ Responses API ↔ Chat Completions ಸ್ಟ್ರೀಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ├── services/ 80+ ಸೇವಾ ಮಾಡ್ಯೂಲ್ಗಳು (ಕಾಂಬೊಗಳು, ಫಾಲ್ಬ್ಯಾಕ್, ಕೋಟಾಗಳು, ಗುರುತು, …) ├── utils/ ಸ್ಟ್ರೀಮಿಂಗ್ ಸಹಾಯಕಗಳು, TLS ಕ್ಲೈಂಟ್, AWS SigV4, ಪ್ರಾಕ್ಸಿ ಫೆಚ್, … └── mcp-server/ MCP ಸರ್ವರ್ (3 ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ಗಳು, 33 ಸ್ಕೋಪ್ಗಳು, 110 ಪರಿಕರಗಳು) ``` ### 4.1 `open-sse/handlers/` | ಹ್ಯಾಂಡ್ಲರ್ | ಉದ್ದೇಶ | | ----------------------- | ------------------------------------------------------------------------ | | `chatCore.ts` | ಮುಖ್ಯ ಚಾಟ್ ಪೈಪ್ಲೈನ್ (ಕ್ಯಾಶ್, ದರ ಮಿತಿ, ಕಾಂಬೊ ರೂಟಿಂಗ್, ಎಕ್ಸಿಕ್ಯೂಟರ್ ರವಾನೆ) | | `responsesHandler.ts` | OpenAI Responses API ಪ್ರವೇಶ ಬಿಂದು | | `embeddings.ts` | ಎಂಬೆಡಿಂಗ್ಗಳು | | `imageGeneration.ts` | ಚಿತ್ರ ರಚನೆ | | `audioSpeech.ts` | ಪಠ್ಯದಿಂದ-ಮಾತಿಗೆ | | `audioTranscription.ts` | ಮಾತಿನಿಂದ-ಪಠ್ಯಕ್ಕೆ | | `videoGeneration.ts` | ವೀಡಿಯೊ ರಚನೆ | | `musicGeneration.ts` | ಸಂಗೀತ ರಚನೆ | | `rerank.ts` | ಮರುಶ್ರೇಯಾಂಕ | | `moderations.ts` | ಮಾಡರೇಶನ್ | | `search.ts` | ವೆಬ್ ಹುಡುಕಾಟ | | `sseParser.ts` | SSE ಈವೆಂಟ್ ಪಾರ್ಸರ್ | | `usageExtractor.ts` | ಅಪ್ಸ್ಟ್ರೀಮ್ ಸ್ಟ್ರೀಮ್ಗಳಿಂದ ಟೋಕನ್ ಎಣಿಕೆಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ | | `responseSanitizer.ts` | ಪೂರೈಕೆದಾರ-ನಿರ್ದಿಷ್ಟ ಅನಗತ್ಯ ಮಾಹಿತಿಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ | | `responseTranslator.ts` | ಪೂರೈಕೆದಾರರ ಪ್ರತಿಕ್ರಿಯೆ ಮತ್ತು ಅನುವಾದಕ ಲೇಯರ್ ನಡುವಿನ ಸಂಪರ್ಕ | ### 4.2 `open-sse/executors/` 108 ಪೂರೈಕೆದಾರ ಎಕ್ಸಿಕ್ಯೂಟರ್ಗಳು, ಪ್ರತಿಯೊಂದೂ `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`, ಜೊತೆಗೆ `claudeIdentity.ts` (ಹಂಚಿಕೆಯ ಗುರುತು ಸಹಾಯಕ) ಮತ್ತು `index.ts` (ರಿಜಿಸ್ಟ್ರಿ). > ಸೂಚನೆ: ಇಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡದ ಪೂರೈಕೆದಾರರನ್ನು ಸಾಮಾನ್ಯ > OpenAI-ಹೊಂದಾಣಿಕೆಯ ಎಕ್ಸಿಕ್ಯೂಟರ್ ಬಳಸುವ `default.ts` ಒದಗಿಸುತ್ತದೆ. ಸಂಪೂರ್ಣ ಪೂರೈಕೆದಾರ ಕ್ಯಾಟಲಾಗ್ (355 ಪೂರೈಕೆದಾರರು) > `src/shared/constants/providers.ts` ನಲ್ಲಿದೆ. ### 4.3 `open-sse/translator/` ಹಬ್-ಮತ್ತು-ಸ್ಪೋಕ್ ಅನುವಾದ (OpenAI ಹಬ್ ಆಗಿದೆ). - **9 ವಿನಂತಿ ಅನುವಾದಕಗಳು** (`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 ಪ್ರತಿಕ್ರಿಯೆ ಅನುವಾದಕಗಳು** (`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 ಸಹಾಯಕಗಳು** (`translator/helpers/`): `claudeHelper`, `geminiHelper`, `geminiToolsSanitizer`, `maxTokensHelper`, `openaiHelper`, `responsesApiHelper`, `schemaCoercion`, `toolCallHelper`, ಜೊತೆಗೆ ಸಹಾಯಕ ಪರೀಕ್ಷೆಗಳು. - **ಚಿತ್ರ ಸಹಾಯಕಗಳು** (`translator/image/sizeMapper.ts`). - ಮೇಲ್ಮಟ್ಟ: `bootstrap.ts`, `formats.ts`, `registry.ts`, `index.ts`. ### 4.4 `open-sse/transformer/` - `responsesTransformer.ts` — `TransformStream`-ಆಧಾರಿತ Responses API ↔ Chat Completions ಪರಿವರ್ತಕ (`responses/` ರೂಟ್ನ ಕ್ಯಾಚ್-ಆಲ್ನಿಂದ ಬಳಸಲಾಗುತ್ತದೆ). ### 4.5 `open-sse/services/` ಮುಖ್ಯಾಂಶಗಳು (ಸಂಪೂರ್ಣ ಪಟ್ಟಿ `open-sse/services/` ಅಡಿಯಲ್ಲಿ): | ಕಾಳಜಿ | ಫೈಲ್ಗಳು | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ಕಾಂಬೊ ರೂಟಿಂಗ್ | `combo.ts` (19 ಕಾರ್ಯತಂತ್ರಗಳು), `comboConfig.ts`, `comboMetrics.ts`, `comboManifestMetrics.ts`, `comboAgentMiddleware.ts` | | ಸ್ವಯಂ ಕಾಂಬೊ ಎಂಜಿನ್ | `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` | | ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವ | `accountFallback.ts` (ಕೂಲ್ಡೌನ್ + ಲಾಕ್ಔಟ್), `errorClassifier.ts`, `requestRejectedStreak.ts`, `emergencyFallback.ts`, `rateLimitManager.ts`, `rateLimitSemaphore.ts`, `accountSemaphore.ts`, `accountSelector.ts` | | ಕೋಟಾಗಳು | `quotaMonitor.ts`, `quotaPreflight.ts`, `bailianQuotaFetcher.ts`, `codexQuotaFetcher.ts`, `deepseekQuotaFetcher.ts`, `openrouterQuotaFetcher.ts`, `openrouterFreeWindow.ts`, `llmgatewayQuotaFetcher.ts`, `crofUsageFetcher.ts`, `antigravityCredits.ts` | | ಕ್ಯಾಶಿಂಗ್ | `reasoningCache.ts`, `searchCache.ts`, `signatureCache.ts`, `requestDedup.ts` | | ರೂಟಿಂಗ್ ಬುದ್ಧಿಮತ್ತೆ | `intentClassifier.ts`, `taskAwareRouter.ts`, `backgroundTaskDetector.ts`, `volumeDetector.ts`, `wildcardRouter.ts`, `workflowFSM.ts`, `specificityDetector.ts`, `specificityRules.ts`, `specificityTypes.ts` | | ಮಾದರಿ ನಿರ್ವಹಣೆ | `modelCapabilities.ts`, `modelDeprecation.ts`, `modelFamilyFallback.ts`, `modelStrip.ts`, `model.ts`, `provider.ts`, `providerRequestDefaults.ts`, `providerCostData.ts`, `payloadRules.ts` | | ಸಂಕೋಚನ | `compression/` — ಸಂಪೂರ್ಣ ಸಂಕೋಚನ ಎಂಜಿನ್ ವೈರಿಂಗ್ | | ಟೋಕನ್ + ಸೆಷನ್ | `tokenRefresh.ts`, `sessionManager.ts`, `apiKeyRotator.ts`, `contextManager.ts`, `contextHandoff.ts`, `systemPrompt.ts`, `roleNormalizer.ts`, `responsesInputSanitizer.ts`, `toolSchemaSanitizer.ts`, `toolLimitDetector.ts`, `thinkingBudget.ts` | | ಟಿಯರ್ / ಮ್ಯಾನಿಫೆಸ್ಟ್ | `tierResolver.ts`, `tierConfig.ts`, `tierDefaults.json`, `tierTypes.ts`, `manifestAdapter.ts` | | IP / ನೆಟ್ವರ್ಕ್ | `ipFilter.ts`, `webSearchFallback.ts` | | ಬ್ಯಾಚ್ಗಳು | `batchProcessor.ts` | | ಬಳಕೆ | `usage.ts` | ### 4.6 `open-sse/mcp-server/` - `server.ts` ನಲ್ಲಿ ವೈರ್ ಮಾಡಲಾದ **110 ವಿಶಿಷ್ಟ ಪರಿಕರಗಳು** (`schemas/tools.ts` ನಲ್ಲಿ 45 ಪ್ರಮಾಣಿತ ಪರಿಕರಗಳು + ಮೆಮೊರಿ, ಕೌಶಲ್ಯಗಳು, GitHub-ಕೌಶಲ್ಯಗಳು, ಪೂಲ್, ಗೇಮಿಫಿಕೇಶನ್, ಪ್ಲಗಿನ್, Notion, Obsidian, ಸ್ಥಳೀಯ-ಕಾರ್ಪಸ್ ಮತ್ತು ಸಂಕೋಚನ ಮಾಡ್ಯೂಲ್ಗಳು — `countUniqueMcpTools` ಮೂಲಕ ಯೂನಿಯನ್ ಎಣಿಸಲಾಗಿದೆ). - **3 ಸಾರಿಗೆ ವಿಧಾನಗಳು**: stdio, HTTP Streamable, SSE. - ರನ್ಟೈಮ್ನಲ್ಲಿ ಜಾರಿಗೊಳಿಸಲಾದ **33 ಸ್ಕೋಪ್ಗಳು** — ಮೂಲ ಪಟ್ಟಿ `src/shared/constants/mcpScopes.ts` ನಲ್ಲಿದೆ; ಸಂಪೂರ್ಣ ಸೆಟ್ ಪ್ರತಿ ಪರಿಕರ ಮಾಡ್ಯೂಲ್ ಘೋಷಿಸಿದ ಸ್ಕೋಪ್ಗಳ ಯೂನಿಯನ್ ಆಗಿದೆ. - ಆಡಿಟ್ ಕೋಷ್ಟಕ: `mcp_tool_audit` (`audit.ts` ಮೂಲಕ ಭರ್ತಿ ಮಾಡಲಾಗುತ್ತದೆ). - ಫೈಲ್ಗಳು: `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`, ಜೊತೆಗೆ `__tests__/` ಅಡಿಯಲ್ಲಿನ ಪರೀಕ್ಷೆಗಳು. - ಸಂಪೂರ್ಣ ಪರಿಕರ ಕ್ಯಾಟಲಾಗ್ಗಾಗಿ [MCP-SERVER.md](../frameworks/MCP-SERVER.md) ನೋಡಿ. ### 4.7 `open-sse/config/` ಪೂರೈಕೆದಾರ ರಿಜಿಸ್ಟ್ರಿಗಳು (`providerRegistry.ts`, `providerModels.ts`, `providerHeaderProfiles.ts`), ಪ್ರತಿ-ಸ್ವರೂಪದ ಮಾದರಿ ರಿಜಿಸ್ಟ್ರಿಗಳು (`audioRegistry.ts`, `embeddingRegistry.ts`, `imageRegistry.ts`, `moderationRegistry.ts`, `musicRegistry.ts`, `rerankRegistry.ts`, `searchRegistry.ts`, `videoRegistry.ts`), ಗುರುತು ಸಹಾಯಕಗಳು (`codexIdentity.ts`, `codexInstructions.ts`, `anthropicHeaders.ts`, `antigravityUpstream.ts`, `antigravityModelAliases.ts`, `cliFingerprints.ts`, `toolCloaking.ts`, `defaultThinkingSignature.ts`), ರುಜುವಾತು ಸಹಾಯಕಗಳು (`credentialLoader.ts`, `codexClient.ts`), ಮತ್ತು ಕ್ಲೌಡ್ ಅಡಾಪ್ಟರ್ಗಳು (`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/` ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರಿಮಿಟಿವ್ಗಳು ಮತ್ತು ಪ್ರೊವೈಡರ್ ಸಹಾಯಕಗಳು: `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/` — ಡೆಸ್ಕ್ಟಾಪ್ ರ್ಯಾಪರ್ ``` electron/ ├── main.js Electron ಮುಖ್ಯ ಪ್ರಕ್ರಿಯೆ ├── preload.js ಪ್ರೀಲೋಡ್ ಬ್ರಿಡ್ಜ್ (contextIsolation ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ) ├── types.d.ts ├── package.json electron-builder ಸಂರಚನೆ, ಆವೃತ್ತಿ 3.8.51 ├── README.md ├── assets/ ಬಿಲ್ಡ್ ಸಂಪನ್ಮೂಲಗಳು (ಐಕಾನ್ಗಳು, ಅರ್ಹತೆಗಳು, …) ├── node_modules/ ಮೀಸಲಾದ node_modules (better-sqlite3, electron-updater) └── dist-electron/ ಬಿಲ್ಡ್ ಔಟ್ಪುಟ್ (ಕಮಿಟ್ ಮಾಡಲಾಗಿಲ್ಲ) ``` ವರ್ಕ್ಸ್ಪೇಸ್ ರೂಟ್ನಲ್ಲಿ ಐದು npm ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿವೆ: `electron:dev`, `electron:build`, `electron:build:{win,mac,linux}`, `electron:smoke:packaged`. ಸ್ವಯಂ-ನವೀಕರಣವು GitHub ರಿಲೀಸ್ ಫೀಡ್ ಅನ್ನು ಸೂಚಿಸುವ `electron-updater` ಮೂಲಕ ನಡೆಯುತ್ತದೆ. --- ## 6. `bin/` — CLI ``` bin/ ├── omniroute.mjs ಮುಖ್ಯ CLI ಪ್ರವೇಶಬಿಂದು (Node ESM) ├── reset-password.mjs CLI ಮೂಲಕ ನಿರ್ವಹಣಾ ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ ├── mcp-server.mjs MCP ಸರ್ವರ್ ಲಾಂಚರ್ (stdio) ├── nodeRuntimeSupport.mjs Node ಆವೃತ್ತಿ ಗಾರ್ಡ್ └── cli/ ├── program.mjs Commander ಪ್ರೋಗ್ರಾಂ ಬಿಲ್ಡರ್ ├── runtime.mjs withRuntime ಸಹಾಯಕ (ಸರ್ವರ್-ಮೊದಲು/db-ಫಾಲ್ಬ್ಯಾಕ್) ├── output.mjs ಔಟ್ಪುಟ್ ಫಾರ್ಮ್ಯಾಟರ್ಗಳು (json/jsonl/table/csv) ├── i18n.mjs ಲೊಕೇಲ್ಗಳನ್ನು ಹೊಂದಿರುವ t() ಸಹಾಯಕ ├── api.mjs API fetch ಸಹಾಯಕ ├── data-dir.mjs ├── encryption.mjs ├── sqlite.mjs └── commands/ ├── registry.mjs ಕಮಾಂಡ್ ನೋಂದಣಿ ├── setup.mjs ├── doctor.mjs ├── providers.mjs └── ... (ಪ್ರತಿ ಕಮಾಂಡ್/ಗುಂಪಿಗೆ ಒಂದು ಫೈಲ್) ``` `package.json` → `bin` ನಲ್ಲಿ ಎರಡು ಬೈನರಿಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಲಾಗಿದೆ: - `omniroute` → `bin/omniroute.mjs` - `omniroute-reset-password` → `bin/reset-password.mjs` --- ## 7. `tests/` | ಡೈರೆಕ್ಟರಿ | ಪ್ರಕಾರ | | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | `tests/unit/` | Node ನೇಟಿವ್ ಟೆಸ್ಟ್ ರನ್ನರ್ ಮೂಲಕ ಯೂನಿಟ್ ಪರೀಕ್ಷೆಗಳು (1821 ಫೈಲ್ಗಳು, ಜೊತೆಗೆ `api/`, `auth/`, `authz/` ಉಪಡೈರೆಕ್ಟರಿಗಳು) | | `tests/integration/` | ಕ್ರಾಸ್-ಮಾಡ್ಯೂಲ್ + DB-ಸ್ಥಿತಿ ಪರೀಕ್ಷೆಗಳು | | `tests/e2e/` | Playwright UI ಪರೀಕ್ಷೆಗಳು | | `tests/e2e/protocol-clients.test.ts` | MCP/A2A ಪ್ರೋಟೋಕಾಲ್ e2e | | `tests/translator/` | ಅನುವಾದಕ-ನಿರ್ದಿಷ್ಟ ಪರೀಕ್ಷೆಗಳು | | `tests/security/` | ಭದ್ರತಾ ರಿಗ್ರೆಶನ್ಗಳು | | `tests/load/` | ಲೋಡ್ / ಒತ್ತಡ ಪರೀಕ್ಷೆಗಳು | | `tests/golden-set/` | ಅನುವಾದಕ ರಿಗ್ರೆಶನ್ಗಳಿಗಾಗಿ ಉಲ್ಲೇಖ ಔಟ್ಪುಟ್ಗಳು | | `tests/helpers/`, `tests/fixtures/`, `tests/manual/` | ಬೆಂಬಲ | ಸಾಮಾನ್ಯ ಕಮಾಂಡ್ಗಳು: | ಕಮಾಂಡ್ | ಇದು ಚಲಾಯಿಸುವುದು | | -------------------------------------------------------- | ------------------------------------------------------------------------------ | | `npm run test:unit` | Node ಟೆಸ್ಟ್ ರನ್ನರ್ ಮೂಲಕ ಎಲ್ಲಾ `tests/unit/*.test.ts` ಪರೀಕ್ಷೆಗಳು (ಸಮಕಾಲಿಕತೆ 10) | | `npm run test:vitest` | Vitest ಸೂಟ್ (MCP, autoCombo, cache) | | `npm run test:e2e` | Playwright UI ಸೂಟ್ | | `npm run test:protocols:e2e` | MCP + A2A ಪ್ರೋಟೋಕಾಲ್ e2e | | `npm run test:coverage` | ಕವರೇಜ್ ಗೇಟ್ (≥60% ಸಾಲುಗಳು/ಸ್ಟೇಟ್ಮೆಂಟ್ಗಳು/ಫಂಕ್ಷನ್ಗಳು/ಬ್ರಾಂಚ್ಗಳು) | | `node --import tsx/esm --test tests/unit/.test.ts` | ಒಂದೇ ಫೈಲ್ನ ರನ್ | --- ## 8. `scripts/` ಉದ್ದೇಶದ ಆಧಾರದ ಮೇಲೆ 6 ಉಪಫೋಲ್ಡರ್ಗಳಾಗಿ ವ್ಯವಸ್ಥಿತಗೊಳಿಸಲಾಗಿದೆ. - **`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. ವಿನಂತಿ ಪೈಪ್ಲೈನ್ (ಸಾರಾಂಶ) ![ವಿನಂತಿ ಪೈಪ್ಲೈನ್ (/v1/chat/completions)](../diagrams/exported/request-pipeline.svg) > ಮೂಲ: [diagrams/request-pipeline.mmd](../diagrams/request-pipeline.mmd) ``` ಕ್ಲೈಂಟ್ ವಿನಂತಿ → /v1/chat/completions (route.ts) CORS ಪ್ರೀಫ್ಲೈಟ್ ಪರಿಶೀಲನೆ Zod ಮೌಲ್ಯಮಾಪನ (shared/validation/schemas.ts ನಲ್ಲಿನ chatCompletionsSchema) ದೃಢೀಕರಣ (extractApiKey + isValidApiKey ಅಥವಾ requireManagementAuth) ನೀತಿ ಎಂಜಿನ್ (src/server/authz/pipeline.ts) ಸುರಕ್ಷತಾ ನಿಯಂತ್ರಣಗಳು (PII ಮರೆಮಾಚುವಿಕೆ, ಪ್ರಾಂಪ್ಟ್ ಇಂಜೆಕ್ಷನ್, ವಿಷನ್ ಬ್ರಿಡ್ಜ್) → handleChatCore() (open-sse/handlers/chatCore.ts) ಕ್ಯಾಶ್ ಪರಿಶೀಲನೆ (ಸಿಮ್ಯಾಂಟಿಕ್ + ರೀಡ್ ಕ್ಯಾಶ್) ದರ ಮಿತಿ (rateLimitManager, accountSemaphore) ಸಂಯೋಜಿತ ರೂಟಿಂಗ್ (ಮಾದರಿಯು ಸಂಯೋಜನೆಗೆ ಪರಿಹಾರಗೊಂಡರೆ) comboResolver → ಪ್ರತಿ ಗುರಿಗೆ ಲೂಪ್ → handleSingleModel() translateRequest() (open-sse/translator/request/*) getExecutor(providerId).execute() (open-sse/executors/*) ಅಪ್ಸ್ಟ್ರೀಮ್ನಿಂದ ಪಡೆಯುವುದು → accountFallback ಮೂಲಕ ಮರುಪ್ರಯತ್ನ/ಬ್ಯಾಕ್ಆಫ್ translateResponse() (open-sse/translator/response/*) SSE ಸ್ಟ್ರೀಮ್ ಅಥವಾ JSON ಪ್ರತಿಕ್ರಿಯೆ Responses API ಆಗಿದ್ದರೆ: open-sse/transformer/responsesTransformer.ts ಮೂಲಕ TransformStream → ಅನುಸರಣೆ ಲೆಕ್ಕಪರಿಶೋಧನೆ (src/lib/compliance/) → ಕ್ಲೈಂಟ್ಗೆ ಪ್ರತಿಕ್ರಿಯೆ ``` ### ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವದ ರನ್ಟೈಮ್ ಸ್ಥಿತಿ (ಮೂರು ಕಾರ್ಯವಿಧಾನಗಳು) | ಕಾರ್ಯವಿಧಾನ | ವ್ಯಾಪ್ತಿ | ಎಲ್ಲಿ | | --------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | ಪೂರೈಕೆದಾರ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ | ಸಂಪೂರ್ಣ ಪೂರೈಕೆದಾರ | `src/shared/utils/circuitBreaker.ts`, `domain_circuit_breakers` ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ | | ಸಂಪರ್ಕ ಕೂಲ್ಡೌನ್ | ಒಂದು ಖಾತೆ/ಕೀ | `src/sse/services/auth.ts` ನಲ್ಲಿನ `markAccountUnavailable()`; `accountFallback.checkFallbackError()` ಮೂಲಕ ಬಳಸಲಾಗುತ್ತದೆ | | ಮಾದರಿ ಲಾಕ್ಔಟ್ | ಪೂರೈಕೆದಾರ + ಸಂಪರ್ಕ + ಮಾದರಿ | `open-sse/services/accountFallback.ts`, `domain_lockout_state` ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ | [RESILIENCE_GUIDE.md](./RESILIENCE_GUIDE.md) ಮತ್ತು [CLAUDE.md](../../CLAUDE.md) ನಲ್ಲಿರುವ ಮೀಸಲಾದ ವಿಭಾಗವನ್ನು ನೋಡಿ. --- ## 10. ಕೊಡುಗೆ ನೀಡುವುದು ಹೇಗೆ ### ಹೊಸ provider ಅನ್ನು ಸೇರಿಸಿ 1. `src/shared/constants/providers.ts` ನಲ್ಲಿ ನೋಂದಾಯಿಸಿ (ಲೋಡ್ ಆಗುವಾಗ Zod ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ). 2. ಕಸ್ಟಮ್ ತರ್ಕ ಅಗತ್ಯವಿದ್ದರೆ `open-sse/executors/` ನಲ್ಲಿ executor ಅನ್ನು ಸೇರಿಸಿ (`BaseExecutor` ಅನ್ನು ವಿಸ್ತರಿಸಿ). 3. ಅದು OpenAI ಸ್ವರೂಪವನ್ನು ಬಳಸದೇ ಇದ್ದರೆ `open-sse/translator/` ನಲ್ಲಿ translator ಅನ್ನು ಸೇರಿಸಿ. 4. OAuth-ಆಧಾರಿತವಾಗಿದ್ದರೆ, `src/lib/oauth/providers/` ಮತ್ತು `src/lib/oauth/services/` ಅಡಿಯಲ್ಲಿ config ಸೇರಿಸಿ. 5. `open-sse/config/providerRegistry.ts` ನಲ್ಲಿ (ಅಥವಾ `open-sse/config/` ಅಡಿಯಲ್ಲಿರುವ ಸ್ವರೂಪ-ನಿರ್ದಿಷ್ಟ registry ಯಲ್ಲಿ) models ಅನ್ನು ನೋಂದಾಯಿಸಿ. 6. `tests/unit/` ಅಡಿಯಲ್ಲಿ ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯಿರಿ. ### ಹೊಸ API route ಅನ್ನು ಸೇರಿಸಿ 1. `src/app/api/your-route/route.ts` ರಚಿಸಿ. 2. ಈ ಮಾದರಿಯನ್ನು ಅನುಸರಿಸಿ: CORS → Zod body ಮೌಲ್ಯೀಕರಣ → auth → handler ನಿಯೋಜನೆ. 3. ಹೊಸ request shape ಇದ್ದರೆ: `src/shared/validation/schemas.ts` ನಲ್ಲಿ Zod schema ಅನ್ನು ಸೇರಿಸಿ. 4. ನಿರ್ವಹಣೆಗೆ ಮಾತ್ರ ಸಂಬಂಧಿಸಿದ್ದರೆ: `src/shared/constants/publicApiRoutes.ts` ಗೆ path ಅನ್ನು ಸೇರಿಸಿ (ಸಾರ್ವಜನಿಕ API ಮೇಲ್ಮೈಗಾಗಿ denylist). 5. `tests/unit/` ಅಡಿಯಲ್ಲಿ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸಿ. 6. `docs/reference/API_REFERENCE.md` ಮತ್ತು `docs/openapi.yaml` ಅನ್ನು ನವೀಕರಿಸಿ. ### ಹೊಸ DB module ಅನ್ನು ಸೇರಿಸಿ 1. `src/lib/db/yourModule.ts` ರಚಿಸಿ ಮತ್ತು `./core.ts` ನಿಂದ `getDbInstance()` ಅನ್ನು import ಮಾಡಿ. 2. ನಿಮ್ಮ domain ಗಾಗಿ CRUD functions ಅನ್ನು export ಮಾಡಿ. 3. ಹೊಸ tables ಇದ್ದರೆ: `src/lib/db/migrations/` ಅಡಿಯಲ್ಲಿ migration ಅನ್ನು ಸೇರಿಸಿ; ಅದು ಅನುಕ್ರಮವಾಗಿ ಸಂಖ್ಯೆ ಹೊಂದಿರಬೇಕು, idempotent ಆಗಿರಬೇಕು ಮತ್ತು transactional ಆಗಿರಬೇಕು. 4. Importers ಗಳು `@/lib/db/yourModule` ನಿಂದ ನೇರ imports ಅನ್ನು ಬಳಸಬೇಕು (barrel ಬೇಡ — ಹಳೆಯ `localDb.ts` re-export layer ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ). 5. `tests/unit/` ಅಡಿಯಲ್ಲಿ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸಿ. ### ಹೊಸ MCP tool ಅನ್ನು ಸೇರಿಸಿ 1. `open-sse/mcp-server/tools/` ಅಡಿಯಲ್ಲಿ tool definition ಅನ್ನು ಸೇರಿಸಿ (ಅಥವಾ `open-sse/mcp-server/schemas/tools.ts` ಅನ್ನು ವಿಸ್ತರಿಸಿ). 2. `src/shared/constants/mcpScopes.ts` ನಲ್ಲಿ ಸೂಕ್ತ scope(ಗಳನ್ನು) ನಿಯೋಜಿಸಿ. 3. `open-sse/mcp-server/server.ts` ನಲ್ಲಿ tool ಅನ್ನು ನೋಂದಾಯಿಸಿ. 4. `open-sse/mcp-server/__tests__/` ಅಡಿಯಲ್ಲಿ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸಿ. 5. [MCP-SERVER.md](../frameworks/MCP-SERVER.md) ಅನ್ನು ನವೀಕರಿಸಿ. ### ಹೊಸ A2A skill ಅನ್ನು ಸೇರಿಸಿ [A2A-SERVER.md § ಹೊಸ Skill ಸೇರಿಸುವುದು](../frameworks/A2A-SERVER.md) ನೋಡಿ. Skills ಗಳು `src/lib/a2a/skills/` ನಲ್ಲಿ ಇರುತ್ತವೆ ಮತ್ತು A2A task manager ಮೂಲಕ ನೋಂದಾಯಿಸಲ್ಪಡುತ್ತವೆ. --- ## 11. ಸಂಪ್ರದಾಯಗಳು - **Code style**: 2-space indent, double quotes, 100 char width, semicolons, `es5` trailing commas — `lint-staged` ಮೂಲಕ Prettier ಇದನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. - **Imports**: external → internal (`@/`, `@omniroute/open-sse`) → relative. - **Naming**: files `camelCase` ಅಥವಾ `kebab-case`, components `PascalCase`, constants `UPPER_SNAKE`. - **ESLint**: ಎಲ್ಲೆಡೆ `no-eval`, `no-implied-eval`, `no-new-func` = `error`; `open-sse/` ಮತ್ತು `tests/` ನಲ್ಲಿ `no-explicit-any` = `warn`, ಇತರೆಡೆ error. - **TypeScript**: `strict: false` (legacy ನಿಲುವು). Cross-module boundaries ಗಾಗಿ inference ಗಿಂತ explicit types ಗೆ ಆದ್ಯತೆ ನೀಡಿ. - **Database**: routes ಅಥವಾ handlers ನಲ್ಲಿ raw SQL ಅನ್ನು ಎಂದಿಗೂ ಬರೆಯಬೇಡಿ — ಯಾವಾಗಲೂ `src/lib/db/` modules ಮೂಲಕವೇ ಕಾರ್ಯನಿರ್ವಹಿಸಿ. Barrel-import ಅನ್ನು ಎಂದಿಗೂ ಮಾಡಬೇಡಿ — ನಿರ್ದಿಷ್ಟ `src/lib/db/*` modules ಅನ್ನು ನೇರವಾಗಿ ಬಳಸಿ. - **DB-entity typing (#3512)**: DB table ನ row shape ಅನ್ನು ಬರೆಯುವ ಅಥವಾ ಓದುವ function, ಆ table ನ columns ಅನ್ನು 1:1 ಪ್ರತಿಬಿಂಬಿಸುವ ಹೆಸರಿಸಲಾದ TS interface ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕು/ಹಿಂತಿರುಗಿಸಬೇಕು; call site ನಲ್ಲಿ `any` ಅಥವಾ inline anonymous type ಅನ್ನು ಬಳಸಬಾರದು. Interface ಅನ್ನು function ನ ಪಕ್ಕದಲ್ಲೇ ಇರಿಸಿ (ಉದಾ. `saveRequestUsage` ಮೇಲಿನ `src/lib/usage/usageHistory.ts` ನಲ್ಲಿ `export interface UsageEntry`), ವಿಭಿನ್ನ writers ಗಳು row ಅನ್ನು ಹಂತ ಹಂತವಾಗಿ ತುಂಬುವಾಗ ಪ್ರತ್ಯೇಕ fields ಅನ್ನು optional/nullable ಆಗಿರಿಸಿ, ಮತ್ತು callers ಗಳಾದ್ಯಂತ shape ಬದಲಾಗುವ field ಗೆ `any` ಬದಲು `unknown` ಗೆ ಆದ್ಯತೆ ನೀಡಿ (field ಮೇಲೆ ಇದನ್ನು ದಾಖಲಿಸಿ, ಉದಾ. `UsageEntry.tokens` raw provider-shaped usage ಮತ್ತು normalized shape ಎರಡನ್ನೂ ಸ್ವೀಕರಿಸುತ್ತದೆ). ಈ ರೀತಿಯಲ್ಲಿ file ನ `any` count ಶೂನ್ಯಕ್ಕೆ ತಲುಪಿದ ನಂತರ, regression ಆಗದಂತೆ ಅದನ್ನು `check:any-budget:t11` allowlist ಗೆ (`scripts/check/check-t11-any-budget.mjs`, `maxAny: 0`) ಸೇರಿಸಿ. ಇದು first-slice ಸಂಪ್ರದಾಯವಾಗಿದೆ — ವಿಶಾಲವಾದ "anonymous `any` ಬೇಡ" cleanup ಅನ್ನು ಉಳಿದ codebase ನಾದ್ಯಂತ ಪುನರಾವರ್ತಿತವಾಗಿ ನಡೆಸಲಾಗುತ್ತದೆ. - **Errors**: ನಿರ್ದಿಷ್ಟ error types ಜೊತೆ try/catch ಬಳಸಿ, pino context ಜೊತೆ log ಮಾಡಿ. SSE streams ನಲ್ಲಿ errors ಅನ್ನು ಎಂದಿಗೂ ಮೌನವಾಗಿ ನಿರ್ಲಕ್ಷಿಸಬೇಡಿ; cleanup ಗಾಗಿ abort signals ಬಳಸಿ. - **Security**: `eval()` / `new Function()` / implied eval ಅನ್ನು ಎಂದಿಗೂ ಬಳಸಬೇಡಿ. ಎಲ್ಲಾ inputs ಅನ್ನು Zod ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಿ. ಸಂಗ್ರಹಿತ credentials ಅನ್ನು encrypt ಮಾಡಿ (AES-256-GCM). `src/shared/constants/upstreamHeaders.ts` denylist ಅನ್ನು sanitize/validation layer ಜೊತೆ ಹೊಂದಾಣಿಕೆಯಲ್ಲಿ ಇರಿಸಿ. - **Commits**: Conventional Commits — `feat(scope): subject`. ಅನುಮತಿಸಲಾದ scopes: `db`, `sse`, `oauth`, `dashboard`, `api`, `cli`, `docker`, `ci`, `mcp`, `a2a`, `memory`, `skills`. - **Branches**: prefixes `feat/`, `fix/`, `refactor/`, `docs/`, `test/`, `chore/`. `main` ಗೆ ಎಂದಿಗೂ ನೇರವಾಗಿ commit ಮಾಡಬೇಡಿ. - **Husky**: pre-commit ವೇಳೆ `lint-staged` + `check:docs-sync` + `check:any-budget:t11` ರನ್ ಆಗುತ್ತವೆ; pre-push ವೇಳೆ `check:any-budget:t11` + `check:tracked-artifacts` ರನ್ ಆಗುತ್ತವೆ (ವೇಗದ gates; `test:unit` ಅನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ). --- ## 12. ಕಠಿಣ ನಿಯಮಗಳು (CLAUDE.md ನಿಂದ) 1. ರಹಸ್ಯಗಳು ಅಥವಾ ರುಜುವಾತುಗಳನ್ನು ಎಂದಿಗೂ ಕಮಿಟ್ ಮಾಡಬೇಡಿ. 2. ಬ್ಯಾರೆಲ್-ಇಂಪೋರ್ಟ್ ಅನ್ನು ಎಂದಿಗೂ ಬಳಸಬೇಡಿ — ನಿರ್ದಿಷ್ಟ `src/lib/db/*` ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ನೇರವಾಗಿ ಬಳಸಿ. 3. `eval()` / `new Function()` / ಪರೋಕ್ಷ eval ಅನ್ನು ಎಂದಿಗೂ ಬಳಸಬೇಡಿ. 4. `main` ಗೆ ಎಂದಿಗೂ ನೇರವಾಗಿ ಕಮಿಟ್ ಮಾಡಬೇಡಿ. 5. ರೂಟ್ಗಳಲ್ಲಿ ಕಚ್ಚಾ SQL ಅನ್ನು ಎಂದಿಗೂ ಬರೆಯಬೇಡಿ — ಯಾವಾಗಲೂ `src/lib/db/` ಮಾಡ್ಯೂಲ್ಗಳ ಮೂಲಕವೇ ಬಳಸಿ. 6. SSE ಸ್ಟ್ರೀಮ್ಗಳಲ್ಲಿನ ದೋಷಗಳನ್ನು ಎಂದಿಗೂ ಮೌನವಾಗಿ ನಿರ್ಲಕ್ಷಿಸಬೇಡಿ. 7. ಇನ್ಪುಟ್ಗಳನ್ನು ಯಾವಾಗಲೂ Zod ಸ್ಕೀಮಾಗಳೊಂದಿಗೆ ಮೌಲ್ಯೀಕರಿಸಿ. 8. ಪ್ರೊಡಕ್ಷನ್ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸುವಾಗ ಯಾವಾಗಲೂ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸಿ. 9. ವ್ಯಾಪ್ತಿಯು (ಸ್ಟೇಟ್ಮೆಂಟ್ಗಳು, ಸಾಲುಗಳು, ಫಂಕ್ಷನ್ಗಳು, ಬ್ರಾಂಚ್ಗಳು) ≥ 60% ಆಗಿಯೇ ಉಳಿಯಬೇಕು. --- ## 13. ಇದನ್ನೂ ನೋಡಿ - [ARCHITECTURE.md](./ARCHITECTURE.md) — ಉನ್ನತ-ಮಟ್ಟದ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಮಾಡ್ಯೂಲ್ ಜವಾಬ್ದಾರಿಗಳು. - [API_REFERENCE.md](../reference/API_REFERENCE.md) — ಸಾರ್ವಜನಿಕ + ನಿರ್ವಹಣಾ API ಉಲ್ಲೇಖ. - [FEATURES.md](../guides/FEATURES.md) — ವೈಶಿಷ್ಟ್ಯ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮತ್ತು ಆವೃತ್ತಿಯ ಮುಖ್ಯಾಂಶಗಳು. - [RESILIENCE_GUIDE.md](./RESILIENCE_GUIDE.md) — ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್, ಕೂಲ್ಡೌನ್, ಲಾಕ್ಔಟ್ನ ಆಳವಾದ ವಿವರಣೆ. - [AUTO-COMBO.md](../routing/AUTO-COMBO.md) — Auto Combo ಸ್ಕೋರಿಂಗ್ ಮತ್ತು ಕಾರ್ಯತಂತ್ರಗಳು. - [MCP-SERVER.md](../frameworks/MCP-SERVER.md) — ಸಂಪೂರ್ಣ MCP ಪರಿಕರ ಕ್ಯಾಟಲಾಗ್ + ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ಗಳು. - [A2A-SERVER.md](../frameworks/A2A-SERVER.md) — A2A ಪ್ರೋಟೋಕಾಲ್ ಕೌಶಲ್ಯಗಳು ಮತ್ತು ಅನ್ವೇಷಣೆ. - [COMPRESSION_GUIDE.md](../compression/COMPRESSION_GUIDE.md) — RTK + Caveman ಕಂಪ್ರೆಷನ್. - [CLI-TOOLS.md](../reference/CLI-TOOLS.md) — CLI ಏಕೀಕರಣಗಳು. - [ELECTRON_GUIDE.md](../guides/ELECTRON_GUIDE.md) (ಲಭ್ಯವಿದ್ದರೆ), [DOCKER_GUIDE.md](../guides/DOCKER_GUIDE.md), [FLY_IO_DEPLOYMENT_GUIDE.md](../ops/FLY_IO_DEPLOYMENT_GUIDE.md), [VM_DEPLOYMENT_GUIDE.md](../ops/VM_DEPLOYMENT_GUIDE.md), [TERMUX_GUIDE.md](../guides/TERMUX_GUIDE.md), [PWA_GUIDE.md](../guides/PWA_GUIDE.md) — ನಿಯೋಜನಾ ಗುರಿಗಳು. - [TROUBLESHOOTING.md](../guides/TROUBLESHOOTING.md) — ಸಾಮಾನ್ಯ ಕಾರ್ಯಾಚರಣಾ ಸಮಸ್ಯೆಗಳು. - [CONTRIBUTING.md](../../CONTRIBUTING.md) — ಕೊಡುಗೆದಾರರ ಕಾರ್ಯಪ್ರವಾಹ. - [CLAUDE.md](../../CLAUDE.md) — Claude Code ಗಾಗಿ ರೆಪೊ ನಿಯಮಗಳು (ಮೇಲಿನ ಅನೇಕ ಸಂಪ್ರದಾಯಗಳಿಗೆ ಅಧಿಕೃತ ಮೂಲ). - [AGENTS.md](../../AGENTS.md) — ಏಜೆಂಟ್ಗಳು ಬಳಸುವ ಹೆಚ್ಚು ಆಳವಾದ ಆರ್ಕಿಟೆಕ್ಚರ್ ಉಲ್ಲೇಖ.