keyrouter 1.0.2 → 1.0.3
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 +16 -16
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +18 -18
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +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 +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/page.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/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +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 +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/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +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 +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/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +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-injection/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-injection/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-injection/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- 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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +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/pxpipe/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +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/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +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.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +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.js.nft.json +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.js.nft.json +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 +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/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/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/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codewhale-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/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-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/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/cli-tools/crush-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/forge-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/smelt-settings/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/presets/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/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/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/locale/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/media-providers/tts/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/catalog-sync/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.nft.json +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 +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/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +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/bulk-import/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/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/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/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/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/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/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/prompt-injection/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +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]/overrides/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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +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/kilo/free-models/route.js.nft.json +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/suggested-models/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 +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/providers/web-login/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/netlify-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/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/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/proxy-test/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/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/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 +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/usage/[connectionId]/claude-reset/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +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/logs/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.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/audio/voices/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/count_tokens/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/[...model]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/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/systemone/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/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/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.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 +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- 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.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-injection.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-injection.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/prompt-injection.segments/!KGRhc2hib2FyZCk/dashboard/prompt-injection/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/prompt-injection.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/prompt-injection.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/pxpipe.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- 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 +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- 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 +5 -5
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +16 -16
- package/app/.next-cli-build/server/chunks/1051.js +1 -1
- package/app/.next-cli-build/server/chunks/2172.js +1 -1
- package/app/.next-cli-build/server/chunks/412.js +2 -2
- package/app/.next-cli-build/server/chunks/5626.js +1 -0
- package/app/.next-cli-build/server/chunks/8128.js +1 -1
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/9604.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js.nft.json +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/5497-bd4f9f37c29968bd.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/layout-18c2613dd78ff66f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/layout-cd4efdfec7b51ca9.js +1 -0
- package/app/.next-cli-build/static/css/841943e9a30fe5cd.css +1 -0
- package/app/package.json +1 -1
- package/cli.js +77 -36
- package/package.json +1 -1
- package/app/.next-cli-build/server/chunks/4756.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-54a2c3dfa292cd6f.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/layout-36c42ca907c9f01d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/layout-47a7f93a93a7249c.js +0 -1
- package/app/.next-cli-build/static/css/40eba1d7174ab2f7.css +0 -1
- /package/app/.next-cli-build/static/{OQlH5Y4fdrzSgUpl8Gw_9 → SaAkC7sXHdEDKHids4PIF}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{OQlH5Y4fdrzSgUpl8Gw_9 → SaAkC7sXHdEDKHids4PIF}/_ssgManifest.js +0 -0
|
@@ -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="preload" href="/_next/static/media/36966cca54120369-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/ad3cadf3cb03edcb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/40eba1d7174ab2f7.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-01b0b9fe7dbba18d.js"/><script src="/_next/static/chunks/4bd1b696-8cd12253b448cc13.js" async=""></script><script src="/_next/static/chunks/3794-fba3f76785a3c234.js" async=""></script><script src="/_next/static/chunks/main-app-398a58d48897ccf8.js" async=""></script><script src="/_next/static/chunks/3488-fd2f0bdef1a1217a.js" async=""></script><script src="/_next/static/chunks/2470-e9f1fd5f21c43fac.js" async=""></script><script src="/_next/static/chunks/app/layout-47a7f93a93a7249c.js" async=""></script><script src="/_next/static/chunks/763-64b80a1ab0aa3cfc.js" async=""></script><script src="/_next/static/chunks/705-c8a7b6dfca9ca382.js" async=""></script><script src="/_next/static/chunks/3557-437defff109ccb42.js" async=""></script><script src="/_next/static/chunks/5497-54a2c3dfa292cd6f.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-36c42ca907c9f01d.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/dashboard/profile/page-628c4ef1c9482980.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-LC959F603F" as="script"/><meta name="theme-color" content="#0a0a0a"/><title>KeyRouter - 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?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><meta name="next-size-adjust" content=""/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'\u0026\u0026m)){document.documentElement.classList.add('dark')}}catch(e){}})();","id":"theme-bootstrap"}])</script><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts\u0026\u0026d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}","id":"fonts-loaded-bootstrap"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_d8ebd1 __variable_c219ed font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-full overflow-hidden bg-bg"><div class="fixed top-4 right-4 z-[80] flex w-[min(92vw,380px)] flex-col gap-2"></div><main class="flex flex-col flex-1 h-full min-w-0 relative transition-colors duration-300 isolate"><header class="shrink-0 z-20 flex flex-col bg-surface/60 backdrop-blur-xl lg:bg-transparent lg:backdrop-blur-none"><div class="flex items-center gap-3 py-2.5"><div class="mx-auto flex w-full max-w-7xl items-center gap-3 px-4 lg:px-8"><a class="group flex shrink-0 items-center gap-2.5" aria-label="KeyRouter Proxy home" href="/dashboard"><div class="grid size-9 shrink-0 place-items-center rounded-[10px] bg-gradient-to-br from-brand-500 to-brand-700 text-white shadow-[var(--shadow-warm)] transition-transform duration-150 group-hover:scale-[1.04]"><span class="material-symbols-outlined text-[18px]">route</span></div><div class="leading-tight"><h1 class="font-display text-[15px] font-bold tracking-tight text-text-main">KeyRouter Proxy</h1><span class="font-mono text-[10px] uppercase tracking-wider text-text-subtle">v<!-- -->1.0</span></div></a><div class="min-w-0 flex-1"></div><div class="flex items-center gap-1 shrink-0"><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all" title="Language" data-i18n-skip="true"><span class="text-lg leading-none">🇺🇸</span></button><div class=""></div><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all" title="Theme"><span class="material-symbols-outlined">dark_mode</span></button><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all hover:text-red-500 dark:hover:text-red-400" title="Shutdown"><span class="material-symbols-outlined">power_settings_new</span></button><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all hover:text-red-500 dark:hover:text-red-400" title="Logout"><span class="material-symbols-outlined">logout</span></button></div></div></div><div class="border-b border-border-subtle px-4 py-1.5 lg:px-8"><nav class="scrollbar-hide flex w-full items-center overflow-x-auto"><div class="mx-auto flex items-center gap-1"><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/endpoint"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">api</span><span class="truncate">Endpoint</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/providers"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">dns</span><span class="truncate">Providers</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/combos"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">layers</span><span class="truncate">Combos</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/cli-tools"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">terminal</span><span class="truncate">CLI</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/usage"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">bar_chart</span><span class="truncate">Usage</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/quota"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">data_usage</span><span class="truncate">Quota</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/token-saver"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">savings</span><span class="truncate">Saver</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/media-providers/systemone"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">psychology</span><span class="truncate">System One</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/proxy-pools"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">lan</span><span class="truncate">Proxies</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/skills"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">extension</span><span class="truncate">Skills</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/prompt-injection"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">skull</span><span class="truncate">Prompt</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/console-log"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">monitor</span><span class="truncate">Logs</span></a></div></nav></div></header><div class="flex-1 overflow-y-auto custom-scrollbar py-6 lg:py-10 px-4 lg:px-8 "><div class="max-w-7xl mx-auto"><div class="mx-auto px-4 sm:px-0"><div class="flex flex-col gap-6"><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-4"><div class="flex items-center gap-3 sm:gap-4"><div class="size-10 sm:size-12 rounded-lg bg-green-500/10 text-green-500 flex items-center justify-center shrink-0"><span class="material-symbols-outlined text-xl sm:text-2xl">computer</span></div><div><h2 class="text-lg sm:text-xl font-semibold">Local Mode</h2><p class="text-sm text-text-muted">Running on your machine</p></div></div><div class="inline-flex p-1 rounded-lg bg-black/5 dark:bg-white/5 w-full sm:w-auto"><button type="button" class="flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial text-text-muted hover:text-text-main"><span class="material-symbols-outlined text-[18px]">light_mode</span><span class="capitalize text-xs sm:text-sm">light</span></button><button type="button" class="flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial text-text-muted hover:text-text-main"><span class="material-symbols-outlined text-[18px]">dark_mode</span><span class="capitalize text-xs sm:text-sm">dark</span></button><button type="button" class="flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial bg-white dark:bg-white/10 text-text-main shadow-sm"><span class="material-symbols-outlined text-[18px]">contrast</span><span class="capitalize text-xs sm:text-sm">system</span></button></div></div><div class="flex flex-col gap-3 pt-4 border-t border-border"><div class="flex flex-col sm:flex-row sm:items-center sm:justify-between p-3 rounded-lg bg-bg border border-border gap-2"><div><p class="font-medium text-sm sm:text-base">Database Location</p><p class="text-xs sm:text-sm text-text-muted font-mono break-all">~/.keyrouter/db/data.sqlite</p></div></div><div class="flex flex-col sm:flex-row gap-2"><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 bg-surface-2 hover:bg-surface-3 text-text-main border border-border disabled:opacity-50 h-9 px-4 text-sm rounded-md w-full sm:w-auto"><span class="material-symbols-outlined text-[18px]">download</span>Download Backup</button><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 border border-border text-text-main hover:bg-surface-2 hover:border-text-subtle h-9 px-4 text-sm rounded-md w-full sm:w-auto"><span class="material-symbols-outlined text-[18px]">upload</span>Import Backup</button><input type="file" accept="application/json,.json" class="hidden"/></div></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="size-10 rounded-lg bg-blue-500/10 text-blue-500 flex items-center justify-center shrink-0"><span class="material-symbols-outlined text-[20px]">language</span></div><h3 class="text-base sm:text-lg font-semibold">Language</h3></div><button class="flex items-center justify-between w-full p-3 rounded-lg bg-bg border border-border hover:border-primary/50 transition-colors" data-i18n-skip="true"><span class="text-sm text-text-muted">Display language</span><span class="text-2xl">🇺🇸</span></button></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-primary/10 text-primary shrink-0"><span class="material-symbols-outlined text-[20px]">shield</span></div><h3 class="text-base sm:text-lg font-semibold">Security</h3></div><div class="flex flex-col gap-4"><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Require login</p><p class="text-xs sm:text-sm text-text-muted">When ON, dashboard requires password. When OFF, access without login.</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><button type="button" class="w-full flex items-center gap-3 text-left"><div class="p-2 rounded-lg bg-surface-2 text-text-muted shrink-0"><span class="material-symbols-outlined text-[20px]">lock_open</span></div><div class="flex-1 min-w-0"><h3 class="text-base sm:text-lg font-semibold">Single Sign-On (SSO)</h3><p class="text-xs text-text-muted">Optional SSO via Okta, Entra ID, Keycloak, or OIDC</p></div><span class="material-symbols-outlined text-text-muted shrink-0">expand_more</span></button></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-blue-500/10 text-blue-500 shrink-0"><span class="material-symbols-outlined text-[20px]">route</span></div><h3 class="text-base sm:text-lg font-semibold">Routing Strategy</h3></div><div class="flex flex-col gap-4"><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Round Robin</p><p class="text-xs sm:text-sm text-text-muted">Cycle through accounts to distribute load</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div><div class="flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Combo Round Robin</p><p class="text-xs sm:text-sm text-text-muted">Cycle through providers in combos instead of always starting with first</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div><p class="text-xs text-text-muted italic pt-2 border-t border-border/50">Currently using accounts in priority order (Fill First).<!-- --> Combos always start with their first model.</p></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-purple-500/10 text-purple-500 shrink-0"><span class="material-symbols-outlined text-[20px]">wifi</span></div><h3 class="text-base sm:text-lg font-semibold">Network</h3></div><div class="flex flex-col gap-4"><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Outbound Proxy</p><p class="text-xs sm:text-sm text-text-muted">Enable proxy for OAuth + provider outbound requests.</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-warning/10 text-warning shrink-0"><span class="material-symbols-outlined text-[20px]">monitoring</span></div><h3 class="text-base sm:text-lg font-semibold">Observability</h3></div><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Enable Observability</p><p class="text-xs sm:text-sm text-text-muted">Record request details for inspection in the logs view</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div></div><div class="flex flex-col sm:flex-row gap-2"><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 border border-border text-text-main hover:bg-surface-2 hover:border-text-subtle h-9 px-4 text-sm rounded-md w-full text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300"><span class="material-symbols-outlined text-[18px]">power_settings_new</span>Shutdown</button><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 border border-border text-text-main hover:bg-surface-2 hover:border-text-subtle h-9 px-4 text-sm rounded-md w-full"><span class="material-symbols-outlined text-[18px]">logout</span>Logout</button></div><div class="text-center text-xs sm:text-sm text-text-muted py-4"><p>KeyRouter Proxy<!-- --> v<!-- -->1.0</p><p class="mt-1">Local Mode - All data stored on your machine</p></div></div><div class=""></div></div><!--$--><!--/$--></div></div></main></div><script src="/_next/static/chunks/webpack-01b0b9fe7dbba18d.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:\"static/chunks/3488-fd2f0bdef1a1217a.js\"\n3:\"static/chunks/2470-e9f1fd5f21c43fac.js\"\n4:\"static/chunks/app/layout-47a7f93a93a7249c.js\"\n5:I[42593,[\"3488\",\"$2\",\"2470\",\"$3\",\"7177\",\"$4\"],\"\"]\n6:\"static/chunks/763-64b80a1ab0aa3cfc.js\"\n7:\"static/chunks/705-c8a7b6dfca9ca382.js\"\n8:\"static/chunks/3557-437defff109ccb42.js\"\n9:\"static/chunks/5497-54a2c3dfa292cd6f.js\"\na:\"static/chunks/app/(dashboard)/layout-36c42ca907c9f01d.js\"\nb:I[21110,[\"763\",\"$6\",\"2470\",\"$3\",\"705\",\"$7\",\"3557\",\"$8\",\"5497\",\"$9\",\"9305\",\"$a\"],\"ThemeProvider\"]\nc:\"RuntimeI18nProvider\"\nd:I[94635,[\"3488\",\"$2\",\"2470\",\"$3\",\"7177\",\"$4\"],\"$c\"]\ne:I[57121,[],\"\"]\nf:I[74581,[],\"\"]\n10:I[30565,[\"3488\",\"$2\",\"2470\",\"$3\",\"7177\",\"$4\"],\"GoogleAnalytics\"]\n12:I[30233,[\"763\",\"$6\",\"2470\",\"$3\",\"705\",\"$7\",\"3557\",\"$8\",\"5497\",\"$9\",\"9305\",\"$a\"],\"default\"]\n17:I[61304,[],\"ClientPageRoot\"]\n18:\"static/chunks/app/(dashboard)/dashboard/profile/page-628c4ef1c9482980.js\"\n19:I[64561,[\"763\",\"$6\",\"2470\",\"$3\",\"705\",\"$7\",\"3557\",\"$8\",\"5497\",\"$9\",\"3471\",\"$18\"],\"default\"]\n1c:I[90484,[],\"OutletBoundary\"]\n1d:\"$Sreact.suspense\"\n1f:\"ViewportBoundary\"\n20:I[90484,[],\"$1f\"]\n22:\"MetadataBoundary\"\n23:I[90484,[],\"$22\"]\n25:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/36966cca54120369-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/ad3cadf3cb03edcb.css\",\"style\"]\n:HL[\"/_next/static/css/40eba1d7174ab2f7.css\",\"style\"]\n14:X\n16:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L17\",null,{\"Component\":\"$19\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@1a\",\"$@1b\"]}}],null,[\"$\",\"$L1c\",null,{\"children\":[\"$\",\"$1d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@1e\"}]}]]}],\"p\":false,\"v\":null}}]]\n15:[[\"children\",{\"s\":\"profile\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$14\"},\"c\":\"$Q16\"}]]\n13:[[\"children\",{\"s\":\"dashboard\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$14\"},\"c\":\"$Q15\"}]]\n11:[[\"children\",{\"s\":\"(dashboard)\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q13\"}]]\n0:{\"P\":null,\"c\":[\"\",\"dashboard\",\"profile\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ad3cadf3cb03edcb.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/40eba1d7174ab2f7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L5\",null,{\"id\":\"theme-bootstrap\",\"strategy\":\"beforeInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'\u0026\u0026m)){document.documentElement.classList.add('dark')}}catch(e){}})();\"}}],[\"$\",\"$L5\",null,{\"id\":\"fonts-loaded-bootstrap\",\"strategy\":\"beforeInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts\u0026\u0026d.fonts.load){d.fonts.load('24px \\\"Material Symbols Outlined\\\"').then(f).catch(f);setTimeout(f,3000)}else{f()}\"}}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_d8ebd1 __variable_c219ed font-sans antialiased\",\"children\":[[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}],[\"$\",\"$L10\",null,{\"gaId\":\"G-LC959F603F\"}]]}]]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q11\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L20\",null,{\"children\":\"$L21\"}],[\"$\",\"$L23\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$1d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L24\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$25\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"OQlH5Y4fdrzSgUpl8Gw_9\"}\n14:C\n1a:{}\n1b:\"$16:0:1:d:r:props:children:0:props:serverProvidedParams:params\"\n21:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n26:I[86869,[],\"IconMark\"]\n1e:null\n24:[[\"$\",\"title\",\"0\",{\"children\":\"KeyRouter - 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?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L26\",\"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="preload" href="/_next/static/media/36966cca54120369-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/ad3cadf3cb03edcb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/841943e9a30fe5cd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-01b0b9fe7dbba18d.js"/><script src="/_next/static/chunks/4bd1b696-8cd12253b448cc13.js" async=""></script><script src="/_next/static/chunks/3794-fba3f76785a3c234.js" async=""></script><script src="/_next/static/chunks/main-app-398a58d48897ccf8.js" async=""></script><script src="/_next/static/chunks/3488-fd2f0bdef1a1217a.js" async=""></script><script src="/_next/static/chunks/2470-e9f1fd5f21c43fac.js" async=""></script><script src="/_next/static/chunks/app/layout-cd4efdfec7b51ca9.js" async=""></script><script src="/_next/static/chunks/763-64b80a1ab0aa3cfc.js" async=""></script><script src="/_next/static/chunks/705-c8a7b6dfca9ca382.js" async=""></script><script src="/_next/static/chunks/3557-437defff109ccb42.js" async=""></script><script src="/_next/static/chunks/5497-bd4f9f37c29968bd.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-18c2613dd78ff66f.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/dashboard/profile/page-628c4ef1c9482980.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-LC959F603F" as="script"/><meta name="theme-color" content="#0a0a0a"/><title>KeyRouter - 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?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><meta name="next-size-adjust" content=""/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'\u0026\u0026m)){document.documentElement.classList.add('dark')}}catch(e){}})();","id":"theme-bootstrap"}])</script><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts\u0026\u0026d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}","id":"fonts-loaded-bootstrap"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_d8ebd1 __variable_c219ed font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-full overflow-hidden bg-bg"><div class="fixed top-4 right-4 z-[80] flex w-[min(92vw,380px)] flex-col gap-2"></div><main class="flex flex-col flex-1 h-full min-w-0 relative transition-colors duration-300 isolate"><header class="shrink-0 z-20 flex flex-col bg-surface/60 backdrop-blur-xl lg:bg-transparent lg:backdrop-blur-none"><div class="flex items-center gap-3 py-2.5"><div class="mx-auto flex w-full max-w-7xl items-center gap-3 px-4 lg:px-8"><a class="group flex shrink-0 items-center gap-2.5" aria-label="KeyRouter Proxy home" href="/dashboard"><div class="grid size-9 shrink-0 place-items-center rounded-[10px] bg-gradient-to-br from-brand-500 to-brand-700 text-white shadow-[var(--shadow-warm)] transition-transform duration-150 group-hover:scale-[1.04]"><span class="material-symbols-outlined text-[18px]">route</span></div><div class="leading-tight"><h1 class="font-display text-[15px] font-bold tracking-tight text-text-main">KeyRouter Proxy</h1><span class="font-mono text-[10px] uppercase tracking-wider text-text-subtle">v<!-- -->1.0.3</span></div></a><div class="min-w-0 flex-1"></div><div class="flex items-center gap-1 shrink-0"><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all" title="Language" data-i18n-skip="true"><span class="text-lg leading-none">🇺🇸</span></button><div class=""></div><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all" title="Theme"><span class="material-symbols-outlined">dark_mode</span></button><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all hover:text-red-500 dark:hover:text-red-400" title="Shutdown"><span class="material-symbols-outlined">power_settings_new</span></button><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all hover:text-red-500 dark:hover:text-red-400" title="Logout"><span class="material-symbols-outlined">logout</span></button></div></div></div><div class="border-b border-border-subtle px-4 py-1.5 lg:px-8"><nav class="scrollbar-hide flex w-full items-center overflow-x-auto"><div class="mx-auto flex items-center gap-1"><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/endpoint"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">api</span><span class="truncate">Endpoint</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/providers"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">dns</span><span class="truncate">Providers</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/combos"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">layers</span><span class="truncate">Combos</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/cli-tools"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">terminal</span><span class="truncate">CLI</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/usage"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">bar_chart</span><span class="truncate">Usage</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/quota"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">data_usage</span><span class="truncate">Quota</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/token-saver"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">savings</span><span class="truncate">Saver</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/media-providers/systemone"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">psychology</span><span class="truncate">System One</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/proxy-pools"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">lan</span><span class="truncate">Proxies</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/skills"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">extension</span><span class="truncate">Skills</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/prompt-injection"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">skull</span><span class="truncate">Prompt</span></a><a class="group flex shrink-0 items-center gap-2 rounded-lg px-3 py-1.5 font-display text-sm font-medium transition-colors duration-150 text-text-muted hover:text-text-main" href="/dashboard/console-log"><span class="material-symbols-outlined text-[18px] text-text-subtle transition-colors group-hover:text-text-main">monitor</span><span class="truncate">Logs</span></a></div></nav></div></header><div class="flex-1 overflow-y-auto custom-scrollbar py-6 lg:py-10 px-4 lg:px-8 "><div class="max-w-7xl mx-auto"><div class="mx-auto px-4 sm:px-0"><div class="flex flex-col gap-6"><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-4"><div class="flex items-center gap-3 sm:gap-4"><div class="size-10 sm:size-12 rounded-lg bg-green-500/10 text-green-500 flex items-center justify-center shrink-0"><span class="material-symbols-outlined text-xl sm:text-2xl">computer</span></div><div><h2 class="text-lg sm:text-xl font-semibold">Local Mode</h2><p class="text-sm text-text-muted">Running on your machine</p></div></div><div class="inline-flex p-1 rounded-lg bg-black/5 dark:bg-white/5 w-full sm:w-auto"><button type="button" class="flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial text-text-muted hover:text-text-main"><span class="material-symbols-outlined text-[18px]">light_mode</span><span class="capitalize text-xs sm:text-sm">light</span></button><button type="button" class="flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial text-text-muted hover:text-text-main"><span class="material-symbols-outlined text-[18px]">dark_mode</span><span class="capitalize text-xs sm:text-sm">dark</span></button><button type="button" class="flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial bg-white dark:bg-white/10 text-text-main shadow-sm"><span class="material-symbols-outlined text-[18px]">contrast</span><span class="capitalize text-xs sm:text-sm">system</span></button></div></div><div class="flex flex-col gap-3 pt-4 border-t border-border"><div class="flex flex-col sm:flex-row sm:items-center sm:justify-between p-3 rounded-lg bg-bg border border-border gap-2"><div><p class="font-medium text-sm sm:text-base">Database Location</p><p class="text-xs sm:text-sm text-text-muted font-mono break-all">~/.keyrouter/db/data.sqlite</p></div></div><div class="flex flex-col sm:flex-row gap-2"><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 bg-surface-2 hover:bg-surface-3 text-text-main border border-border disabled:opacity-50 h-9 px-4 text-sm rounded-md w-full sm:w-auto"><span class="material-symbols-outlined text-[18px]">download</span>Download Backup</button><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 border border-border text-text-main hover:bg-surface-2 hover:border-text-subtle h-9 px-4 text-sm rounded-md w-full sm:w-auto"><span class="material-symbols-outlined text-[18px]">upload</span>Import Backup</button><input type="file" accept="application/json,.json" class="hidden"/></div></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="size-10 rounded-lg bg-blue-500/10 text-blue-500 flex items-center justify-center shrink-0"><span class="material-symbols-outlined text-[20px]">language</span></div><h3 class="text-base sm:text-lg font-semibold">Language</h3></div><button class="flex items-center justify-between w-full p-3 rounded-lg bg-bg border border-border hover:border-primary/50 transition-colors" data-i18n-skip="true"><span class="text-sm text-text-muted">Display language</span><span class="text-2xl">🇺🇸</span></button></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-primary/10 text-primary shrink-0"><span class="material-symbols-outlined text-[20px]">shield</span></div><h3 class="text-base sm:text-lg font-semibold">Security</h3></div><div class="flex flex-col gap-4"><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Require login</p><p class="text-xs sm:text-sm text-text-muted">When ON, dashboard requires password. When OFF, access without login.</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><button type="button" class="w-full flex items-center gap-3 text-left"><div class="p-2 rounded-lg bg-surface-2 text-text-muted shrink-0"><span class="material-symbols-outlined text-[20px]">lock_open</span></div><div class="flex-1 min-w-0"><h3 class="text-base sm:text-lg font-semibold">Single Sign-On (SSO)</h3><p class="text-xs text-text-muted">Optional SSO via Okta, Entra ID, Keycloak, or OIDC</p></div><span class="material-symbols-outlined text-text-muted shrink-0">expand_more</span></button></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-blue-500/10 text-blue-500 shrink-0"><span class="material-symbols-outlined text-[20px]">route</span></div><h3 class="text-base sm:text-lg font-semibold">Routing Strategy</h3></div><div class="flex flex-col gap-4"><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Round Robin</p><p class="text-xs sm:text-sm text-text-muted">Cycle through accounts to distribute load</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div><div class="flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Combo Round Robin</p><p class="text-xs sm:text-sm text-text-muted">Cycle through providers in combos instead of always starting with first</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div><p class="text-xs text-text-muted italic pt-2 border-t border-border/50">Currently using accounts in priority order (Fill First).<!-- --> Combos always start with their first model.</p></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-purple-500/10 text-purple-500 shrink-0"><span class="material-symbols-outlined text-[20px]">wifi</span></div><h3 class="text-base sm:text-lg font-semibold">Network</h3></div><div class="flex flex-col gap-4"><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Outbound Proxy</p><p class="text-xs sm:text-sm text-text-muted">Enable proxy for OAuth + provider outbound requests.</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div></div></div><div class="bg-surface border border-border-subtle rounded-[6px] shadow-[var(--shadow-soft)] p-6"><div class="flex items-center gap-3 mb-4"><div class="p-2 rounded-lg bg-warning/10 text-warning shrink-0"><span class="material-symbols-outlined text-[20px]">monitoring</span></div><h3 class="text-base sm:text-lg font-semibold">Observability</h3></div><div class="flex items-start sm:items-center justify-between gap-4"><div class="flex-1 min-w-0"><p class="font-medium text-sm sm:text-base">Enable Observability</p><p class="text-xs sm:text-sm text-text-muted">Record request details for inspection in the logs view</p></div><div class="flex items-center gap-3 opacity-50 cursor-not-allowed"><button type="button" role="switch" aria-checked="false" disabled="" class="relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-text-subtle/50 bg-surface-3 w-11 h-6 cursor-not-allowed"><span class="pointer-events-none inline-block rounded-full bg-white shadow-sm transform transition duration-200 ease-in-out translate-x-0.5 size-5 mt-0.5"></span></button></div></div></div><div class="flex flex-col sm:flex-row gap-2"><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 border border-border text-text-main hover:bg-surface-2 hover:border-text-subtle h-9 px-4 text-sm rounded-md w-full text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300"><span class="material-symbols-outlined text-[18px]">power_settings_new</span>Shutdown</button><button class="inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100 border border-border text-text-main hover:bg-surface-2 hover:border-text-subtle h-9 px-4 text-sm rounded-md w-full"><span class="material-symbols-outlined text-[18px]">logout</span>Logout</button></div><div class="text-center text-xs sm:text-sm text-text-muted py-4"><p>KeyRouter Proxy<!-- --> v<!-- -->1.0.3</p><p class="mt-1">Local Mode - All data stored on your machine</p></div></div><div class=""></div></div><!--$--><!--/$--></div></div></main></div><script src="/_next/static/chunks/webpack-01b0b9fe7dbba18d.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:\"static/chunks/3488-fd2f0bdef1a1217a.js\"\n3:\"static/chunks/2470-e9f1fd5f21c43fac.js\"\n4:\"static/chunks/app/layout-cd4efdfec7b51ca9.js\"\n5:I[42593,[\"3488\",\"$2\",\"2470\",\"$3\",\"7177\",\"$4\"],\"\"]\n6:\"static/chunks/763-64b80a1ab0aa3cfc.js\"\n7:\"static/chunks/705-c8a7b6dfca9ca382.js\"\n8:\"static/chunks/3557-437defff109ccb42.js\"\n9:\"static/chunks/5497-bd4f9f37c29968bd.js\"\na:\"static/chunks/app/(dashboard)/layout-18c2613dd78ff66f.js\"\nb:I[21110,[\"763\",\"$6\",\"2470\",\"$3\",\"705\",\"$7\",\"3557\",\"$8\",\"5497\",\"$9\",\"9305\",\"$a\"],\"ThemeProvider\"]\nc:\"RuntimeI18nProvider\"\nd:I[94635,[\"3488\",\"$2\",\"2470\",\"$3\",\"7177\",\"$4\"],\"$c\"]\ne:I[57121,[],\"\"]\nf:I[74581,[],\"\"]\n10:I[30565,[\"3488\",\"$2\",\"2470\",\"$3\",\"7177\",\"$4\"],\"GoogleAnalytics\"]\n12:I[30233,[\"763\",\"$6\",\"2470\",\"$3\",\"705\",\"$7\",\"3557\",\"$8\",\"5497\",\"$9\",\"9305\",\"$a\"],\"default\"]\n17:I[61304,[],\"ClientPageRoot\"]\n18:\"static/chunks/app/(dashboard)/dashboard/profile/page-628c4ef1c9482980.js\"\n19:I[64561,[\"763\",\"$6\",\"2470\",\"$3\",\"705\",\"$7\",\"3557\",\"$8\",\"5497\",\"$9\",\"3471\",\"$18\"],\"default\"]\n1c:I[90484,[],\"OutletBoundary\"]\n1d:\"$Sreact.suspense\"\n1f:\"ViewportBoundary\"\n20:I[90484,[],\"$1f\"]\n22:\"MetadataBoundary\"\n23:I[90484,[],\"$22\"]\n25:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/36966cca54120369-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/ad3cadf3cb03edcb.css\",\"style\"]\n:HL[\"/_next/static/css/841943e9a30fe5cd.css\",\"style\"]\n14:X\n16:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L17\",null,{\"Component\":\"$19\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@1a\",\"$@1b\"]}}],null,[\"$\",\"$L1c\",null,{\"children\":[\"$\",\"$1d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@1e\"}]}]]}],\"p\":false,\"v\":null}}]]\n15:[[\"children\",{\"s\":\"profile\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$14\"},\"c\":\"$Q16\"}]]\n13:[[\"children\",{\"s\":\"dashboard\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$14\"},\"c\":\"$Q15\"}]]\n11:[[\"children\",{\"s\":\"(dashboard)\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q13\"}]]\n0:{\"P\":null,\"c\":[\"\",\"dashboard\",\"profile\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ad3cadf3cb03edcb.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/841943e9a30fe5cd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L5\",null,{\"id\":\"theme-bootstrap\",\"strategy\":\"beforeInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'\u0026\u0026m)){document.documentElement.classList.add('dark')}}catch(e){}})();\"}}],[\"$\",\"$L5\",null,{\"id\":\"fonts-loaded-bootstrap\",\"strategy\":\"beforeInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts\u0026\u0026d.fonts.load){d.fonts.load('24px \\\"Material Symbols Outlined\\\"').then(f).catch(f);setTimeout(f,3000)}else{f()}\"}}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_d8ebd1 __variable_c219ed font-sans antialiased\",\"children\":[[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}],[\"$\",\"$L10\",null,{\"gaId\":\"G-LC959F603F\"}]]}]]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q11\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L20\",null,{\"children\":\"$L21\"}],[\"$\",\"$L23\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$1d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L24\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$25\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"SaAkC7sXHdEDKHids4PIF\"}\n14:C\n1a:{}\n1b:\"$16:0:1:d:r:props:children:0:props:serverProvidedParams:params\"\n21:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n26:I[86869,[],\"IconMark\"]\n1e:null\n24:[[\"$\",\"title\",\"0\",{\"children\":\"KeyRouter - 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?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L26\",\"5\",{}]]\n"])</script></body></html>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:"static/chunks/3488-fd2f0bdef1a1217a.js"
|
|
3
3
|
3:"static/chunks/2470-e9f1fd5f21c43fac.js"
|
|
4
|
-
4:"static/chunks/app/layout-
|
|
4
|
+
4:"static/chunks/app/layout-cd4efdfec7b51ca9.js"
|
|
5
5
|
5:I[42593,["3488","$2","2470","$3","7177","$4"],""]
|
|
6
6
|
6:"static/chunks/763-64b80a1ab0aa3cfc.js"
|
|
7
7
|
7:"static/chunks/705-c8a7b6dfca9ca382.js"
|
|
8
8
|
8:"static/chunks/3557-437defff109ccb42.js"
|
|
9
|
-
9:"static/chunks/5497-
|
|
10
|
-
a:"static/chunks/app/(dashboard)/layout-
|
|
9
|
+
9:"static/chunks/5497-bd4f9f37c29968bd.js"
|
|
10
|
+
a:"static/chunks/app/(dashboard)/layout-18c2613dd78ff66f.js"
|
|
11
11
|
b:I[21110,["763","$6","2470","$3","705","$7","3557","$8","5497","$9","9305","$a"],"ThemeProvider"]
|
|
12
12
|
c:"RuntimeI18nProvider"
|
|
13
13
|
d:I[94635,["3488","$2","2470","$3","7177","$4"],"$c"]
|
|
@@ -28,13 +28,13 @@ f:I[74581,[],""]
|
|
|
28
28
|
:HL["/_next/static/media/36966cca54120369-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
29
29
|
:HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
30
30
|
:HL["/_next/static/css/ad3cadf3cb03edcb.css","style"]
|
|
31
|
-
:HL["/_next/static/css/
|
|
31
|
+
:HL["/_next/static/css/841943e9a30fe5cd.css","style"]
|
|
32
32
|
14:X
|
|
33
33
|
16:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$L17",null,{"Component":"$19","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@1a","$@1b"]}}],null,["$","$L1c",null,{"children":["$","$1d",null,{"name":"Next.MetadataOutlet","children":"$@1e"}]}]]}],"p":false,"v":null}}]]
|
|
34
34
|
15:[["children",{"s":"profile","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$14"},"c":"$Q16"}]]
|
|
35
35
|
13:[["children",{"s":"dashboard","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$14"},"c":"$Q15"}]]
|
|
36
36
|
11:[["children",{"s":"(dashboard)","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$L12",null,{"children":["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:style","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":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}],"p":false,"v":null},"c":"$Q13"}]]
|
|
37
|
-
0:{"P":null,"c":["","dashboard","profile"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad3cadf3cb03edcb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/
|
|
37
|
+
0:{"P":null,"c":["","dashboard","profile"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad3cadf3cb03edcb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/841943e9a30fe5cd.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","$L5",null,{"id":"theme-bootstrap","strategy":"beforeInteractive","dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","$L5",null,{"id":"fonts-loaded-bootstrap","strategy":"beforeInteractive","dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_d8ebd1 __variable_c219ed font-sans antialiased","children":[["$","$Lb",null,{"children":["$","$Ld",null,{"children":["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L10",null,{"gaId":"G-LC959F603F"}]]}]]}]]}],"p":false,"v":null},"c":"$Q11"},"h":{"r":["$","$1","h",{"children":[null,["$","$L20",null,{"children":"$L21"}],["$","$L23",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$1d",null,{"name":"Next.Metadata","children":"$L24"}]}],null]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"p":false,"v":null}},"m":"$undefined","G":["$25",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"SaAkC7sXHdEDKHids4PIF"}
|
|
38
38
|
14:C
|
|
39
39
|
1a:{}
|
|
40
40
|
1b:"$16:0:1:d:r:props:children:0:props:serverProvidedParams:params"
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:"static/chunks/3488-fd2f0bdef1a1217a.js"
|
|
3
3
|
3:"static/chunks/2470-e9f1fd5f21c43fac.js"
|
|
4
|
-
4:"static/chunks/app/layout-
|
|
4
|
+
4:"static/chunks/app/layout-cd4efdfec7b51ca9.js"
|
|
5
5
|
5:I[42593,["3488","$2","2470","$3","7177","$4"],""]
|
|
6
6
|
6:"static/chunks/763-64b80a1ab0aa3cfc.js"
|
|
7
7
|
7:"static/chunks/705-c8a7b6dfca9ca382.js"
|
|
8
8
|
8:"static/chunks/3557-437defff109ccb42.js"
|
|
9
|
-
9:"static/chunks/5497-
|
|
10
|
-
a:"static/chunks/app/(dashboard)/layout-
|
|
9
|
+
9:"static/chunks/5497-bd4f9f37c29968bd.js"
|
|
10
|
+
a:"static/chunks/app/(dashboard)/layout-18c2613dd78ff66f.js"
|
|
11
11
|
b:I[21110,["763","$6","2470","$3","705","$7","3557","$8","5497","$9","9305","$a"],"ThemeProvider"]
|
|
12
12
|
c:"RuntimeI18nProvider"
|
|
13
13
|
d:I[94635,["3488","$2","2470","$3","7177","$4"],"$c"]
|
|
@@ -26,7 +26,7 @@ f:I[74581,[],""]
|
|
|
26
26
|
28:I[90484,[],"$27"]
|
|
27
27
|
29:I[86869,[],"IconMark"]
|
|
28
28
|
:HL["/_next/static/css/ad3cadf3cb03edcb.css","style"]
|
|
29
|
-
:HL["/_next/static/css/
|
|
29
|
+
:HL["/_next/static/css/841943e9a30fe5cd.css","style"]
|
|
30
30
|
12:X
|
|
31
31
|
18:X
|
|
32
32
|
18:C
|
|
@@ -34,7 +34,7 @@ f:I[74581,[],""]
|
|
|
34
34
|
19:[["children",{"s":"profile","h":96,"d":{"r":["$","$1","c",{"children":[null,["$","$Le",null,{"parallelRouterKey":"children","template":["$","$Lf",null,{}]}]]}],"p":"$@1a","v":"$18","s":"$12"},"c":"$Q1b"}]]
|
|
35
35
|
16:[["children",{"s":"dashboard","h":96,"d":{"r":["$","$1","c",{"children":[null,["$","$Le",null,{"parallelRouterKey":"children","template":["$","$Lf",null,{}]}]]}],"p":"$@17","v":"$18","s":"$12"},"c":"$Q19"}]]
|
|
36
36
|
13:[["children",{"s":"(dashboard)","h":96,"d":{"r":["$","$1","c",{"children":[null,["$","$L14",null,{"children":["$","$Le",null,{"parallelRouterKey":"children","template":["$","$Lf",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:style","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":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]]}]}]]}],"p":"$@15","v":null,"s":"$12"},"c":"$Q16"}]]
|
|
37
|
-
0:{"t":{"t":{"s":"","h":80,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad3cadf3cb03edcb.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/
|
|
37
|
+
0:{"t":{"t":{"s":"","h":80,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad3cadf3cb03edcb.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/841943e9a30fe5cd.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","$L5",null,{"id":"theme-bootstrap","strategy":"beforeInteractive","dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","$L5",null,{"id":"fonts-loaded-bootstrap","strategy":"beforeInteractive","dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_d8ebd1 __variable_c219ed font-sans antialiased","children":[["$","$Lb",null,{"children":["$","$Ld",null,{"children":["$","$Le",null,{"parallelRouterKey":"children","template":["$","$Lf",null,{}],"notFound":[[["$","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."}]}]]}]}]],[]]}]}]}],["$","$L10",null,{"gaId":"G-LC959F603F"}]]}]]}]]}],"p":"$@11","v":null,"s":"$12"},"c":"$Q13"},"h":{"r":["$","$1","h",{"children":[null,["$","$L26",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]}],["$","$L28",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$22",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"KeyRouter - 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"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?603d046c9a6fdfbb","type":"image/x-icon","sizes":"16x16"}],["$","link","4",{"rel":"icon","href":"/favicon.svg"}],["$","$L29","5",{}]]}]}],null]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"p":"$@2a","v":null,"s":"$12"}},"a":"$@2b","u":"$@2c","b":"SaAkC7sXHdEDKHids4PIF"}
|
|
38
38
|
1f:{}
|
|
39
39
|
20:"$1b:0:1:d:r:props:children:0:props:serverProvidedParams:params"
|
|
40
40
|
23:null
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:"static/chunks/3488-fd2f0bdef1a1217a.js"
|
|
3
3
|
3:"static/chunks/2470-e9f1fd5f21c43fac.js"
|
|
4
|
-
4:"static/chunks/app/layout-
|
|
4
|
+
4:"static/chunks/app/layout-cd4efdfec7b51ca9.js"
|
|
5
5
|
5:I[42593,["3488","$2","2470","$3","7177","$4"],""]
|
|
6
6
|
6:"static/chunks/763-64b80a1ab0aa3cfc.js"
|
|
7
7
|
7:"static/chunks/705-c8a7b6dfca9ca382.js"
|
|
8
8
|
8:"static/chunks/3557-437defff109ccb42.js"
|
|
9
|
-
9:"static/chunks/5497-
|
|
10
|
-
a:"static/chunks/app/(dashboard)/layout-
|
|
9
|
+
9:"static/chunks/5497-bd4f9f37c29968bd.js"
|
|
10
|
+
a:"static/chunks/app/(dashboard)/layout-18c2613dd78ff66f.js"
|
|
11
11
|
b:I[21110,["763","$6","2470","$3","705","$7","3557","$8","5497","$9","9305","$a"],"ThemeProvider"]
|
|
12
12
|
c:"RuntimeI18nProvider"
|
|
13
13
|
d:I[94635,["3488","$2","2470","$3","7177","$4"],"$c"]
|
|
@@ -28,13 +28,13 @@ f:I[74581,[],""]
|
|
|
28
28
|
:HL["/_next/static/media/36966cca54120369-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
29
29
|
:HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
30
30
|
:HL["/_next/static/css/ad3cadf3cb03edcb.css","style"]
|
|
31
|
-
:HL["/_next/static/css/
|
|
31
|
+
:HL["/_next/static/css/841943e9a30fe5cd.css","style"]
|
|
32
32
|
14:X
|
|
33
33
|
16:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$L17",null,{"Component":"$19","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@1a","$@1b"]}}],null,["$","$L1c",null,{"children":["$","$1d",null,{"name":"Next.MetadataOutlet","children":"$@1e"}]}]]}],"p":false,"v":null}}]]
|
|
34
34
|
15:[["children",{"s":"profile","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$14"},"c":"$Q16"}]]
|
|
35
35
|
13:[["children",{"s":"dashboard","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$14"},"c":"$Q15"}]]
|
|
36
36
|
11:[["children",{"s":"(dashboard)","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$L12",null,{"children":["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:style","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":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}],"p":false,"v":null},"c":"$Q13"}]]
|
|
37
|
-
0:{"P":null,"c":["","dashboard","profile"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad3cadf3cb03edcb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/
|
|
37
|
+
0:{"P":null,"c":["","dashboard","profile"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad3cadf3cb03edcb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/841943e9a30fe5cd.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","$L5",null,{"id":"theme-bootstrap","strategy":"beforeInteractive","dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","$L5",null,{"id":"fonts-loaded-bootstrap","strategy":"beforeInteractive","dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_d8ebd1 __variable_c219ed font-sans antialiased","children":[["$","$Lb",null,{"children":["$","$Ld",null,{"children":["$","$Le",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lf",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L10",null,{"gaId":"G-LC959F603F"}]]}]]}]]}],"p":false,"v":null},"c":"$Q11"},"h":{"r":["$","$1","h",{"children":[null,["$","$L20",null,{"children":"$L21"}],["$","$L23",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$1d",null,{"name":"Next.Metadata","children":"$L24"}]}],null]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"p":false,"v":null}},"m":"$undefined","G":["$25",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"SaAkC7sXHdEDKHids4PIF"}
|
|
38
38
|
14:C
|
|
39
39
|
1a:{}
|
|
40
40
|
1b:"$16:0:1:d:r:props:children:0:props:serverProvidedParams:params"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
:HL["/_next/static/media/36966cca54120369-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
2
2
|
:HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
3
3
|
:HL["/_next/static/css/ad3cadf3cb03edcb.css","style"]
|
|
4
|
-
:HL["/_next/static/css/
|
|
4
|
+
:HL["/_next/static/css/841943e9a30fe5cd.css","style"]
|
|
5
5
|
4:[["children",{"s":"__PAGE__","h":160}]]
|
|
6
6
|
3:[["children",{"s":"profile","h":96,"c":"$Q4"}]]
|
|
7
7
|
2:[["children",{"s":"dashboard","h":96,"c":"$Q3"}]]
|
|
8
8
|
1:[["children",{"s":"(dashboard)","h":96,"c":"$Q2"}]]
|
|
9
|
-
0:{"b":"
|
|
9
|
+
0:{"b":"SaAkC7sXHdEDKHids4PIF","t":{"t":{"s":"","h":80,"c":"$Q1"}}}
|