1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors. ⚠️ base-red inherited: #12732
99 KiB
OmniRoute Codebase Documentation (मराठी)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
आवृत्ती: v3.8.51 अंतिम अद्यतन: 2026-06-28 वाचकवर्ग: OmniRoute मध्ये योगदान देणारे किंवा त्यावर आधारित एकत्रीकरणे तयार करणारे अभियंते.
उच्च-स्तरीय आर्किटेक्चर आकृत्या आणि प्रत्येक उपप्रणालीमागील तर्क जाणून घेण्यासाठी 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 पहा. |
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.tsbarrel काढून टाकला आहे — वापरकर्ते विशिष्टsrc/lib/db/*मॉड्यूल्स थेट आयात करतात. proxyHealth.ts,proxyLogger.ts,tokenHealthCheck.ts,localHealthCheck.tsapiBridgeServer.ts,cacheLayer.ts,semanticCache.ts,settingsCache.tscloudSync.ts,initCloudSync.tscloudflaredTunnel.ts,ngrokTunnel.ts,tailscaleTunnel.tsconsoleInterceptor.ts,container.ts,gracefulShutdown.ts,idempotencyLayer.tsipUtils.ts,logEnv.ts,logPayloads.ts,logRotation.tsmodelAliasSeed.ts,modelCapabilities.ts,modelMetadataRegistry.ts,modelsDevSync.tspiiSanitizer.ts,pricingSync.tsapiKeyExposure.ts,cacheControlSettings.ts,dataPaths.ts,toolPolicy.tstranslatorEvents.ts,usageDb.ts,usageAnalytics.ts,webhookDispatcher.ts
3.2.1 src/lib/db/
Singleton SQLite डेटाबेस (core.ts मधील getDbInstance(), WAL जर्नलिंग).
routes किंवा handlers मध्ये कधीही थेट SQL लिहू नका — या मॉड्यूल्सद्वारे वापर करा.
डोमेन मॉड्यूल्स (प्रत्येक मॉड्यूलकडे एक किंवा अधिक तक्त्यांची मालकी आहे): 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/ 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, emergencyFallback.ts, rateLimitManager.ts, rateLimitSemaphore.ts, accountSemaphore.ts, accountSelector.ts |
| कोटा | quotaMonitor.ts, quotaPreflight.ts, bailianQuotaFetcher.ts, codexQuotaFetcher.ts, deepseekQuotaFetcher.ts, openrouterQuotaFetcher.ts, openrouterFreeWindow.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 पहा.
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.mjsomniroute-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/<file>.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 (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 आणि CLAUDE.md मधील समर्पित विभाग पहा.
10. योगदान कसे द्यावे
नवीन प्रदाता जोडा
src/shared/constants/providers.tsमध्ये नोंदणी करा (लोड करताना Zod-द्वारे प्रमाणीकरण केले जाते).- सानुकूल तर्क आवश्यक असल्यास
open-sse/executors/मध्ये एक executor जोडा (BaseExecutorविस्तारित करा). - प्रदाता OpenAI स्वरूप वापरत नसल्यास
open-sse/translator/मध्ये एक translator जोडा. - OAuth-आधारित असल्यास,
src/lib/oauth/providers/आणिsrc/lib/oauth/services/अंतर्गत कॉन्फिगरेशन जोडा. open-sse/config/providerRegistry.tsमध्ये (किंवाopen-sse/config/अंतर्गत स्वरूप-विशिष्ट registry मध्ये) मॉडेल्सची नोंदणी करा.tests/unit/अंतर्गत चाचण्या लिहा.
नवीन API मार्ग जोडा
src/app/api/your-route/route.tsतयार करा.- या पॅटर्नचे अनुसरण करा: CORS → Zod body प्रमाणीकरण → प्रमाणीकरण → handler कडे सोपवणे.
- नवीन विनंती संरचना असल्यास:
src/shared/validation/schemas.tsमध्ये Zod schema जोडा. - केवळ व्यवस्थापनासाठी असल्यास:
src/shared/constants/publicApiRoutes.tsमध्ये path जोडा (सार्वजनिक API पृष्ठभागासाठी denylist). tests/unit/अंतर्गत चाचण्या जोडा.docs/reference/API_REFERENCE.mdआणिdocs/openapi.yamlअद्ययावत करा.
नवीन DB मॉड्यूल जोडा
src/lib/db/yourModule.tsतयार करा आणि./core.tsमधूनgetDbInstance()आयात करा.- तुमच्या domain साठी CRUD functions export करा.
- नवीन tables असल्यास:
src/lib/db/migrations/अंतर्गत क्रमवार क्रमांकित, idempotent आणि transactional migration जोडा. - आयातकर्ते
@/lib/db/yourModuleमधून थेट imports वापरतात (barrel नाही — जुनाlocalDb.tsre-export स्तर काढून टाकला आहे). tests/unit/अंतर्गत चाचण्या जोडा.
नवीन MCP tool जोडा
open-sse/mcp-server/tools/अंतर्गत tool definition जोडा (किंवाopen-sse/mcp-server/schemas/tools.tsविस्तारित करा).src/shared/constants/mcpScopes.tsमध्ये योग्य scope(s) नियुक्त करा.open-sse/mcp-server/server.tsमध्ये tool ची नोंदणी करा.open-sse/mcp-server/__tests__/अंतर्गत चाचण्या जोडा.- MCP-SERVER.md अद्ययावत करा.
नवीन A2A skill जोडा
A2A-SERVER.md § नवीन Skill जोडणे पहा. Skills
src/lib/a2a/skills/ मध्ये असतात आणि A2A task manager द्वारे नोंदणीकृत केले जातात.
11. संकेतपद्धती
- कोड शैली: 2-space indent, double quotes, 100 char width, semicolons,
es5trailing commas —lint-stagedद्वारे Prettier वापरून लागू केली जाते. - Imports: external → internal (
@/,@omniroute/open-sse) → relative. - नामकरण: files
camelCaseकिंवाkebab-case, componentsPascalCase, constantsUPPER_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.tokensraw provider-shaped usage आणि normalized shape हे दोन्ही स्वीकारते). अशा प्रकारे file मधीलanyची संख्या शून्यावर पोहोचल्यावर, regression टाळण्यासाठी तेcheck:any-budget:t11allowlist मध्ये (scripts/check/check-t11-any-budget.mjs,maxAny: 0) जोडा. ही first-slice संकेतपद्धती आहे — व्यापक "anonymousanyनाही" 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.tsdenylist हे 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 मधून)
- गुपिते किंवा क्रेडेन्शियल्स कधीही कमिट करू नका.
- बॅरल इम्पोर्ट कधीही करू नका — विशिष्ट
src/lib/db/*मॉड्यूल्स थेट वापरा. eval()/new Function()/ अप्रत्यक्ष eval कधीही वापरू नका.- थेट
mainवर कधीही कमिट करू नका. - रूट्समध्ये कधीही रॉ SQL लिहू नका — नेहमी
src/lib/db/मॉड्यूल्समधूनच वापरा. - SSE स्ट्रीम्समधील त्रुटी कधीही कोणतीही सूचना न देता दुर्लक्षित करू नका.
- इनपुट्स नेहमी Zod स्कीमाद्वारे सत्यापित करा.
- प्रॉडक्शन कोड बदलताना नेहमी चाचण्यांचा समावेश करा.
- कव्हरेज ≥ 60% (स्टेटमेंट्स, लाइन्स, फंक्शन्स, ब्रँचेस) राहिले पाहिजे.
13. हे देखील पहा
- ARCHITECTURE.md — उच्च-स्तरीय आर्किटेक्चर आणि मॉड्यूलच्या जबाबदाऱ्या.
- API_REFERENCE.md — सार्वजनिक + व्यवस्थापन API संदर्भ.
- FEATURES.md — वैशिष्ट्य मॅट्रिक्स आणि आवृत्तीतील ठळक बाबी.
- RESILIENCE_GUIDE.md — सर्किट ब्रेकर, कूलडाउन आणि लॉकआउटचा सखोल आढावा.
- AUTO-COMBO.md — Auto Combo स्कोअरिंग आणि धोरणे.
- MCP-SERVER.md — संपूर्ण MCP टूल कॅटलॉग + ट्रान्सपोर्ट्स.
- A2A-SERVER.md — A2A प्रोटोकॉल कौशल्ये आणि डिस्कव्हरी.
- COMPRESSION_GUIDE.md — RTK + Caveman कॉम्प्रेशन.
- CLI-TOOLS.md — CLI इंटिग्रेशन्स.
- ELECTRON_GUIDE.md (उपलब्ध असल्यास), DOCKER_GUIDE.md, FLY_IO_DEPLOYMENT_GUIDE.md, VM_DEPLOYMENT_GUIDE.md, TERMUX_GUIDE.md, PWA_GUIDE.md — डिप्लॉयमेंट लक्ष्ये.
- TROUBLESHOOTING.md — सामान्य ऑपरेशनल समस्या.
- CONTRIBUTING.md — योगदानकर्त्यांची कार्यप्रणाली.
- CLAUDE.md — Claude Code साठी रेपोचे नियम (वरील अनेक संकेतपद्धतींसाठी सत्याचा अधिकृत स्रोत).
- AGENTS.md — एजंट्सद्वारे वापरला जाणारा अधिक सखोल आर्किटेक्चर संदर्भ.