@yina-npm/openrouterx 0.4.38 → 0.4.53
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 +89 -396
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +8 -8
- 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 +8 -8
- 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 +6 -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/9489.js +1 -1
- 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/4G6rOhJtfkDwKINMqIIf1/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1321-682ad944ed69404c.js +1 -0
- package/app/.next/static/chunks/4072-fdb34c3bf82582e6.js +6 -0
- package/app/.next/static/chunks/{5095-42d435b0583b2f98.js → 5095-47fe70cd930f3c59.js} +2 -2
- package/app/.next/static/chunks/5497-b59396fb56e7b9b1.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/9b92fc8235e99d1e.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 +6 -2
- package/app/public/i18n/literals/ar.json +200 -173
- package/app/public/i18n/literals/bn.json +200 -173
- package/app/public/i18n/literals/cs.json +200 -173
- package/app/public/i18n/literals/da.json +200 -173
- package/app/public/i18n/literals/de.json +200 -173
- package/app/public/i18n/literals/el.json +200 -173
- package/app/public/i18n/literals/es.json +200 -173
- package/app/public/i18n/literals/fi.json +200 -173
- package/app/public/i18n/literals/fr.json +200 -173
- package/app/public/i18n/literals/he.json +200 -173
- package/app/public/i18n/literals/hi.json +200 -173
- package/app/public/i18n/literals/hu.json +200 -173
- package/app/public/i18n/literals/id.json +200 -173
- package/app/public/i18n/literals/it.json +200 -173
- package/app/public/i18n/literals/ja.json +200 -173
- package/app/public/i18n/literals/ko.json +200 -173
- package/app/public/i18n/literals/nl.json +200 -173
- package/app/public/i18n/literals/no.json +200 -173
- package/app/public/i18n/literals/pl.json +200 -173
- package/app/public/i18n/literals/pt-BR.json +200 -173
- package/app/public/i18n/literals/pt-PT.json +200 -173
- package/app/public/i18n/literals/ro.json +200 -173
- package/app/public/i18n/literals/ru.json +200 -173
- package/app/public/i18n/literals/sv.json +200 -173
- package/app/public/i18n/literals/th.json +200 -173
- package/app/public/i18n/literals/tl.json +200 -173
- package/app/public/i18n/literals/tr.json +200 -173
- package/app/public/i18n/literals/uk.json +200 -173
- package/app/public/i18n/literals/ur.json +200 -173
- package/app/public/i18n/literals/vi.json +200 -173
- package/app/public/i18n/literals/zh-CN.json +381 -359
- package/app/public/i18n/literals/zh-TW.json +208 -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 +2 -2
- 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 → 4G6rOhJtfkDwKINMqIIf1}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,473 +1,166 @@
|
|
|
1
1
|
# openrouterX
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
openrouterX is a local AI provider router and management dashboard for coding
|
|
4
|
+
agents and AI developer tools.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
It exposes OpenAI-compatible, Anthropic-compatible, Gemini-compatible, and
|
|
7
|
+
provider-scoped endpoints, then routes requests to the provider accounts you
|
|
8
|
+
connect in the dashboard. It is designed for local and self-hosted workflows
|
|
9
|
+
where you want one endpoint, many provider accounts, quota visibility, and
|
|
10
|
+
predictable fallback behavior.
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
[npm package](https://www.npmjs.com/package/@yina-npm/openrouterx)
|
|
10
13
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
- 统一本地接口:`http://localhost:20502/v1`
|
|
14
|
-
- 统一管理后台:`http://localhost:20502/dashboard`
|
|
15
|
-
- 同时接入订阅型供应商、API Key 供应商、免费供应商
|
|
16
|
-
- 支持组合模型与自动 fallback
|
|
17
|
-
- 支持 Codex 账号一键激活到本机 Codex,并自动刷新 token、写入 macOS Keychain、重启 Codex App
|
|
18
|
-
- 支持子用户在授权范围内切换 Codex 账号,适合团队共用多账号额度
|
|
19
|
-
- 支持 Antigravity MITM,带上游解析修复,避免依赖固定 IP 导致网络漂移后失效
|
|
20
|
-
- 默认端口前移到 `20502`,安装和启动时会迁移旧的 `20128` MITM router 配置
|
|
21
|
-
- 配额刷新请求做了分散调度,降低多个账号集中请求触发风控的概率
|
|
22
|
-
- 内置 `RTK`,适合 `git diff`、`grep`、日志等重工具调用场景
|
|
23
|
-
- 支持管理员创建子用户,并精细限制子用户可用供应商与 API Key
|
|
24
|
-
|
|
25
|
-
## 新增功能速览
|
|
26
|
-
|
|
27
|
-
### Codex 账号一键激活
|
|
28
|
-
|
|
29
|
-
在配额页面的 Codex 账号卡片上点击 `Activate`,即可把该账号应用到本机 Codex:
|
|
30
|
-
|
|
31
|
-
- 检测本机是否安装 Codex CLI 或 macOS Codex.app
|
|
32
|
-
- 使用账号的 `refresh_token` 刷新最新 `access_token` / `id_token`
|
|
33
|
-
- 写入 `~/.codex/auth.json`
|
|
34
|
-
- 在 macOS 上同步写入 `Codex Auth` Keychain
|
|
35
|
-
- 自动重启 Codex.app,让新账号立即生效
|
|
36
|
-
|
|
37
|
-
如果本机没有安装 Codex,会提示安装方式:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
npm install -g @openai/codex
|
|
41
|
-
# macOS 也可以:
|
|
42
|
-
brew install --cask codex
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 子用户也能切换 Codex 账号
|
|
46
|
-
|
|
47
|
-
子用户在配额页面仍然保持只读,不能编辑、删除或启停供应商连接,但可以对自己被授权看到的 Codex 账号点击 `Activate`。后端会做连接级权限校验,手写未授权的 `connectionId` 会返回 `403`。
|
|
48
|
-
|
|
49
|
-
注意:Codex 激活修改的是当前机器的本地 Codex 登录态,是机器级状态,不是每个子用户隔离一份本地 Codex 状态。
|
|
50
|
-
|
|
51
|
-
### Antigravity MITM 更稳定
|
|
52
|
-
|
|
53
|
-
MITM 不再依赖固定上游 IP 列表。解析上游地址时会跳过本机 alias、回环路由和已失败地址,减少这类错误:
|
|
54
|
-
|
|
55
|
-
```txt
|
|
56
|
-
Passthrough error: connect EADDRNOTAVAIL ...
|
|
57
|
-
Router fetch failed for http://localhost:20128/v1/chat/completions
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
同时默认端口已从 `20128` 迁移到 `20502`,升级安装和启动时会刷新旧配置,避免其他机器升级后继续指向旧端口。
|
|
61
|
-
|
|
62
|
-
## 安装
|
|
63
|
-
|
|
64
|
-
从 npm 全局安装:
|
|
14
|
+
## Install
|
|
65
15
|
|
|
66
16
|
```bash
|
|
67
17
|
npm install -g @yina-npm/openrouterx
|
|
68
18
|
openrouterX
|
|
69
19
|
```
|
|
70
20
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
启动后默认地址:
|
|
74
|
-
|
|
75
|
-
- Dashboard:`http://localhost:20502/dashboard`
|
|
76
|
-
- OpenAI-compatible API:`http://localhost:20502/v1`
|
|
21
|
+
The dashboard starts on:
|
|
77
22
|
|
|
78
|
-
|
|
23
|
+
```text
|
|
24
|
+
http://localhost:20502/dashboard
|
|
25
|
+
```
|
|
79
26
|
|
|
80
|
-
|
|
27
|
+
Useful commands:
|
|
81
28
|
|
|
82
29
|
```bash
|
|
83
|
-
openrouterX
|
|
30
|
+
openrouterX --version
|
|
31
|
+
openrouterX status
|
|
32
|
+
openrouterX restart --skip-update
|
|
33
|
+
openrouterX stop
|
|
84
34
|
```
|
|
85
35
|
|
|
86
|
-
|
|
36
|
+
Runtime data is stored outside the package:
|
|
87
37
|
|
|
88
|
-
```
|
|
89
|
-
|
|
38
|
+
```text
|
|
39
|
+
macOS/Linux: ~/.openrouterx
|
|
40
|
+
Windows: %APPDATA%/openrouterx
|
|
90
41
|
```
|
|
91
42
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- `Super Admin`:完整管理权限
|
|
95
|
-
- `Sub User`:受限使用权限,适合团队成员或子账号
|
|
96
|
-
|
|
97
|
-
### 3. 连接供应商
|
|
43
|
+
## What It Does
|
|
98
44
|
|
|
99
|
-
|
|
45
|
+
- One local endpoint for coding tools such as Claude Code, OpenAI Codex,
|
|
46
|
+
GitHub Copilot, Gemini CLI, OpenCode, Cline, Kilo Code, and compatible tools.
|
|
47
|
+
- Dashboard-based provider and account management.
|
|
48
|
+
- OAuth and API-key providers, including subscription-style provider accounts.
|
|
49
|
+
- Multi-account routing with per-provider fallback and round-robin strategies.
|
|
50
|
+
- Quota and usage views for supported providers.
|
|
51
|
+
- Sub-user accounts with provider/account-level access control.
|
|
52
|
+
- Provider-scoped OpenAI-compatible routes, for example
|
|
53
|
+
`/api/v1/providers/codex/chat/completions`.
|
|
54
|
+
- MITM helpers for supported local tooling workflows.
|
|
55
|
+
- Packaged standalone Next.js runtime for global npm installation.
|
|
100
56
|
|
|
101
|
-
|
|
102
|
-
- API Key 供应商:OpenAI、Anthropic、OpenRouter、GLM、Gemini、DeepSeek、Groq、Mistral、MiniMax、Kimi 等
|
|
103
|
-
- 免费或低成本供应商:Kiro、OpenCode Free、Vertex AI
|
|
57
|
+
## Default Endpoint
|
|
104
58
|
|
|
105
|
-
|
|
59
|
+
Use the local OpenAI-compatible endpoint with your tools:
|
|
106
60
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
### 5. 把工具接到 openrouterX
|
|
110
|
-
|
|
111
|
-
```txt
|
|
112
|
-
Base URL: http://localhost:20502/v1
|
|
113
|
-
API Key: 你的 Dashboard API Key
|
|
114
|
-
Model: 任意可用模型或 combo
|
|
61
|
+
```text
|
|
62
|
+
http://localhost:20502/api/v1
|
|
115
63
|
```
|
|
116
64
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
```txt
|
|
120
|
-
你的工具
|
|
121
|
-
-> Claude Code / Codex / Cursor / OpenCode / OpenClaw / Cline / Continue
|
|
65
|
+
Common examples:
|
|
122
66
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-> Usage 统计
|
|
129
|
-
-> API Key 与子用户隔离
|
|
130
|
-
|
|
131
|
-
上游供应商
|
|
132
|
-
-> 订阅账号
|
|
133
|
-
-> API Key 供应商
|
|
134
|
-
-> 免费供应商
|
|
67
|
+
```text
|
|
68
|
+
http://localhost:20502/api/v1/chat/completions
|
|
69
|
+
http://localhost:20502/api/v1/responses
|
|
70
|
+
http://localhost:20502/api/v1/embeddings
|
|
71
|
+
http://localhost:20502/api/v1/images/generations
|
|
135
72
|
```
|
|
136
73
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
### 统一本地接口
|
|
74
|
+
For tools that expect `/v1`, openrouterX also exposes:
|
|
140
75
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
```txt
|
|
76
|
+
```text
|
|
144
77
|
http://localhost:20502/v1
|
|
145
78
|
```
|
|
146
79
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
Dashboard 可以完成:
|
|
150
|
-
|
|
151
|
-
- 连接供应商
|
|
152
|
-
- 创建 API Key
|
|
153
|
-
- 测试模型
|
|
154
|
-
- 配置 combo
|
|
155
|
-
- 查看 Usage 和请求明细
|
|
156
|
-
- 生成各类 CLI Tools 的手动配置
|
|
157
|
-
|
|
158
|
-
### RTK Token Saver
|
|
159
|
-
|
|
160
|
-
`RTK` 会在请求发送到上游模型前,对冗长的工具输出进行压缩,尤其适合:
|
|
80
|
+
## Model Names
|
|
161
81
|
|
|
162
|
-
-
|
|
163
|
-
|
|
164
|
-
- `ls`
|
|
165
|
-
- 构建日志
|
|
166
|
-
- 长文本工具输出
|
|
82
|
+
Model aliases are managed in the dashboard. Typical provider-prefixed model
|
|
83
|
+
names look like:
|
|
167
84
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
1. cc/claude-opus
|
|
175
|
-
2. glm/glm-5
|
|
176
|
-
3. kr/claude-sonnet-4.5
|
|
85
|
+
```text
|
|
86
|
+
codex/gpt-5.5
|
|
87
|
+
codex/gpt-5.3-codex
|
|
88
|
+
github/gpt-5.3-codex
|
|
89
|
+
claude/claude-opus-4-5
|
|
90
|
+
gemini/gemini-3-pro
|
|
177
91
|
```
|
|
178
92
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
### 子用户权限隔离
|
|
182
|
-
|
|
183
|
-
管理员可以为子用户单独控制:
|
|
184
|
-
|
|
185
|
-
- 可使用哪些供应商
|
|
186
|
-
- 可见哪些 API Key
|
|
187
|
-
- Usage 是否只看自己的数据
|
|
188
|
-
- 是否仅能查看 `CLI Tools` 手动配置,而不能修改本地工具设置
|
|
189
|
-
|
|
190
|
-
这适合团队共用部署、代运营账号、或敏感 API Key 隔离场景。
|
|
191
|
-
|
|
192
|
-
### 团队共享网关
|
|
193
|
-
|
|
194
|
-
`openrouterX` 不只是单人使用工具,也可以作为团队内部统一网关:
|
|
195
|
-
|
|
196
|
-
- 管理员统一管理供应商、API Key、用户、combo
|
|
197
|
-
- 子用户只看到分配给自己的 API Key 和允许使用的供应商
|
|
198
|
-
- 子用户的 Usage 页面只展示自己的调用数据
|
|
199
|
-
- 子用户可以在 `CLI Tools` 页面复制配置,但不会拿到完整管理权限
|
|
200
|
-
- 上游供应商凭证不会暴露给普通成员
|
|
201
|
-
|
|
202
|
-
### Usage 分析
|
|
203
|
-
|
|
204
|
-
Dashboard 支持查看:
|
|
205
|
-
|
|
206
|
-
- 请求数
|
|
207
|
-
- tokens
|
|
208
|
-
- estimated cost
|
|
209
|
-
- 按 API Key 的使用情况
|
|
210
|
-
- 请求明细
|
|
211
|
-
|
|
212
|
-
其中成本展示主要用于统计和对比,`openrouterX` 本身不会向你收费。
|
|
213
|
-
|
|
214
|
-
## 支持的工具
|
|
215
|
-
|
|
216
|
-
`openrouterX` 面向各类 AI 编码工具和 OpenAI-compatible 客户端,包括:
|
|
217
|
-
|
|
218
|
-
- Claude Code
|
|
219
|
-
- Codex CLI
|
|
220
|
-
- Cursor
|
|
221
|
-
- OpenCode
|
|
222
|
-
- OpenClaw
|
|
223
|
-
- Cline
|
|
224
|
-
- Continue
|
|
225
|
-
- Roo
|
|
226
|
-
- 兼容 Copilot 的相关流程
|
|
227
|
-
- 其他支持 OpenAI-compatible 接口的自定义工具
|
|
228
|
-
|
|
229
|
-
## 支持的供应商类型
|
|
230
|
-
|
|
231
|
-
### 订阅型供应商
|
|
232
|
-
|
|
233
|
-
- Claude Code
|
|
234
|
-
- Codex
|
|
235
|
-
- GitHub Copilot
|
|
236
|
-
- Cursor
|
|
237
|
-
|
|
238
|
-
### API Key 供应商
|
|
93
|
+
Auto routes and custom combos can be configured in the dashboard when you want
|
|
94
|
+
fallback across multiple providers.
|
|
239
95
|
|
|
240
|
-
|
|
241
|
-
- Anthropic
|
|
242
|
-
- OpenRouter
|
|
243
|
-
- GLM
|
|
244
|
-
- Gemini
|
|
245
|
-
- DeepSeek
|
|
246
|
-
- Groq
|
|
247
|
-
- Mistral
|
|
248
|
-
- MiniMax
|
|
249
|
-
- Kimi
|
|
250
|
-
- 以及其他兼容供应商
|
|
96
|
+
## API Keys And Users
|
|
251
97
|
|
|
252
|
-
|
|
98
|
+
For local-only use, the dashboard can run with relaxed local defaults. For
|
|
99
|
+
shared or remote deployments, create API keys in the dashboard and assign them
|
|
100
|
+
carefully:
|
|
253
101
|
|
|
254
|
-
-
|
|
255
|
-
-
|
|
256
|
-
-
|
|
102
|
+
- Super admin keys are unassigned keys.
|
|
103
|
+
- Sub-user keys are bound to a specific sub-user.
|
|
104
|
+
- Sub-users can be limited to specific providers and specific provider
|
|
105
|
+
connection IDs.
|
|
257
106
|
|
|
258
|
-
|
|
107
|
+
## Updating
|
|
259
108
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
### 通用 OpenAI-compatible 配置
|
|
265
|
-
|
|
266
|
-
```txt
|
|
267
|
-
Base URL: http://localhost:20502/v1
|
|
268
|
-
API Key: 你的 Dashboard API Key
|
|
269
|
-
Model: 你选择的模型或 combo
|
|
109
|
+
```bash
|
|
110
|
+
npm install -g @yina-npm/openrouterx@latest --prefer-online
|
|
111
|
+
openrouterX restart --skip-update
|
|
270
112
|
```
|
|
271
113
|
|
|
272
|
-
|
|
114
|
+
## Uninstall
|
|
273
115
|
|
|
274
116
|
```bash
|
|
275
|
-
|
|
276
|
-
export OPENAI_API_KEY="your-dashboard-api-key"
|
|
117
|
+
npm uninstall -g @yina-npm/openrouterx
|
|
277
118
|
```
|
|
278
119
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
直接使用 `CLI Tools -> Claude Code` 中生成的手动配置。
|
|
282
|
-
|
|
283
|
-
### OpenClaw
|
|
284
|
-
|
|
285
|
-
直接使用 `CLI Tools -> OpenClaw` 中生成的手动配置。
|
|
286
|
-
|
|
287
|
-
### OpenCode
|
|
288
|
-
|
|
289
|
-
直接使用 `CLI Tools -> OpenCode` 中生成的手动配置。
|
|
290
|
-
|
|
291
|
-
## 管理员与子用户
|
|
292
|
-
|
|
293
|
-
`openrouterX` 内置两种角色:
|
|
294
|
-
|
|
295
|
-
- `super_admin`
|
|
296
|
-
- `sub_user`
|
|
297
|
-
|
|
298
|
-
### `super_admin`
|
|
299
|
-
|
|
300
|
-
可以管理:
|
|
120
|
+
This removes the npm package. Runtime data under `~/.openrouterx` is not removed
|
|
121
|
+
automatically.
|
|
301
122
|
|
|
302
|
-
|
|
303
|
-
- API keys
|
|
304
|
-
- combos
|
|
305
|
-
- users
|
|
306
|
-
- usage analytics
|
|
307
|
-
- 本地工具集成配置
|
|
308
|
-
|
|
309
|
-
### `sub_user`
|
|
310
|
-
|
|
311
|
-
可以被限制为:
|
|
312
|
-
|
|
313
|
-
- 只能使用分配给自己的 API Key
|
|
314
|
-
- 只能访问被允许的供应商
|
|
315
|
-
- 只能查看自己的 Usage 数据
|
|
316
|
-
- 只显示精简版 `CLI Tools`
|
|
317
|
-
- 可以复制手动配置,但不能管理供应商
|
|
318
|
-
- 页面范围聚焦在自己的可见资源内
|
|
319
|
-
|
|
320
|
-
这使得一个部署可以服务多个用户,同时避免把所有供应商和凭证暴露给每个人。
|
|
321
|
-
|
|
322
|
-
## 本地开发
|
|
323
|
-
|
|
324
|
-
从源码运行:
|
|
123
|
+
## Local Development
|
|
325
124
|
|
|
326
125
|
```bash
|
|
327
|
-
cp .env.example .env
|
|
328
126
|
npm install
|
|
329
|
-
|
|
127
|
+
npm run dev
|
|
330
128
|
```
|
|
331
129
|
|
|
332
|
-
|
|
130
|
+
Build:
|
|
333
131
|
|
|
334
132
|
```bash
|
|
335
133
|
npm run build
|
|
336
|
-
PORT=20502 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20502 npm run start
|
|
337
134
|
```
|
|
338
135
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
默认端口是 `20502`。临时切到其他端口时,同时设置 `PORT` 和对外 base URL:
|
|
136
|
+
Create and validate the npm staging package without publishing:
|
|
342
137
|
|
|
343
138
|
```bash
|
|
344
|
-
|
|
139
|
+
npm run release:npm:dry
|
|
345
140
|
```
|
|
346
141
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
```bash
|
|
350
|
-
PORT=20600 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20600 npm run start
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
如果使用全局安装的 `openrouterX`,端口来自 CLI 内置默认值或启动时的 `PORT` 环境变量。修改默认端口后需要重新 npm 全局安装并重启:
|
|
142
|
+
Install a local test build globally:
|
|
354
143
|
|
|
355
144
|
```bash
|
|
356
145
|
npm run release:npm:install-local
|
|
357
|
-
openrouterX restart --no-browser --skip-update
|
|
358
146
|
```
|
|
359
147
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
## 部署
|
|
363
|
-
|
|
364
|
-
### PM2
|
|
148
|
+
## Package
|
|
365
149
|
|
|
366
|
-
|
|
367
|
-
npm install
|
|
368
|
-
npm run build
|
|
369
|
-
pm2 start npm --name openrouterx -- start
|
|
370
|
-
```
|
|
150
|
+
Published package:
|
|
371
151
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
```bash
|
|
375
|
-
docker build -t openrouterx .
|
|
376
|
-
|
|
377
|
-
docker run -d \
|
|
378
|
-
--name openrouterx \
|
|
379
|
-
-p 20502:20502 \
|
|
380
|
-
--env-file ./.env \
|
|
381
|
-
-v openrouterx-data:/app/data \
|
|
382
|
-
openrouterx
|
|
152
|
+
```text
|
|
153
|
+
@yina-npm/openrouterx
|
|
383
154
|
```
|
|
384
155
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
| 变量 | 说明 |
|
|
388
|
-
| --- | --- |
|
|
389
|
-
| `JWT_SECRET` | Dashboard 登录鉴权使用的 JWT secret |
|
|
390
|
-
| `INITIAL_PASSWORD` | 初始登录密码,在没有已保存 hash 时使用 |
|
|
391
|
-
| `DATA_DIR` | 主数据库目录 |
|
|
392
|
-
| `PORT` | 服务端口 |
|
|
393
|
-
| `HOSTNAME` | 监听地址 |
|
|
394
|
-
| `BASE_URL` | 服务端内部使用的 base URL |
|
|
395
|
-
| `CLOUD_URL` | 云端同步使用的 base URL |
|
|
396
|
-
| `NEXT_PUBLIC_BASE_URL` | 前端可见的 base URL |
|
|
397
|
-
| `NEXT_PUBLIC_CLOUD_URL` | 前端可见的云端 URL |
|
|
398
|
-
| `API_KEY_SECRET` | 生成 API Key 时使用的签名 secret |
|
|
399
|
-
| `MACHINE_ID_SALT` | 机器标识计算使用的 salt |
|
|
400
|
-
| `ENABLE_REQUEST_LOGS` | 是否开启请求日志 |
|
|
401
|
-
| `AUTH_COOKIE_SECURE` | 是否强制使用安全 Cookie |
|
|
402
|
-
| `REQUIRE_API_KEY` | 是否要求 `/v1/*` 必须携带 Bearer API Key |
|
|
403
|
-
|
|
404
|
-
## API 示例
|
|
405
|
-
|
|
406
|
-
### Chat Completions
|
|
156
|
+
Global command:
|
|
407
157
|
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
-H "Authorization: Bearer YOUR_API_KEY" \
|
|
411
|
-
-H "Content-Type: application/json" \
|
|
412
|
-
-d '{
|
|
413
|
-
"model": "kr/claude-sonnet-4.5",
|
|
414
|
-
"messages": [
|
|
415
|
-
{ "role": "user", "content": "Write a Node.js hello world server." }
|
|
416
|
-
],
|
|
417
|
-
"stream": false
|
|
418
|
-
}'
|
|
158
|
+
```text
|
|
159
|
+
openrouterX
|
|
419
160
|
```
|
|
420
161
|
|
|
421
|
-
|
|
162
|
+
Default port:
|
|
422
163
|
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
-H "Authorization: Bearer YOUR_API_KEY"
|
|
164
|
+
```text
|
|
165
|
+
20502
|
|
426
166
|
```
|
|
427
|
-
|
|
428
|
-
## 常见问题
|
|
429
|
-
|
|
430
|
-
### Dashboard 打不开
|
|
431
|
-
|
|
432
|
-
- 检查 `20502` 端口是否被占用
|
|
433
|
-
- 启动前显式设置 `PORT=20502`
|
|
434
|
-
|
|
435
|
-
### 登录失败
|
|
436
|
-
|
|
437
|
-
- 初始化环境时检查 `INITIAL_PASSWORD`
|
|
438
|
-
- 如果已经有历史数据,请使用当前保存的管理员密码,不要假设存在默认密码
|
|
439
|
-
|
|
440
|
-
### 工具看不到模型
|
|
441
|
-
|
|
442
|
-
- 确认供应商已连接
|
|
443
|
-
- 确认当前 API Key 属于当前用户
|
|
444
|
-
- 如果是子用户,检查 `Admin -> Users` 中配置的 allowed providers
|
|
445
|
-
|
|
446
|
-
### Usage 没有数据
|
|
447
|
-
|
|
448
|
-
- 确认工具接入的是 `http://localhost:20502/v1`
|
|
449
|
-
- 确认使用的是 Dashboard 中生成的 Bearer API Key
|
|
450
|
-
|
|
451
|
-
### 上游报错或配额不足
|
|
452
|
-
|
|
453
|
-
- 重新连接供应商
|
|
454
|
-
- 切换到其他模型
|
|
455
|
-
- 创建带 fallback 的 combo
|
|
456
|
-
|
|
457
|
-
## 包信息
|
|
458
|
-
|
|
459
|
-
- npm 包:[`@yina-npm/openrouterx`](https://www.npmjs.com/package/@yina-npm/openrouterx)
|
|
460
|
-
- 启动命令:`openrouterX`
|
|
461
|
-
- 代码仓库:[`hackyinge/9router`](https://github.com/hackyinge/9router)
|
|
462
|
-
- 当前分支:[`feat/openrouterx-release`](https://github.com/hackyinge/9router/tree/feat/openrouterx-release)
|
|
463
|
-
- 协议:MIT
|
|
464
|
-
|
|
465
|
-
## 作者
|
|
466
|
-
|
|
467
|
-
如果你喜欢这个项目,欢迎到 GitHub 给 [`hackyinge/9router`](https://github.com/hackyinge/9router) 点个 Star。Star 会直接决定作者继续摸鱼写功能的速度。
|
|
468
|
-
|
|
469
|
-
作者除了写 AI 工具,也在番茄小说写小说。感兴趣可以在番茄小说搜索作者:**首席摸鱼**。
|
|
470
|
-
|
|
471
|
-
## License
|
|
472
|
-
|
|
473
|
-
MIT,见 [LICENSE](LICENSE)。
|
package/app/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4G6rOhJtfkDwKINMqIIf1
|
|
@@ -21,15 +21,13 @@
|
|
|
21
21
|
"/api/cli-tools/cowork-mcp-registry/route": "/api/cli-tools/cowork-mcp-registry",
|
|
22
22
|
"/api/cli-tools/cowork-mcp-tools/route": "/api/cli-tools/cowork-mcp-tools",
|
|
23
23
|
"/api/cli-tools/cowork-settings/route": "/api/cli-tools/cowork-settings",
|
|
24
|
+
"/api/cli-tools/deepseek-tui-settings/route": "/api/cli-tools/deepseek-tui-settings",
|
|
24
25
|
"/api/cli-tools/droid-settings/route": "/api/cli-tools/droid-settings",
|
|
25
26
|
"/api/cli-tools/hermes-settings/route": "/api/cli-tools/hermes-settings",
|
|
27
|
+
"/api/cli-tools/jcode-settings/route": "/api/cli-tools/jcode-settings",
|
|
26
28
|
"/api/cli-tools/kilo-settings/route": "/api/cli-tools/kilo-settings",
|
|
27
29
|
"/api/cli-tools/openclaw-settings/route": "/api/cli-tools/openclaw-settings",
|
|
28
30
|
"/api/cli-tools/opencode-settings/route": "/api/cli-tools/opencode-settings",
|
|
29
|
-
"/api/cloud/auth/route": "/api/cloud/auth",
|
|
30
|
-
"/api/cloud/credentials/update/route": "/api/cloud/credentials/update",
|
|
31
|
-
"/api/cloud/model/resolve/route": "/api/cloud/model/resolve",
|
|
32
|
-
"/api/cloud/models/alias/route": "/api/cloud/models/alias",
|
|
33
31
|
"/api/combos/[id]/route": "/api/combos/[id]",
|
|
34
32
|
"/api/health/route": "/api/health",
|
|
35
33
|
"/api/init/route": "/api/init",
|
|
@@ -38,6 +36,7 @@
|
|
|
38
36
|
"/api/media-providers/tts/deepgram/voices/route": "/api/media-providers/tts/deepgram/voices",
|
|
39
37
|
"/api/media-providers/tts/elevenlabs/voices/route": "/api/media-providers/tts/elevenlabs/voices",
|
|
40
38
|
"/api/media-providers/tts/inworld/voices/route": "/api/media-providers/tts/inworld/voices",
|
|
39
|
+
"/api/media-providers/tts/minimax/voices/route": "/api/media-providers/tts/minimax/voices",
|
|
41
40
|
"/api/media-providers/tts/voices/route": "/api/media-providers/tts/voices",
|
|
42
41
|
"/api/models/availability/route": "/api/models/availability",
|
|
43
42
|
"/api/models/route": "/api/models",
|
|
@@ -56,7 +55,6 @@
|
|
|
56
55
|
"/api/providers/[id]/models/route": "/api/providers/[id]/models",
|
|
57
56
|
"/api/providers/[id]/test-models/route": "/api/providers/[id]/test-models",
|
|
58
57
|
"/api/providers/[id]/test/route": "/api/providers/[id]/test",
|
|
59
|
-
"/api/providers/client/route": "/api/providers/client",
|
|
60
58
|
"/api/providers/kilo/free-models/route": "/api/providers/kilo/free-models",
|
|
61
59
|
"/api/providers/test-batch/route": "/api/providers/test-batch",
|
|
62
60
|
"/api/providers/validate/route": "/api/providers/validate",
|
|
@@ -121,13 +119,14 @@
|
|
|
121
119
|
"/api/oauth/[provider]/[action]/route": "/api/oauth/[provider]/[action]",
|
|
122
120
|
"/api/provider-nodes/route": "/api/provider-nodes",
|
|
123
121
|
"/api/providers/[id]/route": "/api/providers/[id]",
|
|
122
|
+
"/api/providers/client/route": "/api/providers/client",
|
|
124
123
|
"/api/providers/suggested-models/route": "/api/providers/suggested-models",
|
|
125
124
|
"/api/providers/route": "/api/providers",
|
|
126
125
|
"/api/proxy-pools/[id]/route": "/api/proxy-pools/[id]",
|
|
127
126
|
"/api/proxy-pools/[id]/test/route": "/api/proxy-pools/[id]/test",
|
|
128
127
|
"/api/proxy-pools/route": "/api/proxy-pools",
|
|
129
|
-
"/api/settings/database/route": "/api/settings/database",
|
|
130
128
|
"/api/proxy-pools/vercel-deploy/route": "/api/proxy-pools/vercel-deploy",
|
|
129
|
+
"/api/settings/database/route": "/api/settings/database",
|
|
131
130
|
"/api/settings/proxy-test/route": "/api/settings/proxy-test",
|
|
132
131
|
"/api/settings/route": "/api/settings",
|
|
133
132
|
"/api/startup-notices/route": "/api/startup-notices",
|
|
@@ -144,6 +143,7 @@
|
|
|
144
143
|
"/(dashboard)/dashboard/admin/keys/page": "/dashboard/admin/keys",
|
|
145
144
|
"/(dashboard)/dashboard/admin/users/page": "/dashboard/admin/users",
|
|
146
145
|
"/(dashboard)/dashboard/basic-chat/page": "/dashboard/basic-chat",
|
|
146
|
+
"/(dashboard)/dashboard/cli-tools/[toolId]/page": "/dashboard/cli-tools/[toolId]",
|
|
147
147
|
"/(dashboard)/dashboard/cli-tools/page": "/dashboard/cli-tools",
|
|
148
148
|
"/(dashboard)/dashboard/combos/page": "/dashboard/combos",
|
|
149
149
|
"/(dashboard)/dashboard/endpoint/page": "/dashboard/endpoint",
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"/(dashboard)/dashboard/focus-ui/page": "/dashboard/focus-ui",
|
|
164
164
|
"/(dashboard)/dashboard/network-analysis/page": "/dashboard/network-analysis",
|
|
165
165
|
"/(dashboard)/dashboard/profile/page": "/dashboard/profile",
|
|
166
|
+
"/(dashboard)/dashboard/providers/[id]/page": "/dashboard/providers/[id]",
|
|
166
167
|
"/(dashboard)/dashboard/proxy-pools/page": "/dashboard/proxy-pools",
|
|
167
|
-
"/(dashboard)/dashboard/providers/page": "/dashboard/providers"
|
|
168
|
-
"/(dashboard)/dashboard/providers/[id]/page": "/dashboard/providers/[id]"
|
|
168
|
+
"/(dashboard)/dashboard/providers/page": "/dashboard/providers"
|
|
169
169
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/4G6rOhJtfkDwKINMqIIf1/_buildManifest.js",
|
|
8
|
+
"static/4G6rOhJtfkDwKINMqIIf1/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
11
|
"static/chunks/webpack-b9b0d264958323b9.js",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"transform": "lodash/{{member}}"
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
-
"outputFileTracingRoot": "/Users/bytedance/Documents/Projects/9router
|
|
107
|
+
"outputFileTracingRoot": "/Users/bytedance/Documents/Projects/9router",
|
|
108
108
|
"cacheComponents": false,
|
|
109
109
|
"cacheLife": {
|
|
110
110
|
"default": {
|
|
@@ -304,10 +304,23 @@
|
|
|
304
304
|
"bundlePagesRouterDependencies": false,
|
|
305
305
|
"configFileName": "next.config.mjs",
|
|
306
306
|
"serverExternalPackages": [
|
|
307
|
-
"better-sqlite3"
|
|
307
|
+
"better-sqlite3",
|
|
308
|
+
"sql.js",
|
|
309
|
+
"node:sqlite",
|
|
310
|
+
"bun:sqlite"
|
|
308
311
|
],
|
|
309
312
|
"turbopack": {
|
|
310
|
-
"root": "/Users/bytedance/Documents/Projects/9router
|
|
313
|
+
"root": "/Users/bytedance/Documents/Projects/9router"
|
|
314
|
+
},
|
|
315
|
+
"outputFileTracingExcludes": {
|
|
316
|
+
"*": [
|
|
317
|
+
"./gitbook/**/*"
|
|
318
|
+
]
|
|
319
|
+
},
|
|
320
|
+
"outputFileTracingIncludes": {
|
|
321
|
+
"*": [
|
|
322
|
+
"./node_modules/sql.js/dist/sql-wasm.wasm"
|
|
323
|
+
]
|
|
311
324
|
},
|
|
312
325
|
"distDirRoot": ".next",
|
|
313
326
|
"_originalRewrites": {
|