@jheavenknows/bluerouter 5.3.16 → 5.3.18
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-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +3 -3
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.rsc +21 -20
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +30 -29
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +21 -20
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +3 -3
- package/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/6811.js +1 -1
- package/app/.next-cli-build/server/chunks/7639.js +1 -1
- package/app/.next-cli-build/server/chunks/8640.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/static/chunks/{5263-d6ee4d6284abc821.js → 5263-3ec89c2144054b5f.js} +1 -1
- package/app/.next-cli-build/static/chunks/{5497-4faec8cfb542e7f8.js → 5497-71bd777d42ea46eb.js} +3 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/analytics/page-8eac9d90ebe66246.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-aaacd3d160675084.js +3 -0
- package/app/.next-cli-build/static/css/812a1f04de679632.css +1 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.12-to-5.3.13-5.3.13-20260817-131047 → upgrade-5.3.15-to-5.3.16-5.3.16-20260817-162040}/data.sqlite +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.11-to-5.3.12-5.3.12-20260817-125752 → upgrade-5.3.16-to-5.3.17-5.3.17-20260817-180200}/data.sqlite +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/analytics/page-85b4d203c77b909e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-186e77449213e15b.js +0 -3
- package/app/.next-cli-build/static/css/f104d6561e81b0ac.css +0 -1
- /package/app/.next-cli-build/static/{ipwfbIyh2BtaRvddGx6I8 → yI2CHS4xc2s5mrkJyZgF-}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{ipwfbIyh2BtaRvddGx6I8 → yI2CHS4xc2s5mrkJyZgF-}/_ssgManifest.js +0 -0
|
@@ -7,7 +7,7 @@ exports.id=8640,exports.ids=[8640],exports.modules={267:(a,b,c)=>{"use strict";c
|
|
|
7
7
|
`,title:a.internalName&&a.internalName!==b?`Internal: ${a.internalName}`:b,children:[e&&(0,d.jsx)("span",{className:"material-symbols-outlined leading-none",style:{fontSize:"10px"},children:"check"}),(0,d.jsx)("span",{children:c})]},`${a.pickerSource||"combo"}-${a.id||b}`)})})]}),Object.entries(K).map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 z-10 bg-white py-1 dark:bg-zinc-950",children:[(0,d.jsx)(h.A,{src:(0,j.mq)(a)||(0,j.gb)(a)?null:`/providers/${a}.png`,alt:b.name,size:14,fallbackText:(b.name||a).slice(0,2).toUpperCase(),fallbackColor:b.color}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:b.name}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",b.models.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:b.models.map(a=>{let b=g===a.value,c=a.isPlaceholder;return(0,d.jsx)("button",{onClick:()=>L(a),title:c?"Select to pre-fill, then edit model ID in the input":void 0,className:`
|
|
8
8
|
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
|
|
9
9
|
${c?"border-dashed border-border text-text-muted hover:border-primary/50 hover:text-primary bg-surface italic":b?"bg-primary text-white border-primary":r.includes(a.value)?"bg-primary border-primary text-white hover:bg-primary-hover":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
10
|
-
`,children:(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[r.includes(a.value)&&!c&&(0,d.jsx)("span",{className:"material-symbols-outlined leading-none",style:{fontSize:"10px"},children:"check"}),c?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[11px]",children:"edit"}),a.name]}):a.isCustom?(0,d.jsxs)(d.Fragment,{children:[a.name,(0,d.jsx)("span",{className:"text-[9px] opacity-60 font-normal",children:"custom"})]}):a.name]})},a.value)})})]},a)),0===Object.keys(K).length&&0===J.length&&(0,d.jsxs)("div",{className:"text-center py-4 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1 block",children:"search_off"}),(0,d.jsx)("p",{className:"text-xs",children:"No models found"})]})]})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,onClose:g().func.isRequired,onSelect:g().func.isRequired,onDeselect:g().func,selectedModel:g().string,activeProviders:g().arrayOf(g().shape({provider:g().string.isRequired})),title:g().string,modelAliases:g().object,kindFilter:g().string,addedModelValues:g().arrayOf(g().string),closeOnSelect:g().bool,personalOnly:g().bool,extraModels:g().arrayOf(g().string)}},83552:(a,b,c)=>{"use strict";c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({label:a,type:b="text",placeholder:c,value:g,onChange:h,error:i,hint:j,icon:k,disabled:l=!1,required:m=!1,className:n,inputClassName:o,...p}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",n),children:[a&&(0,d.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[a,m&&(0,d.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,d.jsxs)("div",{className:"relative",children:[k&&(0,d.jsx)("div",{className:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:k})}),(0,d.jsx)("input",{type:b,placeholder:c,value:g,onChange:h,disabled:l,className:(0,e.cn)("w-full py-2.5 px-3 text-sm text-text-main bg-surface-2 rounded-[10px]","border border-transparent placeholder-text-muted/70","focus:outline-none focus:ring-2 focus:ring-brand-500/30 focus:border-brand-500/40","transition-all duration-150 ease-out disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",k&&"pl-10",i&&"ring-1 ring-red-500 focus:ring-2 focus:ring-red-500/40 border-red-500/40",o),...p})]}),i&&(0,d.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),j&&!i&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:j})]})}},83784:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\shared\\\\components\\\\Select.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\shared\\components\\Select.js","default")},86209:(a,b,c)=>{"use strict";c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onMethodSelect:b,onClose:c}){let[f,g]=(0,e.useState)(null),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)("us-east-1"),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!1),x=a=>{g(a),q(null)},y=()=>{g(null),q(null)},z=async()=>{if(!n.trim())return void q("Please enter a refresh token");s(!0),q(null);try{let a=await fetch("/api/oauth/kiro/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:n.trim()})}),c=await a.json();if(!a.ok)throw Error(c.error||"Import failed");b("import")}catch(a){q(a.message)}finally{s(!1)}},A=a=>{b("social",{provider:a})};return(0,d.jsx)(h.aF,{isOpen:a,title:"Connect Kiro",onClose:c,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[!f&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Choose your authentication method:"}),(0,d.jsx)("button",{onClick:()=>b("builder-id"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"shield"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"AWS Builder ID"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Recommended for most users. Free AWS account required."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("idc"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"business"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"AWS IAM Identity Center"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"For enterprise users with custom AWS IAM Identity Center."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("social-google"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"account_circle"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"Google Account"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your Google account (manual callback)."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("social-github"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"code"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"GitHub Account"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your GitHub account (manual callback)."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("import"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"file_upload"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"Import Token"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Paste refresh token from Kiro IDE."})]})]})})]}),"idc"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["IDC Start URL ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:j,onChange:a=>k(a.target.value),placeholder:"https://your-org.awsapps.com/start",className:"font-mono text-sm"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Your organization's AWS IAM Identity Center URL"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium mb-2",children:"AWS Region"}),(0,d.jsx)(h.pd,{value:l,onChange:a=>m(a.target.value),placeholder:"us-east-1",className:"font-mono text-sm"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"AWS region for your Identity Center (default: us-east-1)"})]}),p&&(0,d.jsx)("p",{className:"text-sm text-red-600",children:p}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>{j.trim()?b("idc",{startUrl:j.trim(),region:l}):q("Please enter your IDC start URL")},fullWidth:!0,children:"Continue"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-google"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsxs)("div",{className:"flex-1 text-sm",children:[(0,d.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,d.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>A("google"),fullWidth:!0,children:"Continue with Google"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-github"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsxs)("div",{className:"flex-1 text-sm",children:[(0,d.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,d.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>A("github"),fullWidth:!0,children:"Continue with GitHub"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"import"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[t&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting token..."}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from AWS SSO cache"})]}),!t&&(0,d.jsxs)(d.Fragment,{children:[v&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Token auto-detected from Kiro IDE successfully!"})]})}),!v&&!p&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Kiro IDE not detected. Please paste your refresh token manually."})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Refresh Token ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:n,onChange:a=>o(a.target.value),placeholder:"Token will be auto-filled...",className:"font-mono text-sm"})]}),p&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:p})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:z,fullWidth:!0,disabled:r||!n.trim(),children:r?"Importing...":"Import Token"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})]})})}i.propTypes={isOpen:g().bool.isRequired,onMethodSelect:g().func.isRequired,onClose:g().func.isRequired}},86739:(a,b,c)=>{"use strict";c.d(b,{default:()=>r});var d=c(48249),e=c(67484),f=c(19099),g=c(2116),h=c.n(g),i=c(49885),j=c.n(i),k=c(3236),l=c(53845),m=c(20151),n=c(37365),o=c(12020),p=c(96919),q=c(99258);function r({onMenuClick:a,showMenuButton:b=!0}){let c=(0,f.usePathname)(),g=(0,f.useRouter)(),{displayName:i,loginMethod:j}=(0,m.s)(),{title:n,description:t,icon:u,breadcrumbs:v}=(0,e.useMemo)(()=>(a=>{if(!a)return{title:"",description:"",breadcrumbs:[]};let b=a.match(/\/media-providers\/([^/]+)\/([^/]+)$/);if(b){let a=b[1],c=b[2],d=p.rj.find(b=>b.id===a),e=p.Q2[c];return{title:e?.name||c,description:"",breadcrumbs:[{label:"Media Providers",href:`/dashboard/media-providers/${a}`},{label:d?.label||a,href:`/dashboard/media-providers/${a}`},{label:e?.name||c,image:`/providers/${c}.png`}]}}let c=a.match(/\/media-providers\/([^/]+)$/);if(c){let a=c[1],b=p.rj.find(b=>b.id===a);return{title:b?.label||a,description:`Manage your ${b?.label||a} providers`,icon:b?.icon||"perm_media",breadcrumbs:[]}}let d=a.match(/\/providers\/([^/]+)$/);if(d){let a=d[1],b=o.zN[a]||o.fg[a];if(b)return{title:b.name,description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:b.name,image:`/providers/${b.id}.png`}]}}return a.includes("/providers")&&!a.includes("/media-providers")?{title:"Providers",description:"Manage your AI provider connections",icon:"dns",breadcrumbs:[]}:a.includes("/combos")?{title:"Combos",description:"Model combos with fallback",icon:"layers",breadcrumbs:[]}:a.includes("/token-saver")?{title:"Token Saver Analytics",description:"Theo d\xf5i hiệu quả RTK token saving theo source tool, provider, model v\xe0 filter",icon:"compress",breadcrumbs:[]}:a.includes("/analytics")?{title:"Analytics",description:"Thống k\xea request, token, API key, Source IP, provider, model v\xe0 lỗi vận h\xe0nh",icon:"monitoring",breadcrumbs:[]}:a.includes("/resource-monitor")?{title:"Linux Resources",description:"Realtime resource monitoring for remote Linux servers",icon:"monitor_heart",breadcrumbs:[]}:a.includes("/cluster")?{title:"Cluster Nodes",description:"Synchronize Master backups to Standby BlueRouter nodes",icon:"hub",breadcrumbs:[]}:a.includes("/usage")?{title:"Usage & Analytics",description:"Monitor your API usage, token consumption, and request logs",icon:"bar_chart",breadcrumbs:[]}:a.includes("/auth-files")?{title:"Auth Files",description:"Map provider credentials stored in the local database",icon:"vpn_key",breadcrumbs:[]}:a.includes("/quota")?{title:"Quota Tracker",description:"Track and manage your API quota limits",icon:"data_usage",breadcrumbs:[]}:a.includes("/mitm")?{title:"AI Traffic Proxy",description:"Intercept CLI tool traffic and route through this router gateway",icon:"security",breadcrumbs:[]}:a.includes("/prompt-logs")?{title:"Prompt Logs",description:"Search Copilot/MITM prompts across the prompt log database",icon:"manage_search",breadcrumbs:[]}:a.includes("/cli-tools")?{title:"CLI Tools",description:"Configure CLI tools",icon:"terminal",breadcrumbs:[]}:a.includes("/proxy-pools")?{title:"Proxy Pools",description:"Manage your proxy pool configurations",icon:"lan",breadcrumbs:[]}:a.includes("/skills")?{title:"Agent Skills",description:"Copy a link and paste to your AI to use this Router — no install needed",icon:"extension",breadcrumbs:[]}:a.includes("/endpoint")?{title:"Endpoint",description:"API endpoint configuration",icon:"api",breadcrumbs:[]}:a.includes("/api-keys")?{title:"API Keys",description:"Manage API keys and model access",icon:"vpn_key",breadcrumbs:[]}:a.includes("/profile")?{title:"Settings",description:"Manage your preferences",icon:"settings",breadcrumbs:[]}:a.includes("/translator")?{title:"Translator",description:"Debug translation flow between formats",icon:"translate",breadcrumbs:[]}:a.includes("/console-log")?{title:"Console Log",description:"Live server console output",icon:"monitor",breadcrumbs:[]}:"/dashboard"===a?{title:"Endpoint",description:"API endpoint configuration",icon:"api",breadcrumbs:[]}:{title:"",description:"",breadcrumbs:[]}})(c),[c]),w=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&(g.push("/login"),g.refresh())}catch(a){console.error("Failed to logout:",a)}};return(0,d.jsx)("header",{className:"sticky top-0 z-30 border-b border-border bg-background/80 backdrop-blur",children:(0,d.jsxs)("div",{className:"flex min-h-[72px] items-center justify-between gap-4 px-4 md:px-6",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[b?(0,d.jsx)("button",{type:"button",onClick:a,className:"rounded-xl border border-border p-2 text-text-muted hover:bg-surface hover:text-text-main lg:hidden","aria-label":"Open menu",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"menu"})}):null,(0,d.jsx)("div",{className:"min-w-0",children:v.length>0?(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-1 text-sm text-text-muted",children:v.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[b>0?(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"chevron_right"}):null,a.href?(0,d.jsx)(h(),{href:a.href,className:"hover:text-primary",children:(0,q.Tl)(a.label)}):(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[a.image?(0,d.jsx)("img",{src:a.image,alt:"",className:"h-5 w-5 rounded"}):null,(0,d.jsx)("h1",{className:"text-xl font-semibold text-text-main",children:(0,q.Tl)(a.label)})]})]},`${a.label}-${b}`))}):n?(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[u?(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:u}):null,(0,d.jsx)("h1",{className:"truncate text-xl font-semibold text-text-main",children:(0,q.Tl)(n)})]}),t?(0,d.jsx)("p",{className:"mt-1 truncate text-sm text-text-muted",children:(0,q.Tl)(t)}):null]}):null})]}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,d.jsx)(s,{}),i&&"OIDC"===j?(0,d.jsxs)("div",{className:"hidden items-center gap-2 rounded-xl border border-border px-3 py-2 text-sm text-text-muted md:flex",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"person"}),(0,d.jsx)("span",{children:i}),(0,d.jsx)("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-xs text-primary",children:"OIDC"})]}):null,(0,d.jsx)(l.default,{}),(0,d.jsx)(k.default,{onLogout:w})]})]})})}function s(){let a=(0,n.C)(a=>a.visible),b=(0,n.C)(a=>a.query),c=(0,n.C)(a=>a.placeholder),e=(0,n.C)(a=>a.setQuery);return a?(0,d.jsxs)("div",{className:"relative hidden w-72 md:block",children:[(0,d.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-[18px] text-text-muted",children:"search"}),(0,d.jsx)("input",{value:b,onChange:a=>e(a.target.value),placeholder:c,className:"h-9 w-full rounded-lg border border-border bg-surface/60 pl-8 pr-8 text-sm text-text-main outline-none transition-colors placeholder:text-text-muted focus:border-primary/50"}),b?(0,d.jsx)("button",{type:"button",onClick:()=>e(""),className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-0.5 text-text-muted hover:text-text-main","aria-label":"Clear search",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})}):null]}):null}r.propTypes={onMenuClick:j().func,showMenuButton:j().bool}},87226:(a,b,c)=>{"use strict";c.d(b,{default:()=>ao});var d=c(48249),e=c(67484),f=c(19099),g=c(96919),h=c(20151),i=c(75171),j=c(17660),k=c(2116),l=c.n(k),m=c(49885),n=c.n(m);let o=(a,b=0)=>{let c=Number(a);return Number.isFinite(c)?c:b},p=a=>new Intl.NumberFormat().format(o(a)),q=a=>`$${o(a).toFixed(2)}`,r=(a,b)=>{let c=o(b);return c<=0?0:Math.round(o(a)/c*100)};function s({label:a,dotClass:b,requests:c,promptTokens:e,completionTokens:f,cost:g,showCost:h}){return(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${b}`}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:a})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(o(e)+o(f)),h&&(0,d.jsx)("span",{className:"ml-1.5 text-warning",children:q(g)}),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[p(c)," req"]})]})]})}s.propTypes={label:n().string.isRequired,dotClass:n().string.isRequired,requests:n().number,promptTokens:n().number,completionTokens:n().number,cost:n().number,showCost:n().bool};let t=[{name:"Anthropic (Claude)",dot:"bg-warning",mode:"Thủ c\xf4ng",modeNote:"BlueRouter chỉ \xe1p dụng cache write 5 ph\xfat",write:"1,25x gi\xe1 input",read:"0,1x gi\xe1 input",ttl:"5 ph\xfat; TTL d\xe0i hơn vẫn d\xf9ng c\xf9ng mức gi\xe1",fields:"cache_creation_input_tokens + cache_read_input_tokens",note:"Kh\xf4ng lưu cache 1 giờ. Mọi cache creation được t\xednh bằng rate 5 ph\xfat của model."},{name:"OpenAI",dot:"bg-success",mode:"Tự động",modeNote:"d\xf9ng Standard / short-context rate",write:"GPT-5.6 theo cache-write rate; model kh\xe1c fallback về input",read:"Theo cached rate của từng model",ttl:"Kh\xf4ng t\xe1ch TTL trong BlueRouter",fields:"prompt_tokens_details.cached_tokens + cache creation fields khi c\xf3",note:"Request tr\xean 272K hoặc cache d\xe0i hơn vẫn d\xf9ng đ\xfang rate short-context/cache 5 ph\xfat đ\xe3 cấu h\xecnh."},{name:"Google Gemini",dot:"bg-primary",mode:"Hai chế độ",modeNote:"implicit tự động, explicit do người d\xf9ng tạo",write:"Miễn ph\xed (implicit) / ph\xed lưu trữ theo giờ (explicit)",read:"giảm gi\xe1 đ\xe1ng kể so với input",ttl:"Implicit ngắn hạn; explicit theo TTL tự đặt",fields:"cachedContentTokenCount",note:"Explicit caching t\xednh tiền theo thời gian lưu, kh\xe1c hẳn m\xf4 h\xecnh của Anthropic v\xe0 OpenAI."},{name:"Local (vLLM, llama.cpp, Ollama)",dot:"bg-text-muted",mode:"Tự động",modeNote:"prefix caching / KV cache reuse",write:"Miễn ph\xed",read:"Miễn ph\xed — chỉ tiết kiệm compute v\xe0 giảm TTFT",ttl:"Tuỳ cấu h\xecnh v\xe0 dung lượng KV cache",fields:"Thường kh\xf4ng t\xe1ch ri\xeang trong usage",note:"Tiết kiệm thời gian chứ kh\xf4ng tiết kiệm tiền, v\xe0 phần lớn gộp v\xe0o “New input” ở tr\xean."}];function u(){let[a,b]=(0,e.useState)(!1);return(0,d.jsxs)(j.default,{className:"min-w-0 px-4 py-3",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>b(a=>!a),className:"flex w-full min-w-0 items-center justify-between gap-2 text-left",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"help"}),(0,d.jsx)("span",{className:"truncate text-sm font-semibold uppercase text-text-muted",children:"Cache read / creation hoạt động thế n\xe0o"})]}),(0,d.jsx)("span",{className:`material-symbols-outlined shrink-0 text-[20px] text-text-muted transition-transform duration-200 ${a?"rotate-180":""}`,children:"expand_more"})]}),a&&(0,d.jsxs)("div",{className:"mt-3 flex min-w-0 flex-col gap-3 border-t border-border-subtle pt-3",children:[(0,d.jsxs)("p",{className:"text-xs leading-relaxed text-text-muted",children:[(0,d.jsx)("span",{className:"font-semibold text-text",children:"Cache creation"})," l\xe0 lần đầu một đoạn context được lưu lại. ",(0,d.jsx)("span",{className:"font-semibold text-text",children:"Cache read"})," l\xe0 những lần sau t\xe1i sử dụng đoạn đ\xf3 thay v\xec xử l\xfd lại. Cơ chế v\xe0 c\xe1ch t\xednh tiền kh\xe1c nhau tuỳ provider — gi\xe1 dưới đ\xe2y l\xe0 bội số so với gi\xe1 input thường của ch\xednh model đ\xf3."]}),(0,d.jsx)("div",{className:"grid min-w-0 grid-cols-1 gap-2 xl:grid-cols-2",children:t.map(a=>(0,d.jsxs)("div",{className:"min-w-0 rounded-[10px] bg-bg px-3 py-2.5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${a.dot}`}),(0,d.jsx)("span",{className:"truncate text-xs font-semibold",children:a.name})]}),(0,d.jsx)("span",{className:"shrink-0 rounded-full bg-surface px-2 py-0.5 text-[10px] text-text-muted",children:a.mode})]}),(0,d.jsxs)("dl",{className:"mt-2 flex min-w-0 flex-col gap-1 text-[11px]",children:[(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"Ghi cache"}),(0,d.jsx)("dd",{className:"truncate text-right font-medium",children:a.write})]}),(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"Đọc cache"}),(0,d.jsx)("dd",{className:"truncate text-right font-medium text-success",children:a.read})]}),(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"Thời hạn"}),(0,d.jsx)("dd",{className:"truncate text-right",children:a.ttl})]}),(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"K\xedch hoạt"}),(0,d.jsx)("dd",{className:"truncate text-right",children:a.modeNote})]})]}),(0,d.jsx)("p",{className:"mt-1.5 border-t border-border-subtle pt-1.5 text-[10px] leading-relaxed text-text-muted",children:a.note}),(0,d.jsx)("p",{className:"mt-1 font-mono text-[9px] leading-relaxed text-text-muted opacity-70",children:a.fields})]},a.name))}),(0,d.jsx)("p",{className:"text-[10px] leading-relaxed text-text-muted",children:"Gi\xe1 v\xe0 thời hạn do provider c\xf4ng bố v\xe0 c\xf3 thể thay đổi — h\xe3y đối chiếu bảng gi\xe1 ch\xednh thức trước khi d\xf9ng cho mục đ\xedch t\xednh chi ph\xed."})]})]})}function v({stats:a}){let{isAdmin:b}=(0,h.s)(),c=o(a.totalPromptTokens),e=o(a.totalCachedInputTokens),f=o(a.totalCacheCreationInputTokens),g=null!=a.totalNewInputTokens?o(a.totalNewInputTokens):Math.max(0,c-e-f),i=a.cloudVsLocal||{},k=i.cloud||{},m=i.local||{},n=o(k.requests)>0||o(m.requests)>0,t=o(k.promptTokens)+o(k.completionTokens),w=r(t,t+(o(m.promptTokens)+o(m.completionTokens)));return(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:gap-4",children:[(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-3 sm:grid-cols-2 md:grid-cols-4 sm:gap-4",children:[(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Requests"}),(0,d.jsx)("span",{className:"truncate text-2xl font-bold",children:p(a.totalRequests)})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Input Tokens"}),(0,d.jsx)("span",{className:"truncate text-2xl font-bold text-primary",children:p(c)}),c>0&&(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:[r(e,c),"% cached"]})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Output Tokens"}),(0,d.jsx)("span",{className:"truncate text-2xl font-bold text-success",children:p(a.totalCompletionTokens)})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[b?(0,d.jsxs)(l(),{href:"/dashboard/settings/pricing",className:"group flex min-w-0 items-center gap-1 text-text-muted text-sm uppercase font-semibold transition-colors hover:text-primary",title:"Chỉnh bảng gi\xe1 d\xf9ng để t\xednh cost",children:[(0,d.jsx)("span",{className:"truncate",children:"Est. Cost"}),(0,d.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[14px] opacity-0 transition-opacity group-hover:opacity-100",children:"edit"})]}):(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Est. Cost"}),(0,d.jsxs)("span",{className:"truncate text-2xl font-bold text-warning",children:["~",q(a.totalCost)]}),(0,d.jsx)("span",{className:"text-[10px] text-text-muted",children:"Estimated, not actual billing"})]})]}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-3 lg:grid-cols-2 sm:gap-4",children:[(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-2 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Input Token Breakdown"}),c>0&&(0,d.jsxs)("div",{className:"flex h-1.5 w-full overflow-hidden rounded-full bg-bg",children:[(0,d.jsx)("div",{className:"bg-primary",style:{width:`${r(g,c)}%`}}),(0,d.jsx)("div",{className:"bg-success",style:{width:`${r(e,c)}%`}}),(0,d.jsx)("div",{className:"bg-warning",style:{width:`${r(f,c)}%`}})]}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-primary"}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:"New input"})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(g),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[r(g,c),"%"]})]})]}),(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-success"}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:"Cached read"})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(e),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[r(e,c),"%"]})]})]}),(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-warning"}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:"Cache creation"})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(f),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[r(f,c),"%"]})]})]})]})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-2 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Cloud vs Local"}),n?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex h-1.5 w-full overflow-hidden rounded-full bg-bg",children:[(0,d.jsx)("div",{className:"bg-warning",style:{width:`${w}%`}}),(0,d.jsx)("div",{className:"bg-primary",style:{width:`${100-w}%`}})]}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,d.jsx)(s,{label:"Cloud providers",dotClass:"bg-warning",requests:o(k.requests),promptTokens:o(k.promptTokens),completionTokens:o(k.completionTokens),cost:o(k.cost),showCost:!0}),(0,d.jsx)(s,{label:"Local (self-hosted)",dotClass:"bg-primary",requests:o(m.requests),promptTokens:o(m.promptTokens),completionTokens:o(m.completionTokens),cost:o(m.cost),showCost:o(m.cost)>0})]}),(0,d.jsx)("span",{className:"text-[10px] text-text-muted",children:"Local = custom OpenAI/Anthropic-compatible providers. Token counts include input + output."})]}):(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"No usage in this period."})]})]}),(0,d.jsx)(u,{})]})}v.propTypes={stats:n().object.isRequired};let w=(a,b=0)=>{let c=Number(a);return Number.isFinite(c)?c:b},x=a=>new Intl.NumberFormat().format(w(a)),y=a=>`$${w(a).toFixed(2)}`;function z(a){if(!a)return"Never";let b=Math.floor((Date.now()-new Date(a))/6e4);return b<1?"Just now":b<60?`${b}m ago`:b<1440?`${Math.floor(b/60)}h ago`:new Date(a).toLocaleDateString()}function A({field:a,currentSort:b,currentOrder:c}){return b!==a?(0,d.jsx)("span",{className:"ml-1 opacity-20",children:"↕"}):(0,d.jsx)("span",{className:"ml-1",children:"asc"===c?"↑":"↓"})}function B({item:a,viewMode:b,isSummary:c=!1}){return"tokens"===b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.promptTokens?"—":x(a.promptTokens)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.completionTokens?"—":x(a.completionTokens)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right font-medium",children:x(a.totalTokens)})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.inputCost?"—":y(a.inputCost)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.outputCost?"—":y(a.outputCost)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right font-medium text-warning",children:y(a.totalCost||a.cost)})]})}function C({title:a,columns:b,groupedData:c,tableType:f,sortBy:g,sortOrder:h,onToggleSort:i,viewMode:k,storageKey:l,renderDetailCells:m,renderSummaryCells:n,emptyMessage:o}){let[p,q]=(0,e.useState)(new Set),r=(0,e.useCallback)(a=>{q(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]),s=(0,e.useMemo)(()=>"tokens"===k?[{field:"promptTokens",label:"Input Tokens"},{field:"completionTokens",label:"Output Tokens"},{field:"totalTokens",label:"Total Tokens"}]:[{field:"promptTokens",label:"Input Cost"},{field:"completionTokens",label:"Output Cost"},{field:"cost",label:"Total Cost"}],[k]),t=b.length+s.length;return(0,d.jsxs)(j.default,{className:"overflow-hidden",children:[(0,d.jsx)("div",{className:"p-4 border-b border-border bg-bg-subtle/50",children:(0,d.jsx)("h3",{className:"font-semibold",children:a})}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm text-left",children:[(0,d.jsx)("thead",{className:"bg-bg-subtle/30 text-text-muted uppercase text-xs",children:(0,d.jsxs)("tr",{children:[b.map(a=>(0,d.jsxs)("th",{className:`px-6 py-3 cursor-pointer hover:bg-bg-subtle/50 ${"right"===a.align?"text-right":""}`,onClick:()=>i(f,a.field),children:[a.label," ",(0,d.jsx)(A,{field:a.field,currentSort:g,currentOrder:h})]},a.field)),s.map(a=>(0,d.jsxs)("th",{className:"px-6 py-3 text-right cursor-pointer hover:bg-bg-subtle/50",onClick:()=>i(f,a.field),children:[a.label," ",(0,d.jsx)(A,{field:a.field,currentSort:g,currentOrder:h})]},a.field))]})}),(0,d.jsxs)("tbody",{className:"divide-y divide-border",children:[c.map(a=>(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("tr",{className:"group-summary cursor-pointer hover:bg-bg-subtle/50 transition-colors",onClick:()=>r(a.groupKey),children:[(0,d.jsx)("td",{className:"px-6 py-3",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted transition-transform ${p.has(a.groupKey)?"rotate-90":""}`,children:"chevron_right"}),(0,d.jsx)("span",{className:`font-medium transition-colors ${a.summary.pending>0?"text-primary":""}`,children:a.groupKey})]})}),n(a),(0,d.jsx)(B,{item:a.summary,viewMode:k,isSummary:!0})]}),p.has(a.groupKey)&&a.items.map(a=>(0,d.jsxs)("tr",{className:"group-detail hover:bg-bg-subtle/20 transition-colors",children:[m(a),(0,d.jsx)(B,{item:a,viewMode:k})]},`detail-${a.key}`))]},a.groupKey)),0===c.length&&(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:t,className:"px-6 py-8 text-center text-text-muted",children:o})})]})]})})]})}A.propTypes={field:n().string.isRequired,currentSort:n().string.isRequired,currentOrder:n().string.isRequired},B.propTypes={item:n().object.isRequired,viewMode:n().string.isRequired,isSummary:n().bool},C.propTypes={title:n().string.isRequired,columns:n().arrayOf(n().shape({field:n().string.isRequired,label:n().string.isRequired,align:n().string})).isRequired,groupedData:n().array.isRequired,tableType:n().string.isRequired,sortBy:n().string.isRequired,sortOrder:n().string.isRequired,onToggleSort:n().func.isRequired,viewMode:n().string.isRequired,storageKey:n().string.isRequired,renderDetailCells:n().func.isRequired,renderSummaryCells:n().func.isRequired,emptyMessage:n().string.isRequired};var D=c(96103),E=c(22805);function F(a){return"string"==typeof a&&a.startsWith(g.JH)}function G(a){return"string"==typeof a&&a.startsWith(g.DI)}function H(a={}){return String(a.apiType||a.providerSpecificData?.apiType||a.provider_specific_data?.apiType||"chat").toLowerCase()}function I({data:a}){let{label:b,color:c,imageUrl:f,textIcon:g,active:h}=a,[i,j]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"flex items-center gap-2.5 px-4 py-2.5 rounded-lg border-2 transition-all duration-300 bg-bg",style:{borderColor:h?c:"var(--color-border)",boxShadow:h?`0 0 16px ${c}40`:"none",minWidth:"150px"},children:[(0,d.jsx)(D.h7,{type:"target",position:E.yX.Top,id:"top",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"target",position:E.yX.Bottom,id:"bottom",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"target",position:E.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"target",position:E.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)("div",{className:"w-8 h-8 rounded-md flex items-center justify-center shrink-0",style:{backgroundColor:`${c}15`},children:f&&!i?(0,d.jsx)("img",{src:f,alt:b,className:"w-6 h-6 rounded-sm object-contain",onError:()=>j(!0)}):(0,d.jsx)("span",{className:"text-sm font-bold",style:{color:c},children:g})}),(0,d.jsx)("span",{className:"text-base font-medium truncate",style:{color:h?c:"var(--color-text)"},children:b}),h&&(0,d.jsxs)("span",{className:"relative flex h-2 w-2 shrink-0",children:[(0,d.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:c}}),(0,d.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2",style:{backgroundColor:c}})]})]})}function J({data:a}){return(0,d.jsxs)("div",{className:"flex items-center justify-center px-5 py-3 rounded-xl border-2 border-primary bg-primary/5 shadow-md min-w-[130px]",children:[(0,d.jsx)(D.h7,{type:"source",position:E.yX.Top,id:"top",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"source",position:E.yX.Bottom,id:"bottom",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"source",position:E.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"source",position:E.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)("img",{src:"/favicon.svg",alt:"Bluerouter",className:"w-6 h-6 mr-2"}),(0,d.jsx)("span",{className:"text-sm font-bold text-primary",children:"Blue Router"}),a.activeCount>0&&(0,d.jsx)("span",{className:"ml-2 px-1.5 py-0.5 rounded-full bg-primary text-white text-xs font-bold",children:a.activeCount})]})}c(71763),I.propTypes={data:n().object.isRequired},J.propTypes={data:n().object.isRequired};let K={provider:I,router:J};function L({providers:a=[],activeRequests:b=[],lastProvider:c="",errorProvider:f=""}){let h=(0,e.useMemo)(()=>b.map(a=>a.provider?.toLowerCase()).filter(Boolean).sort().join(","),[b]),i=c?.toLowerCase()||"",j=f?.toLowerCase()||"",k=(0,e.useMemo)(()=>new Set(h?h.split(","):[]),[h]),l=(0,e.useMemo)(()=>new Set(i?[i]:[]),[i]),m=(0,e.useMemo)(()=>new Set(j?[j]:[]),[j]),n=(0,e.useRef)({}),[o,p]=(0,e.useState)(0),q=(0,e.useMemo)(()=>{let a=Date.now(),b=new Set;for(let c of k){let d=n.current[c];(!d||a-d<6e4)&&b.add(c)}return b},[k,o]),{nodes:r,edges:s}=(0,e.useMemo)(()=>(function(a,b,c,d){let e=a.length,f=Math.max(320,204*e/(2*Math.PI)),h=Math.max(200,.55*f);if(0===e)return{nodes:[{id:"router",type:"router",position:{x:0,y:0},data:{activeCount:0},draggable:!1}],edges:[]};let i=[],j=[];return i.push({id:"router",type:"router",position:{x:-60,y:-22},data:{activeCount:b.size},draggable:!1}),a.forEach((a,k)=>{let l,m,n=function(a,b={}){if(g.Q2[a])return g.Q2[a];if(F(a)){let a=H(b);return{color:"#10A37F",name:b.name||("responses"===a?"OpenAI Compatible Responses":"OpenAI Compatible Chat"),textIcon:"responses"===a?"OR":"OC"}}return G(a)?{color:"#D97757",name:b.name||"Anthropic Compatible",textIcon:"AC"}:{color:"#6b7280",name:b.name||a,textIcon:(a||"?").slice(0,2).toUpperCase()}}(a.provider,a),o=b.has(a.provider?.toLowerCase()),p=!o&&c.has(a.provider?.toLowerCase()),q=!o&&d.has(a.provider?.toLowerCase()),r=`provider-${a.provider}`,s={label:(n.name!==a.provider?n.name:null)||a.name||a.provider,color:n.color||"#6b7280",imageUrl:function(a={}){let b=a.provider||a.id||"";return b?F(b)?"responses"===H(a)?"/providers/oai-r.png":"/providers/oai-cc.png":G(b)?"/providers/anthropic-m.png":`/providers/${b}.png`:null}(a),textIcon:n.textIcon||(a.provider||"?").slice(0,2).toUpperCase(),active:o},t=-Math.PI/2+2*Math.PI*k/e,u=f*Math.cos(t),v=h*Math.sin(t);Math.abs(t+Math.PI/2)<Math.PI/4||Math.abs(t-3*Math.PI/2)<Math.PI/4?(l="top",m="bottom"):Math.abs(t-Math.PI/2)<Math.PI/4?(l="bottom",m="top"):u>0?(l="right",m="left"):(l="left",m="right"),i.push({id:r,type:"provider",position:{x:u-90,y:v-15},data:s,draggable:!1}),j.push({id:`e-${r}`,source:"router",sourceHandle:l,target:r,targetHandle:m,animated:o,style:(n.color,q?{stroke:"#ef4444",strokeWidth:2.5,opacity:.9}:o?{stroke:"#22c55e",strokeWidth:2.5,opacity:.9}:p?{stroke:"#f59e0b",strokeWidth:2,opacity:.7}:{stroke:"var(--color-border)",strokeWidth:1,opacity:.3})})}),{nodes:i,edges:j}})(a,q,l,m),[a,q,i,j]),t=(0,e.useMemo)(()=>a.map(a=>a.provider).sort().join(","),[a]),u=(0,e.useRef)(null),v=(0,e.useRef)(null),w={padding:.2,duration:200},x=(0,e.useCallback)(a=>{u.current=a,setTimeout(()=>a.fitView(w),50)},[]);return(0,d.jsx)("div",{ref:v,className:"h-[320px] w-full min-w-0 rounded-lg border border-border bg-bg-subtle/30 sm:h-[480px]",children:0===a.length?(0,d.jsx)("div",{className:"h-full flex items-center justify-center text-text-muted text-sm",children:"No providers connected"}):(0,d.jsx)(D.Gc,{nodes:r,edges:s,nodeTypes:K,fitView:!0,fitViewOptions:w,minZoom:.1,maxZoom:2,onInit:x,proOptions:{hideAttribution:!0},panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,preventScrolling:!1,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,children:(0,d.jsx)(D.H2,{showInteractive:!1,className:"react-flow-controls-custom"})},t)})}L.propTypes={providers:n().arrayOf(n().shape({id:n().string,provider:n().string,name:n().string})),activeRequests:n().arrayOf(n().shape({provider:n().string,model:n().string,account:n().string})),lastProvider:n().string,errorProvider:n().string};var M=c(48679),N=c(21621),O=c(5277),P=c(22393),Q=c(54206),R=c(79751),S=c(53330);let T=(a,b=0)=>{let c=Number(a);return Number.isFinite(c)?c:b},U=a=>{let b=T(a);return b>=1e6?`${(b/1e6).toFixed(1)}M`:b>=1e3?`${(b/1e3).toFixed(1)}K`:String(b)},V=a=>`$${T(a).toFixed(4)}`;function W({period:a="7d"}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[h,i]=(0,e.useState)("tokens");(0,e.useCallback)(async()=>{g(!0);try{let b=await fetch(`/api/usage/chart?period=${a}`);if(b.ok){let a=await b.json();c(a)}}catch(a){console.error("Failed to fetch chart data:",a)}finally{g(!1)}},[a]);let k=b.map(a=>({...a,tokens:T(a.tokens),cost:T(a.cost)})),l=k.some(a=>a.tokens>0||a.cost>0);return(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-3 p-3 sm:p-4",children:[(0,d.jsxs)("div",{className:"grid w-full grid-cols-2 items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1 sm:w-auto sm:self-start",children:[(0,d.jsx)("button",{onClick:()=>i("tokens"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"tokens"===h?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Tokens"}),(0,d.jsx)("button",{onClick:()=>i("cost"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"cost"===h?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Cost"})]}),f?(0,d.jsx)("div",{className:"h-48 flex items-center justify-center text-text-muted text-sm",children:"Loading..."}):l?(0,d.jsx)(M.u,{width:"100%",height:220,children:(0,d.jsxs)(N.Q,{data:k,margin:{top:4,right:8,left:0,bottom:0},children:[(0,d.jsxs)("defs",{children:[(0,d.jsxs)("linearGradient",{id:"gradTokens",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"5%",stopColor:"#6366f1",stopOpacity:.25}),(0,d.jsx)("stop",{offset:"95%",stopColor:"#6366f1",stopOpacity:0})]}),(0,d.jsxs)("linearGradient",{id:"gradCost",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"5%",stopColor:"#f59e0b",stopOpacity:.25}),(0,d.jsx)("stop",{offset:"95%",stopColor:"#f59e0b",stopOpacity:0})]})]}),(0,d.jsx)(O.d,{strokeDasharray:"3 3",strokeOpacity:.1}),(0,d.jsx)(P.W,{dataKey:"label",tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,interval:"preserveStartEnd"}),(0,d.jsx)(Q.h,{tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,tickFormatter:"tokens"===h?U:V,width:50}),(0,d.jsx)(R.m,{contentStyle:{backgroundColor:"var(--color-bg)",border:"1px solid var(--color-border)",borderRadius:"8px",fontSize:"12px"},formatter:(a,b)=>"tokens"===b?[U(a),"Tokens"]:[V(a),"Cost"]}),"tokens"===h?(0,d.jsx)(S.Gk,{type:"monotone",dataKey:"tokens",stroke:"#6366f1",strokeWidth:2,fill:"url(#gradTokens)",dot:!1,activeDot:{r:4}}):(0,d.jsx)(S.Gk,{type:"monotone",dataKey:"cost",stroke:"#f59e0b",strokeWidth:2,fill:"url(#gradCost)",dot:!1,activeDot:{r:4}})]})}):(0,d.jsx)("div",{className:"h-48 flex items-center justify-center text-text-muted text-sm",children:"No data for this period"})]})}function X(a){let b=String(a||"").trim();if(!b)return"";try{return new URL(b).hostname||""}catch{return b.replace(/^https?:\/\//,"").replace(/\/.*$/,"").replace(/:\d+$/,"")}}function Y(a){let b=String(a||"").trim();return/^openai-compatible-chat-[0-9a-f-]{20,}$/i.test(b)||/^openai-compatible-[0-9a-f-]{20,}$/i.test(b)}function Z(a){return String(a||"").trim()}function $(a=[]){let b={},c={};for(let d of a||[]){let a=function(a={}){let b=Z(a.provider||a.providerId||a.provider_id||a.id),c=Z(a.accountName||a.account_name||a.email||a.displayName||a.display_name||a.name||a.label||a.connectionName||a.connection_name),d=X(a.endpoint)||X(a.baseUrl)||X(a.baseURL)||X(a.base_url)||X(a.providerUrl)||X(a.provider_url)||X(a.url),e=Z(a.email);return{providerId:b,accountName:c,displayName:Z(a.displayName||a.display_name),email:e,endpointHost:d,ownerUser:Z(a.ownerUser||a.owner_user),isPersonal:"personal"===a.scope||"private"===a.visibility||!!(a.ownerUser||a.owner_user)}}(d);for(let c of[d.id,d.connectionId,d.connection_id].map(Z).filter(Boolean))b[c]||(b[c]=a);a.accountName&&!c[a.accountName]&&(c[a.accountName]=a)}return{byConnectionId:b,byAccount:c}}function _(a={},b={}){let c=a.model||a.rawModel||a.raw_model||"-",d=function(a={},b={}){let c=function(a={},b={}){for(let c of[a.connectionId,a.connection_id].map(Z).filter(Boolean))if(b.byConnectionId?.[c])return b.byConnectionId[c];let c=Z(a.accountName||a.account_name||a.keyName||a.key_name||a.connectionName||a.connection_name||a.providerName||a.provider_name||a.providerLabel||a.provider_label);return c&&b.byAccount?.[c]?b.byAccount[c]:null}(a,b),d=function(a={},b=null){let c=Z(a.provider||a.providerId||a.provider_id).toLowerCase();if(!(!0===a.isPersonalOAuth||!0===a.is_personal_oauth||"personal"===a.connectionScope||"personal"===a.connection_scope||"private"===a.visibility||b?.isPersonal)||!c)return"";let d=Z(a.ownerUser||a.owner_user||a.apiKeyOwner||a.api_key_owner||b?.ownerUser),e=Z(a.accountEmail||a.account_email||a.email||b?.email),f=Z(a.accountDisplayName||a.account_display_name||a.accountName||a.account_name||a.connectionName||a.connection_name||b?.accountName||b?.displayName),g=[];return(d&&g.push(d),e&&e!==d?g.push(e):f&&f!==d&&g.push(f),g.length)?(g.push(c),g.join("/")):""}(a,c);if(d)return d;if(c){let a=c.providerId,b=c.accountName,d=c.endpointHost;if(a&&!Y(a)){if(c.isPersonal&&c.ownerUser){let d=[c.ownerUser];return c.email&&c.email!==c.ownerUser?d.push(c.email):b&&b!==c.ownerUser&&d.push(b),d.push(a),d.join("/")}return b&&b!==a?`${a}/${b}`:a}if(b)return b;if(d)return d}let e=X(a.endpoint)||X(a.providerUrl)||X(a.provider_url)||X(a.baseUrl)||X(a.baseURL)||X(a.base_url)||X(a.url);if(e)return e;let f=Z(a.provider||a.providerId||a.provider_id),g=Z(a.accountName||a.account_name||a.keyName||a.key_name||a.connectionName||a.connection_name||a.providerName||a.provider_name||a.providerLabel||a.provider_label);return f&&!Y(f)?g&&g!==f?`${f}/${g}`:f:g||""}(a,b),e=Z(a.provider||a.providerId||a.provider_id);return!d||"-"===c||String(c).startsWith(`${d}/`)?c:e&&String(c).startsWith(`${e}/`)&&(d.startsWith(`${e}/`)||d.endsWith(`/${e}`))?`${d}/${String(c).slice(e.length+1)}`:`${d}/${c}`}function aa({timestamp:a}){let b,[,c]=(0,e.useState)(0);return(0,d.jsx)(d.Fragment,{children:(b=Math.floor((Date.now()-new Date(a))/1e3))<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`})}W.propTypes={period:n().string};let ab=new Set(["ok","success","succeeded","complete","completed","done","200 ok"]),ac=new Set(["pending","running","queued","in_progress","in-progress"]);function ad(a={}){let b,c=String(a.status||a.statusText||a.status_text||"").trim().toLowerCase(),d=(b=String(c||"").match(/\b([1-5]\d{2})\b/))?Number(b[1]):null,e=function(...a){for(let b of a){if(null==b||""===b)continue;let a=Number(b);if(Number.isFinite(a))return a}return null}(a.statusCode,a.status_code,a.gatewayStatusCode,a.gateway_status_code,a.upstreamStatusCode,a.upstream_status_code,d),f=Z(a.errorCode||a.error_code),g=Z(a.errorType||a.error_type),h=Z(a.errorMessageShort||a.error_message_short||a.message||a.error);if(ac.has(c))return{kind:"pending",label:"PENDING",title:"Request is still pending/running.",dotClass:"bg-amber-500",rowClass:"hover:bg-amber-50/60",badgeClass:"bg-amber-100 text-amber-700 border border-amber-200"};if(/\b(error|fail|failed|failure|timeout|cancelled|canceled)\b/i.test(c)||null!==e&&e>=400||f||g||h){let b=null!==e?`ERR ${e}`:c?c.toUpperCase():"ERROR",d=[`Status: ${b}`,f?`Code: ${f}`:"",g?`Type: ${g}`:"",h?`Message: ${h}`:"",a.endpoint?`Endpoint: ${a.endpoint}`:""].filter(Boolean);return{kind:"error",label:b,title:d.join("\n"),dotClass:"bg-error",rowClass:"hover:bg-error/5",badgeClass:"bg-error/10 text-error border border-error/20"}}return null!==e&&e>=200&&e<300||!c||ab.has(c)?{kind:"success",label:e?`OK ${e}`:"OK",title:"Request completed successfully.",dotClass:"bg-success",rowClass:"hover:bg-bg-subtle",badgeClass:"bg-success/10 text-success border border-success/20"}:{kind:"unknown",label:c?c.toUpperCase():"UNKNOWN",title:c?`Status: ${c}`:"Unknown request status.",dotClass:"bg-text-muted",rowClass:"hover:bg-bg-subtle",badgeClass:"bg-bg-subtle text-text-muted border border-border"}}function ae({request:a}){let{cachedTokens:b,cacheCreationTokens:c,totalTokens:e,totalInputTokens:f,newInputTokens:g,reasoningTokens:h,outputTokens:i}=function(a={}){let b=Number(a.promptTokens??a.prompt_tokens??0)||0,c=Number(a.cachedTokens??a.cached_tokens??a.cache_read_input_tokens??0)||0,d=Number(a.cacheCreationTokens??a.cache_creation_input_tokens??0)||0,e=Number(a.completionTokens??a.completion_tokens??0)||0,f=Number(a.totalTokens??a.total_tokens??b+e)||0,g=Number(a.displayTotalInputTokens??a.display_total_input_tokens??b)||0,h=Number(a.displayNewInputTokens??a.display_new_input_tokens??Math.max(0,g-c-d))||0,i=Number(a.displayCachedInputTokens??a.display_cached_input_tokens??c)||0,j=Number(a.displayCacheCreationInputTokens??a.display_cache_creation_input_tokens??d)||0,k=Number(a.displayReasoningTokens??a.display_reasoning_tokens??a.reasoningTokens??a.reasoning_tokens??0)||0,l=Number(a.displayOutputTokens??a.display_output_tokens??e)||0;return{promptTokens:b,cachedTokens:i,cacheCreationTokens:j,completionTokens:e,totalTokens:f,totalInputTokens:g,newInputTokens:h,reasoningTokens:k,outputTokens:l}}(a),j=ad(a),k=f>0?Math.min(100,Math.max(0,Math.round(b/f*100))):0,l=`Total Input: ${x(f)}
|
|
10
|
+
`,children:(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[r.includes(a.value)&&!c&&(0,d.jsx)("span",{className:"material-symbols-outlined leading-none",style:{fontSize:"10px"},children:"check"}),c?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[11px]",children:"edit"}),a.name]}):a.isCustom?(0,d.jsxs)(d.Fragment,{children:[a.name,(0,d.jsx)("span",{className:"text-[9px] opacity-60 font-normal",children:"custom"})]}):a.name]})},a.value)})})]},a)),0===Object.keys(K).length&&0===J.length&&(0,d.jsxs)("div",{className:"text-center py-4 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1 block",children:"search_off"}),(0,d.jsx)("p",{className:"text-xs",children:"No models found"})]})]})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,onClose:g().func.isRequired,onSelect:g().func.isRequired,onDeselect:g().func,selectedModel:g().string,activeProviders:g().arrayOf(g().shape({provider:g().string.isRequired})),title:g().string,modelAliases:g().object,kindFilter:g().string,addedModelValues:g().arrayOf(g().string),closeOnSelect:g().bool,personalOnly:g().bool,extraModels:g().arrayOf(g().string)}},83552:(a,b,c)=>{"use strict";c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({label:a,type:b="text",placeholder:c,value:g,onChange:h,error:i,hint:j,icon:k,disabled:l=!1,required:m=!1,className:n,inputClassName:o,...p}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",n),children:[a&&(0,d.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[a,m&&(0,d.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,d.jsxs)("div",{className:"relative",children:[k&&(0,d.jsx)("div",{className:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:k})}),(0,d.jsx)("input",{type:b,placeholder:c,value:g,onChange:h,disabled:l,className:(0,e.cn)("w-full py-2.5 px-3 text-sm text-text-main bg-surface-2 rounded-[10px]","border border-transparent placeholder-text-muted/70","focus:outline-none focus:ring-2 focus:ring-brand-500/30 focus:border-brand-500/40","transition-all duration-150 ease-out disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",k&&"pl-10",i&&"ring-1 ring-red-500 focus:ring-2 focus:ring-red-500/40 border-red-500/40",o),...p})]}),i&&(0,d.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),j&&!i&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:j})]})}},83784:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\shared\\\\components\\\\Select.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\shared\\components\\Select.js","default")},86209:(a,b,c)=>{"use strict";c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onMethodSelect:b,onClose:c}){let[f,g]=(0,e.useState)(null),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)("us-east-1"),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!1),x=a=>{g(a),q(null)},y=()=>{g(null),q(null)},z=async()=>{if(!n.trim())return void q("Please enter a refresh token");s(!0),q(null);try{let a=await fetch("/api/oauth/kiro/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:n.trim()})}),c=await a.json();if(!a.ok)throw Error(c.error||"Import failed");b("import")}catch(a){q(a.message)}finally{s(!1)}},A=a=>{b("social",{provider:a})};return(0,d.jsx)(h.aF,{isOpen:a,title:"Connect Kiro",onClose:c,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[!f&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Choose your authentication method:"}),(0,d.jsx)("button",{onClick:()=>b("builder-id"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"shield"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"AWS Builder ID"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Recommended for most users. Free AWS account required."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("idc"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"business"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"AWS IAM Identity Center"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"For enterprise users with custom AWS IAM Identity Center."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("social-google"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"account_circle"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"Google Account"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your Google account (manual callback)."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("social-github"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"code"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"GitHub Account"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your GitHub account (manual callback)."})]})]})}),(0,d.jsx)("button",{onClick:()=>x("import"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"file_upload"}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold mb-1",children:"Import Token"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Paste refresh token from Kiro IDE."})]})]})})]}),"idc"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["IDC Start URL ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:j,onChange:a=>k(a.target.value),placeholder:"https://your-org.awsapps.com/start",className:"font-mono text-sm"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Your organization's AWS IAM Identity Center URL"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium mb-2",children:"AWS Region"}),(0,d.jsx)(h.pd,{value:l,onChange:a=>m(a.target.value),placeholder:"us-east-1",className:"font-mono text-sm"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"AWS region for your Identity Center (default: us-east-1)"})]}),p&&(0,d.jsx)("p",{className:"text-sm text-red-600",children:p}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>{j.trim()?b("idc",{startUrl:j.trim(),region:l}):q("Please enter your IDC start URL")},fullWidth:!0,children:"Continue"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-google"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsxs)("div",{className:"flex-1 text-sm",children:[(0,d.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,d.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>A("google"),fullWidth:!0,children:"Continue with Google"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-github"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsxs)("div",{className:"flex-1 text-sm",children:[(0,d.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,d.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>A("github"),fullWidth:!0,children:"Continue with GitHub"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"import"===f&&(0,d.jsxs)("div",{className:"space-y-4",children:[t&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting token..."}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from AWS SSO cache"})]}),!t&&(0,d.jsxs)(d.Fragment,{children:[v&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Token auto-detected from Kiro IDE successfully!"})]})}),!v&&!p&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Kiro IDE not detected. Please paste your refresh token manually."})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Refresh Token ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:n,onChange:a=>o(a.target.value),placeholder:"Token will be auto-filled...",className:"font-mono text-sm"})]}),p&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:p})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:z,fullWidth:!0,disabled:r||!n.trim(),children:r?"Importing...":"Import Token"}),(0,d.jsx)(h.$n,{onClick:y,variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})]})})}i.propTypes={isOpen:g().bool.isRequired,onMethodSelect:g().func.isRequired,onClose:g().func.isRequired}},86739:(a,b,c)=>{"use strict";c.d(b,{default:()=>r});var d=c(48249),e=c(67484),f=c(19099),g=c(2116),h=c.n(g),i=c(49885),j=c.n(i),k=c(3236),l=c(53845),m=c(20151),n=c(37365),o=c(12020),p=c(96919),q=c(99258);function r({onMenuClick:a,showMenuButton:b=!0}){let c=(0,f.usePathname)(),g=(0,f.useRouter)(),{displayName:i,loginMethod:j}=(0,m.s)(),{title:n,description:t,icon:u,breadcrumbs:v}=(0,e.useMemo)(()=>(a=>{if(!a)return{title:"",description:"",breadcrumbs:[]};let b=a.match(/\/media-providers\/([^/]+)\/([^/]+)$/);if(b){let a=b[1],c=b[2],d=p.rj.find(b=>b.id===a),e=p.Q2[c];return{title:e?.name||c,description:"",breadcrumbs:[{label:"Media Providers",href:`/dashboard/media-providers/${a}`},{label:d?.label||a,href:`/dashboard/media-providers/${a}`},{label:e?.name||c,image:`/providers/${c}.png`}]}}let c=a.match(/\/media-providers\/([^/]+)$/);if(c){let a=c[1],b=p.rj.find(b=>b.id===a);return{title:b?.label||a,description:`Manage your ${b?.label||a} providers`,icon:b?.icon||"perm_media",breadcrumbs:[]}}let d=a.match(/\/providers\/([^/]+)$/);if(d){let a=d[1],b=o.zN[a]||o.fg[a];if(b)return{title:b.name,description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:b.name,image:`/providers/${b.id}.png`}]}}return a.includes("/providers")&&!a.includes("/media-providers")?{title:"Providers",description:"Manage your AI provider connections",icon:"dns",breadcrumbs:[]}:a.includes("/combos")?{title:"Combos",description:"Model combos with fallback",icon:"layers",breadcrumbs:[]}:a.includes("/token-saver")?{title:"Token Saver Analytics",description:"Theo d\xf5i hiệu quả RTK token saving theo source tool, provider, model v\xe0 filter",icon:"compress",breadcrumbs:[]}:a.includes("/analytics")?{title:"Analytics",description:"Thống k\xea request, token, API key, Source IP, provider, model v\xe0 lỗi vận h\xe0nh",icon:"monitoring",breadcrumbs:[]}:a.includes("/resource-monitor")?{title:"Linux Resources",description:"Realtime resource monitoring for remote Linux servers",icon:"monitor_heart",breadcrumbs:[]}:a.includes("/cluster")?{title:"Cluster Nodes",description:"Synchronize Master backups to Standby BlueRouter nodes",icon:"hub",breadcrumbs:[]}:a.includes("/usage")?{title:"Usage & Analytics",description:"Monitor your API usage, token consumption, and request logs",icon:"bar_chart",breadcrumbs:[]}:a.includes("/auth-files")?{title:"Auth Files",description:"Map provider credentials stored in the local database",icon:"vpn_key",breadcrumbs:[]}:a.includes("/quota")?{title:"Quota Tracker",description:"Track and manage your API quota limits",icon:"data_usage",breadcrumbs:[]}:a.includes("/mitm")?{title:"AI Traffic Proxy",description:"Intercept CLI tool traffic and route through this router gateway",icon:"security",breadcrumbs:[]}:a.includes("/prompt-logs")?{title:"Prompt Logs",description:"Search Copilot/MITM prompts across the prompt log database",icon:"manage_search",breadcrumbs:[]}:a.includes("/cli-tools")?{title:"CLI Tools",description:"Configure CLI tools",icon:"terminal",breadcrumbs:[]}:a.includes("/proxy-pools")?{title:"Proxy Pools",description:"Manage your proxy pool configurations",icon:"lan",breadcrumbs:[]}:a.includes("/skills")?{title:"Agent Skills",description:"Copy a link and paste to your AI to use this Router — no install needed",icon:"extension",breadcrumbs:[]}:a.includes("/endpoint")?{title:"Endpoint",description:"API endpoint configuration",icon:"api",breadcrumbs:[]}:a.includes("/api-keys")?{title:"API Keys",description:"Manage API keys and model access",icon:"vpn_key",breadcrumbs:[]}:a.includes("/profile")?{title:"Settings",description:"Manage your preferences",icon:"settings",breadcrumbs:[]}:a.includes("/translator")?{title:"Translator",description:"Debug translation flow between formats",icon:"translate",breadcrumbs:[]}:a.includes("/console-log")?{title:"Console Log",description:"Live server console output",icon:"monitor",breadcrumbs:[]}:"/dashboard"===a?{title:"Endpoint",description:"API endpoint configuration",icon:"api",breadcrumbs:[]}:{title:"",description:"",breadcrumbs:[]}})(c),[c]),w=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&(g.push("/login"),g.refresh())}catch(a){console.error("Failed to logout:",a)}};return(0,d.jsx)("header",{className:"sticky top-0 z-30 border-b border-border bg-background/80 backdrop-blur",children:(0,d.jsxs)("div",{className:"flex min-h-[72px] items-center justify-between gap-4 px-4 md:px-6",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[b?(0,d.jsx)("button",{type:"button",onClick:a,className:"rounded-xl border border-border p-2 text-text-muted hover:bg-surface hover:text-text-main lg:hidden","aria-label":"Open menu",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"menu"})}):null,(0,d.jsx)("div",{className:"min-w-0",children:v.length>0?(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-1 text-sm text-text-muted",children:v.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[b>0?(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"chevron_right"}):null,a.href?(0,d.jsx)(h(),{href:a.href,className:"hover:text-primary",children:(0,q.Tl)(a.label)}):(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[a.image?(0,d.jsx)("img",{src:a.image,alt:"",className:"h-5 w-5 rounded"}):null,(0,d.jsx)("h1",{className:"text-xl font-semibold text-text-main",children:(0,q.Tl)(a.label)})]})]},`${a.label}-${b}`))}):n?(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[u?(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:u}):null,(0,d.jsx)("h1",{className:"truncate text-xl font-semibold text-text-main",children:(0,q.Tl)(n)})]}),t?(0,d.jsx)("p",{className:"mt-1 truncate text-sm text-text-muted",children:(0,q.Tl)(t)}):null]}):null})]}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,d.jsx)(s,{}),i&&"OIDC"===j?(0,d.jsxs)("div",{className:"hidden items-center gap-2 rounded-xl border border-border px-3 py-2 text-sm text-text-muted md:flex",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"person"}),(0,d.jsx)("span",{children:i}),(0,d.jsx)("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-xs text-primary",children:"OIDC"})]}):null,(0,d.jsx)(l.default,{}),(0,d.jsx)(k.default,{onLogout:w})]})]})})}function s(){let a=(0,n.C)(a=>a.visible),b=(0,n.C)(a=>a.query),c=(0,n.C)(a=>a.placeholder),e=(0,n.C)(a=>a.setQuery);return a?(0,d.jsxs)("div",{className:"relative hidden w-72 md:block",children:[(0,d.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 text-[18px] text-text-muted",children:"search"}),(0,d.jsx)("input",{value:b,onChange:a=>e(a.target.value),placeholder:c,className:"h-9 w-full rounded-lg border border-border bg-surface/60 pl-8 pr-8 text-sm text-text-main outline-none transition-colors placeholder:text-text-muted focus:border-primary/50"}),b?(0,d.jsx)("button",{type:"button",onClick:()=>e(""),className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-0.5 text-text-muted hover:text-text-main","aria-label":"Clear search",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})}):null]}):null}r.propTypes={onMenuClick:j().func,showMenuButton:j().bool}},87226:(a,b,c)=>{"use strict";c.d(b,{default:()=>ao});var d=c(48249),e=c(67484),f=c(19099),g=c(96919),h=c(20151),i=c(75171),j=c(17660),k=c(2116),l=c.n(k),m=c(49885),n=c.n(m);let o=(a,b=0)=>{let c=Number(a);return Number.isFinite(c)?c:b},p=a=>new Intl.NumberFormat().format(o(a)),q=a=>`$${o(a).toFixed(2)}`,r=(a,b)=>{let c=o(b);return c<=0?0:Math.round(o(a)/c*100)};function s({label:a,dotClass:b,requests:c,promptTokens:e,completionTokens:f,cost:g,showCost:h}){return(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${b}`}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:a})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(o(e)+o(f)),h&&(0,d.jsx)("span",{className:"ml-1.5 text-warning",children:q(g)}),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[p(c)," req"]})]})]})}s.propTypes={label:n().string.isRequired,dotClass:n().string.isRequired,requests:n().number,promptTokens:n().number,completionTokens:n().number,cost:n().number,showCost:n().bool};let t=[{name:"Anthropic (Claude)",dot:"bg-warning",mode:"Thủ c\xf4ng",modeNote:"BlueRouter chỉ \xe1p dụng cache write 5 ph\xfat",write:"1,25x gi\xe1 input",read:"0,1x gi\xe1 input",ttl:"5 ph\xfat; TTL d\xe0i hơn vẫn d\xf9ng c\xf9ng mức gi\xe1",fields:"cache_creation_input_tokens + cache_read_input_tokens",note:"Kh\xf4ng lưu cache 1 giờ. Mọi cache creation được t\xednh bằng rate 5 ph\xfat của model."},{name:"OpenAI",dot:"bg-success",mode:"Tự động",modeNote:"d\xf9ng Standard / short-context rate",write:"GPT-5.6 theo cache-write rate; model kh\xe1c fallback về input",read:"Theo cached rate của từng model",ttl:"Kh\xf4ng t\xe1ch TTL trong BlueRouter",fields:"prompt_tokens_details.cached_tokens + cache creation fields khi c\xf3",note:"Request tr\xean 272K hoặc cache d\xe0i hơn vẫn d\xf9ng đ\xfang rate short-context/cache 5 ph\xfat đ\xe3 cấu h\xecnh."},{name:"Google Gemini",dot:"bg-primary",mode:"Hai chế độ",modeNote:"implicit tự động, explicit do người d\xf9ng tạo",write:"Miễn ph\xed (implicit) / ph\xed lưu trữ theo giờ (explicit)",read:"giảm gi\xe1 đ\xe1ng kể so với input",ttl:"Implicit ngắn hạn; explicit theo TTL tự đặt",fields:"cachedContentTokenCount",note:"Explicit caching t\xednh tiền theo thời gian lưu, kh\xe1c hẳn m\xf4 h\xecnh của Anthropic v\xe0 OpenAI."},{name:"Local (vLLM, llama.cpp, Ollama)",dot:"bg-text-muted",mode:"Tự động",modeNote:"prefix caching / KV cache reuse",write:"Miễn ph\xed",read:"Miễn ph\xed — chỉ tiết kiệm compute v\xe0 giảm TTFT",ttl:"Tuỳ cấu h\xecnh v\xe0 dung lượng KV cache",fields:"Thường kh\xf4ng t\xe1ch ri\xeang trong usage",note:"Tiết kiệm thời gian chứ kh\xf4ng tiết kiệm tiền, v\xe0 phần lớn gộp v\xe0o “New input” ở tr\xean."}];function u(){let[a,b]=(0,e.useState)(!1);return(0,d.jsxs)(j.default,{className:"min-w-0 px-4 py-3",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>b(a=>!a),className:"flex w-full min-w-0 items-center justify-between gap-2 text-left",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"help"}),(0,d.jsx)("span",{className:"truncate text-sm font-semibold uppercase text-text-muted",children:"Cache read / creation hoạt động thế n\xe0o"})]}),(0,d.jsx)("span",{className:`material-symbols-outlined shrink-0 text-[20px] text-text-muted transition-transform duration-200 ${a?"rotate-180":""}`,children:"expand_more"})]}),a&&(0,d.jsxs)("div",{className:"mt-3 flex min-w-0 flex-col gap-3 border-t border-border-subtle pt-3",children:[(0,d.jsxs)("p",{className:"text-xs leading-relaxed text-text-muted",children:[(0,d.jsx)("span",{className:"font-semibold text-text",children:"Cache creation"})," l\xe0 lần đầu một đoạn context được lưu lại. ",(0,d.jsx)("span",{className:"font-semibold text-text",children:"Cache read"})," l\xe0 những lần sau t\xe1i sử dụng đoạn đ\xf3 thay v\xec xử l\xfd lại. Cơ chế v\xe0 c\xe1ch t\xednh tiền kh\xe1c nhau tuỳ provider — gi\xe1 dưới đ\xe2y l\xe0 bội số so với gi\xe1 input thường của ch\xednh model đ\xf3."]}),(0,d.jsx)("div",{className:"grid min-w-0 grid-cols-1 gap-2 xl:grid-cols-2",children:t.map(a=>(0,d.jsxs)("div",{className:"min-w-0 rounded-[10px] bg-bg px-3 py-2.5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${a.dot}`}),(0,d.jsx)("span",{className:"truncate text-xs font-semibold",children:a.name})]}),(0,d.jsx)("span",{className:"shrink-0 rounded-full bg-surface px-2 py-0.5 text-[10px] text-text-muted",children:a.mode})]}),(0,d.jsxs)("dl",{className:"mt-2 flex min-w-0 flex-col gap-1 text-[11px]",children:[(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"Ghi cache"}),(0,d.jsx)("dd",{className:"truncate text-right font-medium",children:a.write})]}),(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"Đọc cache"}),(0,d.jsx)("dd",{className:"truncate text-right font-medium text-success",children:a.read})]}),(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"Thời hạn"}),(0,d.jsx)("dd",{className:"truncate text-right",children:a.ttl})]}),(0,d.jsxs)("div",{className:"flex min-w-0 justify-between gap-2",children:[(0,d.jsx)("dt",{className:"shrink-0 text-text-muted",children:"K\xedch hoạt"}),(0,d.jsx)("dd",{className:"truncate text-right",children:a.modeNote})]})]}),(0,d.jsx)("p",{className:"mt-1.5 border-t border-border-subtle pt-1.5 text-[10px] leading-relaxed text-text-muted",children:a.note}),(0,d.jsx)("p",{className:"mt-1 font-mono text-[9px] leading-relaxed text-text-muted opacity-70",children:a.fields})]},a.name))}),(0,d.jsx)("p",{className:"text-[10px] leading-relaxed text-text-muted",children:"Gi\xe1 v\xe0 thời hạn do provider c\xf4ng bố v\xe0 c\xf3 thể thay đổi — h\xe3y đối chiếu bảng gi\xe1 ch\xednh thức trước khi d\xf9ng cho mục đ\xedch t\xednh chi ph\xed."})]})]})}function v({stats:a}){let{isAdmin:b}=(0,h.s)(),c=o(a.totalPromptTokens),e=o(a.totalCachedInputTokens),f=o(a.totalCacheCreationInputTokens),g=null!=a.totalNewInputTokens?o(a.totalNewInputTokens):Math.max(0,c-e-f),i=a.cloudVsLocal||{},k=i.cloud||{},m=i.local||{},n=i.unknown||{},t=o(k.requests)>0||o(m.requests)>0||o(n.requests)>0,w=o(k.promptTokens)+o(k.completionTokens),x=o(m.promptTokens)+o(m.completionTokens),y=o(n.promptTokens)+o(n.completionTokens),z=w+x+y,A=r(w,z),B=r(x,z),C=Math.max(0,100-A-B);return(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:gap-4",children:[(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-3 sm:grid-cols-2 md:grid-cols-4 sm:gap-4",children:[(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Requests"}),(0,d.jsx)("span",{className:"truncate text-2xl font-bold",children:p(a.totalRequests)})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Input Tokens"}),(0,d.jsx)("span",{className:"truncate text-2xl font-bold text-primary",children:p(c)}),c>0&&(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:[r(e,c),"% cached"]})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Output Tokens"}),(0,d.jsx)("span",{className:"truncate text-2xl font-bold text-success",children:p(a.totalCompletionTokens)})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",children:[b?(0,d.jsxs)(l(),{href:"/dashboard/settings/pricing",className:"group flex min-w-0 items-center gap-1 text-text-muted text-sm uppercase font-semibold transition-colors hover:text-primary",title:"Chỉnh bảng gi\xe1 d\xf9ng để t\xednh cost",children:[(0,d.jsx)("span",{className:"truncate",children:"Est. Cost"}),(0,d.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[14px] opacity-0 transition-opacity group-hover:opacity-100",children:"edit"})]}):(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Est. Cost"}),(0,d.jsxs)("span",{className:"truncate text-2xl font-bold text-warning",children:["~",q(a.totalCost)]}),(0,d.jsx)("span",{className:"text-[10px] text-text-muted",children:"Estimated, not actual billing"})]})]}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-3 lg:grid-cols-2 sm:gap-4",children:[(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-2 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Input Token Breakdown"}),c>0&&(0,d.jsxs)("div",{className:"flex h-1.5 w-full overflow-hidden rounded-full bg-bg",children:[(0,d.jsx)("div",{className:"bg-primary",style:{width:`${r(g,c)}%`}}),(0,d.jsx)("div",{className:"bg-success",style:{width:`${r(e,c)}%`}}),(0,d.jsx)("div",{className:"bg-warning",style:{width:`${r(f,c)}%`}})]}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-primary"}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:"New input"})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(g),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[r(g,c),"%"]})]})]}),(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-success"}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:"Cached read"})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(e),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[r(e,c),"%"]})]})]}),(0,d.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2",children:[(0,d.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-warning"}),(0,d.jsx)("span",{className:"truncate text-xs text-text-muted",children:"Cache creation"})]}),(0,d.jsxs)("span",{className:"shrink-0 text-xs font-semibold tabular-nums",children:[p(f),(0,d.jsxs)("span",{className:"ml-1.5 font-normal text-text-muted",children:[r(f,c),"%"]})]})]})]})]}),(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-2 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Cloud vs Local"}),t?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex h-1.5 w-full overflow-hidden rounded-full bg-bg",children:[(0,d.jsx)("div",{className:"bg-warning",style:{width:`${A}%`}}),(0,d.jsx)("div",{className:"bg-primary",style:{width:`${B}%`}}),y>0&&(0,d.jsx)("div",{className:"bg-text-muted",style:{width:`${C}%`}})]}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,d.jsx)(s,{label:"Cloud / External",dotClass:"bg-warning",requests:o(k.requests),promptTokens:o(k.promptTokens),completionTokens:o(k.completionTokens),cost:o(k.cost),showCost:!0}),(0,d.jsx)(s,{label:"Local / Self-hosted",dotClass:"bg-primary",requests:o(m.requests),promptTokens:o(m.promptTokens),completionTokens:o(m.completionTokens),cost:o(m.cost),showCost:o(m.cost)>0}),o(n.requests)>0&&(0,d.jsx)(s,{label:"Unknown / chưa ph\xe2n loại",dotClass:"bg-text-muted",requests:o(n.requests),promptTokens:o(n.promptTokens),completionTokens:o(n.completionTokens),cost:o(n.cost),showCost:o(n.cost)>0})]}),(0,d.jsx)("span",{className:"text-[10px] text-text-muted",children:"Ph\xe2n loại theo Deployment của provider. OpenAI/Anthropic Compatible chỉ l\xe0 protocol v\xe0 c\xf3 thể l\xe0 Local hoặc Cloud."})]}):(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"No usage in this period."})]})]}),(0,d.jsx)(u,{})]})}v.propTypes={stats:n().object.isRequired};let w=(a,b=0)=>{let c=Number(a);return Number.isFinite(c)?c:b},x=a=>new Intl.NumberFormat().format(w(a)),y=a=>`$${w(a).toFixed(2)}`;function z(a){if(!a)return"Never";let b=Math.floor((Date.now()-new Date(a))/6e4);return b<1?"Just now":b<60?`${b}m ago`:b<1440?`${Math.floor(b/60)}h ago`:new Date(a).toLocaleDateString()}function A({field:a,currentSort:b,currentOrder:c}){return b!==a?(0,d.jsx)("span",{className:"ml-1 opacity-20",children:"↕"}):(0,d.jsx)("span",{className:"ml-1",children:"asc"===c?"↑":"↓"})}function B({item:a,viewMode:b,isSummary:c=!1}){return"tokens"===b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.promptTokens?"—":x(a.promptTokens)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.completionTokens?"—":x(a.completionTokens)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right font-medium",children:x(a.totalTokens)})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.inputCost?"—":y(a.inputCost)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:c&&void 0===a.outputCost?"—":y(a.outputCost)}),(0,d.jsx)("td",{className:"px-6 py-3 text-right font-medium text-warning",children:y(a.totalCost||a.cost)})]})}function C({title:a,columns:b,groupedData:c,tableType:f,sortBy:g,sortOrder:h,onToggleSort:i,viewMode:k,storageKey:l,renderDetailCells:m,renderSummaryCells:n,emptyMessage:o}){let[p,q]=(0,e.useState)(new Set),r=(0,e.useCallback)(a=>{q(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]),s=(0,e.useMemo)(()=>"tokens"===k?[{field:"promptTokens",label:"Input Tokens"},{field:"completionTokens",label:"Output Tokens"},{field:"totalTokens",label:"Total Tokens"}]:[{field:"promptTokens",label:"Input Cost"},{field:"completionTokens",label:"Output Cost"},{field:"cost",label:"Total Cost"}],[k]),t=b.length+s.length;return(0,d.jsxs)(j.default,{className:"overflow-hidden",children:[(0,d.jsx)("div",{className:"p-4 border-b border-border bg-bg-subtle/50",children:(0,d.jsx)("h3",{className:"font-semibold",children:a})}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm text-left",children:[(0,d.jsx)("thead",{className:"bg-bg-subtle/30 text-text-muted uppercase text-xs",children:(0,d.jsxs)("tr",{children:[b.map(a=>(0,d.jsxs)("th",{className:`px-6 py-3 cursor-pointer hover:bg-bg-subtle/50 ${"right"===a.align?"text-right":""}`,onClick:()=>i(f,a.field),children:[a.label," ",(0,d.jsx)(A,{field:a.field,currentSort:g,currentOrder:h})]},a.field)),s.map(a=>(0,d.jsxs)("th",{className:"px-6 py-3 text-right cursor-pointer hover:bg-bg-subtle/50",onClick:()=>i(f,a.field),children:[a.label," ",(0,d.jsx)(A,{field:a.field,currentSort:g,currentOrder:h})]},a.field))]})}),(0,d.jsxs)("tbody",{className:"divide-y divide-border",children:[c.map(a=>(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("tr",{className:"group-summary cursor-pointer hover:bg-bg-subtle/50 transition-colors",onClick:()=>r(a.groupKey),children:[(0,d.jsx)("td",{className:"px-6 py-3",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted transition-transform ${p.has(a.groupKey)?"rotate-90":""}`,children:"chevron_right"}),(0,d.jsx)("span",{className:`font-medium transition-colors ${a.summary.pending>0?"text-primary":""}`,children:a.groupKey})]})}),n(a),(0,d.jsx)(B,{item:a.summary,viewMode:k,isSummary:!0})]}),p.has(a.groupKey)&&a.items.map(a=>(0,d.jsxs)("tr",{className:"group-detail hover:bg-bg-subtle/20 transition-colors",children:[m(a),(0,d.jsx)(B,{item:a,viewMode:k})]},`detail-${a.key}`))]},a.groupKey)),0===c.length&&(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:t,className:"px-6 py-8 text-center text-text-muted",children:o})})]})]})})]})}A.propTypes={field:n().string.isRequired,currentSort:n().string.isRequired,currentOrder:n().string.isRequired},B.propTypes={item:n().object.isRequired,viewMode:n().string.isRequired,isSummary:n().bool},C.propTypes={title:n().string.isRequired,columns:n().arrayOf(n().shape({field:n().string.isRequired,label:n().string.isRequired,align:n().string})).isRequired,groupedData:n().array.isRequired,tableType:n().string.isRequired,sortBy:n().string.isRequired,sortOrder:n().string.isRequired,onToggleSort:n().func.isRequired,viewMode:n().string.isRequired,storageKey:n().string.isRequired,renderDetailCells:n().func.isRequired,renderSummaryCells:n().func.isRequired,emptyMessage:n().string.isRequired};var D=c(96103),E=c(22805);function F(a){return"string"==typeof a&&a.startsWith(g.JH)}function G(a){return"string"==typeof a&&a.startsWith(g.DI)}function H(a={}){return String(a.apiType||a.providerSpecificData?.apiType||a.provider_specific_data?.apiType||"chat").toLowerCase()}function I({data:a}){let{label:b,color:c,imageUrl:f,textIcon:g,active:h}=a,[i,j]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"flex items-center gap-2.5 px-4 py-2.5 rounded-lg border-2 transition-all duration-300 bg-bg",style:{borderColor:h?c:"var(--color-border)",boxShadow:h?`0 0 16px ${c}40`:"none",minWidth:"150px"},children:[(0,d.jsx)(D.h7,{type:"target",position:E.yX.Top,id:"top",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"target",position:E.yX.Bottom,id:"bottom",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"target",position:E.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"target",position:E.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)("div",{className:"w-8 h-8 rounded-md flex items-center justify-center shrink-0",style:{backgroundColor:`${c}15`},children:f&&!i?(0,d.jsx)("img",{src:f,alt:b,className:"w-6 h-6 rounded-sm object-contain",onError:()=>j(!0)}):(0,d.jsx)("span",{className:"text-sm font-bold",style:{color:c},children:g})}),(0,d.jsx)("span",{className:"text-base font-medium truncate",style:{color:h?c:"var(--color-text)"},children:b}),h&&(0,d.jsxs)("span",{className:"relative flex h-2 w-2 shrink-0",children:[(0,d.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:c}}),(0,d.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2",style:{backgroundColor:c}})]})]})}function J({data:a}){return(0,d.jsxs)("div",{className:"flex items-center justify-center px-5 py-3 rounded-xl border-2 border-primary bg-primary/5 shadow-md min-w-[130px]",children:[(0,d.jsx)(D.h7,{type:"source",position:E.yX.Top,id:"top",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"source",position:E.yX.Bottom,id:"bottom",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"source",position:E.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)(D.h7,{type:"source",position:E.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,d.jsx)("img",{src:"/favicon.svg",alt:"Bluerouter",className:"w-6 h-6 mr-2"}),(0,d.jsx)("span",{className:"text-sm font-bold text-primary",children:"Blue Router"}),a.activeCount>0&&(0,d.jsx)("span",{className:"ml-2 px-1.5 py-0.5 rounded-full bg-primary text-white text-xs font-bold",children:a.activeCount})]})}c(71763),I.propTypes={data:n().object.isRequired},J.propTypes={data:n().object.isRequired};let K={provider:I,router:J};function L({providers:a=[],activeRequests:b=[],lastProvider:c="",errorProvider:f=""}){let h=(0,e.useMemo)(()=>b.map(a=>a.provider?.toLowerCase()).filter(Boolean).sort().join(","),[b]),i=c?.toLowerCase()||"",j=f?.toLowerCase()||"",k=(0,e.useMemo)(()=>new Set(h?h.split(","):[]),[h]),l=(0,e.useMemo)(()=>new Set(i?[i]:[]),[i]),m=(0,e.useMemo)(()=>new Set(j?[j]:[]),[j]),n=(0,e.useRef)({}),[o,p]=(0,e.useState)(0),q=(0,e.useMemo)(()=>{let a=Date.now(),b=new Set;for(let c of k){let d=n.current[c];(!d||a-d<6e4)&&b.add(c)}return b},[k,o]),{nodes:r,edges:s}=(0,e.useMemo)(()=>(function(a,b,c,d){let e=a.length,f=Math.max(320,204*e/(2*Math.PI)),h=Math.max(200,.55*f);if(0===e)return{nodes:[{id:"router",type:"router",position:{x:0,y:0},data:{activeCount:0},draggable:!1}],edges:[]};let i=[],j=[];return i.push({id:"router",type:"router",position:{x:-60,y:-22},data:{activeCount:b.size},draggable:!1}),a.forEach((a,k)=>{let l,m,n=function(a,b={}){if(g.Q2[a])return g.Q2[a];if(F(a)){let a=H(b);return{color:"#10A37F",name:b.name||("responses"===a?"OpenAI Compatible Responses":"OpenAI Compatible Chat"),textIcon:"responses"===a?"OR":"OC"}}return G(a)?{color:"#D97757",name:b.name||"Anthropic Compatible",textIcon:"AC"}:{color:"#6b7280",name:b.name||a,textIcon:(a||"?").slice(0,2).toUpperCase()}}(a.provider,a),o=b.has(a.provider?.toLowerCase()),p=!o&&c.has(a.provider?.toLowerCase()),q=!o&&d.has(a.provider?.toLowerCase()),r=`provider-${a.provider}`,s={label:(n.name!==a.provider?n.name:null)||a.name||a.provider,color:n.color||"#6b7280",imageUrl:function(a={}){let b=a.provider||a.id||"";return b?F(b)?"responses"===H(a)?"/providers/oai-r.png":"/providers/oai-cc.png":G(b)?"/providers/anthropic-m.png":`/providers/${b}.png`:null}(a),textIcon:n.textIcon||(a.provider||"?").slice(0,2).toUpperCase(),active:o},t=-Math.PI/2+2*Math.PI*k/e,u=f*Math.cos(t),v=h*Math.sin(t);Math.abs(t+Math.PI/2)<Math.PI/4||Math.abs(t-3*Math.PI/2)<Math.PI/4?(l="top",m="bottom"):Math.abs(t-Math.PI/2)<Math.PI/4?(l="bottom",m="top"):u>0?(l="right",m="left"):(l="left",m="right"),i.push({id:r,type:"provider",position:{x:u-90,y:v-15},data:s,draggable:!1}),j.push({id:`e-${r}`,source:"router",sourceHandle:l,target:r,targetHandle:m,animated:o,style:(n.color,q?{stroke:"#ef4444",strokeWidth:2.5,opacity:.9}:o?{stroke:"#22c55e",strokeWidth:2.5,opacity:.9}:p?{stroke:"#f59e0b",strokeWidth:2,opacity:.7}:{stroke:"var(--color-border)",strokeWidth:1,opacity:.3})})}),{nodes:i,edges:j}})(a,q,l,m),[a,q,i,j]),t=(0,e.useMemo)(()=>a.map(a=>a.provider).sort().join(","),[a]),u=(0,e.useRef)(null),v=(0,e.useRef)(null),w={padding:.2,duration:200},x=(0,e.useCallback)(a=>{u.current=a,setTimeout(()=>a.fitView(w),50)},[]);return(0,d.jsx)("div",{ref:v,className:"h-[320px] w-full min-w-0 rounded-lg border border-border bg-bg-subtle/30 sm:h-[480px]",children:0===a.length?(0,d.jsx)("div",{className:"h-full flex items-center justify-center text-text-muted text-sm",children:"No providers connected"}):(0,d.jsx)(D.Gc,{nodes:r,edges:s,nodeTypes:K,fitView:!0,fitViewOptions:w,minZoom:.1,maxZoom:2,onInit:x,proOptions:{hideAttribution:!0},panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,preventScrolling:!1,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,children:(0,d.jsx)(D.H2,{showInteractive:!1,className:"react-flow-controls-custom"})},t)})}L.propTypes={providers:n().arrayOf(n().shape({id:n().string,provider:n().string,name:n().string})),activeRequests:n().arrayOf(n().shape({provider:n().string,model:n().string,account:n().string})),lastProvider:n().string,errorProvider:n().string};var M=c(48679),N=c(21621),O=c(5277),P=c(22393),Q=c(54206),R=c(79751),S=c(53330);let T=(a,b=0)=>{let c=Number(a);return Number.isFinite(c)?c:b},U=a=>{let b=T(a);return b>=1e6?`${(b/1e6).toFixed(1)}M`:b>=1e3?`${(b/1e3).toFixed(1)}K`:String(b)},V=a=>`$${T(a).toFixed(4)}`;function W({period:a="7d"}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[h,i]=(0,e.useState)("tokens");(0,e.useCallback)(async()=>{g(!0);try{let b=await fetch(`/api/usage/chart?period=${a}`);if(b.ok){let a=await b.json();c(a)}}catch(a){console.error("Failed to fetch chart data:",a)}finally{g(!1)}},[a]);let k=b.map(a=>({...a,tokens:T(a.tokens),cost:T(a.cost)})),l=k.some(a=>a.tokens>0||a.cost>0);return(0,d.jsxs)(j.default,{className:"flex min-w-0 flex-col gap-3 p-3 sm:p-4",children:[(0,d.jsxs)("div",{className:"grid w-full grid-cols-2 items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1 sm:w-auto sm:self-start",children:[(0,d.jsx)("button",{onClick:()=>i("tokens"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"tokens"===h?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Tokens"}),(0,d.jsx)("button",{onClick:()=>i("cost"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"cost"===h?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Cost"})]}),f?(0,d.jsx)("div",{className:"h-48 flex items-center justify-center text-text-muted text-sm",children:"Loading..."}):l?(0,d.jsx)(M.u,{width:"100%",height:220,children:(0,d.jsxs)(N.Q,{data:k,margin:{top:4,right:8,left:0,bottom:0},children:[(0,d.jsxs)("defs",{children:[(0,d.jsxs)("linearGradient",{id:"gradTokens",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"5%",stopColor:"#6366f1",stopOpacity:.25}),(0,d.jsx)("stop",{offset:"95%",stopColor:"#6366f1",stopOpacity:0})]}),(0,d.jsxs)("linearGradient",{id:"gradCost",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"5%",stopColor:"#f59e0b",stopOpacity:.25}),(0,d.jsx)("stop",{offset:"95%",stopColor:"#f59e0b",stopOpacity:0})]})]}),(0,d.jsx)(O.d,{strokeDasharray:"3 3",strokeOpacity:.1}),(0,d.jsx)(P.W,{dataKey:"label",tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,interval:"preserveStartEnd"}),(0,d.jsx)(Q.h,{tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,tickFormatter:"tokens"===h?U:V,width:50}),(0,d.jsx)(R.m,{contentStyle:{backgroundColor:"var(--color-bg)",border:"1px solid var(--color-border)",borderRadius:"8px",fontSize:"12px"},formatter:(a,b)=>"tokens"===b?[U(a),"Tokens"]:[V(a),"Cost"]}),"tokens"===h?(0,d.jsx)(S.Gk,{type:"monotone",dataKey:"tokens",stroke:"#6366f1",strokeWidth:2,fill:"url(#gradTokens)",dot:!1,activeDot:{r:4}}):(0,d.jsx)(S.Gk,{type:"monotone",dataKey:"cost",stroke:"#f59e0b",strokeWidth:2,fill:"url(#gradCost)",dot:!1,activeDot:{r:4}})]})}):(0,d.jsx)("div",{className:"h-48 flex items-center justify-center text-text-muted text-sm",children:"No data for this period"})]})}function X(a){let b=String(a||"").trim();if(!b)return"";try{return new URL(b).hostname||""}catch{return b.replace(/^https?:\/\//,"").replace(/\/.*$/,"").replace(/:\d+$/,"")}}function Y(a){let b=String(a||"").trim();return/^openai-compatible-chat-[0-9a-f-]{20,}$/i.test(b)||/^openai-compatible-[0-9a-f-]{20,}$/i.test(b)}function Z(a){return String(a||"").trim()}function $(a=[]){let b={},c={};for(let d of a||[]){let a=function(a={}){let b=Z(a.provider||a.providerId||a.provider_id||a.id),c=Z(a.accountName||a.account_name||a.email||a.displayName||a.display_name||a.name||a.label||a.connectionName||a.connection_name),d=X(a.endpoint)||X(a.baseUrl)||X(a.baseURL)||X(a.base_url)||X(a.providerUrl)||X(a.provider_url)||X(a.url),e=Z(a.email);return{providerId:b,accountName:c,displayName:Z(a.displayName||a.display_name),email:e,endpointHost:d,ownerUser:Z(a.ownerUser||a.owner_user),isPersonal:"personal"===a.scope||"private"===a.visibility||!!(a.ownerUser||a.owner_user)}}(d);for(let c of[d.id,d.connectionId,d.connection_id].map(Z).filter(Boolean))b[c]||(b[c]=a);a.accountName&&!c[a.accountName]&&(c[a.accountName]=a)}return{byConnectionId:b,byAccount:c}}function _(a={},b={}){let c=a.model||a.rawModel||a.raw_model||"-",d=function(a={},b={}){let c=function(a={},b={}){for(let c of[a.connectionId,a.connection_id].map(Z).filter(Boolean))if(b.byConnectionId?.[c])return b.byConnectionId[c];let c=Z(a.accountName||a.account_name||a.keyName||a.key_name||a.connectionName||a.connection_name||a.providerName||a.provider_name||a.providerLabel||a.provider_label);return c&&b.byAccount?.[c]?b.byAccount[c]:null}(a,b),d=function(a={},b=null){let c=Z(a.provider||a.providerId||a.provider_id).toLowerCase();if(!(!0===a.isPersonalOAuth||!0===a.is_personal_oauth||"personal"===a.connectionScope||"personal"===a.connection_scope||"private"===a.visibility||b?.isPersonal)||!c)return"";let d=Z(a.ownerUser||a.owner_user||a.apiKeyOwner||a.api_key_owner||b?.ownerUser),e=Z(a.accountEmail||a.account_email||a.email||b?.email),f=Z(a.accountDisplayName||a.account_display_name||a.accountName||a.account_name||a.connectionName||a.connection_name||b?.accountName||b?.displayName),g=[];return(d&&g.push(d),e&&e!==d?g.push(e):f&&f!==d&&g.push(f),g.length)?(g.push(c),g.join("/")):""}(a,c);if(d)return d;if(c){let a=c.providerId,b=c.accountName,d=c.endpointHost;if(a&&!Y(a)){if(c.isPersonal&&c.ownerUser){let d=[c.ownerUser];return c.email&&c.email!==c.ownerUser?d.push(c.email):b&&b!==c.ownerUser&&d.push(b),d.push(a),d.join("/")}return b&&b!==a?`${a}/${b}`:a}if(b)return b;if(d)return d}let e=X(a.endpoint)||X(a.providerUrl)||X(a.provider_url)||X(a.baseUrl)||X(a.baseURL)||X(a.base_url)||X(a.url);if(e)return e;let f=Z(a.provider||a.providerId||a.provider_id),g=Z(a.accountName||a.account_name||a.keyName||a.key_name||a.connectionName||a.connection_name||a.providerName||a.provider_name||a.providerLabel||a.provider_label);return f&&!Y(f)?g&&g!==f?`${f}/${g}`:f:g||""}(a,b),e=Z(a.provider||a.providerId||a.provider_id);return!d||"-"===c||String(c).startsWith(`${d}/`)?c:e&&String(c).startsWith(`${e}/`)&&(d.startsWith(`${e}/`)||d.endsWith(`/${e}`))?`${d}/${String(c).slice(e.length+1)}`:`${d}/${c}`}function aa({timestamp:a}){let b,[,c]=(0,e.useState)(0);return(0,d.jsx)(d.Fragment,{children:(b=Math.floor((Date.now()-new Date(a))/1e3))<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`})}W.propTypes={period:n().string};let ab=new Set(["ok","success","succeeded","complete","completed","done","200 ok"]),ac=new Set(["pending","running","queued","in_progress","in-progress"]);function ad(a={}){let b,c=String(a.status||a.statusText||a.status_text||"").trim().toLowerCase(),d=(b=String(c||"").match(/\b([1-5]\d{2})\b/))?Number(b[1]):null,e=function(...a){for(let b of a){if(null==b||""===b)continue;let a=Number(b);if(Number.isFinite(a))return a}return null}(a.statusCode,a.status_code,a.gatewayStatusCode,a.gateway_status_code,a.upstreamStatusCode,a.upstream_status_code,d),f=Z(a.errorCode||a.error_code),g=Z(a.errorType||a.error_type),h=Z(a.errorMessageShort||a.error_message_short||a.message||a.error);if(ac.has(c))return{kind:"pending",label:"PENDING",title:"Request is still pending/running.",dotClass:"bg-amber-500",rowClass:"hover:bg-amber-50/60",badgeClass:"bg-amber-100 text-amber-700 border border-amber-200"};if(/\b(error|fail|failed|failure|timeout|cancelled|canceled)\b/i.test(c)||null!==e&&e>=400||f||g||h){let b=null!==e?`ERR ${e}`:c?c.toUpperCase():"ERROR",d=[`Status: ${b}`,f?`Code: ${f}`:"",g?`Type: ${g}`:"",h?`Message: ${h}`:"",a.endpoint?`Endpoint: ${a.endpoint}`:""].filter(Boolean);return{kind:"error",label:b,title:d.join("\n"),dotClass:"bg-error",rowClass:"hover:bg-error/5",badgeClass:"bg-error/10 text-error border border-error/20"}}return null!==e&&e>=200&&e<300||!c||ab.has(c)?{kind:"success",label:e?`OK ${e}`:"OK",title:"Request completed successfully.",dotClass:"bg-success",rowClass:"hover:bg-bg-subtle",badgeClass:"bg-success/10 text-success border border-success/20"}:{kind:"unknown",label:c?c.toUpperCase():"UNKNOWN",title:c?`Status: ${c}`:"Unknown request status.",dotClass:"bg-text-muted",rowClass:"hover:bg-bg-subtle",badgeClass:"bg-bg-subtle text-text-muted border border-border"}}function ae({request:a}){let{cachedTokens:b,cacheCreationTokens:c,totalTokens:e,totalInputTokens:f,newInputTokens:g,reasoningTokens:h,outputTokens:i}=function(a={}){let b=Number(a.promptTokens??a.prompt_tokens??0)||0,c=Number(a.cachedTokens??a.cached_tokens??a.cache_read_input_tokens??0)||0,d=Number(a.cacheCreationTokens??a.cache_creation_input_tokens??0)||0,e=Number(a.completionTokens??a.completion_tokens??0)||0,f=Number(a.totalTokens??a.total_tokens??b+e)||0,g=Number(a.displayTotalInputTokens??a.display_total_input_tokens??b)||0,h=Number(a.displayNewInputTokens??a.display_new_input_tokens??Math.max(0,g-c-d))||0,i=Number(a.displayCachedInputTokens??a.display_cached_input_tokens??c)||0,j=Number(a.displayCacheCreationInputTokens??a.display_cache_creation_input_tokens??d)||0,k=Number(a.displayReasoningTokens??a.display_reasoning_tokens??a.reasoningTokens??a.reasoning_tokens??0)||0,l=Number(a.displayOutputTokens??a.display_output_tokens??e)||0;return{promptTokens:b,cachedTokens:i,cacheCreationTokens:j,completionTokens:e,totalTokens:f,totalInputTokens:g,newInputTokens:h,reasoningTokens:k,outputTokens:l}}(a),j=ad(a),k=f>0?Math.min(100,Math.max(0,Math.round(b/f*100))):0,l=`Total Input: ${x(f)}
|
|
11
11
|
New Input: ${x(g)}
|
|
12
12
|
Cached: ${x(b)}
|
|
13
13
|
Cache Create: ${x(c)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/yI2CHS4xc2s5mrkJyZgF-/_buildManifest.js","static/yI2CHS4xc2s5mrkJyZgF-/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-d4aa6be94c905d41.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d7cddff008311ab3.js","static/chunks/main-app-eacc433ef218cf40.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/7a3e1568f247f3d0.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/f104d6561e81b0ac.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d4aa6be94c905d41.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-eacc433ef218cf40.js" async=""></script><script src="/_next/static/chunks/1a258343-a1c000c55ff2ed8c.js" async=""></script><script src="/_next/static/chunks/9893-065a17773674bd0a.js" async=""></script><script src="/_next/static/chunks/9959-ac64565001d4586c.js" async=""></script><script src="/_next/static/chunks/1997-ec155690a9441b82.js" async=""></script><script src="/_next/static/chunks/5564-f72b35ee73d33b9b.js" async=""></script><script src="/_next/static/chunks/5263-d6ee4d6284abc821.js" async=""></script><script src="/_next/static/chunks/7033-c1289a2f17cb7185.js" async=""></script><script src="/_next/static/chunks/5497-4faec8cfb542e7f8.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js" async=""></script><script src="/_next/static/chunks/1101-24e8a2ac5c831741.js" async=""></script><script src="/_next/static/chunks/app/layout-246e5f10ac28be17.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#0a0a0a"/><title>AI Router Gateway - AI Infrastructure Management</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?d69b7278ea27dcf7" type="image/x-icon" sizes="32x32"/><link rel="icon" href="/favicon.svg"/><title>404: This page could not be found.</title><script>if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d4aa6be94c905d41.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[90484,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[90484,[],\"ViewportBoundary\"]\nb:I[90484,[],\"MetadataBoundary\"]\nd:I[27123,[],\"default\",1]\n:HL[\"/_next/static/css/7a3e1568f247f3d0.css\",\"style\"]\n:HL[\"/_next/static/css/f104d6561e81b0ac.css\",\"style\"]\n8:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7a3e1568f247f3d0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f104d6561e81b0ac.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$8\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ipwfbIyh2BtaRvddGx6I8\"}\ne:I[44656,[\"3862\",\"static/chunks/1a258343-a1c000c55ff2ed8c.js\",\"9893\",\"static/chunks/9893-065a17773674bd0a.js\",\"9959\",\"static/chunks/9959-ac64565001d4586c.js\",\"1997\",\"static/chunks/1997-ec155690a9441b82.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-d6ee4d6284abc821.js\",\"7033\",\"static/chunks/7033-c1289a2f17cb7185.js\",\"5497\",\"static/chunks/5497-4faec8cfb542e7f8.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js\"],\"BrandingProvider\"]\nf:I[70255,[\"3862\",\"static/chunks/1a258343-a1c000c55ff2ed8c.js\",\"9893\",\"static/chunks/9893-065a17773674bd0a.js\",\"9959\",\"static/chunks/9959-ac64565001d4586c.js\",\"1997\",\"static/chunks/1997-ec155690a9441b82.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-d6ee4d6284abc821.js\",\"7033\",\"static/chunks/7033-c1289a2f17cb7185.js\",\"5497\",\"static/chunks/5497-4faec8cfb542e7f8.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js\"],\"default\"]\n10:I[21110,[\"3862\",\"static/chunks/1a258343-a1c000c55ff2ed8c.js\",\"9893\",\"static/chunks/9893-065a17773674bd0a.js\",\"9959\",\"static/chunks/9959-ac64565001d4586c.js\",\"1997\",\"static/chunks/1997-ec155690a9441b82.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-d6ee4d6284abc821.js\",\"7033\",\"static/chunks/7033-c1289a2f17cb7185.js\",\"5497\",\"static/chunks/5497-4faec8cfb542e7f8.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js\"],\"ThemeProvider\"]\n11:I[94635,[\"1101\",\"static/chunks/1101-24e8a2ac5c831741.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-d6ee4d6284abc821.js\",\"7177\",\"static/chunks/app/layout-246e5f10ac28be17.js\"],\"RuntimeI18nProvider\"]\n8:C\n2:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"if(document.fonts\u0026\u0026document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$Le\",null,{\"initialBranding\":{\"siteTitle\":\"\",\"siteShortName\":\"\",\"siteDescription\":\"\",\"logoUrl\":null,\"faviconUrl\":null,\"logoMime\":null,\"faviconMime\":null,\"hasLogo\":false,\"hasFavicon\":false},\"children\":[[\"$\",\"$Lf\",null,{}],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]}]]}]\na:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n12:I[86869,[],\"IconMark\"]\n7:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"AI Router Gateway - AI Infrastructure Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?d69b7278ea27dcf7\",\"type\":\"image/x-icon\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L12\",\"5\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/7a3e1568f247f3d0.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/812a1f04de679632.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d4aa6be94c905d41.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-eacc433ef218cf40.js" async=""></script><script src="/_next/static/chunks/1a258343-a1c000c55ff2ed8c.js" async=""></script><script src="/_next/static/chunks/9893-065a17773674bd0a.js" async=""></script><script src="/_next/static/chunks/9959-ac64565001d4586c.js" async=""></script><script src="/_next/static/chunks/1997-ec155690a9441b82.js" async=""></script><script src="/_next/static/chunks/5564-f72b35ee73d33b9b.js" async=""></script><script src="/_next/static/chunks/5263-3ec89c2144054b5f.js" async=""></script><script src="/_next/static/chunks/7033-c1289a2f17cb7185.js" async=""></script><script src="/_next/static/chunks/5497-71bd777d42ea46eb.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js" async=""></script><script src="/_next/static/chunks/1101-24e8a2ac5c831741.js" async=""></script><script src="/_next/static/chunks/app/layout-246e5f10ac28be17.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#0a0a0a"/><title>AI Router Gateway - AI Infrastructure Management</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?d69b7278ea27dcf7" type="image/x-icon" sizes="32x32"/><link rel="icon" href="/favicon.svg"/><title>404: This page could not be found.</title><script>if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d4aa6be94c905d41.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[90484,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[90484,[],\"ViewportBoundary\"]\nb:I[90484,[],\"MetadataBoundary\"]\nd:I[27123,[],\"default\",1]\n:HL[\"/_next/static/css/7a3e1568f247f3d0.css\",\"style\"]\n:HL[\"/_next/static/css/812a1f04de679632.css\",\"style\"]\n8:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7a3e1568f247f3d0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/812a1f04de679632.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$8\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"yI2CHS4xc2s5mrkJyZgF-\"}\ne:I[44656,[\"3862\",\"static/chunks/1a258343-a1c000c55ff2ed8c.js\",\"9893\",\"static/chunks/9893-065a17773674bd0a.js\",\"9959\",\"static/chunks/9959-ac64565001d4586c.js\",\"1997\",\"static/chunks/1997-ec155690a9441b82.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-3ec89c2144054b5f.js\",\"7033\",\"static/chunks/7033-c1289a2f17cb7185.js\",\"5497\",\"static/chunks/5497-71bd777d42ea46eb.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js\"],\"BrandingProvider\"]\nf:I[70255,[\"3862\",\"static/chunks/1a258343-a1c000c55ff2ed8c.js\",\"9893\",\"static/chunks/9893-065a17773674bd0a.js\",\"9959\",\"static/chunks/9959-ac64565001d4586c.js\",\"1997\",\"static/chunks/1997-ec155690a9441b82.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-3ec89c2144054b5f.js\",\"7033\",\"static/chunks/7033-c1289a2f17cb7185.js\",\"5497\",\"static/chunks/5497-71bd777d42ea46eb.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js\"],\"default\"]\n10:I[21110,[\"3862\",\"static/chunks/1a258343-a1c000c55ff2ed8c.js\",\"9893\",\"static/chunks/9893-065a17773674bd0a.js\",\"9959\",\"static/chunks/9959-ac64565001d4586c.js\",\"1997\",\"static/chunks/1997-ec155690a9441b82.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-3ec89c2144054b5f.js\",\"7033\",\"static/chunks/7033-c1289a2f17cb7185.js\",\"5497\",\"static/chunks/5497-71bd777d42ea46eb.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-bb6fdba0137a6272.js\"],\"ThemeProvider\"]\n11:I[94635,[\"1101\",\"static/chunks/1101-24e8a2ac5c831741.js\",\"5564\",\"static/chunks/5564-f72b35ee73d33b9b.js\",\"5263\",\"static/chunks/5263-3ec89c2144054b5f.js\",\"7177\",\"static/chunks/app/layout-246e5f10ac28be17.js\"],\"RuntimeI18nProvider\"]\n8:C\n2:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"if(document.fonts\u0026\u0026document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$Le\",null,{\"initialBranding\":{\"siteTitle\":\"\",\"siteShortName\":\"\",\"siteDescription\":\"\",\"logoUrl\":null,\"faviconUrl\":null,\"logoMime\":null,\"faviconMime\":null,\"hasLogo\":false,\"hasFavicon\":false},\"children\":[[\"$\",\"$Lf\",null,{}],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]}]]}]\na:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n12:I[86869,[],\"IconMark\"]\n7:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"AI Router Gateway - AI Infrastructure Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?d69b7278ea27dcf7\",\"type\":\"image/x-icon\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L12\",\"5\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d4aa6be94c905d41.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-eacc433ef218cf40.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d4aa6be94c905d41.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d4aa6be94c905d41.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-eacc433ef218cf40.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d4aa6be94c905d41.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"yI2CHS4xc2s5mrkJyZgF-\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
|