@yina-npm/openrouterx 0.4.38 → 0.4.52
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/README.md +1145 -300
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +6 -6
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/required-server-files.json +16 -3
- package/app/.next/routes-manifest.json +26 -24
- 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/[toolId]/page.js +24 -0
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -0
- 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 +10 -10
- 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 +3 -3
- 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 +4 -4
- 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 +2 -2
- package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
- 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 +4 -4
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
- 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 +2 -2
- 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 -1
- package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/status/route.js +1 -1
- package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js +10 -2
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- 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/alias/route.js.nft.json +1 -1
- 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/inject-auth/route.js.nft.json +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/restart/route.js.nft.json +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/antigravity-mitm/test/route.js.nft.json +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 +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- 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 +2 -2
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +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-registry/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +9 -0
- package/app/.next/server/app/api/{cloud/auth → cli-tools/deepseek-tui-settings}/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -0
- 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/jcode-settings/route.js +3 -0
- package/app/.next/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -0
- package/app/.next/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- 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/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/health/route.js +1 -1
- package/app/.next/server/app/api/health/route.js.nft.json +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/locale/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/[plugin]/message/route.js +3 -3
- package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +4 -4
- package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +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/elevenlabs/voices/route.js.nft.json +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/inworld/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -0
- package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -0
- package/app/.next/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/custom/route.js +1 -1
- package/app/.next/server/app/api/models/custom/route.js.nft.json +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/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +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-authorize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +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/provider-nodes/validate/route.js.nft.json +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/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +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/kilo/free-models/route.js.nft.json +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/suggested-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/database/route.js +1 -1
- package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/startup-notices/route.js +2 -2
- package/app/.next/server/app/api/startup-notices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +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 +4 -4
- 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-login/route.js.nft.json +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/audio/voices/route.js.nft.json +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 +1 -1
- 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/count_tokens/route.js.nft.json +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/info/route.js.nft.json +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/v1beta/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version/update/route.js +1 -1
- package/app/.next/server/app/api/version/update/route.js.nft.json +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 +4 -4
- package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- 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 +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- 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/favicon.ico/route.js.nft.json +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +4 -4
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- 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 +5 -5
- package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- 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/manifest.webmanifest/route.js.nft.json +1 -1
- 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 +6 -6
- package/app/.next/server/chunks/1350.js +4 -4
- package/app/.next/server/chunks/1476.js +1 -0
- package/app/.next/server/chunks/2415.js +17 -0
- package/app/.next/server/chunks/2506.js +4 -4
- package/app/.next/server/chunks/2560.js +1 -1
- package/app/.next/server/chunks/2574.js +1 -0
- package/app/.next/server/chunks/2722.js +58 -0
- package/app/.next/server/chunks/3110.js +56 -5
- package/app/.next/server/chunks/3493.js +2 -2
- package/app/.next/server/chunks/3593.js +2 -2
- package/app/.next/server/chunks/412.js +5 -5
- package/app/.next/server/chunks/{9641.js → 4565.js} +2 -2
- package/app/.next/server/chunks/4664.js +1 -1
- package/app/.next/server/chunks/5217.js +1 -1
- package/app/.next/server/chunks/5330.js +7 -5
- package/app/.next/server/chunks/5681.js +1 -1
- package/app/.next/server/chunks/6001.js +1 -1
- package/app/.next/server/chunks/6393.js +1 -1
- package/app/.next/server/chunks/7177.js +1 -0
- package/app/.next/server/chunks/7595.js +1 -1
- package/app/.next/server/chunks/7828.js +1 -1
- package/app/.next/server/chunks/7930.js +3 -0
- package/app/.next/server/chunks/8574.js +1 -0
- package/app/.next/server/chunks/8651.js +9 -0
- package/app/.next/server/chunks/8750.js +1 -0
- package/app/.next/server/chunks/8760.js +1 -1
- package/app/.next/server/chunks/8895.js +25 -16
- package/app/.next/server/chunks/9095.js +1 -0
- package/app/.next/server/chunks/9718.js +1 -1
- package/app/.next/server/chunks/9856.js +1 -1
- package/app/.next/server/functions-config-manifest.json +2 -30
- 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/Q5oB2dEL7XeWBhjwqT_vo/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1321-621ed3470478397e.js +1 -0
- package/app/.next/static/chunks/4072-cc92fb1222a2752b.js +3 -0
- package/app/.next/static/chunks/{5095-42d435b0583b2f98.js → 5095-c2bb7e2fc99ab8c3.js} +2 -2
- package/app/.next/static/chunks/5497-bebd4378b1048022.js +7 -0
- package/app/.next/static/chunks/6069-7c51e16aef293430.js +58 -0
- package/app/.next/static/chunks/7055-e60e20f43bfbe5f8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-efbd0b93d35d25cc.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-acbac7a67319955a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-7fabe6d07b1f8823.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/focus-ui/{page-fb59dea0e48968bf.js → page-329b3a170ddd28c6.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-e43ee64cc1f1547c.js +59 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-e0f570e37fcc4d53.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-31a6e1cb19ebc4d8.js → page-c3234f9c82b1a78e.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-979e3e3663264d2b.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-5040868a50d977bf.js +4 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-18d6399108c458a6.js +1 -0
- package/app/.next/static/chunks/app/_global-error/page-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/me/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/callback/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/start/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/test/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/inject-auth/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/restart/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/test/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/activate-account/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/network-analysis/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/startup-notices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/api-keys/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/users/[id]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/users/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/version/shutdown/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/app/page-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/{main-2237af167d2c1c35.js → main-b8d198db3858ff3e.js} +3 -3
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-814b95c8fc310a6a.js +1 -0
- package/app/.next/static/css/402ee8646e1afa89.css +1 -0
- package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/app/node_modules/sql.js/dist/sql-wasm.js +185 -0
- package/app/node_modules/sql.js/dist/sql-wasm.wasm +0 -0
- package/app/node_modules/sql.js/package.json +58 -0
- package/app/package.json +5 -1
- package/app/public/i18n/literals/ar.json +176 -173
- package/app/public/i18n/literals/bn.json +176 -173
- package/app/public/i18n/literals/cs.json +176 -173
- package/app/public/i18n/literals/da.json +176 -173
- package/app/public/i18n/literals/de.json +176 -173
- package/app/public/i18n/literals/el.json +176 -173
- package/app/public/i18n/literals/es.json +176 -173
- package/app/public/i18n/literals/fi.json +176 -173
- package/app/public/i18n/literals/fr.json +176 -173
- package/app/public/i18n/literals/he.json +176 -173
- package/app/public/i18n/literals/hi.json +176 -173
- package/app/public/i18n/literals/hu.json +176 -173
- package/app/public/i18n/literals/id.json +176 -173
- package/app/public/i18n/literals/it.json +176 -173
- package/app/public/i18n/literals/ja.json +176 -173
- package/app/public/i18n/literals/ko.json +176 -173
- package/app/public/i18n/literals/nl.json +176 -173
- package/app/public/i18n/literals/no.json +176 -173
- package/app/public/i18n/literals/pl.json +176 -173
- package/app/public/i18n/literals/pt-BR.json +176 -173
- package/app/public/i18n/literals/pt-PT.json +176 -173
- package/app/public/i18n/literals/ro.json +176 -173
- package/app/public/i18n/literals/ru.json +176 -173
- package/app/public/i18n/literals/sv.json +176 -173
- package/app/public/i18n/literals/th.json +176 -173
- package/app/public/i18n/literals/tl.json +176 -173
- package/app/public/i18n/literals/tr.json +176 -173
- package/app/public/i18n/literals/uk.json +176 -173
- package/app/public/i18n/literals/ur.json +176 -173
- package/app/public/i18n/literals/vi.json +176 -173
- package/app/public/i18n/literals/zh-CN.json +356 -359
- package/app/public/i18n/literals/zh-TW.json +184 -181
- package/app/public/providers/amp.png +0 -0
- package/app/public/providers/deepseek-tui.png +0 -0
- package/app/public/providers/jcode.png +0 -0
- package/app/public/providers/xiaomi-tokenplan.png +0 -0
- package/app/server.js +1 -1
- package/app/src/lib/db/migrate.js +56 -18
- package/app/src/mitm/config.js +16 -1
- package/app/src/mitm/handlers/antigravity.js +2 -1
- package/app/src/mitm/handlers/base.js +4 -1
- package/app/src/mitm/handlers/kiro.js +3 -1
- package/app/src/mitm/logger.js +11 -1
- package/app/src/mitm/server.js +18 -15
- package/package.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +0 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +0 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +0 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +0 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +0 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +0 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +0 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +0 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +0 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +0 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +0 -1
- package/app/.next/server/chunks/2343.js +0 -1
- package/app/.next/server/chunks/3855.js +0 -1
- package/app/.next/server/chunks/4126.js +0 -1
- package/app/.next/server/chunks/4922.js +0 -9
- package/app/.next/server/chunks/5434.js +0 -1
- package/app/.next/server/chunks/5627.js +0 -17
- package/app/.next/server/chunks/723.js +0 -44
- package/app/.next/server/chunks/8866.js +0 -1
- package/app/.next/server/chunks/9300.js +0 -3
- package/app/.next/server/chunks/9460.js +0 -1
- package/app/.next/static/9qtW6KlzV_D2b828CZp1A/_buildManifest.js +0 -1
- package/app/.next/static/chunks/1321-634f2d25db77d618.js +0 -1
- package/app/.next/static/chunks/4072-91de6609dc7e6753.js +0 -3
- package/app/.next/static/chunks/5497-4a0f0c365aea0ea7.js +0 -7
- package/app/.next/static/chunks/5964-08d6048e026d4245.js +0 -44
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-211e322f002d5464.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-69469b6440aff8d0.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-95d31a6372622fcf.js +0 -59
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-7ae37df256035f59.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-9d071b63170b7f71.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-7762d83be0982941.js +0 -4
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-f77dc916ed5a6f99.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/me/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/oidc/callback/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/oidc/start/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/oidc/test/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/auth/status/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/inject-auth/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/restart/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/test/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/activate-account/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/health/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/models/custom/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/models/disabled/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/network-analysis/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/startup-notices/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/disable/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/enable/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/status/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/api-keys/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/users/[id]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/users/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/info/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/search/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/version/shutdown/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/api/version/update/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/app/page-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-1879675a73caf73c.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-1879675a73caf73c.js +0 -1
- package/app/.next/static/css/f6642f5333f94810.css +0 -1
- /package/app/.next/static/{9qtW6KlzV_D2b828CZp1A → Q5oB2dEL7XeWBhjwqT_vo}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7055],{5020:(e,t,n)=>{n.d(t,{FN:()=>l,gj:()=>r}),n(39768);let r=e=>{let t,{containerNodeRect:n,draggingNodeRect:r,transform:l}=e;return r&&n?(t={...l},r.top+l.y<=n.top?t.y=n.top-r.top:r.bottom+l.y>=n.top+n.height&&(t.y=n.top+n.height-r.bottom),r.left+l.x<=n.left?t.x=n.left-r.left:r.right+l.x>=n.left+n.width&&(t.x=n.left+n.width-r.right),t):l},l=e=>{let{transform:t}=e;return{...t,x:0}}},39768:(e,t,n)=>{n.d(t,{$$:()=>p,Es:()=>f,KG:()=>b,Ks:()=>R,Ll:()=>o,Re:()=>C,Sw:()=>i,TW:()=>h,WQ:()=>D,YG:()=>x,YN:()=>v,ZC:()=>y,_q:()=>g,ag:()=>T,e_:()=>S,jn:()=>l,kx:()=>M,l6:()=>a,lk:()=>m,sb:()=>c,wz:()=>s,xZ:()=>d,zk:()=>u});var r=n(12115);function l(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,r.useMemo)(()=>e=>{t.forEach(t=>t(e))},t)}let i="u">typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function a(e){let t=Object.prototype.toString.call(e);return"[object Window]"===t||"[object global]"===t}function o(e){return"nodeType"in e}function u(e){var t,n;return e?a(e)?e:o(e)&&null!=(t=null==(n=e.ownerDocument)?void 0:n.defaultView)?t:window:window}function s(e){let{Document:t}=u(e);return e instanceof t}function c(e){return!a(e)&&e instanceof u(e).HTMLElement}function d(e){return e instanceof u(e).SVGElement}function h(e){return e?a(e)?e.document:o(e)?s(e)?e:c(e)||d(e)?e.ownerDocument:document:document:document}let f=i?r.useLayoutEffect:r.useEffect;function g(e){let t=(0,r.useRef)(e);return f(()=>{t.current=e}),(0,r.useCallback)(function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return null==t.current?void 0:t.current(...n)},[])}function p(){let e=(0,r.useRef)(null);return[(0,r.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,r.useCallback)(()=>{null!==e.current&&(clearInterval(e.current),e.current=null)},[])]}function v(e,t){void 0===t&&(t=[e]);let n=(0,r.useRef)(e);return f(()=>{n.current!==e&&(n.current=e)},t),n}function b(e,t){let n=(0,r.useRef)();return(0,r.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function m(e){let t=g(e),n=(0,r.useRef)(null),l=(0,r.useCallback)(e=>{e!==n.current&&(null==t||t(e,n.current)),n.current=e},[]);return[n,l]}function y(e){let t=(0,r.useRef)();return(0,r.useEffect)(()=>{t.current=e},[e]),t.current}let w={};function x(e,t){return(0,r.useMemo)(()=>{if(t)return t;let n=null==w[e]?0:w[e]+1;return w[e]=n,e+"-"+n},[e,t])}function E(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),l=1;l<n;l++)r[l-1]=arguments[l];return r.reduce((t,n)=>{for(let[r,l]of Object.entries(n)){let n=t[r];null!=n&&(t[r]=n+e*l)}return t},{...t})}}let D=E(1),C=E(-1);function M(e){if(!e)return!1;let{KeyboardEvent:t}=u(e.target);return t&&e instanceof t}function S(e){if(function(e){if(!e)return!1;let{TouchEvent:t}=u(e.target);return t&&e instanceof t}(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return"clientX"in e&&"clientY"in e?{x:e.clientX,y:e.clientY}:null}let R=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[R.Translate.toString(e),R.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),k="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function T(e){return e.matches(k)?e:e.querySelector(k)}},44923:(e,t,n)=>{n.d(t,{Mp:()=>eG,vL:()=>p,uN:()=>eg,AN:()=>ey,fp:()=>j,y$:()=>U,Sj:()=>H,Vy:()=>F,sl:()=>J,fF:()=>eJ,PM:()=>eV,zM:()=>eZ,MS:()=>I,FR:()=>z});var r,l,i,a,o,u,s,c,d,h,f,g,p,v,b,m,y,w,x,E=n(12115),D=n(47650),C=n(39768);let M={display:"none"};function S(e){let{id:t,value:n}=e;return E.createElement("div",{id:t,style:M},n)}function R(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;return E.createElement("div",{id:t,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":r,"aria-atomic":!0},n)}let k=(0,E.createContext)(null),T={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},L={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function N(e){var t;let n,{announcements:r=L,container:l,hiddenTextDescribedById:i,screenReaderInstructions:a=T}=e,{announce:o,announcement:u}=function(){let[e,t]=(0,E.useState)("");return{announce:(0,E.useCallback)(e=>{null!=e&&t(e)},[]),announcement:e}}(),s=(0,C.YG)("DndLiveRegion"),[c,d]=(0,E.useState)(!1);if((0,E.useEffect)(()=>{d(!0)},[]),t=(0,E.useMemo)(()=>({onDragStart(e){let{active:t}=e;o(r.onDragStart({active:t}))},onDragMove(e){let{active:t,over:n}=e;r.onDragMove&&o(r.onDragMove({active:t,over:n}))},onDragOver(e){let{active:t,over:n}=e;o(r.onDragOver({active:t,over:n}))},onDragEnd(e){let{active:t,over:n}=e;o(r.onDragEnd({active:t,over:n}))},onDragCancel(e){let{active:t,over:n}=e;o(r.onDragCancel({active:t,over:n}))}}),[o,r]),n=(0,E.useContext)(k),(0,E.useEffect)(()=>{if(!n)throw Error("useDndMonitor must be used within a children of <DndContext>");return n(t)},[t,n]),!c)return null;let h=E.createElement(E.Fragment,null,E.createElement(S,{id:i,value:a.draggable}),E.createElement(R,{id:s,announcement:u}));return l?(0,D.createPortal)(h,l):h}function O(){}function I(e,t){return(0,E.useMemo)(()=>({sensor:e,options:null!=t?t:{}}),[e,t])}function z(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,E.useMemo)(()=>[...t].filter(e=>null!=e),[...t])}(r=h||(h={})).DragStart="dragStart",r.DragMove="dragMove",r.DragEnd="dragEnd",r.DragCancel="dragCancel",r.DragOver="dragOver",r.RegisterDroppable="registerDroppable",r.SetDroppableDisabled="setDroppableDisabled",r.UnregisterDroppable="unregisterDroppable";let A=Object.freeze({x:0,y:0});function P(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function W(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Y(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function B(e){let{left:t,top:n,height:r,width:l}=e;return[{x:t,y:n},{x:t+l,y:n},{x:t,y:n+r},{x:t+l,y:n+r}]}function F(e,t){if(!e||0===e.length)return null;let[n]=e;return t?n[t]:n}function K(e,t,n){return void 0===t&&(t=e.left),void 0===n&&(n=e.top),{x:t+.5*e.width,y:n+.5*e.height}}let j=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,l=K(t,t.left,t.top),i=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=P(K(r),l);i.push({id:t,data:{droppableContainer:e,value:n}})}}return i.sort(W)},U=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,l=B(t),i=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=B(r),a=Number((l.reduce((e,t,r)=>e+P(n[r],t),0)/4).toFixed(4));i.push({id:t,data:{droppableContainer:e,value:a}})}}return i.sort(W)},_=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,l=[];for(let e of r){let{id:r}=e,i=n.get(r);if(i){let n=function(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),l=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height);if(r<l&&n<i){let a=t.width*t.height,o=e.width*e.height,u=(l-r)*(i-n);return Number((u/(a+o-u)).toFixed(4))}return 0}(i,t);n>0&&l.push({id:r,data:{droppableContainer:e,value:n}})}}return l.sort(Y)};function X(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:A}let G=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return n.reduce((e,t)=>({...e,top:e.top+ +t.y,bottom:e.bottom+ +t.y,left:e.left+ +t.x,right:e.right+ +t.x}),{...e})},q={ignoreTransform:!1};function H(e,t){void 0===t&&(t=q);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=(0,C.zk)(e).getComputedStyle(e);t&&(n=function(e,t,n){let r=function(e){if(e.startsWith("matrix3d(")){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith("matrix(")){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}(t);if(!r)return e;let{scaleX:l,scaleY:i,x:a,y:o}=r,u=e.left-a-(1-l)*parseFloat(n),s=e.top-o-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),c=l?e.width/l:e.width,d=i?e.height/i:e.height;return{width:c,height:d,top:s,right:u+c,bottom:s+d,left:u}}(n,t,r))}let{top:r,left:l,width:i,height:a,bottom:o,right:u}=n;return{top:r,left:l,width:i,height:a,bottom:o,right:u}}function V(e){return H(e,{ignoreTransform:!0})}function J(e,t){let n=[];return e?function r(l){var i,a;let o;if(null!=t&&n.length>=t||!l)return n;if((0,C.wz)(l)&&null!=l.scrollingElement&&!n.includes(l.scrollingElement))return n.push(l.scrollingElement),n;if(!(0,C.sb)(l)||(0,C.xZ)(l)||n.includes(l))return n;let u=(0,C.zk)(e).getComputedStyle(l);return(l!==e&&(void 0===(i=u)&&(i=(0,C.zk)(l).getComputedStyle(l)),o=/(auto|scroll|overlay)/,["overflow","overflowX","overflowY"].some(e=>{let t=i[e];return"string"==typeof t&&o.test(t)}))&&n.push(l),void 0===(a=u)&&(a=(0,C.zk)(l).getComputedStyle(l)),"fixed"===a.position)?n:r(l.parentNode)}(e):n}function Q(e){let[t]=J(e,1);return null!=t?t:null}function Z(e){return C.Sw&&e?(0,C.l6)(e)?e:(0,C.Ll)(e)?(0,C.wz)(e)||e===(0,C.TW)(e).scrollingElement?window:(0,C.sb)(e)?e:null:null:null}function $(e){return(0,C.l6)(e)?e.scrollX:e.scrollLeft}function ee(e){return(0,C.l6)(e)?e.scrollY:e.scrollTop}function et(e){return{x:$(e),y:ee(e)}}function en(e){return!!C.Sw&&!!e&&e===document.scrollingElement}function er(e){let t={x:0,y:0},n=en(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},l=e.scrollTop<=t.y,i=e.scrollLeft<=t.x;return{isTop:l,isLeft:i,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}(l=f||(f={}))[l.Forward=1]="Forward",l[l.Backward=-1]="Backward";let el={x:.2,y:.2};function ei(e){return e.reduce((e,t)=>(0,C.WQ)(e,et(t)),A)}let ea=[["x",["left","right"],function(e){return e.reduce((e,t)=>e+$(t),0)}],["y",["top","bottom"],function(e){return e.reduce((e,t)=>e+ee(t),0)}]];class eo{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const n=J(t),r=ei(n);for(const[t,l,i]of(this.rect={...e},this.width=e.width,this.height=e.height,ea))for(const e of l)Object.defineProperty(this,e,{get:()=>{let l=i(n),a=r[t]-l;return this.rect[e]+a},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class eu{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>{var t;return null==(t=this.target)?void 0:t.removeEventListener(...e)})},this.target=e}add(e,t,n){var r;null==(r=this.target)||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}}function es(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return"number"==typeof t?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t&&r>t.y}function ec(e){e.preventDefault()}function ed(e){e.stopPropagation()}(i=g||(g={})).Click="click",i.DragStart="dragstart",i.Keydown="keydown",i.ContextMenu="contextmenu",i.Resize="resize",i.SelectionChange="selectionchange",i.VisibilityChange="visibilitychange",(a=p||(p={})).Space="Space",a.Down="ArrowDown",a.Right="ArrowRight",a.Left="ArrowLeft",a.Up="ArrowUp",a.Esc="Escape",a.Enter="Enter",a.Tab="Tab";let eh={start:[p.Space,p.Enter],cancel:[p.Esc],end:[p.Space,p.Enter,p.Tab]},ef=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case p.Right:return{...n,x:n.x+25};case p.Left:return{...n,x:n.x-25};case p.Down:return{...n,y:n.y+25};case p.Up:return{...n,y:n.y-25}}};class eg{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:t}}=e;this.props=e,this.listeners=new eu((0,C.TW)(t)),this.windowListeners=new eu((0,C.zk)(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(g.Resize,this.handleCancel),this.windowListeners.add(g.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(g.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&function(e,t){if(void 0===t&&(t=H),!e)return;let{top:n,left:r,bottom:l,right:i}=t(e);Q(e)&&(l<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}(n),t(A)}handleKeyDown(e){if((0,C.kx)(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:l=eh,coordinateGetter:i=ef,scrollBehavior:a="smooth"}=r,{code:o}=e;if(l.end.includes(o))return void this.handleEnd(e);if(l.cancel.includes(o))return void this.handleCancel(e);let{collisionRect:u}=n.current,s=u?{x:u.left,y:u.top}:A;this.referenceCoordinates||(this.referenceCoordinates=s);let c=i(e,{active:t,context:n.current,currentCoordinates:s});if(c){let t=(0,C.Re)(c,s),r={x:0,y:0},{scrollableAncestors:l}=n.current;for(let n of l){let l=e.code,{isTop:i,isRight:o,isLeft:u,isBottom:s,maxScroll:d,minScroll:h}=er(n),f=function(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:l}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:l,width:e.clientWidth,height:e.clientHeight}}(n),g={x:Math.min(l===p.Right?f.right-f.width/2:f.right,Math.max(l===p.Right?f.left:f.left+f.width/2,c.x)),y:Math.min(l===p.Down?f.bottom-f.height/2:f.bottom,Math.max(l===p.Down?f.top:f.top+f.height/2,c.y))},v=l===p.Right&&!o||l===p.Left&&!u,b=l===p.Down&&!s||l===p.Up&&!i;if(v&&g.x!==c.x){let e=n.scrollLeft+t.x,i=l===p.Right&&e<=d.x||l===p.Left&&e>=h.x;if(i&&!t.y)return void n.scrollTo({left:e,behavior:a});i?r.x=n.scrollLeft-e:r.x=l===p.Right?n.scrollLeft-d.x:n.scrollLeft-h.x,r.x&&n.scrollBy({left:-r.x,behavior:a});break}if(b&&g.y!==c.y){let e=n.scrollTop+t.y,i=l===p.Down&&e<=d.y||l===p.Up&&e>=h.y;if(i&&!t.x)return void n.scrollTo({top:e,behavior:a});i?r.y=n.scrollTop-e:r.y=l===p.Down?n.scrollTop-d.y:n.scrollTop-h.y,r.y&&n.scrollBy({top:-r.y,behavior:a});break}}this.handleMove(e,(0,C.WQ)((0,C.Re)(c,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function ep(e){return!!(e&&"distance"in e)}function ev(e){return!!(e&&"delay"in e)}eg.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=eh,onActivation:l}=t,{active:i}=n,{code:a}=e.nativeEvent;if(r.start.includes(a)){let t=i.activatorNode.current;return(!t||e.target===t)&&(e.preventDefault(),null==l||l({event:e.nativeEvent}),!0)}return!1}}];class eb{constructor(e,t,n){var r;void 0===n&&(n=function(e){let{EventTarget:t}=(0,C.zk)(e);return e instanceof t?e:(0,C.TW)(e)}(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:l}=e,{target:i}=l;this.props=e,this.events=t,this.document=(0,C.TW)(i),this.documentListeners=new eu(this.document),this.listeners=new eu(n),this.windowListeners=new eu((0,C.zk)(i)),this.initialCoordinates=null!=(r=(0,C.e_)(l))?r:A,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(g.Resize,this.handleCancel),this.windowListeners.add(g.DragStart,ec),this.windowListeners.add(g.VisibilityChange,this.handleCancel),this.windowListeners.add(g.ContextMenu,ec),this.documentListeners.add(g.Keydown,this.handleKeydown),t){if(null!=n&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(ev(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(ep(t))return void this.handlePending(t)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(g.Click,ed,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(g.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;let{activated:n,initialCoordinates:r,props:l}=this,{onMove:i,options:{activationConstraint:a}}=l;if(!r)return;let o=null!=(t=(0,C.e_)(e))?t:A,u=(0,C.Re)(r,o);if(!n&&a){if(ep(a)){if(null!=a.tolerance&&es(u,a.tolerance))return this.handleCancel();if(es(u,a.distance))return this.handleStart()}return ev(a)&&es(u,a.tolerance)?this.handleCancel():void this.handlePending(a,u)}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===p.Esc&&this.handleCancel()}removeTextSelection(){var e;null==(e=this.document.getSelection())||e.removeAllRanges()}}let em={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class ey extends eb{constructor(e){const{event:t}=e;super(e,em,(0,C.TW)(t.target))}}ey.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!!n.isPrimary&&0===n.button&&(null==r||r({event:n}),!0)}}];let ew={move:{name:"mousemove"},end:{name:"mouseup"}};(o=v||(v={}))[o.RightClick=2]="RightClick";class ex extends eb{constructor(e){super(e,ew,(0,C.TW)(e.event.target))}}ex.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==v.RightClick&&(null==r||r({event:n}),!0)}}];let eE={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class eD extends eb{constructor(e){super(e,eE)}static setup(){return window.addEventListener(eE.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(eE.move.name,e)};function e(){}}}eD.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:l}=n;return!(l.length>1)&&(null==r||r({event:n}),!0)}}],(u=b||(b={}))[u.Pointer=0]="Pointer",u[u.DraggableRect=1]="DraggableRect",(s=m||(m={}))[s.TreeOrder=0]="TreeOrder",s[s.ReversedTreeOrder=1]="ReversedTreeOrder";let eC={x:{[f.Backward]:!1,[f.Forward]:!1},y:{[f.Backward]:!1,[f.Forward]:!1}};(c=y||(y={}))[c.Always=0]="Always",c[c.BeforeDragging=1]="BeforeDragging",c[c.WhileDragging=2]="WhileDragging",(w||(w={})).Optimized="optimized";let eM=new Map;function eS(e,t){return(0,C.KG)(n=>e?n||("function"==typeof t?t(e):e):null,[t,e])}function eR(e){let{callback:t,disabled:n}=e,r=(0,C._q)(t),l=(0,E.useMemo)(()=>{if(n||"u"<typeof window||void 0===window.ResizeObserver)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,E.useEffect)(()=>()=>null==l?void 0:l.disconnect(),[l]),l}function ek(e){return new eo(H(e),e)}function eT(e,t,n){void 0===t&&(t=ek);let[r,l]=(0,E.useState)(null);function i(){l(r=>{if(!e)return null;if(!1===e.isConnected){var l;return null!=(l=null!=r?r:n)?l:null}let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let a=function(e){let{callback:t,disabled:n}=e,r=(0,C._q)(t),l=(0,E.useMemo)(()=>{if(n||"u"<typeof window||void 0===window.MutationObserver)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,E.useEffect)(()=>()=>null==l?void 0:l.disconnect(),[l]),l}({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if("childList"===t&&r instanceof HTMLElement&&r.contains(e)){i();break}}}}),o=eR({callback:i});return(0,C.Es)(()=>{i(),e?(null==o||o.observe(e),null==a||a.observe(document.body,{childList:!0,subtree:!0})):(null==o||o.disconnect(),null==a||a.disconnect())},[e]),r}let eL=[];function eN(e,t){void 0===t&&(t=[]);let n=(0,E.useRef)(null);return(0,E.useEffect)(()=>{n.current=null},t),(0,E.useEffect)(()=>{let t=e!==A;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?(0,C.Re)(e,n.current):A}function eO(e){return(0,E.useMemo)(()=>{let t,n;return e?(t=e.innerWidth,{top:0,left:0,right:t,bottom:n=e.innerHeight,width:t,height:n}):null},[e])}let eI=[],ez=[{sensor:ey,options:{}},{sensor:eg,options:{}}],eA={current:{}},eP={draggable:{measure:V},droppable:{measure:V,strategy:y.WhileDragging,frequency:w.Optimized},dragOverlay:{measure:H}};class eW extends Map{get(e){var t;return null!=e&&null!=(t=super.get(e))?t:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){var t,n;return null!=(t=null==(n=this.get(e))?void 0:n.node.current)?t:void 0}}let eY={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new eW,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:O},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:eP,measureDroppableContainers:O,windowRect:null,measuringScheduled:!1},eB={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:O,draggableNodes:new Map,over:null,measureDroppableContainers:O},eF=(0,E.createContext)(eB),eK=(0,E.createContext)(eY);function ej(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new eW}}}function eU(e,t){switch(t.type){case h.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case h.DragMove:if(null==e.draggable.active)return e;return{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case h.DragEnd:case h.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case h.RegisterDroppable:{let{element:n}=t,{id:r}=n,l=new eW(e.droppable.containers);return l.set(r,n),{...e,droppable:{...e.droppable,containers:l}}}case h.SetDroppableDisabled:{let{id:n,key:r,disabled:l}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new eW(e.droppable.containers);return a.set(n,{...i,disabled:l}),{...e,droppable:{...e.droppable,containers:a}}}case h.UnregisterDroppable:{let{id:n,key:r}=t,l=e.droppable.containers.get(n);if(!l||r!==l.key)return e;let i=new eW(e.droppable.containers);return i.delete(n),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function e_(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:l}=(0,E.useContext)(eF),i=(0,C.ZC)(r),a=(0,C.ZC)(null==n?void 0:n.id);return(0,E.useEffect)(()=>{if(!t&&!r&&i&&null!=a){if(!(0,C.kx)(i)||document.activeElement===i.target)return;let e=l.get(a);if(!e)return;let{activatorNode:t,node:n}=e;(t.current||n.current)&&requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=(0,C.ag)(e);if(t){t.focus();break}}})}},[r,t,l,a,i]),null}let eX=(0,E.createContext)({...A,scaleX:1,scaleY:1});(d=x||(x={}))[d.Uninitialized=0]="Uninitialized",d[d.Initializing=1]="Initializing",d[d.Initialized=2]="Initialized";let eG=(0,E.memo)(function(e){var t,n,r,l,i,a,o,u;let s,c,d,g,p,v,w,M,{id:S,accessibility:R,autoScroll:T=!0,children:L,sensors:O=ez,collisionDetection:I=_,measuring:z,modifiers:P,...W}=e,[Y,B]=(0,E.useReducer)(eU,void 0,ej),[K,j]=function(){let[e]=(0,E.useState)(()=>new Set),t=(0,E.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,E.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>{var t;return null==(t=e[n])?void 0:t.call(e,r)})},[e]),t]}(),[U,q]=(0,E.useState)(x.Uninitialized),V=U===x.Initialized,{draggable:{active:$,nodes:ee,translate:ea},droppable:{containers:eu}}=Y,es=null!=$?ee.get($):null,ec=(0,E.useRef)({initial:null,translated:null}),ed=(0,E.useMemo)(()=>{var e;return null!=$?{id:$,data:null!=(e=null==es?void 0:es.data)?e:eA,rect:ec}:null},[$,es]),eh=(0,E.useRef)(null),[ef,eg]=(0,E.useState)(null),[ep,ev]=(0,E.useState)(null),eb=(0,C.YN)(W,Object.values(W)),em=(0,C.YG)("DndDescribedBy",S),ey=(0,E.useMemo)(()=>eu.getEnabled(),[eu]),ew=(0,E.useMemo)(()=>({draggable:{...eP.draggable,...null==z?void 0:z.draggable},droppable:{...eP.droppable,...null==z?void 0:z.droppable},dragOverlay:{...eP.dragOverlay,...null==z?void 0:z.dragOverlay}}),[null==z?void 0:z.draggable,null==z?void 0:z.droppable,null==z?void 0:z.dragOverlay]),{droppableRects:ex,measureDroppableContainers:eE,measuringScheduled:eD}=function(e,t){let{dragging:n,dependencies:r,config:l}=t,[i,a]=(0,E.useState)(null),{frequency:o,measure:u,strategy:s}=l,c=(0,E.useRef)(e),d=function(){switch(s){case y.Always:return!1;case y.BeforeDragging:return n;default:return!n}}(),h=(0,C.YN)(d),f=(0,E.useCallback)(function(e){void 0===e&&(e=[]),h.current||a(t=>null===t?e:t.concat(e.filter(e=>!t.includes(e))))},[h]),g=(0,E.useRef)(null),p=(0,C.KG)(t=>{if(d&&!n)return eM;if(!t||t===eM||c.current!==e||null!=i){let t=new Map;for(let n of e){if(!n)continue;if(i&&i.length>0&&!i.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new eo(u(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,i,n,d,u]);return(0,E.useEffect)(()=>{c.current=e},[e]),(0,E.useEffect)(()=>{d||f()},[n,d]),(0,E.useEffect)(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),(0,E.useEffect)(()=>{d||"number"!=typeof o||null!==g.current||(g.current=setTimeout(()=>{f(),g.current=null},o))},[o,d,f,...r]),{droppableRects:p,measureDroppableContainers:f,measuringScheduled:null!=i}}(ey,{dragging:V,dependencies:[ea.x,ea.y],config:ew.droppable}),ek=(p=(g=null!=$?ee.get($):void 0)?g.node.current:null,(0,C.KG)(e=>{var t;return null==$?null:null!=(t=null!=p?p:e)?t:null},[p,$])),eW=(0,E.useMemo)(()=>ep?(0,C.e_)(ep):null,[ep]),eY=(s=(null==ef?void 0:ef.autoScrollEnabled)===!1,c="object"==typeof T?!1===T.enabled:!1===T,d=V&&!s&&!c,"object"==typeof T?{...T,enabled:d}:{enabled:d}),eB=eS(ek,ew.draggable.measure);!function(e){let{activeNode:t,measure:n,initialRect:r,config:l=!0}=e,i=(0,E.useRef)(!1),{x:a,y:o}="boolean"==typeof l?{x:l,y:l}:l;(0,C.Es)(()=>{if(!a&&!o||!t){i.current=!1;return}if(i.current||!r)return;let e=null==t?void 0:t.node.current;if(!e||!1===e.isConnected)return;let l=X(n(e),r);if(a||(l.x=0),o||(l.y=0),i.current=!0,Math.abs(l.x)>0||Math.abs(l.y)>0){let t=Q(e);t&&t.scrollBy({top:l.y,left:l.x})}},[t,a,o,r,n])}({activeNode:null!=$?ee.get($):null,config:eY.layoutShiftCompensation,initialRect:eB,measure:ew.draggable.measure});let eG=eT(ek,ew.draggable.measure,eB),eq=eT(ek?ek.parentElement:null),eH=(0,E.useRef)({activatorEvent:null,active:null,activeNode:ek,collisionRect:null,collisions:null,droppableRects:ex,draggableNodes:ee,draggingNode:null,draggingNodeRect:null,droppableContainers:eu,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),eV=eu.getNodeFor(null==(t=eH.current.over)?void 0:t.id),eJ=function(e){let{measure:t}=e,[n,r]=(0,E.useState)(null),l=eR({callback:(0,E.useCallback)(e=>{for(let{target:n}of e)if((0,C.sb)(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),i=(0,E.useCallback)(e=>{let n=function(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return(0,C.sb)(t)?t:e}(e);null==l||l.disconnect(),n&&(null==l||l.observe(n)),r(n?t(n):null)},[t,l]),[a,o]=(0,C.lk)(i);return(0,E.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}({measure:ew.dragOverlay.measure}),eQ=null!=(n=eJ.nodeRef.current)?n:ek,eZ=V?null!=(r=eJ.rect)?r:eG:null,e$=!!(eJ.nodeRef.current&&eJ.rect),e0=(v=eS(i=e$?null:eG),X(i,v)),e1=eO(eQ?(0,C.zk)(eQ):null),e2=(a=V?null!=eV?eV:ek:null,w=(0,E.useRef)(a),M=(0,C.KG)(e=>a?e&&e!==eL&&a&&w.current&&a.parentNode===w.current.parentNode?e:J(a):eL,[a]),(0,E.useEffect)(()=>{w.current=a},[a]),M),e5=function(e,t){void 0===t&&(t=H);let[n]=e,r=eO(n?(0,C.zk)(n):null),[l,i]=(0,E.useState)(eI);function a(){i(()=>e.length?e.map(e=>en(e)?r:new eo(t(e),e)):eI)}let o=eR({callback:a});return(0,C.Es)(()=>{null==o||o.disconnect(),a(),e.forEach(e=>null==o?void 0:o.observe(e))},[e]),l}(e2),e3=function(e,t){let{transform:n,...r}=t;return null!=e&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}(P,{transform:{x:ea.x-e0.x,y:ea.y-e0.y,scaleX:1,scaleY:1},activatorEvent:ep,active:ed,activeNodeRect:eG,containerNodeRect:eq,draggingNodeRect:eZ,over:eH.current.over,overlayNodeRect:eJ.rect,scrollableAncestors:e2,scrollableAncestorRects:e5,windowRect:e1}),e6=eW?(0,C.WQ)(eW,ea):null,e4=function(e){let[t,n]=(0,E.useState)(null),r=(0,E.useRef)(e),l=(0,E.useCallback)(e=>{let t=Z(e.target);t&&n(e=>e?(e.set(t,et(t)),new Map(e)):null)},[]);return(0,E.useEffect)(()=>{let t=r.current;if(e!==t){i(t);let a=e.map(e=>{let t=Z(e);return t?(t.addEventListener("scroll",l,{passive:!0}),[t,et(t)]):null}).filter(e=>null!=e);n(a.length?new Map(a):null),r.current=e}return()=>{i(e),i(t)};function i(e){e.forEach(e=>{let t=Z(e);null==t||t.removeEventListener("scroll",l)})}},[l,e]),(0,E.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>(0,C.WQ)(e,t),A):ei(e):A,[e,t])}(e2),e7=eN(e4),e9=eN(e4,[eG]),e8=(0,C.WQ)(e3,e7),te=eZ?G(eZ,e3):null,tt=ed&&te?I({active:ed,collisionRect:te,droppableRects:ex,droppableContainers:ey,pointerCoordinates:e6}):null,tn=F(tt,"id"),[tr,tl]=(0,E.useState)(null),ti=(o=e$?e3:(0,C.WQ)(e3,e9),u=null!=(l=null==tr?void 0:tr.rect)?l:null,{...o,scaleX:u&&eG?u.width/eG.width:1,scaleY:u&&eG?u.height/eG.height:1}),ta=(0,E.useRef)(null),to=(0,E.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(null==eh.current)return;let l=ee.get(eh.current);if(!l)return;let i=e.nativeEvent,a=new n({active:eh.current,activeNode:l,event:i,options:r,context:eH,onAbort(e){if(!ee.get(e))return;let{onDragAbort:t}=eb.current,n={id:e};null==t||t(n),K({type:"onDragAbort",event:n})},onPending(e,t,n,r){if(!ee.get(e))return;let{onDragPending:l}=eb.current,i={id:e,constraint:t,initialCoordinates:n,offset:r};null==l||l(i),K({type:"onDragPending",event:i})},onStart(e){let t=eh.current;if(null==t)return;let n=ee.get(t);if(!n)return;let{onDragStart:r}=eb.current,l={activatorEvent:i,active:{id:t,data:n.data,rect:ec}};(0,D.unstable_batchedUpdates)(()=>{null==r||r(l),q(x.Initializing),B({type:h.DragStart,initialCoordinates:e,active:t}),K({type:"onDragStart",event:l}),eg(ta.current),ev(i)})},onMove(e){B({type:h.DragMove,coordinates:e})},onEnd:o(h.DragEnd),onCancel:o(h.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:l}=eH.current,a=null;if(t&&l){let{cancelDrop:o}=eb.current;a={activatorEvent:i,active:t,collisions:n,delta:l,over:r},e===h.DragEnd&&"function"==typeof o&&await Promise.resolve(o(a))&&(e=h.DragCancel)}eh.current=null,(0,D.unstable_batchedUpdates)(()=>{B({type:e}),q(x.Uninitialized),tl(null),eg(null),ev(null),ta.current=null;let t=e===h.DragEnd?"onDragEnd":"onDragCancel";if(a){let e=eb.current[t];null==e||e(a),K({type:t,event:a})}})}}ta.current=a},[ee]),tu=(0,E.useCallback)((e,t)=>(n,r)=>{let l=n.nativeEvent,i=ee.get(r);null!==eh.current||!i||l.dndKit||l.defaultPrevented||!0===e(n,t.options,{active:i})&&(l.dndKit={capturedBy:t.sensor},eh.current=r,to(n,t))},[ee,to]),ts=(0,E.useMemo)(()=>O.reduce((e,t)=>{let{sensor:n}=t;return[...e,...n.activators.map(e=>({eventName:e.eventName,handler:tu(e.handler,t)}))]},[]),[O,tu]);(0,E.useEffect)(()=>{if(!C.Sw)return;let e=O.map(e=>{let{sensor:t}=e;return null==t.setup?void 0:t.setup()});return()=>{for(let t of e)null==t||t()}},O.map(e=>{let{sensor:t}=e;return t})),(0,C.Es)(()=>{eG&&U===x.Initializing&&q(x.Initialized)},[eG,U]),(0,E.useEffect)(()=>{let{onDragMove:e}=eb.current,{active:t,activatorEvent:n,collisions:r,over:l}=eH.current;if(!t||!n)return;let i={active:t,activatorEvent:n,collisions:r,delta:{x:e8.x,y:e8.y},over:l};(0,D.unstable_batchedUpdates)(()=>{null==e||e(i),K({type:"onDragMove",event:i})})},[e8.x,e8.y]),(0,E.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:l}=eH.current;if(!e||null==eh.current||!t||!l)return;let{onDragOver:i}=eb.current,a=r.get(tn),o=a&&a.rect.current?{id:a.id,rect:a.rect.current,data:a.data,disabled:a.disabled}:null,u={active:e,activatorEvent:t,collisions:n,delta:{x:l.x,y:l.y},over:o};(0,D.unstable_batchedUpdates)(()=>{tl(o),null==i||i(u),K({type:"onDragOver",event:u})})},[tn]),(0,C.Es)(()=>{eH.current={activatorEvent:ep,active:ed,activeNode:ek,collisionRect:te,collisions:tt,droppableRects:ex,draggableNodes:ee,draggingNode:eQ,draggingNodeRect:eZ,droppableContainers:eu,over:tr,scrollableAncestors:e2,scrollAdjustedTranslate:e8},ec.current={initial:eZ,translated:te}},[ed,ek,tt,te,ee,eQ,eZ,ex,eu,tr,e2,e8]),function(e){let{acceleration:t,activator:n=b.Pointer,canScroll:r,draggingRect:l,enabled:i,interval:a=5,order:o=m.TreeOrder,pointerCoordinates:u,scrollableAncestors:s,scrollableAncestorRects:c,delta:d,threshold:h}=e,g=function(e){let{delta:t,disabled:n}=e,r=(0,C.ZC)(t);return(0,C.KG)(e=>{if(n||!r||!e)return eC;let l={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[f.Backward]:e.x[f.Backward]||-1===l.x,[f.Forward]:e.x[f.Forward]||1===l.x},y:{[f.Backward]:e.y[f.Backward]||-1===l.y,[f.Forward]:e.y[f.Forward]||1===l.y}}},[n,t,r])}({delta:d,disabled:!i}),[p,v]=(0,C.$$)(),y=(0,E.useRef)({x:0,y:0}),w=(0,E.useRef)({x:0,y:0}),x=(0,E.useMemo)(()=>{switch(n){case b.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case b.DraggableRect:return l}},[n,l,u]),D=(0,E.useRef)(null),M=(0,E.useCallback)(()=>{let e=D.current;if(!e)return;let t=y.current.x*w.current.x,n=y.current.y*w.current.y;e.scrollBy(t,n)},[]),S=(0,E.useMemo)(()=>o===m.TreeOrder?[...s].reverse():s,[o,s]);(0,E.useEffect)(()=>{if(!i||!s.length||!x)return void v();for(let e of S){if((null==r?void 0:r(e))===!1)continue;let n=c[s.indexOf(e)];if(!n)continue;let{direction:l,speed:i}=function(e,t,n,r,l){let{top:i,left:a,right:o,bottom:u}=n;void 0===r&&(r=10),void 0===l&&(l=el);let{isTop:s,isBottom:c,isLeft:d,isRight:h}=er(e),g={x:0,y:0},p={x:0,y:0},v={height:t.height*l.y,width:t.width*l.x};return!s&&i<=t.top+v.height?(g.y=f.Backward,p.y=r*Math.abs((t.top+v.height-i)/v.height)):!c&&u>=t.bottom-v.height&&(g.y=f.Forward,p.y=r*Math.abs((t.bottom-v.height-u)/v.height)),!h&&o>=t.right-v.width?(g.x=f.Forward,p.x=r*Math.abs((t.right-v.width-o)/v.width)):!d&&a<=t.left+v.width&&(g.x=f.Backward,p.x=r*Math.abs((t.left+v.width-a)/v.width)),{direction:g,speed:p}}(e,n,x,t,h);for(let e of["x","y"])g[e][l[e]]||(i[e]=0,l[e]=0);if(i.x>0||i.y>0){v(),D.current=e,p(M,a),y.current=i,w.current=l;return}}y.current={x:0,y:0},w.current={x:0,y:0},v()},[t,M,r,v,i,a,JSON.stringify(x),JSON.stringify(g),p,s,S,c,JSON.stringify(h)])}({...eY,delta:ea,draggingRect:te,pointerCoordinates:e6,scrollableAncestors:e2,scrollableAncestorRects:e5});let tc=(0,E.useMemo)(()=>({active:ed,activeNode:ek,activeNodeRect:eG,activatorEvent:ep,collisions:tt,containerNodeRect:eq,dragOverlay:eJ,draggableNodes:ee,droppableContainers:eu,droppableRects:ex,over:tr,measureDroppableContainers:eE,scrollableAncestors:e2,scrollableAncestorRects:e5,measuringConfiguration:ew,measuringScheduled:eD,windowRect:e1}),[ed,ek,eG,ep,tt,eq,eJ,ee,eu,ex,tr,eE,e2,e5,ew,eD,e1]),td=(0,E.useMemo)(()=>({activatorEvent:ep,activators:ts,active:ed,activeNodeRect:eG,ariaDescribedById:{draggable:em},dispatch:B,draggableNodes:ee,over:tr,measureDroppableContainers:eE}),[ep,ts,ed,eG,B,em,ee,tr,eE]);return E.createElement(k.Provider,{value:j},E.createElement(eF.Provider,{value:td},E.createElement(eK.Provider,{value:tc},E.createElement(eX.Provider,{value:ti},L)),E.createElement(e_,{disabled:(null==R?void 0:R.restoreFocus)===!1})),E.createElement(N,{...R,hiddenTextDescribedById:em}))}),eq=(0,E.createContext)(null),eH="button";function eV(e){let{id:t,data:n,disabled:r=!1,attributes:l}=e,i=(0,C.YG)("Draggable"),{activators:a,activatorEvent:o,active:u,activeNodeRect:s,ariaDescribedById:c,draggableNodes:d,over:h}=(0,E.useContext)(eF),{role:f=eH,roleDescription:g="draggable",tabIndex:p=0}=null!=l?l:{},v=(null==u?void 0:u.id)===t,b=(0,E.useContext)(v?eX:eq),[m,y]=(0,C.lk)(),[w,x]=(0,C.lk)(),D=(0,E.useMemo)(()=>a.reduce((e,n)=>{let{eventName:r,handler:l}=n;return e[r]=e=>{l(e,t)},e},{}),[a,t]),M=(0,C.YN)(n);return(0,C.Es)(()=>(d.set(t,{id:t,key:i,node:m,activatorNode:w,data:M}),()=>{let e=d.get(t);e&&e.key===i&&d.delete(t)}),[d,t]),{active:u,activatorEvent:o,activeNodeRect:s,attributes:(0,E.useMemo)(()=>({role:f,tabIndex:p,"aria-disabled":r,"aria-pressed":!!v&&f===eH||void 0,"aria-roledescription":g,"aria-describedby":c.draggable}),[r,f,p,v,g,c.draggable]),isDragging:v,listeners:r?void 0:D,node:m,over:h,setNodeRef:y,setActivatorNodeRef:x,transform:b}}function eJ(){return(0,E.useContext)(eK)}let eQ={timeout:25};function eZ(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:l}=e,i=(0,C.YG)("Droppable"),{active:a,dispatch:o,over:u,measureDroppableContainers:s}=(0,E.useContext)(eF),c=(0,E.useRef)({disabled:n}),d=(0,E.useRef)(!1),f=(0,E.useRef)(null),g=(0,E.useRef)(null),{disabled:p,updateMeasurementsFor:v,timeout:b}={...eQ,...l},m=(0,C.YN)(null!=v?v:r),y=eR({callback:(0,E.useCallback)(()=>{if(!d.current){d.current=!0;return}null!=g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{s(Array.isArray(m.current)?m.current:[m.current]),g.current=null},b)},[b]),disabled:p||!a}),w=(0,E.useCallback)((e,t)=>{y&&(t&&(y.unobserve(t),d.current=!1),e&&y.observe(e))},[y]),[x,D]=(0,C.lk)(w),M=(0,C.YN)(t);return(0,E.useEffect)(()=>{y&&x.current&&(y.disconnect(),d.current=!1,y.observe(x.current))},[x,y]),(0,E.useEffect)(()=>(o({type:h.RegisterDroppable,element:{id:r,key:i,disabled:n,node:x,rect:f,data:M}}),()=>o({type:h.UnregisterDroppable,key:i,id:r})),[r]),(0,E.useEffect)(()=>{n!==c.current.disabled&&(o({type:h.SetDroppableDisabled,id:r,key:i,disabled:n}),c.current.disabled=n)},[r,i,n,o]),{active:a,rect:f,isOver:(null==u?void 0:u.id)===r,node:x,over:u,setNodeRef:D}}},87256:(e,t,n)=>{n.d(t,{JR:()=>D,_G:()=>c,be:()=>a,gB:()=>f,gl:()=>w});var r=n(12115),l=n(44923),i=n(39768);function a(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function o(e){return null!==e&&e>=0}let u=e=>{let{rects:t,activeIndex:n,overIndex:r,index:l}=e,i=a(t,r,n),o=t[l],u=i[l];return u&&o?{x:u.left-o.left,y:u.top-o.top,scaleX:u.width/o.width,scaleY:u.height/o.height}:null},s={scaleX:1,scaleY:1},c=e=>{var t,n,r,l;let i,a,o,{activeIndex:u,activeNodeRect:c,index:d,rects:h,overIndex:f}=e,g=null!=(t=h[u])?t:c;if(!g)return null;if(d===u){let e=h[f];return e?{x:0,y:u<f?e.top+e.height-(g.top+g.height):e.top-g.top,...s}:null}let p=(n=h,r=d,l=u,i=n[r],a=n[r-1],o=n[r+1],i?l<r?a?i.top-(a.top+a.height):o?o.top-(i.top+i.height):0:o?o.top-(i.top+i.height):a?i.top-(a.top+a.height):0:0);return d>u&&d<=f?{x:0,y:-g.height-p,...s}:d<u&&d>=f?{x:0,y:g.height+p,...s}:{x:0,y:0,...s}},d="Sortable",h=r.createContext({activeIndex:-1,containerId:d,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:u,disabled:{draggable:!1,droppable:!1}});function f(e){let{children:t,id:n,items:a,strategy:o=u,disabled:s=!1}=e,{active:c,dragOverlay:f,droppableRects:g,over:p,measureDroppableContainers:v}=(0,l.fF)(),b=(0,i.YG)(d,n),m=null!==f.rect,y=(0,r.useMemo)(()=>a.map(e=>"object"==typeof e&&"id"in e?e.id:e),[a]),w=null!=c,x=c?y.indexOf(c.id):-1,E=p?y.indexOf(p.id):-1,D=(0,r.useRef)(y),C=!function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}(y,D.current),M=-1!==E&&-1===x||C,S="boolean"==typeof s?{draggable:s,droppable:s}:s;(0,i.Es)(()=>{C&&w&&v(y)},[C,y,w,v]),(0,r.useEffect)(()=>{D.current=y},[y]);let R=(0,r.useMemo)(()=>({activeIndex:x,containerId:b,disabled:S,disableTransforms:M,items:y,overIndex:E,useDragOverlay:m,sortedRects:y.reduce((e,t,n)=>{let r=g.get(t);return r&&(e[n]=r),e},Array(y.length)),strategy:o}),[x,b,S.draggable,S.droppable,M,y,E,g,m,o]);return r.createElement(h.Provider,{value:R},t)}let g=e=>{let{id:t,items:n,activeIndex:r,overIndex:l}=e;return a(n,r,l).indexOf(t)},p=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:l,items:i,newIndex:a,previousItems:o,previousContainerId:u,transition:s}=e;return!!s&&!!r&&(o===i||l!==a)&&(!!n||a!==l&&t===u)},v={duration:200,easing:"ease"},b="transform",m=i.Ks.Transition.toString({property:b,duration:0,easing:"linear"}),y={roleDescription:"sortable"};function w(e){var t,n,a,u;let{animateLayoutChanges:s=p,attributes:c,disabled:d,data:f,getNewIndex:w=g,id:x,strategy:E,resizeObserverConfig:D,transition:C=v}=e,{items:M,containerId:S,activeIndex:R,disabled:k,disableTransforms:T,sortedRects:L,overIndex:N,useDragOverlay:O,strategy:I}=(0,r.useContext)(h),z=(t=d,n=k,"boolean"==typeof t?{draggable:t,droppable:!1}:{draggable:null!=(a=null==t?void 0:t.draggable)?a:n.draggable,droppable:null!=(u=null==t?void 0:t.droppable)?u:n.droppable}),A=M.indexOf(x),P=(0,r.useMemo)(()=>({sortable:{containerId:S,index:A,items:M},...f}),[S,f,A,M]),W=(0,r.useMemo)(()=>M.slice(M.indexOf(x)),[M,x]),{rect:Y,node:B,isOver:F,setNodeRef:K}=(0,l.zM)({id:x,data:P,disabled:z.droppable,resizeObserverConfig:{updateMeasurementsFor:W,...D}}),{active:j,activatorEvent:U,activeNodeRect:_,attributes:X,setNodeRef:G,listeners:q,isDragging:H,over:V,setActivatorNodeRef:J,transform:Q}=(0,l.PM)({id:x,data:P,attributes:{...y,...c},disabled:z.draggable}),Z=(0,i.jn)(K,G),$=!!j,ee=$&&!T&&o(R)&&o(N),et=!O&&H,en=et&&ee?Q:null,er=ee?null!=en?en:(null!=E?E:I)({rects:L,activeNodeRect:_,activeIndex:R,overIndex:N,index:A}):null,el=o(R)&&o(N)?w({id:x,items:M,activeIndex:R,overIndex:N}):A,ei=null==j?void 0:j.id,ea=(0,r.useRef)({activeId:ei,items:M,newIndex:el,containerId:S}),eo=M!==ea.current.items,eu=s({active:j,containerId:S,isDragging:H,isSorting:$,id:x,index:A,items:M,newIndex:ea.current.newIndex,previousItems:ea.current.items,previousContainerId:ea.current.containerId,transition:C,wasDragging:null!=ea.current.activeId}),es=function(e){let{disabled:t,index:n,node:a,rect:o}=e,[u,s]=(0,r.useState)(null),c=(0,r.useRef)(n);return(0,i.Es)(()=>{if(!t&&n!==c.current&&a.current){let e=o.current;if(e){let t=(0,l.Sj)(a.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&s(n)}}n!==c.current&&(c.current=n)},[t,n,a,o]),(0,r.useEffect)(()=>{u&&s(null)},[u]),u}({disabled:!eu,index:A,node:B,rect:Y});return(0,r.useEffect)(()=>{$&&ea.current.newIndex!==el&&(ea.current.newIndex=el),S!==ea.current.containerId&&(ea.current.containerId=S),M!==ea.current.items&&(ea.current.items=M)},[$,el,S,M]),(0,r.useEffect)(()=>{if(ei===ea.current.activeId)return;if(null!=ei&&null==ea.current.activeId){ea.current.activeId=ei;return}let e=setTimeout(()=>{ea.current.activeId=ei},50);return()=>clearTimeout(e)},[ei]),{active:j,activeIndex:R,attributes:X,data:P,rect:Y,index:A,newIndex:el,items:M,isOver:F,isSorting:$,isDragging:H,listeners:q,node:B,overIndex:N,over:V,setNodeRef:Z,setActivatorNodeRef:J,setDroppableNodeRef:K,setDraggableNodeRef:G,transform:null!=es?es:er,transition:es||eo&&ea.current.newIndex===A?m:(!et||(0,i.kx)(U))&&C&&($||eu)?i.Ks.Transition.toString({...C,property:b}):void 0}}function x(e){if(!e)return!1;let t=e.data.current;return!!t&&"sortable"in t&&"object"==typeof t.sortable&&"containerId"in t.sortable&&"items"in t.sortable&&"index"in t.sortable}let E=[l.vL.Down,l.vL.Right,l.vL.Up,l.vL.Left],D=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:a,droppableContainers:o,over:u,scrollableAncestors:s}}=t;if(E.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];o.getEnabled().forEach(n=>{if(!n||null!=n&&n.disabled)return;let i=a.get(n.id);if(i)switch(e.code){case l.vL.Down:r.top<i.top&&t.push(n);break;case l.vL.Up:r.top>i.top&&t.push(n);break;case l.vL.Left:r.left>i.left&&t.push(n);break;case l.vL.Right:r.left<i.left&&t.push(n)}});let h=(0,l.y$)({active:n,collisionRect:r,droppableRects:a,droppableContainers:t,pointerCoordinates:null}),f=(0,l.Vy)(h,"id");if(f===(null==u?void 0:u.id)&&h.length>1&&(f=h[1].id),null!=f){let e=o.get(n.id),t=o.get(f),u=t?a.get(t.id):null,h=null==t?void 0:t.node.current;if(h&&u&&e&&t){var c,d;let n=(0,l.sl)(h).some((e,t)=>s[t]!==e),a=C(e,t),o=(c=e,d=t,!!x(c)&&!!x(d)&&!!C(c,d)&&c.data.current.sortable.index<d.data.current.sortable.index),f=n||!a?{x:0,y:0}:{x:o?r.width-u.width:0,y:o?r.height-u.height:0},g={x:u.left,y:u.top};return f.x&&f.y?g:(0,i.Re)(g,f)}}}};function C(e,t){return!!x(e)&&!!x(t)&&e.data.current.sortable.containerId===t.data.current.sortable.containerId}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3554],{85309:(e,t,a)=>{"use strict";a.d(t,{default:()=>v});var s=a(95155),l=a(12115),r=a(98500),i=a.n(r),n=a(35497),o=a(3534),c=a(28777),d=a(43666);let u=a(41463).env.NEXT_PUBLIC_CLOUD_URL;function v({toolId:e,machineId:t}){let a=o.dM[e],[r,x]=(0,l.useState)([]),[h,p]=(0,l.useState)(!0),[b,f]=(0,l.useState)({}),[m,E]=(0,l.useState)(!1),[j,P]=(0,l.useState)(!1),[k,w]=(0,l.useState)(""),[g,N]=(0,l.useState)(!1),[S,_]=(0,l.useState)(""),[A,U]=(0,l.useState)([]);(0,l.useEffect)(()=>{let e=!0;return(async()=>{try{let[t,a,s,l]=await Promise.all([fetch("/api/providers"),fetch("/api/settings"),fetch("/api/tunnel/status"),fetch("/api/keys")]);if(!e)return;if(t.ok){let e=await t.json();x(e.connections||[])}if(a.ok){let e=await a.json();E(e.cloudEnabled||!1)}if(s.ok){let e=await s.json();P(!!(e.tunnel?.enabled||e.tunnel?.settingsEnabled)),w(e.tunnel?.publicUrl||""),N(!!(e.tailscale?.enabled||e.tailscale?.settingsEnabled)),_(e.tailscale?.tunnelUrl||"")}if(l.ok){let e=await l.json();U(e.keys||[])}}catch(e){console.log("Error loading tool data:",e)}finally{e&&p(!1)}})(),()=>{e=!1}},[]);let y=()=>r.filter(e=>!1!==e.isActive),C=(0,l.useCallback)((e,t,a)=>{f(s=>s[e]?.[t]===a?s:{...s,[e]:{...s[e],[t]:a}})},[]);return(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:px-0",children:[(0,s.jsxs)(i(),{href:"/dashboard/cli-tools",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary w-fit",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"arrow_back"}),"Back to CLI Tools"]}),(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:a.name}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:a.description})]}),h?(0,s.jsx)(n.Qv,{}):(()=>{let t,l,r,i=(t=y(),l=[],r=new Set,t.forEach(e=>{let t=c.Xg[e.provider]||e.provider;(0,c.KC)(e.provider).forEach(a=>{let s=`${t}/${a.id}`;r.has(s)||(r.add(s),l.push({value:s,label:`${t}/${a.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:a.id}))})}),l).length>0,n={tool:a,isExpanded:!0,onToggle:()=>{},baseUrl:j&&k?k:m&&u?u:window.location.origin,apiKeys:A,tunnelEnabled:j,tunnelPublicUrl:k,tailscaleEnabled:g,tailscaleUrl:S};switch(e){case"claude":return(0,s.jsx)(d.Tk,{...n,activeProviders:y(),modelMappings:b[e]||{},onModelMappingChange:(t,a)=>C(e,t,a),hasActiveProviders:i,cloudEnabled:m});case"codex":return(0,s.jsx)(d.Ah,{...n,activeProviders:y(),cloudEnabled:m});case"opencode":return(0,s.jsx)(d.qO,{...n,activeProviders:y(),cloudEnabled:m});case"cowork":return(0,s.jsx)(d.Q6,{...n,activeProviders:y(),hasActiveProviders:i,cloudEnabled:m,cloudUrl:u,tunnelEnabled:j,tunnelPublicUrl:k,tailscaleEnabled:g,tailscaleUrl:S});case"droid":return(0,s.jsx)(d.ZM,{...n,activeProviders:y(),hasActiveProviders:i,cloudEnabled:m});case"openclaw":return(0,s.jsx)(d.yZ,{...n,activeProviders:y(),hasActiveProviders:i,cloudEnabled:m});case"hermes":return(0,s.jsx)(d.RF,{...n,activeProviders:y(),hasActiveProviders:i,cloudEnabled:m});case"copilot":return(0,s.jsx)(d.h1,{...n,activeProviders:y(),cloudEnabled:m});case"cline":return(0,s.jsx)(d.aG,{...n,activeProviders:y(),cloudEnabled:m});case"kilo":return(0,s.jsx)(d.c9,{...n,activeProviders:y(),cloudEnabled:m});case"deepseek-tui":return(0,s.jsx)(d.lF,{...n,activeProviders:y(),hasActiveProviders:i,cloudEnabled:m});case"jcode":return(0,s.jsx)(d.mW,{...n,activeProviders:y(),hasActiveProviders:i,cloudEnabled:m});default:return(0,s.jsx)(d.a7,{toolId:e,...n,activeProviders:y(),cloudEnabled:m,tunnelEnabled:j})}})()]})}},89194:(e,t,a)=>{Promise.resolve().then(a.bind(a,85309))}},e=>{e.O(0,[2574,3862,1051,5772,1321,5497,6069,8441,3794,7358],()=>e(e.s=89194)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{53501:(e,s,l)=>{"use strict";l.d(s,{default:()=>m});var t=l(95155),a=l(12115),r=l(35497),i=l(3534),c=l(43666),n=l(98500),o=l.n(n),d=l(5772);function x({toolId:e,tool:s,status:l}){let a=l?l.installed?l.has9Router?{label:"Connected",cls:"bg-green-500/10 text-green-600 dark:text-green-400"}:{label:"Not configured",cls:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400"}:{label:"Not installed",cls:"bg-red-500/10 text-red-600 dark:text-red-400"}:{label:"Unknown",cls:"bg-gray-500/10 text-gray-500"};return(0,t.jsx)(o(),{href:`/dashboard/cli-tools/${e}`,className:"block",children:(0,t.jsx)(r.Zp,{padding:"sm",className:"h-full overflow-hidden hover:border-primary/50 transition-colors cursor-pointer",children:(0,t.jsxs)("div",{className:"flex h-full flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:s.image?(0,t.jsx)(d.default,{src:s.image,alt:s.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}}):s.icon?(0,t.jsx)("span",{className:"material-symbols-outlined text-[28px]",style:{color:s.color},children:s.icon}):null}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"font-medium text-sm truncate",children:s.name}),(0,t.jsx)("span",{className:`inline-block mt-0.5 px-1.5 py-0.5 text-[10px] font-medium rounded-full ${a.cls}`,children:a.label})]}),(0,t.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[18px] shrink-0",children:"chevron_right"})]}),(0,t.jsx)("p",{className:"text-xs text-text-muted line-clamp-2",children:s.description})]})})})}function m({machineId:e}){let[s,l]=(0,a.useState)(!0),[n,o]=(0,a.useState)({});if((0,a.useEffect)(()=>{let e=!0;return(async()=>{try{let s=await fetch("/api/cli-tools/all-statuses");s.ok&&e&&o(await s.json())}catch(e){console.log("Error fetching tool statuses:",e)}finally{e&&l(!1)}})(),()=>{e=!1}},[]),s)return(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:[(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{})]});let d=Object.entries(i.dM),g=Object.entries(i.wn);return(0,t.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-1 sm:px-0",children:[(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:d.map(([e,s])=>(0,t.jsx)(x,{toolId:e,tool:s,status:n[e]},e))}),(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"security"}),(0,t.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"MITM Tools"})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:g.map(([e,s])=>(0,t.jsx)(c.gY,{tool:s},e))})]})]})}},55187:(e,s,l)=>{Promise.resolve().then(l.bind(l,53501))}},e=>{e.O(0,[2574,3862,1051,5772,1321,5497,6069,8441,3794,7358],()=>e(e.s=55187)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3649],{2525:(e,t,s)=>{Promise.resolve().then(s.bind(s,47295))},47295:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>x});var a=s(95155),l=s(12115),r=s(44923),o=s(87256),i=s(39768),n=s(5020),c=s(35497),d=s(11059);s(52679);let m=/^[a-zA-Z0-9_.\-]+$/;function x(){let[e,t]=(0,l.useState)([]),[s,r]=(0,l.useState)(!0),[o,i]=(0,l.useState)(!1),[n,m]=(0,l.useState)(null),[x,u]=(0,l.useState)([]),[b,f]=(0,l.useState)({}),[g,j]=(0,l.useState)(null),{copied:y,copy:v}=(0,d.C)();(0,l.useEffect)(()=>{fetch("/api/auth/me").then(e=>e.json()).then(e=>{"sub_user"===e.role&&(window.location.href="/dashboard/usage")}).catch(()=>{}),w()},[]);let w=async()=>{try{let[e,s,a]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings")]),l=await e.json(),r=await s.json(),o=a.ok?await a.json():{};e.ok&&t((l.combos||[]).filter(e=>!e.kind)),s.ok&&u(r.connections||[]),f(o.comboStrategies||{})}catch(e){console.log("Error fetching data:",e)}finally{r(!1)}},N=async e=>{try{let t=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok)await w(),i(!1);else{let e=await t.json();alert(e.error||"Failed to create combo")}}catch(e){console.log("Error creating combo:",e)}},k=async(e,t)=>{try{let s=await fetch(`/api/combos/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(s.ok)await w(),m(null);else{let e=await s.json();alert(e.error||"Failed to update combo")}}catch(e){console.log("Error updating combo:",e)}},C=async s=>{j({title:"Delete Combo",message:"Delete this combo?",onConfirm:async()=>{j(null);try{(await fetch(`/api/combos/${s}`,{method:"DELETE"})).ok&&t(e.filter(e=>e.id!==s))}catch(e){console.log("Error deleting combo:",e)}}})},S=async(e,t)=>{try{let s={...b};t?s[e]={fallbackStrategy:"round-robin"}:delete s[e],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:s})}),f(s)}catch(e){console.log("Error updating combo strategy:",e)}};return s?(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(c.Qv,{}),(0,a.jsx)(c.Qv,{})]}):(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h1",{className:"text-2xl font-semibold",children:"Combos"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Create model combos with fallback support"})]}),(0,a.jsx)(c.$n,{icon:"add",onClick:()=>i(!0),className:"w-full sm:w-auto",children:"Create Combo"})]}),0===e.length?(0,a.jsx)(c.Zp,{children:(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"layers"})}),(0,a.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No combos yet"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create model combos with fallback support"}),(0,a.jsx)(c.$n,{icon:"add",onClick:()=>i(!0),className:"w-full sm:w-auto",children:"Create Combo"})]})}):(0,a.jsx)("div",{className:"flex flex-col gap-4",children:e.map(e=>(0,a.jsx)(h,{combo:e,copied:y,onCopy:v,onEdit:()=>m(e),onDelete:()=>C(e.id),roundRobinEnabled:b[e.name]?.fallbackStrategy==="round-robin",onToggleRoundRobin:t=>S(e.name,t)},e.id))}),(0,a.jsx)(p,{isOpen:o,onClose:()=>i(!1),onSave:N,activeProviders:x},"create"),(0,a.jsx)(p,{isOpen:!!n,combo:n,onClose:()=>m(null),onSave:e=>k(n.id,e),activeProviders:x},n?.id||"new"),(0,a.jsx)(c.uo,{isOpen:!!g,onClose:()=>j(null),onConfirm:g?.onConfirm,title:g?.title||"Confirm",message:g?.message,variant:"danger"})]})}function h({combo:e,copied:t,onCopy:s,onEdit:l,onDelete:r,roundRobinEnabled:o,onToggleRoundRobin:i}){return(0,a.jsx)(c.Zp,{padding:"sm",className:"group",children:(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-3 sm:items-center",children:[(0,a.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("code",{className:"block truncate font-mono text-sm font-medium",children:e.name}),(0,a.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===e.models.length?(0,a.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):e.models.slice(0,3).map((e,t)=>(0,a.jsx)("code",{className:"max-w-full truncate rounded bg-black/5 px-1.5 py-0.5 font-mono text-[10px] text-text-muted dark:bg-white/5 sm:max-w-[220px]",children:e},t)),e.models.length>3&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",e.models.length-3," more"]})]})]})]}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-1.5 rounded-lg bg-black/[0.02] px-2 py-1.5 dark:bg-white/[0.02] sm:justify-start sm:bg-transparent sm:px-0 sm:py-0 sm:dark:bg-transparent",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,a.jsx)(c.lM,{size:"sm",checked:o,onChange:i})]}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,a.jsxs)("button",{onClick:t=>{t.stopPropagation(),s(e.name,`combo-${e.id}`)},className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Copy combo name",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:t===`combo-${e.id}`?"check":"content_copy"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,a.jsxs)("button",{onClick:l,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Edit",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,a.jsxs)("button",{onClick:r,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 transition-colors hover:bg-red-500/10",title:"Delete",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]})})}function u({id:e,index:t,model:s,isFirst:r,isLast:n,onEdit:c,onMoveUp:d,onMoveDown:m,onRemove:x}){let{attributes:h,listeners:p,setNodeRef:b,transform:f,isDragging:g}=(0,o.gl)({id:e}),j={transform:i.Ks.Transform.toString(f),opacity:g?.4:1,zIndex:g?999:void 0},[y,v]=(0,l.useState)(!1),[w,N]=(0,l.useState)(s),k=()=>{let e=w.trim();e&&e!==s?c(e):N(s),v(!1)};return(0,a.jsxs)("div",{ref:b,style:j,className:`group flex min-w-0 items-center gap-1.5 rounded-md px-2 py-1 bg-black/[0.02] hover:bg-black/[0.04] dark:bg-white/[0.02] dark:hover:bg-white/[0.04] transition-colors ${g?"shadow-md ring-1 ring-primary/30":""}`,children:[(0,a.jsx)("button",{...h,...p,type:"button",className:"cursor-grab touch-none p-0.5 rounded text-text-muted hover:text-primary active:cursor-grabbing shrink-0",title:"Drag to reorder",children:(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,a.jsx)("circle",{cx:"9",cy:"4",r:"2"}),(0,a.jsx)("circle",{cx:"15",cy:"4",r:"2"}),(0,a.jsx)("circle",{cx:"9",cy:"12",r:"2"}),(0,a.jsx)("circle",{cx:"15",cy:"12",r:"2"}),(0,a.jsx)("circle",{cx:"9",cy:"20",r:"2"}),(0,a.jsx)("circle",{cx:"15",cy:"20",r:"2"})]})}),(0,a.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-3 text-center shrink-0",children:t+1}),y?(0,a.jsx)("input",{autoFocus:!0,value:w,onChange:e=>N(e.target.value),onBlur:k,onKeyDown:e=>{"Enter"===e.key&&k(),"Escape"===e.key&&(N(s),v(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-white px-1.5 py-0.5 font-mono text-xs text-text-main outline-none dark:bg-black/20"}):(0,a.jsx)("div",{className:"min-w-0 flex-1 cursor-text truncate rounded px-1.5 py-0.5 font-mono text-xs text-text-main hover:bg-black/5 dark:hover:bg-white/5",onClick:()=>v(!0),title:"Click to edit",children:s}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,a.jsx)("button",{onClick:d,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,a.jsx)("button",{onClick:m,disabled:n,className:`p-0.5 rounded ${n?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})})]}),(0,a.jsx)("button",{onClick:x,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 transition-all",title:"Remove",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]})}function p({isOpen:e,combo:t,onClose:s,onSave:i,activeProviders:d,kindFilter:x=null}){let[h,b]=(0,l.useState)(t?.name||""),[f,g]=(0,l.useState)(t?.models||[]),[j,y]=(0,l.useState)(!1),[v,w]=(0,l.useState)(!1),[N,k]=(0,l.useState)(""),[C,S]=(0,l.useState)({}),E=(0,r.FR)((0,r.MS)(r.AN,{activationConstraint:{distance:5}}),(0,r.MS)(r.uN,{coordinateGetter:o.JR})),O=f.map((e,t)=>({uid:`item-${t}`,model:e})),_=async()=>{try{let e=await fetch("/api/models/alias");if(!e.ok)return;let t=await e.json();S(t.aliases||{})}catch(e){console.error("Error fetching modal data:",e)}};(0,l.useEffect)(()=>{e&&_()},[e]);let $=e=>e.trim()?m.test(e)?(k(""),!0):(k("Only letters, numbers, -, _ and . allowed"),!1):(k("Name is required"),!1),D=async()=>{$(h)&&(w(!0),await i({name:h.trim(),models:f}),w(!1))},M=!!t;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.aF,{isOpen:e,onClose:s,title:M?"Edit Combo":"Create Combo",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(c.pd,{label:"Combo Name",value:h,onChange:e=>{let t=e.target.value;b(t),t?$(t):k("")},placeholder:"my-combo",error:N}),(0,a.jsx)("p",{className:"text-[10px] text-text-muted mt-0.5",children:"Only letters, numbers, -, _ and . allowed"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Models"}),0===f.length?(0,a.jsxs)("div",{className:"text-center py-4 border border-dashed border-black/10 dark:border-white/10 rounded-lg bg-black/[0.01] dark:bg-white/[0.01]",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-xl mb-1",children:"layers"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"No models added yet"})]}):(0,a.jsx)(r.Mp,{sensors:E,collisionDetection:r.fp,onDragEnd:e=>{let{active:t,over:s}=e;if(s&&t.id!==s.id){let e=O.findIndex(e=>e.uid===t.id),a=O.findIndex(e=>e.uid===s.id);-1!==e&&-1!==a&&g(t=>(0,o.be)(t,e,a))}},modifiers:[n.FN,n.gj],children:(0,a.jsx)(o.gB,{items:O.map(e=>e.uid),strategy:o._G,children:(0,a.jsx)("div",{className:"flex max-h-[55vh] min-w-0 flex-col gap-1 overflow-y-auto sm:max-h-[350px]",children:O.map(({uid:e,model:t},s)=>(0,a.jsx)(u,{id:e,index:s,model:t,isFirst:0===s,isLast:s===O.length-1,onEdit:e=>{let t=[...f];t[s]=e,g(t)},onMoveUp:()=>(e=>{if(0===e)return;let t=[...f];[t[e-1],t[e]]=[t[e],t[e-1]],g(t)})(s),onMoveDown:()=>(e=>{if(e===f.length-1)return;let t=[...f];[t[e],t[e+1]]=[t[e+1],t[e]],g(t)})(s),onRemove:()=>{g(f.filter((e,t)=>t!==s))}},e))})})}),(0,a.jsxs)("button",{onClick:()=>y(!0),className:"w-full mt-2 py-2 border border-dashed border-black/10 dark:border-white/10 rounded-lg text-xs text-primary font-medium hover:text-primary hover:border-primary/50 transition-colors flex items-center justify-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,a.jsx)(c.$n,{onClick:s,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,a.jsx)(c.$n,{onClick:D,fullWidth:!0,size:"sm",disabled:!h.trim()||!!N||v,children:v?"Saving...":M?"Save":"Create"})]})]})}),(0,a.jsx)(c.rq,{isOpen:j,onClose:()=>y(!1),onSelect:e=>{f.includes(e.value)||g([...f,e.value])},onDeselect:e=>{g(f.filter(t=>t!==e.value))},activeProviders:d,modelAliases:C,title:"Add Model to Combo",kindFilter:x,addedModelValues:f,closeOnSelect:!1})]})}}},e=>{e.O(0,[2574,3862,1051,7055,1321,5497,8441,3794,7358],()=>e(e.s=2525)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1119],{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})}},27091:(e,t,s)=>{Promise.resolve().then(s.bind(s,89455))},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(
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1119],{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})}},27091:(e,t,s)=>{Promise.resolve().then(s.bind(s,89455))},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(43666),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,6069,5095,8441,3794,7358],()=>e(e.s=27091)),_N_E=e.O()}]);
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[182],{37590:(e,t,s)=>{Promise.resolve().then(s.bind(s,94588))},94588:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>L});var a=s(95155),r=s(73321),o=s(98500),l=s.n(o),n=s(12115),i=s(35497),d=s(57250),c=s(32598),m=s(52679),u=s(28777),p=s(11059),x=s(14051),h=s.n(x);function b({until:e}){let[t,s]=(0,n.useState)("");return((0,n.useEffect)(()=>{let t=()=>{let t=new Date(e).getTime()-Date.now();if(t<=0)return void s("");let a=Math.floor(t/1e3);a<60?s(`${a}s`):a<3600?s(`${Math.floor(a/60)}m ${a%60}s`):s(`${Math.floor(a/3600)}h ${Math.floor(a%3600/60)}m`)};t();let a=setInterval(t,1e3);return()=>clearInterval(a)},[e]),t)?(0,a.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",t]}):null}function f({connection:e,proxyPools:t,isOAuth:s,isFirst:r,isLast:o,onMoveUp:l,onMoveDown:d,onToggleActive:c,onUpdateProxy:m,onEdit:u,onDelete:p}){let[x,h]=(0,n.useState)(!1),[g,y]=(0,n.useState)(!1),[v,j]=(0,n.useState)(!1),w=(0,n.useRef)(null),N=new Map((t||[]).map(e=>[e.id,e])),k=e.providerSpecificData?.proxyPoolId||null,S=k?N.get(k):null,C=e.providerSpecificData?.connectionProxyEnabled===!0&&!!e.providerSpecificData?.connectionProxyUrl,$=!!k||C,_=S?`Pool: ${S.name}`:k?`Pool: ${k} (inactive/missing)`:C?`Legacy: ${e.providerSpecificData?.connectionProxyUrl}`:"",E="",I=S?.proxyUrl||e.providerSpecificData?.connectionProxyUrl;if(I)try{let e=new URL(I);E=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`}catch{E=I}let P=S?.noProxy||e.providerSpecificData?.connectionNoProxy||"",A=S?.isActive===!0?"success":k||C?"error":"default",T=Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(Boolean).sort()[0]||null;(0,n.useEffect)(()=>{let t=()=>{j(!!Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>e&&new Date(e).getTime()>Date.now()).sort()[0])};t();let s=T?setInterval(t,1e3):null;return()=>{s&&clearInterval(s)}},[T]),(0,n.useEffect)(()=>{if(!x)return;let e=e=>{w.current&&!w.current.contains(e.target)&&h(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[x]);let R="unavailable"!==e.testStatus||v?e.testStatus:"active",M=s?e.name||e.email||e.displayName||"OAuth Account":e.name,O=async e=>{y(!0);try{await m("__none__"===e?null:e)}finally{y(!1),h(!1)}};return(0,a.jsxs)("div",{className:`group flex flex-col gap-3 p-2 rounded-lg sm:flex-row sm:items-center sm:justify-between hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${!1===e.isActive?"opacity-60":""}`,children:[(0,a.jsxs)("div",{className:"flex w-full min-w-0 flex-1 items-start gap-3 sm:items-center",children:[(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("button",{onClick:l,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,a.jsx)("button",{onClick:d,disabled:o,className:`p-0.5 rounded ${o?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:s?"lock":"key"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium truncate",children:M}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-1",children:[(0,a.jsx)(i.Ex,{variant:!1===e.isActive?"default":"active"===R||"success"===R?"success":"error"===R||"expired"===R||"unavailable"===R?"error":"default",size:"sm",dot:!0,children:!1===e.isActive?"disabled":R||"Unknown"}),$&&(0,a.jsx)(i.Ex,{variant:A,size:"sm",children:"Proxy"}),v&&!1!==e.isActive&&(0,a.jsx)(b,{until:T}),e.lastError&&!1!==e.isActive&&(0,a.jsx)("span",{className:"text-xs text-red-500 truncate max-w-[300px]",title:e.lastError,children:e.lastError}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["#",e.priority]})]}),$&&(0,a.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-2",children:[(0,a.jsx)("span",{className:"text-[11px] text-text-muted truncate max-w-[420px]",title:_,children:_}),E&&(0,a.jsx)("code",{className:"text-[10px] font-mono bg-black/5 dark:bg-white/5 px-1 py-0.5 rounded text-text-muted",children:E}),P&&(0,a.jsxs)("span",{className:"text-[11px] text-text-muted truncate max-w-[320px]",title:P,children:["no_proxy: ",P]})]})]})]}),(0,a.jsxs)("div",{className:"flex w-full flex-wrap items-center justify-between gap-2 sm:w-auto sm:justify-end",children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(t||[]).length>0&&(0,a.jsxs)("div",{className:"relative",ref:w,children:[(0,a.jsxs)("button",{onClick:()=>h(e=>!e),className:`flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 transition-colors ${$?"text-primary":"text-text-muted hover:text-primary"}`,disabled:g,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:g?"progress_activity":"lan"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Proxy"})]}),x&&(0,a.jsxs)("div",{className:"absolute right-0 top-full mt-1 z-50 bg-bg border border-border rounded-lg shadow-lg py-1 min-w-[160px]",children:[(0,a.jsx)("button",{onClick:()=>O("__none__"),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${!k?"text-primary font-medium":"text-text-main"}`,children:"None"}),(t||[]).map(e=>(0,a.jsx)("button",{onClick:()=>O(e.id),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${k===e.id?"text-primary font-medium":"text-text-main"}`,children:e.name},e.id))]})]}),(0,a.jsxs)("button",{onClick:u,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,a.jsxs)("button",{onClick:p,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-red-500/10 text-red-500",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]}),(0,a.jsx)(i.lM,{size:"sm",checked:e.isActive??!0,onChange:c,title:e.isActive??!0?"Disable":"Enable"})]})]})}function g({isOpen:e,provider:t,providerName:s,proxyPools:r,onSave:o,onClose:l}){let d="__none__",[c,m]=(0,n.useState)({name:"",apiKey:"",priority:1,proxyPoolId:d}),[u,p]=(0,n.useState)(!1),[x,h]=(0,n.useState)(null),[b,f]=(0,n.useState)(!1),y=s?`${s} Key`:"Production Key";(0,n.useEffect)(()=>{e&&(m({name:s?`${s} Key`:"",apiKey:"",priority:1,proxyPoolId:d}),h(null),p(!1),f(!1))},[e,s]);let v=async()=>{p(!0);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:c.apiKey})}),s=await e.json();h(s.valid?"success":"failed")}catch{h("failed")}finally{p(!1)}},j=async()=>{if(t&&c.apiKey){f(!0);try{let e=!1;try{p(!0),h(null);let s=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:c.apiKey})});e=!!(await s.json()).valid,h(e?"success":"failed")}catch{h("failed")}finally{p(!1)}await o({name:c.name.trim()||y,apiKey:c.apiKey,priority:c.priority,proxyPoolId:c.proxyPoolId===d?null:c.proxyPoolId,testStatus:e?"active":"unknown"})}finally{f(!1)}}};return t?(0,a.jsx)(i.aF,{isOpen:e,title:`Add ${s||t} API Key`,onClose:l,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"Name"}),(0,a.jsx)("input",{className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:c.name,onChange:e=>m({...c,name:e.target.value}),placeholder:y})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"API Key"}),(0,a.jsx)("input",{type:"password",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:c.apiKey,onChange:e=>m({...c,apiKey:e.target.value})})]}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(i.$n,{onClick:v,disabled:!c.apiKey||u||b,variant:"secondary",children:u?"Checking...":"Check"})})]}),x&&(0,a.jsx)(i.Ex,{variant:"success"===x?"success":"error",children:"success"===x?"Valid":"Invalid"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"Priority"}),(0,a.jsx)("input",{type:"number",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:c.priority,onChange:e=>m({...c,priority:Number.parseInt(e.target.value)||1})})]}),(0,a.jsx)(i.l6,{label:"Proxy Pool",value:c.proxyPoolId,onChange:e=>m({...c,proxyPoolId:e.target.value}),options:[{value:d,label:"None"},...(r||[]).map(e=>({value:e.id,label:e.name}))]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:j,fullWidth:!0,disabled:!c.apiKey||b,children:b?"Saving...":"Save"}),(0,a.jsx)(i.$n,{onClick:l,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function y({providerId:e,providerName:t,isOAuth:s}){let[r,o]=(0,n.useState)([]),[l,d]=(0,n.useState)([]),[c,m]=(0,n.useState)(!0),[u,p]=(0,n.useState)(!1),[x,h]=(0,n.useState)(!1),[b,v]=(0,n.useState)(null),[j,w]=(0,n.useState)(null),[N,k]=(0,n.useState)("1"),[S,C]=(0,n.useState)(null),$=(0,n.useCallback)(async()=>{try{let[t,s,a]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}),fetch("/api/settings",{cache:"no-store"})]),r=await t.json(),l=await s.json(),n=a.ok?await a.json():{};t.ok&&o((r.connections||[]).filter(t=>t.provider===e)),s.ok&&d(l.proxyPools||[]);let i=(n.providerStrategies||{})[e]||{};w(i.fallbackStrategy||null),k(null!=i.stickyRoundRobinLimit?String(i.stickyRoundRobinLimit):"1")}catch(e){console.log("ConnectionsCard fetch error:",e)}finally{m(!1)}},[e]);(0,n.useEffect)(()=>{$()},[$]);let _=async(t,s)=>{try{let a=await fetch("/api/settings",{cache:"no-store"}),r=(a.ok?await a.json():{}).providerStrategies||{},o={};t&&(o.fallbackStrategy=t),"round-robin"===t&&""!==s&&(o.stickyRoundRobinLimit=Number(s)||3);let l={...r};0===Object.keys(o).length?delete l[e]:l[e]=o,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:l})})}catch(e){console.log("saveStrategy error:",e)}},E=async(e,t)=>{let s=[...r];[s[e],s[t]]=[s[t],s[e]],o(s);try{await Promise.all([fetch(`/api/providers/${s[e].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:e})}),fetch(`/api/providers/${s[t].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:t})})])}catch{await $()}},I=async e=>{C({title:"Delete Connection",message:"Delete this connection?",onConfirm:async()=>{C(null);try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&o(t=>t.filter(t=>t.id!==e))}catch(e){console.log("delete error:",e)}}})},P=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&o(s=>s.map(s=>s.id===e?{...s,isActive:t}:s))}catch(e){console.log("toggle error:",e)}},A=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:t||null})})).ok&&o(s=>s.map(s=>s.id===e?{...s,providerSpecificData:{...s.providerSpecificData,proxyPoolId:t||null}}:s))}catch(e){console.log("proxy error:",e)}},T=async t=>{try{(await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,...t})})).ok&&(await $(),p(!1))}catch(e){console.log("save apikey error:",e)}},R=async e=>{try{(await fetch(`/api/providers/${b.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await $(),h(!1))}catch(e){console.log("update connection error:",e)}};return c?(0,a.jsx)(i.Zp,{children:(0,a.jsx)("div",{className:"h-20 animate-pulse bg-black/5 rounded-lg"})}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Connections"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,a.jsx)(i.lM,{checked:"round-robin"===j,onChange:e=>{let t=e?"round-robin":null;w(t),e&&!N&&k("1"),_(t,e?N||"1":N)}}),"round-robin"===j&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Sticky:"}),(0,a.jsx)("input",{type:"number",min:1,value:N,onChange:e=>{k(e.target.value),_("round-robin",e.target.value)},className:"w-16 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"})]})]})]}),0===r.length?(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"No connections yet"}),(0,a.jsx)(i.$n,{size:"sm",icon:"add",onClick:()=>p(!0),children:"Add Connection"})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"flex flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:r.map((e,t)=>(0,a.jsx)(f,{connection:e,proxyPools:l,isOAuth:s,isFirst:0===t,isLast:t===r.length-1,onMoveUp:()=>E(t,t-1),onMoveDown:()=>E(t,t+1),onToggleActive:t=>P(e.id,t),onUpdateProxy:t=>A(e.id,t),onEdit:()=>{v(e),h(!0)},onDelete:()=>I(e.id)},e.id))}),(0,a.jsx)("div",{className:"mt-4 flex justify-stretch sm:justify-start",children:(0,a.jsx)(i.$n,{size:"sm",icon:"add",onClick:()=>p(!0),children:"Add"})})]})]}),(0,a.jsx)(g,{isOpen:u,provider:e,providerName:t,proxyPools:l,onSave:T,onClose:()=>p(!1)}),(0,a.jsx)(i.wI,{isOpen:x,connection:b,proxyPools:l,onSave:R,onClose:()=>h(!1)}),(0,a.jsx)(i.uo,{isOpen:!!S,onClose:()=>C(null),onConfirm:S?.onConfirm,title:S?.title||"Confirm",message:S?.message,variant:"danger"})]})}function v({model:e,fullModel:t,displayModel:s,copied:r,onCopy:o,testStatus:l,isCustom:n,isFree:i,onDeleteAlias:d,onTest:c,isTesting:m}){let u="ok"===l?"#22c55e":"error"===l?"#ef4444":void 0;return(0,a.jsx)("div",{className:`group px-3 py-2 rounded-lg border ${"ok"===l?"border-green-500/40":"error"===l?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base",style:u?{color:u}:void 0,children:"ok"===l?"check_circle":"error"===l?"cancel":"smart_toy"}),(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:s||t}),e.name&&(0,a.jsx)("span",{className:"text-[9px] text-text-muted/70 italic pl-1",children:e.name})]}),c&&(0,a.jsxs)("div",{className:"relative group/btn",children:[(0,a.jsx)("button",{onClick:c,disabled:m,className:`p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-opacity ${m?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",style:m?{animation:"spin 1s linear infinite"}:void 0,children:m?"progress_activity":"science"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:m?"Testing...":"Test"})]}),(0,a.jsxs)("div",{className:"relative group/btn",children:[(0,a.jsx)("button",{onClick:()=>o(t,`model-${e.id}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:r===`model-${e.id}`?"check":"content_copy"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:r===`model-${e.id}`?"Copied!":"Copy"})]}),i&&(0,a.jsx)("span",{className:"text-[10px] font-bold text-green-500 bg-green-500/10 px-1.5 py-0.5 rounded",children:"FREE"}),n&&(0,a.jsx)("button",{onClick:d,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity ml-auto",title:"Remove custom model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})})]})})}function j({isOpen:e,onSave:t,onClose:s}){let[r,o]=(0,n.useState)(""),l=()=>{r.trim()&&(t(r.trim()),o(""))};return(0,a.jsx)(i.aF,{isOpen:e,title:"Add Custom Model",onClose:s,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"Model ID"}),(0,a.jsx)("input",{className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:r,onChange:e=>o(e.target.value),onKeyDown:e=>"Enter"===e.key&&l(),placeholder:"e.g. tts-1-hd",autoFocus:!0})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{type:"button",onClick:l,fullWidth:!0,disabled:!r.trim(),children:"Add"}),(0,a.jsx)(i.$n,{type:"button",onClick:s,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function w({providerId:e,kindFilter:t,providerAliasOverride:s,hiddenModelIds:r=[]}){let{copied:o,copy:l}=(0,p.C)(),[d,c]=(0,n.useState)({}),[x,h]=(0,n.useState)([]),[b,f]=(0,n.useState)({}),[g,y]=(0,n.useState)(null),[N,k]=(0,n.useState)(""),[S,C]=(0,n.useState)(!1),[$,_]=(0,n.useState)([]),E=s||(0,m.wG)(e),I="codex"===e,P=t||"llm",A=new Set(r),T=(0,n.useCallback)(async()=>{try{let[t,s,a]=await Promise.all([fetch("/api/models/alias"),fetch("/api/providers",{cache:"no-store"}),fetch("/api/models/custom",{cache:"no-store"})]),r=await t.json(),o=await s.json(),l=await a.json();t.ok&&c(r.aliases||{}),s.ok&&_((o.connections||[]).filter(t=>t.provider===e)),a.ok&&h(l.models||[])}catch(e){console.log("ModelsCard fetch error:",e)}},[e]);(0,n.useEffect)(()=>{T()},[T]);let R=async(e,t)=>{let s=`${E}/${e}`;try{(await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:s,alias:t})})).ok&&await T()}catch(e){console.log("set alias error:",e)}},M=async e=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await T()}catch(e){console.log("delete alias error:",e)}},O=async e=>{try{(await fetch("/api/models/custom",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:E,id:e,type:P})})).ok&&(await T(),window.dispatchEvent(new CustomEvent("customModelChanged")))}catch(e){console.log("add custom model error:",e)}},K=async e=>{try{let t=new URLSearchParams({providerAlias:E,id:e,type:P});(await fetch(`/api/models/custom?${t}`,{method:"DELETE"})).ok&&(await T(),window.dispatchEvent(new CustomEvent("customModelChanged")))}catch(e){console.log("delete custom model error:",e)}},L=async e=>{if(!g){y(e);try{let s=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${E}/${e}`,kind:t})}),a=await s.json();f(t=>({...t,[e]:a.ok?"ok":"error"})),k(a.ok?"":a.error||"Model not reachable")}catch{f(t=>({...t,[e]:"error"})),k("Network error")}finally{y(null)}}},U=(0,u.KC)(e),D=t?U.filter(e=>e.kinds?e.kinds.includes(t):(e.type||"llm")===t).filter(e=>!A.has(e.id)):U.filter(e=>!A.has(e.id)),B=x.filter(e=>e.providerAlias===E&&(e.type||"llm")===P&&!D.some(t=>t.id===e.id));return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,a.jsxs)("h2",{className:"text-lg font-semibold",children:["Models",t?` — ${t.toUpperCase()}`:""]})}),N&&(0,a.jsx)("p",{className:"text-xs text-red-500 mb-3 wrap-break-word",children:N}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[D.map(e=>{let t=`${E}/${e.id}`,s=Object.entries(d).find(([,e])=>e===t)?.[0];return(0,a.jsx)(v,{model:e,fullModel:`${E}/${e.id}`,displayModel:I?e.id:`${E}/${e.id}`,alias:s,copied:o,onCopy:l,onSetAlias:t=>R(e.id,t),onDeleteAlias:()=>M(s),testStatus:b[e.id],onTest:$.length>0?()=>L(e.id):void 0,isTesting:g===e.id,isFree:e.isFree},e.id)}),B.map(e=>(0,a.jsx)(v,{model:{id:e.id,name:e.name},fullModel:`${E}/${e.id}`,displayModel:I?e.id:`${E}/${e.id}`,copied:o,onCopy:l,onSetAlias:()=>{},onDeleteAlias:()=>K(e.id),testStatus:b[e.id],onTest:$.length>0?()=>L(e.id):void 0,isTesting:g===e.id,isCustom:!0},`${e.id}-${e.type}`)),(0,a.jsxs)("button",{onClick:()=>C(!0),className:"flex items-center gap-1.5 px-3 py-2 rounded-lg border border-dashed border-black/15 dark:border-white/15 text-xs text-text-muted hover:text-primary hover:border-primary/40 transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"add"}),"Add Model"]})]})]}),(0,a.jsx)(j,{isOpen:S,onSave:async e=>{await O(e),C(!1)},onClose:()=>C(!1)})]})}b.propTypes={until:h().string.isRequired},f.propTypes={connection:h().shape({id:h().string,name:h().string,email:h().string,displayName:h().string,testStatus:h().string,isActive:h().bool,lastError:h().string,priority:h().number}).isRequired,proxyPools:h().array,isOAuth:h().bool.isRequired,isFirst:h().bool.isRequired,isLast:h().bool.isRequired,onMoveUp:h().func.isRequired,onMoveDown:h().func.isRequired,onToggleActive:h().func.isRequired,onUpdateProxy:h().func,onEdit:h().func.isRequired,onDelete:h().func.isRequired},g.propTypes={isOpen:h().bool.isRequired,provider:h().string,providerName:h().string,proxyPools:h().array,onSave:h().func.isRequired,onClose:h().func.isRequired},y.propTypes={providerId:h().string.isRequired,providerName:h().string,isOAuth:h().bool},v.propTypes={model:h().shape({id:h().string.isRequired}).isRequired,fullModel:h().string.isRequired,displayModel:h().string,copied:h().string,onCopy:h().func.isRequired,testStatus:h().oneOf(["ok","error"]),isCustom:h().bool,isFree:h().bool,onDeleteAlias:h().func,onTest:h().func,isTesting:h().bool},j.propTypes={isOpen:h().bool.isRequired,onSave:h().func.isRequired,onClose:h().func.isRequired},w.propTypes={providerId:h().string.isRequired,kindFilter:h().string,providerAliasOverride:h().string,hiddenModelIds:h().arrayOf(h().string)};let N={"google-tts":{hasLanguageDropdown:!1,hasModelSelector:!1,hasBrowseButton:!0,voiceSource:"hardcoded"},openai:{hasLanguageDropdown:!1,hasModelSelector:!0,hasBrowseButton:!1,voiceSource:"hardcoded",modelKey:"openai-tts-models",voiceKey:"openai-tts-voices",voicesPerModel:!0},openrouter:{hasLanguageDropdown:!1,hasModelSelector:!0,hasBrowseButton:!1,voiceSource:"hardcoded",modelKey:"openrouter-tts-models",voiceKey:"openrouter-tts-voices",voicesPerModel:!0},elevenlabs:{hasLanguageDropdown:!1,hasModelSelector:!0,hasBrowseButton:!0,hasVoiceIdInput:!0,voiceSource:"api-language",modelKey:"elevenlabs-tts-models",apiEndpoint:"/api/media-providers/tts/elevenlabs/voices"},"edge-tts":{hasLanguageDropdown:!1,hasModelSelector:!1,hasBrowseButton:!0,voiceSource:"api-language"},"local-device":{hasLanguageDropdown:!1,hasModelSelector:!1,hasBrowseButton:!0,voiceSource:"api-language"},nvidia:{hasModelSelector:!0,hasBrowseButton:!1,hasVoiceIdInput:!0,voiceSource:"config"},hyperbolic:{hasModelSelector:!0,hasBrowseButton:!1,voiceSource:"config"},deepgram:{hasModelSelector:!1,hasBrowseButton:!0,voiceSource:"api-language",apiEndpoint:"/api/media-providers/tts/deepgram/voices"},huggingface:{hasModelSelector:!0,hasBrowseButton:!1,voiceSource:"config"},cartesia:{hasModelSelector:!0,hasBrowseButton:!1,hasVoiceIdInput:!0,voiceSource:"config"},playht:{hasModelSelector:!0,hasBrowseButton:!1,hasVoiceIdInput:!0,voiceSource:"config"},coqui:{hasModelSelector:!0,hasBrowseButton:!1,hasVoiceIdInput:!0,voiceSource:"config"},tortoise:{hasModelSelector:!0,hasBrowseButton:!1,hasVoiceIdInput:!0,voiceSource:"config"},inworld:{hasModelSelector:!0,hasBrowseButton:!0,hasVoiceIdInput:!0,voiceSource:"api-language",modelKey:"inworld-tts-models",apiEndpoint:"/api/media-providers/tts/inworld/voices"},qwen:{hasModelSelector:!0,hasBrowseButton:!1,hasVoiceIdInput:!0,voiceSource:"config"},minimax:{hasModelSelector:!0,hasBrowseButton:!0,hasVoiceIdInput:!0,voiceSource:"api-language",apiEndpoint:"/api/media-providers/tts/minimax/voices",defaultVoiceId:"English_expressive_narrator"},"minimax-cn":{hasModelSelector:!0,hasBrowseButton:!0,hasVoiceIdInput:!0,voiceSource:"api-language",apiEndpoint:"/api/media-providers/tts/minimax/voices?provider=minimax-cn",defaultVoiceId:"English_expressive_narrator"},gemini:{hasLanguageDropdown:!1,hasLanguageHint:!0,hasModelSelector:!0,hasBrowseButton:!1,voiceSource:"hardcoded",modelKey:"gemini-tts-models",voiceKey:"gemini-tts-voices",voicesPerModel:!0}};var k=s(717),S=s(91781);function C({label:e,children:t,align:s="center"}){return(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5 sm:flex-row sm:items-center sm:gap-3",children:[(0,a.jsx)("span",{className:"w-full text-xs font-medium text-text-muted sm:w-20 sm:shrink-0",children:e}),(0,a.jsx)("div",{className:"w-full min-w-0 flex-1",children:t})]})}function $(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,11)}`}let _=`// Audio will appear here after running.
|
|
2
|
+
// Example JSON response (response_format=json):
|
|
3
|
+
{
|
|
4
|
+
"format": "mp3",
|
|
5
|
+
"audio": "//NExAANaAIIAUAAANNNNNNNN..." // base64 encoded MP3
|
|
6
|
+
}`,E=`{
|
|
7
|
+
"object": "list",
|
|
8
|
+
"data": [{
|
|
9
|
+
"object": "embedding",
|
|
10
|
+
"index": 0,
|
|
11
|
+
"embedding": [0.002301, -0.019212, 0.004815, -0.031249, ...]
|
|
12
|
+
}],
|
|
13
|
+
"model": "...",
|
|
14
|
+
"usage": { "prompt_tokens": 9, "total_tokens": 9 }
|
|
15
|
+
}`,I="https://pub-1fb693cb11cc46b2b2f656f51e015a2c.r2.dev/dog.png",P={image:new Set(["gpt-image-2"])};function A(e){let t="string"==typeof e?e.trim():"";return t?/^(data:image\/|https?:\/\/)/i.test(t)?t:`data:image/png;base64,${t}`:""}let T={webSearch:{inputLabel:"Query",inputPlaceholder:"What is the latest news about AI?",defaultInput:"What is the latest news about AI?",bodyKey:"query",defaultResponse:`{
|
|
16
|
+
"results": [
|
|
17
|
+
{ "title": "...", "url": "...", "snippet": "..." }
|
|
18
|
+
]
|
|
19
|
+
}`,extraFields:[{key:"search_type",label:"Type",type:"select",default:"web",options:["web","news"]},{key:"max_results",label:"Max results",type:"number",default:5,min:1,max:100},{key:"country",label:"Country",type:"text",default:""},{key:"language",label:"Language",type:"text",default:""}]},webFetch:{inputLabel:"URL",inputPlaceholder:"https://example.com",defaultInput:"https://example.com",bodyKey:"url",defaultResponse:`{
|
|
20
|
+
"content": "...",
|
|
21
|
+
"title": "...",
|
|
22
|
+
"url": "..."
|
|
23
|
+
}`,extraFields:[{key:"format",label:"Format",type:"select",default:"markdown",options:["markdown","text","html"]},{key:"max_characters",label:"Max chars",type:"number",default:0,min:0}]},image:{inputLabel:"Prompt",inputPlaceholder:"A cute cat wearing a hat",defaultInput:"A cute cat wearing a hat",bodyKey:"prompt",defaultResponse:`{
|
|
24
|
+
"data": [
|
|
25
|
+
{ "url": "...", "b64_json": "..." }
|
|
26
|
+
]
|
|
27
|
+
}`,extraFields:[{key:"n",label:"n",type:"number",default:1,min:1,max:4},{key:"size",label:"Size",type:"select",default:"",options:["",...c.z]},{key:"quality",label:"Quality",type:"select",default:"auto",options:["auto","low","medium","high","standard","hd"]},{key:"background",label:"Background",type:"select",default:"auto",options:["auto","transparent","opaque"]},{key:"style",label:"Style",type:"select",default:"",options:["","vivid","natural"]},{key:"response_format",label:"Format",type:"select",default:"",options:["","url","b64_json"]},{key:"image_detail",label:"Image Detail",type:"select",default:"high",options:["auto","low","high","original"]},{key:"output_format",label:"Codec",type:"select",default:"png",options:["png","jpeg","webp"]}]},imageToText:{inputLabel:"Image URL",inputPlaceholder:"https://example.com/image.png",defaultInput:"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg",bodyKey:"url",extraBody:{prompt:"Describe this image in detail"},defaultResponse:`{
|
|
28
|
+
"text": "A cat sitting on a windowsill...",
|
|
29
|
+
"model": "..."
|
|
30
|
+
}`},video:{inputLabel:"Prompt",inputPlaceholder:"A serene lake at sunset",defaultInput:"A serene lake at sunset",bodyKey:"prompt",defaultResponse:`{
|
|
31
|
+
"data": [
|
|
32
|
+
{ "url": "..." }
|
|
33
|
+
]
|
|
34
|
+
}`},music:{inputLabel:"Prompt",inputPlaceholder:"A calm piano melody",defaultInput:"A calm piano melody",bodyKey:"prompt",defaultResponse:`{
|
|
35
|
+
"data": [
|
|
36
|
+
{ "url": "...", "format": "mp3" }
|
|
37
|
+
]
|
|
38
|
+
}`}};function R({providerId:e,customAlias:t}){let s=(0,m.gC)(e),r=s?t||e:(0,m.wG)(e),o=s?[]:(0,u.KC)(e).filter(e=>"embedding"===e.type),[l,d]=(0,n.useState)(o[0]?.id??""),[c,x]=(0,n.useState)("The quick brown fox jumps over the lazy dog"),[h,b]=(0,n.useState)(""),[f,g]=(0,n.useState)(""),[y,v]=(0,n.useState)(!1),[j,w]=(0,n.useState)(""),[N,k]=(0,n.useState)(""),[S,$]=(0,n.useState)(null),[_,I]=(0,n.useState)(!1),[P,A]=(0,n.useState)(""),{copied:T,copy:M}=(0,p.C)(),{copied:O,copy:K}=(0,p.C)();(0,n.useEffect)(()=>{w(window.location.origin),fetch("/api/keys").then(e=>e.json()).then(e=>{g((e.keys||[]).find(e=>!1!==e.isActive)?.key||"")}).catch(()=>{}),fetch("/api/tunnel/status").then(e=>e.json()).then(e=>{e.publicUrl&&k(e.publicUrl)}).catch(()=>{})},[]);let L=y?N:j,U=l?`${r}/${l}`:"",D=()=>{let e={model:U,input:c.trim()},t=Number(h);return h&&Number.isFinite(t)&&t>0&&(e.dimensions=t),e},B=`curl -X POST ${L}/v1/embeddings \\
|
|
39
|
+
-H "Content-Type: application/json" \\
|
|
40
|
+
-H "Authorization: Bearer ${f||"YOUR_KEY"}" \\
|
|
41
|
+
-d '${JSON.stringify(D())}'`,F=async()=>{if(!c.trim()||!U)return;I(!0),A(""),$(null);let e=Date.now();try{let t={"Content-Type":"application/json"};f&&(t.Authorization=`Bearer ${f}`);let s=await fetch("/api/v1/embeddings",{method:"POST",headers:t,body:JSON.stringify(D())}),a=Date.now()-e,r=await s.json();if(!s.ok)return void A(r?.error?.message||r?.error||`HTTP ${s.status}`);$({data:r,latencyMs:a})}catch(e){A(e.message||"Network error")}finally{I(!1)}},z=S?JSON.stringify(S.data,null,2):"";return(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4",children:"Example"}),(0,a.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,a.jsx)(C,{label:"Model",children:s?(0,a.jsx)("input",{value:l,onChange:e=>d(e.target.value),placeholder:"e.g. voyage-3, embed-english-v3.0, text-embedding-3-small",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono"}):(0,a.jsx)("select",{value:l,onChange:e=>d(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:o.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name||e.id},e.id))})}),(0,a.jsx)(C,{label:"Endpoint",children:(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsx)("input",{value:L,onChange:e=>y?k(e.target.value):w(e.target.value),className:"w-full min-w-0 flex-1 px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono",placeholder:"http://localhost:3000"}),N&&(0,a.jsxs)("button",{onClick:()=>v(e=>!e),title:y?"Using tunnel":"Using local",className:`flex items-center gap-1 text-xs px-2 py-1.5 rounded-lg border shrink-0 transition-colors ${y?"border-primary/40 bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"wifi_tethering"}),"Tunnel"]})]})}),(0,a.jsx)(C,{label:"API Key",children:(0,a.jsx)("input",{type:"password",value:f,onChange:e=>g(e.target.value),placeholder:"sk-...",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono"})}),(0,a.jsx)(C,{label:"Input",children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{value:c,onChange:e=>x(e.target.value),className:"w-full px-3 py-1.5 pr-7 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"}),c&&(0,a.jsx)("button",{type:"button",onClick:()=>x(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})}),(0,a.jsx)(C,{label:"Dimensions",children:(0,a.jsx)("input",{type:"number",min:"1",value:h,onChange:e=>b(e.target.value),placeholder:"optional, e.g. 512, 1024 (leave empty for default)",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})}),(0,a.jsxs)("div",{className:"mt-1",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"Request"}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("button",{onClick:()=>M(B),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T?"check":"content_copy"}),T?"Copied":"Copy"]}),(0,a.jsxs)("button",{onClick:F,disabled:_||!c.trim()||!U,className:"flex w-full sm:w-auto items-center justify-center gap-1.5 px-3 py-1 rounded-lg bg-primary text-white text-xs font-medium hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:_?{animation:"spin 1s linear infinite"}:void 0,children:"play_arrow"}),_?"Running...":"Run"]})]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all",children:B})]}),P&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:P}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsxs)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:["Response ",S&&(0,a.jsxs)("span",{className:"font-normal normal-case",children:["⚡ ",S.latencyMs,"ms"]})]}),S&&(0,a.jsxs)("button",{onClick:()=>K(z),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:O?"check":"content_copy"}),O?"Copied":"Copy"]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all opacity-70",children:(e=>{if(!e)return E;let t=JSON.parse(JSON.stringify(e));return(t.data||[]).forEach(e=>{Array.isArray(e.embedding)&&e.embedding.length>4&&(e.embedding=[...e.embedding.slice(0,4).map(e=>parseFloat(e.toFixed(6))),`... (${e.embedding.length} dims)`])}),JSON.stringify(t,null,2)})(S?.data)})]})]})]})}function M({providerId:e}){let t,s=(0,m.wG)(e),r=N[e]||N["edge-tts"],[o,l]=(0,n.useState)(r.defaultVoiceId||""),[d,c]=(0,n.useState)(""),[x,h]=(0,n.useState)(r.defaultVoiceId||""),[b,f]=(0,n.useState)([]),[g,y]=(0,n.useState)(""),[v,j]=(0,n.useState)(()=>{let t=m.Q2[e]?.ttsConfig?.models;if(t?.length)return t[0].id;if(r.hasModelSelector&&r.modelKey){let e=(0,u.KC)(r.modelKey);return e?.[0]?.id||""}return""}),[w,$]=(0,n.useState)("Hello, this is a text to speech test."),[E,I]=(0,n.useState)(""),[P,A]=(0,n.useState)(!1),[T,R]=(0,n.useState)(""),[O,K]=(0,n.useState)(""),[L,U]=(0,n.useState)("mp3"),[D,B]=(0,n.useState)(""),[F,z]=(0,n.useState)(null),[q,J]=(0,n.useState)(!1),[V,H]=(0,n.useState)(""),[W,Y]=(0,n.useState)(null),{copied:G,copy:Q}=(0,p.C)(),[Z,X]=(0,n.useState)(!1),[ee,et]=(0,n.useState)([]),[es,ea]=(0,n.useState)(!1),[er,eo]=(0,n.useState)(""),[el,en]=(0,n.useState)(""),[ei,ed]=(0,n.useState)({}),[ec,em]=(0,n.useState)("");(0,n.useEffect)(()=>{if(R(window.location.origin),fetch("/api/keys").then(e=>e.json()).then(e=>{I((e.keys||[]).find(e=>!1!==e.isActive)?.key||"")}).catch(()=>{}),fetch("/api/tunnel/status").then(e=>e.json()).then(e=>{e.publicUrl&&K(e.publicUrl)}).catch(()=>{}),"hardcoded"===r.voiceSource){let t=r.hasModelSelector&&r.modelKey&&(0,u.KC)(r.modelKey)?.[0]?.id||"",s=r.voicesPerModel&&t?(0,k.jY)(e,t)||[]:(0,u.KC)(r.voiceKey||e).filter(e=>"tts"===e.type);if(s.length)if(r.hasBrowseButton){let e=s.find(e=>"en"===e.id)||s[0];y(e.id),l(e.id),c(e.name),f([{id:e.id,name:e.name}])}else f(s),l(s[0].id),c(s[0].name||s[0].id)}},[e]),(0,n.useEffect)(()=>{if(!r.voicesPerModel||!v)return;let t=(0,k.jY)(e,v)||[];f(t),t.length&&(l(t[0].id),c(t[0].name||t[0].id))},[v]);let eu=async()=>{if(X(!0),eo(""),en(""),!ee.length){ea(!0);try{if("hardcoded"===r.voiceSource){let t=r.voiceKey||e,s=(0,u.KC)(t).filter(e=>"tts"===e.type),a={};for(let e of s)a[e.id]||(a[e.id]={code:e.id,name:e.name,voices:[{id:e.id,name:e.name}]});ed(a),et(Object.values(a).sort((e,t)=>e.name.localeCompare(t.name)))}else{let t=r.apiEndpoint?r.apiEndpoint:`/api/media-providers/tts/voices?provider=${"local-device"===e?"local-device":"edge-tts"}`,s=await fetch(t),a=await s.json();if(a.error)return void en(a.error);et(a.languages||[]),ed(a.byLang||{})}}catch(e){en(e.message)}finally{ea(!1)}}},ep=er?ee.filter(e=>e.name.toLowerCase().includes(er.toLowerCase())||e.code.toLowerCase().includes(er.toLowerCase())):ee,ex=P?O:T,eh=r.hasVoiceIdInput&&x||o,eb=r.hasModelSelector&&v&&eh?`${s}/${v}/${eh}`:r.hasModelSelector&&v?`${s}/${v}`:eh?`${s}/${eh}`:"",ef=(t={model:eb,input:w},r.hasLanguageHint&&ec&&(t.language=ec),t),eg=`curl -X POST ${ex}/v1/audio/speech${"json"===L?"?response_format=json":""} \\
|
|
42
|
+
-H "Content-Type: application/json" \\
|
|
43
|
+
-H "Authorization: Bearer ${E||"YOUR_KEY"}" \\
|
|
44
|
+
-d '${JSON.stringify(ef)}' \\
|
|
45
|
+
${"json"===L?"":"--output speech.mp3"}`,ey=async()=>{if(!w.trim()||!eb)return;J(!0),H(""),B(""),z(null);let e=Date.now();try{let t={"Content-Type":"application/json"};E&&(t.Authorization=`Bearer ${E}`);let s=`/api/v1/audio/speech${"json"===L?"?response_format=json":""}`,a=await fetch(s,{method:"POST",headers:t,body:JSON.stringify({...ef,input:w.trim()})});if(Y(Date.now()-e),!a.ok){let e=await a.json().catch(()=>({}));H(e?.error?.message||e?.error||`HTTP ${a.status}`);return}if("json"===L){let e=await a.json();z(e);let t=await fetch(`data:audio/mp3;base64,${e.audio}`).then(e=>e.blob());B(URL.createObjectURL(t))}else{let e=await a.blob();B(URL.createObjectURL(e))}}catch(e){H(e.message||"Network error")}finally{J(!1)}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4",children:"Example"}),(0,a.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,a.jsx)(C,{label:"Endpoint",children:(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("span",{className:"w-full min-w-0 flex-1 px-3 py-1.5 text-sm font-mono text-text-main bg-sidebar rounded-lg truncate",children:[ex,"/v1/audio/speech"]}),O&&(0,a.jsxs)("button",{onClick:()=>A(e=>!e),title:P?"Using tunnel":"Using local",className:`flex items-center gap-1 text-xs px-2 py-1.5 rounded-lg border shrink-0 transition-colors ${P?"border-primary/40 bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"wifi_tethering"}),"Tunnel"]})]})}),(0,a.jsx)(C,{label:"API Key",children:(0,a.jsx)("span",{className:"px-3 py-1.5 text-sm font-mono text-text-main bg-sidebar rounded-lg truncate block",children:E?`${E.slice(0,8)}${"•".repeat(Math.min(20,E.length-8))}`:(0,a.jsx)("span",{className:"text-text-muted italic",children:"No key configured"})})}),r.hasModelSelector&&(r.modelKey||m.Q2[e]?.ttsConfig?.models?.length)&&(0,a.jsx)(C,{label:"Model",children:(0,a.jsx)("select",{value:v,onChange:e=>j(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:((m.Q2[e]?.ttsConfig?.models?.length?m.Q2[e].ttsConfig.models:(0,u.KC)(r.modelKey))||[]).map(e=>(0,a.jsx)("option",{value:e.id,children:e.name||e.id},e.id))})}),r.hasLanguageHint&&(0,a.jsx)(C,{label:"Language",children:(0,a.jsxs)("select",{value:ec,onChange:e=>em(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[(0,a.jsx)("option",{value:"",children:"Auto-detect"}),S.I.map(e=>(0,a.jsx)("option",{value:e.name,children:e.name},e.id))]})}),r.hasBrowseButton&&(0,a.jsx)(C,{label:"Language",children:(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsx)("button",{onClick:eu,className:"w-full min-w-0 flex-1 px-3 py-1.5 text-sm border border-border rounded-lg bg-background font-mono truncate text-left hover:border-primary/40 transition-colors",children:g?(0,a.jsx)("span",{className:"text-text-main",children:ee.find(e=>e.code===g)?.name||g}):(0,a.jsx)("span",{className:"text-text-muted",children:"No language selected"})}),(0,a.jsxs)("button",{onClick:eu,className:"flex w-full items-center justify-center gap-1 text-xs px-2.5 py-1.5 rounded-lg border border-border text-text-muted hover:text-primary hover:border-primary/40 transition-colors sm:w-auto sm:shrink-0",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"language"}),"Select language"]})]})}),b.length>0&&(0,a.jsx)(C,{label:"Voice",children:(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:b.map(e=>(0,a.jsxs)("button",{onClick:()=>{l(e.id),c(e.name),r.hasVoiceIdInput&&h(e.id)},className:`px-2.5 py-1 rounded-full text-xs border transition-colors ${o===e.id?"bg-primary/15 border-primary/40 text-primary font-medium":"border-border text-text-muted hover:text-primary hover:border-primary/40"}`,children:[e.name,e.gender?` \xb7 ${e.gender[0].toUpperCase()}`:"",!0===e.free_users_allowed&&(0,a.jsx)("span",{className:"ml-1.5 px-1 py-0.5 text-[9px] font-semibold rounded bg-green-500/15 text-green-600 border border-green-500/20",children:"Free"}),!1===e.free_users_allowed&&(0,a.jsx)("span",{className:"ml-1.5 px-1 py-0.5 text-[9px] font-semibold rounded bg-amber-500/15 text-amber-600 border border-amber-500/20",children:"Paid"})]},e.id))})}),r.hasVoiceIdInput&&(0,a.jsx)(C,{label:"Voice ID",children:(0,a.jsx)("div",{className:"flex flex-col gap-1",children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{value:x,onChange:e=>{h(e.target.value),l(e.target.value)},placeholder:"e.g. CwhRBWXzGAHq8TQ4Fs17",className:"w-full px-3 py-1.5 pr-7 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono"}),x&&(0,a.jsx)("button",{type:"button",onClick:()=>{h(""),l("")},className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})})}),r.hasLanguageDropdown&&(0,a.jsx)(C,{label:"Language",children:(0,a.jsx)("select",{value:o,onChange:t=>{let s=(0,u.KC)(e).filter(e=>"tts"===e.type).find(e=>e.id===t.target.value);l(t.target.value),c(s?.name||t.target.value)},className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:(0,u.KC)(e).filter(e=>"tts"===e.type).map(e=>(0,a.jsx)("option",{value:e.id,children:e.name||e.id},e.id))})}),(0,a.jsx)(C,{label:"Input",children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{value:w,onChange:e=>$(e.target.value),className:"w-full px-3 py-1.5 pr-7 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"}),w&&(0,a.jsx)("button",{type:"button",onClick:()=>$(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})}),(0,a.jsx)(C,{label:"Output Format",children:(0,a.jsxs)("select",{value:L,onChange:e=>U(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[(0,a.jsx)("option",{value:"mp3",children:"MP3 (Binary)"}),(0,a.jsx)("option",{value:"json",children:"JSON (Base64)"})]})}),(0,a.jsxs)("div",{className:"mt-1",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"Request"}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("button",{onClick:()=>Q(eg),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:G?"check":"content_copy"}),G?"Copied":"Copy"]}),(0,a.jsxs)("button",{onClick:ey,disabled:q||!w.trim()||!eb,className:"flex w-full sm:w-auto items-center justify-center gap-1.5 px-3 py-1 rounded-lg bg-primary text-white text-xs font-medium hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:q?{animation:"spin 1s linear infinite"}:void 0,children:"play_arrow"}),q?"Generating...":"Run"]})]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all",children:eg})]}),V&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:V}),D?(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsxs)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:["Response ",W&&(0,a.jsxs)("span",{className:"font-normal normal-case",children:["⚡ ",W,"ms"]})]}),(0,a.jsxs)("a",{href:D,download:"speech.mp3",className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"download"}),"Download"]})]}),(0,a.jsx)("audio",{controls:!0,src:D,className:"w-full"}),F&&(0,a.jsxs)("div",{className:"mt-3",children:[(0,a.jsx)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"JSON Response"})}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all",children:JSON.stringify({format:F.format,audio:F.audio?`${F.audio.substring(0,100)}...`:""},null,2)})]})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"Response"}),(0,a.jsx)("pre",{className:"mt-1.5 bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all opacity-50",children:_})]})]})]}),Z&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center sm:items-center",style:{backgroundColor:"rgba(0,0,0,0.6)",backdropFilter:"blur(2px)"},onClick:()=>X(!1),children:(0,a.jsxs)("div",{className:"border border-border rounded-xl shadow-2xl w-full max-w-md mx-4 flex flex-col max-h-[80vh]",style:{backgroundColor:"var(--color-bg)",isolation:"isolate"},onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border shrink-0 rounded-t-xl",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold",children:"Select Language"}),(0,a.jsx)("button",{onClick:()=>X(!1),className:"text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,a.jsx)("div",{className:"px-4 py-2.5 border-b border-border shrink-0",children:(0,a.jsx)("input",{autoFocus:!0,value:er,onChange:e=>eo(e.target.value),placeholder:"Search language...",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})}),(0,a.jsxs)("div",{className:"overflow-y-auto flex-1 p-2",children:[el&&(0,a.jsx)("p",{className:"text-xs text-red-500 px-2 py-1",children:el}),es?(0,a.jsx)("p",{className:"text-xs text-text-muted px-2 py-3",children:"Loading..."}):(0,a.jsxs)("div",{className:"flex flex-col gap-0.5",children:[ep.map(e=>(0,a.jsxs)("button",{onClick:()=>{let t;return X(!1),y(e.code),void(f(t=ei[e.code]?.voices||[]),t.length&&(l(t[0].id),c(t[0].name),r.hasVoiceIdInput&&h(t[0].id)))},className:`flex items-center justify-between w-full px-3 py-2 rounded-lg text-left hover:bg-sidebar transition-colors ${g===e.code?"bg-primary/10 text-primary":""}`,children:[(0,a.jsx)("span",{className:"text-sm",children:e.name}),(0,a.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:[e.voices.length," voices"]}),g===e.code&&(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"check"})]})]},e.code)),0===ep.length&&(0,a.jsx)("p",{className:"text-xs text-text-muted px-2 py-3",children:"No languages found."})]})]})]})})]})}function O({providerId:e,kind:t,providerAliasOverride:s="",customNode:r=null}){let o=s||(0,m.wG)(e),l=(0,m.rs)(o)===e?o:e,d=m.rj.find(e=>e.id===t),c=T[t],x=c||{},h=(0,u.KC)(e).filter(e=>e.type===t).filter(e=>!P[t]?.has(e.id)),[b,f]=(0,n.useState)([]),g=[...h,...b],y=new Set(["image","video","music","imageToText"]).has(t),v=!!(s&&"image"===t),j=y&&0===g.length&&!v,[w,N]=(0,n.useState)(g[0]?.id??""),k=g.find(e=>e.id===w),S=!!k?.capabilities?.includes("edit"),_=!!k?.capabilities?.includes("mask"),[E,R]=(0,n.useState)(x.defaultInput||""),[M,K]=(0,n.useState)([]),[L,U]=(0,n.useState)(""),D=(0,n.useRef)(null),[B,F]=(0,n.useState)(""),[z,q]=(0,n.useState)(()=>(x.extraFields||[]).reduce((e,s)=>(e[s.key]="image"===t&&"size"===s.key&&r?.defaultSize?r.defaultSize:s.default??"",e),{})),[J,V]=(0,n.useState)(""),[H,W]=(0,n.useState)(!1),[Y,G]=(0,n.useState)(""),[Q,Z]=(0,n.useState)(""),[X,ee]=(0,n.useState)(null),[et,es]=(0,n.useState)(null),[ea,er]=(0,n.useState)(null),[eo,el]=(0,n.useState)("json"),[en,ei]=(0,n.useState)(""),[ed,ec]=(0,n.useState)(!1),[em,eu]=(0,n.useState)(""),[ep,ex]=(0,n.useState)([]),[eh,eb]=(0,n.useState)(""),{copied:ef,copy:eg}=(0,p.C)(),{copied:ey,copy:ev}=(0,p.C)(),ej=()=>{let e=L.trim();e&&!(M.length>=4)&&(K(t=>[...t,{id:$(),name:e,type:"url",dataUrl:e,size:0}]),U(""))},ew=async e=>{let t=4-M.length,s=Array.from(e.target.files||[]).filter(e=>e.type.startsWith("image/")).filter(e=>e.size<=0x1400000).slice(0,Math.max(t,0));if(e.target.value="",0===s.length)return;let a=await Promise.all(s.map(async e=>({id:$(),name:e.name,type:e.type,size:e.size,dataUrl:await new Promise((t,s)=>{let a=new FileReader;a.onload=()=>t(String(a.result||"")),a.onerror=()=>s(Error(`Failed to read ${e.name}`)),a.readAsDataURL(e)})})));K(e=>[...e,...a])};if((0,n.useEffect)(()=>{G(window.location.origin),fetch("/api/keys").then(e=>e.json()).then(e=>{V((e.keys||[]).find(e=>!1!==e.isActive)?.key||"")}).catch(()=>{}),fetch("/api/tunnel/status").then(e=>e.json()).then(e=>{e.publicUrl&&Z(e.publicUrl)}).catch(()=>{}),fetch("/api/providers/client").then(e=>e.json()).then(t=>{ex((t.connections||[]).filter(t=>t.provider===e&&!1!==t.isActive))}).catch(()=>{});let s=()=>{fetch("/api/models/custom",{cache:"no-store"}).then(e=>e.json()).then(e=>{f((e.models||[]).filter(e=>e.providerAlias===o&&(e.type||"llm")===t).map(e=>({id:e.id,name:e.name||e.id,type:t,isCustom:!0})))}).catch(()=>{})};return s(),window.addEventListener("focus",s),window.addEventListener("customModelChanged",s),()=>{window.removeEventListener("focus",s),window.removeEventListener("customModelChanged",s)}},[o,e,t]),(0,n.useEffect)(()=>{!w&&g.length>0?N(g[0].id):w&&!g.some(e=>e.id===w)&&N(g[0]?.id||"")},[g,w]),(0,n.useEffect)(()=>{"image"===t&&r?.defaultSize&&q(e=>({...e,size:r.defaultSize}))},[t,r?.defaultSize]),!d||!c)return null;let eN=H?Q:Y,ek=d.endpoint.path,eS=y?w?`${l}/${w}`:j?"":l:l,eC="cloudflare-ai"!==e?{}:"@cf/runwayml/stable-diffusion-v1-5-img2img"===w?{image:I}:"@cf/runwayml/stable-diffusion-v1-5-inpainting"===w?{image:I,mask_image:"https://pub-1fb693cb11cc46b2b2f656f51e015a2c.r2.dev/dog-mask.png"}:{},e$=L.trim(),e_=M.map(e=>e.dataUrl).filter(Boolean),eE=e$&&e_.length<4?[e$,...e_]:e_,eI=eE[0]||eC.image||"",eP=B.trim()||eC.mask_image||"",eA=A(eI),eT=A(eP),eR=Object.entries(z).reduce((e,[t,s])=>(""===s||null==s||"number"==typeof s&&Number.isNaN(s)||(e[t]=s),e),{}),eM={model:eS,[c.bodyKey]:E,...c.extraBody,...eR,...S&&eE.length>0?{reference_images:eE.slice(0,4)}:{},...S&&eI?{image:eI}:{},..._&&eP?{mask_image:eP}:{}},eO="image"===t&&"binary"===eo,eK="image"===t&&"codex"===e&&!eO,eL=`${ek}${eO?"?response_format=binary":""}`,eU=`-H "Content-Type: application/json" \\
|
|
46
|
+
-H "Authorization: Bearer ${J||"YOUR_KEY"}"${eh?` \\
|
|
47
|
+
-H "x-connection-id: ${eh}"`:""}${eK?` \\
|
|
48
|
+
-H "Accept: text/event-stream"`:""}`,eD=`curl -X ${d.endpoint.method} ${eN}${eL} \\
|
|
49
|
+
${eU.replace(/\\\n /g,"\\\n ")} \\
|
|
50
|
+
-d '${JSON.stringify(eM)}'${eO?" \\\n --output image.png":""}`,eB=async()=>{if(!E.trim()||!eS)return;if(ec(!0),eu(""),ee(null),es(null),er(null),en){try{URL.revokeObjectURL(en)}catch{}ei("")}let e=Date.now();try{let t={"Content-Type":"application/json"};J&&(t.Authorization=`Bearer ${J}`),eh&&(t["x-connection-id"]=eh),eK&&(t.Accept="text/event-stream");let s={...eM,model:eS},a=await fetch(`/api${eL}`,{method:d.endpoint.method,headers:t,body:JSON.stringify(s)});if(!a.ok){let e=await a.json().catch(()=>({}));eu(e?.error?.message||e?.error||`HTTP ${a.status}`);return}let r=a.headers.get("content-type")||"";if(r.startsWith("image/")){let t=await a.blob(),s=URL.createObjectURL(t);ei(s),ee({data:{binary:!0,mime:r,size:t.size},latencyMs:Date.now()-e});return}if(r.includes("text/event-stream")&&a.body){let t=a.body.getReader(),s=new TextDecoder,r="",o=null,l=null;for(;;){let e,{done:a,value:n}=await t.read();if(a)break;for(r+=s.decode(n,{stream:!0});-1!==(e=r.indexOf("\n\n"));){let t=r.slice(0,e);r=r.slice(e+2);let s=null,a="";for(let e of t.split("\n"))e.startsWith("event:")?s=e.slice(6).trim():e.startsWith("data:")&&(a+=e.slice(5).trim());if(s)try{let e=a?JSON.parse(a):{};"progress"===s?es(e):"partial_image"===s?er(e):"done"===s?o=e:"error"===s&&(l=e?.message||"Stream error")}catch{}}}let n=Date.now()-e;if(l)return void eu(l);o&&ee({data:o,latencyMs:n})}else{let t=await a.json(),s=Date.now()-e;ee({data:t,latencyMs:s})}}catch(e){eu(e.message||"Network error")}finally{ec(!1)}},eF=e=>{if(!e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(eF);let t={};for(let[s,a]of Object.entries(e))t[s]="b64_json"===s&&"string"==typeof a&&a.length>100?`<${a.length} chars base64>`:eF(a);return t},ez=X?JSON.stringify(eF(X.data),null,2):"";return(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4",children:"Example"}),(0,a.jsxs)("div",{className:"flex flex-col gap-2.5",children:[g.length>0?(0,a.jsx)(C,{label:"Model",children:(0,a.jsx)("select",{value:w,onChange:e=>N(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:g.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name||e.id},e.id))})}):j?(0,a.jsx)(C,{label:"Model",children:(0,a.jsx)("input",{value:w,onChange:e=>N(e.target.value),placeholder:"Enter model id (provider-specific)",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono"})}):y?(0,a.jsx)(C,{label:"Model",children:(0,a.jsxs)("select",{value:w,onChange:e=>N(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[0===g.length&&(0,a.jsx)("option",{value:"",children:"Please add a model first"}),g.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name||e.id},e.id))]})}):null,(0,a.jsx)(C,{label:"Endpoint",children:(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("span",{className:"w-full min-w-0 flex-1 px-3 py-1.5 text-sm font-mono text-text-main bg-sidebar rounded-lg truncate",children:[eN,ek]}),Q&&(0,a.jsxs)("button",{onClick:()=>W(e=>!e),title:H?"Using tunnel":"Using local",className:`flex items-center gap-1 text-xs px-2 py-1.5 rounded-lg border shrink-0 transition-colors ${H?"border-primary/40 bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"wifi_tethering"}),"Tunnel"]})]})}),(0,a.jsx)(C,{label:"API Key",children:(0,a.jsx)("span",{className:"px-3 py-1.5 text-sm font-mono text-text-main bg-sidebar rounded-lg truncate block",children:J?`${J.slice(0,8)}${"•".repeat(Math.min(20,J.length-8))}`:(0,a.jsx)("span",{className:"text-text-muted italic",children:"No key configured"})})}),ep.length>0&&(0,a.jsx)(C,{label:"Connection",children:(0,a.jsxs)("select",{value:eh,onChange:e=>eb(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[(0,a.jsx)("option",{value:"",children:"Auto (by priority)"}),ep.map(e=>{let t=e.providerSpecificData?.chatgptPlanType,s=e.email||e.name||e.id.slice(0,8);return(0,a.jsxs)("option",{value:e.id,children:[s,t?` [${t}]`:""]},e.id)})]})}),(0,a.jsx)(C,{label:c.inputLabel,children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{value:E,onChange:e=>R(e.target.value),placeholder:c.inputPlaceholder,className:"w-full px-3 py-1.5 pr-7 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"}),E&&(0,a.jsx)("button",{type:"button",onClick:()=>R(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})}),S&&(0,a.jsx)(C,{label:"Ref Image",align:"start",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2 w-full",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[(0,a.jsxs)("div",{className:"relative flex-1",children:[(0,a.jsx)("input",{value:L,onChange:e=>U(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),ej())},placeholder:"https://example.com/source.png",className:"w-full px-3 py-1.5 pr-7 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"}),L&&(0,a.jsx)("button",{type:"button",onClick:()=>U(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,a.jsx)("button",{type:"button",onClick:ej,disabled:!L.trim()||M.length>=4,className:"shrink-0 px-3 py-1.5 text-sm border border-border rounded-lg hover:border-primary hover:text-primary transition-colors disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-border disabled:hover:text-inherit",children:"Add URL"}),(0,a.jsxs)("button",{type:"button",onClick:()=>D.current?.click(),disabled:M.length>=4,className:"shrink-0 px-3 py-1.5 text-sm border border-border rounded-lg hover:border-primary hover:text-primary transition-colors flex items-center gap-1 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-border disabled:hover:text-inherit",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"upload"}),"Upload"]}),(0,a.jsx)("input",{ref:D,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ew})]}),M.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:M.map(e=>(0,a.jsxs)("div",{className:"relative group",children:[(0,a.jsx)("img",{src:e.dataUrl,alt:e.name,title:e.name,className:"h-16 w-16 object-cover rounded-lg border border-border bg-sidebar",onError:e=>{e.currentTarget.style.display="none"}}),(0,a.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.id,void K(e=>e.filter(e=>e.id!==t))},className:"absolute -top-1.5 -right-1.5 w-5 h-5 bg-red-500 text-white rounded-full flex items-center justify-center text-[10px] opacity-0 group-hover:opacity-100 transition-opacity",children:"\xd7"})]},e.id))}),eA&&(0,a.jsx)("img",{src:eA,alt:"Reference",className:"max-h-40 rounded-lg border border-border object-contain bg-sidebar",onError:e=>{e.currentTarget.style.display="none"},onLoad:e=>{e.currentTarget.style.display="block"}})]})}),_&&(0,a.jsx)(C,{label:"Mask (URL)",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{value:B,onChange:e=>F(e.target.value),placeholder:eC.mask_image||"https://example.com/mask.png",className:"w-full px-3 py-1.5 pr-7 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"}),B&&(0,a.jsx)("button",{type:"button",onClick:()=>F(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),eT&&(0,a.jsx)("img",{src:eT,alt:"Mask",className:"max-h-40 rounded-lg border border-border object-contain bg-sidebar",onError:e=>{e.currentTarget.style.display="none"},onLoad:e=>{e.currentTarget.style.display="block"}})]})}),(c.extraFields||[]).filter(e=>"image"===t||0===g.length||Array.isArray(k?.params)&&k.params.includes(e.key)).map(e=>(0,a.jsx)(C,{label:e.label,children:"select"===e.type?(0,a.jsx)("select",{value:z[e.key]??"",onChange:t=>q(s=>({...s,[e.key]:t.target.value})),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:(e.options||[]).map(e=>(0,a.jsx)("option",{value:e,children:""===e?"(default)":e},e))}):"text"===e.type?(0,a.jsx)("input",{type:"text",value:z[e.key]??"",placeholder:e.placeholder,onChange:t=>q(s=>({...s,[e.key]:t.target.value})),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"}):(0,a.jsx)("input",{type:"number",value:z[e.key]??"",min:e.min,max:e.max,onChange:t=>q(s=>({...s,[e.key]:""===t.target.value?"":Number(t.target.value)})),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})},e.key)),"image"===t&&(0,a.jsx)(C,{label:"Output Format",children:(0,a.jsxs)("select",{value:eo,onChange:e=>el(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[(0,a.jsx)("option",{value:"json",children:"JSON (Base64)"}),(0,a.jsx)("option",{value:"binary",children:"Binary File"})]})}),(0,a.jsxs)("div",{className:"mt-1",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"Request"}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("button",{onClick:()=>eg(eD),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:ef?"check":"content_copy"}),ef?"Copied":"Copy"]}),(0,a.jsxs)("button",{onClick:eB,disabled:ed||!E.trim()||!eS,className:"flex w-full sm:w-auto items-center justify-center gap-1.5 px-3 py-1 rounded-lg bg-primary text-white text-xs font-medium hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:ed?{animation:"spin 1s linear infinite"}:void 0,children:"play_arrow"}),ed?"Running...":"Run"]})]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all",children:eD})]}),(ed||et)&&eK&&(0,a.jsxs)("div",{className:"flex flex-col gap-2 px-3 py-2 rounded-lg bg-sidebar border border-border sm:flex-row sm:items-center sm:gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",style:ed?{animation:"spin 1s linear infinite"}:void 0,children:ed?"progress_activity":"check_circle"}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:[et?.stage||"starting",!ed&&et?.bytesReceived?` \xb7 ${(et.bytesReceived/1024).toFixed(1)} KB`:""]})]}),ea?.b64_json&&!X&&(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"Partial preview"}),(0,a.jsx)("img",{src:`data:image/png;base64,${ea.b64_json}`,alt:"Partial",className:"max-w-full rounded-lg border border-border mt-1.5 opacity-80"})]}),em&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:em}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsxs)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:["Response ",X&&(0,a.jsxs)("span",{className:"font-normal normal-case",children:["⚡ ",X.latencyMs,"ms"]})]}),X&&(0,a.jsxs)("button",{onClick:()=>ev(ez),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:ey?"check":"content_copy"}),ey?"Copied":"Copy"]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all opacity-70",children:X?ez:c.defaultResponse}),"image"===t&&(en||X?.data?.data?.[0])&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"flex items-center justify-end mb-1.5",children:(0,a.jsxs)("a",{href:en||(X?.data?.data?.[0]?.b64_json?`data:image/png;base64,${X.data.data[0].b64_json}`:X?.data?.data?.[0]?.url||""),download:"image.png",className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"download"}),"Download"]})}),(0,a.jsx)("img",{src:en||(X?.data?.data?.[0]?.b64_json?`data:image/png;base64,${X.data.data[0].b64_json}`:X?.data?.data?.[0]?.url),alt:"Generated",className:"max-w-full rounded-lg border border-border"})]})]})]})]})}function K({providerId:e}){let t=(0,m.wG)(e),s=(0,u.KC)(e).filter(e=>"stt"===e.type),[r,o]=(0,n.useState)([]),l=[...s,...r],[d,c]=(0,n.useState)(s[0]?.id??""),x=l.find(e=>e.id===d),h=Array.isArray(x?.params)?x.params:[],[b,f]=(0,n.useState)(null),[g,y]=(0,n.useState)(""),[v,j]=(0,n.useState)(""),[w,N]=(0,n.useState)("json"),[k,S]=(0,n.useState)(""),[$,_]=(0,n.useState)(""),[E,I]=(0,n.useState)(!1),[P,A]=(0,n.useState)(""),[T,R]=(0,n.useState)(""),[M,O]=(0,n.useState)(null),[L,U]=(0,n.useState)(null),[D,B]=(0,n.useState)(!1),[F,z]=(0,n.useState)(""),{copied:q,copy:J}=(0,p.C)(),{copied:V,copy:H}=(0,p.C)();(0,n.useEffect)(()=>{A(window.location.origin),fetch("/api/keys").then(e=>e.json()).then(e=>{_((e.keys||[]).find(e=>!1!==e.isActive)?.key||"")}).catch(()=>{}),fetch("/api/tunnel/status").then(e=>e.json()).then(e=>{e.publicUrl&&R(e.publicUrl)}).catch(()=>{});let e=()=>{fetch("/api/models/custom",{cache:"no-store"}).then(e=>e.json()).then(e=>{o((e.models||[]).filter(e=>"stt"===e.type&&e.providerAlias===t))}).catch(()=>{})};return e(),window.addEventListener("focus",e),window.addEventListener("customModelChanged",e),()=>{window.removeEventListener("focus",e),window.removeEventListener("customModelChanged",e)}},[t]);let W=E?T:P,Y=d?`${t}/${d}`:"",G=`curl -X POST ${W}/v1/audio/transcriptions \\
|
|
51
|
+
-H "Authorization: Bearer ${$||"YOUR_KEY"}" \\
|
|
52
|
+
-F "file=@${b?.name||"audio.mp3"}" \\
|
|
53
|
+
-F "model=${Y}"${h.includes("language")&&g?` \\
|
|
54
|
+
-F "language=${g}"`:""}${h.includes("response_format")?` \\
|
|
55
|
+
-F "response_format=${w}"`:""}${h.includes("temperature")&&k?` \\
|
|
56
|
+
-F "temperature=${k}"`:""}${h.includes("prompt")&&v?` \\
|
|
57
|
+
-F "prompt=${v}"`:""}`,Q=async()=>{if(!b||!Y)return;B(!0),z(""),O(null);let e=Date.now();try{let t=new FormData;t.append("file",b),t.append("model",Y),h.includes("language")&&g&&t.append("language",g),h.includes("response_format")&&t.append("response_format",w),h.includes("temperature")&&k&&t.append("temperature",k),h.includes("prompt")&&v&&t.append("prompt",v);let s={};$&&(s.Authorization=`Bearer ${$}`);let a=await fetch("/api/v1/audio/transcriptions",{method:"POST",headers:s,body:t});U(Date.now()-e);let r=(a.headers.get("content-type")||"").includes("application/json")?await a.json():await a.text();if(!a.ok)return void z(r?.error?.message||r?.error||r||`HTTP ${a.status}`);O(r)}catch(e){z(e.message||"Network error")}finally{B(!1)}},Z="string"==typeof M?M:M?JSON.stringify(M,null,2):`{
|
|
58
|
+
"text": "Hello world..."
|
|
59
|
+
}`;return(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4",children:"Example"}),(0,a.jsxs)("div",{className:"flex flex-col gap-2.5",children:[l.length>0?(0,a.jsx)(C,{label:"Model",children:(0,a.jsx)("select",{value:d,onChange:e=>c(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:l.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name||e.id},e.id))})}):(0,a.jsx)(C,{label:"Model",children:(0,a.jsx)("input",{value:d,onChange:e=>c(e.target.value),placeholder:"Enter model id",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono"})}),(0,a.jsx)(C,{label:"Endpoint",children:(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("span",{className:"w-full min-w-0 flex-1 px-3 py-1.5 text-sm font-mono text-text-main bg-sidebar rounded-lg truncate",children:[W,"/v1/audio/transcriptions"]}),T&&(0,a.jsxs)("button",{onClick:()=>I(e=>!e),title:E?"Using tunnel":"Using local",className:`flex items-center gap-1 text-xs px-2 py-1.5 rounded-lg border shrink-0 transition-colors ${E?"border-primary/40 bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"wifi_tethering"}),"Tunnel"]})]})}),(0,a.jsx)(C,{label:"API Key",children:(0,a.jsx)("span",{className:"px-3 py-1.5 text-sm font-mono text-text-main bg-sidebar rounded-lg truncate block",children:$?`${$.slice(0,8)}${"•".repeat(Math.min(20,$.length-8))}`:(0,a.jsx)("span",{className:"text-text-muted italic",children:"No key configured"})})}),(0,a.jsx)(C,{label:"Audio File",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("input",{type:"file",accept:"audio/*,video/mp4,.m4a,.mp3,.wav,.ogg,.flac,.webm,.opus",onChange:e=>f(e.target.files?.[0]||null),className:"w-full text-xs text-text-muted file:mr-2 file:py-1 file:px-2.5 file:rounded-lg file:border file:border-border file:bg-background file:text-text-main hover:file:bg-sidebar file:cursor-pointer"}),b&&(0,a.jsxs)("span",{className:"text-xs text-text-muted font-mono",children:[b.name," \xb7 ",(b.size/1024).toFixed(1)," KB"]})]})}),h.includes("language")&&(0,a.jsx)(C,{label:"Language",children:(0,a.jsx)("input",{value:g,onChange:e=>y(e.target.value),placeholder:"e.g. en, vi, ja (auto-detect if empty)",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary font-mono"})}),h.includes("prompt")&&(0,a.jsx)(C,{label:"Prompt",children:(0,a.jsx)("input",{value:v,onChange:e=>j(e.target.value),placeholder:"optional context to improve accuracy",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})}),h.includes("temperature")&&(0,a.jsx)(C,{label:"Temperature",children:(0,a.jsx)("input",{type:"number",step:"0.1",min:"0",max:"1",value:k,onChange:e=>S(e.target.value),placeholder:"0 - 1 (default 0)",className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})}),h.includes("response_format")&&(0,a.jsx)(C,{label:"Response Format",children:(0,a.jsxs)("select",{value:w,onChange:e=>N(e.target.value),className:"w-full px-3 py-1.5 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[(0,a.jsx)("option",{value:"json",children:"json"}),(0,a.jsx)("option",{value:"text",children:"text"}),(0,a.jsx)("option",{value:"srt",children:"srt"}),(0,a.jsx)("option",{value:"verbose_json",children:"verbose_json"}),(0,a.jsx)("option",{value:"vtt",children:"vtt"})]})}),(0,a.jsxs)("div",{className:"mt-1",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:"Request"}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsxs)("button",{onClick:()=>J(G),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:q?"check":"content_copy"}),q?"Copied":"Copy"]}),(0,a.jsxs)("button",{onClick:Q,disabled:D||!b||!Y,className:"flex w-full sm:w-auto items-center justify-center gap-1.5 px-3 py-1 rounded-lg bg-primary text-white text-xs font-medium hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:D?{animation:"spin 1s linear infinite"}:void 0,children:"play_arrow"}),D?"Transcribing...":"Run"]})]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all",children:G})]}),F&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:F}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-1.5",children:[(0,a.jsxs)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider",children:["Response ",M&&L&&(0,a.jsxs)("span",{className:"font-normal normal-case",children:["⚡ ",L,"ms"]})]}),M&&(0,a.jsxs)("button",{onClick:()=>H(Z),className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:V?"check":"content_copy"}),V?"Copied":"Copy"]})]}),(0,a.jsx)("pre",{className:"bg-sidebar rounded-lg px-3 py-2.5 text-xs font-mono text-text-main overflow-x-auto whitespace-pre-wrap break-all opacity-70",children:Z})]})]})]})}function L(){let{kind:e,id:t}=(0,r.useParams)(),s=(0,r.useRouter)(),o=m.rj.find(t=>t.id===e),c=(0,m.gC)(t)&&"embedding"===e,u=(0,m.Yg)(t)&&"image"===e,p=c||u,x=async()=>{if(confirm(`Delete this ${u?"Custom Image":"Custom Embedding"} node?`))try{(await fetch(`/api/provider-nodes/${t}`,{method:"DELETE"})).ok&&s.push(`/dashboard/media-providers/${e}`)}catch(e){console.log("Error deleting custom media node:",e)}},[h,b]=(0,n.useState)(null),[f,g]=(0,n.useState)(p),[v,j]=(0,n.useState)(!1),[N,k]=(0,n.useState)(!1);if((0,n.useEffect)(()=>{if(!p)return;let e=!1;return fetch("/api/provider-nodes",{cache:"no-store"}).then(e=>e.json()).then(s=>{e||(b((s.nodes||[]).find(e=>e.id===t)||null),g(!1))}).catch(()=>{e||g(!1)}),()=>{e=!0}},[t,p]),(0,n.useEffect)(()=>{let a=!1;return fetch("/api/auth/me",{cache:"no-store"}).then(e=>e.json()).then(r=>{if(!a){if("sub_user"===r.role&&!(r.allowedProviders||[]).includes(t))return void s.replace(`/dashboard/media-providers/${e}`);k(!0)}}).catch(()=>{a||k(!0)}),()=>{a=!0}},[t,e,s]),!o)return(0,r.notFound)();if(!N)return(0,a.jsx)("div",{className:"text-text-muted text-sm py-12 text-center",children:"Loading..."});let S=m.Q2[t],C=p?h?{id:t,name:h.name||(u?"Custom Image":"Custom Embedding"),color:u?"#EC4899":"#6366F1",textIcon:u?"CI":"CE"}:null:S;if(!p&&!S||p&&!f&&!h)return(0,r.notFound)();if(p&&f)return(0,a.jsx)("div",{className:"text-text-muted text-sm py-12 text-center",children:"Loading..."});let $=p?[e]:C.serviceKinds??["llm"];return p||$.includes(e)?(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)(l(),{href:`/dashboard/media-providers/${e}`,className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),o.label]}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4",children:[(0,a.jsx)("div",{className:"size-12 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${C.color}15`},children:(0,a.jsx)(d.A,{src:`/providers/${C.id}.png`,alt:C.name,size:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",fallbackText:C.textIcon||C.id.slice(0,2).toUpperCase(),fallbackColor:C.color})}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 sm:gap-3",children:[(0,a.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:C.name}),!p&&C.notice?.apiKeyUrl&&(0,a.jsxs)("a",{href:C.notice.apiKeyUrl,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline inline-flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"open_in_new"}),"Get API Key"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mt-1 flex-wrap",children:[p&&(0,a.jsxs)(i.Ex,{variant:"default",size:"sm",children:["Custom \xb7 ",h?.prefix]}),$.map(t=>(0,a.jsx)(i.Ex,{variant:t===e?"primary":"default",size:"sm",children:t.toUpperCase()},t))]})]}),p&&(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsx)(i.$n,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>j(!0),children:"Edit"}),(0,a.jsx)(i.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:x,children:"Delete"})]})]})]}),!p&&C.kindNotice?.[e]&&(0,a.jsxs)("div",{className:"flex items-start gap-3 px-4 py-3 rounded-lg bg-amber-500/10 border border-amber-500/30 text-amber-700 dark:text-amber-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px] mt-0.5",children:"warning"}),(0,a.jsx)("p",{className:"text-sm",children:C.kindNotice[e]})]}),!p&&C.notice?.text&&!C.deprecated&&(0,a.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-blue-500/30 bg-blue-500/10 px-3 py-2 sm:flex-row sm:items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-blue-500 shrink-0",children:"info"}),(0,a.jsx)("p",{className:"min-w-0 flex-1 text-xs leading-relaxed text-blue-600 dark:text-blue-400",children:C.notice.text}),C.notice.apiKeyUrl&&(0,a.jsx)("a",{href:C.notice.apiKeyUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex justify-center rounded bg-blue-500 px-2 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-600 sm:py-0.5",children:"Get API Key →"})]}),!p&&C.noAuth?(0,a.jsx)(i.gw,{providerId:t}):(0,a.jsx)(y,{providerId:t,providerName:C.name,isOAuth:!1}),"tts"!==e&&"webSearch"!==e&&"webFetch"!==e&&(0,a.jsx)(w,{providerId:t,kindFilter:e,providerAliasOverride:p?h?.prefix:void 0,hiddenModelIds:[...P[e]||[]]}),!p&&(C.searchConfig||C.fetchConfig||C.ttsConfig||C.sttConfig||C.embeddingConfig||C.searchViaChat)&&(0,a.jsx)(i.Wx,{config:"webFetch"===e?C.fetchConfig:"tts"===e?C.ttsConfig:"stt"===e?C.sttConfig:"embedding"===e?C.embeddingConfig:C.searchConfig||{mode:"chat-completions",defaultModel:C.searchViaChat?.defaultModel,pricingUrl:C.searchViaChat?.pricingUrl,freeTier:C.searchViaChat?.freeTier},provider:C,title:`${o.label} Config`}),"embedding"===e&&(0,a.jsx)(R,{providerId:t,customAlias:h?.prefix}),"tts"===e&&(0,a.jsx)(M,{providerId:t}),"stt"===e&&!p&&(0,a.jsx)(K,{providerId:t}),(!p&&T[e]||u&&T[e])&&(0,a.jsx)(O,{providerId:t,kind:e,providerAliasOverride:h?.prefix,customNode:u?h:null}),c&&(0,a.jsx)(i.x0,{isOpen:v,node:h,onClose:()=>j(!1),onSaved:e=>{b(e),j(!1)}}),u&&(0,a.jsx)(i.VW,{isOpen:v,node:h,onClose:()=>j(!1),onSaved:e=>{b(e),j(!1)}})]}):(0,r.notFound)()}}},e=>{e.O(0,[2574,3862,1051,1321,5497,8441,3794,7358],()=>e(e.s=37590)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6607],{23879:(e,s,t)=>{"use strict";t.d(s,{default:()=>d});var a=t(95155),i=t(12115),n=t(3534),l=t(28777),o=t(52679),r=t(43666);function d(){let[e,s]=(0,i.useState)([]),[t,d]=(0,i.useState)([]),[c,u]=(0,i.useState)({}),[h,p]=(0,i.useState)(!1),[w,f]=(0,i.useState)(null),[y,g]=(0,i.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1});(0,i.useEffect)(()=>{fetch("/api/auth/me").then(e=>e.json()).then(e=>{"sub_user"===e.role&&(window.location.href="/dashboard/usage")}).catch(()=>{}),x(),v(),m(),b()},[]);let x=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let t=await e.json();s(t.connections||[])}}catch{}},v=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let s=await e.json();d(s.keys||[])}}catch{}},m=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let s=await e.json();u(s.aliases||{})}}catch{}},b=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let s=await e.json();p(s.cloudEnabled||!1)}}catch{}},S=()=>e.filter(e=>!1!==e.isActive),k=Object.entries(n.wn);return(0,a.jsxs)("div",{className:"flex w-full flex-col gap-6",children:[(0,a.jsxs)("div",{className:"flex items-start gap-2 px-3 py-2 rounded-lg bg-yellow-500/10 border border-yellow-500/30",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-yellow-500 mt-0.5 shrink-0",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-red-600 dark:text-yellow-400 leading-relaxed",children:"⚠️ MITM intercepts HTTPS traffic of IDE tools (Antigravity, GitHub Copilot, Kiro) via local CA to redirect requests to your providers. May violate ToS → account ban. Use at your own risk."})]}),(0,a.jsx)(r.tA,{apiKeys:t,cloudEnabled:h,onStatusChange:g}),(0,a.jsx)("div",{className:"grid gap-3 sm:gap-4",children:k.map(([e,s])=>(0,a.jsx)(r.kn,{tool:s,isExpanded:w===e,onToggle:()=>f(w===e?null:e),serverRunning:y.running,dnsActive:y.dnsStatus?.[e]||!1,hasCachedPassword:y.hasCachedPassword||!1,needsSudoPassword:!1!==y.needsSudoPassword,isWin:!0===y.isWin,apiKeys:t,activeProviders:S(),hasActiveProviders:S().some(e=>(0,l.KC)(e.provider).length>0||(0,o.mq)(e.provider)||(0,o.gb)(e.provider)),modelAliases:c,cloudEnabled:h,onDnsChange:e=>g(s=>({...s,dnsStatus:e.dnsStatus??s.dnsStatus}))},e))})]})}},31760:(e,s,t)=>{Promise.resolve().then(t.bind(t,23879))}},e=>{e.O(0,[2574,3862,1051,5772,1321,5497,6069,8441,3794,7358],()=>e(e.s=31760)),_N_E=e.O()}]);
|