From 68ca8bf1e9ef7a1be639e11e729a952fd6691cc0 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Fri, 15 May 2026 17:20:48 -0300 Subject: [PATCH 01/33] refactor(dashboard): remove page-body headers, add topology multi-ring, icon+title header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ProviderTopology: replace single-ring ellipse with multi-ring concentric layout (6 rings) - Providers sorted active → error → last-used → rest; compact node design (text-xs, 16px icon) - Header: derive icon/title from SIDEBAR_SECTIONS auto-mapping, remove breadcrumbs logic - Add HEADER_DESCRIPTIONS map for all pages with known descriptions - Use sidebar i18n namespace for titles (covers all 42 locales) - DashboardLayout: remove component - Add header descriptions for 9 new pages (costs, cache, limits, api-manager, batch, context-caveman/rtk/combos, changelog) across all 41 locale files - Remove duplicate page-body title+description from 16 pages: costs, analytics, cache, cache/media, context/caveman/rtk/combos, changelog, agents, cloud-agents, skills, audit, translator, webhooks, memory, health — preserving action buttons in each - Rename sidebar "Limits & Quotas" → "Quota Limits" (en.json) - run-next.mjs: pre-read DATA_DIR from .env before bootstrap (zero-config dev start) --- package-lock.json | 67 +++ package.json | 1 + scripts/dev/run-next.mjs | 13 +- .../(dashboard)/dashboard/HomePageClient.tsx | 157 ++++--- src/app/(dashboard)/dashboard/agents/page.tsx | 7 +- .../(dashboard)/dashboard/analytics/page.tsx | 9 - src/app/(dashboard)/dashboard/audit/page.tsx | 8 - .../dashboard/cache/media/MediaPageClient.tsx | 6 - src/app/(dashboard)/dashboard/cache/page.tsx | 6 +- .../(dashboard)/dashboard/changelog/page.tsx | 13 +- .../dashboard/cloud-agents/page.tsx | 7 - .../caveman/CavemanContextPageClient.tsx | 10 - .../combos/CompressionCombosPageClient.tsx | 10 - .../context/rtk/RtkContextPageClient.tsx | 10 - src/app/(dashboard)/dashboard/costs/page.tsx | 8 - src/app/(dashboard)/dashboard/health/page.tsx | 41 +- src/app/(dashboard)/dashboard/memory/page.tsx | 45 +- src/app/(dashboard)/dashboard/page.tsx | 20 +- src/app/(dashboard)/dashboard/skills/page.tsx | 6 +- .../translator/TranslatorPageClient.tsx | 28 +- .../(dashboard)/dashboard/webhooks/page.tsx | 9 +- src/app/(dashboard)/home/ProviderTopology.tsx | 408 ++++++++++++++++++ src/app/(dashboard)/home/page.tsx | 22 + src/i18n/messages/ar.json | 11 +- src/i18n/messages/bg.json | 11 +- src/i18n/messages/bn.json | 11 +- src/i18n/messages/cs.json | 11 +- src/i18n/messages/da.json | 11 +- src/i18n/messages/de.json | 11 +- src/i18n/messages/en.json | 13 +- src/i18n/messages/es.json | 11 +- src/i18n/messages/fa.json | 11 +- src/i18n/messages/fi.json | 11 +- src/i18n/messages/fr.json | 11 +- src/i18n/messages/gu.json | 11 +- src/i18n/messages/he.json | 11 +- src/i18n/messages/hi.json | 11 +- src/i18n/messages/hu.json | 11 +- src/i18n/messages/id.json | 11 +- src/i18n/messages/in.json | 11 +- src/i18n/messages/it.json | 11 +- src/i18n/messages/ja.json | 11 +- src/i18n/messages/ko.json | 11 +- src/i18n/messages/mr.json | 11 +- src/i18n/messages/ms.json | 11 +- src/i18n/messages/nl.json | 11 +- src/i18n/messages/no.json | 11 +- src/i18n/messages/phi.json | 11 +- src/i18n/messages/pl.json | 11 +- src/i18n/messages/pt-BR.json | 11 +- src/i18n/messages/pt.json | 11 +- src/i18n/messages/ro.json | 11 +- src/i18n/messages/ru.json | 11 +- src/i18n/messages/sk.json | 11 +- src/i18n/messages/sv.json | 11 +- src/i18n/messages/sw.json | 11 +- src/i18n/messages/ta.json | 11 +- src/i18n/messages/te.json | 11 +- src/i18n/messages/th.json | 11 +- src/i18n/messages/tr.json | 11 +- src/i18n/messages/uk-UA.json | 11 +- src/i18n/messages/ur.json | 11 +- src/i18n/messages/vi.json | 11 +- src/i18n/messages/zh-CN.json | 11 +- src/shared/components/Header.tsx | 241 ++++------- src/shared/components/Sidebar.tsx | 2 +- .../components/layouts/DashboardLayout.tsx | 6 +- src/shared/constants/sidebarVisibility.ts | 2 +- 68 files changed, 1163 insertions(+), 452 deletions(-) create mode 100644 src/app/(dashboard)/home/ProviderTopology.tsx create mode 100644 src/app/(dashboard)/home/page.tsx diff --git a/package-lock.json b/package-lock.json index 4c6fbde29d..155cc1f6ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@monaco-editor/react": "^4.7.0", "@ngrok/ngrok": "^1.7.0", "@swc/helpers": "0.5.21", + "@xyflow/react": "^12.10.2", "axios": "^1.16.0", "bcryptjs": "^3.0.3", "better-sqlite3": "^12.9.0", @@ -5228,6 +5229,66 @@ "dev": true, "license": "MIT" }, + "node_modules/@xyflow/react": { + "version": "12.10.2", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.10.2.tgz", + "integrity": "sha512-CgIi6HwlcHXwlkTpr0fxLv/0sRVNZ8IdwKLzzeCscaYBwpvfcH1QFOCeaTCuEn1FQEs/B8CjnTSjhs8udgmBgQ==", + "license": "MIT", + "dependencies": { + "@xyflow/system": "0.0.76", + "classcat": "^5.0.3", + "zustand": "^4.4.0" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@xyflow/react/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.76", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.76.tgz", + "integrity": "sha512-hvwvnRS1B3REwVDlWexsq7YQaPZeG3/mKo1jv38UmnpWmxihp14bW6VtEOuHEwJX2FvzFw8k77LyKSk/wiZVNA==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -6132,6 +6193,12 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "license": "ISC" }, + "node_modules/classcat": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", + "license": "MIT" + }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", diff --git a/package.json b/package.json index 1b19818227..3e5fb43b9a 100644 --- a/package.json +++ b/package.json @@ -131,6 +131,7 @@ "@monaco-editor/react": "^4.7.0", "@ngrok/ngrok": "^1.7.0", "@swc/helpers": "0.5.21", + "@xyflow/react": "^12.10.2", "axios": "^1.16.0", "bcryptjs": "^3.0.3", "better-sqlite3": "^12.9.0", diff --git a/scripts/dev/run-next.mjs b/scripts/dev/run-next.mjs index 1a108d40d2..61e490311a 100644 --- a/scripts/dev/run-next.mjs +++ b/scripts/dev/run-next.mjs @@ -10,6 +10,17 @@ import { createOmnirouteWsBridge } from "./v1-ws-bridge.mjs"; import { createResponsesWsProxy } from "./responses-ws-proxy.mjs"; import { randomUUID } from "node:crypto"; +// Pre-read DATA_DIR from local .env before bootstrap resolves paths +if (!process.env.DATA_DIR) { + try { + const raw = fs.readFileSync(path.join(process.cwd(), ".env"), "utf8"); + const match = raw.match(/^DATA_DIR=(.+)$/m); + if (match?.[1]?.trim()) process.env.DATA_DIR = match[1].trim(); + } catch { + /* .env ausente ou ilegível — ok, bootstrap usa o padrão */ + } +} + // Add check for conflicting app/ directory (Issue #1206) const rootAppDir = path.join(process.cwd(), "app"); if (fs.existsSync(rootAppDir) && fs.statSync(rootAppDir).isDirectory()) { @@ -86,7 +97,7 @@ async function start() { await new Promise((resolve) => server.close(resolve)); await nextApp.close(); } catch (error) { - console.error(`[SHUTDOWN] Failed during ${signal}:`, error); + console.error("[SHUTDOWN] Failed during signal:", signal, error); } finally { process.exit(0); } diff --git a/src/app/(dashboard)/dashboard/HomePageClient.tsx b/src/app/(dashboard)/dashboard/HomePageClient.tsx index 2011948e6e..0bab5770a0 100644 --- a/src/app/(dashboard)/dashboard/HomePageClient.tsx +++ b/src/app/(dashboard)/dashboard/HomePageClient.tsx @@ -3,7 +3,7 @@ import { useTranslations } from "next-intl"; import { useState, useEffect, useMemo, useCallback } from "react"; -import Image from "next/image"; +import dynamic from "next/dynamic"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { Card, CardSkeleton, Button, Modal } from "@/shared/components"; @@ -11,6 +11,8 @@ import ProviderIcon from "@/shared/components/ProviderIcon"; import { AI_PROVIDERS, FREE_PROVIDERS, OAUTH_PROVIDERS } from "@/shared/constants/providers"; import { useNotificationStore } from "@/store/notificationStore"; import { copyToClipboard } from "@/shared/utils/clipboard"; + +const ProviderTopology = dynamic(() => import("../home/ProviderTopology"), { ssr: false }); import type { NewsAnnouncement } from "@/shared/utils/releaseNotes"; type UpdateStep = { @@ -179,21 +181,6 @@ export default function HomePageClient({ machineId }: HomePageClientProps) { return models.filter((m) => providerKeys.has(m.provider)); }, [selectedProvider, models]); - const quickStartLinks = [ - { label: t("documentation"), href: "/docs", icon: "menu_book" }, - { label: ts("providers"), href: "/dashboard/providers", icon: "dns" }, - { label: ts("combos"), href: "/dashboard/combos", icon: "layers" }, - { label: ts("analytics"), href: "/dashboard/analytics", icon: "analytics" }, - { label: t("healthMonitor"), href: "/dashboard/health", icon: "health_and_safety" }, - { label: ts("cliTools"), href: "/dashboard/cli-tools", icon: "terminal" }, - { - label: t("reportIssue"), - href: "https://github.com/diegosouzapw/OmniRoute/issues", - external: true, - icon: "bug_report", - }, - ]; - const pollBackgroundUpdate = useCallback( async ({ channel, @@ -728,72 +715,110 @@ export default function HomePageClient({ machineId }: HomePageClientProps) { - -
- {quickStartLinks.map((link) => ( - - - {link.icon || (link.external ? "open_in_new" : "arrow_forward")} - - {link.label} - - ))} -
- {/* Providers Overview */} + {/* Tier Coverage */} -
+
-

{t("providersOverview")}

-

+

{t("providersOverview")}

+

{t("configuredOf", { configured: providerStats.filter((item) => item.total > 0).length, total: providerStats.length, })}

-
-
- - {tc("free")} - - - {t("oauthLabel")} - - - {t("apiKeyLabel")} - -
- - settings - {tc("manage")} - -
+ + settings + {tc("manage")} +
-
- {providerStats.map((item) => ( - setSelectedProvider(item)} - /> - ))} +
+ {( + [ + { + key: "free", + label: tc("free"), + icon: "lock_open", + color: "text-green-500", + bg: "bg-green-500/8", + border: "border-green-500/20", + }, + { + key: "oauth", + label: t("oauthLabel"), + icon: "login", + color: "text-blue-500", + bg: "bg-blue-500/8", + border: "border-blue-500/20", + }, + { + key: "apikey", + label: t("apiKeyLabel"), + icon: "vpn_key", + color: "text-amber-500", + bg: "bg-amber-500/8", + border: "border-amber-500/20", + }, + ] as const + ).map(({ key, label, icon, color, bg, border }) => { + const all = providerStats.filter((p) => p.authType === key); + const configured = all.filter((p) => p.total > 0); + const connected = configured.filter((p) => p.connected > 0); + return ( +
+
+ {icon} + {label} +
+

+ {connected.length} + /{all.length} +

+

connected

+
+ ); + })}
+ {/* Provider Topology */} + +
+
+

Provider Topology

+

+ Connected providers routing through OmniRoute in real time +

+
+
+ + Active + + + Recent + + + Error + +
+
+ p.total > 0) + .map((p) => ({ id: p.id, provider: p.id, name: p.provider.name }))} + /> +
+ {/* Provider Models Modal */} {selectedProvider && ( - {/* Header */} -
-
-

{t("title")}

-

{t("description")}

-
+
-
+
+ {lastRefresh && ( + + {t("updatedAt", { time: lastRefresh.toLocaleTimeString() })} + + )} +
{/* Status Banner */} diff --git a/src/app/(dashboard)/dashboard/memory/page.tsx b/src/app/(dashboard)/dashboard/memory/page.tsx index 6b36e5834b..10c9e6bede 100644 --- a/src/app/(dashboard)/dashboard/memory/page.tsx +++ b/src/app/(dashboard)/dashboard/memory/page.tsx @@ -204,30 +204,27 @@ export default function MemoryPage() { return (
-
-
-

{t("title")}

-
- {health !== null && ( - - )} - {health === null && !checkingHealth && ( - - )} - -
+
+
+ {health !== null && ( + + )} + {health === null && !checkingHealth && ( + + )} +
- {isBootstrapped && } - - - ); +export default function DashboardPage() { + redirect("/home"); } diff --git a/src/app/(dashboard)/dashboard/skills/page.tsx b/src/app/(dashboard)/dashboard/skills/page.tsx index 3781adfc92..48c42c29e7 100644 --- a/src/app/(dashboard)/dashboard/skills/page.tsx +++ b/src/app/(dashboard)/dashboard/skills/page.tsx @@ -312,11 +312,7 @@ export default function SkillsPage() { return (
-
-
-

{t("title")}

-

{t("description")}

-
+
- {/* Page title with breadcrumbs - desktop */} -
- {breadcrumbs.length > 0 ? ( -
- {breadcrumbs.map((crumb, index) => ( -
- {index > 0 && ( - - chevron_right - - )} - {crumb.href ? ( - - {crumb.label} - - ) : ( -
- {crumb.image && ( - {crumb.label} { - e.currentTarget.style.display = "none"; - }} - /> - )} - {crumb.providerId && ( - - )} -

- {crumb.label} -

-
- )} -
- ))} + {/* Page title with icon - desktop */} +
+ {(icon || providerId) && ( +
+ {icon ? ( + {icon} + ) : ( + providerId && + )}
- ) : title ? ( + )} + {title && (
-

{title}

- {description &&

{description}

} +

{title}

+ {description &&

{description}

}
- ) : null} + )}
{/* Right actions */}
- {/* Language selector */} - - {/* Theme toggle */} - - {/* Degradation & Token health */} {!isE2EMode && } {!isE2EMode && } - - {/* Logout button */} + ); +} + +function SkillRow({ skill }: { skill: AgentSkill }) { + const rawUrl = getAgentSkillRawUrl(skill.id); + const blobUrl = getAgentSkillBlobUrl(skill.id); + + return ( +
+
+ + {skill.icon} + +
+ +
+
+ + {skill.name} + + {skill.isEntry && ( + + Start Here + + )} + {skill.isNew && ( + + New + + )} + {skill.endpoint && ( + + {skill.endpoint} + + )} +
+

+ {skill.description} +

+
+ + +
+ ); +} + +function SkillSection({ + title, + subtitle, + icon, + skills, +}: { + title: string; + subtitle: string; + icon: string; + skills: AgentSkill[]; +}) { + return ( +
+
+ + {icon} + +
+

+ {title} +

+

+ {subtitle} +

+
+
+
+ {skills.map((skill) => ( + + ))} +
+
+ ); +} + +export default function AgentSkillsPage() { + const apiSkills = AGENT_SKILLS.filter((s) => s.category === "api"); + const cliSkills = AGENT_SKILLS.filter((s) => s.category === "cli"); + + return ( +
+ {/* Header */} +
+

+ AgentSkills +

+

+ SKILL.md manifests for AI agents — paste a URL into Claude, Cursor, Cline, or any agent to + give it full knowledge of OmniRoute. +

+
+ + {/* How to use */} +
+
+ + info + + + How to use + +
+
    +
  1. + 1. Click Copy URL on the skill you want your agent to know about. +
  2. +
  3. + 2. In your AI agent (Claude, Cursor, Cline…), say: +
    + + Use the skill at <pasted-url> + +
  4. +
  5. + 3. The agent fetches the SKILL.md and learns OmniRoute's API or CLI — no manual + docs needed. +
  6. +
+ + + open_in_new + + Browse all skills on GitHub + +
+ + {/* API Skills */} + + + {/* CLI Skills */} + +
+ ); +} diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index 3da982c0ed..46c179f060 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -672,6 +672,8 @@ "cloudAgents": "Cloud Agents", "memory": "Memory", "skills": "Skills", + "omniSkills": "OmniSkills", + "agentSkills": "AgentSkills", "docs": "Docs", "issues": "Issues", "endpoints": "Endpoints", diff --git a/src/shared/constants/agentSkills.ts b/src/shared/constants/agentSkills.ts new file mode 100644 index 0000000000..5aaf8144cc --- /dev/null +++ b/src/shared/constants/agentSkills.ts @@ -0,0 +1,201 @@ +// Agent Skills metadata — single source of truth for /dashboard/agent-skills. +// Each skill = 1 raw GitHub URL the user copies and pastes to any AI agent. + +const REPO = "diegosouzapw/OmniRoute"; +const BRANCH = "main"; +const SKILL_PATH = "skills"; + +export const AGENT_SKILLS_REPO_URL = `https://github.com/${REPO}`; +export const AGENT_SKILLS_RAW_BASE = `https://raw.githubusercontent.com/${REPO}/refs/heads/${BRANCH}/${SKILL_PATH}`; +export const AGENT_SKILLS_BLOB_BASE = `https://github.com/${REPO}/blob/${BRANCH}/${SKILL_PATH}`; + +export interface AgentSkill { + id: string; + name: string; + description: string; + endpoint: string | null; + icon: string; + category: "api" | "cli"; + isEntry?: boolean; + isNew?: boolean; +} + +export const AGENT_SKILLS: AgentSkill[] = [ + // ── API Skills ────────────────────────────────────────────────────────────── + { + id: "omniroute", + name: "OmniRoute (Entry)", + description: + "Setup + index of all capabilities. Start here — covers base URL, auth, model discovery, and links to every capability skill.", + endpoint: null, + icon: "hub", + category: "api", + isEntry: true, + }, + { + id: "omniroute-chat", + name: "Chat", + description: "Chat / code-gen via OpenAI or Anthropic format with streaming and reasoning.", + endpoint: "/v1/chat/completions", + icon: "chat", + category: "api", + }, + { + id: "omniroute-image", + name: "Image Generation", + description: "Text-to-image via DALL-E, Imagen, FLUX, MiniMax, SDWebUI, and more.", + endpoint: "/v1/images/generations", + icon: "image", + category: "api", + }, + { + id: "omniroute-tts", + name: "Text-to-Speech", + description: "OpenAI / ElevenLabs / Edge / Google / Deepgram voices.", + endpoint: "/v1/audio/speech", + icon: "record_voice_over", + category: "api", + }, + { + id: "omniroute-stt", + name: "Speech-to-Text", + description: + "Transcribe audio via OpenAI Whisper, Groq, Gemini, Deepgram, AssemblyAI, and more.", + endpoint: "/v1/audio/transcriptions", + icon: "mic", + category: "api", + }, + { + id: "omniroute-embeddings", + name: "Embeddings", + description: "Vectors for RAG / semantic search via OpenAI, Gemini, Mistral, and more.", + endpoint: "/v1/embeddings", + icon: "scatter_plot", + category: "api", + }, + { + id: "omniroute-web-search", + name: "Web Search", + description: "Tavily / Exa / Brave / Serper / SearXNG / Google PSE / You.com.", + endpoint: "/v1/search", + icon: "search", + category: "api", + }, + { + id: "omniroute-web-fetch", + name: "Web Fetch", + description: "URL → markdown / text / HTML via Firecrawl, Jina, Tavily, Exa.", + endpoint: "/v1/web/fetch", + icon: "language", + category: "api", + }, + { + id: "omniroute-mcp", + name: "MCP Server", + description: + "37 tools over SSE/stdio/HTTP: routing, cache, compression, memory, skills, providers, audit.", + endpoint: "/api/mcp/sse", + icon: "electrical_services", + category: "api", + }, + { + id: "omniroute-a2a", + name: "A2A Protocol", + description: + "JSON-RPC 2.0 agent-to-agent server with 5 built-in skills: smart-routing, quota, discovery, cost, health.", + endpoint: "/a2a", + icon: "device_hub", + category: "api", + }, + { + id: "omniroute-routing", + name: "Routing & Combos", + description: + "Create and configure routing combos, 14 strategies, Auto-combo scoring, and fallback chains.", + endpoint: "/api/combos", + icon: "route", + category: "api", + isNew: true, + }, + { + id: "omniroute-compression", + name: "Compression", + description: + "RTK (command output), Caveman (prose), stacked mode, and MCP accessibility-tree filter. Save 60–90% tokens.", + endpoint: "/api/settings/compression", + icon: "compress", + category: "api", + isNew: true, + }, + { + id: "omniroute-monitoring", + name: "Monitoring & Health", + description: + "Health endpoints, circuit breakers, provider metrics (p50/p95/p99), budget guard, and MCP monitoring tools.", + endpoint: "/api/monitoring/health", + icon: "monitor_heart", + category: "api", + isNew: true, + }, + + // ── CLI Skills ─────────────────────────────────────────────────────────────── + { + id: "omniroute-cli", + name: "CLI (Entry)", + description: + "Install, global flags (--output, --base-url, --api-key), environment variables, and index of all CLI capability skills.", + endpoint: null, + icon: "terminal", + category: "cli", + isEntry: true, + isNew: true, + }, + { + id: "omniroute-cli-admin", + name: "CLI Admin", + description: + "Server lifecycle (start/stop/restart), non-interactive setup, doctor diagnostics, backup/restore, autostart, and tunnels.", + endpoint: null, + icon: "manage_accounts", + category: "cli", + isNew: true, + }, + { + id: "omniroute-cli-providers", + name: "CLI Providers & Keys", + description: + "Add/test/remove provider connections, manage API keys, rotate credentials, OAuth flows, list models, and manage combos.", + endpoint: null, + icon: "key", + category: "cli", + isNew: true, + }, + { + id: "omniroute-cli-cloud", + name: "CLI Cloud Agents", + description: + "Control Codex, Devin, and Jules cloud agents — create tasks, track status, approve plans, send messages, and view sources.", + endpoint: null, + icon: "cloud_sync", + category: "cli", + isNew: true, + }, + { + id: "omniroute-cli-eval", + name: "CLI Evals", + description: + "Create and run eval suites, watch live benchmark progress, view scorecards, compare models, and integrate with CI.", + endpoint: null, + icon: "science", + category: "cli", + isNew: true, + }, +]; + +export function getAgentSkillRawUrl(id: string): string { + return `${AGENT_SKILLS_RAW_BASE}/${id}/SKILL.md`; +} + +export function getAgentSkillBlobUrl(id: string): string { + return `${AGENT_SKILLS_BLOB_BASE}/${id}/SKILL.md`; +} diff --git a/src/shared/constants/sidebarVisibility.ts b/src/shared/constants/sidebarVisibility.ts index c866320835..2e173a4a6c 100644 --- a/src/shared/constants/sidebarVisibility.ts +++ b/src/shared/constants/sidebarVisibility.ts @@ -17,6 +17,7 @@ export const HIDEABLE_SIDEBAR_ITEM_IDS = [ "cloud-agents", "memory", "skills", + "agent-skills", "translator", "playground", "media", @@ -72,7 +73,8 @@ const CLI_SIDEBAR_ITEMS: readonly SidebarItemDefinition[] = [ { id: "agents", href: "/dashboard/agents", i18nKey: "agents", icon: "smart_toy" }, { id: "cloud-agents", href: "/dashboard/cloud-agents", i18nKey: "cloudAgents", icon: "cloud" }, { id: "memory", href: "/dashboard/memory", i18nKey: "memory", icon: "psychology" }, - { id: "skills", href: "/dashboard/skills", i18nKey: "skills", icon: "auto_fix_high" }, + { id: "skills", href: "/dashboard/skills", i18nKey: "omniSkills", icon: "auto_fix_high" }, + { id: "agent-skills", href: "/dashboard/agent-skills", i18nKey: "agentSkills", icon: "share" }, ]; const CONTEXT_SIDEBAR_ITEMS: readonly SidebarItemDefinition[] = [ From 58c2cfccd9b59ff0902ab32debe38d567fc7df7d Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Fri, 15 May 2026 12:23:51 -0300 Subject: [PATCH 03/33] fix(skills): use useCopyToClipboard hook in AgentSkills for HTTP fallback --- .../dashboard/agent-skills/page.tsx | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/app/(dashboard)/dashboard/agent-skills/page.tsx b/src/app/(dashboard)/dashboard/agent-skills/page.tsx index 4bfa047175..37b74023a2 100644 --- a/src/app/(dashboard)/dashboard/agent-skills/page.tsx +++ b/src/app/(dashboard)/dashboard/agent-skills/page.tsx @@ -1,6 +1,5 @@ "use client"; -import { useState } from "react"; import { AGENT_SKILLS, AGENT_SKILLS_REPO_URL, @@ -8,30 +7,28 @@ import { getAgentSkillBlobUrl, type AgentSkill, } from "@/shared/constants/agentSkills"; +import { useCopyToClipboard } from "@/shared/hooks/useCopyToClipboard"; function CopyButton({ url }: { url: string }) { - const [copied, setCopied] = useState(false); - - const handleCopy = async () => { - await navigator.clipboard.writeText(url); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - }; + const { copied, copy } = useCopyToClipboard(); + const isCopied = copied === url; return ( ); } From 3975d2c10faf0a3f1212ce4d588f595553a4a929 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Fri, 15 May 2026 17:26:42 -0300 Subject: [PATCH 04/33] feat(dashboard): complete header descriptions for all sidebar pages - Add header descriptions for 13 remaining pages (agents, cloud-agents, memory, skills/omniSkills, agent-skills, translator, playground, search-tools, logs, audit, webhooks, health, proxy) across all 41 locale files - Update HEADER_DESCRIPTIONS map in Header.tsx to cover all 30 sidebar pages - Remove page-body title block from agent-skills page (cherry-picked from feat/v3.8.0-features) --- .../(dashboard)/dashboard/agent-skills/page.tsx | 11 ----------- src/i18n/messages/ar.json | 15 ++++++++++++++- src/i18n/messages/bg.json | 15 ++++++++++++++- src/i18n/messages/bn.json | 15 ++++++++++++++- src/i18n/messages/cs.json | 15 ++++++++++++++- src/i18n/messages/da.json | 15 ++++++++++++++- src/i18n/messages/de.json | 15 ++++++++++++++- src/i18n/messages/en.json | 15 ++++++++++++++- src/i18n/messages/es.json | 15 ++++++++++++++- src/i18n/messages/fa.json | 15 ++++++++++++++- src/i18n/messages/fi.json | 15 ++++++++++++++- src/i18n/messages/fr.json | 15 ++++++++++++++- src/i18n/messages/gu.json | 15 ++++++++++++++- src/i18n/messages/he.json | 15 ++++++++++++++- src/i18n/messages/hi.json | 15 ++++++++++++++- src/i18n/messages/hu.json | 15 ++++++++++++++- src/i18n/messages/id.json | 15 ++++++++++++++- src/i18n/messages/in.json | 15 ++++++++++++++- src/i18n/messages/it.json | 15 ++++++++++++++- src/i18n/messages/ja.json | 15 ++++++++++++++- src/i18n/messages/ko.json | 15 ++++++++++++++- src/i18n/messages/mr.json | 15 ++++++++++++++- src/i18n/messages/ms.json | 15 ++++++++++++++- src/i18n/messages/nl.json | 15 ++++++++++++++- src/i18n/messages/no.json | 15 ++++++++++++++- src/i18n/messages/phi.json | 15 ++++++++++++++- src/i18n/messages/pl.json | 15 ++++++++++++++- src/i18n/messages/pt-BR.json | 15 ++++++++++++++- src/i18n/messages/pt.json | 15 ++++++++++++++- src/i18n/messages/ro.json | 15 ++++++++++++++- src/i18n/messages/ru.json | 15 ++++++++++++++- src/i18n/messages/sk.json | 15 ++++++++++++++- src/i18n/messages/sv.json | 15 ++++++++++++++- src/i18n/messages/sw.json | 15 ++++++++++++++- src/i18n/messages/ta.json | 15 ++++++++++++++- src/i18n/messages/te.json | 15 ++++++++++++++- src/i18n/messages/th.json | 15 ++++++++++++++- src/i18n/messages/tr.json | 15 ++++++++++++++- src/i18n/messages/uk-UA.json | 15 ++++++++++++++- src/i18n/messages/ur.json | 15 ++++++++++++++- src/i18n/messages/vi.json | 15 ++++++++++++++- src/i18n/messages/zh-CN.json | 15 ++++++++++++++- src/shared/components/Header.tsx | 13 +++++++++++++ 43 files changed, 587 insertions(+), 52 deletions(-) diff --git a/src/app/(dashboard)/dashboard/agent-skills/page.tsx b/src/app/(dashboard)/dashboard/agent-skills/page.tsx index 37b74023a2..65e87fcc29 100644 --- a/src/app/(dashboard)/dashboard/agent-skills/page.tsx +++ b/src/app/(dashboard)/dashboard/agent-skills/page.tsx @@ -162,17 +162,6 @@ export default function AgentSkillsPage() { return (
- {/* Header */} -
-

- AgentSkills -

-

- SKILL.md manifests for AI agents — paste a URL into Claude, Cursor, Cline, or any agent to - give it full knowledge of OmniRoute. -

-
- {/* How to use */}
> = { limits: "limitsDescription", media: "mediaDescription", "cli-tools": "cliToolsDescription", + agents: "agentsDescription", + "cloud-agents": "cloudAgentsDescription", + memory: "memoryDescription", + skills: "skillsDescription", + "agent-skills": "agentSkillsDescription", settings: "settingsDescription", "context-caveman": "contextCavemanDescription", "context-rtk": "contextRtkDescription", "context-combos": "contextCombosDescription", + translator: "translatorDescription", + playground: "playgroundDescription", + "search-tools": "searchToolsDescription", + logs: "logsDescription", + audit: "auditDescription", + webhooks: "webhooksDescription", + health: "healthDescription", + proxy: "proxyDescription", changelog: "changelogDescription", }; From b39d0d8861c040b5d1718f68e7feac871bbd951c Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Fri, 15 May 2026 18:31:24 -0300 Subject: [PATCH 05/33] refactor(dashboard): fix dark theme + two-column layout on agent-skills, standardize page widths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - agent-skills: replace all inline style={{ color: "var(--color-xxx, #fallback)" }} with Tailwind semantic classes (text-text-main, text-text-muted, bg-bg-subtle, border-border, text-primary, bg-primary/10, bg-emerald-500/10, bg-amber-500/10) — fixes dark mode - agent-skills: full-width "How to use" card + two-column grid (API Skills | CLI Skills) on lg+ screens; remove internal p-6 and max-w-3xl (layout already provides padding/max-w) - audit, webhooks: remove redundant p-6 + mx-auto max-w-7xl (DashboardLayout already wraps content in max-w-7xl with p-4 sm:p-6 lg:p-10) - memory: remove extra p-6 - agents: remove p-6 + max-w-5xl mx-auto - cloud-agents: remove p-6 + max-w-6xl mx-auto - changelog: remove max-w-5xl mx-auto w-full - health: remove outer p-6 + max-w-6xl mx-auto; strip redundant p-6 from loading/error states - translator: remove p-4 sm:p-8 (layout provides padding) - context/caveman, context/rtk, context/combos: remove mx-auto max-w-6xl --- .../dashboard/agent-skills/page.tsx | 163 +++++------------- src/app/(dashboard)/dashboard/agents/page.tsx | 2 +- src/app/(dashboard)/dashboard/audit/page.tsx | 2 +- .../(dashboard)/dashboard/changelog/page.tsx | 2 +- .../dashboard/cloud-agents/page.tsx | 2 +- .../caveman/CavemanContextPageClient.tsx | 2 +- .../combos/CompressionCombosPageClient.tsx | 2 +- .../context/rtk/RtkContextPageClient.tsx | 2 +- src/app/(dashboard)/dashboard/health/page.tsx | 6 +- src/app/(dashboard)/dashboard/memory/page.tsx | 2 +- .../translator/TranslatorPageClient.tsx | 2 +- .../(dashboard)/dashboard/webhooks/page.tsx | 2 +- 12 files changed, 60 insertions(+), 129 deletions(-) diff --git a/src/app/(dashboard)/dashboard/agent-skills/page.tsx b/src/app/(dashboard)/dashboard/agent-skills/page.tsx index 65e87fcc29..6eeab3f8aa 100644 --- a/src/app/(dashboard)/dashboard/agent-skills/page.tsx +++ b/src/app/(dashboard)/dashboard/agent-skills/page.tsx @@ -16,16 +16,14 @@ function CopyButton({ url }: { url: string }) { return ( +
+ + + +
+ + +
+ +
+
+
+ + + {loading ? ( +
{t("loading")}
+ ) : data.entries.length === 0 ? ( +
+ terminal +

{t("noMcpEvents")}

+
+ ) : ( +
+ + + + + + + + + + + + + {data.entries.map((entry) => ( + + + + + + + + + ))} + +
{t("timestamp")}{t("tool")}{t("duration")}{t("result")}{t("apiKey")}{t("output")}
+ {new Date(entry.createdAt).toLocaleString()} + {entry.toolName}{entry.durationMs}ms + + {entry.success ? t("success") : entry.errorCode || t("failure")} + + + {entry.apiKeyId || t("notAvailable")} + + {entry.outputSummary || t("notAvailable")} +
+
+ )} +
+ +
+ + +
+
+ ); +} diff --git a/src/app/(dashboard)/dashboard/batch/files/page.tsx b/src/app/(dashboard)/dashboard/batch/files/page.tsx new file mode 100644 index 0000000000..e7583fe4b3 --- /dev/null +++ b/src/app/(dashboard)/dashboard/batch/files/page.tsx @@ -0,0 +1,32 @@ +"use client"; + +import { useState, useEffect, useCallback } from "react"; +import FilesListTab from "../FilesListTab"; +import { mapFileApiToRecord } from "../batch-utils"; +import { FileRecord } from "@/lib/db/files"; + +export default function BatchFilesPage() { + const [files, setFiles] = useState([]); + const [loading, setLoading] = useState(true); + + const fetchFiles = useCallback(async () => { + setLoading(true); + try { + const res = await fetch("/api/v1/files?limit=20"); + if (res.ok) { + const data = await res.json(); + setFiles((data.data || []).map(mapFileApiToRecord)); + } + } catch { + // ignore + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { + void fetchFiles(); + }, [fetchFiles]); + + return ; +} diff --git a/src/app/(dashboard)/dashboard/costs/budget/page.tsx b/src/app/(dashboard)/dashboard/costs/budget/page.tsx new file mode 100644 index 0000000000..80f26b2bef --- /dev/null +++ b/src/app/(dashboard)/dashboard/costs/budget/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import BudgetTab from "../../usage/components/BudgetTab"; + +export default function CostsBudgetPage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/costs/pricing/page.tsx b/src/app/(dashboard)/dashboard/costs/pricing/page.tsx new file mode 100644 index 0000000000..03705d09ae --- /dev/null +++ b/src/app/(dashboard)/dashboard/costs/pricing/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import PricingTab from "../../settings/components/PricingTab"; + +export default function CostsPricingPage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/logs/activity/page.tsx b/src/app/(dashboard)/dashboard/logs/activity/page.tsx new file mode 100644 index 0000000000..02e5bd4ca7 --- /dev/null +++ b/src/app/(dashboard)/dashboard/logs/activity/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import AuditLogTab from "../AuditLogTab"; + +export default function LogsActivityPage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/logs/console/page.tsx b/src/app/(dashboard)/dashboard/logs/console/page.tsx new file mode 100644 index 0000000000..720e574b02 --- /dev/null +++ b/src/app/(dashboard)/dashboard/logs/console/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import ConsoleLogViewer from "@/shared/components/ConsoleLogViewer"; + +export default function LogsConsolePage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/logs/proxy/page.tsx b/src/app/(dashboard)/dashboard/logs/proxy/page.tsx new file mode 100644 index 0000000000..8651d522f8 --- /dev/null +++ b/src/app/(dashboard)/dashboard/logs/proxy/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import ProxyLogger from "@/shared/components/ProxyLogger"; + +export default function LogsProxyPage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/mcp/page.tsx b/src/app/(dashboard)/dashboard/mcp/page.tsx new file mode 100644 index 0000000000..68349a0792 --- /dev/null +++ b/src/app/(dashboard)/dashboard/mcp/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import McpDashboardPage from "../endpoint/components/MCPDashboard"; + +export default function McpPage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/settings/advanced/page.tsx b/src/app/(dashboard)/dashboard/settings/advanced/page.tsx new file mode 100644 index 0000000000..50002f59ee --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/advanced/page.tsx @@ -0,0 +1,15 @@ +"use client"; + +import PayloadRulesTab from "../components/PayloadRulesTab"; +import RequestLimitsTab from "../components/RequestLimitsTab"; +import CliproxyapiSettingsTab from "../components/CliproxyapiSettingsTab"; + +export default function SettingsAdvancedPage() { + return ( +
+ + + +
+ ); +} diff --git a/src/app/(dashboard)/dashboard/settings/ai/page.tsx b/src/app/(dashboard)/dashboard/settings/ai/page.tsx new file mode 100644 index 0000000000..beb997c07e --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/ai/page.tsx @@ -0,0 +1,19 @@ +"use client"; + +import ThinkingBudgetTab from "../components/ThinkingBudgetTab"; +import VisionBridgeSettingsTab from "../components/VisionBridgeSettingsTab"; +import SystemPromptTab from "../components/SystemPromptTab"; +import MemorySkillsTab from "../components/MemorySkillsTab"; +import ModelsDevSyncTab from "../components/ModelsDevSyncTab"; + +export default function SettingsAiPage() { + return ( +
+ + + + + +
+ ); +} diff --git a/src/app/(dashboard)/dashboard/settings/appearance/page.tsx b/src/app/(dashboard)/dashboard/settings/appearance/page.tsx new file mode 100644 index 0000000000..c078882485 --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/appearance/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import AppearanceTab from "../components/AppearanceTab"; + +export default function SettingsAppearancePage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/settings/general/page.tsx b/src/app/(dashboard)/dashboard/settings/general/page.tsx new file mode 100644 index 0000000000..ebbe161ab1 --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/general/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import SystemStorageTab from "../components/SystemStorageTab"; + +export default function SettingsGeneralPage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/settings/resilience/page.tsx b/src/app/(dashboard)/dashboard/settings/resilience/page.tsx new file mode 100644 index 0000000000..9b71032bda --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/resilience/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import ResilienceTab from "../components/ResilienceTab"; + +export default function SettingsResiliencePage() { + return ; +} diff --git a/src/app/(dashboard)/dashboard/settings/routing/page.tsx b/src/app/(dashboard)/dashboard/settings/routing/page.tsx new file mode 100644 index 0000000000..ae38e9cf13 --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/routing/page.tsx @@ -0,0 +1,19 @@ +"use client"; + +import RoutingTab from "../components/RoutingTab"; +import ModelRoutingSection from "@/shared/components/ModelRoutingSection"; +import ComboDefaultsTab from "../components/ComboDefaultsTab"; +import ModelAliasesUnified from "../components/ModelAliasesUnified"; +import BackgroundDegradationTab from "../components/BackgroundDegradationTab"; + +export default function SettingsRoutingPage() { + return ( +
+ + + + + +
+ ); +} diff --git a/src/app/(dashboard)/dashboard/settings/security/page.tsx b/src/app/(dashboard)/dashboard/settings/security/page.tsx new file mode 100644 index 0000000000..a711a26b2a --- /dev/null +++ b/src/app/(dashboard)/dashboard/settings/security/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import SecurityTab from "../components/SecurityTab"; + +export default function SettingsSecurityPage() { + return ; +} diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json index fa4403f807..3034e3752c 100644 --- a/src/i18n/messages/ar.json +++ b/src/i18n/messages/ar.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "بداية سريعة", diff --git a/src/i18n/messages/bg.json b/src/i18n/messages/bg.json index 9c9a2d6c29..5942c1ded3 100644 --- a/src/i18n/messages/bg.json +++ b/src/i18n/messages/bg.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Бърз старт", diff --git a/src/i18n/messages/bn.json b/src/i18n/messages/bn.json index 4703a0500f..09c249ad00 100644 --- a/src/i18n/messages/bn.json +++ b/src/i18n/messages/bn.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/cs.json b/src/i18n/messages/cs.json index b7a1679052..b644275721 100644 --- a/src/i18n/messages/cs.json +++ b/src/i18n/messages/cs.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Rychlý start", diff --git a/src/i18n/messages/da.json b/src/i18n/messages/da.json index c1e3082ca2..e70a96142f 100644 --- a/src/i18n/messages/da.json +++ b/src/i18n/messages/da.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Hurtig start", diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json index 0990810164..2541847721 100644 --- a/src/i18n/messages/de.json +++ b/src/i18n/messages/de.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Schnellstart", diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index a4276b5cef..0d22c7cd43 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -745,7 +745,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "Webhooks", @@ -903,7 +936,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/es.json b/src/i18n/messages/es.json index 6e86b3cd2b..2d5110c8b5 100644 --- a/src/i18n/messages/es.json +++ b/src/i18n/messages/es.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Inicio rápido", diff --git a/src/i18n/messages/fa.json b/src/i18n/messages/fa.json index e017c47900..57a35d96e1 100644 --- a/src/i18n/messages/fa.json +++ b/src/i18n/messages/fa.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/fi.json b/src/i18n/messages/fi.json index e58e6650cd..b2615ee5ba 100644 --- a/src/i18n/messages/fi.json +++ b/src/i18n/messages/fi.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Pika-aloitus", diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json index 9060311878..6398dc61c0 100644 --- a/src/i18n/messages/fr.json +++ b/src/i18n/messages/fr.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Démarrage rapide", diff --git a/src/i18n/messages/gu.json b/src/i18n/messages/gu.json index 2652920757..980d534517 100644 --- a/src/i18n/messages/gu.json +++ b/src/i18n/messages/gu.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/he.json b/src/i18n/messages/he.json index 0d34c7706d..d1a846d4bd 100644 --- a/src/i18n/messages/he.json +++ b/src/i18n/messages/he.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "התחלה מהירה", diff --git a/src/i18n/messages/hi.json b/src/i18n/messages/hi.json index 4854820747..e6c04a9b74 100644 --- a/src/i18n/messages/hi.json +++ b/src/i18n/messages/hi.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "त्वरित शुरुआत", diff --git a/src/i18n/messages/hu.json b/src/i18n/messages/hu.json index 9faee52bca..6426b56b1d 100644 --- a/src/i18n/messages/hu.json +++ b/src/i18n/messages/hu.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Gyors kezdés", diff --git a/src/i18n/messages/id.json b/src/i18n/messages/id.json index b1d61e4498..11beaa6ecc 100644 --- a/src/i18n/messages/id.json +++ b/src/i18n/messages/id.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Mulai Cepat", diff --git a/src/i18n/messages/in.json b/src/i18n/messages/in.json index ceb943e8aa..7e0f038e4a 100644 --- a/src/i18n/messages/in.json +++ b/src/i18n/messages/in.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/it.json b/src/i18n/messages/it.json index 7924b9e7e9..e3ee81d40e 100644 --- a/src/i18n/messages/it.json +++ b/src/i18n/messages/it.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Avvio rapido", diff --git a/src/i18n/messages/ja.json b/src/i18n/messages/ja.json index a8a1230275..9cfe229a7c 100644 --- a/src/i18n/messages/ja.json +++ b/src/i18n/messages/ja.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "クイックスタート", diff --git a/src/i18n/messages/ko.json b/src/i18n/messages/ko.json index 956aef5859..1f53d8403d 100644 --- a/src/i18n/messages/ko.json +++ b/src/i18n/messages/ko.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "빠른 시작", diff --git a/src/i18n/messages/mr.json b/src/i18n/messages/mr.json index 98225efcc5..b9c61e4bdb 100644 --- a/src/i18n/messages/mr.json +++ b/src/i18n/messages/mr.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/ms.json b/src/i18n/messages/ms.json index da697ce144..d34f6abb2e 100644 --- a/src/i18n/messages/ms.json +++ b/src/i18n/messages/ms.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Mula Pantas", diff --git a/src/i18n/messages/nl.json b/src/i18n/messages/nl.json index 06d579dc97..07dd6d99d4 100644 --- a/src/i18n/messages/nl.json +++ b/src/i18n/messages/nl.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Snel beginnen", diff --git a/src/i18n/messages/no.json b/src/i18n/messages/no.json index 9185414e71..c6168f536d 100644 --- a/src/i18n/messages/no.json +++ b/src/i18n/messages/no.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Rask start", diff --git a/src/i18n/messages/phi.json b/src/i18n/messages/phi.json index 9587994b1c..1dcf6ae5ee 100644 --- a/src/i18n/messages/phi.json +++ b/src/i18n/messages/phi.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Mabilis na Pagsisimula", diff --git a/src/i18n/messages/pl.json b/src/i18n/messages/pl.json index ee7ce5930a..a5bf5324e9 100644 --- a/src/i18n/messages/pl.json +++ b/src/i18n/messages/pl.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Szybki start", diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json index 9a7b3d39bc..097a06d3fc 100644 --- a/src/i18n/messages/pt-BR.json +++ b/src/i18n/messages/pt-BR.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Início Rápido", diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json index d5d82811f1..888b0ce547 100644 --- a/src/i18n/messages/pt.json +++ b/src/i18n/messages/pt.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Início rápido", diff --git a/src/i18n/messages/ro.json b/src/i18n/messages/ro.json index 58f1e6e0ab..1eb75bddb2 100644 --- a/src/i18n/messages/ro.json +++ b/src/i18n/messages/ro.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Pornire rapidă", diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json index b4d740d744..a1d132fb79 100644 --- a/src/i18n/messages/ru.json +++ b/src/i18n/messages/ru.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Быстрый старт", diff --git a/src/i18n/messages/sk.json b/src/i18n/messages/sk.json index 9ec963f54c..afe15949f4 100644 --- a/src/i18n/messages/sk.json +++ b/src/i18n/messages/sk.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Rýchly štart", diff --git a/src/i18n/messages/sv.json b/src/i18n/messages/sv.json index 9fd134151f..2191aec0db 100644 --- a/src/i18n/messages/sv.json +++ b/src/i18n/messages/sv.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Snabbstart", diff --git a/src/i18n/messages/sw.json b/src/i18n/messages/sw.json index ceb943e8aa..7e0f038e4a 100644 --- a/src/i18n/messages/sw.json +++ b/src/i18n/messages/sw.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/ta.json b/src/i18n/messages/ta.json index 1fb7236253..13ca01c095 100644 --- a/src/i18n/messages/ta.json +++ b/src/i18n/messages/ta.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/te.json b/src/i18n/messages/te.json index 0cf93454c7..638b487f17 100644 --- a/src/i18n/messages/te.json +++ b/src/i18n/messages/te.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/th.json b/src/i18n/messages/th.json index 521e0d0cd5..2b71955068 100644 --- a/src/i18n/messages/th.json +++ b/src/i18n/messages/th.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "เริ่มต้นอย่างรวดเร็ว", diff --git a/src/i18n/messages/tr.json b/src/i18n/messages/tr.json index e53c3999ea..58fb17521b 100644 --- a/src/i18n/messages/tr.json +++ b/src/i18n/messages/tr.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Hızlı Başlangıç", diff --git a/src/i18n/messages/uk-UA.json b/src/i18n/messages/uk-UA.json index 5cdc0e66b5..cd098f2c5c 100644 --- a/src/i18n/messages/uk-UA.json +++ b/src/i18n/messages/uk-UA.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Швидкий старт", diff --git a/src/i18n/messages/ur.json b/src/i18n/messages/ur.json index d6f55401dd..c9dde2bbfa 100644 --- a/src/i18n/messages/ur.json +++ b/src/i18n/messages/ur.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Quick Start", diff --git a/src/i18n/messages/vi.json b/src/i18n/messages/vi.json index 79c99cf100..efe0026965 100644 --- a/src/i18n/messages/vi.json +++ b/src/i18n/messages/vi.json @@ -743,7 +743,40 @@ "contextSection": "Context & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Compression Combos" + "contextCombos": "Compression Combos", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "__MISSING__:Webhooks", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "Bắt đầu nhanh", diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index 02fac89f94..ce0ecb2f97 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -743,7 +743,40 @@ "contextSection": "上下文与缓存", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "压缩组合" + "contextCombos": "压缩组合", + "routingSection": "Routing", + "protocolsSection": "Protocols", + "agentsAiSection": "Agents & AI", + "cacheContextSection": "Cache & Context", + "analyticsSection": "Analytics", + "costsSection": "Costs", + "monitoringSection": "Monitoring", + "auditSecuritySection": "Audit & Security", + "devtoolsSection": "Dev Tools", + "configurationSection": "Configuration", + "aiFeaturesSection": "AI Features", + "mcp": "MCP", + "a2a": "A2A", + "apiEndpoints": "API Endpoints", + "batchFiles": "Files", + "analyticsEvals": "Evals", + "analyticsSearch": "Search", + "analyticsUtilization": "Utilization", + "analyticsComboHealth": "Combo Health", + "analyticsCompression": "Compression", + "costsBudget": "Budget", + "costsPricing": "Pricing", + "logsProxy": "Proxy Logs", + "logsConsole": "Console", + "logsActivity": "Activity", + "auditMcp": "MCP Audit", + "settingsGeneral": "General", + "settingsAppearance": "Appearance", + "settingsAi": "AI Settings", + "settingsSecurity": "Security", + "settingsRouting": "Routing", + "settingsResilience": "Resilience", + "settingsAdvanced": "Advanced" }, "webhooks": { "title": "Webhook", @@ -901,7 +934,27 @@ "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections" + "proxyDescription": "Configure upstream proxy settings for outbound provider connections", + "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", + "batchFilesDescription": "Browse and manage batch job output files and results", + "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", + "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", + "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", + "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", + "analyticsCompressionDescription": "Context compression analytics and token savings", + "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", + "costsPricingDescription": "Custom pricing configuration for token cost calculations", + "logsProxyDescription": "Upstream proxy request logs and traffic inspection", + "logsConsoleDescription": "Application console output and debug logs", + "logsActivityDescription": "Audit trail of user actions and system events", + "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "settingsGeneralDescription": "Storage, database, and general instance configuration", + "settingsAppearanceDescription": "Theme, branding, and visual customization", + "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", + "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", + "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings" }, "home": { "quickStart": "快速入门", diff --git a/src/shared/components/Header.tsx b/src/shared/components/Header.tsx index 83b7973220..cf399408c3 100644 --- a/src/shared/components/Header.tsx +++ b/src/shared/components/Header.tsx @@ -37,7 +37,6 @@ const HEADER_DESCRIPTIONS: Partial> = { cache: "cacheDescription", limits: "limitsDescription", media: "mediaDescription", - "cli-tools": "cliToolsDescription", agents: "agentsDescription", "cloud-agents": "cloudAgentsDescription", memory: "memoryDescription", @@ -56,6 +55,35 @@ const HEADER_DESCRIPTIONS: Partial> = { health: "healthDescription", proxy: "proxyDescription", changelog: "changelogDescription", + // Protocols + mcp: "mcpDescription", + a2a: "a2aDescription", + "api-endpoints": "apiEndpointsDescription", + // Agents & AI sub-pages + "batch-files": "batchFilesDescription", + // Analytics sub-pages + "analytics-evals": "analyticsEvalsDescription", + "analytics-search": "analyticsSearchDescription", + "analytics-utilization": "analyticsUtilizationDescription", + "analytics-combo-health": "analyticsComboHealthDescription", + "analytics-compression": "analyticsCompressionDescription", + // Costs sub-pages + "costs-budget": "costsBudgetDescription", + "costs-pricing": "costsPricingDescription", + // Logs sub-pages + "logs-proxy": "logsProxyDescription", + "logs-console": "logsConsoleDescription", + "logs-activity": "logsActivityDescription", + // Audit sub-pages + "audit-mcp": "auditMcpDescription", + // Settings sub-pages + "settings-general": "settingsGeneralDescription", + "settings-appearance": "settingsAppearanceDescription", + "settings-ai": "settingsAiDescription", + "settings-security": "settingsSecurityDescription", + "settings-routing": "settingsRoutingDescription", + "settings-resilience": "settingsResilienceDescription", + "settings-advanced": "settingsAdvancedDescription", }; // Build href → sidebar item lookup (non-external items only) diff --git a/src/shared/components/Sidebar.tsx b/src/shared/components/Sidebar.tsx index bd7817e0d0..a045108ac3 100644 --- a/src/shared/components/Sidebar.tsx +++ b/src/shared/components/Sidebar.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef, useCallback } from "react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { cn } from "@/shared/utils/cn"; @@ -16,9 +16,12 @@ import { SIDEBAR_SETTINGS_UPDATED_EVENT, SIDEBAR_SECTIONS, normalizeHiddenSidebarItems, + type SidebarSectionId, } from "@/shared/constants/sidebarVisibility"; const isE2EMode = process.env.NEXT_PUBLIC_OMNIROUTE_E2E_MODE === "1"; +const DEFAULT_EXPANDED: SidebarSectionId = "routing"; +const EXPANDED_SECTIONS_KEY = "sidebar-expanded-sections"; type SidebarProps = { onClose?: () => void; @@ -27,6 +30,8 @@ type SidebarProps = { isMacElectron?: boolean; }; +type HoveredItem = { id: string; label: string; x: number; y: number } | null; + export default function Sidebar({ onClose, collapsed = false, @@ -36,6 +41,7 @@ export default function Sidebar({ const pathname = usePathname(); const t = useTranslations("sidebar"); const tc = useTranslations("common"); + const sidebarRef = useRef(null); const [showShutdownModal, setShowShutdownModal] = useState(false); const [showRestartModal, setShowRestartModal] = useState(false); const [isShuttingDown, setIsShuttingDown] = useState(false); @@ -45,6 +51,27 @@ export default function Sidebar({ const [hiddenSidebarItems, setHiddenSidebarItems] = useState([]); const [customAppName, setCustomAppName] = useState(null); const [customLogo, setCustomLogo] = useState(null); + const [expandedSections, setExpandedSections] = useState>( + new Set([DEFAULT_EXPANDED]) + ); + const [hoveredItem, setHoveredItem] = useState(null); + + // Load persisted expanded sections on mount + useEffect(() => { + try { + const stored = localStorage.getItem(EXPANDED_SECTIONS_KEY); + if (stored) { + const parsed = JSON.parse(stored) as SidebarSectionId[]; + if (Array.isArray(parsed) && parsed.length > 0) { + setExpandedSections(new Set(parsed)); + return; + } + } + } catch { + // ignore parse errors + } + setExpandedSections(new Set([DEFAULT_EXPANDED])); + }, []); useEffect(() => { const applySettings = (data) => { @@ -93,6 +120,62 @@ export default function Sidebar({ }; }, []); + const getSidebarLabel = (key: string, fallback: string) => + typeof t.has === "function" && t.has(key) ? t(key) : fallback; + + const hiddenSidebarSet = new Set(hiddenSidebarItems); + const visibleSections = SIDEBAR_SECTIONS.filter( + (section) => section.visibility !== "debug" || showDebug + ) + .map((section) => ({ + ...section, + title: getSidebarLabel(section.titleKey, section.titleFallback), + items: section.items + .map((item) => ({ ...item, label: getSidebarLabel(item.i18nKey, item.id) })) + .filter((item) => !hiddenSidebarSet.has(item.id)), + })) + .filter((section) => section.items.length > 0); + + const activeHref = getActiveSidebarHref( + pathname, + visibleSections.flatMap((section) => section.items) + ); + + // Auto-expand the section containing the active page + useEffect(() => { + if (collapsed) return; + for (const section of visibleSections) { + if (section.items.some((item) => !item.external && item.href === activeHref)) { + setExpandedSections((prev) => { + if (prev.has(section.id as SidebarSectionId)) return prev; + const next = new Set(prev); + next.add(section.id as SidebarSectionId); + try { + localStorage.setItem(EXPANDED_SECTIONS_KEY, JSON.stringify([...next])); + } catch {} + return next; + }); + break; + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeHref, collapsed]); + + const toggleSection = useCallback((sectionId: SidebarSectionId) => { + setExpandedSections((prev) => { + const next = new Set(prev); + if (next.has(sectionId)) { + next.delete(sectionId); + } else { + next.add(sectionId); + } + try { + localStorage.setItem(EXPANDED_SECTIONS_KEY, JSON.stringify([...next])); + } catch {} + return next; + }); + }, []); + const handleShutdown = async () => { setIsShuttingDown(true); try { @@ -120,46 +203,50 @@ export default function Sidebar({ }, 3000); }; - const getSidebarLabel = (key: string, fallback: string) => - typeof t.has === "function" && t.has(key) ? t(key) : fallback; - - const hiddenSidebarSet = new Set(hiddenSidebarItems); - const visibleSections = SIDEBAR_SECTIONS.filter( - (section) => section.visibility !== "debug" || showDebug - ) - .map((section) => ({ - ...section, - title: getSidebarLabel(section.titleKey, section.titleFallback), - items: section.items - .map((item) => ({ ...item, label: t(item.i18nKey) })) - .filter((item) => !hiddenSidebarSet.has(item.id)), - })) - .filter((section) => section.items.length > 0); - const activeHref = getActiveSidebarHref( - pathname, - visibleSections.flatMap((section) => section.items) + const handleMouseEnter = useCallback( + (e: React.MouseEvent, id: string, label: string) => { + if (!collapsed) return; + const rect = e.currentTarget.getBoundingClientRect(); + const sidebarRect = sidebarRef.current?.getBoundingClientRect(); + setHoveredItem({ + id, + label, + x: (sidebarRect?.right ?? 64) + 8, + y: rect.top + rect.height / 2, + }); + }, + [collapsed] ); + const handleMouseLeave = useCallback(() => { + setHoveredItem(null); + }, []); + const renderNavLink = (item) => { const active = !item.external && activeHref === item.href; const className = cn( "flex items-center gap-3 rounded-lg transition-all group", - collapsed ? "justify-center px-2 py-2.5" : "px-4 py-2", + collapsed ? "justify-center px-2 py-2.5" : "px-3 py-1.5", active ? "bg-primary/10 text-primary" : "text-text-muted hover:bg-surface/50 hover:text-text-main" ); const iconClassName = cn( - "material-symbols-outlined text-[18px]", + "material-symbols-outlined text-[18px] shrink-0", active ? "fill-1" : "group-hover:text-primary transition-colors" ); const content = ( <> {item.icon} - {!collapsed && {item.label}} + {!collapsed && {item.label}} ); + const sharedProps = { + onMouseEnter: (e: React.MouseEvent) => handleMouseEnter(e, item.id, item.label), + onMouseLeave: handleMouseLeave, + }; + if (item.external) { return ( {content} @@ -181,8 +268,8 @@ export default function Sidebar({ key={item.href} href={item.href} onClick={onClose} - title={collapsed ? item.label : undefined} className={className} + {...sharedProps} > {content} @@ -192,9 +279,10 @@ export default function Sidebar({ return ( <>
)} -
+
-
+
{customLogo ? ( ) : ( - + )}
{!collapsed && ( -
-

+
+

{customAppName || APP_CONFIG.name}

- v{APP_CONFIG.version} + v{APP_CONFIG.version}
)} @@ -273,24 +361,55 @@ export default function Sidebar({

-
+
{aggregatorProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( {t("enterpriseCloud")} -
+
{enterpriseProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( {t("imageProviders")} -
+
{imageProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( {t("videoProviders")} -
+
{videoProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( {t("embeddingRerankProviders")} -
+
{embeddingRerankProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => (
-
+
{webCookieProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => (
-
+
{searchProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => (
-
+
{audioProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => (
-
+
{cloudAgentProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => (
-
+
{localProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => (
-
+
{upstreamProxyEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( )} - {/* API Key Compatible Providers — dynamic (OpenAI/Anthropic compatible) */} -
-
-

- {t("compatibleProviders")}{" "} - - -

-
- {(compatibleProviders.length > 0 || - anthropicCompatibleProviders.length > 0 || - ccCompatibleProviders.length > 0) && ( - - )} - {ccCompatibleProviderEnabled && ( - - )} - - -
-
- {compatibleProviders.length === 0 && - anthropicCompatibleProviders.length === 0 && - ccCompatibleProviders.length === 0 ? ( -
- - extension - -

{t("noCompatibleYet")}

-

{t("compatibleHint")}

-
- ) : ( -
- {compatibleProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} -
- )} -
Date: Sat, 16 May 2026 12:01:31 -0300 Subject: [PATCH 23/33] fix(dashboard,sse): correct opencode free provider and free section dot color Add passthroughModels: true to the opencode registry entry so that unknown model IDs trigger model lockout instead of connection cooldown. Fix dot color for FREE_PROVIDERS in the Free Tier section by using toggleAuthType === "free" to select the green dot instead of the blue oauth dot. --- open-sse/config/providerRegistry.ts | 1 + src/app/(dashboard)/dashboard/providers/page.tsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts index 5fc4b2b494..682395ebde 100644 --- a/open-sse/config/providerRegistry.ts +++ b/open-sse/config/providerRegistry.ts @@ -1044,6 +1044,7 @@ export const REGISTRY: Record = { authType: "apikey", authHeader: "Authorization", authPrefix: "Bearer", + passthroughModels: true, defaultContextLength: 200000, models: [ { id: "big-pickle", name: "Big Pickle" }, diff --git a/src/app/(dashboard)/dashboard/providers/page.tsx b/src/app/(dashboard)/dashboard/providers/page.tsx index fa2f5c30b0..55ac1c78fc 100644 --- a/src/app/(dashboard)/dashboard/providers/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/page.tsx @@ -730,7 +730,7 @@ export default function ProvidersPage() { providerId={providerId} provider={{ ...provider, hasFree: false }} stats={stats} - authType={displayAuthType} + authType={toggleAuthType === "free" ? "free" : displayAuthType} onToggle={(active) => handleToggleProvider(providerId, toggleAuthType, active)} /> ) From b3b006b6304548be180a05189451e2be9d47a881 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 12:25:02 -0300 Subject: [PATCH 24/33] fix(dashboard): compact empty state, remove free badges, shrink toggle - ProviderCard: remove Free Tier badge (dots already indicate type/free) - ProviderCard: add dual-dot for providers with hasFree + paid authType - ProviderCard: font-size xs for name, Toggle shrunk to size xs - Toggle: add xs size variant (w-6 h-3 track, 8px thumb) - page.tsx: compact Compatible Providers empty state (single inline line) --- .../providers/components/ProviderCard.tsx | 28 ++++++++----------- .../(dashboard)/dashboard/providers/page.tsx | 9 ++---- src/shared/components/Toggle.tsx | 7 ++++- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx b/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx index 86567d108a..dd11fe7f63 100644 --- a/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx +++ b/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx @@ -166,8 +166,10 @@ export default function ProviderCard({ )}
-

- +

+ {provider.name} {provider.deprecated && ( @@ -183,9 +185,15 @@ export default function ProviderCard({ )} + {provider.hasFree === true && authType !== "free" && ( + + )}

{allDisabled ? ( @@ -198,18 +206,6 @@ export default function ProviderCard({ ) : ( <> {getStatusDisplay(connected, error, stats.errorCode, t, codexFastChip)} - {(authType === "free" || provider.hasFree === true) && ( - - - redeem - {t("freeTier")} - - - )} {stats.expiryStatus === "expired" && ( {t("expiredBadge")} @@ -247,7 +243,7 @@ export default function ProviderCard({ {Number(stats.total || 0) > 0 && (
{}} title={allDisabled ? t("enableProvider") : t("disableProvider")} diff --git a/src/app/(dashboard)/dashboard/providers/page.tsx b/src/app/(dashboard)/dashboard/providers/page.tsx index 55ac1c78fc..9280e9b85b 100644 --- a/src/app/(dashboard)/dashboard/providers/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/page.tsx @@ -650,12 +650,9 @@ export default function ProvidersPage() { {compatibleProviders.length === 0 && anthropicCompatibleProviders.length === 0 && ccCompatibleProviders.length === 0 ? ( -
- - extension - -

{t("noCompatibleYet")}

-

{t("compatibleHint")}

+
+ extension + {t("noCompatibleYet")}
) : (
diff --git a/src/shared/components/Toggle.tsx b/src/shared/components/Toggle.tsx index e8b0e79cbf..521f50f14a 100644 --- a/src/shared/components/Toggle.tsx +++ b/src/shared/components/Toggle.tsx @@ -8,7 +8,7 @@ interface ToggleProps { label?: string; description?: string; disabled?: boolean; - size?: "sm" | "md" | "lg"; + size?: "xs" | "sm" | "md" | "lg"; className?: string; title?: string; ariaLabel?: string; @@ -26,6 +26,11 @@ export default function Toggle({ ariaLabel, }: ToggleProps) { const sizes = { + xs: { + track: "w-6 h-3", + thumb: "size-[8px]", + translate: "translate-x-3.5", + }, sm: { track: "w-8 h-4", thumb: "size-3", From f224b9f104386c4ce32a6cdf122021afb29f2d9c Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 13:53:18 -0300 Subject: [PATCH 25/33] fix(dashboard): correct dot colors per provider type + search/legend bar - ProviderCard: add cloud-agent dot (violet) to DOT_COLORS - page.tsx: web-cookie/search/audio/cloud-agent/local/upstream-proxy sections now pass their actual type as authType instead of displayAuthType (which was always "apikey" for all static catalog groups) - page.tsx: split search bar row into 25% input + 75% dot-type legend showing all 10 auth types with their colors and translated labels --- .../providers/components/ProviderCard.tsx | 1 + .../(dashboard)/dashboard/providers/page.tsx | 159 +++++++++--------- 2 files changed, 85 insertions(+), 75 deletions(-) diff --git a/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx b/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx index dd11fe7f63..60710bdfed 100644 --- a/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx +++ b/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx @@ -51,6 +51,7 @@ const DOT_COLORS: Record = { audio: "bg-rose-500", local: "bg-emerald-500", "upstream-proxy": "bg-indigo-500", + "cloud-agent": "bg-violet-500", }; function getStatusDisplay( diff --git a/src/app/(dashboard)/dashboard/providers/page.tsx b/src/app/(dashboard)/dashboard/providers/page.tsx index 9280e9b85b..6185f4412a 100644 --- a/src/app/(dashboard)/dashboard/providers/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/page.tsx @@ -581,9 +581,9 @@ export default function ProvidersPage() { return (
- {/* Search Bar */} -
-
+ {/* Search Bar + Dot Legend */} +
+
search @@ -604,6 +604,27 @@ export default function ProvidersPage() { )}
+
+ {( + [ + ["bg-green-500", tc("free")], + ["bg-blue-500", t("oauthLabel")], + ["bg-amber-500", t("apiKeyLabel")], + ["bg-orange-500", t("compatibleLabel")], + ["bg-purple-500", t("webCookieProviders")], + ["bg-teal-500", t("searchProvidersHeading")], + ["bg-rose-500", t("audioProvidersHeading")], + ["bg-emerald-500", t("localProviders")], + ["bg-indigo-500", t("upstreamProxyProviders")], + ["bg-violet-500", t("cloudAgentProviders")], + ] as [string, string][] + ).map(([color, label]) => ( + + + {label} + + ))} +
{/* API Key Compatible Providers — dynamic (OpenAI/Anthropic compatible) */} @@ -1004,18 +1025,16 @@ export default function ProvidersPage() {
- {webCookieProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} + {webCookieProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + handleToggleProvider(providerId, toggleAuthType, active)} + /> + ))}
)} @@ -1049,18 +1068,16 @@ export default function ProvidersPage() {
- {searchProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} + {searchProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + handleToggleProvider(providerId, toggleAuthType, active)} + /> + ))}
)} @@ -1094,18 +1111,16 @@ export default function ProvidersPage() {
- {audioProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} + {audioProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + handleToggleProvider(providerId, toggleAuthType, active)} + /> + ))}
)} @@ -1139,18 +1154,16 @@ export default function ProvidersPage() {
- {cloudAgentProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} + {cloudAgentProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + handleToggleProvider(providerId, toggleAuthType, active)} + /> + ))}

)} @@ -1181,18 +1194,16 @@ export default function ProvidersPage() {
- {localProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} + {localProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + handleToggleProvider(providerId, toggleAuthType, active)} + /> + ))}
)} @@ -1226,18 +1237,16 @@ export default function ProvidersPage() {
- {upstreamProxyEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ) - )} + {upstreamProxyEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + handleToggleProvider(providerId, toggleAuthType, active)} + /> + ))}
)} From 789a26396723e3cbfdb6df71972034048535c898 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 15:53:37 -0300 Subject: [PATCH 26/33] feat(dashboard): provider summary card, free test btn, sidebar order, i18n fix - sidebarVisibility: move endpoints before api-manager - en.json: add freeTierProviders/Label/Desc + providerSummaryAll to providers namespace - page.tsx: apply showConfiguredOnly filter to free tier section (was hardcoded false) - page.tsx: replace search bar with summary Card containing: search (25%) + configured-only toggle + test-all button / dot legend / stats row stats show Total / Free / OAuth / API Key configured/total counts - page.tsx: add batch test button to Free Tier Providers section header - page.tsx: remove duplicate configured-only toggle from OAuth section header - page.tsx: import Card component --- .../(dashboard)/dashboard/providers/page.tsx | 188 ++++++++++++------ src/i18n/messages/en.json | 6 +- src/shared/constants/sidebarVisibility.ts | 2 +- 3 files changed, 137 insertions(+), 59 deletions(-) diff --git a/src/app/(dashboard)/dashboard/providers/page.tsx b/src/app/(dashboard)/dashboard/providers/page.tsx index 6185f4412a..ad77339f55 100644 --- a/src/app/(dashboard)/dashboard/providers/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/page.tsx @@ -1,7 +1,7 @@ "use client"; import { useState, useEffect, useCallback } from "react"; -import { CardSkeleton, Badge, Button, Input, Toggle } from "@/shared/components"; +import { Card, CardSkeleton, Badge, Button, Input, Toggle } from "@/shared/components"; import { FREE_PROVIDERS, OAUTH_PROVIDERS, @@ -566,10 +566,23 @@ export default function ProvidersPage() { ); const freeSectionEntries = filterConfiguredProviderEntries( freeSectionEntriesAll, - false, + showConfiguredOnly, searchQuery ); + const oauthOnlyEntriesAll = oauthProviderEntriesAll.filter((e) => e.toggleAuthType === "oauth"); + const summaryStats = { + all: { + configured: + oauthProviderEntriesAll.filter((e) => Number(e.stats?.total || 0) > 0).length + + apiKeyProviderEntriesAll.filter((e) => Number(e.stats?.total || 0) > 0).length, + total: oauthProviderEntriesAll.length + apiKeyProviderEntriesAll.length, + }, + free: countConfigured(freeSectionEntriesAll), + oauth: countConfigured(oauthOnlyEntriesAll), + apikey: countConfigured(apiKeyProviderEntriesAll), + }; + if (loading) { return (
@@ -581,51 +594,102 @@ export default function ProvidersPage() { return (
- {/* Search Bar + Dot Legend */} -
-
- - search - - setSearchQuery(e.target.value)} - placeholder={t("searchProviders")} - aria-label={t("searchProviders")} - className="pl-10 pr-10" - /> - {searchQuery && ( + {/* Provider Summary Card */} + +
+ {/* Row 1: Search + Controls */} +
+
+ + search + + setSearchQuery(e.target.value)} + placeholder={t("searchProviders")} + aria-label={t("searchProviders")} + className="pl-10 pr-10" + /> + {searchQuery && ( + + )} +
+
+ - )} +
+ + {/* Row 2: Legend */} +
+ {( + [ + ["bg-green-500", tc("free")], + ["bg-blue-500", t("oauthLabel")], + ["bg-amber-500", t("apiKeyLabel")], + ["bg-orange-500", t("compatibleLabel")], + ["bg-purple-500", t("webCookieProviders")], + ["bg-teal-500", t("searchProvidersHeading")], + ["bg-rose-500", t("audioProvidersHeading")], + ["bg-emerald-500", t("localProviders")], + ["bg-indigo-500", t("upstreamProxyProviders")], + ["bg-violet-500", t("cloudAgentProviders")], + ] as [string, string][] + ).map(([color, label]) => ( + + + {label} + + ))} +
+ + {/* Divider + Stats */} +
+ {( + [ + [null, t("providerSummaryAll"), summaryStats.all], + ["bg-green-500", tc("free"), summaryStats.free], + ["bg-blue-500", t("oauthLabel"), summaryStats.oauth], + ["bg-amber-500", t("apiKeyLabel"), summaryStats.apikey], + ] as [string | null, string, { configured: number; total: number }][] + ).map(([color, label, stat]) => ( + + {color && } + {label} + + {stat.configured} + /{stat.total} + + + ))} +
-
- {( - [ - ["bg-green-500", tc("free")], - ["bg-blue-500", t("oauthLabel")], - ["bg-amber-500", t("apiKeyLabel")], - ["bg-orange-500", t("compatibleLabel")], - ["bg-purple-500", t("webCookieProviders")], - ["bg-teal-500", t("searchProvidersHeading")], - ["bg-rose-500", t("audioProvidersHeading")], - ["bg-emerald-500", t("localProviders")], - ["bg-indigo-500", t("upstreamProxyProviders")], - ["bg-violet-500", t("cloudAgentProviders")], - ] as [string, string][] - ).map(([color, label]) => ( - - - {label} - - ))} -
-
+
{/* API Key Compatible Providers — dynamic (OpenAI/Anthropic compatible) */}
@@ -732,13 +796,30 @@ export default function ProvidersPage() { {/* Free Tier Providers */} {freeSectionEntries.length > 0 && (
-
-

- {t("freeTierProviders")} - - -

-

{t("freeTierProvidersDesc")}

+
+
+

+ {t("freeTierProviders")} + + +

+

{t("freeTierProvidersDesc")}

+
+
{freeSectionEntries.map( @@ -766,13 +847,6 @@ export default function ProvidersPage() {
- )}
-
Date: Sat, 16 May 2026 17:38:30 -0300 Subject: [PATCH 28/33] fix(config): replace wildcard 192.168.* with exact IP in allowedDevOrigins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Next.js does not support glob patterns in allowedDevOrigins, so the wildcard was silently ignored — blocking HMR access from 192.168.0.250 and causing an infinite loading spinner on the login page when accessed from the LAN. --- next.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next.config.mjs b/next.config.mjs index 34e209a73e..8c875b8228 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -133,7 +133,7 @@ const nextConfig = { "process", ], transpilePackages: ["@omniroute/open-sse", "@lobehub/icons"], - allowedDevOrigins: ["localhost", "127.0.0.1", "192.168.*"], + allowedDevOrigins: ["localhost", "127.0.0.1", "192.168.0.250"], typescript: { // TODO: Re-enable after fixing all sub-component useTranslations scope issues ignoreBuildErrors: true, From 56b0ea91c91d1635c06d91efe9002d383f30217a Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 17:46:50 -0300 Subject: [PATCH 29/33] fix(endpoint): replace nested +
{expandedTunnel === "ts" && (
{tailscaleNotice && ( @@ -1600,9 +1608,17 @@ export default function APIPageClient({ machineId }: Readonly - +
{expandedTunnel === "ngrok" && (
{ngrokNotice && ( From 08f03a0fa6493c26abc4425b661d75a9e7ac0d92 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 19:12:58 -0300 Subject: [PATCH 30/33] fix(auth): stop retrying unrecoverable token refresh failures Propagate invalid refresh-token errors instead of collapsing them to null so callers can distinguish expired credentials from transient failures. Mark affected connections as expired and inactive when refresh fails with an unrecoverable error, and persist that state during credential updates. Add tests covering retry bail-out and Claude/Codex refresh error handling. --- open-sse/executors/codex.ts | 10 ++- open-sse/handlers/chatCore.ts | 15 ++++- open-sse/services/tokenRefresh.ts | 20 +++++- src/sse/handlers/chatHelpers.ts | 3 +- src/sse/services/tokenRefresh.ts | 3 + tests/unit/executor-codex.test.ts | 18 ++++++ tests/unit/token-refresh-service.test.ts | 79 ++++++++++++++++++++++++ 7 files changed, 139 insertions(+), 9 deletions(-) diff --git a/open-sse/executors/codex.ts b/open-sse/executors/codex.ts index b68ed08c6b..4270d8a869 100644 --- a/open-sse/executors/codex.ts +++ b/open-sse/executors/codex.ts @@ -1190,12 +1190,16 @@ export class CodexExecutor extends BaseExecutor { return null; } const result = await getAccessToken("codex", credentials, log); - if (!result || result.error) { + if (!result) { + log?.warn?.("TOKEN_REFRESH", "Codex: token refresh failed — re-authentication required"); + return null; + } + if (result.error) { log?.warn?.( "TOKEN_REFRESH", - `Codex: token refresh failed${result?.error ? ` (${result.error})` : ""} — re-authentication required` + `Codex: token refresh failed (${result.error}) — re-authentication required` ); - return null; + return result; } return result; } diff --git a/open-sse/handlers/chatCore.ts b/open-sse/handlers/chatCore.ts index 7146188bc2..249463352d 100644 --- a/open-sse/handlers/chatCore.ts +++ b/open-sse/handlers/chatCore.ts @@ -13,7 +13,7 @@ import { ensureStreamReadiness } from "../utils/streamReadiness.ts"; import { createStreamController, pipeWithDisconnect } from "../utils/streamHandler.ts"; import { createSseHeartbeatTransform, shapeForClientFormat } from "../utils/sseHeartbeat.ts"; import { addBufferToUsage, filterUsageForFormat, estimateUsage } from "../utils/usageTracking.ts"; -import { refreshWithRetry } from "../services/tokenRefresh.ts"; +import { refreshWithRetry, isUnrecoverableRefreshError } from "../services/tokenRefresh.ts"; import { createRequestLogger } from "../utils/requestLogger.ts"; import { getModelTargetFormat, PROVIDER_ID_TO_ALIAS } from "../config/providerModels.ts"; import { @@ -3471,6 +3471,9 @@ export async function handleChatCore({ } } else { log?.warn?.("TOKEN", `${provider.toUpperCase()} | refresh failed`); + if (isUnrecoverableRefreshError(newCredentials) && onCredentialsRefreshed) { + await onCredentialsRefreshed({ testStatus: "expired", isActive: false }); + } } } @@ -4134,7 +4137,10 @@ export async function handleChatCore({ try { const firstChoice = translatedResponse?.choices?.[0]; const msg = firstChoice?.message; - cacheReasoningFromAssistantMessage(msg, provider, model, { requestId: skillRequestId, messageIndex: 0 }); + cacheReasoningFromAssistantMessage(msg, provider, model, { + requestId: skillRequestId, + messageIndex: 0, + }); } catch { // Cache capture is non-critical — never block the response } @@ -4421,7 +4427,10 @@ export async function handleChatCore({ const body = streamResponseBody as Record; const choices = body.choices as { message?: Record }[] | undefined; const msg = choices?.[0]?.message; - cacheReasoningFromAssistantMessage(msg, provider, model, { requestId: skillRequestId, messageIndex: 0 }); + cacheReasoningFromAssistantMessage(msg, provider, model, { + requestId: skillRequestId, + messageIndex: 0, + }); } catch { // Cache capture is non-critical — never block the stream } diff --git a/open-sse/services/tokenRefresh.ts b/open-sse/services/tokenRefresh.ts index 33f0848756..7f5964fece 100755 --- a/open-sse/services/tokenRefresh.ts +++ b/open-sse/services/tokenRefresh.ts @@ -346,11 +346,20 @@ export async function refreshClaudeOAuthToken(refreshToken, log, proxyConfig: un ); if (!response.ok) { - const errorText = await response.text(); + let errorBody: { error?: string; error_description?: string } = {}; + try { + errorBody = await response.json(); + } catch { + const text = await response.text().catch(() => "unknown"); + errorBody = { error: text }; + } log?.error?.("TOKEN_REFRESH", "Failed to refresh Claude OAuth token", { status: response.status, - error: errorText, + error: errorBody, }); + if (errorBody.error === "invalid_grant" || errorBody.error === "invalid_request") { + return { error: errorBody.error, code: `http_${response.status}` }; + } return null; } @@ -1277,6 +1286,13 @@ export async function refreshWithRetry( try { const result = await withTimeout(refreshFn, REFRESH_TIMEOUT_MS); + if (isUnrecoverableRefreshError(result)) { + log?.warn?.( + "TOKEN_REFRESH", + `Unrecoverable refresh error for ${provider}: ${result.error} — skipping retries` + ); + return result; + } if (result) { recordSuccess(provider); return result; diff --git a/src/sse/handlers/chatHelpers.ts b/src/sse/handlers/chatHelpers.ts index ec4dc2774a..b9d34d1b8e 100644 --- a/src/sse/handlers/chatHelpers.ts +++ b/src/sse/handlers/chatHelpers.ts @@ -334,7 +334,8 @@ export async function executeChatWithBreaker({ // apiKey blob mid-request — forward it so the DB credential // doesn't go stale after Set-Cookie rotation. apiKey: newCreds.apiKey, - testStatus: "active", + testStatus: newCreds.testStatus ?? "active", + isActive: newCreds.isActive, }); }, onRequestSuccess: async () => { diff --git a/src/sse/services/tokenRefresh.ts b/src/sse/services/tokenRefresh.ts index 244eb70558..ad9b77e484 100755 --- a/src/sse/services/tokenRefresh.ts +++ b/src/sse/services/tokenRefresh.ts @@ -141,6 +141,9 @@ export async function updateProviderCredentials(connectionId: string, newCredent if (newCredentials.testStatus) { updates.testStatus = newCredentials.testStatus; } + if (newCredentials.isActive !== undefined) { + updates.isActive = newCredentials.isActive; + } const result = await updateProviderConnection(connectionId, updates); log.info("TOKEN_REFRESH", "Credentials updated in localDb", { diff --git a/tests/unit/executor-codex.test.ts b/tests/unit/executor-codex.test.ts index 092320f075..41e093c8a7 100644 --- a/tests/unit/executor-codex.test.ts +++ b/tests/unit/executor-codex.test.ts @@ -1219,6 +1219,24 @@ test("CodexExecutor.refreshCredentials refreshes OAuth tokens and returns null w } }); +test("CodexExecutor.refreshCredentials propagates unrecoverable error object instead of returning null", async () => { + const executor = new CodexExecutor(); + const originalFetch = globalThis.fetch; + globalThis.fetch = async () => + new Response( + JSON.stringify({ error: "invalid_grant", error_description: "Refresh token expired" }), + { status: 400, headers: { "Content-Type": "application/json" } } + ); + + try { + const result = await executor.refreshCredentials({ refreshToken: "dead-token" }, null); + assert.ok(result !== null, "should return error object, not null"); + assert.equal((result as any).error, "unrecoverable_refresh_error"); + } finally { + globalThis.fetch = originalFetch; + } +}); + test("CodexExecutor maps usage_limit_reached websocket failures without explicit status to 429", () => { const raw = JSON.stringify({ type: "response.failed", diff --git a/tests/unit/token-refresh-service.test.ts b/tests/unit/token-refresh-service.test.ts index 8dfb5e93fe..339e912056 100644 --- a/tests/unit/token-refresh-service.test.ts +++ b/tests/unit/token-refresh-service.test.ts @@ -1121,3 +1121,82 @@ test("getAccessToken per-connection mutex: mutex cleared after success, next cal } ); }); + +// ─── Unrecoverable error bail-out tests ────────────────────────────────────── + +test("refreshWithRetry bails immediately on unrecoverable error without retrying", async () => { + const provider = `bail-unrecoverable-${Date.now()}`; + const log = createLog(); + let callCount = 0; + + const result = await refreshWithRetry( + async () => { + callCount++; + return { error: "unrecoverable_refresh_error", code: "http_400" }; + }, + 3, + log, + provider + ); + + assert.equal(callCount, 1, "should only call refreshFn once (no retries)"); + assert.deepEqual(result, { error: "unrecoverable_refresh_error", code: "http_400" }); + const warnMessages = log.entries.filter((e) => e.level === "warn").map((e) => e.message); + assert.ok( + warnMessages.some((m) => String(m).includes("Unrecoverable")), + "should log an unrecoverable warning" + ); +}); + +test("refreshWithRetry bails immediately on invalid_grant error without retrying", async () => { + const provider = `bail-invalid-grant-${Date.now()}`; + const log = createLog(); + let callCount = 0; + + const result = await refreshWithRetry( + async () => { + callCount++; + return { error: "invalid_grant", code: "http_400" }; + }, + 3, + log, + provider + ); + + assert.equal(callCount, 1, "should only call refreshFn once (no retries)"); + assert.deepEqual(result, { error: "invalid_grant", code: "http_400" }); +}); + +test("refreshClaudeOAuthToken returns error object for invalid_grant (expired refresh token)", async () => { + const log = createLog(); + + await withMockedFetch( + async () => + new Response(JSON.stringify({ error: "invalid_grant", error_description: "Token expired" }), { + status: 400, + headers: { "Content-Type": "application/json" }, + }), + async () => { + const result = await refreshClaudeOAuthToken("expired-token", log); + assert.ok(result && typeof result === "object", "should return error object, not null"); + assert.equal((result as any).error, "invalid_grant"); + assert.ok(isUnrecoverableRefreshError(result), "should be detected as unrecoverable"); + } + ); +}); + +test("refreshClaudeOAuthToken returns null for transient server errors (not unrecoverable)", async () => { + const log = createLog(); + + await withMockedFetch( + async () => + new Response(JSON.stringify({ error: "server_error" }), { + status: 503, + headers: { "Content-Type": "application/json" }, + }), + async () => { + const result = await refreshClaudeOAuthToken("some-token", log); + assert.equal(result, null, "transient server errors should return null (retryable)"); + } + ); +}); From fd28e772a83b75bfb840cdd47940f3e87140a48e Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 21:05:49 -0300 Subject: [PATCH 31/33] fix(dashboard): show no-auth card for free providers instead of OAuth modal OpenCode Free (noAuth: true) was routed through OAuthModal which tried to call a non-existent /api/oauth/opencode/authorize endpoint, resulting in a 500 error. Detect noAuth free providers via FREE_PROVIDERS[id]?.noAuth and render a NoAuthProviderCard (lock_open + description) instead of the connections section with the "+ Add" button that triggered the broken flow. --- .../dashboard/providers/[id]/page.tsx | 6 +++++- src/shared/components/NoAuthProviderCard.tsx | 21 +++++++++++++++++++ src/shared/components/index.tsx | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/shared/components/NoAuthProviderCard.tsx diff --git a/src/app/(dashboard)/dashboard/providers/[id]/page.tsx b/src/app/(dashboard)/dashboard/providers/[id]/page.tsx index 063183b372..cac8ba720c 100644 --- a/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/[id]/page.tsx @@ -19,9 +19,11 @@ import { Toggle, Select, ProxyConfigModal, + NoAuthProviderCard, } from "@/shared/components"; import { LOCAL_PROVIDERS, + FREE_PROVIDERS, getProviderAlias, isOpenAICompatibleProvider, isAnthropicCompatibleProvider, @@ -1084,6 +1086,7 @@ export default function ProviderDetailPage() { providerInfo?.toggleAuthType === "oauth" || providerInfo?.toggleAuthType === "free"; const providerSupportsPat = supportsApiKeyOnFreeProvider(providerId); const isOAuth = providerSupportsOAuth && !providerSupportsPat; + const isFreeNoAuth = FREE_PROVIDERS[providerId]?.noAuth === true; const registryModels = getModelsByProviderId(providerId); // Prefer synced API-discovered models when available, then merge built-ins // and user-managed custom models without duplicating IDs. @@ -3167,7 +3170,8 @@ export default function ProviderDetailPage() { )} {/* Connections */} - {!isUpstreamProxyProvider && ( + {!isUpstreamProxyProvider && isFreeNoAuth && } + {!isUpstreamProxyProvider && !isFreeNoAuth && (
diff --git a/src/shared/components/NoAuthProviderCard.tsx b/src/shared/components/NoAuthProviderCard.tsx new file mode 100644 index 0000000000..d4bceb4693 --- /dev/null +++ b/src/shared/components/NoAuthProviderCard.tsx @@ -0,0 +1,21 @@ +"use client"; + +import Card from "./Card"; + +export default function NoAuthProviderCard() { + return ( + +
+
+ lock_open +
+
+

No authentication required

+

+ This provider is ready to use immediately — no signup or API key needed. +

+
+
+
+ ); +} diff --git a/src/shared/components/index.tsx b/src/shared/components/index.tsx index 568c9e44e0..af975c2826 100644 --- a/src/shared/components/index.tsx +++ b/src/shared/components/index.tsx @@ -32,6 +32,7 @@ export { default as NotificationToast } from "./NotificationToast"; export { default as FilterBar } from "./FilterBar"; export { default as ColumnToggle } from "./ColumnToggle"; export { default as DataTable } from "./DataTable"; +export { default as NoAuthProviderCard } from "./NoAuthProviderCard"; // Layouts export * from "./layouts"; From 42011abc697d7cbd4361375068e127504d7c70f7 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 21:20:28 -0300 Subject: [PATCH 32/33] fix(auth): include connection id in token health check credentials Pass the connection identifier along with token credentials during connection checks so downstream auth flows can use the full context for refresh and validation behavior. --- src/lib/tokenHealthCheck.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/tokenHealthCheck.ts b/src/lib/tokenHealthCheck.ts index 49b05d7333..7b37fdc32f 100644 --- a/src/lib/tokenHealthCheck.ts +++ b/src/lib/tokenHealthCheck.ts @@ -313,6 +313,7 @@ export async function checkConnection(conn) { const attemptedRefreshToken = conn.refreshToken; const attemptedAccessToken = conn.accessToken || null; const credentials = { + connectionId: conn.id, refreshToken: attemptedRefreshToken, accessToken: attemptedAccessToken, expiresAt: getEffectiveTokenExpiryIso(conn), From 7fdcba9e0522b218ada8d4c5f5473ef89e55b183 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 16 May 2026 21:31:03 -0300 Subject: [PATCH 33/33] fix(auth): return synthetic credentials for noAuth free providers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Requests to opencode (noAuth: true) were failing with "No credentials for provider: opencode" because getProviderCredentials found no DB connections and returned null — triggering the 400 error path in chatHelpers. Inject a synthetic credential object (connectionId: "noauth", no apiKey/token) before the regular connection lookup so the executor receives valid credentials and skips the Authorization header. Also enable model import for noAuth providers (canImportModels = true when isFreeNoAuth). --- .../dashboard/providers/[id]/page.tsx | 2 +- src/sse/services/auth.ts | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/app/(dashboard)/dashboard/providers/[id]/page.tsx b/src/app/(dashboard)/dashboard/providers/[id]/page.tsx index cac8ba720c..8298004691 100644 --- a/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/[id]/page.tsx @@ -2542,7 +2542,7 @@ export default function ProviderDetailPage() { } }; - const canImportModels = connections.some((conn) => conn.isActive !== false); + const canImportModels = isFreeNoAuth || connections.some((conn) => conn.isActive !== false); // Auto-sync toggle state: read from first active connection's providerSpecificData const autoSyncConnection = connections.find((conn: any) => conn.isActive !== false); diff --git a/src/sse/services/auth.ts b/src/sse/services/auth.ts index 210fb66a4e..2410e9edfa 100644 --- a/src/sse/services/auth.ts +++ b/src/sse/services/auth.ts @@ -37,7 +37,7 @@ import { PROVIDER_ERROR_TYPES, } from "@omniroute/open-sse/services/errorClassifier.ts"; import { getCodexModelScope } from "@omniroute/open-sse/executors/codex.ts"; -import { getProviderAlias, resolveProviderId } from "@/shared/constants/providers"; +import { getProviderAlias, resolveProviderId, FREE_PROVIDERS } from "@/shared/constants/providers"; import { isModelExcludedByConnection } from "@/domain/connectionModelRules"; import * as log from "../utils/logger"; import { fisherYatesShuffle, getNextFromDeckSync } from "@/shared/utils/shuffleDeck"; @@ -770,6 +770,29 @@ export async function getProviderCredentials( try { await currentMutex; + // noAuth free providers (e.g. opencode) need no DB connection — return synthetic credentials + // so the executor receives a valid credentials object without auth headers being added. + const resolvedId = resolveProviderId(provider); + if (FREE_PROVIDERS[resolvedId]?.noAuth) { + return { + apiKey: null, + accessToken: null, + refreshToken: null, + expiresAt: null, + projectId: null, + copilotToken: null, + providerSpecificData: {}, + connectionId: "noauth", + testStatus: "active", + lastError: null, + lastErrorType: null, + lastErrorSource: null, + errorCode: null, + rateLimitedUntil: null, + maxConcurrent: null, + }; + } + const allowSuppressedConnections = options.allowSuppressedConnections === true; const bypassQuotaPolicy = options.bypassQuotaPolicy === true; const forcedConnectionId =