@yina-npm/openrouterx 0.4.28 → 0.4.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +13 -2
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/routes-manifest.json +70 -0
- package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/focus-ui/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +13 -13
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/network-analysis/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/user/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/user/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +5 -6
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +5 -6
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +5 -6
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -4
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/logout/route.js +1 -1
- package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/me/route.js +1 -1
- package/app/.next/server/app/api/auth/me/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -0
- package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -0
- package/app/.next/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/auth/oidc/start/route.js +1 -0
- package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -0
- package/app/.next/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/auth/oidc/test/route.js +1 -0
- package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -0
- package/app/.next/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/auth/status/route.js +1 -0
- package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -0
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js +9 -0
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -0
- package/app/.next/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/inject-auth/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/restart/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/test/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -0
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -0
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -32
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -0
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -0
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -0
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -0
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/health/route.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/locale/route.js +1 -1
- package/app/.next/server/app/api/mcp/[plugin]/message/route.js +7 -0
- package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -0
- package/app/.next/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +10 -0
- package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -0
- package/app/.next/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/custom/route.js +1 -1
- package/app/.next/server/app/api/models/disabled/route.js +1 -1
- package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/test/route.js +1 -1
- package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/network-analysis/route.js +2 -2
- package/app/.next/server/app/api/network-analysis/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next/server/app/api/settings/database/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-login/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/api-keys/route.js +1 -1
- package/app/.next/server/app/api/usage/api-keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/chart/route.js +1 -1
- package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/providers/route.js +1 -1
- package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stats/route.js +1 -1
- package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +2 -2
- package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/users/[id]/route.js +1 -1
- package/app/.next/server/app/api/users/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/users/route.js +1 -1
- package/app/.next/server/app/api/users/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/route.js +1 -1
- package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/shutdown/route.js +1 -0
- package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -0
- package/app/.next/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/version/update/route.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +6 -7
- package/app/.next/server/app/callback.segments/_full.segment.rsc +6 -7
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +5 -6
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +3 -4
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +5 -6
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -6
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -6
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/favicon.ico/route.js +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +5 -6
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +5 -6
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +5 -6
- package/app/.next/server/app/index.segments/_tree.segment.rsc +3 -4
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +5 -6
- package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -6
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +5 -6
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +3 -4
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +6 -7
- package/app/.next/server/app/login.segments/_full.segment.rsc +6 -7
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +5 -6
- package/app/.next/server/app/login.segments/_tree.segment.rsc +3 -4
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +13 -2
- package/app/.next/server/chunks/1263.js +2 -2
- package/app/.next/server/chunks/1350.js +7 -0
- package/app/.next/server/chunks/{2574.js → 2343.js} +1 -1
- package/app/.next/server/chunks/2506.js +4 -3
- package/app/.next/server/chunks/2560.js +1 -0
- package/app/.next/server/chunks/3110.js +1 -1
- package/app/.next/server/chunks/3593.js +9 -0
- package/app/.next/server/chunks/3855.js +1 -1
- package/app/.next/server/chunks/3913.js +2 -2
- package/app/.next/server/chunks/412.js +5 -5
- package/app/.next/server/chunks/4126.js +1 -0
- package/app/.next/server/chunks/4739.js +9 -0
- package/app/.next/server/chunks/4922.js +9 -0
- package/app/.next/server/chunks/4989.js +2 -2
- package/app/.next/server/chunks/5217.js +9 -0
- package/app/.next/server/chunks/5258.js +9 -0
- package/app/.next/server/chunks/{7937.js → 5330.js} +4 -4
- package/app/.next/server/chunks/5434.js +1 -1
- package/app/.next/server/chunks/5573.js +1 -1
- package/app/.next/server/chunks/5627.js +7 -7
- package/app/.next/server/chunks/5681.js +1 -1
- package/app/.next/server/chunks/5789.js +1 -0
- package/app/.next/server/chunks/{8838.js → 6001.js} +1 -1
- package/app/.next/server/chunks/6182.js +36 -2
- package/app/.next/server/chunks/63.js +3 -3
- package/app/.next/server/chunks/6393.js +1 -0
- package/app/.next/server/chunks/6936.js +1 -0
- package/app/.next/server/chunks/723.js +44 -0
- package/app/.next/server/chunks/7540.js +1 -0
- package/app/.next/server/chunks/7568.js +1 -0
- package/app/.next/server/chunks/7595.js +1 -1
- package/app/.next/server/chunks/8520.js +9 -0
- package/app/.next/server/chunks/8590.js +1 -1
- package/app/.next/server/chunks/8760.js +1 -1
- package/app/.next/server/chunks/8895.js +4 -4
- package/app/.next/server/chunks/8971.js +1 -0
- package/app/.next/server/chunks/906.js +1 -0
- package/app/.next/server/chunks/9460.js +1 -0
- package/app/.next/server/chunks/9489.js +1 -1
- package/app/.next/server/chunks/9528.js +32 -0
- package/app/.next/server/chunks/9546.js +1 -0
- package/app/.next/server/chunks/9609.js +1 -1
- package/app/.next/server/chunks/9641.js +1 -1
- package/app/.next/server/chunks/9718.js +1 -1
- package/app/.next/server/functions-config-manifest.json +2 -0
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware.js +2 -2
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/BuJLCErn-QhhM6_1rkOm9/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1321-4d97c0c20625b433.js +1 -0
- package/app/.next/static/chunks/5497-83030cc3d92a3519.js +7 -0
- package/app/.next/static/chunks/5555-fe35208b285372b6.js +3 -0
- package/app/.next/static/chunks/5964-87a3fc549eda915f.js +44 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/keys/{page-e7d9455fb9021069.js → page-0b0deda6732f2c17.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-78953d3b1df0d645.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-c86af5c8f255b3b1.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-e6ab107aa0c88255.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/focus-ui/page-0e1c6e92394e082a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-c77fedcd9ba7bcac.js → page-43a004ab7a9b604a.js} +12 -12
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-d7972070450d7abc.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-4473f52ad379b661.js → page-320446d3e8bf8cdf.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-653d43b972894dc8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-bafdc36ddde43d0d.js +3 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-d799365a8ef51d37.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-4319007c3ca0a634.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/{layout-7ea5a7abc543b04d.js → layout-f01d55c89fabcb07.js} +1 -1
- package/app/.next/static/chunks/app/_global-error/page-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/me/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/callback/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/start/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/test/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/inject-auth/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/restart/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/test/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/network-analysis/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/api-keys/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/users/[id]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/users/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/version/shutdown/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/callback/page-612232d68e5ef104.js +1 -0
- package/app/.next/static/chunks/app/layout-e2bc0634eb8e25c2.js +1 -0
- package/app/.next/static/chunks/app/login/page-618b0ac3d3cefbb3.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/app/page-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-1172e1764d69e954.js +1 -0
- package/app/.next/static/chunks/{webpack-d1740476c6ab968a.js → webpack-786de0e184ffd859.js} +1 -1
- package/app/.next/static/css/{081a0afca5a9bd20.css → 2e1b7d528c228ec3.css} +1 -1
- package/app/.next/static/css/d0e6cedf3e986854.css +1 -0
- package/app/.next/static/media/material-symbols-outlined.1060ac06.woff2 +0 -0
- package/app/package.json +2 -1
- package/app/public/i18n/literals/ar.json +2 -1
- package/app/public/i18n/literals/bn.json +2 -1
- package/app/public/i18n/literals/cs.json +2 -1
- package/app/public/i18n/literals/da.json +2 -1
- package/app/public/i18n/literals/de.json +2 -1
- package/app/public/i18n/literals/el.json +2 -1
- package/app/public/i18n/literals/es.json +2 -1
- package/app/public/i18n/literals/fi.json +2 -1
- package/app/public/i18n/literals/fr.json +2 -1
- package/app/public/i18n/literals/he.json +2 -1
- package/app/public/i18n/literals/hi.json +2 -1
- package/app/public/i18n/literals/hu.json +2 -1
- package/app/public/i18n/literals/id.json +2 -1
- package/app/public/i18n/literals/it.json +2 -1
- package/app/public/i18n/literals/ja.json +2 -1
- package/app/public/i18n/literals/ko.json +2 -1
- package/app/public/i18n/literals/nl.json +2 -1
- package/app/public/i18n/literals/no.json +2 -1
- package/app/public/i18n/literals/pl.json +2 -1
- package/app/public/i18n/literals/pt-BR.json +2 -1
- package/app/public/i18n/literals/pt-PT.json +2 -1
- package/app/public/i18n/literals/ro.json +2 -1
- package/app/public/i18n/literals/ru.json +2 -1
- package/app/public/i18n/literals/sv.json +2 -1
- package/app/public/i18n/literals/th.json +2 -1
- package/app/public/i18n/literals/tl.json +2 -1
- package/app/public/i18n/literals/tr.json +2 -1
- package/app/public/i18n/literals/uk.json +2 -1
- package/app/public/i18n/literals/ur.json +2 -1
- package/app/public/i18n/literals/vi.json +2 -1
- package/app/public/i18n/literals/zh-CN.json +124 -2
- package/app/public/i18n/literals/zh-TW.json +2 -1
- package/app/src/lib/db/adapters/betterSqliteAdapter.js +55 -0
- package/app/src/lib/db/adapters/bunSqliteAdapter.js +63 -0
- package/app/src/lib/db/adapters/nodeSqliteAdapter.js +84 -0
- package/app/src/lib/db/adapters/sqljsAdapter.js +115 -0
- package/app/src/lib/db/migrate.js +248 -0
- package/app/src/lib/updater/updater.js +25 -0
- package/app/src/mitm/cert/install.js +53 -3
- package/app/src/mitm/dbReader.js +22 -0
- package/app/src/mitm/dns/dnsConfig.js +37 -8
- package/app/src/mitm/manager.js +3 -0
- package/app/src/mitm/paths.js +1 -0
- package/app/src/mitm/server.js +3 -7
- package/cli.js +148 -18
- package/package.json +1 -1
- package/app/.next/server/chunks/2417.js +0 -1
- package/app/.next/server/chunks/2549.js +0 -1
- package/app/.next/server/chunks/3605.js +0 -1
- package/app/.next/server/chunks/4122.js +0 -1
- package/app/.next/server/chunks/5296.js +0 -1
- package/app/.next/server/chunks/6184.js +0 -1
- package/app/.next/server/chunks/6774.js +0 -1
- package/app/.next/server/chunks/7861.js +0 -1
- package/app/.next/server/chunks/9547.js +0 -28
- package/app/.next/static/chunks/1321-38758d19993d62bf.js +0 -1
- package/app/.next/static/chunks/2336-cef968b5640a96f8.js +0 -28
- package/app/.next/static/chunks/5497-2ef9901a04eb9472.js +0 -7
- package/app/.next/static/chunks/5555-595382d9c4d118fe.js +0 -3
- package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-adc5d5e8da3a0761.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-a4b2b832a4892e6d.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-bd677c182bc2aae9.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/focus-ui/page-74a4a20467839a51.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7cf63e1a3a8adecd.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ceb9bffbc34711bc.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-aa4cac34e6e605a5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-a0419a964a084f76.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-c41fbdb17b88c549.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/auth/me/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/inject-auth/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/restart/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/test/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/health/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/models/custom/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/models/disabled/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/network-analysis/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/disable/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/enable/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/status/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/api-keys/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/users/[id]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/users/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/info/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/search/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/api/version/update/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/callback/page-ca2aafefd1c72edc.js +0 -1
- package/app/.next/static/chunks/app/layout-88b42fda4d7c38d2.js +0 -1
- package/app/.next/static/chunks/app/login/page-cfe122b0047956eb.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/app/page-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-e967880631a99483.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e967880631a99483.js +0 -1
- package/app/.next/static/css/90eec4fabec62f30.css +0 -1
- package/app/.next/static/uJKVggqia7KT98gdWEdVM/_buildManifest.js +0 -1
- /package/app/.next/static/{uJKVggqia7KT98gdWEdVM → BuJLCErn-QhhM6_1rkOm9}/_ssgManifest.js +0 -0
package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-78953d3b1df0d645.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6434],{17169:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>u});var t=a(95155),r=a(12115),n=a(35497),l=a(52679);let o=["codex","alicode"];function i(e){return Array.isArray(e)?Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]}function d(e,s=o){return e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,"allowedProviders")?i(e.allowedProviders):i(s)}function c(e){var s;return e&&"object"==typeof e&&Array.isArray(e.allowedProviderConnectionIds)?Array.isArray(s=e.allowedProviderConnectionIds)?Array.from(new Set(s.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]:null}function u(){let[e,s]=(0,r.useState)([]),[a,o]=(0,r.useState)([]),[i,u]=(0,r.useState)(!0),[v,w]=(0,r.useState)(!1),[g,b]=(0,r.useState)({username:"",password:"",displayName:"",role:"sub_user",permissions:[],allowedProviders:[],allowedProviderConnectionIds:[],showQuotaTracker:!0,codexFastMode:!1}),[j,y]=(0,r.useState)(!1),[N,C]=(0,r.useState)(""),[k,P]=(0,r.useState)(null),[T,S]=(0,r.useState)({displayName:"",role:"",permissions:[],allowedProviders:[],allowedProviderConnectionIds:[],showQuotaTracker:!0,codexFastMode:!1,password:""}),[M,A]=(0,r.useState)(null);async function I(){u(!0);try{let[e,a,t]=await Promise.all([fetch("/api/users"),fetch("/api/providers"),fetch("/api/provider-nodes")]),r=await e.json(),n=await a.json(),i=await t.json();s(r.users||[]),o(function(e,s){let a=new Map((s||[]).map(e=>[e.id,e])),t=new Map;for(let s of e||[]){let e=s?.provider;if(!e)continue;let r=l.Q2[e],n=a.get(e),o=n?({"openai-compatible":"OpenAI Compatible","anthropic-compatible":"Anthropic Compatible","custom-embedding":"Custom Embedding","custom-image":"Custom Image"})[n.type]||"Custom Provider":null;t.has(e)||t.set(e,{id:e,label:n?`${n.name||n.prefix||e} (${o})`:r?.name||s.name||e,defaultEnabled:!0,accounts:[]}),t.get(e).accounts.push({id:s.id,label:s.displayName||s.name||s.email||s.id,isActive:!1!==s.isActive})}return Array.from(t.values()).map(e=>({...e,accounts:e.accounts.sort((e,s)=>e.label.localeCompare(s.label,"en"))})).sort((e,s)=>e.label.localeCompare(s.label,"en"))}(n.connections||[],i.nodes||[]))}finally{u(!1)}}async function $(e){e.preventDefault(),C(""),y(!0);try{let e=await fetch("/api/users",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...g,providerThinking:h(g.codexFastMode)})}),s=await e.json();if(!e.ok)return void C(s.error||"Failed");w(!1),b({username:"",password:"",displayName:"",role:"sub_user",permissions:[],allowedProviders:p(a),allowedProviderConnectionIds:m(a),showQuotaTracker:!0,codexFastMode:!1}),I()}catch{C("Network error")}finally{y(!1)}}async function F(e){e.preventDefault(),y(!0);try{let e={displayName:T.displayName,role:T.role,permissions:T.permissions,allowedProviders:T.allowedProviders,allowedProviderConnectionIds:T.allowedProviderConnectionIds,showQuotaTracker:T.showQuotaTracker,providerThinking:h(T.codexFastMode)};if(T.password&&(e.password=T.password),!(await fetch(`/api/users/${k.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok)return;P(null),I()}finally{y(!1)}}async function Q(e){await fetch(`/api/users/${e}`,{method:"DELETE"}),A(null),I()}(0,r.useEffect)(()=>{fetch("/api/auth/me").then(e=>e.json()).then(e=>{"super_admin"!==e.role?window.location.href="/dashboard/usage":I()}).catch(()=>{window.location.href="/dashboard/usage"})},[]);let O=["view_usage","view_logs","view_keys","manage_own_keys"],_=(e,s)=>{s(s=>{var t,r;let n=s.allowedProviders.includes(e),l=(t=a,r=e,t.find(e=>e.id===r)?.accounts?.map(e=>e.id)||[]);return{...s,allowedProviders:n?s.allowedProviders.filter(s=>s!==e):[...s.allowedProviders,e],allowedProviderConnectionIds:n?s.allowedProviderConnectionIds.filter(e=>!l.includes(e)):Array.from(new Set([...s.allowedProviderConnectionIds,...l]))}})},E=(e,s,a)=>{a(a=>{let t=a.allowedProviderConnectionIds.includes(s)?a.allowedProviderConnectionIds.filter(e=>e!==s):[...a.allowedProviderConnectionIds,s],r=a.allowedProviders.includes(e)?a.allowedProviders:[...a.allowedProviders,e];return{...a,allowedProviders:r,allowedProviderConnectionIds:t}})};return(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-2xl font-bold",children:"User Management"}),(0,t.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Manage sub-users and their permissions"})]}),(0,t.jsx)(n.$n,{onClick:()=>{b({username:"",password:"",displayName:"",role:"sub_user",permissions:[],allowedProviders:p(a),allowedProviderConnectionIds:m(a),showQuotaTracker:!0,codexFastMode:!1}),C(""),w(!0)},children:"+ Add Sub-user"})]}),i?(0,t.jsx)("p",{className:"text-text-muted",children:"Loading..."}):0===e.length?(0,t.jsx)(n.Zp,{children:(0,t.jsx)("p",{className:"text-text-muted text-center py-8",children:"No sub-users yet. Create one to get started."})}):(0,t.jsx)("div",{className:"space-y-3",children:e.map(e=>{var s,r;let l,o,i;return(0,t.jsxs)(n.Zp,{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center text-primary font-semibold text-lg",children:e.displayName?.charAt(0)?.toUpperCase()||e.username?.charAt(0)?.toUpperCase()}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-semibold",children:e.displayName}),(0,t.jsxs)("p",{className:"text-sm text-text-muted",children:["@",e.username," \xb7 ",e.role]})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-surface-alt text-text-muted",children:e.permissions?.join(", ")||"no perms"}),(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-primary/10 text-primary",children:function(e,s){let a=new Map(s.map(e=>[e.id,e.label])),t=d(e,p(s));if(0===t.length)return"No providers enabled";let r=t.map(e=>a.get(e)||e);return r.length<=2?r.join(", "):`${r.slice(0,2).join(", ")} +${r.length-2}`}(e,a)}),(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-surface-alt text-text-muted",children:(l=new Set(d(s=e,p(r=a))),o=new Set(c(s)??x(s,r)),0===(i=r.filter(e=>l.has(e.id)).reduce((e,s)=>e+s.accounts.length,0))?"No accounts":`${o.size}/${i} accounts`)}),(0,t.jsx)("span",{className:`text-xs px-2 py-1 rounded-full ${!1!==e.showQuotaTracker?"bg-emerald-500/10 text-emerald-600":"bg-surface-alt text-text-muted"}`,children:!1!==e.showQuotaTracker?"Quota On":"Quota Off"}),(0,t.jsx)("span",{className:`text-xs px-2 py-1 rounded-full ${e.providerThinking?.codex?.fastMode===!0?"bg-orange-500/10 text-orange-600":"bg-surface-alt text-text-muted"}`,children:e.providerThinking?.codex?.fastMode===!0?"Fast On":"Fast Off"}),(0,t.jsx)(n.$n,{variant:"secondary",size:"sm",onClick:()=>{P(e),S({displayName:e.displayName,role:e.role,permissions:e.permissions||[],allowedProviders:d(e,p(a)),allowedProviderConnectionIds:c(e)??x(e,a),showQuotaTracker:!1!==e.showQuotaTracker,codexFastMode:e.providerThinking?.codex?.fastMode===!0,password:""})},children:"Edit"}),(0,t.jsx)(n.$n,{variant:"danger",size:"sm",onClick:()=>A(e),children:"Delete"})]})]},e.id)})}),v&&(0,t.jsx)(n.aF,{isOpen:v,title:"Create Sub-user",onClose:()=>w(!1),size:"full",children:(0,t.jsxs)("form",{onSubmit:$,className:"flex flex-col gap-4",children:[(0,t.jsx)(n.pd,{label:"Username",value:g.username,onChange:e=>b(s=>({...s,username:e.target.value})),required:!0}),(0,t.jsx)(n.pd,{label:"Display Name",value:g.displayName,onChange:e=>b(s=>({...s,displayName:e.target.value}))}),(0,t.jsx)(n.pd,{label:"Password",type:"password",value:g.password,onChange:e=>b(s=>({...s,password:e.target.value})),required:!0}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium mb-2",children:"Permissions"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:O.map(e=>(0,t.jsxs)("label",{className:"flex items-center gap-1.5 text-sm cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:g.permissions.includes(e),onChange:s=>b(a=>({...a,permissions:s.target.checked?[...a.permissions,e]:a.permissions.filter(s=>s!==e)}))}),e]},e))})]}),(0,t.jsx)(f,{providerOptions:a,selectedProviders:g.allowedProviders,selectedConnectionIds:g.allowedProviderConnectionIds,onToggle:e=>_(e,b),onToggleConnection:(e,s)=>E(e,s,b)}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:g.showQuotaTracker,onChange:e=>b(s=>({...s,showQuotaTracker:e.target.checked}))}),"Allow Quota Tracker for this sub-user"]}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:g.codexFastMode,onChange:e=>b(s=>({...s,codexFastMode:e.target.checked}))}),"Enable Codex Fast Mode for this sub-user"]}),N&&(0,t.jsx)("p",{className:"text-red-500 text-sm",children:N}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 mt-2",children:[(0,t.jsx)(n.$n,{variant:"secondary",type:"button",onClick:()=>w(!1),children:"Cancel"}),(0,t.jsx)(n.$n,{type:"submit",loading:j,children:"Create"})]})]})}),k&&(0,t.jsx)(n.aF,{isOpen:!!k,title:`Edit ${k.username}`,onClose:()=>P(null),size:"full",children:(0,t.jsxs)("form",{onSubmit:F,className:"flex flex-col gap-4",children:[(0,t.jsx)(n.pd,{label:"Display Name",value:T.displayName,onChange:e=>S(s=>({...s,displayName:e.target.value}))}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium mb-2",children:"Permissions"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:O.map(e=>(0,t.jsxs)("label",{className:"flex items-center gap-1.5 text-sm cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:T.permissions.includes(e),onChange:s=>S(a=>({...a,permissions:s.target.checked?[...a.permissions,e]:a.permissions.filter(s=>s!==e)}))}),e]},e))})]}),(0,t.jsx)(f,{providerOptions:a,selectedProviders:T.allowedProviders,selectedConnectionIds:T.allowedProviderConnectionIds,onToggle:e=>_(e,S),onToggleConnection:(e,s)=>E(e,s,S)}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:T.showQuotaTracker,onChange:e=>S(s=>({...s,showQuotaTracker:e.target.checked}))}),"Allow Quota Tracker for this sub-user"]}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:T.codexFastMode,onChange:e=>S(s=>({...s,codexFastMode:e.target.checked}))}),"Enable Codex Fast Mode for this sub-user"]}),(0,t.jsx)(n.pd,{label:"New Password (leave blank to keep)",type:"password",value:T.password,onChange:e=>S(s=>({...s,password:e.target.value}))}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 mt-2",children:[(0,t.jsx)(n.$n,{variant:"secondary",type:"button",onClick:()=>P(null),children:"Cancel"}),(0,t.jsx)(n.$n,{type:"submit",loading:j,children:"Save"})]})]})}),M&&(0,t.jsxs)(n.aF,{isOpen:!!M,title:"Delete User",onClose:()=>A(null),children:[(0,t.jsxs)("p",{className:"mb-4",children:["Delete user ",(0,t.jsx)("strong",{children:M.username}),"? This cannot be undone."]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(n.$n,{variant:"secondary",onClick:()=>A(null),children:"Cancel"}),(0,t.jsx)(n.$n,{variant:"danger",onClick:()=>Q(M.id),children:"Delete"})]})]})]})}function p(e){let s=e.filter(e=>e.defaultEnabled).map(e=>e.id),a=e.map(e=>e.id),t=o.filter(e=>a.includes(e));return s.length>0?s:t.length>0?t:a}function m(e){return e.flatMap(e=>e.accounts.map(e=>e.id))}function x(e,s){let a=new Set(d(e,p(s)));return s.filter(e=>a.has(e.id)).flatMap(e=>e.accounts.map(e=>e.id))}function h(e){return{codex:{fastMode:!0===e}}}function f({providerOptions:e,selectedProviders:s,selectedConnectionIds:a,onToggle:r,onToggleConnection:n}){let l=new Set(s),o=new Set(a);return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium mb-2",children:"Allowed Providers & Accounts"}),0===e.length?(0,t.jsx)("p",{className:"text-xs text-text-muted",children:"Connect providers first, then assign them to this sub-user."}):(0,t.jsx)("div",{className:"flex flex-col gap-3",children:e.map(e=>(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-background p-3",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:l.has(e.id),onChange:()=>r(e.id)}),e.label]}),e.accounts.length>0&&(0,t.jsx)("div",{className:"mt-2 grid gap-1.5 pl-6 sm:grid-cols-2",children:e.accounts.map(s=>(0,t.jsxs)("label",{className:"flex min-w-0 items-center gap-1.5 text-xs text-text-muted cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",disabled:!l.has(e.id),checked:l.has(e.id)&&o.has(s.id),onChange:()=>n(e.id,s.id)}),(0,t.jsx)("span",{className:"truncate",children:s.label}),!s.isActive&&(0,t.jsx)("span",{className:"shrink-0 text-[10px] text-amber-600",children:"inactive"})]},s.id))})]},e.id))}),(0,t.jsx)("p",{className:"text-xs text-text-muted mt-2",children:"Only selected providers and selected provider accounts will be visible and usable for this sub-user."})]})}},99139:(e,s,a)=>{Promise.resolve().then(a.bind(a,17169))}},e=>{e.O(0,[2574,3862,1051,1321,5497,8441,3794,7358],()=>e(e.s=99139)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4465],{58158:(e,t,r)=>{Promise.resolve().then(r.bind(r,88512))},88512:(e,t,r)=>{"use strict";r.d(t,{default:()=>w});var a=r(95155),s=r(12115),i=r(35497),l=r(28777),n=r(52679);let o="basic-chat.sessions",d="basic-chat.activeSessionId",c="basic-chat.activeProviderId",m="basic-chat.draft";function u(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function h(e,t){try{return JSON.parse(e)}catch{return t}}function p(e){if("string"==typeof e)return e;if(null==e)return"";if(Array.isArray(e))return e.map(p).filter(Boolean).join(" ");if("object"==typeof e){if("string"==typeof e.message)return e.message;if("string"==typeof e.error)return e.error;try{return JSON.stringify(e)}catch{}}return String(e)}function x(e=""){let t=p(e).replace(/\s+/g," ").trim();return t?t.length>52?`${t.slice(0,52).trimEnd()}…`:t:"New chat"}async function f(e){return await new Promise((t,r)=>{let a=new FileReader;a.onload=()=>t(String(a.result||"")),a.onerror=()=>r(a.error||Error("Failed to read file")),a.readAsDataURL(e)})}function g(e){return e?.name||function(e=""){return String(e).replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim()||"Unknown"}(e?.provider||e?.id||"provider")}function w(){let[e,t]=(0,s.useState)([]),[r,w]=(0,s.useState)(!0),[b,v]=(0,s.useState)(""),[y,N]=(0,s.useState)(()=>{try{let e=h(globalThis.localStorage.getItem(o),[]);return Array.isArray(e)?e.map(e=>({...e,messages:Array.isArray(e.messages)?e.messages:[]})):[]}catch{return[]}}),[j,S]=(0,s.useState)(()=>globalThis.localStorage.getItem(d)||""),[I,A]=(0,s.useState)(()=>globalThis.localStorage.getItem(c)||""),[k,D]=(0,s.useState)(""),[O,T]=(0,s.useState)(()=>globalThis.localStorage.getItem(m)||""),[$,_]=(0,s.useState)([]),[C,M]=(0,s.useState)(!1),[E,U]=(0,s.useState)(""),[R,z]=(0,s.useState)(""),[q,P]=(0,s.useState)(!1),[J,B]=(0,s.useState)(!1),[F,K]=(0,s.useState)(!1),L=(0,s.useRef)(null),W=(0,s.useRef)(null),H=(0,s.useRef)(!1),Y=(0,s.useRef)(null),G=(0,s.useRef)(null);(0,s.useEffect)(()=>{fetch("/api/auth/me").then(e=>e.json()).then(e=>{"sub_user"===e.role&&(window.location.href="/dashboard/usage")}).catch(()=>{});try{let e=h(globalThis.localStorage.getItem(o),[]);N(Array.isArray(e)?e.map(e=>({...e,messages:Array.isArray(e.messages)?e.messages:[]})):[]),S(globalThis.localStorage.getItem(d)||""),A(globalThis.localStorage.getItem(c)||""),T(globalThis.localStorage.getItem(m)||"")}catch{}finally{P(!0)}},[]),(0,s.useEffect)(()=>{let e=!1;return async function(){w(!0),v("");try{let r=await fetch("/api/providers",{cache:"no-store"}),a=await r.json().catch(()=>({})),s=Array.isArray(a.connections)?a.connections.filter(e=>e?.isActive!==!1):[];if(0===s.length){e||(t([]),v("No providers connected yet."));return}let i=new Map;for(let e of s){let t=e.provider||e.id,r=g(e),a=(0,n.mq)(t)?"openai-compatible":(0,n.gb)(t)?"anthropic-compatible":t;i.has(t)||i.set(t,{providerId:t,providerName:r,providerType:a,connections:[],models:[]});let s=i.get(t);s.providerName=s.providerName||r,s.providerType=s.providerType||a,s.connections.push(e);let o=(0,l.KC)(t).map(t=>t?.id?{id:`${e.provider}/${t.id}`,requestModel:`${e.provider}/${t.id}`,name:t.name||t.id,providerId:e.provider,providerName:g(e),source:"static"}:null).filter(Boolean);s.models.push(...o)}for(let e of(await Promise.all(s.map(async e=>{try{let t=await fetch(`/api/providers/${e.id}/models`,{cache:"no-store"}),r=await t.json().catch(()=>({}));if(!t.ok)return{connection:e,models:[]};let a=(Array.isArray(r?.models)?r.models:Array.isArray(r?.data)?r.data:Array.isArray(r?.results)?r.results:Array.isArray(r)?r:[]).map(t=>(function(e,t){let r="string"==typeof e?e:e?.id||e?.name||e?.model||"";if(!r)return null;let a="string"==typeof e?e:e?.name||e?.displayName||r,s=r;return((0,n.mq)(t.provider)||(0,n.gb)(t.provider))&&!r.includes("/")&&(s=`${t.provider}/${r}`),{id:s,requestModel:s,name:a,providerId:t.provider,providerName:g(t),source:"live"}})(t,e)).filter(Boolean);return{connection:e,models:a}}catch{return{connection:e,models:[]}}})))){let t=e.connection.provider||e.connection.id,r=i.get(t);r&&r.models.push(...e.models)}let o=Array.from(i.values()).map(e=>({...e,models:(function(e){let t=new Map;for(let r of e)r?.id&&(t.has(r.id)||t.set(r.id,r));return Array.from(t.values())})(e.models).sort((e,t)=>e.name.localeCompare(t.name))})).filter(e=>e.models.length>0).sort((e,t)=>e.providerName.localeCompare(t.providerName));e||(t(o),0===o.length&&v("Providers connected but no models available."))}catch(r){e||(v(p(r?.message)||"Failed to load providers/models."),t([]))}finally{e||w(!1)}}(),()=>{e=!0}},[]),(0,s.useEffect)(()=>{let e=e=>{Y.current&&!Y.current.contains(e.target)&&B(!1),G.current&&!G.current.contains(e.target)&&K(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let Q=(0,s.useMemo)(()=>{let t=new Map;for(let r of e)for(let e of r.models)t.set(e.id,{...e,providerId:r.providerId,providerName:r.providerName});return t},[e]),V=(0,s.useMemo)(()=>e.find(e=>e.providerId===I)||e[0]||null,[e,I]),X=(0,s.useMemo)(()=>{if(k&&Q.has(k))return Q.get(k);if(j){let e=y.find(e=>e.id===j);if(e?.modelId&&Q.has(e.modelId))return Q.get(e.modelId)}return V?.models?.[0]||null},[k,Q,V,y,j]),Z=(0,s.useMemo)(()=>y.find(e=>e.id===j)||null,[y,j]),ee=Z?.messages||[],et=(0,s.useMemo)(()=>[...y].sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()),[y]),er=!C&&!!X&&(O.trim().length>0||$.length>0);(0,s.useEffect)(()=>{if(q)try{globalThis.localStorage.setItem(o,JSON.stringify(y)),globalThis.localStorage.setItem(d,j),globalThis.localStorage.setItem(c,I),globalThis.localStorage.setItem(m,O)}catch{}},[q,y,j,I,O]),(0,s.useEffect)(()=>{if(!q||r||H.current||0===e.length)return;let t=e.find(e=>e.providerId===I)||e[0],a=k&&Q.has(k)?Q.get(k):t.models[0];if(y.length>0){let e=y.find(e=>e.id===j)||y[0],r=e?.modelId&&Q.has(e.modelId)?Q.get(e.modelId):a;H.current=!0,S(e.id),A(r?.providerId||t.providerId),D(r?.id||a.id);return}let s={id:u(),title:"New chat",providerId:t.providerId,providerName:t.providerName,modelId:a.id,modelName:a.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]};H.current=!0,N([s]),S(s.id),A(t.providerId),D(a.id)},[q,r,e,Q,y,j,I,k]);let ea=(e,t)=>{N(r=>r.map(r=>r.id===e?t({...r,messages:Array.isArray(r.messages)?r.messages.map(e=>({...e})):[]}):r))},es=e=>e?{id:u(),title:"New chat",providerId:e.providerId,providerName:e.providerName,modelId:e.id,modelName:e.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,ei=async e=>{let t=Array.from(e.target.files||[]);if(0===t.length)return;let r=t.filter(e=>e.type.startsWith("image/"));if(0===r.length){e.target.value="";return}let a=await Promise.all(r.map(async e=>({id:u(),name:e.name,type:e.type,size:e.size,dataUrl:await f(e)})));_(e=>[...e,...a]),e.target.value=""},el=async()=>{let e=X||V?.models?.[0]||null;if(!e)return;let t=O.trim();if(!t&&0===$.length)return;let r=j,a=y.find(e=>e.id===r);if(!a){if(!(a=es(e)))return;r=a.id,N(e=>[a,...e]),S(r)}let s={id:u(),role:"user",content:t,attachments:$.map(e=>({id:e.id,name:e.name,type:e.type,dataUrl:e.dataUrl})),createdAt:new Date().toISOString()},i=u(),l={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...a.messages||[],s,l];N(a=>a.map(a=>a.id===r?{...a,providerId:e.providerId,providerName:e.providerName,modelId:e.id,modelName:e.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===a.title?x(t):a.title}:a)),T(""),_([]),M(!0),U(i),z(""),W.current?.abort(),W.current=new AbortController;let o=n.filter(e=>"assistant"!==e.role||e.id!==i).map(e=>({role:e.role,content:"user"===e.role?function(e){let t=p(e.content).trim(),r=Array.isArray(e.attachments)?e.attachments:[];if(0===r.length)return t;let a=[];for(let e of(t&&a.push({type:"text",text:t}),r))e?.dataUrl&&a.push({type:"image_url",image_url:{url:e.dataUrl}});return a.length>0?a:t}(e):e.content}));try{var d;let a,s=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:e.requestModel||e.id,messages:o,stream:!0}),signal:W.current.signal});if(!s.ok){let e=await s.json().catch(()=>({}));throw Error(p(e.error||e.message||`Request failed (${s.status})`))}let l=s.body?.getReader();if(!l){let e=await s.json().catch(()=>({})),t=p(e?.choices?.[0]?.message?.content||e?.output_text||e?.error||e?.message||"");ea(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:t,status:"done"}:e),updatedAt:new Date().toISOString()}));return}let n=new TextDecoder,c="",m="";for(;;){let{value:e,done:t}=await l.read();if(t)break;let a=(c+=n.decode(e,{stream:!0})).split(/\r?\n/);for(let e of(c=a.pop()||"",a)){let t=e.trim();if(!t.startsWith("data:"))continue;let a=t.slice(5).trim();if(a&&"[DONE]"!==a)try{let e=JSON.parse(a),t=function(e){if(!e||"object"!=typeof e)return"";let t=e.choices?.[0];return[(t?.delta||{}).content,t?.message?.content,e.output_text,e.text].map(p).filter(Boolean)[0]||""}(e);if(!t)continue;m+=t,z(m),ea(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:m,status:"streaming"}:e),updatedAt:new Date().toISOString()}))}catch{}}}ea(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:m||e.content,status:"done"}:e),updatedAt:new Date().toISOString()})),d=r,a=x(t),ea(d,e=>({...e,title:"New chat"===e.title?a:e.title,updatedAt:new Date().toISOString()}))}catch(e){if("AbortError"!==e.name){let t=p(e?.message||e);ea(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:e.content||`Error: ${t}`,status:"error"}:e),updatedAt:new Date().toISOString()})),v(t||"Failed to send message.")}}finally{M(!1),U(""),z(""),W.current=null}},en=X?`${X.name}`:"Select model",eo=X?X.requestModel:"Choose from connected providers";return(0,a.jsx)("div",{className:"relative flex-1 flex flex-col h-full min-h-0 min-w-0 bg-[#212121] text-white overflow-hidden",children:(0,a.jsxs)("div",{className:"relative mx-auto flex flex-1 h-full min-h-0 w-full max-w-4xl flex-col",children:[(0,a.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 px-4 py-3 lg:px-6",children:[(0,a.jsxs)("div",{ref:Y,className:"relative",children:[(0,a.jsx)("button",{type:"button",onClick:()=>B(e=>!e),className:"flex items-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-left transition hover:bg-white/8",children:(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-sm font-semibold text-white",children:en}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-white/70",children:"expand_more"})]}),(0,a.jsx)("p",{className:"truncate text-xs text-white/55",children:eo})]})}),J?(0,a.jsxs)("div",{className:"absolute left-0 top-[calc(100%+10px)] z-30 w-[min(520px,calc(100vw-2rem))] overflow-hidden rounded-[20px] border border-white/10 bg-[#262626] shadow-2xl shadow-black/50",children:[(0,a.jsxs)("div",{className:"border-b border-white/10 px-4 py-3",children:[(0,a.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Models"}),(0,a.jsx)("p",{className:"text-sm text-white/75",children:"Only from connected providers"})]}),(0,a.jsx)("div",{className:"max-h-[60vh] overflow-y-auto p-2 custom-scrollbar",children:e.map(e=>(0,a.jsxs)("div",{className:"mb-2 rounded-[16px] border border-white/10 bg-black/20 p-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-2 py-2",children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-white",children:e.providerName}),(0,a.jsx)(i.Ex,{size:"sm",variant:"default",children:e.models.length})]}),(0,a.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:e.models.map(e=>{let t=e.id===k;return(0,a.jsx)("button",{type:"button",onClick:()=>(e=>{let t=Q.get(e);if(!t)return;let r=y.find(e=>e.id===j);if(r&&r.messages.length>0){let e=es(t);if(!e)return;N(t=>[e,...t]),S(e.id)}else if(r)N(e=>e.map(e=>e.id===r.id?{...e,providerId:t.providerId,providerName:t.providerName,modelId:t.id,modelName:t.name}:e)),S(r.id);else{let e=es(t);if(!e)return;N(t=>[e,...t]),S(e.id)}A(t.providerId),D(t.id),B(!1)})(e.id),className:`rounded-[14px] border px-3 py-3 text-left transition ${t?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"truncate text-sm font-medium text-white",children:e.name}),(0,a.jsx)("p",{className:"truncate text-[11px] text-white/45",children:e.requestModel})]}),t?(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-blue-300",children:"check_circle"}):null]})},e.id)})})]},e.providerId))})]}):null]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>K(e=>!e),className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 transition hover:bg-white/8",children:"History"}),(0,a.jsx)(i.$n,{variant:"ghost",size:"sm",icon:"delete",onClick:()=>{if(!j)return;let e=y.filter(e=>e.id!==j),t=e[0]||null;N(e),t?(S(t.id),A(t.providerId),D(t.modelId)):(S(""),A(""),D(""))},disabled:!j||0===y.length,children:"Clear"})]})]}),F?(0,a.jsxs)("div",{ref:G,className:"absolute right-4 top-[72px] z-20 w-[min(360px,calc(100vw-2rem))] rounded-[20px] border border-white/10 bg-[#262626] p-2 shadow-2xl shadow-black/50 lg:right-6",children:[(0,a.jsx)("div",{className:"px-3 py-2",children:(0,a.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Recent chats"})}),(0,a.jsx)("div",{className:"max-h-[48vh] space-y-2 overflow-y-auto p-1 custom-scrollbar",children:0===et.length?(0,a.jsx)("div",{className:"rounded-[16px] border border-dashed border-white/10 bg-white/5 p-4 text-sm text-white/55",children:"No conversations yet."}):et.map(e=>{let t=e.id===j,r=[...e.messages||[]].reverse().find(e=>"user"===e.role)||e.messages?.[0];return(0,a.jsx)("button",{type:"button",onClick:()=>{var t;let r;return t=e.id,void((r=y.find(e=>e.id===t))&&(S(t),A(r.providerId||I),D(r.modelId||k),K(!1)))},className:`w-full rounded-[16px] border px-3 py-3 text-left transition ${t?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"truncate text-sm font-medium text-white",children:e.title}),(0,a.jsx)("p",{className:"mt-1 truncate text-xs text-white/50",children:p(r?.content)||"Empty chat"})]}),(0,a.jsx)("span",{className:"text-[10px] text-white/40 shrink-0",children:function(e){if(!e)return"Now";let t=new Date(e).getTime();if(Number.isNaN(t))return"Now";let r=Math.max(1,Math.round((Date.now()-t)/6e4));if(r<60)return`${r}m`;let a=Math.round(r/60);return a<24?`${a}h`:`${Math.round(a/24)}d`}(e.updatedAt)})]})},e.id)})})]}):null,b?(0,a.jsx)("div",{className:"mt-4 rounded-[18px] border border-rose-500/20 bg-rose-500/10 px-4 py-3 text-rose-100",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"error"}),(0,a.jsx)("p",{className:"text-sm leading-6",children:b})]})}):null,(0,a.jsxs)("div",{className:"flex flex-1 flex-col min-h-0",children:[(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto py-4 custom-scrollbar",children:[0===ee.length?(0,a.jsx)("div",{className:"flex min-h-[50vh] items-center justify-center px-4 text-center",children:(0,a.jsxs)("div",{className:"max-w-xl space-y-4",children:[(0,a.jsx)("div",{className:"mx-auto flex size-16 items-center justify-center rounded-[20px] border border-white/10 bg-white/5 text-white/80",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[30px]",children:"chat"})}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("h2",{className:"text-2xl font-semibold text-white",children:"Start a conversation"}),(0,a.jsx)("p",{className:"text-sm leading-6 text-white/60",children:"Simple chat interface to interact with any AI model from connected providers. Select a model and start chatting!"})]})]})}):null,(0,a.jsx)("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-4 px-4",children:ee.map(e=>{let t="user"===e.role,r="assistant"===e.role,s=r&&e.id===E&&"streaming"===e.status,i=p(e.content)||(r?R:"");return(0,a.jsx)("div",{className:`flex w-full ${t?"justify-end":"justify-start"} mb-6`,children:(0,a.jsxs)("div",{className:`max-w-[min(88%,42rem)] ${t?"rounded-3xl bg-[#2f2f2f] px-5 py-3.5 text-white":"text-white/90"}`,children:[(0,a.jsx)("div",{className:"mb-1 flex items-center justify-between gap-3",children:(0,a.jsx)("span",{className:"text-xs font-semibold",children:t?"You":X?.name||"Assistant"})}),e.attachments?.length?(0,a.jsx)("div",{className:"mb-3 grid grid-cols-2 gap-2 sm:grid-cols-3 mt-2",children:e.attachments.map(e=>(0,a.jsx)("a",{href:e.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-[18px] border border-white/10 bg-black/20",children:(0,a.jsx)("img",{src:e.dataUrl,alt:e.name,className:"h-28 w-full object-cover"})},e.id))}):null,(0,a.jsxs)("div",{className:"whitespace-pre-wrap break-words text-[15px] leading-7",children:[i,r&&s&&!R?(0,a.jsx)("span",{className:"inline-block animate-pulse",children:"▋"}):null]})]})},e.id)})})]}),(0,a.jsxs)("div",{className:"shrink-0 pt-2",children:[$.length>0?(0,a.jsx)("div",{className:"mx-auto mb-3 flex w-full max-w-3xl flex-wrap gap-2 px-4",children:$.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2",children:[(0,a.jsx)("span",{className:"text-xs text-white/80 max-w-[12rem] truncate",children:e.name}),(0,a.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.id,void _(e=>e.filter(e=>e.id!==t))},className:"text-white/55 hover:text-white","aria-label":"Remove attachment",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]},e.id))}):null,(0,a.jsx)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-2",children:(0,a.jsxs)("div",{className:"rounded-[26px] bg-[#2f2f2f] px-3 pt-3 pb-2 shadow-[0_0_15px_rgba(0,0,0,0.10)] ring-1 ring-white/5",children:[(0,a.jsx)("textarea",{value:O,onChange:e=>T(e.target.value),onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),er&&el())},placeholder:"Message AI",rows:1,className:"w-full resize-none bg-transparent px-2 text-[15px] leading-6 text-white outline-none placeholder:text-white/40 custom-scrollbar max-h-[25vh] overflow-y-auto"}),(0,a.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>L.current?.click(),disabled:!X||r,className:"p-2 text-white/50 hover:text-white transition rounded-full hover:bg-white/5",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"attach_file"})}),(0,a.jsx)("input",{ref:L,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ei}),(0,a.jsx)("span",{className:"text-xs font-medium text-white/30 truncate max-w-[120px]",children:X?X.name:"No model"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[C?(0,a.jsx)("button",{type:"button",onClick:()=>{W.current?.abort()},className:"p-2 text-white bg-white/10 hover:bg-white/20 transition rounded-full h-8 w-8 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop"})}):null,(0,a.jsx)("button",{onClick:el,disabled:!er,className:`h-8 w-8 rounded-full flex items-center justify-center transition ${er?"bg-white text-black hover:opacity-90":"bg-white/10 text-white/30 cursor-not-allowed"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})})]})]})]})})]}),(0,a.jsx)("p",{className:"mx-auto mt-2 max-w-3xl px-4 pb-4 text-center text-[11px] text-white/30",children:"Model list is filtered from connected providers."})]})]})})}}},e=>{e.O(0,[2574,3862,1051,1321,5497,8441,3794,7358],()=>e(e.s=58158)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{25374:(e,t,a)=>{Promise.resolve().then(a.bind(a,75228))},75228:(e,t,a)=>{"use strict";a.d(t,{default:()=>x});var s=a(95155),l=a(12115),i=a(98500),r=a.n(i),n=a(35497),o=a(3534),c=a(28777),d=a(70151);let u="https://9router.com";function x({machineId:e}){let t,a,i,[h,p]=(0,l.useState)([]),[v,m]=(0,l.useState)(!0),[f,b]=(0,l.useState)(null),[g,j]=(0,l.useState)({}),[E,S]=(0,l.useState)(!1),[y,w]=(0,l.useState)(!1),[P,k]=(0,l.useState)(""),[N,A]=(0,l.useState)(!1),[C,M]=(0,l.useState)(""),[_,O]=(0,l.useState)([]),[U,I]=(0,l.useState)({}),[T,Q]=(0,l.useState)(null),[$,X]=(0,l.useState)(!1);(0,l.useEffect)(()=>{fetch("/api/auth/me").then(e=>e.json()).then(e=>{Q(e.role||null)}).catch(()=>{}).finally(()=>X(!0)),F(),q(),D(),Z()},[]);let Z=async()=>{try{let e=await fetch("/api/cli-tools/all-statuses");e.ok&&I(await e.json())}catch(e){console.log("Error fetching tool statuses:",e)}},q=async()=>{try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status")]);if(e.ok){let t=await e.json();S(t.cloudEnabled||!1)}if(t.ok){let e=await t.json();w(!!(e.tunnel?.enabled||e.tunnel?.settingsEnabled)),k(e.tunnel?.publicUrl||""),A(!!(e.tailscale?.enabled||e.tailscale?.settingsEnabled)),M(e.tailscale?.tunnelUrl||"")}}catch(e){console.log("Error loading settings:",e)}},D=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();O(t.keys||[])}}catch(e){console.log("Error fetching API keys:",e)}},F=async()=>{try{let e=await fetch("/api/providers"),t=await e.json();e.ok&&p(t.connections||[])}catch(e){console.log("Error fetching connections:",e)}finally{m(!1)}};(0,l.useEffect)(()=>{F(),q(),D(),Z()},[]);let G=()=>h.filter(e=>!1!==e.isActive),K=(0,l.useCallback)((e,t,a)=>{j(s=>s[e]?.[t]===a?s:{...s,[e]:{...s[e],[t]:a}})},[]);if(v)return(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(n.Qv,{}),(0,s.jsx)(n.Qv,{}),(0,s.jsx)(n.Qv,{})]});let L=(t=G(),a=[],i=new Set,t.forEach(e=>{let t=c.Xg[e.provider]||e.provider;(0,c.KC)(e.provider).forEach(s=>{let l=`${t}/${s.id}`;i.has(l)||(i.add(l),a.push({value:l,label:`${t}/${s.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:s.id}))})}),a).length>0,R=$&&"sub_user"===T,Y=Object.entries(o.dM),z=R?[]:Object.entries(o.wn);return(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-1 sm:px-0",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3",children:[R&&(0,s.jsx)("div",{className:"flex items-center",children:(0,s.jsxs)(r(),{href:"/dashboard",className:"inline-flex items-center gap-2 rounded-lg border border-border bg-surface px-3 py-2 text-sm text-text-main transition-colors hover:border-primary hover:text-primary",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"dashboard"}),(0,s.jsx)("span",{children:"Dashboard"})]})}),(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("h1",{className:"text-xl font-semibold text-text-main sm:text-2xl",children:"CLI Tools"}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Configure local coding tools to use your openrouterX providers."})]})]}),(0,s.jsx)("div",{className:"grid gap-3 sm:gap-4",children:Y.map(([e,t])=>((e,t)=>{let a={tool:t,isExpanded:f===e,onToggle:()=>b(f===e?null:e),baseUrl:y&&P?P:E&&u?u:window.location.origin,apiKeys:_,manualOnly:R};switch(e){case"claude":return(0,s.jsx)(d.Tk,{...a,activeProviders:G(),modelMappings:g[e]||{},onModelMappingChange:(t,a)=>K(e,t,a),hasActiveProviders:L,cloudEnabled:E,initialStatus:U.claude},e);case"codex":return(0,s.jsx)(d.Ah,{...a,activeProviders:G(),cloudEnabled:E,initialStatus:U.codex},e);case"opencode":return(0,s.jsx)(d.qO,{...a,activeProviders:G(),cloudEnabled:E,initialStatus:U.opencode},e);case"cowork":return(0,s.jsx)(d.Q6,{...a,activeProviders:G(),hasActiveProviders:L,cloudEnabled:E,cloudUrl:u,tunnelEnabled:y,tunnelPublicUrl:P,tailscaleEnabled:N,tailscaleUrl:C,initialStatus:U.cowork},e);case"droid":return(0,s.jsx)(d.ZM,{...a,activeProviders:G(),hasActiveProviders:L,cloudEnabled:E,initialStatus:U.droid},e);case"openclaw":return(0,s.jsx)(d.yZ,{...a,activeProviders:G(),hasActiveProviders:L,cloudEnabled:E,initialStatus:U.openclaw},e);case"hermes":return(0,s.jsx)(d.RF,{...a,activeProviders:G(),hasActiveProviders:L,cloudEnabled:E,initialStatus:U.hermes},e);case"copilot":return(0,s.jsx)(d.h1,{...a,activeProviders:G(),cloudEnabled:E,initialStatus:U.copilot},e);case"cline":return(0,s.jsx)(d.aG,{...a,activeProviders:G(),cloudEnabled:E,initialStatus:U.cline},e);case"kilo":return(0,s.jsx)(d.c9,{...a,activeProviders:G(),cloudEnabled:E,initialStatus:U.kilo},e);default:return(0,s.jsx)(d.a7,{toolId:e,...a,activeProviders:G(),cloudEnabled:E,tunnelEnabled:y},e)}})(e,t))}),z.length>0&&(0,s.jsxs)("div",{className:"grid gap-3 sm:gap-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"security"}),(0,s.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"MITM Tools"})]}),z.map(([e,t])=>(0,s.jsx)(d.gY,{tool:t},e))]})]})}}},e=>{e.O(0,[2574,3862,1051,5772,1321,5497,5964,8441,3794,7358],()=>e(e.s=25374)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1119],{8642:(e,t,s)=>{Promise.resolve().then(s.bind(s,89455))},14712:(e,t,s)=>{"use strict";s.d(t,{A:()=>o});var a=s(95155),l=s(12115),n=s(35497),r=s(90620);let i={LOG:"text-green-400",INFO:"text-blue-400",WARN:"text-yellow-400",ERROR:"text-red-400",DEBUG:"text-purple-400"};function o({active:e=!0,heightClassName:t="h-[calc(100vh-220px)]",compact:s=!1,showToolbar:c=!0}){let[d,u]=(0,l.useState)([]),[x,m]=(0,l.useState)(!1),p=(0,l.useRef)(null),h=async()=>{try{await fetch("/api/translator/console-logs",{method:"DELETE"})}catch(e){console.error("Failed to clear console logs:",e)}};(0,l.useEffect)(()=>{if(!e)return void m(!1);let t=new EventSource("/api/translator/console-logs/stream");return t.onopen=()=>m(!0),t.onmessage=e=>{let t=JSON.parse(e.data);"init"===t.type?u(t.logs.slice(-r.UY.maxLines)):"line"===t.type?u(e=>{let s=[...e,t.line];return s.length>r.UY.maxLines?s.slice(-r.UY.maxLines):s}):"clear"===t.type&&u([])},t.onerror=()=>m(!1),()=>t.close()},[e]),(0,l.useEffect)(()=>{p.current&&(p.current.scrollTop=p.current.scrollHeight)},[d]);let f=(0,a.jsxs)(a.Fragment,{children:[c&&(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 px-4 pt-3 pb-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,a.jsx)("span",{className:`size-2 rounded-full ${x?"bg-green-500":"bg-text-muted/40"}`}),(0,a.jsx)("span",{children:x?"Live":"Disconnected"})]}),(0,a.jsx)(n.$n,{size:"sm",variant:"outline",icon:"delete",onClick:h,children:"Clear"})]}),(0,a.jsx)("div",{ref:p,className:`overflow-y-auto bg-black p-4 font-mono text-xs ${t} ${s?"rounded-lg":"rounded-b-lg"}`,children:0===d.length?(0,a.jsx)("span",{className:"text-text-muted",children:"No console logs yet."}):(0,a.jsx)("div",{className:"space-y-0.5","data-i18n-skip":"true",children:d.map((e,t)=>{let s,l;return(0,a.jsx)("div",{children:(l=i[(s=e.match(/\[(\w+)\]/g))?s[1]?.replace(/\[|\]/g,""):null]||"text-green-400",(0,a.jsx)("span",{className:l,children:e}))},`${t}-${e.slice(0,32)}`)})})})]});return s?f:(0,a.jsx)(n.Zp,{children:f})}},89455:(e,t,s)=>{"use strict";s.d(t,{default:()=>f});var a=s(95155),l=s(12115),n=s(3534),r=s(28777),i=s(52679),o=s(70151),c=s(14712),d=s(75095);let u=["antigravity"],x=Object.entries(n.wn),m=x.map(([e])=>e),p="focus-ui-mitm-tool-visibility",h=Object.fromEntries(m.map(e=>[e,u.includes(e)]));function f(){let[e,t]=(0,l.useState)([]),[s,n]=(0,l.useState)([]),[u,f]=(0,l.useState)({}),[v,j]=(0,l.useState)(!1),[y,N]=(0,l.useState)(null),[w,S]=(0,l.useState)(!0),[k,C]=(0,l.useState)(!0),[E,T]=(0,l.useState)(!0),[O,P]=(0,l.useState)(!0),[M,$]=(0,l.useState)(h),[A,_]=(0,l.useState)(!1),[I,L]=(0,l.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1});(0,l.useEffect)(()=>{fetch("/api/auth/me").then(e=>e.json()).then(e=>{"sub_user"===e.role&&(window.location.href="/dashboard/usage")}).catch(()=>{}),R(),D(),F(),U()},[]),(0,l.useEffect)(()=>{try{let e=JSON.parse(localStorage.getItem(p)||"null");e&&$(Object.fromEntries(m.map(t=>[t,e?.[t]===!0])))}catch{}_(!0)},[]),(0,l.useEffect)(()=>{if(A)try{localStorage.setItem(p,JSON.stringify(M))}catch{}},[A,M]);let R=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let s=await e.json();t(s.connections||[])}}catch{}},D=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();n(t.keys||[])}}catch{}},F=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();f(t.aliases||{})}}catch{}},U=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();j(t.cloudEnabled||!1)}}catch{}},J=()=>e.filter(e=>!1!==e.isActive),K=x.filter(([e])=>M[e]);return(0,a.jsxs)("div",{className:"flex h-full min-h-0 w-full flex-col gap-6 overflow-hidden",children:[(0,a.jsx)(b,{title:"MITM Server",subtitle:"MITM server status and controls",expanded:w,onToggle:()=>S(e=>!e),bodyClassName:"p-0",className:"shrink-0",children:(0,a.jsx)(o.tA,{apiKeys:s,cloudEnabled:v,onStatusChange:L})}),(0,a.jsx)(b,{title:"Providers",subtitle:"MITM tool interception status",expanded:k,onToggle:()=>C(e=>!e),className:"shrink-0",headerControls:(0,a.jsx)(g,{tools:x,visibleTools:M,onToggleTool:e=>$(t=>({...t,[e]:!t[e]}))}),children:(0,a.jsx)("div",{className:"grid gap-3 sm:gap-4",children:K.map(([e,t])=>(0,a.jsx)(o.kn,{tool:t,isExpanded:y===e,onToggle:()=>N(y===e?null:e),serverRunning:I.running,dnsActive:I.dnsStatus?.[e]||!1,hasCachedPassword:I.hasCachedPassword||!1,needsSudoPassword:!1!==I.needsSudoPassword,isWin:!0===I.isWin,apiKeys:s,activeProviders:J(),hasActiveProviders:J().some(e=>(0,r.KC)(e.provider).length>0||(0,i.mq)(e.provider)||(0,i.gb)(e.provider)),modelAliases:u,cloudEnabled:v,onDnsChange:e=>L(t=>({...t,dnsStatus:e.dnsStatus??t.dnsStatus}))},e))})}),(0,a.jsx)(b,{title:"Quota Management",subtitle:"Provider account quota overview",expanded:E,onToggle:()=>T(e=>!e),bodyClassName:"p-4",className:"shrink-0",children:(0,a.jsx)(d.A,{embedded:!0,title:"Quota Management",gridClassName:"grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-4",activeFirst:!0,maxRows:1,maxColumns:4})}),(0,a.jsx)(b,{title:"Console Logs",subtitle:"MITM / OpenrouterX realtime output",expanded:O,onToggle:()=>P(e=>!e),bodyClassName:"flex min-h-0 flex-1 flex-col p-3",className:O?"flex min-h-0 flex-1 flex-col":"shrink-0",children:(0,a.jsx)(c.A,{active:O,compact:!0,showToolbar:!0,heightClassName:"min-h-0 flex-1"})})]})}function g({tools:e,visibleTools:t,onToggleTool:s}){return(0,a.jsx)("div",{className:"flex flex-wrap items-center justify-end gap-2",onClick:e=>e.stopPropagation(),children:e.map(([e,l])=>(0,a.jsxs)("label",{className:`inline-flex min-h-8 cursor-pointer select-none items-center gap-2 rounded-lg border px-2.5 py-1 text-xs font-medium transition-colors ${t[e]?"border-primary/40 bg-primary/10 text-primary":"border-border bg-surface text-text-muted hover:border-primary/30 hover:text-text-main"}`,children:[(0,a.jsx)("input",{type:"checkbox",checked:!0===t[e],onChange:()=>s(e),className:"h-3.5 w-3.5 accent-primary"}),(0,a.jsx)("span",{children:l.name})]},e))})}function b({title:e,subtitle:t,expanded:s,onToggle:l,children:n,className:r="",bodyClassName:i="p-0",headerControls:o=null}){return(0,a.jsxs)("div",{className:`overflow-hidden rounded-xl border border-border bg-surface shadow-sm ${r}`,children:[(0,a.jsxs)("div",{className:"flex w-full flex-col gap-3 px-4 py-3 transition-colors hover:bg-surface-2/60 lg:flex-row lg:items-center",children:[(0,a.jsxs)("button",{type:"button",onClick:l,className:"flex min-w-0 flex-1 items-center gap-3 text-left","aria-expanded":s,children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted transition-transform ${s?"rotate-90":""}`,children:"chevron_right"}),(0,a.jsxs)("span",{className:"flex min-w-0 flex-col",children:[(0,a.jsx)("span",{className:"truncate text-sm font-semibold text-text-main",children:e}),t&&(0,a.jsx)("span",{className:"truncate text-xs text-text-muted",children:t})]})]}),o&&(0,a.jsx)("div",{className:"min-w-0 flex-1 lg:px-3",children:o}),(0,a.jsx)("button",{type:"button",onClick:l,className:"self-start text-[10px] font-medium uppercase tracking-wide text-text-muted transition-colors hover:text-text-main lg:self-center","aria-expanded":s,children:s?"Collapse":"Expand"})]}),s&&(0,a.jsx)("div",{className:`border-t border-border ${i}`,children:n})]})}}},e=>{e.O(0,[2574,3862,1051,5772,1321,5497,5964,5095,8441,3794,7358],()=>e(e.s=8642)),_N_E=e.O()}]);
|