Batch 1 of the locale expansion: Greek, Croatian, Serbian, Lithuanian, Estonian, Latvian, Slovenian, Maltese and Irish across the dashboard catalog, docs mirrors, CLI catalog, README, locale index and the site. 42 → 51 locales. Also fixes the ICU literal escape the translation backend dropped around angle placeholders, four translations that invented or renamed a placeholder, the language bars that linked to mirrors that do not exist, and the migration count drift (171 → 172). ⚠️ base-red inherited: #12732 — the four unit shards and Fast Quality Gates fail identically on unrelated PRs cut from the same base.
78 KiB
CODEBASE_DOCUMENTATION (Latviešu)
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇱🇹 lt · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW
title: "OmniRoute koda bāzes dokumentācija" version: 3.8.40 lastUpdated: 2026-06-28
OmniRoute koda bāzes dokumentācija
Versija: v3.8.51 Pēdējoreiz atjaunināts: 2026-06-28 Mērķauditorija: Inženieri, kas sniedz ieguldījumu OmniRoute izstrādē vai veido uz tā balstītas integrācijas.
Augsta līmeņa arhitektūras diagrammas un katras apakšsistēmas pamatojumu skatiet ARCHITECTURE.md. Lai padziļināti izpētītu atsevišķas apakšsistēmas (Auto Combo, MCP serveri, A2A serveri, Skills, Memory, Cloud Agents, Resilience, Compression u. c.), skatiet to īpašos failus šajā
docs/direktorijā.
Šajā failā aprakstīts tas, kas pašlaik atrodas repozitorijā, lai jauns inženieris varētu orientēties koka struktūrā, izprast izpildlaika slāņojumu un zināt, kur pievienot kodu, neizgudrojot jaunus moduļus.
1. Tehnoloģiju steks
| Joma | Izvēle |
|---|---|
| Tīmekļa ietvars | Next.js 16 (App Router, standalone izvade, bez globālas starpprogrammatūras) |
| Valoda | TypeScript 6.0+ — mērķis ES2022, module: esnext, moduleResolution: bundler, strict: false |
| Izpildlaiks | Node.js >=22.22.2 <23 vai >=24.0.0 <27 (tiek nodrošināts, izmantojot engines + SUPPORTED_NODE_RANGE) |
| Datu bāze | SQLite, izmantojot better-sqlite3 (singleton, WAL žurnalēšana) |
| Darbvirsma | Electron 41 + electron-builder 26.10 (atsevišķa darbvieta electron/) |
| Testi | Node native test runner (vienību/integrācijas), Vitest (MCP, autoCombo, cache), Playwright (e2e + protocols-e2e) |
| Būvēšana | Next.js standalone, izmantojot scripts/build/build-next-isolated.mjs |
| Lintēšana/formatēšana | ESLint flat config + Prettier (lint-staged, izmantojot Husky pre-commit) |
| Moduļu sistēma | ESM visur ("type": "module") |
| Darbvietas | npm workspace — open-sse ir vienīgā apakšdarbvieta |
Ceļu aizstājvārdi (tsconfig.json):
@/*→src/*@omniroute/open-sse→open-sse/index.ts@omniroute/open-sse/*→open-sse/*
Noklusējuma HTTP ports: 20128 (API un informācijas panelis izmanto vienu un to pašu procesu). Datu
direktoriju nosaka DATA_DIR vides mainīgais; pēc noklusējuma tā ir ~/.omniroute/.
2. Repozitorija izkārtojums
OmniRoute/
├── src/ Next.js lietotne (App Router, bibliotēkas, domēns, serveris, koplietojamie resursi)
├── open-sse/ Straumēšanas dzinēja darbvieta (@omniroute/open-sse)
├── electron/ Darbvirsmas ietvars (Electron 41 galvenais process + preload)
├── bin/ CLI ieejas punkti (omniroute, reset-password)
├── tests/ Vienību, integrācijas, e2e, protocols-e2e, translator, drošības testi un armatūra
├── scripts/ Būvēšanas, sinhronizācijas, pārbaudes, migrācijas un izpildlaika palīgskripti
├── docs/ Publiskā dokumentācija (šis direktorijs)
├── public/ Statiskie resursi, PWA manifests, servisa darbinieks
├── config/ Izpildlaika konfigurācijas paraugi
├── images/ Mārketinga un ekrānuzņēmumu resursi
├── _ideia/, _references/, _mono_repo/, _tasks/ Iekšējie pagaidu faili / plānošana (netiek piegādāti)
├── CLAUDE.md Repozitorija noteikumi Claude Code
├── AGENTS.md Padziļināta arhitektūras atsauce aģentiem
├── package.json v3.8.51, darbvietas sakne
└── tsconfig.json Ceļu aizstājvārdi + kompilatora pamatopcijas
3. src/ — Next.js lietotne
src/
├── app/ App Router lapas + API maršruti
├── lib/ Pamatbibliotēkas (DB, autentifikācija, OAuth, prasmes, atmiņa, …)
├── domain/ Tīrs domēna slānis (politika, atkāpšanās, izmaksas, bloķēšana, …)
├── server/ Tikai servera moduļi (authz, cors, auth)
├── shared/ Tipi, konstantes, validācija, līgumi, utilītas (droši starp robežām)
├── mitm/ Starpnieka “man-in-the-middle” palīgmoduļi CLI integrācijai
├── models/ Lokālo modeļu metadati / aizstājvārdi
├── sse/ Mantotie SSE apstrādātāji, kas joprojām atrodas `src/` (nevis open-sse/)
├── store/ Klienta stāvokļa krātuves
├── middleware/ Maršrutu līmeņa starpprogrammatūras utilītas (nevis Next.js globālā starpprogrammatūra)
├── scripts/ Koka iekšējie skripti, ko var importēt lietotnes kods
├── types/ Ambientie un koplietojamie TS tipi
├── i18n/ Lokalizāciju pakotnes
├── instrumentation.ts Next.js instrumentācijas āķis
├── instrumentation-node.ts
└── proxy.ts Augšējā līmeņa starpnieka sāknēšanas palīgmodulis
3.1 src/app/ — App Router
App Router nodrošina gan informācijas paneļa saskarni, gan publisko/pārvaldības HTTP API. Nav globālas starpprogrammatūras — pārtveršana tiek veikta katram maršrutam atsevišķi.
Augšējā līmeņa segmenti zem src/app/:
| Ceļš | Nolūks |
|---|---|
api/ |
Visi HTTP API maršruti (skatiet sadalījumu tālāk) |
a2a/ |
A2A JSON-RPC 2.0 galapunkts (POST /a2a) |
.well-known/agent.json/ |
A2A aģenta kartītes atklāšanas dokuments |
(dashboard)/ |
Informācijas paneļa saskarne (maršrutu grupa bez URL prefiksa) |
auth/, login/, forgot-password/, callback/ |
Autentifikācijas plūsmas |
landing/ |
Mārketinga/galvenā lapa |
docs/ |
Iegults API dokumentācijas skatītājs |
status/, maintenance/, offline/ |
Darbības lapas |
privacy/, terms/ |
Juridiskās lapas |
400/, 401/, 403/, 408/, 429/, 500/, 502/, 503/ |
Statiskas kļūdu lapas |
error.tsx, global-error.tsx, not-found.tsx, forbidden/, loading.tsx |
Ietvara kļūdu/ielādes robežas |
layout.tsx, page.tsx, globals.css, manifest.ts |
Saknes ietvars |
3.1.1 src/app/(dashboard)/dashboard/ — Saskarnes lapas
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, kā arī saknes page.tsx, HomePageClient.tsx,
BootstrapBanner.tsx.
3.1.2 src/app/api/ — Augšējā līmeņa API grupas
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/ Iegulto pakalpojumu pārvaldība (9router, cliproxy) — LOCAL_ONLY
├── upstream-proxy/
├── usage/
├── v1/ Ar OpenAI saderīgs publiskais API
├── v1beta/ Ar Gemini stilu saderīgs API
├── version-manager/
└── webhooks/
3.1.2a src/app/api/services/ — Iegulto pakalpojumu pārvaldība
Maršruti 9Router un CLIProxyAPI instalēšanai, palaišanai, apturēšanai un uzraudzībai.
Visi ceļi ir klasificēti kā LOCAL_ONLY (tikai loopback, stingrais noteikums Nr. 17), jo tie
var izsaukt npm install un palaist bērnprocesus.
src/app/api/services/
├── 9router/
│ ├── _lib.ts getOrInitSupervisor() palīgmodulis
│ ├── install/route.ts POST — npm install, izmantojot execFile
│ ├── start/route.ts POST — supervisor.start()
│ ├── stop/route.ts POST — supervisor.stop()
│ ├── restart/route.ts POST — supervisor.restart()
│ ├── update/route.ts POST — npm install jaunākai versijai
│ ├── rotate-key/route.ts POST — ģenerēt jaunu API atslēgu + restartēt
│ ├── status/route.ts GET — aktuālais + DB statuss + versijas metadati
│ └── auto-start/route.ts POST — pārslēgt auto_start karodziņu
├── cliproxy/
│ ├── _lib.ts getOrInitSupervisor() palīgmodulis
│ ├── 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 jaunākai versijai
│ ├── status/route.ts GET — aktuālais + DB statuss + versijas metadati
│ └── auto-start/route.ts POST — pārslēgt auto_start karodziņu
└── [name]/
└── logs/route.ts GET — SSE žurnāla beigu daļa (koplietojama visiem pakalpojumiem)
Atbilstošā informācijas paneļa saskarne:
src/app/(dashboard)/dashboard/providers/services/ — lapa ar divām cilnēm (CLIProxyAPI + 9Router).
Apgrieztais starpnieks 9Router iegultajai saskarnei:
src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts
Padziļināts apraksts: docs/frameworks/EMBEDDED-SERVICES.md
3.1.3 src/app/api/v1/ — Ar OpenAI saderīgs publiskais API
v1/
├── accounts/[id]/ konta meklēšana
├── agents/tasks/[id]/, agents/tasks/ A2A stila uzdevumu galapunkti
├── api/ iekšējie API palīgmoduļi, kas atklāti zem v1/api
├── audio/{speech, transcriptions}/ TTS + STT
├── batches/[id]/{cancel}, batches/ OpenAI Batches API
├── chat/completions/ Chat Completions (galvenais galapunkts)
├── completions/ Mantotie teksta pabeigšanas pieprasījumi
├── embeddings/ Iegulšanas
├── files/[id]/, files/ Files API
├── _helpers/ Koplietojamie maršrutu palīgmoduļi (bez publiska URL)
├── images/{edits, generations}/ Attēlu ģenerēšana + rediģēšana
├── issues/ Problēmu sākotnējās apstrādes palīgmoduļi
├── management/{proxies}/ Pārvaldības tvēruma maršruti v1 ietvaros
├── messages/{count_tokens}/ Ar Anthropic stilu saderīgi ziņojumi
├── models/ Modeļu saraksts (`route.ts`, `catalog.ts`)
├── moderations/ Moderācija
├── music/ Mūzikas ģenerēšana
├── providers/[provider]/ Darbības konkrētam pakalpojumu sniedzējam
├── quotas/{check} Kvotas pārbaudes
├── registered-keys/ Reģistrēto atslēgu administrēšana
├── rerank/ Pārkārtošana
├── responses/[...path]/ OpenAI Responses API (catch-all)
├── search/ Meklēšana tīmeklī
├── videos/ Video ģenerēšana
├── ws/ WebSocket tilts
└── route.ts Indeksa apstrādātājs
Katrs maršruta fails izmanto vienādu shēmu:
Maršruts → CORS priekšpārbaude → Zod pamatteksta validācija → neobligāta autentifikācija
→ API atslēgas politikas piemērošana → apstrādes funkcijas deleģēšana (open-sse)
v1beta/ ir ar Gemini stilu saderīga saskarne (plāns aptinums, kas pārveido pieprasījumus tajā pašā
open-sse/handlers/ konveijera plūsmā).
3.2 src/lib/ — Pamatbibliotēkas
Vienmēr importējiet datus, sinhronizāciju, OAuth, prasmes, atmiņu u. c. caur šiem moduļiem. Tabulā sagrupētas faktiskās mapes un ievērojamie augšējā līmeņa faili.
| Modulis | Nolūks |
|---|---|
a2a/ |
A2A protokola serveris: taskManager.ts, streaming.ts, taskExecution.ts, routingLogger.ts, skills/ (6 prasmes: izmaksu analīze, veselības pārskats, pakalpojumu sniedzēju atklāšana, kvotu pārvaldība, viedā maršrutēšana, iespēju uzskaitījums) |
acp/ |
Agent-Control-Protocol: index.ts, manager.ts, registry.ts |
api/ |
Iekšējie API palīgmoduļi: requireManagementAuth.ts, requireCliToolsAuth.ts, errorResponse.ts |
auth/ |
managementPassword.ts (paroles atiestatīšana / jaukšana) |
batches/ |
OpenAI Batches API pakalpojums (service.ts) |
catalog/ |
OpenRouter kataloga sinhronizācija (openrouterCatalog.ts) |
cloudAgent/ |
Mākoņa aģentu reģistrs: api.ts, baseAgent.ts, db.ts, index.ts, registry.ts, types.ts, agents/{codex, devin, jules}.ts |
combos/ |
Kombināciju atrisināšanas palīgmoduļi |
compliance/ |
Audits + pakalpojumu sniedzēju audits: index.ts, providerAudit.ts |
config/ |
Darbināšanas konfigurācijas sasaistes modulis |
db/ |
SQLite domēna moduļi (skatiet §3.2.1) |
display/ |
API atbildēs izmantotās saskarnes attēlošanas palīgfunkcijas |
embeddings/ |
Iegulšanas pakalpojumu reģistrs |
env/ |
Vides ielāde + introspekcija |
evals/ |
Novērtēšanas izpildvide |
guardrails/ |
piiMasker.ts, promptInjection.ts, visionBridge.ts, visionBridgeHelpers.ts, registry.ts, base.ts |
jobs/ |
Fona darbi (autoUpdate.ts, …) |
memory/ |
Pastāvīgā atmiņa: 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/importa pakalpojumu sniedzēju moduļi (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, kā arī services/, utils/ un constants/oauth.ts |
plugins/ |
Spraudņu ielādētājs (index.ts) |
promptCache/ |
prefixAnalyzer.ts, index.ts |
providerModels/ |
Pārvaldīts modeļu dzīves cikls: modelDiscovery.ts, managedModelImport.ts, managedAvailableModels.ts, cursorAgent.ts |
providers/ |
Pakalpojumu sniedzēju palīgmoduļi: catalog.ts, validation.ts, imageValidation.ts, claudeExtraUsage.ts, codexConnectionDefaults.ts, codexFastTier.ts, webCookieAuth.ts, managedAvailableModels.ts, requestDefaults.ts |
resilience/ |
settings.ts — automātiskā slēdža, atdzišanas un bloķēšanas iestatījumi |
runtime/ |
Darbināšanas vides funkciju noteikšana |
search/ |
executeWebSearch.ts |
services/ |
Iegulto pakalpojumu ietvars: ServiceSupervisor.ts (vispārīgs bērnprocesu uzraugs ar darbību slēdzeni, gredzenveida buferi un veselības pārbaudītāju), bootstrap.ts (procesa līmeņa reģistrācija un automātiskā palaišana), registry.ts (rīka → uzrauga kartējums), apiKey.ts (AES-256-GCM atslēgu krātuve), modelSync.ts (periodiska modeļu sinhronizācija), ringBuffer.ts (5 MB cirkulārais žurnāla buferis), healthCheck.ts (HTTP veselības pārbaude), types.ts, embedWsProxy.ts (WebSocket starpnieks), installers/{ninerouter,cliproxy}.ts. Skatiet docs/frameworks/EMBEDDED-SERVICES.md |
agentSkills/ |
Aģentu prasmju katalogs + ģenerators: catalog.ts (getCatalog/getSkillById/filterCatalog/computeCoverage), generator.ts (generateAgentSkills → raksta skills/{id}/SKILL.md), openapiParser.ts (izdala REST galapunktus no OpenAPI specifikācijas), cliRegistryParser.ts (izdala CLI apakškomandas no bin/cli-registry), schemas.ts (Zod: AgentSkillSchema, SkillCoverageSchema, ListQuerySchema, GenerateBodySchema), types.ts (AgentSkill, SkillCoverage, SkillMarkdown, GeneratorReport). To izmanto REST maršruti (/api/agent-skills/*), MCP rīki (omniroute_agent_skills_*) un A2A prasme list-capabilities. Skatiet AGENT-SKILLS.md. |
skills/ |
Prasmju ietvars: 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, kā arī builtin/browser.ts |
spend/ |
batchWriter.ts (atliktās rakstīšanas buferis) |
sync/ |
bundle.ts, tokens.ts (Cloud Sync) |
system/ |
Sistēmas līmeņa palīgmoduļi |
translator/ |
Augšējā līmeņa tulkotāja sasaistes modulis (deleģē uz open-sse/translator/) |
usage/ |
Lietojuma uzskaite: costCalculator.ts, tokenAccounting.ts, usageHistory.ts, aggregateHistory.ts, usageStats.ts, callLogs.ts, callLogArtifacts.ts, fetcher.ts, providerLimits.ts, migrations.ts |
versionManager/ |
Automātiskā atjaunināšana + versijas manifests |
ws/ |
WebSocket tilts |
zed-oauth/ |
Zed redaktora OAuth plūsma |
Augšējā līmeņa faili mapē src/lib/:
- Vecais
localDb.tsapkopošanas modulis tika noņemts — patērētāji tieši importē konkrētussrc/lib/db/*moduļus. 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/
Singletona SQLite datubāze (getDbInstance() failā core.ts, WAL žurnalēšana).
Nekad nerakstiet neapstrādātu SQL maršrutos vai apstrādātājos — izmantojiet šos moduļus.
Domēna moduļi (katrs pārvalda vienu vai vairākas tabulas): 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/ satur 168 versiju .sql failus (idempotentus, transakcionalus), un tos
sāknēšanas laikā izpilda migrationRunner.ts.
Migrācijās izveidotās tabulas (kopā 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 (kā arī FTS5 virtuālās tabulas atmiņas meklēšanai).
3.3 src/domain/ — Domēna slānis
Tīra biznesa loģika
4. open-sse/ — Straumēšanas dziņa darbvieta
Atsevišķa npm darbvieta, kas tiek publicēta kā @omniroute/open-sse. Tā pārvalda pieprasījumu
apstrādi, izpildītājus, tulkotājus, pakalpojumus, transformatoru un MCP serveri.
open-sse/
├── index.ts Publiskie eksporta elementi
├── package.json Darbvietas manifests
├── tsconfig.json
├── types.d.ts
├── config/ Nodrošinātāju reģistri, galveņu profili, identitāte, …
├── handlers/ Pieprasījumu apstrādātāji (chat, embeddings, audio, image, …)
├── executors/ 108 nodrošinātājiem specifiski HTTP izpildītāji
├── translator/ Formātu konvertēšana (OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro)
├── transformer/ Responses API ↔ Chat Completions straumes transformators
├── services/ Vairāk nekā 80 pakalpojumu moduļi (kombinācijas, rezerves risinājumi, kvotas, identitāte, …)
├── utils/ Straumēšanas palīgfunkcijas, TLS klients, AWS SigV4, starpniekservera fetch, …
└── mcp-server/ MCP serveris (3 transporti, 33 tvērumi, 110 rīki)
4.1 open-sse/handlers/
| Apstrādātājs | Nolūks |
|---|---|
chatCore.ts |
Galvenā tērzēšanas konveijera darbība (kešatmiņa, ātruma ierobežošana, kombināciju maršrutēšana, izpildītāja izsaukšana) |
responsesHandler.ts |
OpenAI Responses API ieejas punkts |
embeddings.ts |
Iegulšana |
imageGeneration.ts |
Attēlu ģenerēšana |
audioSpeech.ts |
Teksta pārvēršana runā |
audioTranscription.ts |
Runas pārvēršana tekstā |
videoGeneration.ts |
Video ģenerēšana |
musicGeneration.ts |
Mūzikas ģenerēšana |
rerank.ts |
Pārkārtošana |
moderations.ts |
Moderācija |
search.ts |
Meklēšana tīmeklī |
sseParser.ts |
SSE notikumu parsētājs |
usageExtractor.ts |
Marķieru skaita iegūšana no augšupstraumēm |
responseSanitizer.ts |
Nodrošinātājiem specifisku lieko datu noņemšana |
responseTranslator.ts |
Saikne starp nodrošinātāja atbildi un tulkotāju slāni |
4.2 open-sse/executors/
108 nodrošinātāju izpildītāji, katrs paplašina 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, kā arī claudeIdentity.ts
(kopīgs identitātes palīgrīks) un index.ts (reģistrs).
Piezīme: šeit nenorādītos nodrošinātājus apkalpo
default.ts, izmantojot vispārīgu ar OpenAI saderīgu izpildītāju. Pilns nodrošinātāju katalogs (355 nodrošinātāji) atrodassrc/shared/constants/providers.ts.
4.3 open-sse/translator/
Tulkošana pēc centrmezgla un spieķu principa (OpenAI ir centrmezgls).
- 9 pieprasījumu tulkotāji (
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 atbilžu tulkotāji (
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 palīgrīki (
translator/helpers/):claudeHelper,geminiHelper,geminiToolsSanitizer,maxTokensHelper,openaiHelper,responsesApiHelper,schemaCoercion,toolCallHelper, kā arī palīgrīku testi. - Attēlu palīgrīki (
translator/image/sizeMapper.ts). - Augstākā līmeņa faili:
bootstrap.ts,formats.ts,registry.ts,index.ts.
4.4 open-sse/transformer/
responsesTransformer.ts— uzTransformStreambalstīts Responses API ↔ Chat Completions pārveidotājs (to izmantoresponses/maršruta vispārīgais apstrādātājs).
4.5 open-sse/services/
Būtiskākie elementi (pilns saraksts atrodas sadaļā open-sse/services/):
| Joma | Faili |
|---|---|
| Kombināciju maršrutēšana | combo.ts (19 stratēģijas), comboConfig.ts, comboMetrics.ts, comboManifestMetrics.ts, comboAgentMiddleware.ts |
| Automātisko kombināciju dzinis | 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 |
| Noturība | accountFallback.ts (atdzišana + bloķēšana), errorClassifier.ts, emergencyFallback.ts, rateLimitManager.ts, rateLimitSemaphore.ts, accountSemaphore.ts, accountSelector.ts |
| Kvotas | quotaMonitor.ts, quotaPreflight.ts, bailianQuotaFetcher.ts, codexQuotaFetcher.ts, deepseekQuotaFetcher.ts, openrouterQuotaFetcher.ts, openrouterFreeWindow.ts, crofUsageFetcher.ts, antigravityCredits.ts |
| Kešatmiņa | reasoningCache.ts, searchCache.ts, signatureCache.ts, requestDedup.ts |
| Maršrutēšanas inteliģence | intentClassifier.ts, taskAwareRouter.ts, backgroundTaskDetector.ts, volumeDetector.ts, wildcardRouter.ts, workflowFSM.ts, specificityDetector.ts, specificityRules.ts, specificityTypes.ts |
| Darbs ar modeļiem | modelCapabilities.ts, modelDeprecation.ts, modelFamilyFallback.ts, modelStrip.ts, model.ts, provider.ts, providerRequestDefaults.ts, providerCostData.ts, payloadRules.ts |
| Saspiešana | compression/ — pilnīgs saspiešanas dziņa savienojums |
| Marķieri + sesija | tokenRefresh.ts, sessionManager.ts, apiKeyRotator.ts, contextManager.ts, contextHandoff.ts, systemPrompt.ts, roleNormalizer.ts, responsesInputSanitizer.ts, toolSchemaSanitizer.ts, toolLimitDetector.ts, thinkingBudget.ts |
| Līmenis / manifests | tierResolver.ts, tierConfig.ts, tierDefaults.json, tierTypes.ts, manifestAdapter.ts |
| IP / tīkls | ipFilter.ts, webSearchFallback.ts |
| Partijas | batchProcessor.ts |
| Lietojums | usage.ts |
4.6 open-sse/mcp-server/
- 110 unikāli rīki, kas savienoti
server.ts(45 kanoniskie rīkischemas/tools.ts+ atmiņas, prasmju, GitHub-prasmju, pūla, spēļošanas, spraudņu, Notion, Obsidian, lokālā korpusa un saspiešanas moduļos — apvienojums tiek skaitīts arcountUniqueMcpTools). - 3 transporti: stdio, HTTP Streamable, SSE.
- 33 tvērumi, kas tiek piemēroti izpildlaikā — pamatsaraksts atrodas
src/shared/constants/mcpScopes.ts, pilnais kopums ir tvērumu apvienojums, kurus deklarē katrs rīku modulis. - Audita tabula:
mcp_tool_audit(aizpildaaudit.ts). - Faili:
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, kā arī testi sadaļā__tests__/. - Pilnu rīku katalogu skatiet MCP-SERVER.md.
4.7 open-sse/config/
Nodrošinātāju reģistri (providerRegistry.ts, providerModels.ts,
providerHeaderProfiles.ts), katram formātam paredzēti modeļu reģistri (audioRegistry.ts,
embeddingRegistry.ts, imageRegistry.ts, moderationRegistry.ts,
musicRegistry.ts, rerankRegistry.ts, searchRegistry.ts, videoRegistry.ts),
identitātes palīgrīki (codexIdentity.ts, codexInstructions.ts,
anthropicHeaders.ts, antigravityUpstream.ts, antigravityModelAliases.ts,
cliFingerprints.ts, toolCloaking.ts, defaultThinkingSignature.ts),
akreditācijas datu palīgrīki (credentialLoader.ts, codexClient.ts) un mākoņa
adapteri (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/
Straumēšanas primitīvi un nodrošinātāju palīgrīki: 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/ — Darbvirsmas ietvars
electron/
├── main.js Electron galvenais process
├── preload.js Priekšielādes tilts (iespējots contextIsolation)
├── types.d.ts
├── package.json electron-builder konfigurācija, versija 3.8.51
├── README.md
├── assets/ Būvēšanas resursi (ikonas, entitlements, …)
├── node_modules/ Specializētais node_modules (better-sqlite3, electron-updater)
└── dist-electron/ Būvēšanas izvade (netiek iekļauta repozitorijā)
Darbvietas saknē ir pieci npm skripti: electron:dev, electron:build,
electron:build:{win,mac,linux}, electron:smoke:packaged. Automātiskā
atjaunināšana tiek nodrošināta, izmantojot electron-updater, kas norāda uz
GitHub laidienu plūsmu.
6. bin/ — CLI
bin/
├── omniroute.mjs Galvenais CLI ievades punkts (Node ESM)
├── reset-password.mjs Pārvaldības paroles atiestatīšana no CLI
├── mcp-server.mjs MCP servera palaidējs (stdio)
├── nodeRuntimeSupport.mjs Node versijas pārbaude
└── cli/
├── program.mjs Commander programmas veidotājs
├── runtime.mjs withRuntime palīgs (vispirms serveris / rezerves variants ar DB)
├── output.mjs Izvades formatētāji (json/jsonl/table/csv)
├── i18n.mjs t() palīgs ar lokalizācijām
├── api.mjs API izgūšanas palīgs
├── data-dir.mjs
├── encryption.mjs
├── sqlite.mjs
└── commands/
├── registry.mjs Komandu reģistrācija
├── setup.mjs
├── doctor.mjs
├── providers.mjs
└── ... (viens fails katrai komandai/grupai)
package.json → bin tiek eksponēti divi binārie faili:
omniroute→bin/omniroute.mjsomniroute-reset-password→bin/reset-password.mjs
7. tests/
| Direktorija | Veids |
|---|---|
tests/unit/ |
Vienību testi, izmantojot Node iebūvēto testu palaidēju (1821 fails, kā arī api/, auth/, authz/ apakšdirektorijas) |
tests/integration/ |
Starpmoduļu un DB stāvokļa testi |
tests/e2e/ |
Playwright lietotāja saskarnes testi |
tests/e2e/protocol-clients.test.ts |
MCP/A2A protokola e2e testi |
tests/translator/ |
Tulkotājam specifiski testi |
tests/security/ |
Drošības regresijas testi |
tests/load/ |
Slodzes / stresa testi |
tests/golden-set/ |
Atsauces izvades tulkotāja regresiju pārbaudēm |
tests/helpers/, tests/fixtures/, tests/manual/ |
Atbalsta faili |
Biežāk izmantotās komandas:
| Komanda | Ko tā palaiž |
|---|---|
npm run test:unit |
Visus tests/unit/*.test.ts, izmantojot Node testu palaidēju (paralēlisms 10) |
npm run test:vitest |
Vitest testu komplektu (MCP, autoCombo, kešatmiņa) |
npm run test:e2e |
Playwright lietotāja saskarnes testu komplektu |
npm run test:protocols:e2e |
MCP + A2A protokola e2e testus |
npm run test:coverage |
Pārklājuma slieksni (≥60% rindu/paziņojumu/funkciju/zaru) |
node --import tsx/esm --test tests/unit/<file>.test.ts |
Viena faila palaišanu |
8. scripts/
Organizētas 6 apakšmapēs pēc nolūka.
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. Pieprasījumu konveijers (kopsavilkums)
Klienta pieprasījums
→ /v1/chat/completions (route.ts)
CORS priekšpārbaude
Zod validācija (chatCompletionsSchema in shared/validation/schemas.ts)
Autentifikācija (extractApiKey + isValidApiKey VAI requireManagementAuth)
Politiku dzinis (src/server/authz/pipeline.ts)
Aizsargmehānismi (PII maskētājs, uzvednes injekcija, redzes tilts)
→ handleChatCore() (open-sse/handlers/chatCore.ts)
Kešatmiņas pārbaude (semantiskā + lasīšanas kešatmiņa)
Ātruma ierobežojums (rateLimitManager, accountSemaphore)
Kombinētā maršrutēšana (ja modelis tiek atrisināts kā kombinācija)
comboResolver → cilpa katram mērķim → handleSingleModel()
translateRequest() (open-sse/translator/request/*)
getExecutor(providerId).execute() (open-sse/executors/*)
augšupējā servera pieprasījums → atkārtots mēģinājums/atkāpe, izmantojot accountFallback
translateResponse() (open-sse/translator/response/*)
SSE straume VAI JSON atbilde
Ja Responses API: TransformStream, izmantojot open-sse/transformer/responsesTransformer.ts
→ Atbilstības audits (src/lib/compliance/)
→ Atbilde klientam
Noturības izpildlaika stāvoklis (trīs mehānismi)
| Mehānisms | Darbības joma | Atrašanās vieta |
|---|---|---|
| Pakalpojuma ķēdes pārtraucējs | Viss pakalpojums | src/shared/utils/circuitBreaker.ts, saglabāts domain_circuit_breakers |
| Savienojuma atdzišanas periods | Viens konts/atslēga | markAccountUnavailable() failā src/sse/services/auth.ts; izmanto accountFallback.checkFallbackError() |
| Modeļa bloķēšana | Pakalpojums + savienojums + modelis | open-sse/services/accountFallback.ts, saglabāts domain_lockout_state |
Skatiet RESILIENCE_GUIDE.md un īpašo sadaļu failā CLAUDE.md.
10. Kā piedalīties
Pievienot jaunu pakalpojumu sniedzēju
- Reģistrējiet
src/shared/constants/providers.ts(Zod validācija pie ielādes). - Pievienojiet izpildītāju
open-sse/executors/, ja nepieciešama pielāgota loģika (paplašinietBaseExecutor). - Pievienojiet tulku
open-sse/translator/, ja tas nepārprot OpenAI formātu. - Ja OAuth balstīts, pievienojiet konfigurāciju zem
src/lib/oauth/providers/unsrc/lib/oauth/services/. - Reģistrējiet modeļus
open-sse/config/providerRegistry.ts(vai formātam specifiskajā reģistrā zemopen-sse/config/). - Rakstiet testus zem
tests/unit/.
Pievienot jaunu API maršrutu
- Izveidojiet
src/app/api/your-route/route.ts. - Sekojiet paraugam: CORS → Zod pamatteksta validācija → autentifikācija → apstrādātāja deleģēšana.
- Ja jauns pieprasījuma formāts: pievienojiet Zod shēmu
src/shared/validation/schemas.ts. - Ja tikai pārvaldībai: pievienojiet ceļu
src/shared/constants/publicApiRoutes.ts(noliegšanas saraksts publiskajai API virsmai). - Pievienojiet testus zem
tests/unit/. - Atjauniniet
docs/reference/API_REFERENCE.mdundocs/openapi.yaml.
Pievienot jaunu DB moduli
- Izveidojiet
src/lib/db/yourModule.tsun importējietgetDbInstance()no./core.ts. - Eksportējiet CRUD funkcijas savam domēnam.
- Ja jaunas tabulas: pievienojiet migrāciju zem
src/lib/db/migrations/, secīgi numurētu, idempotentu, transakcionālu. - Importētāji izmanto tiešos importus no
@/lib/db/yourModule(nav mucu — vecaislocalDb.tsre-eksporta slānis tika noņemts). - Pievienojiet testus zem
tests/unit/.
Pievienot jaunu MCP rīku
- Pievienojiet rīka definīciju zem
open-sse/mcp-server/tools/(vai paplašinietopen-sse/mcp-server/schemas/tools.ts). - Piešķiriet atbilstošos tvērumus
src/shared/constants/mcpScopes.ts. - Reģistrējiet rīku
open-sse/mcp-server/server.ts. - Pievienojiet testus zem
open-sse/mcp-server/__tests__/. - Atjauniniet MCP-SERVER.md.
Pievienot jaunu A2A prasmi
Skatīt A2A-SERVER.md § Adding a New Skill. Prasmes atrodas
src/lib/a2a/skills/ un tiek reģistrētas caur A2A uzdevumu pārvaldnieku.
11. Konvencijas
- Koda stils: 2 atstarpju indents, dubultās pēdiņas, 100 simbolu platums, semikoli,
es5komati pēc pēdējā elementa — uzlikts ar Prettier caurlint-staged. - Importi: ārējie → iekšējie (
@/,@omniroute/open-sse) → relatīvie. - Nosaukšana: faili
camelCasevaikebab-case, komponentiPascalCase, konstantesUPPER_SNAKE. - ESLint:
no-eval,no-implied-eval,no-new-func=errorvisur;no-explicit-any=warnopen-sse/untests/, kļūda pārējās vietās. - TypeScript:
strict: false(mantojuma pozīcija). Dodiet priekšroku skaidriem tipiem pār secinājumiem šķērmoduļu robežām. - Datubāze: nekad nerakstiet neapstrādātu SQL maršrutos vai apstrādātājos — vienmēr
izmantojiet
src/lib/db/moduļus. Nekad neimportējiet no mucas — izmantojiet specifiskussrc/lib/db/*moduļus tieši. - DB-entitāju tipizācija (#3512): funkcija, kas raksta vai lasa DB tabulas
rindas formu, vajadzētu pieņemt/atgriezt nosauktu TS interfeisu, kas atspoguļo šīs tabulas
kolonnas 1:1, nevis
anyvai anonīmu tipu izsaukuma vietā. Novietojiet interfeisu blakus funkcijai (piem.,export interface UsageEntryiekšsrc/lib/usage/usageHistory.tsvirssaveRequestUsage), atstājiet atsevišķus laukus neobligātus/nullējamus, kad dažādi rakstītāji aizpilda rindu inkrementāli, un dodiet priekšrokuunknownpāranylaukam, kura forma mainās starp izsaukumiem (dokumentēts pie lauka, piem.,UsageEntry.tokenspieņem gan neapstrādātu pakalpojumu sniedzēja formas lietojumu, gan normalizēto formu). Kad failaanyskaits sasniedzis nulli šādā veidā, pievienojiet tocheck:any-budget:t11atļauto sarakstam (scripts/check/check-t11-any-budget.mjs,maxAny: 0), lai tas nevarētu regresēt. Šī ir pirmās šķēres konvencija — plašākā "nav anonīmaany" tīrīšana ir iteratīva pārējā koda bāzē. - Kļūdas: try/catch ar specifiskiem kļūdu tipiem, žurnalējiet ar pino kontekstu. Nekad neapklusiniet kļūdas SSE straumēs klusi; izmantojiet pārtraukšanas signālus tīrīšanai.
- Drošība: nekad neizmantojiet
eval()/new Function()/ netiešo eval. Validējiet visus ievades datus ar Zod. Šifrējiet akreditācijas datus miera stāvoklī (AES-256-GCM). Uzturējietsrc/shared/constants/upstreamHeaders.tsnoliegšanas sarakstu sinhronizētu ar sanitizācijas/validācijas slāni. - Kommiti: Conventional Commits —
feat(scope): subject. Atļautie tvērumi:db,sse,oauth,dashboard,api,cli,docker,ci,mcp,a2a,memory,skills. - Zari: prefiksi
feat/,fix/,refactor/,docs/,test/,chore/. Nekad nekommitējiet tieši uzmain. - Husky: pirms-kommita izpilda
lint-staged+check:docs-sync+check:any-budget:t11; pirms-push izpildacheck:any-budget:t11+check:tracked-artifacts(ātri vārti; izslēdztest:unit).
12. Stingrie noteikumi (no CLAUDE.md)
- Nekad neizvietojiet slepenus datus vai akreditācijas datus.
- Nekad neizmantojiet barrel-import — izmantojiet konkrētus
src/lib/db/*moduļus tieši. - Nekad neizmantojiet
eval()/new Function()/ netiešu eval. - Nekad neveiciet tiešas izmaiņas
mainzarā. - Nekad nerakstiet neapstrādātu SQL maršrutos — vienmēr izmantojiet
src/lib/db/moduļus. - Nekad klusi nenorijiet kļūdas SSE straumēs.
- Vienmēr validējiet ievades datus ar Zod shēmām.
- Veicot izmaiņas produkcijas kodā, vienmēr iekļaujiet testus.
- Pārklājumam jāpaliek ≥ 60% (izteikumi, rindas, funkcijas, zari).
13. Skatiet arī
- ARCHITECTURE.md — augsta līmeņa arhitektūra un moduļu atbildības jomas.
- API_REFERENCE.md — publiskā + pārvaldības API atsauce.
- FEATURES.md — funkciju matrica un versiju izcēlumi.
- RESILIENCE_GUIDE.md — ķēdes pārtraucēja, atdzišanas un bloķēšanas padziļināts apskats.
- AUTO-COMBO.md — Auto Combo vērtēšana un stratēģijas.
- MCP-SERVER.md — pilns MCP rīku katalogs + transporta mehānismi.
- A2A-SERVER.md — A2A protokola prasmes un atklāšana.
- COMPRESSION_GUIDE.md — RTK + Caveman saspiešana.
- CLI-TOOLS.md — CLI integrācijas.
- ELECTRON_GUIDE.md (ja ir pieejams), DOCKER_GUIDE.md, FLY_IO_DEPLOYMENT_GUIDE.md, VM_DEPLOYMENT_GUIDE.md, TERMUX_GUIDE.md, PWA_GUIDE.md — izvietošanas mērķi.
- TROUBLESHOOTING.md — bieži sastopamās operacionālās problēmas.
- CONTRIBUTING.md — līdzdalībnieku darba process.
- CLAUDE.md — repozitorija noteikumi Claude Code (daudzu iepriekš minēto konvenciju patiesais avots).
- AGENTS.md — padziļināta arhitektūras atsauce, ko izmanto aģenti.