# 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) · 🇮🇳 [kn](../../../kn/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) · 🇲🇾 [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 सर्व्हर, A2A सर्व्हर, Skills, Memory, Cloud Agents, Resilience, > Compression इत्यादी) या `docs/` निर्देशिकेतील त्यांच्या समर्पित फाइल्स पहा. ही फाइल **आज रिपॉझिटरीमध्ये काय अस्तित्वात आहे** याचे वर्णन करते, जेणेकरून नवीन अभियंता ट्रीमध्ये मार्गक्रमण करू शकेल, रनटाइमचे स्तर समजू शकेल आणि नवीन मॉड्यूल्स तयार न करता कोड कुठे जोडायचा हे जाणून घेऊ शकेल. --- ## 1. तंत्रज्ञान संच | संबंधित बाब | निवड | | --------------- | -------------------------------------------------------------------------------------------------------------------------- | | वेब फ्रेमवर्क | **Next.js 16** (App Router, स्वतंत्र आउटपुट, कोणतेही जागतिक मिडलवेअर नाही) | | भाषा | **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** (सिंगलटन, WAL जर्नलिंग) | | डेस्कटॉप | **Electron 41** + `electron-builder` 26.10 (`electron/` येथे स्वतंत्र वर्कस्पेस) | | चाचण्या | **Node चे नेटिव्ह टेस्ट रनर** (युनिट/इंटिग्रेशन), **Vitest** (MCP, autoCombo, cache), **Playwright** (e2e + protocols-e2e) | | बिल्ड | `scripts/build/build-next-isolated.mjs` द्वारे Next.js स्वतंत्र बिल्ड | | लिंट/स्वरूपन | ESLint फ्लॅट कॉन्फिग + Prettier (Husky प्री-कमिटद्वारे `lint-staged`) | | मॉड्यूल प्रणाली | सर्वत्र ESM (`"type": "module"`) | | वर्कस्पेसेस | npm वर्कस्पेस — `open-sse` हे एकमेव उप-वर्कस्पेस आहे | पाथ उपनावे (`tsconfig.json`): - `@/*` → `src/*` - `@omniroute/open-sse` → `open-sse/index.ts` - `@omniroute/open-sse/*` → `open-sse/*` डीफॉल्ट HTTP पोर्ट: **`20128`** (API आणि डॅशबोर्ड समान प्रक्रिया सामायिक करतात). डेटा निर्देशिका `DATA_DIR` पर्यावरण चलाद्वारे ठरते; तिचे डीफॉल्ट मूल्य `~/.omniroute/` आहे. --- ## 2. रिपॉझिटरीची रचना ``` OmniRoute/ ├── src/ Next.js अनुप्रयोग (App Router, लायब्ररी, डोमेन, सर्व्हर, सामायिक घटक) ├── open-sse/ स्ट्रीमिंग इंजिन वर्कस्पेस (@omniroute/open-sse) ├── electron/ डेस्कटॉप रॅपर (Electron 41 मुख्य प्रक्रिया + प्रीलोड) ├── bin/ CLI प्रवेशबिंदू (omniroute, reset-password) ├── tests/ युनिट, इंटिग्रेशन, e2e, protocols-e2e, भाषांतरक, सुरक्षा, फिक्स्चर्स ├── scripts/ बिल्ड, सिंक, तपासणी, स्थलांतर आणि रनटाइम सहाय्यक स्क्रिप्ट्स ├── docs/ सार्वजनिक दस्तऐवजीकरण (ही निर्देशिका) ├── public/ स्थिर मालमत्ता, PWA मॅनिफेस्ट, सर्व्हिस वर्कर ├── config/ रनटाइम कॉन्फिग नमुने ├── images/ विपणन/स्क्रीनशॉट मालमत्ता ├── _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, प्रमाणीकरण, OAuth, कौशल्ये, मेमरी, …) ├── domain/ शुद्ध डोमेन स्तर (धोरण, फॉलबॅक, खर्च, लॉकआउट, …) ├── server/ केवळ-सर्व्हर मॉड्यूल्स (authz, cors, प्रमाणीकरण) ├── shared/ प्रकार, स्थिरांक, प्रमाणीकरण, करार, उपयुक्तता (सीमांपलीकडे सुरक्षित) ├── mitm/ CLI एकत्रीकरणासाठी मॅन-इन-द-मिडल प्रॉक्सी सहाय्यके ├── models/ स्थानिक मॉडेल मेटाडेटा / उपनामे ├── sse/ अजूनही src/ अंतर्गत असलेले जुने SSE हँडलर्स (open-sse/ मध्ये नाहीत) ├── store/ क्लायंट-साइड स्थिती स्टोअर्स ├── middleware/ मार्ग-स्तरीय मिडलवेअर उपयुक्तता (Next.js ग्लोबल मिडलवेअर नाही) ├── scripts/ अनुप्रयोग कोडद्वारे आयात करता येणाऱ्या इन-ट्री स्क्रिप्ट्स ├── types/ अॅम्बियंट आणि सामायिक TS प्रकार ├── i18n/ लोकेल बंडल्स ├── instrumentation.ts Next.js इन्स्ट्रुमेंटेशन हुक ├── instrumentation-node.ts └── proxy.ts शीर्ष-स्तरीय प्रॉक्सी बूटस्ट्रॅप सहाय्यक ``` ### 3.1 `src/app/` — App Router App Router डॅशबोर्ड UI आणि सार्वजनिक/व्यवस्थापन HTTP API हे दोन्ही उपलब्ध करून देतो. येथे **कोणतेही ग्लोबल मिडलवेअर नाही** — इंटरसेप्शन प्रत्येक मार्गासाठी स्वतंत्रपणे केले जाते. `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/` | पर्यावरण लोडिंग + आत्मनिरीक्षण | | `evals/` | मूल्यमापन रनटाइम | | `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/` | एजंट कौशल्य कॅटलॉग + जनरेटर: `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` (क्लाउड समक्रमण) | | `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` barrel काढून टाकला आहे — वापरकर्ते विशिष्ट `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/` Singleton SQLite डेटाबेस (`core.ts` मधील `getDbInstance()`, WAL जर्नलिंग). **routes किंवा handlers मध्ये कधीही थेट 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` फाइल्स (idempotent, transactional) आहेत आणि त्या बूटच्या वेळी `migrationRunner.ts` द्वारे कार्यान्वित केल्या जातात. migrations मध्ये तयार केलेले तक्ते (एकूण 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 नाही. routes आणि handlers द्वारे आयात केला जातो. | फाइल | उद्देश | | ------------------------------------------ | -------------------------------------------------------- | | `policyEngine.ts` | उच्च-स्तरीय धोरण resolver | | `fallbackPolicy.ts` | Fallback निर्णय-वृक्ष | | `costRules.ts` | खर्च-गणनेचे नियम | | `lockoutPolicy.ts` | मॉडेल lockout निर्णय | | `tagRouter.ts` | Tag-आधारित routing | | `comboResolver.ts` | विनंती → लक्ष्य सूचीमधून combo resolution | | `connectionModelRules.ts` | प्रत्येक connection साठी मॉडेल filters | | `modelAvailability.ts` | मॉडेल उपलब्धता तपासणी | | `degradation.ts` | Degraded-mode स्थित्यंतरे | | `providerExpiration.ts` | कालबाह्य account/key शोध | | `quotaCache.ts` | Cache केलेले quota निर्णय | | `responses.ts`, `omnirouteResponseMeta.ts` | प्रतिसादाच्या स्वरूपासाठी सहाय्यक | | `configAudit.ts` | Config बदलांचे audit | | `assessment/` | मॉडेल assessment (प्रत्येक RFC नुसार, अंशतः कार्यान्वित) | | `types.ts` | सामायिक डोमेन types | ### 3.4 `src/server/` — केवळ सर्व्हरसाठी Client components मधून आयात करता येत नाही. ``` server/ ├── auth/loginGuard.ts ├── authz/ │ ├── classify.ts Routes चे public किंवा management म्हणून वर्गीकरण करते │ ├── assertAuth.ts Assertion सहाय्यक │ ├── context.ts प्रत्येक विनंतीसाठी authz context │ ├── headers.ts │ ├── pipeline.ts Authz pipeline │ ├── policies/ ठोस धोरणे │ └── types.ts └── cors/origins.ts CORS origin अनुमती-सूची ``` ### 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/ 156 प्रोव्हायडर एक्झिक्युटर मॉड्यूल्स (एक्झिक्युटर क्लासेस + प्रत्येक प्रोव्हायडरसाठी हेल्पर्स) ├── 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/` 156 उच्च-स्तरीय एक्झिक्युटर मॉड्यूल्स (`*.ts` मधून `base.ts`, `index.ts` आणि चाचण्या वगळून — ही संख्या `npm run check:docs-counts` मोजते). प्रत्येक एक्झिक्युटर क्लास `BaseExecutor` (`base.ts`) एक्स्टेंड करतो, थेट किंवा `DefaultExecutor` अथवा दुसऱ्या एक्झिक्युटरद्वारे; उर्वरित मॉड्यूल्स प्रत्येक प्रोव्हायडरसाठीचे हेल्पर्स आहेत (टूल स्कीमा, फेच/TTS अडॅप्टर्स, वैशिष्ट्यपूर्ण वर्तन हाताळणारे हँडलर्स). एक्झिक्युटर्समध्ये पुढील समाविष्ट आहेत: `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` सेवा पुरवतो. संपूर्ण प्रोव्हायडर कॅटलॉग (375 प्रोव्हायडर्स) > `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` (20 धोरणे), `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`. स्वयंचलित अपडेट `electron-updater` द्वारे GitHub रिलीज फीडकडे निर्देशित केले जाते. --- ## 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`, तसेच केवळ-वाचनयोग्य PR देखरेख सहाय्यके `ci-discriminate.sh` (संदर्भ PR किंवा base-red समस्येशी तुलना करून PR च्या अयशस्वी तपासणी स्वाक्षऱ्यांचे स्वतःच्या / वारशाने आलेल्या / अज्ञात अशा प्रकारांत वर्गीकरण करते) आणि `audit-worktree.sh` (अस्वच्छ फाइल्स, संरक्षित पृष्ठभाग, काढून टाकलेली asserts, suppression संख्या, शिल्लक tmp tsconfigs, PR head विरुद्ध स्थानिक HEAD — कार्यकर्त्याचा PR स्वीकारण्यापूर्वी). - **`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. योगदान कसे द्यावे ### नवीन प्रदाता जोडा 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/` अंतर्गत कॉन्फिगरेशन जोडा. 5. `open-sse/config/providerRegistry.ts` मध्ये (किंवा `open-sse/config/` अंतर्गत स्वरूप-विशिष्ट registry मध्ये) मॉडेल्सची नोंदणी करा. 6. `tests/unit/` अंतर्गत चाचण्या लिहा. ### नवीन API मार्ग जोडा 1. `src/app/api/your-route/route.ts` तयार करा. 2. या पॅटर्नचे अनुसरण करा: CORS → Zod body प्रमाणीकरण → प्रमाणीकरण → handler कडे सोपवणे. 3. नवीन विनंती संरचना असल्यास: `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 मॉड्यूल जोडा 1. `src/lib/db/yourModule.ts` तयार करा आणि `./core.ts` मधून `getDbInstance()` आयात करा. 2. तुमच्या domain साठी CRUD functions export करा. 3. नवीन tables असल्यास: `src/lib/db/migrations/` अंतर्गत क्रमवार क्रमांकित, idempotent आणि transactional migration जोडा. 4. आयातकर्ते `@/lib/db/yourModule` मधून थेट imports वापरतात (barrel नाही — जुना `localDb.ts` re-export स्तर काढून टाकला आहे). 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(s) नियुक्त करा. 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. संकेतपद्धती - **कोड शैली**: 2-space indent, double quotes, 100 char width, semicolons, `es5` trailing commas — `lint-staged` द्वारे Prettier वापरून लागू केली जाते. - **Imports**: external → internal (`@/`, `@omniroute/open-sse`) → relative. - **नामकरण**: files `camelCase` किंवा `kebab-case`, components `PascalCase`, constants `UPPER_SNAKE`. - **ESLint**: `no-eval`, `no-implied-eval`, `no-new-func` = सर्वत्र `error`; `no-explicit-any` = `open-sse/` आणि `tests/` मध्ये `warn`, इतरत्र error. - **TypeScript**: `strict: false` (वारसागत भूमिका). Cross-module सीमांसाठी inference ऐवजी स्पष्ट 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, call site वर `any` किंवा inline anonymous type न वापरता, त्या table च्या columns चे 1:1 प्रतिबिंब असलेले नामित TS interface स्वीकारावे/परत करावे. 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` ची संख्या शून्यावर पोहोचल्यावर, regression टाळण्यासाठी ते `check:any-budget:t11` allowlist मध्ये (`scripts/check/check-t11-any-budget.mjs`, `maxAny: 0`) जोडा. ही first-slice संकेतपद्धती आहे — व्यापक "anonymous `any` नाही" cleanup उर्वरित codebase मध्ये पुनरावृत्तीने केले जाते. - **त्रुटी**: विशिष्ट error types सह try/catch वापरा, pino context सह log करा. SSE streams मधील errors कधीही शांतपणे गिळू नका; cleanup साठी abort signals वापरा. - **सुरक्षा**: `eval()` / `new Function()` / implied eval कधीही वापरू नका. सर्व inputs चे Zod वापरून प्रमाणीकरण करा. संग्रहित credentials encrypt करा (AES-256-GCM). `src/shared/constants/upstreamHeaders.ts` denylist हे sanitize/validation स्तराशी सुसंगत ठेवा. - **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) — एजंट्सद्वारे वापरला जाणारा अधिक सखोल आर्किटेक्चर संदर्भ.