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
98 KiB
OmniRoute Codebase Documentation (ગુજરાતી)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
વર્ઝન: v3.8.51 છેલ્લે અપડેટ કરેલું: 2026-06-28 વાચકવર્ગ: OmniRouteમાં યોગદાન આપતા અથવા તેના પર ઇન્ટિગ્રેશન્સ બનાવતા એન્જિનિયરો.
ઉચ્ચ-સ્તરીય આર્કિટેક્ચર ડાયાગ્રામ્સ અને દરેક સબસિસ્ટમ પાછળના તર્ક માટે, ARCHITECTURE.md વાંચો. વ્યક્તિગત સબસિસ્ટમ્સ વિશે ઊંડાણપૂર્વક જાણવા માટે (Auto Combo, MCP server, A2A server, Skills, Memory, Cloud Agents, Resilience, Compression વગેરે) આ
docs/ડિરેક્ટરીમાં તેમની સમર્પિત ફાઇલો જુઓ.
આ ફાઇલ આજે રિપોઝિટરીમાં શું ઉપલબ્ધ છે તેનું વર્ણન કરે છે, જેથી નવો એન્જિનિયર ટ્રીમાં સરળતાથી નેવિગેટ કરી શકે, રનટાઇમ લેયરિંગ સમજી શકે અને નવા મોડ્યુલ્સ બનાવ્યા વિના ક્યાં કોડ ઉમેરવો તે જાણી શકે.
1. ટેક સ્ટૅક
| બાબત | પસંદગી |
|---|---|
| વેબ ફ્રેમવર્ક | Next.js 16 (App Router, standalone આઉટપુટ, કોઈ ગ્લોબલ 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 (unit/integration), 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 એકમાત્ર sub-workspace છે |
પાથ એલિયાસિસ (tsconfig.json):
@/*→src/*@omniroute/open-sse→open-sse/index.ts@omniroute/open-sse/*→open-sse/*
ડિફૉલ્ટ HTTP પોર્ટ: 20128 (API અને dashboard એક જ પ્રોસેસનો ઉપયોગ કરે છે). ડેટા
ડિરેક્ટરી DATA_DIR env var છે, જેનું ડિફૉલ્ટ મૂલ્ય ~/.omniroute/ છે.
2. રિપોઝિટરી લેઆઉટ
OmniRoute/
├── src/ Next.js એપ્લિકેશન (App Router, libs, domain, server, shared)
├── open-sse/ સ્ટ્રીમિંગ એન્જિન workspace (@omniroute/open-sse)
├── electron/ ડેસ્કટૉપ wrapper (Electron 41 main + preload)
├── bin/ CLI entry points (omniroute, reset-password)
├── tests/ Unit, integration, e2e, protocols-e2e, translator, security, fixtures
├── scripts/ બિલ્ડ, sync, check, migration અને runtime helper scripts
├── docs/ જાહેર દસ્તાવેજીકરણ (આ ડિરેક્ટરી)
├── public/ Static assets, PWA manifest, service worker
├── config/ Runtime config samples
├── images/ માર્કેટિંગ/સ્ક્રીનશૉટ assets
├── _ideia/, _references/, _mono_repo/, _tasks/ આંતરિક scratch / planning (શિપ કરવામાં આવતું નથી)
├── CLAUDE.md Claude Code માટેના રિપોઝિટરી નિયમો
├── AGENTS.md agents માટેનો વધુ ઊંડો આર્કિટેક્ચર સંદર્ભ
├── package.json v3.8.51, workspace root
└── tsconfig.json પાથ એલિયાસિસ + મુખ્ય compiler options
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/ લેગસી SSE હેન્ડલર્સ, જે હજુ પણ src/ હેઠળ રહે છે (open-sse/ હેઠળ નહીં)
├── store/ ક્લાયન્ટ-સાઇડ સ્ટેટ સ્ટોર્સ
├── middleware/ રૂટ-સ્તરની middleware ઉપયોગિતાઓ (Next.js ગ્લોબલ middleware નહીં)
├── scripts/ એપ્લિકેશન કોડ દ્વારા ઇમ્પોર્ટ કરી શકાય તેવી ઇન-ટ્રી સ્ક્રિપ્ટ્સ
├── types/ ઍમ્બિયન્ટ અને શેર કરેલા TS પ્રકારો
├── i18n/ લોકેલ બંડલ્સ
├── instrumentation.ts Next.js instrumentation હૂક
├── 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/ |
એજન્ટ-કંટ્રોલ-પ્રોટોકોલ: 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.tsબેરલ દૂર કરવામાં આવ્યું છે — ઉપભોક્તાઓ ચોક્કસ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/
સિંગલટન SQLite ડેટાબેઝ (core.ts માં getDbInstance(), WAL જર્નલિંગ).
રૂટ્સ અથવા હેન્ડલર્સમાં ક્યારેય કાચી 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 ફાઇલો (આઇડેમ્પોટન્ટ, ટ્રાન્ઝેક્શનલ) છે અને
બૂટ સમયે 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, 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/
- 110 અનન્ય ટૂલ્સ
server.tsમાં વાયર કરેલ છે (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/*)
અપસ્ટ્રીમ fetch → 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. યોગદાન કેવી રીતે આપવું
નવો provider ઉમેરો
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/હેઠળ config ઉમેરો. open-sse/config/providerRegistry.tsમાં models નોંધાવો (અથવાopen-sse/config/હેઠળની ફોર્મેટ-વિશિષ્ટ registry માં).tests/unit/હેઠળ tests લખો.
નવો API route ઉમેરો
src/app/api/your-route/route.tsબનાવો.- આ પેટર્ન અનુસરો: CORS → Zod body validation → auth → handler delegation.
- જો request નું માળખું નવું હોય:
src/shared/validation/schemas.tsમાં Zod schema ઉમેરો. - જો તે માત્ર management માટે હોય: path ને
src/shared/constants/publicApiRoutes.tsમાં ઉમેરો (public API સપાટી માટેની denylist). tests/unit/હેઠળ tests ઉમેરો.docs/reference/API_REFERENCE.mdઅનેdocs/openapi.yamlઅપડેટ કરો.
નવું DB module ઉમેરો
src/lib/db/yourModule.tsબનાવો અને./core.tsમાંથીgetDbInstance()import કરો.- તમારા domain માટે CRUD functions export કરો.
- જો નવા tables હોય:
src/lib/db/migrations/હેઠળ ક્રમિક ક્રમાંકવાળું, idempotent અને transactional migration ઉમેરો. - Importers
@/lib/db/yourModuleમાંથી સીધા imports નો ઉપયોગ કરે છે (કોઈ barrel નહીં — જૂનુંlocalDb.tsre-export સ્તર દૂર કરવામાં આવ્યું હતું). tests/unit/હેઠળ tests ઉમેરો.
નવું 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__/હેઠળ tests ઉમેરો.- MCP-SERVER.md અપડેટ કરો.
નવી A2A skill ઉમેરો
A2A-SERVER.md § નવી Skill ઉમેરવી જુઓ. Skills
src/lib/a2a/skills/ માં રહે છે અને A2A task manager મારફતે નોંધાય છે.
11. પરંપરાઓ
- Code style: 2-space indent, double quotes, 100 char width, semicolons,
es5trailing commas —lint-stagedમારફતે Prettier દ્વારા અમલમાં મૂકાય છે. - Imports: external → internal (
@/,@omniroute/open-sse) → relative. - Naming: 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(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 પ્રતિબિંબિત કરતું named 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 પ્રમાણે જે field નું shape બદલાય તેના માટેanyકરતાંunknownને પ્રાધાન્ય આપો (field પર તેનું documentation આપો, દા.ત.UsageEntry.tokensraw provider-shaped usage અને normalized shape બંને સ્વીકારે છે). આ રીતે કોઈ file નોanycount શૂન્ય થાય પછી, તેનેcheck:any-budget:t11allowlist (scripts/check/check-t11-any-budget.mjs,maxAny: 0) માં ઉમેરો જેથી તેમાં regression ન થઈ શકે. આ first-slice convention છે — વ્યાપક "કોઈ anonymousanyનહીં" cleanup બાકીના codebase માં પુનરાવર્તિત રીતે કરવામાં આવે છે. - Errors: નિર્દિષ્ટ error types સાથે try/catch નો ઉપયોગ કરો, pino context સાથે log કરો. SSE streams માં errors ને ક્યારેય મૌનપણે અવગણશો નહીં; cleanup માટે abort signals નો ઉપયોગ કરો.
- Security: ક્યારેય
eval()/new Function()/ implied eval નો ઉપયોગ કરશો નહીં. બધા inputs ને Zod વડે validate કરો. સંગ્રહિત credentials ને encrypt કરો (AES-256-GCM).src/shared/constants/upstreamHeaders.tsdenylist ને 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માંથી)
- રહસ્યો અથવા ઓળખપત્રો ક્યારેય કમિટ ન કરો.
- ક્યારેય બેરલ-ઇમ્પોર્ટ ન કરો — ચોક્કસ
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 — એજન્ટો દ્વારા ઉપયોગમાં લેવાતો વધુ ઊંડો આર્કિટેક્ચર સંદર્ભ.