omniroute 3.4.7 → 3.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +15 -15
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +11 -11
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +5 -5
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +14 -14
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route.js +14 -14
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +16 -16
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js +5 -5
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +9 -9
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +16 -16
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +7 -7
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +9 -9
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/[...path]/route.js +16 -16
- package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +16 -16
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +5 -5
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/analytics/route.js +7 -7
- package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js +10 -10
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +14 -14
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0nxyldc._.js → [root-of-the-server]__0-zca2p._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0urvs3.._.js → [root-of-the-server]__01hbf~_._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__01ojood._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__030_-af._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0j~-yu1._.js → [root-of-the-server]__03l6k3k._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__01b8762._.js → [root-of-the-server]__05~jdzu._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__07eee_s._.js → [root-of-the-server]__08~6j3q._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0a8ozdb._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0bd4ccn._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0_a98vk._.js → [root-of-the-server]__0d6bqbw._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0_c_.ye._.js → [root-of-the-server]__0f2rz58._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0jp3yj4._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__06stuoz._.js → [root-of-the-server]__0jvnjwl._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0mj7x5~._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0n-~kvf._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0-y3k-t._.js → [root-of-the-server]__0nzi7ym._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0ofxxzh._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0uu3t5x._.js → [root-of-the-server]__0pd~24c._.js} +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0s1dq3.._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0tsl88m._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0u5-mph._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0vi3.0k._.js → [root-of-the-server]__0uryxsh._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0lwc40h._.js → [root-of-the-server]__0v1kwmx._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__04y3b4q._.js → [root-of-the-server]__0vt49c9._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0pylsu2._.js → [root-of-the-server]__0vy97gy._.js} +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0~s45~f._.js → [root-of-the-server]__0wd~o5b._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0x5yxjy._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0vmajf6._.js → [root-of-the-server]__0x_hqjb._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0~0hd.s._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__10~-ypp._.js → [root-of-the-server]__11ptf~3._.js} +1 -1
- package/app/.next/server/chunks/_00.pgsp._.js +1 -1
- package/app/.next/server/chunks/_013gowh._.js +1 -1
- package/app/.next/server/chunks/{_0ucpa5q._.js → _02._8wx._.js} +1 -1
- package/app/.next/server/chunks/_036lxbr._.js +1 -1
- package/app/.next/server/chunks/_05reh6o._.js +1 -1
- package/app/.next/server/chunks/{_0-~thzo._.js → _083_x9z._.js} +2 -2
- package/app/.next/server/chunks/_083a5zg._.js +1 -1
- package/app/.next/server/chunks/{_004r3br._.js → _08cwbl2._.js} +2 -2
- package/app/.next/server/chunks/_0a3.3sc._.js +1 -1
- package/app/.next/server/chunks/_0c.abwr._.js +1 -1
- package/app/.next/server/chunks/_0dfpto1._.js +1 -1
- package/app/.next/server/chunks/_0due8oe._.js +1 -1
- package/app/.next/server/chunks/_0h-j8c2._.js +1 -1
- package/app/.next/server/chunks/_0vx-r0i._.js +2 -2
- package/app/.next/server/chunks/_0w4f3bm._.js +1 -1
- package/app/.next/server/chunks/_10.rw9f._.js +1 -1
- package/app/.next/server/chunks/open-sse_0dawtxk._.js +2 -2
- package/app/.next/server/chunks/open-sse_0p~.88y._.js +1 -1
- package/app/.next/server/chunks/open-sse_0sthby3._.js +1 -1
- package/app/.next/server/chunks/src_0cbm0~g._.js +1 -1
- package/app/.next/server/chunks/src_shared_utils_apiKey_ts_0gzf59_._.js +1 -1
- package/app/.next/server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js +1 -1
- package/app/.next/server/chunks/ssr/_008ht2n._.js +1 -1
- package/app/.next/server/chunks/ssr/_0oo1f90._.js +1 -1
- package/app/.next/server/chunks/ssr/src_04s-8a5._.js +1 -1
- package/app/.next/server/chunks/ssr/src_0vjsxxr._.js +1 -1
- package/app/.next/server/chunks/ssr/src_shared_utils_apiKey_ts_0l8g1z8._.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +3 -3
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/0ipwpwjb2g0uv.js +1 -0
- package/app/.next/static/chunks/0~c--kcvaumm~.js +1 -0
- package/app/.next/static/chunks/{02q7h~xz7j6i3.js → 0~v1trn07bitv.js} +1 -1
- package/app/CHANGELOG.md +12 -0
- package/app/bin/reset-password.mjs +3 -1
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/config/registryUtils.ts +1 -0
- package/app/open-sse/config/videoRegistry.ts +1 -3
- package/app/open-sse/executors/antigravity.ts +22 -12
- package/app/open-sse/executors/gemini-cli.ts +3 -1
- package/app/open-sse/executors/qoder.ts +1 -8
- package/app/open-sse/handlers/audioSpeech.ts +1 -0
- package/app/open-sse/handlers/chatCore.ts +2 -1
- package/app/open-sse/handlers/embeddings.ts +1 -0
- package/app/open-sse/handlers/imageGeneration.ts +6 -2
- package/app/open-sse/handlers/musicGeneration.ts +9 -2
- package/app/open-sse/handlers/search.ts +1 -0
- package/app/open-sse/handlers/videoGeneration.ts +11 -3
- package/app/open-sse/mcp-server/index.ts +0 -1
- package/app/open-sse/package.json +1 -1
- package/app/open-sse/services/claudeCodeCompatible.ts +2 -2
- package/app/open-sse/services/modelCapabilities.ts +3 -4
- package/app/open-sse/services/qoderCli.ts +5 -2
- package/app/open-sse/services/tokenRefresh.ts +3 -1
- package/app/open-sse/services/usage.ts +13 -9
- package/app/open-sse/services/workflowFSM.ts +298 -61
- package/app/open-sse/translator/index.ts +5 -1
- package/app/open-sse/translator/response/gemini-to-openai.ts +5 -1
- package/app/open-sse/utils/progressTracker.ts +4 -1
- package/app/open-sse/utils/stream.ts +7 -1
- package/app/open-sse/utils/streamPayloadCollector.ts +5 -1
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/scripts/check-route-validation.mjs +3 -1
- package/app/scripts/i18n/apply-priority-overrides.mjs +7 -1
- package/app/scripts/prepublish.mjs +2 -2
- package/app/scripts/run-protocol-clients-tests.mjs +7 -1
- package/app/src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx +1 -1
- package/app/src/app/(dashboard)/dashboard/auto-combo/page.tsx +0 -1
- package/app/src/app/(dashboard)/dashboard/media/MediaPageClient.tsx +9 -3
- package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +25 -23
- package/app/src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx +3 -1
- package/app/src/app/api/auth/status/route.ts +1 -3
- package/app/src/app/api/mcp/sse/route.ts +2 -2
- package/app/src/app/api/mcp/status/route.ts +1 -2
- package/app/src/app/api/mcp/stream/route.ts +5 -3
- package/app/src/app/api/openapi/spec/route.ts +4 -1
- package/app/src/app/api/openapi/try/route.ts +4 -1
- package/app/src/app/api/providers/[id]/models/route.ts +4 -4
- package/app/src/app/api/providers/[id]/sync-models/route.ts +9 -3
- package/app/src/app/api/settings/auto-disable-accounts/route.ts +6 -1
- package/app/src/app/api/skills/[id]/route.ts +4 -1
- package/app/src/app/api/v1/issues/report/route.ts +9 -1
- package/app/src/app/api/v1beta/models/route.ts +8 -6
- package/app/src/app/api/webhooks/[id]/route.ts +9 -7
- package/app/src/domain/fallbackPolicy.ts +0 -1
- package/app/src/domain/modelAvailability.ts +0 -1
- package/app/src/domain/providerExpiration.ts +2 -6
- package/app/src/lib/db/models.ts +23 -13
- package/app/src/lib/evals/evalRunner.ts +0 -1
- package/app/src/lib/evals/scheduler.ts +2 -6
- package/app/src/lib/oauth/services/antigravity.ts +6 -1
- package/app/src/lib/oauth/services/kiro.ts +12 -2
- package/app/src/lib/oauth/services/oauth.ts +10 -2
- package/app/src/lib/oauth/utils/server.ts +4 -1
- package/app/src/lib/plugins/index.ts +2 -8
- package/app/src/lib/usageAnalytics.ts +5 -1
- package/app/src/mitm/manager.js +1 -1
- package/app/src/mitm/manager.ts +1 -1
- package/app/src/shared/components/Button.tsx +0 -1
- package/app/src/shared/components/Card.tsx +0 -2
- package/app/src/shared/components/FilterBar.tsx +4 -12
- package/app/src/shared/components/Input.tsx +1 -1
- package/app/src/shared/components/Modal.tsx +0 -1
- package/app/src/shared/components/NotificationToast.tsx +1 -3
- package/app/src/shared/components/Select.tsx +1 -1
- package/app/src/shared/components/Sidebar.tsx +3 -3
- package/app/src/shared/components/ThemeToggle.tsx +7 -1
- package/app/src/shared/constants/cliCompatProviders.ts +0 -1
- package/app/src/shared/constants/errorCodes.ts +114 -19
- package/app/src/shared/utils/apiKey.ts +2 -4
- package/app/src/shared/utils/fetchTimeout.ts +0 -1
- package/app/src/shared/utils/inputSanitizer.ts +8 -4
- package/app/src/shared/utils/requestTimeout.ts +5 -1
- package/app/src/sse/handlers/chat.ts +1 -0
- package/app/src/sse/services/auth.ts +8 -3
- package/app/src/sse/services/streamState.ts +5 -1
- package/app/src/store/notificationStore.ts +3 -7
- package/app/tests/unit/t20-t22-provider-headers.test.mjs +3 -1
- package/bin/reset-password.mjs +3 -1
- package/open-sse/mcp-server/__tests__/glmCodingProviderConfig.test.ts +5 -1
- package/open-sse/mcp-server/index.ts +0 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/_0-jnvci._.js +0 -19
- package/app/.next/static/chunks/0l88mho31mflv.js +0 -1
- package/app/.next/static/chunks/0wt-4zl7_gil8.js +0 -1
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_buildManifest.js +0 -0
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_clientMiddlewareManifest.js +0 -0
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,463082,e=>{"use strict";var t=e.i(843476),a=e.i(271645);e.i(565650);var s=e.i(566770),s=s,r=e.i(454149),l=e.i(643953),i=e.i(948148),n=e.i(11477),c=e.i(474078),o=e.i(11131),d=e.i(115243),d=d,m=e.i(690777),m=m,x=e.i(627949);let u=[{name:"contains",labelKey:"evalsStrategyContainsLabel",icon:"search",color:"text-sky-400",bg:"bg-sky-500/10",descriptionKey:"evalsStrategyContainsDescription"},{name:"exact",labelKey:"evalsStrategyExactLabel",icon:"check_circle",color:"text-emerald-400",bg:"bg-emerald-500/10",descriptionKey:"evalsStrategyExactDescription"},{name:"regex",labelKey:"evalsStrategyRegexLabel",icon:"code",color:"text-amber-400",bg:"bg-amber-500/10",descriptionKey:"evalsStrategyRegexDescription"},{name:"custom",labelKey:"evalsStrategyCustomLabel",icon:"tune",color:"text-violet-400",bg:"bg-violet-500/10",descriptionKey:"evalsStrategyCustomDescription"}];function h(){let e=(0,i.useTranslations)("usage"),[s,r]=(0,a.useState)([]),[l,h]=(0,a.useState)(null),[f,g]=(0,a.useState)(!0),[b,v]=(0,a.useState)(null),[j,y]=(0,a.useState)({current:0,total:0}),[N,w]=(0,a.useState)({}),[k,S]=(0,a.useState)(""),[C,E]=(0,a.useState)(null),[O,P]=(0,a.useState)(!1),A=(0,x.useNotificationStore)(),D=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/evals");if(e.ok){let t=await e.json();r(Array.isArray(t)?t:t.suites||[])}}catch{}finally{g(!1)}},[]),T=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/keys");if(!e.ok)return;let t=await e.json(),a=t?.keys?.[0]?.key||null;h(a)}catch{}},[]);(0,a.useEffect)(()=>{D(),T()},[D,T]);let z=async e=>{try{let t={"Content-Type":"application/json"};l&&(t.Authorization=`Bearer ${l}`);let a=await fetch("/v1/chat/completions",{method:"POST",headers:t,body:JSON.stringify({model:e.model||"gpt-4o",messages:e.input?.messages||[],max_tokens:512,stream:!1})});if(!a.ok)return`[ERROR: HTTP ${a.status}]`;let s=await a.json();return s.choices?.[0]?.message?.content||"[No content returned]"}catch(e){return`[ERROR: ${e.message}]`}},R=async t=>{let a=t.cases||[];if(0===a.length)return void A.warning(e("notifyNoTestCases"));v(t.id),y({current:0,total:a.length});try{let s={};for(let e=0;e<a.length;e++){y({current:e+1,total:a.length});let t=await z(a[e]);s[a[e].id]=t}let r=await fetch("/api/evals",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({suiteId:t.id,outputs:s})}),l=await r.json();if(w(e=>({...e,[t.id]:l})),l.summary){let{passed:a,failed:s,total:r}=l.summary;0===s?A.success(e("notifyAllCasesPassed",{total:r}),e("notifyEvalTitle",{name:t.name||t.id})):A.warning(e("notifySomeCasesFailed",{passed:a,total:r,failed:s}),e("notifyEvalTitle",{name:t.name||t.id}))}E(t.id)}catch{A.error(e("notifyEvalRunFailed"))}finally{v(null),y({current:0,total:0})}},L=s.filter(e=>!k||e.name?.toLowerCase().includes(k.toLowerCase())||e.id?.toLowerCase().includes(k.toLowerCase())),M=s.reduce((e,t)=>e+(t.cases?.length||t.caseCount||0),0),$=[...new Set(s.flatMap(e=>(e.cases||[]).map(e=>e.model)).filter(Boolean))];if(f)return(0,t.jsxs)("div",{className:"flex items-center gap-2 text-text-muted p-8 animate-pulse",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"science"}),e("evalsLoading")]});if(0===s.length)return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsx)(p,{t:e}),(0,t.jsx)(o.EmptyState,{icon:"science",title:e("noEvalSuitesFound"),description:e("noEvalSuitesDescription")})]});let q=[{key:"caseName",label:e("columnCase")},{key:"status",label:e("columnStatus")},{key:"durationMs",label:e("columnLatency")},{key:"details",label:e("columnDetails")}];return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsx)(p,{t:e}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,t.jsxs)(n.Card,{className:"px-4 py-3 text-center",children:[(0,t.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsSuites")}),(0,t.jsx)("div",{className:"text-2xl font-bold mt-1 text-violet-400",children:s.length})]}),(0,t.jsxs)(n.Card,{className:"px-4 py-3 text-center",children:[(0,t.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsTestCases")}),(0,t.jsx)("div",{className:"text-2xl font-bold mt-1 text-sky-400",children:M})]}),(0,t.jsxs)(n.Card,{className:"px-4 py-3 text-center",children:[(0,t.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsModels")}),(0,t.jsx)("div",{className:"text-2xl font-bold mt-1 text-emerald-400",children:$.length})]}),(0,t.jsxs)(n.Card,{className:"px-4 py-3 text-center",children:[(0,t.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsCoverage")}),(0,t.jsx)("div",{className:"text-2xl font-bold mt-1 text-amber-400",children:e("statsStrategiesCount",{count:u.length})})]})]}),(0,t.jsxs)(n.Card,{className:"p-0 overflow-hidden",children:[(0,t.jsxs)("button",{onClick:()=>P(!O),className:"w-full flex items-center justify-between px-6 py-4 hover:bg-surface/30 transition-colors text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"p-2 rounded-lg bg-primary/10 text-primary",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"help"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:e("howItWorks")}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:e("howItWorksSubtitle")})]})]}),(0,t.jsx)("span",{className:`material-symbols-outlined text-text-muted transition-transform duration-200 ${O?"rotate-180":""}`,children:"expand_more"})]}),O&&(0,t.jsxs)("div",{className:"px-6 pb-6 border-t border-border/10",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-violet-500/5 border border-violet-500/10",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-full bg-violet-500/20 flex items-center justify-center mb-3",children:(0,t.jsx)("span",{className:"text-lg font-bold text-violet-400",children:"1"})}),(0,t.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("define")}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:e("defineStepDescription")})]}),(0,t.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-sky-500/5 border border-sky-500/10",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-full bg-sky-500/20 flex items-center justify-center mb-3",children:(0,t.jsx)("span",{className:"text-lg font-bold text-sky-400",children:"2"})}),(0,t.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("run")}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:e("runStepDescription")})]}),(0,t.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-emerald-500/5 border border-emerald-500/10",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-full bg-emerald-500/20 flex items-center justify-center mb-3",children:(0,t.jsx)("span",{className:"text-lg font-bold text-emerald-400",children:"3"})}),(0,t.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("evaluate")}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:e("evaluateStepDescription")})]})]}),(0,t.jsxs)("div",{className:"mt-6",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide mb-3",children:e("evaluationStrategies")}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:u.map(a=>(0,t.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg ${a.bg} border border-transparent`,children:[(0,t.jsx)("span",{className:`material-symbols-outlined text-[18px] ${a.color}`,children:a.icon}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:`text-xs font-mono font-semibold ${a.color}`,children:e(a.labelKey)}),(0,t.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:e(a.descriptionKey)})]})]},a.name))})]}),$.length>0&&(0,t.jsxs)("div",{className:"mt-6",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide mb-3",children:e("modelsUnderTest")}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:$.map(e=>(0,t.jsx)("span",{className:"px-3 py-1.5 rounded-full text-xs font-mono font-medium bg-primary/10 text-primary border border-primary/20",children:e},e))})]})]})]}),(0,t.jsxs)(n.Card,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsx)("div",{className:"p-2 rounded-lg bg-violet-500/10 text-violet-500",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"science"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:e("evalSuites")}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:e("evalSuitesHint")})]})]}),(0,t.jsx)(m.default,{searchValue:k,onSearchChange:S,placeholder:e("searchSuitesPlaceholder"),filters:[],activeFilters:{},onFilterChange:()=>{},children:null}),(0,t.jsx)("div",{className:"flex flex-col gap-3 mt-4",children:L.map(a=>{let s=N[a.id],r=b===a.id,l=C===a.id,i=a.cases?.length||a.caseCount||0,n=[...new Set((a.cases||[]).map(e=>e.model).filter(Boolean))];return(0,t.jsxs)("div",{className:"border border-border/30 rounded-lg overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 cursor-pointer hover:bg-surface/30 transition-colors",onClick:()=>E(l?null:a.id),children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:l?"expand_more":"chevron_right"}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-text-main",children:a.name||a.id}),s?.summary&&(0,t.jsxs)("span",{className:`px-2 py-0.5 rounded-full text-xs font-semibold ${100===s.summary.passRate?"bg-emerald-500/10 text-emerald-400":s.summary.passRate>=80?"bg-amber-500/10 text-amber-400":"bg-red-500/10 text-red-400"}`,children:[s.summary.passRate,"% ",e("passSuffix")]})]}),(0,t.jsxs)("p",{className:"text-xs text-text-muted",children:[e("casesCount",{count:i}),a.description&&(0,t.jsxs)("span",{className:"ml-1",children:["— ",a.description]})]}),n.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1 mt-1",children:n.map(e=>(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded text-[10px] font-mono text-text-muted bg-black/5 dark:bg-white/5",children:e},e))})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[r&&j.total>0&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"w-24 h-1.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-violet-500 rounded-full transition-all duration-300",style:{width:`${j.current/j.total*100}%`}})}),(0,t.jsxs)("span",{className:"text-xs text-text-muted font-mono tabular-nums",children:[j.current,"/",j.total]})]}),(0,t.jsx)(c.Button,{size:"sm",variant:"primary",onClick:e=>{e.stopPropagation(),R(a)},loading:r,disabled:r,children:r?e("runningProgress",{current:j.current,total:j.total}):e("runEval")})]})]}),l&&(0,t.jsx)("div",{className:"border-t border-border/20 p-4",children:s?.results?(0,t.jsxs)(t.Fragment,{children:[s.summary&&(0,t.jsxs)("div",{className:"flex items-center gap-4 mb-4 p-3 rounded-lg bg-surface/30 border border-border/20",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:`text-lg font-bold ${100===s.summary.passRate?"text-emerald-400":s.summary.passRate>=80?"text-amber-400":"text-red-400"}`,children:[s.summary.passRate,"%"]}),(0,t.jsx)("span",{className:"text-xs text-text-muted",children:e("passRate")})]}),(0,t.jsx)("div",{className:"text-xs text-text-muted",children:e("summaryBreakdown",{passed:s.summary.passed,failed:s.summary.failed,total:s.summary.total})}),(0,t.jsx)("div",{className:"flex-1 h-2 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${s.summary.passRate}%`,background:100===s.summary.passRate?"linear-gradient(90deg, #22c55e, #16a34a)":s.summary.passRate>=80?"linear-gradient(90deg, #f59e0b, #d97706)":"linear-gradient(90deg, #ef4444, #dc2626)"}})})]}),(0,t.jsx)(d.default,{columns:q,data:s.results.map((e,t)=>({...e,id:e.caseId||t})),renderCell:(a,s)=>{if("status"===s.key)return a.passed?(0,t.jsx)("span",{className:"text-emerald-400",children:e("passedIconLabel")}):(0,t.jsx)("span",{className:"text-red-400",children:e("failedIconLabel")});if("durationMs"===s.key)return(0,t.jsx)("span",{className:"text-text-muted text-xs font-mono",children:null!=a.durationMs?`${a.durationMs}ms`:"—"});if("details"===s.key){let s=a.details||{};return(0,t.jsx)("span",{className:"text-text-muted text-xs truncate max-w-[300px] block",children:String(s.searchTerm?e("detailsContains",{term:s.searchTerm}):s.pattern?e("detailsRegex",{pattern:s.pattern}):s.expected?e("detailsExpected",{expected:String(s.expected).slice(0,50)}):a.error||"—")})}return(0,t.jsx)("span",{className:"text-sm text-text-main",children:a[s.key]||"—"})},maxHeight:"400px",emptyMessage:e("noResultsYet")})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"checklist"}),(0,t.jsx)("span",{className:"text-xs text-text-muted font-medium",children:e("testCasesCount",{count:(a.cases||[]).length})})]}),(0,t.jsx)(d.default,{columns:[{key:"name",label:e("columnCase")},{key:"model",label:e("columnModel")},{key:"strategy",label:e("columnStrategy")},{key:"expected",label:e("columnExpected")}],data:(a.cases||[]).map((e,t)=>({id:e.id||t,name:e.name,model:e.model||"—",strategy:e.expected?.strategy||"—",expected:e.expected?.value?String(e.expected.value).slice(0,80):"—"})),renderCell:(e,a)=>{if("strategy"===a.key){let a=u.find(t=>t.name===e.strategy);return(0,t.jsx)("span",{className:`text-xs font-mono font-semibold ${a?.color||"text-text-muted"}`,children:e.strategy})}return"model"===a.key?(0,t.jsx)("span",{className:"text-xs font-mono text-primary/80",children:e.model}):"expected"===a.key?(0,t.jsx)("span",{className:"text-text-muted text-xs font-mono truncate max-w-[300px] block",children:e.expected}):(0,t.jsx)("span",{className:"text-sm text-text-main",children:e[a.key]||"—"})},maxHeight:"400px",emptyMessage:e("noTestCasesDefined")}),(0,t.jsxs)("p",{className:"text-xs text-text-muted mt-3 flex items-center gap-1.5",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"info"}),e("runEvalHint")]})]})})]},a.id)})})]})]})}function p({t:e}){return(0,t.jsx)(n.Card,{className:"p-0 overflow-hidden",children:(0,t.jsx)("div",{className:"p-6",style:{background:"linear-gradient(135deg, rgba(139, 92, 246, 0.05) 0%, rgba(59, 130, 246, 0.05) 50%, rgba(16, 185, 129, 0.05) 100%)"},children:(0,t.jsxs)("div",{className:"flex items-start gap-4",children:[(0,t.jsx)("div",{className:"p-3 rounded-xl bg-violet-500/10 text-violet-500",children:(0,t.jsx)("span",{className:"material-symbols-outlined text-[28px]",children:"science"})}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("h2",{className:"text-xl font-bold text-text-main mb-1",children:e("modelEvals")}),(0,t.jsx)("p",{className:"text-sm text-text-muted leading-relaxed max-w-2xl",children:e("evalsHeroDescription")}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-4 mt-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-emerald-400",children:"verified"}),e("qualityValidation")]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-sky-400",children:"compare"}),e("modelComparison")]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-amber-400",children:"bug_report"}),e("regressionDetection")]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-violet-400",children:"speed"}),e("latencyBenchmarks")]})]})]})]})})})}function f({icon:e,label:a,value:s,sub:r}){return(0,t.jsxs)("div",{className:"card p-4 flex flex-col gap-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-text-muted text-sm",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e}),a]}),(0,t.jsx)("div",{className:"text-2xl font-bold text-text",children:s}),r&&(0,t.jsx)("div",{className:"text-xs text-text-muted",children:r})]})}function g({provider:e,count:a,total:s,costUsd:r}){let l=s>0?Math.round(a/s*100):0;return(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,t.jsx)("span",{className:"font-medium text-text",children:e}),(0,t.jsxs)("span",{className:"text-text-muted",children:[a," queries · $",r.toFixed(4)]})]}),(0,t.jsx)("div",{className:"h-2 rounded-full bg-bg-muted overflow-hidden",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-primary transition-all",style:{width:`${l}%`}})}),(0,t.jsxs)("div",{className:"text-xs text-text-muted text-right",children:[l,"%"]})]})}function b(){let[e,s]=(0,a.useState)(null),[r,l]=(0,a.useState)(!0),[i,n]=(0,a.useState)(null);if((0,a.useEffect)(()=>{fetch("/api/v1/search/analytics").then(e=>e.json()).then(e=>{s(e),l(!1)}).catch(e=>{n(e.message),l(!1)})},[]),r)return(0,t.jsxs)("div",{className:"flex items-center justify-center py-16 text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined animate-spin mr-2",children:"progress_activity"}),"Loading search analytics…"]});if(i||!e)return(0,t.jsxs)("div",{className:"card p-6 text-center text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[32px] mb-2 block",children:"search_off"}),i||"No search data available yet.",(0,t.jsx)("p",{className:"text-xs mt-2",children:"Search requests will appear here after the first search via /v1/search."})]});let c=Object.entries(e.byProvider).sort(([,e],[,t])=>t.count-e.count);return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,t.jsx)(f,{icon:"manage_search",label:"Total Searches",value:e.total.toLocaleString(),sub:`${e.today} today`}),(0,t.jsx)(f,{icon:"cached",label:"Cache Hit Rate",value:`${e.cacheHitRate}%`,sub:`${e.cached} cached requests`}),(0,t.jsx)(f,{icon:"attach_money",label:"Total Cost",value:`$${e.totalCostUsd.toFixed(4)}`,sub:"search API costs"}),(0,t.jsx)(f,{icon:"timer",label:"Avg Response",value:`${e.avgDurationMs}ms`,sub:e.errors>0?`${e.errors} errors`:"No errors"})]}),c.length>0&&(0,t.jsxs)("div",{className:"card p-5",children:[(0,t.jsxs)("h3",{className:"font-semibold text-text mb-4 flex items-center gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px]",children:"hub"}),"Provider Breakdown"]}),(0,t.jsx)("div",{className:"flex flex-col gap-4",children:c.map(([a,s])=>(0,t.jsx)(g,{provider:a,count:s.count,total:e.total,costUsd:s.costUsd},a))})]}),0===e.total&&(0,t.jsxs)("div",{className:"card p-8 text-center text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[48px] mb-3 block text-primary opacity-50",children:"travel_explore"}),(0,t.jsx)("p",{className:"font-medium text-text",children:"No searches yet"}),(0,t.jsxs)("p",{className:"text-sm mt-1",children:["Use ",(0,t.jsx)("code",{className:"bg-bg-muted px-1 rounded",children:"POST /v1/search"})," to start routing web searches."]})]}),(0,t.jsxs)("div",{className:"text-xs text-text-muted border border-border rounded-lg p-3 flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px] text-green-500 mt-0.5",children:"check_circle"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:"Free tier available:"})," Serper (2,500/mo), Brave (2,000/mo), Exa (1,000/mo), Tavily (1,000/mo) — total 6,500+ free searches/month with automatic failover."]})]})]})}function v(){let[e,s]=(0,a.useState)(null),[r,l]=(0,a.useState)(!0);if((0,i.useTranslations)("analytics"),(0,a.useEffect)(()=>{fetch("/api/analytics/diversity").then(e=>e.json()).then(e=>{s(e),l(!1)}).catch(e=>{console.error(e),l(!1)})},[]),r||!e)return(0,t.jsx)(n.Card,{className:"p-5 flex flex-col justify-center items-center h-full min-h-[200px]",children:(0,t.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"})});let c=Math.round(100*(e.score||0)),o="text-green-500",d="bg-green-500",m="Healthy Distribution";return c<40?(o="text-red-500",d="bg-red-500",m="High Vendor Lock-in Risk"):c<70&&(o="text-amber-500",d="bg-amber-500",m="Moderate Distribution"),(0,t.jsxs)(n.Card,{className:"p-5 flex flex-col h-full bg-[var(--card-bg,#1e1e2e)] relative overflow-hidden group",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[20px] text-cyan-400",children:"pie_chart"}),(0,t.jsx)("h3",{className:"font-semibold text-[var(--text-primary,#fff)] flex-1",children:"Provider Diversity Score"}),(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${d.replace("bg-","border-").replace("500","500/20")} ${d.replace("bg-","bg-").replace("500","500/10")} ${o}`,children:"Shannon Entropy"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between mt-2 mb-6",children:[(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsxs)("span",{className:`text-4xl font-bold tabular-nums tracking-tight ${o}`,children:[c,"%"]}),(0,t.jsx)("span",{className:"text-sm text-[var(--text-muted,#aaaaaa)] mt-1",children:m})]}),(0,t.jsx)("div",{className:"relative w-20 h-20 flex-shrink-0",children:(0,t.jsxs)("svg",{className:"w-full h-full transform -rotate-90",viewBox:"0 0 36 36",children:[(0,t.jsx)("path",{className:"text-[var(--border,#333)]",strokeWidth:"4",stroke:"currentColor",fill:"none",d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}),(0,t.jsx)("path",{className:o,strokeWidth:"4",strokeDasharray:`${c}, 100`,stroke:"currentColor",fill:"none",strokeLinecap:"round",d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"})]})})]}),(0,t.jsxs)("div",{className:"space-y-4 flex-1",children:[(0,t.jsx)("p",{className:"text-xs uppercase tracking-wider font-semibold text-[var(--text-muted,#888)]",children:"Provider Share"}),0===Object.keys(e.providers||{}).length?(0,t.jsx)("div",{className:"text-sm text-[var(--text-secondary,#666)] py-2",children:"No recent usage data available."}):(0,t.jsx)("div",{className:"space-y-3",children:Object.entries(e.providers).sort(([,e],[,t])=>t.share-e.share).slice(0,4).map(([e,a])=>(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"font-medium text-[var(--text-primary,#ddd)] capitalize",children:e}),(0,t.jsxs)("span",{className:"font-mono text-[var(--text-muted,#aaa)]",children:[Math.round(100*a.share),"%"]})]}),(0,t.jsx)("div",{className:"w-full h-1.5 bg-[var(--surface,#333)] rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:`h-full ${d} rounded-full`,style:{width:`${Math.round(100*a.share)}%`}})})]},e))})]}),(0,t.jsxs)("div",{className:"mt-4 pt-4 border-t border-[var(--border,#333)] flex justify-between text-[11px] text-[var(--text-muted,#777)]",children:[(0,t.jsxs)("span",{children:["Window: ",e.windowSize," reqs"]}),(0,t.jsxs)("span",{children:["Based on Last ",Math.round(e.ttlMs/6e4)," mins"]})]})]})}var j=e.i(129071),y=e.i(794395),N=e.i(779812),w=e.i(228108),k=e.i(909928),S=e.i(846710),C=e.i(661764),E=e.i(127241),O=e.i(375337),P=e.i(51883),A=e.i(257999),D=e.i(822075),T=e.i(629601),z=e.i(318457),R=["x1","y1","x2","y2","key"],L=["offset"],M=["xAxisId","yAxisId"],$=["xAxisId","yAxisId"];function q(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),a.push.apply(a,s)}return a}function I(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?q(Object(a),!0).forEach(function(t){var s,r,l;s=e,r=t,l=a[t],(r=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,t||"default");if("object"!=typeof s)return s;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(r))in s?Object.defineProperty(s,r,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[r]=l}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):q(Object(a)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))})}return e}function _(){return(_=Object.assign.bind()).apply(null,arguments)}function F(e,t){if(null==e)return{};var a,s,r=function(e,t){if(null==e)return{};var a={};for(var s in e)if(({}).hasOwnProperty.call(e,s)){if(-1!==t.indexOf(s))continue;a[s]=e[s]}return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(s=0;s<l.length;s++)a=l[s],-1===t.indexOf(a)&&({}).propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var H=e=>{var{fill:t}=e;if(!t||"none"===t)return null;var{fillOpacity:s,x:r,y:l,width:i,height:n,ry:c}=e;return a.createElement("rect",{x:r,y:l,ry:c,width:i,height:n,stroke:"none",fill:t,fillOpacity:s,className:"recharts-cartesian-grid-bg"})};function B(e){var{option:t,lineItemProps:s}=e;if(a.isValidElement(t))r=a.cloneElement(t,s);else if("function"==typeof t)r=t(s);else{var r,l,{x1:i,y1:n,x2:c,y2:o,key:d}=s,m=F(s,R),x=null!=(l=(0,A.svgPropertiesNoEvents)(m))?l:{},{offset:u}=x,h=F(x,L);r=a.createElement("line",_({},h,{x1:i,y1:n,x2:c,y2:o,fill:"none",key:d}))}return r}function G(e){var{x:t,width:s,horizontal:r=!0,horizontalPoints:l}=e;if(!r||!l||!l.length)return null;var{xAxisId:i,yAxisId:n}=e,c=F(e,M),o=l.map((e,l)=>{var i=I(I({},c),{},{x1:t,y1:e,x2:t+s,y2:e,key:"line-".concat(l),index:l});return a.createElement(B,{key:"line-".concat(l),option:r,lineItemProps:i})});return a.createElement("g",{className:"recharts-cartesian-grid-horizontal"},o)}function K(e){var{y:t,height:s,vertical:r=!0,verticalPoints:l}=e;if(!r||!l||!l.length)return null;var{xAxisId:i,yAxisId:n}=e,c=F(e,$),o=l.map((e,l)=>{var i=I(I({},c),{},{x1:e,y1:t,x2:e,y2:t+s,key:"line-".concat(l),index:l});return a.createElement(B,{option:r,lineItemProps:i,key:"line-".concat(l)})});return a.createElement("g",{className:"recharts-cartesian-grid-vertical"},o)}function W(e){var{horizontalFill:t,fillOpacity:s,x:r,y:l,width:i,height:n,horizontalPoints:c,horizontal:o=!0}=e;if(!o||!t||!t.length||null==c)return null;var d=c.map(e=>Math.round(e+l-l)).sort((e,t)=>e-t);l!==d[0]&&d.unshift(0);var m=d.map((e,c)=>{var o=d[c+1],m=null==o?l+n-e:o-e;if(m<=0)return null;var x=c%t.length;return a.createElement("rect",{key:"react-".concat(c),y:e,x:r,height:m,width:i,stroke:"none",fill:t[x],fillOpacity:s,className:"recharts-cartesian-grid-bg"})});return a.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},m)}function U(e){var{vertical:t=!0,verticalFill:s,fillOpacity:r,x:l,y:i,width:n,height:c,verticalPoints:o}=e;if(!t||!s||!s.length)return null;var d=o.map(e=>Math.round(e+l-l)).sort((e,t)=>e-t);l!==d[0]&&d.unshift(0);var m=d.map((e,t)=>{var o=d[t+1],m=null==o?l+n-e:o-e;if(m<=0)return null;var x=t%s.length;return a.createElement("rect",{key:"react-".concat(t),x:e,y:i,width:m,height:c,stroke:"none",fill:s[x],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return a.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},m)}var V=(e,t)=>{var{xAxis:a,width:s,height:r,offset:l}=e;return(0,N.getCoordinatesOfGrid)((0,w.getTicks)(I(I(I({},k.defaultCartesianAxisProps),a),{},{ticks:(0,N.getTicksOfAxis)(a,!0),viewBox:{x:0,y:0,width:s,height:r}})),l.left,l.left+l.width,t)},J=(e,t)=>{var{yAxis:a,width:s,height:r,offset:l}=e;return(0,N.getCoordinatesOfGrid)((0,w.getTicks)(I(I(I({},k.defaultCartesianAxisProps),a),{},{ticks:(0,N.getTicksOfAxis)(a,!0),viewBox:{x:0,y:0,width:s,height:r}})),l.top,l.top+l.height,t)},Y={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:z.DefaultZIndexes.grid};function Z(e){var t=(0,S.useChartWidth)(),s=(0,S.useChartHeight)(),r=(0,S.useOffsetInternal)(),l=I(I({},(0,P.resolveDefaultProps)(e,Y)),{},{x:(0,y.isNumber)(e.x)?e.x:r.left,y:(0,y.isNumber)(e.y)?e.y:r.top,width:(0,y.isNumber)(e.width)?e.width:r.width,height:(0,y.isNumber)(e.height)?e.height:r.height}),{xAxisId:i,yAxisId:n,x:c,y:o,width:d,height:m,syncWithTicks:x,horizontalValues:u,verticalValues:h}=l,p=(0,O.useIsPanorama)(),f=(0,E.useAppSelector)(e=>(0,C.selectAxisPropsNeededForCartesianGridTicksGenerator)(e,"xAxis",i,p)),g=(0,E.useAppSelector)(e=>(0,C.selectAxisPropsNeededForCartesianGridTicksGenerator)(e,"yAxis",n,p));if(!(0,D.isPositiveNumber)(d)||!(0,D.isPositiveNumber)(m)||!(0,y.isNumber)(c)||!(0,y.isNumber)(o))return null;var b=l.verticalCoordinatesGenerator||V,v=l.horizontalCoordinatesGenerator||J,{horizontalPoints:N,verticalPoints:w}=l;if((!N||!N.length)&&"function"==typeof v){var k=u&&u.length,A=v({yAxis:g?I(I({},g),{},{ticks:k?u:g.ticks}):void 0,width:null!=t?t:d,height:null!=s?s:m,offset:r},!!k||x);(0,j.warn)(Array.isArray(A),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof A,"]")),Array.isArray(A)&&(N=A)}if((!w||!w.length)&&"function"==typeof b){var z=h&&h.length,R=b({xAxis:f?I(I({},f),{},{ticks:z?h:f.ticks}):void 0,width:null!=t?t:d,height:null!=s?s:m,offset:r},!!z||x);(0,j.warn)(Array.isArray(R),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof R,"]")),Array.isArray(R)&&(w=R)}return a.createElement(T.ZIndexLayer,{zIndex:l.zIndex},a.createElement("g",{className:"recharts-cartesian-grid"},a.createElement(H,{fill:l.fill,fillOpacity:l.fillOpacity,x:l.x,y:l.y,width:l.width,height:l.height,ry:l.ry}),a.createElement(W,_({},l,{horizontalPoints:N})),a.createElement(U,_({},l,{verticalPoints:w})),a.createElement(G,_({},l,{offset:r,horizontalPoints:N,xAxis:f,yAxis:g})),a.createElement(K,_({},l,{offset:r,verticalPoints:w,xAxis:f,yAxis:g}))))}Z.displayName="CartesianGrid";var Q=e.i(174080),X=e.i(988860),ee=e.i(207670),et=e.i(148337),ea=e.i(913659),es=e.i(373393);function er(){return(er=Object.assign.bind()).apply(null,arguments)}function el(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),a.push.apply(a,s)}return a}function ei(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?el(Object(a),!0).forEach(function(t){var s,r,l;s=e,r=t,l=a[t],(r=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,t||"default");if("object"!=typeof s)return s;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(r))in s?Object.defineProperty(s,r,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[r]=l}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):el(Object(a)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))})}return e}var en={align:"center",iconSize:14,inactiveColor:"#ccc",layout:"horizontal",verticalAlign:"middle",labelStyle:{}};function ec(e){var{data:t,iconType:s,inactiveColor:r}=e,l=32/6,i=32/3,n=t.inactive?r:t.color,c=null!=s?s:t.type;if("none"===c)return null;if("plainline"===c)return a.createElement("line",{strokeWidth:4,fill:"none",stroke:n,strokeDasharray:function(e){if("object"==typeof e&&null!==e&&"strokeDasharray"in e)return String(e.strokeDasharray)}(t.payload),x1:0,y1:16,x2:32,y2:16,className:"recharts-legend-icon"});if("line"===c)return a.createElement("path",{strokeWidth:4,fill:"none",stroke:n,d:"M0,".concat(16,"h").concat(i,"\n A").concat(l,",").concat(l,",0,1,1,").concat(2*i,",").concat(16,"\n H").concat(32,"M").concat(2*i,",").concat(16,"\n A").concat(l,",").concat(l,",0,1,1,").concat(i,",").concat(16),className:"recharts-legend-icon"});if("rect"===c)return a.createElement("path",{stroke:"none",fill:n,d:"M0,".concat(4,"h").concat(32,"v").concat(24,"h").concat(-32,"z"),className:"recharts-legend-icon"});if(a.isValidElement(t.legendIcon)){var o=ei({},t);return delete o.legendIcon,a.cloneElement(t.legendIcon,o)}return a.createElement(ea.Symbols,{fill:n,cx:16,cy:16,size:32,sizeType:"diameter",type:c})}function eo(e){var{payload:t,iconSize:s,layout:r,formatter:l,inactiveColor:i,iconType:n,labelStyle:c}=e,o={x:0,y:0,width:32,height:32},d={display:"horizontal"===r?"inline-block":"block",marginRight:10},m={display:"inline-block",verticalAlign:"middle",marginRight:4};return t.map((t,r)=>{var x=t.formatter||l,u=(0,ee.clsx)({"recharts-legend-item":!0,["legend-item-".concat(r)]:!0,inactive:t.inactive});if("none"===t.type)return null;var h="object"==typeof c?ei({},c):{};h.color=t.inactive?i:h.color||t.color;var p=x?x(t.value,t,r):t.value;return a.createElement("li",er({className:u,style:d,key:"legend-item-".concat(r)},(0,es.adaptEventsOfChild)(e,t,r)),a.createElement(et.Surface,{width:s,height:s,viewBox:o,style:m,"aria-label":"".concat(t.value," legend icon")},a.createElement(ec,{data:t,iconType:n,inactiveColor:i})),a.createElement("span",{className:"recharts-legend-item-text",style:h},p))})}var ed=e=>{var t=(0,P.resolveDefaultProps)(e,en),{payload:s,layout:r,align:l}=t;return s&&s.length?a.createElement("ul",{className:"recharts-default-legend",style:{padding:0,margin:0,textAlign:"horizontal"===r?l:"left"}},a.createElement(eo,er({},t,{payload:s}))):null},em=e.i(251587),ex=e.i(721307),eu=e.i(835709),eh=e.i(893882),ep=e.i(920135),ef=["contextPayload"];function eg(){return(eg=Object.assign.bind()).apply(null,arguments)}function eb(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),a.push.apply(a,s)}return a}function ev(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?eb(Object(a),!0).forEach(function(t){var s,r,l;s=e,r=t,l=a[t],(r=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var s=a.call(e,t||"default");if("object"!=typeof s)return s;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(r))in s?Object.defineProperty(s,r,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[r]=l}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):eb(Object(a)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))})}return e}function ej(e){return e.value}function ey(e){var{contextPayload:t}=e,s=function(e,t){if(null==e)return{};var a,s,r=function(e,t){if(null==e)return{};var a={};for(var s in e)if(({}).hasOwnProperty.call(e,s)){if(-1!==t.indexOf(s))continue;a[s]=e[s]}return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(s=0;s<l.length;s++)a=l[s],-1===t.indexOf(a)&&({}).propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}(e,ef),r=(0,em.getUniqPayload)(t,e.payloadUniqBy,ej),l=ev(ev({},s),{},{payload:r});return a.isValidElement(e.content)?a.cloneElement(e.content,l):"function"==typeof e.content?a.createElement(e.content,l):a.createElement(ed,l)}function eN(e){var t=(0,E.useAppDispatch)();return(0,a.useEffect)(()=>{t((0,eh.setLegendSettings)(e))},[t,e]),null}function ew(e){var t=(0,E.useAppDispatch)();return(0,a.useEffect)(()=>(t((0,eh.setLegendSize)(e)),()=>{t((0,eh.setLegendSize)({width:0,height:0}))}),[t,e]),null}var ek={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",layout:"horizontal",verticalAlign:"bottom"},eS=a.memo(function(e){var t,s=(0,P.resolveDefaultProps)(e,ek),r=(0,E.useAppSelector)(ex.selectLegendPayload),l=(0,X.useLegendPortal)(),i=(0,S.useMargin)(),{width:n,height:c,wrapperStyle:o,portal:d}=s,[m,x]=(0,eu.useElementOffset)([r]),u=(0,S.useChartWidth)(),h=(0,S.useChartHeight)();if(null==u||null==h)return null;var p=u-((null==i?void 0:i.left)||0)-((null==i?void 0:i.right)||0),f=(t=s.layout,"vertical"===t&&null!=c?{height:c}:"horizontal"===t?{width:n||p}:null),g=d?o:ev(ev({position:"absolute",width:(null==f?void 0:f.width)||n||"auto",height:(null==f?void 0:f.height)||c||"auto"},function(e,t,a,s,r,l){var i,n,{layout:c,align:o,verticalAlign:d}=t;return e&&(void 0!==e.left&&null!==e.left||void 0!==e.right&&null!==e.right)||(i="center"===o&&"vertical"===c?{left:((s||0)-l.width)/2}:"right"===o?{right:a&&a.right||0}:{left:a&&a.left||0}),e&&(void 0!==e.top&&null!==e.top||void 0!==e.bottom&&null!==e.bottom)||(n="middle"===d?{top:((r||0)-l.height)/2}:"bottom"===d?{bottom:a&&a.bottom||0}:{top:a&&a.top||0}),ev(ev({},i),n)}(o,s,i,u,h,m)),o),b=null!=d?d:l;if(null==b||null==r)return null;var v=a.createElement("div",{className:"recharts-legend-wrapper",style:g,ref:x},a.createElement(eN,{layout:s.layout,align:s.align,verticalAlign:s.verticalAlign,itemSorter:s.itemSorter}),!d&&a.createElement(ew,{width:m.width,height:m.height}),a.createElement(ey,eg({},s,f,{margin:i,chartWidth:u,chartHeight:h,contextPayload:r})));return(0,Q.createPortal)(v,b)},ep.propsAreEqual);eS.displayName="Legend";var eC=e.i(555706),eE=e.i(925949),eO=e.i(433369),eP=["axis"],eA=(0,a.forwardRef)((e,t)=>a.createElement(eO.CartesianChart,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:eP,tooltipPayloadSearcher:eE.arrayTooltipSearcher,categoricalChartProps:e,ref:t})),eD=e.i(731195),eT=e.i(234239),ez=e.i(785183),eR=e.i(93230),eL=e.i(393718),eM=e.i(393162),e$=e.i(156132);let eq=[{value:"1h",label:"1h"},{value:"24h",label:"24h"},{value:"7d",label:"7d"},{value:"30d",label:"30d"}];function eI({value:e,onChange:a}){return(0,t.jsx)("div",{role:"tablist","aria-label":"Select time range",className:"inline-flex items-center gap-1 rounded-lg bg-black/5 p-1 dark:bg-white/5",children:eq.map(s=>{let r=e===s.value;return(0,t.jsx)("button",{type:"button",role:"tab","aria-selected":r,tabIndex:r?0:-1,onClick:()=>a(s.value),className:(0,e$.cn)("focus-ring h-9 rounded-md px-4 text-sm font-medium transition-all",r?"bg-primary text-white shadow-sm hover:bg-primary-hover":"text-text-muted hover:bg-black/5 hover:text-text-main dark:hover:bg-white/5"),children:s.label},s.value)})})}let e_={"1h":"Last hour","24h":"Last 24 hours","7d":"Last 7 days","30d":"Last 30 days"},eF=["var(--color-primary)","var(--color-accent)","var(--color-success)","var(--color-warning)","var(--color-error)","var(--color-text-muted)"];function eH(e,t){let a=new Date(e);return Number.isNaN(a.getTime())?e:"1h"===t||"24h"===t?new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit"}).format(a):new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric"}).format(a)}function eB(e,t){let a=new Date(e);return Number.isNaN(a.getTime())?e:new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"1h"===t||"24h"===t?"2-digit":void 0,minute:"1h"===t||"24h"===t?"2-digit":void 0}).format(a)}function eG(e){return`${Math.round(e)}%`}function eK(){let[e,s]=(0,a.useState)("24h"),[r,l]=(0,a.useState)(null),[i,n]=(0,a.useState)(!0),[c,o]=(0,a.useState)(null),d=(0,a.useCallback)(async(e,t)=>{n(!0);try{let a=await fetch(`/api/usage/utilization?range=${e}`,{signal:t,cache:"no-store"});if(!a.ok)throw Error("Failed to fetch utilization data");let s=await a.json();l(s),o(null)}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return;o(e instanceof Error?e.message:"Failed to fetch utilization data"),l(null)}finally{t?.aborted||n(!1)}},[]);(0,a.useEffect)(()=>{let t=new AbortController;return d(e,t.signal),()=>t.abort()},[d,e]);let m=(0,a.useMemo)(()=>{let e=new Map;for(let[t,a]of(r?.providers??[]).entries())e.set(a,eF[t%eF.length]);return e},[r?.providers]),x=(0,a.useMemo)(()=>{if(!r?.data.length)return[];let e=new Map;for(let t of r.data){let a=e.get(t.timestamp)??{timestamp:t.timestamp,label:eH(t.timestamp,r.timeRange)};a[t.provider]=Number(t.remainingPct.toFixed(2)),e.set(t.timestamp,a)}return Array.from(e.entries()).sort(([e],[t])=>new Date(e).getTime()-new Date(t).getTime()).map(([,e])=>e)},[r]),u=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let a of e){let e=t.get(a.provider);(!e||new Date(a.timestamp).getTime()>new Date(e.timestamp).getTime())&&t.set(a.provider,a)}return Array.from(t.values()).sort((e,t)=>t.remainingPct-e.remainingPct)})(r?.data??[]),[r?.data]),h=!!r?.data.length,[p,f]=(0,a.useState)(!1),g=(0,a.useCallback)(()=>{f(!0),o(null),d(e).finally(()=>f(!1))},[e,d]);return(0,t.jsx)("div",{className:"flex flex-col gap-6",children:(0,t.jsx)(eL.default,{title:"Provider utilization",subtitle:e_[e],icon:"monitoring",action:(0,t.jsx)(eI,{value:e,onChange:s}),className:"overflow-hidden",children:i&&!h?(0,t.jsxs)("div",{className:"flex min-h-80 items-center justify-center text-sm text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined mr-2 animate-spin text-[18px]",children:"progress_activity"}),"Loading utilization data…"]}):c?(0,t.jsxs)("div",{className:"flex min-h-80 flex-col items-center justify-center gap-4 text-center",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[32px] text-error",children:"error"}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-text-main",children:"Failed to load utilization data"}),(0,t.jsx)("p",{className:"text-sm text-text-muted",children:c})]}),(0,t.jsx)("button",{type:"button",onClick:g,disabled:p,className:"inline-flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary-hover disabled:opacity-50 disabled:cursor-not-allowed",children:p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]",children:"progress_activity"}),"Retrying…"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"refresh"}),"Retry"]})})]}):h?(0,t.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,t.jsx)("div",{className:"h-80 w-full rounded-xl border border-black/5 bg-black/[0.02] px-3 py-4 dark:border-white/5 dark:bg-white/[0.02]",children:(0,t.jsx)(eD.ResponsiveContainer,{width:"100%",height:"100%",children:(0,t.jsxs)(eA,{data:x,margin:{top:8,right:16,bottom:0,left:0},children:[(0,t.jsx)(Z,{stroke:"var(--color-border)",strokeDasharray:"3 3",vertical:!1}),(0,t.jsx)(ez.XAxis,{dataKey:"timestamp",tickFormatter:t=>eH(String(t),e),tick:{fill:"var(--color-text-muted)",fontSize:12},axisLine:{stroke:"var(--color-border)"},tickLine:{stroke:"var(--color-border)"},minTickGap:24}),(0,t.jsx)(eR.YAxis,{domain:[0,100],tickFormatter:eG,tick:{fill:"var(--color-text-muted)",fontSize:12},axisLine:{stroke:"var(--color-border)"},tickLine:{stroke:"var(--color-border)"},width:44}),(0,t.jsx)(eT.Tooltip,{labelFormatter:t=>eB(String(t),e),formatter:(e,t)=>[eG(e),t],contentStyle:{backgroundColor:"var(--color-surface)",borderColor:"var(--color-border)",borderRadius:12,color:"var(--color-text-main)",boxShadow:"var(--shadow-soft)"},itemStyle:{color:"var(--color-text-main)"},labelStyle:{color:"var(--color-text-main)",fontWeight:600}}),(0,t.jsx)(eS,{}),r?.providers.map(e=>(0,t.jsx)(eC.Line,{type:"monotone",dataKey:e,name:e,stroke:m.get(e)??"var(--color-primary)",strokeWidth:2.5,dot:!1,activeDot:{r:4,strokeWidth:0},connectNulls:!0},e))]})})}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3",children:u.map(a=>{let s=a.remainingPct<=20;return(0,t.jsxs)(eL.default.Section,{className:"flex h-full flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"flex h-11 w-11 items-center justify-center rounded-xl border border-black/5 bg-surface text-text-main dark:border-white/5",children:(0,t.jsx)(eM.default,{providerId:a.provider,size:22})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-text-main",children:a.provider}),(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"Latest quota snapshot"})]})]}),(0,t.jsx)("span",{className:`inline-flex items-center rounded-full px-2.5 py-1 text-xs font-medium ${a.isExhausted?"bg-error/10 text-error":s?"bg-warning/10 text-warning":"bg-success/10 text-success"}`,children:a.isExhausted?"Exhausted":s?"Low":"Healthy"})]}),(0,t.jsxs)("div",{className:"flex items-end justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-3xl font-bold text-text-main",children:[a.remainingPct.toFixed(+(a.remainingPct<10)),"%"]}),(0,t.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Remaining capacity"})]}),(0,t.jsxs)("div",{className:"text-right text-xs text-text-muted",children:[(0,t.jsx)("p",{children:eB(a.timestamp,e)}),(0,t.jsx)("p",{className:"mt-1 uppercase tracking-[0.14em]",children:a.windowKey})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)("div",{className:"h-2 overflow-hidden rounded-full bg-black/5 dark:bg-white/5",children:(0,t.jsx)("div",{className:`h-full rounded-full transition-all ${a.isExhausted?"bg-error":s?"bg-warning":"bg-primary"}`,style:{width:`${Math.max(a.remainingPct,0)}%`}})}),(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs text-text-muted",children:[(0,t.jsx)("span",{children:"0%"}),(0,t.jsx)("span",{children:"Remaining quota"}),(0,t.jsx)("span",{children:"100%"})]})]})]},a.provider)})})]}):(0,t.jsxs)("div",{className:"flex min-h-80 flex-col items-center justify-center gap-4 text-center",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[40px] text-text-muted/70",children:"timeline"}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-text-main",children:"No utilization data available"}),(0,t.jsx)("p",{className:"max-w-md text-sm text-text-muted",children:"Provider quota snapshots will appear here after utilization data is collected."})]}),(0,t.jsxs)("div",{className:"rounded-lg border border-black/5 bg-black/[0.02] p-4 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-text-main",children:"Getting started"}),(0,t.jsxs)("ul",{className:"mt-2 text-left text-xs text-text-muted",children:[(0,t.jsxs)("li",{className:"flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary",children:"check_circle"}),(0,t.jsxs)("span",{children:["Connect providers via OAuth or API keys in ",(0,t.jsx)("strong",{children:"Providers"})]})]}),(0,t.jsxs)("li",{className:"mt-1 flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary",children:"check_circle"}),(0,t.jsx)("span",{children:"Enable quota tracking by using the provider in a combo or direct request"})]}),(0,t.jsxs)("li",{className:"mt-1 flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary",children:"check_circle"}),(0,t.jsx)("span",{children:"Data will appear automatically as quota snapshots are collected"})]})]})]})]})})})}var eW=e.i(969353);function eU(e,t=0){return`${e.toFixed(t)}%`}function eV(e){return eU(100*e,1)}function eJ({icon:e,label:a,value:s,subValue:r}){return(0,t.jsxs)("div",{className:"rounded-lg border border-black/5 bg-black/[0.02] p-4 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs font-semibold uppercase tracking-wider text-text-muted",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:e}),a]}),(0,t.jsx)("div",{className:"mt-2 text-2xl font-semibold text-text-main",children:s}),r?(0,t.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:r}):null]})}function eY({label:e,value:a,meta:s}){let r=`${Math.max(100*a,6*(a>0))}%`;return(0,t.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-black/5 bg-black/[0.02] p-3 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 text-sm",children:[(0,t.jsx)("span",{className:"truncate font-medium text-text-main",children:e}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-text-muted",children:s})]}),(0,t.jsx)("div",{className:"h-2 overflow-hidden rounded-full bg-black/5 dark:bg-white/5",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-primary transition-all",style:{width:r}})})]})}function eZ({combo:e}){var s;let r=(0,a.useMemo)(()=>[...e.usageSkew.modelDistribution].sort((e,t)=>t.requestShare-e.requestShare),[e.usageSkew.modelDistribution]);return(0,t.jsxs)(eL.default,{className:"overflow-hidden p-0",children:[(0,t.jsx)("div",{className:"border-b border-black/5 px-6 py-5 dark:border-white/5",children:(0,t.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-text-main",children:e.comboName}),(0,t.jsx)(eW.default,{variant:"primary",size:"sm",children:e.strategy})]}),(0,t.jsxs)("p",{className:"mt-2 text-sm text-text-muted",children:[e.models.length," models across ",e.quotaHealth.providers.length," providers"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-3 lg:min-w-[420px]",children:[(0,t.jsx)(eJ,{icon:"battery_status_good",label:"Worst quota left",value:eU(e.quotaHealth.worstRemainingPct)}),(0,t.jsx)(eJ,{icon:"balance",label:"Usage skew",value:e.usageSkew.giniCoefficient.toFixed(2),subValue:"Gini coefficient"}),(0,t.jsx)(eJ,{icon:"bolt",label:"Success rate",value:eU(100*e.performance.successRate,1),subValue:`${e.performance.totalRequests.toLocaleString()} requests`})]})]})}),(0,t.jsxs)("div",{className:"grid gap-6 px-6 py-5 xl:grid-cols-[1.1fr_1fr_0.95fr]",children:[(0,t.jsxs)("section",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-text-main",children:"Quota health"}),(0,t.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:"Lowest remaining quota across providers with short trend signals."})]}),(0,t.jsx)("div",{className:"flex flex-col gap-3",children:e.quotaHealth.providers.map(e=>{var a;let s="improving"===(a=e.trend)?{icon:"trending_up",label:"Improving",variant:"success"}:"declining"===a?{icon:"trending_down",label:"Declining",variant:"warning"}:{icon:"trending_flat",label:"Stable",variant:"default"},r=`${Math.max(e.remainingPct,6*(e.remainingPct>0))}%`;return(0,t.jsxs)("div",{className:"rounded-lg border border-black/5 bg-black/[0.02] p-4 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-medium text-text-main",children:e.provider}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-text-muted",children:["Remaining quota ",eU(e.remainingPct,1)]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(eW.default,{variant:s.variant,size:"sm",icon:s.icon,children:s.label}),e.isExhausted?(0,t.jsx)(eW.default,{variant:"error",size:"sm",children:"Exhausted"}):null]})]}),(0,t.jsx)("div",{className:"mt-3 h-2 overflow-hidden rounded-full bg-black/5 dark:bg-white/5",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-primary transition-all",style:{width:r}})})]},e.provider)})})]}),(0,t.jsxs)("section",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-text-main",children:"Usage skew"}),(0,t.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:"Model request share and token share within this combo."})]}),(0,t.jsx)("div",{className:"flex flex-col gap-3",children:r.map(e=>(0,t.jsxs)("div",{className:"rounded-lg border border-black/5 bg-black/[0.02] p-4 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"truncate text-sm font-medium text-text-main",children:e.model}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-text-muted",children:["Request share ",eV(e.requestShare)," · Token share"," ",eV(e.tokenShare)]})]}),(0,t.jsx)(eW.default,{size:"sm",children:eV(e.requestShare)})]}),(0,t.jsxs)("div",{className:"mt-3 grid gap-2",children:[(0,t.jsx)(eY,{label:"Requests",value:e.requestShare,meta:eV(e.requestShare)}),(0,t.jsx)(eY,{label:"Tokens",value:e.tokenShare,meta:eV(e.tokenShare)})]})]},e.model))})]}),(0,t.jsxs)("section",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-text-main",children:"Performance"}),(0,t.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:"Reliability and throughput for routed combo traffic."})]}),(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-3 xl:grid-cols-1",children:[(0,t.jsx)(eJ,{icon:"timer",label:"Avg latency",value:(s=e.performance.avgLatencyMs,`${Math.round(s).toLocaleString()}ms`)}),(0,t.jsx)(eJ,{icon:"task_alt",label:"Success rate",value:eU(100*e.performance.successRate,1)}),(0,t.jsx)(eJ,{icon:"stacked_line_chart",label:"Total requests",value:e.performance.totalRequests.toLocaleString()})]})]})]})]})}function eQ(){return(0,t.jsx)("div",{className:"flex flex-col gap-4",children:[0,1].map(e=>(0,t.jsx)(eL.default,{className:"p-6",children:(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-center xl:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(r.Skeleton,{className:"h-6 w-40"}),(0,t.jsx)(r.Skeleton,{className:"h-4 w-52"})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-3 xl:min-w-[420px]",children:[0,1,2].map(e=>(0,t.jsx)(r.Skeleton,{className:"h-24 rounded-lg"},e))})]}),(0,t.jsx)("div",{className:"grid gap-4 xl:grid-cols-3",children:[0,1,2].map(e=>(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(r.Skeleton,{className:"h-5 w-28"}),(0,t.jsx)(r.Skeleton,{className:"h-24 rounded-lg"}),(0,t.jsx)(r.Skeleton,{className:"h-24 rounded-lg"})]},e))})]})},e))})}function eX(){let[e,s]=(0,a.useState)("24h"),[l,i]=(0,a.useState)(null),[n,c]=(0,a.useState)(!0),[o,d]=(0,a.useState)(null),[m,x]=(0,a.useState)(!1),u=(0,a.useCallback)(async(t,a=!1)=>{a?x(!0):c(!0),d(null);try{let a=await fetch(`/api/usage/combo-health?range=${e}`,{signal:t.signal});if(!a.ok)throw Error("Failed to fetch combo health data");let s=await a.json();i(s),d(null)}catch(e){if("AbortError"===e.name)return;d(e instanceof Error?e.message:"Unknown error"),a||i(null)}finally{!t.signal.aborted&&(c(!1),a&&x(!1))}},[e]);(0,a.useEffect)(()=>{let e=new AbortController;return u(e,!1),()=>e.abort()},[u]);let h=l?.combos??[],p=(0,a.useCallback)(()=>{u(new AbortController,!0)},[u]);return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 rounded-xl border border-black/5 bg-surface p-5 shadow-sm dark:border-white/5 md:flex-row md:items-center md:justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Combo health"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Monitor quota pressure, skewed model usage, and delivery performance by combo."})]}),(0,t.jsx)(eI,{value:e,onChange:s})]}),n?(0,t.jsx)(eQ,{}):null,!n&&o?(0,t.jsx)(eL.default,{className:"p-8",children:(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 text-center",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[40px] text-error",children:"sync_problem"}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("div",{className:"font-medium text-text-main",children:"Unable to load combo health"}),(0,t.jsx)("div",{className:"text-sm text-text-muted",children:o})]}),(0,t.jsx)("button",{type:"button",onClick:p,disabled:m,className:"inline-flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary-hover disabled:opacity-50 disabled:cursor-not-allowed",children:m?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]",children:"progress_activity"}),"Retrying…"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"refresh"}),"Retry"]})})]})}):null,n||o||0!==h.length?null:(0,t.jsx)(eL.default,{className:"p-10",children:(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 text-center",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[40px] text-text-muted/70",children:"monitor_heart"}),(0,t.jsx)("div",{className:"text-base font-medium text-text-main",children:"No combo health data available"}),(0,t.jsx)("div",{className:"max-w-md text-sm text-text-muted",children:"Combo quota snapshots and routed requests will appear here after traffic starts flowing."}),(0,t.jsxs)("div",{className:"rounded-lg border border-black/5 bg-black/[0.02] p-4 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-text-main",children:"Getting started"}),(0,t.jsxs)("ul",{className:"mt-2 text-left text-xs text-text-muted",children:[(0,t.jsxs)("li",{className:"flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary",children:"check_circle"}),(0,t.jsxs)("span",{children:["Create combos in ",(0,t.jsx)("strong",{children:"Combos"})," with multiple providers"]})]}),(0,t.jsxs)("li",{className:"mt-1 flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary",children:"check_circle"}),(0,t.jsx)("span",{children:"Send requests to combo endpoints to generate traffic data"})]}),(0,t.jsxs)("li",{className:"mt-1 flex items-start gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary",children:"check_circle"}),(0,t.jsx)("span",{children:"Health metrics will appear automatically as requests are routed"})]})]})]})]})}),n||o||!(h.length>0)?null:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,t.jsx)(r.Spinner,{size:"sm",className:(0,e$.cn)("text-primary","[&_.material-symbols-outlined]:text-[16px]")}),"Tracking ",h.length," combos for ",e]}),h.map(e=>(0,t.jsx)(eZ,{combo:e},e.comboId))]})]})}e.s(["default",0,function(){let[e,n]=(0,a.useState)("overview"),c=(0,i.useTranslations)("analytics"),o={overview:c("overviewDescription"),evals:c("evalsDescription"),search:"Search request analytics — provider breakdown, cache hit rate, and cost tracking.",utilization:c("utilizationDescription"),comboHealth:c("comboHealthDescription")};return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-primary text-[28px]",children:"analytics"}),c("title")]}),(0,t.jsx)("p",{className:"text-sm text-text-muted mt-1",children:o[e]})]}),(0,t.jsx)(l.SegmentedControl,{options:[{value:"overview",label:c("overview")},{value:"evals",label:c("evals")},{value:"search",label:"Search"},{value:"utilization",label:c("utilization")},{value:"comboHealth",label:c("comboHealth")}],value:e,onChange:n}),"overview"===e&&(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:(0,t.jsx)(v,{})}),(0,t.jsx)(a.Suspense,{fallback:(0,t.jsx)(r.CardSkeleton,{}),children:(0,t.jsx)(s.default,{})})]}),"evals"===e&&(0,t.jsx)(h,{}),"search"===e&&(0,t.jsx)(b,{}),"utilization"===e&&(0,t.jsx)(eK,{}),"comboHealth"===e&&(0,t.jsx)(eX,{})]})}],463082)}]);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|